{"version":3,"file":"dynamic-vendor-kwOOJl8u.js","sources":["../../__vite-browser-external","../../node_modules/.pnpm/nexus3.bilibili.co+tslib@1.14.1/node_modules/tslib/tslib.es6.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/utils/base64.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/utils/strings.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/utils/arrays.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/utils/async.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/utils/unicode.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/utils/numbers.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/utils/errors.js","../../node_modules/.pnpm/nexus3.bilibili.co+pako@1.0.11/node_modules/pako/lib/utils/common.js","../../node_modules/.pnpm/nexus3.bilibili.co+pako@1.0.11/node_modules/pako/lib/zlib/trees.js","../../node_modules/.pnpm/nexus3.bilibili.co+pako@1.0.11/node_modules/pako/lib/zlib/adler32.js","../../node_modules/.pnpm/nexus3.bilibili.co+pako@1.0.11/node_modules/pako/lib/zlib/crc32.js","../../node_modules/.pnpm/nexus3.bilibili.co+pako@1.0.11/node_modules/pako/lib/zlib/messages.js","../../node_modules/.pnpm/nexus3.bilibili.co+pako@1.0.11/node_modules/pako/lib/zlib/deflate.js","../../node_modules/.pnpm/nexus3.bilibili.co+pako@1.0.11/node_modules/pako/lib/utils/strings.js","../../node_modules/.pnpm/nexus3.bilibili.co+pako@1.0.11/node_modules/pako/lib/zlib/zstream.js","../../node_modules/.pnpm/nexus3.bilibili.co+pako@1.0.11/node_modules/pako/lib/deflate.js","../../node_modules/.pnpm/nexus3.bilibili.co+pako@1.0.11/node_modules/pako/lib/zlib/inffast.js","../../node_modules/.pnpm/nexus3.bilibili.co+pako@1.0.11/node_modules/pako/lib/zlib/inftrees.js","../../node_modules/.pnpm/nexus3.bilibili.co+pako@1.0.11/node_modules/pako/lib/zlib/inflate.js","../../node_modules/.pnpm/nexus3.bilibili.co+pako@1.0.11/node_modules/pako/lib/zlib/constants.js","../../node_modules/.pnpm/nexus3.bilibili.co+pako@1.0.11/node_modules/pako/lib/zlib/gzheader.js","../../node_modules/.pnpm/nexus3.bilibili.co+pako@1.0.11/node_modules/pako/lib/inflate.js","../../node_modules/.pnpm/nexus3.bilibili.co+pako@1.0.11/node_modules/pako/index.js","../../node_modules/.pnpm/nexus3.bilibili.co+@pdf-lib+standard-fonts@1.0.0/node_modules/@pdf-lib/standard-fonts/es/utils.js","../../node_modules/.pnpm/nexus3.bilibili.co+@pdf-lib+standard-fonts@1.0.0/node_modules/@pdf-lib/standard-fonts/es/Font.js","../../node_modules/.pnpm/nexus3.bilibili.co+@pdf-lib+standard-fonts@1.0.0/node_modules/@pdf-lib/standard-fonts/es/Encoding.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/utils/objects.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/utils/validators.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/utils/pdfDocEncoding.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/utils/Cache.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/errors.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/syntax/CharCodes.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/document/PDFHeader.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/objects/PDFObject.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/objects/PDFNumber.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/objects/PDFArray.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/objects/PDFBool.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/syntax/Delimiters.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/syntax/Whitespace.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/syntax/Irregular.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/objects/PDFName.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/objects/PDFNull.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/objects/PDFDict.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/objects/PDFStream.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/objects/PDFRawStream.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/objects/PDFRef.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/operators/PDFOperator.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/operators/PDFOperatorNames.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/structures/PDFFlateStream.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/structures/PDFContentStream.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/utils/rng.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/PDFContext.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/structures/PDFPageLeaf.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/PDFObjectCopier.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/document/PDFCrossRefSection.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/document/PDFTrailer.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/document/PDFTrailerDict.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/structures/PDFObjectStream.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/writers/PDFWriter.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/objects/PDFInvalidObject.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/structures/PDFCrossRefStream.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/writers/PDFStreamWriter.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/objects/PDFHexString.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/embedders/StandardFontEmbedder.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/embedders/CMap.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/embedders/FontFlags.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/objects/PDFString.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/embedders/CustomFontEmbedder.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/embedders/CustomFontSubsetEmbedder.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/embedders/FileEmbedder.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/embedders/JpegEmbedder.js","../../node_modules/.pnpm/nexus3.bilibili.co+@pdf-lib+upng@1.0.1/node_modules/@pdf-lib/upng/UPNG.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/utils/png.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/embedders/PngEmbedder.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/streams/Stream.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/streams/DecodeStream.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/streams/Ascii85Stream.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/streams/AsciiHexStream.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/streams/FlateStream.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/streams/LZWStream.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/streams/RunLengthStream.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/streams/decode.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/embedders/PDFPageEmbedder.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/interactive/ViewerPreferences.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/acroform/PDFAcroField.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/annotation/BorderStyle.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/annotation/PDFAnnotation.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/annotation/AppearanceCharacteristics.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/annotation/PDFWidgetAnnotation.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/acroform/PDFAcroTerminal.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/acroform/PDFAcroButton.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/acroform/PDFAcroCheckBox.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/acroform/flags.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/acroform/PDFAcroChoice.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/acroform/PDFAcroComboBox.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/acroform/PDFAcroNonTerminal.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/acroform/PDFAcroSignature.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/acroform/PDFAcroText.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/acroform/PDFAcroPushButton.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/acroform/PDFAcroRadioButton.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/acroform/PDFAcroListBox.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/acroform/utils.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/acroform/PDFAcroForm.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/structures/PDFCatalog.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/structures/PDFPageTree.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/syntax/Numeric.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/parser/BaseParser.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/parser/ByteStream.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/syntax/Keywords.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/parser/PDFObjectParser.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/parser/PDFObjectStreamParser.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/parser/PDFXRefStreamParser.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/parser/PDFParser.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/annotation/flags.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/api/objects.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/api/rotations.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/api/operators.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/api/colors.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/api/svgPath.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/api/operations.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/api/errors.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/api/text/alignment.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/api/text/layout.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/api/form/appearances.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/api/PDFEmbeddedPage.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/api/PDFFont.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/api/PDFImage.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/api/image/alignment.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/api/form/PDFField.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/api/form/PDFCheckBox.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/api/form/PDFDropdown.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/api/form/PDFOptionList.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/api/form/PDFRadioGroup.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/api/form/PDFSignature.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/api/form/PDFTextField.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/api/StandardFonts.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/api/form/PDFForm.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/api/sizes.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/api/PDFDocumentOptions.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/api/PDFEmbeddedFile.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/api/PDFJavaScript.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/core/embedders/JavaScriptEmbedder.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/api/PDFDocument.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/api/PDFPageOptions.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/api/PDFPage.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdf-lib@1.17.1/node_modules/pdf-lib/es/api/form/PDFButton.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdfjs-dist@2.5.207/node_modules/pdfjs-dist/es5/build/pdf.worker.js","../../node_modules/.pnpm/nexus3.bilibili.co+pdfjs-dist@2.5.207/node_modules/pdfjs-dist/es5/build/pdf.js","../../node_modules/.pnpm/nexus3.bilibili.co+global@4.4.0/node_modules/global/window.js","../../node_modules/.pnpm/nexus3.bilibili.co+global@4.4.0/node_modules/global/document.js","../../node_modules/.pnpm/nexus3.bilibili.co+@babel+runtime@7.26.0/node_modules/@babel/runtime/helpers/extends.js","../../node_modules/.pnpm/nexus3.bilibili.co+is-function@1.0.2/node_modules/is-function/index.js","../../node_modules/.pnpm/nexus3.bilibili.co+@videojs+xhr@2.7.0/node_modules/@videojs/xhr/lib/interceptors.js","../../node_modules/.pnpm/nexus3.bilibili.co+@videojs+xhr@2.7.0/node_modules/@videojs/xhr/lib/retry.js","../../node_modules/.pnpm/nexus3.bilibili.co+@videojs+xhr@2.7.0/node_modules/@videojs/xhr/lib/http-handler.js","../../node_modules/.pnpm/nexus3.bilibili.co+@videojs+xhr@2.7.0/node_modules/@videojs/xhr/lib/index.js","../../node_modules/.pnpm/nexus3.bilibili.co+videojs-vtt.js@0.15.5/node_modules/videojs-vtt.js/lib/vtt.js","../../node_modules/.pnpm/nexus3.bilibili.co+videojs-vtt.js@0.15.5/node_modules/videojs-vtt.js/lib/vttcue.js","../../node_modules/.pnpm/nexus3.bilibili.co+videojs-vtt.js@0.15.5/node_modules/videojs-vtt.js/lib/vttregion.js","../../node_modules/.pnpm/nexus3.bilibili.co+videojs-vtt.js@0.15.5/node_modules/videojs-vtt.js/lib/browser-index.js","../../node_modules/.pnpm/nexus3.bilibili.co+@babel+runtime@7.26.0/node_modules/@babel/runtime/helpers/esm/extends.js","../../node_modules/.pnpm/nexus3.bilibili.co+@videojs+vhs-utils@4.1.1/node_modules/@videojs/vhs-utils/es/resolve-url.js","../../node_modules/.pnpm/nexus3.bilibili.co+@videojs+vhs-utils@4.1.1/node_modules/@videojs/vhs-utils/es/stream.js","../../node_modules/.pnpm/nexus3.bilibili.co+@videojs+vhs-utils@4.1.1/node_modules/@videojs/vhs-utils/es/decode-b64-to-uint8-array.js","../../node_modules/.pnpm/nexus3.bilibili.co+m3u8-parser@7.2.0/node_modules/m3u8-parser/dist/m3u8-parser.es.js","../../node_modules/.pnpm/nexus3.bilibili.co+@videojs+vhs-utils@4.1.1/node_modules/@videojs/vhs-utils/es/codecs.js","../../node_modules/.pnpm/nexus3.bilibili.co+@videojs+vhs-utils@4.1.1/node_modules/@videojs/vhs-utils/es/media-types.js","../../node_modules/.pnpm/nexus3.bilibili.co+@videojs+vhs-utils@4.1.1/node_modules/@videojs/vhs-utils/es/byte-helpers.js","../../node_modules/.pnpm/nexus3.bilibili.co+@videojs+vhs-utils@4.1.1/node_modules/@videojs/vhs-utils/es/media-groups.js","../../node_modules/.pnpm/nexus3.bilibili.co+@xmldom+xmldom@0.8.10/node_modules/@xmldom/xmldom/lib/conventions.js","../../node_modules/.pnpm/nexus3.bilibili.co+@xmldom+xmldom@0.8.10/node_modules/@xmldom/xmldom/lib/dom.js","../../node_modules/.pnpm/nexus3.bilibili.co+@xmldom+xmldom@0.8.10/node_modules/@xmldom/xmldom/lib/entities.js","../../node_modules/.pnpm/nexus3.bilibili.co+@xmldom+xmldom@0.8.10/node_modules/@xmldom/xmldom/lib/sax.js","../../node_modules/.pnpm/nexus3.bilibili.co+@xmldom+xmldom@0.8.10/node_modules/@xmldom/xmldom/lib/dom-parser.js","../../node_modules/.pnpm/nexus3.bilibili.co+@xmldom+xmldom@0.8.10/node_modules/@xmldom/xmldom/lib/index.js","../../node_modules/.pnpm/nexus3.bilibili.co+mpd-parser@1.3.1/node_modules/mpd-parser/dist/mpd-parser.es.js","../../node_modules/.pnpm/nexus3.bilibili.co+mux.js@7.1.0/node_modules/mux.js/lib/utils/numbers.js","../../node_modules/.pnpm/nexus3.bilibili.co+mux.js@7.1.0/node_modules/mux.js/lib/tools/parse-sidx.js","../../node_modules/.pnpm/nexus3.bilibili.co+@videojs+vhs-utils@4.1.1/node_modules/@videojs/vhs-utils/es/id3-helpers.js","../../node_modules/.pnpm/nexus3.bilibili.co+@videojs+vhs-utils@4.1.1/node_modules/@videojs/vhs-utils/es/mp4-helpers.js","../../node_modules/.pnpm/nexus3.bilibili.co+@videojs+vhs-utils@4.1.1/node_modules/@videojs/vhs-utils/es/ebml-helpers.js","../../node_modules/.pnpm/nexus3.bilibili.co+@videojs+vhs-utils@4.1.1/node_modules/@videojs/vhs-utils/es/nal-helpers.js","../../node_modules/.pnpm/nexus3.bilibili.co+@videojs+vhs-utils@4.1.1/node_modules/@videojs/vhs-utils/es/containers.js","../../node_modules/.pnpm/nexus3.bilibili.co+mux.js@7.1.0/node_modules/mux.js/lib/utils/clock.js","../../node_modules/.pnpm/nexus3.bilibili.co+video.js@8.19.1/node_modules/video.js/dist/video.es.js"],"sourcesContent":["export default {}","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/*\n * The `chars`, `lookup`, `encode`, and `decode` members of this file are\n * licensed under the following:\n *\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n *\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nexport var encodeToBase64 = function (bytes) {\n var base64 = '';\n var len = bytes.length;\n for (var i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nexport var decodeFromBase64 = function (base64) {\n var bufferLength = base64.length * 0.75;\n var len = base64.length;\n var i;\n var p = 0;\n var encoded1;\n var encoded2;\n var encoded3;\n var encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var bytes = new Uint8Array(bufferLength);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return bytes;\n};\n// This regex is designed to be as flexible as possible. It will parse certain\n// invalid data URIs.\nvar DATA_URI_PREFIX_REGEX = /^(data)?:?([\\w\\/\\+]+)?;?(charset=[\\w-]+|base64)?.*,/i;\n/**\n * If the `dataUri` input is a data URI, then the data URI prefix must not be\n * longer than 100 characters, or this function will fail to decode it.\n *\n * @param dataUri a base64 data URI or plain base64 string\n * @returns a Uint8Array containing the decoded input\n */\nexport var decodeFromBase64DataUri = function (dataUri) {\n var trimmedUri = dataUri.trim();\n var prefix = trimmedUri.substring(0, 100);\n var res = prefix.match(DATA_URI_PREFIX_REGEX);\n // Assume it's not a data URI - just a plain base64 string\n if (!res)\n return decodeFromBase64(trimmedUri);\n // Remove the data URI prefix and parse the remainder as a base64 string\n var fullMatch = res[0];\n var data = trimmedUri.substring(fullMatch.length);\n return decodeFromBase64(data);\n};\n//# sourceMappingURL=base64.js.map","export var toCharCode = function (character) { return character.charCodeAt(0); };\nexport var toCodePoint = function (character) { return character.codePointAt(0); };\nexport var toHexStringOfMinLength = function (num, minLength) {\n return padStart(num.toString(16), minLength, '0').toUpperCase();\n};\nexport var toHexString = function (num) { return toHexStringOfMinLength(num, 2); };\nexport var charFromCode = function (code) { return String.fromCharCode(code); };\nexport var charFromHexCode = function (hex) { return charFromCode(parseInt(hex, 16)); };\nexport var padStart = function (value, length, padChar) {\n var padding = '';\n for (var idx = 0, len = length - value.length; idx < len; idx++) {\n padding += padChar;\n }\n return padding + value;\n};\nexport var copyStringIntoBuffer = function (str, buffer, offset) {\n var length = str.length;\n for (var idx = 0; idx < length; idx++) {\n buffer[offset++] = str.charCodeAt(idx);\n }\n return length;\n};\nexport var addRandomSuffix = function (prefix, suffixLength) {\n if (suffixLength === void 0) { suffixLength = 4; }\n return prefix + \"-\" + Math.floor(Math.random() * Math.pow(10, suffixLength));\n};\nexport var escapeRegExp = function (str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n};\nexport var cleanText = function (text) {\n return text.replace(/\\t|\\u0085|\\u2028|\\u2029/g, ' ').replace(/[\\b\\v]/g, '');\n};\nexport var escapedNewlineChars = ['\\\\n', '\\\\f', '\\\\r', '\\\\u000B'];\nexport var newlineChars = ['\\n', '\\f', '\\r', '\\u000B'];\nexport var isNewlineChar = function (text) { return /^[\\n\\f\\r\\u000B]$/.test(text); };\nexport var lineSplit = function (text) { return text.split(/[\\n\\f\\r\\u000B]/); };\nexport var mergeLines = function (text) {\n return text.replace(/[\\n\\f\\r\\u000B]/g, ' ');\n};\n// JavaScript's String.charAt() method doesn work on strings containing UTF-16\n// characters (with high and low surrogate pairs), such as 💩 (poo emoji). This\n// `charAtIndex()` function does.\n//\n// Credit: https://github.com/mathiasbynens/String.prototype.at/blob/master/at.js#L14-L48\nexport var charAtIndex = function (text, index) {\n // Get the first code unit and code unit value\n var cuFirst = text.charCodeAt(index);\n var cuSecond;\n var nextIndex = index + 1;\n var length = 1;\n if (\n // Check if it's the start of a surrogate pair.\n cuFirst >= 0xd800 &&\n cuFirst <= 0xdbff && // high surrogate\n text.length > nextIndex // there is a next code unit\n ) {\n cuSecond = text.charCodeAt(nextIndex);\n if (cuSecond >= 0xdc00 && cuSecond <= 0xdfff)\n length = 2; // low surrogate\n }\n return [text.slice(index, index + length), length];\n};\nexport var charSplit = function (text) {\n var chars = [];\n for (var idx = 0, len = text.length; idx < len;) {\n var _a = charAtIndex(text, idx), c = _a[0], cLen = _a[1];\n chars.push(c);\n idx += cLen;\n }\n return chars;\n};\nvar buildWordBreakRegex = function (wordBreaks) {\n var newlineCharUnion = escapedNewlineChars.join('|');\n var escapedRules = ['$'];\n for (var idx = 0, len = wordBreaks.length; idx < len; idx++) {\n var wordBreak = wordBreaks[idx];\n if (isNewlineChar(wordBreak)) {\n throw new TypeError(\"`wordBreak` must not include \" + newlineCharUnion);\n }\n escapedRules.push(wordBreak === '' ? '.' : escapeRegExp(wordBreak));\n }\n var breakRules = escapedRules.join('|');\n return new RegExp(\"(\" + newlineCharUnion + \")|((.*?)(\" + breakRules + \"))\", 'gm');\n};\nexport var breakTextIntoLines = function (text, wordBreaks, maxWidth, computeWidthOfText) {\n var regex = buildWordBreakRegex(wordBreaks);\n var words = cleanText(text).match(regex);\n var currLine = '';\n var currWidth = 0;\n var lines = [];\n var pushCurrLine = function () {\n if (currLine !== '')\n lines.push(currLine);\n currLine = '';\n currWidth = 0;\n };\n for (var idx = 0, len = words.length; idx < len; idx++) {\n var word = words[idx];\n if (isNewlineChar(word)) {\n pushCurrLine();\n }\n else {\n var width = computeWidthOfText(word);\n if (currWidth + width > maxWidth)\n pushCurrLine();\n currLine += word;\n currWidth += width;\n }\n }\n pushCurrLine();\n return lines;\n};\n// See section \"7.9.4 Dates\" of the PDF specification\nvar dateRegex = /^D:(\\d\\d\\d\\d)(\\d\\d)?(\\d\\d)?(\\d\\d)?(\\d\\d)?(\\d\\d)?([+\\-Z])?(\\d\\d)?'?(\\d\\d)?'?$/;\nexport var parseDate = function (dateStr) {\n var match = dateStr.match(dateRegex);\n if (!match)\n return undefined;\n var year = match[1], _a = match[2], month = _a === void 0 ? '01' : _a, _b = match[3], day = _b === void 0 ? '01' : _b, _c = match[4], hours = _c === void 0 ? '00' : _c, _d = match[5], mins = _d === void 0 ? '00' : _d, _e = match[6], secs = _e === void 0 ? '00' : _e, _f = match[7], offsetSign = _f === void 0 ? 'Z' : _f, _g = match[8], offsetHours = _g === void 0 ? '00' : _g, _h = match[9], offsetMins = _h === void 0 ? '00' : _h;\n // http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.15\n var tzOffset = offsetSign === 'Z' ? 'Z' : \"\" + offsetSign + offsetHours + \":\" + offsetMins;\n var date = new Date(year + \"-\" + month + \"-\" + day + \"T\" + hours + \":\" + mins + \":\" + secs + tzOffset);\n return date;\n};\nexport var findLastMatch = function (value, regex) {\n var _a;\n var position = 0;\n var lastMatch;\n while (position < value.length) {\n var match = value.substring(position).match(regex);\n if (!match)\n return { match: lastMatch, pos: position };\n lastMatch = match;\n position += ((_a = match.index) !== null && _a !== void 0 ? _a : 0) + match[0].length;\n }\n return { match: lastMatch, pos: position };\n};\n//# sourceMappingURL=strings.js.map","import { decodeFromBase64DataUri } from \"./base64\";\nimport { charFromCode } from \"./strings\";\nexport var last = function (array) { return array[array.length - 1]; };\n// export const dropLast = (array: T[]): T[] =>\n// array.slice(0, array.length - 1);\nexport var typedArrayFor = function (value) {\n if (value instanceof Uint8Array)\n return value;\n var length = value.length;\n var typedArray = new Uint8Array(length);\n for (var idx = 0; idx < length; idx++) {\n typedArray[idx] = value.charCodeAt(idx);\n }\n return typedArray;\n};\nexport var mergeIntoTypedArray = function () {\n var arrays = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n arrays[_i] = arguments[_i];\n }\n var arrayCount = arrays.length;\n var typedArrays = [];\n for (var idx = 0; idx < arrayCount; idx++) {\n var element = arrays[idx];\n typedArrays[idx] =\n element instanceof Uint8Array ? element : typedArrayFor(element);\n }\n var totalSize = 0;\n for (var idx = 0; idx < arrayCount; idx++) {\n totalSize += arrays[idx].length;\n }\n var merged = new Uint8Array(totalSize);\n var offset = 0;\n for (var arrIdx = 0; arrIdx < arrayCount; arrIdx++) {\n var arr = typedArrays[arrIdx];\n for (var byteIdx = 0, arrLen = arr.length; byteIdx < arrLen; byteIdx++) {\n merged[offset++] = arr[byteIdx];\n }\n }\n return merged;\n};\nexport var mergeUint8Arrays = function (arrays) {\n var totalSize = 0;\n for (var idx = 0, len = arrays.length; idx < len; idx++) {\n totalSize += arrays[idx].length;\n }\n var mergedBuffer = new Uint8Array(totalSize);\n var offset = 0;\n for (var idx = 0, len = arrays.length; idx < len; idx++) {\n var array = arrays[idx];\n mergedBuffer.set(array, offset);\n offset += array.length;\n }\n return mergedBuffer;\n};\nexport var arrayAsString = function (array) {\n var str = '';\n for (var idx = 0, len = array.length; idx < len; idx++) {\n str += charFromCode(array[idx]);\n }\n return str;\n};\nexport var byAscendingId = function (a, b) { return a.id - b.id; };\nexport var sortedUniq = function (array, indexer) {\n var uniq = [];\n for (var idx = 0, len = array.length; idx < len; idx++) {\n var curr = array[idx];\n var prev = array[idx - 1];\n if (idx === 0 || indexer(curr) !== indexer(prev)) {\n uniq.push(curr);\n }\n }\n return uniq;\n};\n// Arrays and TypedArrays in JS both have .reverse() methods, which would seem\n// to negate the need for this function. However, not all runtimes support this\n// method (e.g. React Native). This function compensates for that fact.\nexport var reverseArray = function (array) {\n var arrayLen = array.length;\n for (var idx = 0, len = Math.floor(arrayLen / 2); idx < len; idx++) {\n var leftIdx = idx;\n var rightIdx = arrayLen - idx - 1;\n var temp = array[idx];\n array[leftIdx] = array[rightIdx];\n array[rightIdx] = temp;\n }\n return array;\n};\nexport var sum = function (array) {\n var total = 0;\n for (var idx = 0, len = array.length; idx < len; idx++) {\n total += array[idx];\n }\n return total;\n};\nexport var range = function (start, end) {\n var arr = new Array(end - start);\n for (var idx = 0, len = arr.length; idx < len; idx++) {\n arr[idx] = start + idx;\n }\n return arr;\n};\nexport var pluckIndices = function (arr, indices) {\n var plucked = new Array(indices.length);\n for (var idx = 0, len = indices.length; idx < len; idx++) {\n plucked[idx] = arr[indices[idx]];\n }\n return plucked;\n};\nexport var canBeConvertedToUint8Array = function (input) {\n return input instanceof Uint8Array ||\n input instanceof ArrayBuffer ||\n typeof input === 'string';\n};\nexport var toUint8Array = function (input) {\n if (typeof input === 'string') {\n return decodeFromBase64DataUri(input);\n }\n else if (input instanceof ArrayBuffer) {\n return new Uint8Array(input);\n }\n else if (input instanceof Uint8Array) {\n return input;\n }\n else {\n throw new TypeError('`input` must be one of `string | ArrayBuffer | Uint8Array`');\n }\n};\n//# sourceMappingURL=arrays.js.map","/**\n * Returns a Promise that resolves after at least one tick of the\n * Macro Task Queue occurs.\n */\nexport var waitForTick = function () {\n return new Promise(function (resolve) {\n setTimeout(function () { return resolve(); }, 0);\n });\n};\n//# sourceMappingURL=async.js.map","import { toHexString } from \"./strings\";\n/**\n * Encodes a string to UTF-8.\n *\n * @param input The string to be encoded.\n * @param byteOrderMark Whether or not a byte order marker (BOM) should be added\n * to the start of the encoding. (default `true`)\n * @returns A Uint8Array containing the UTF-8 encoding of the input string.\n *\n * -----------------------------------------------------------------------------\n *\n * JavaScript strings are composed of Unicode code points. Code points are\n * integers in the range 0 to 1,114,111 (0x10FFFF). When serializing a string,\n * it must be encoded as a sequence of words. A word is typically 8, 16, or 32\n * bytes in size. As such, Unicode defines three encoding forms: UTF-8, UTF-16,\n * and UTF-32. These encoding forms are described in the Unicode standard [1].\n * This function implements the UTF-8 encoding form.\n *\n * -----------------------------------------------------------------------------\n *\n * In UTF-8, each code point is mapped to a sequence of 1, 2, 3, or 4 bytes.\n * Note that the logic which defines this mapping is slightly convoluted, and\n * not as straightforward as the mapping logic for UTF-16 or UTF-32. The UTF-8\n * mapping logic is as follows [2]:\n *\n * • If a code point is in the range U+0000..U+007F, then view it as a 7-bit\n * integer: 0bxxxxxxx. Map the code point to 1 byte with the first high order\n * bit set to 0:\n *\n * b1=0b0xxxxxxx\n *\n * • If a code point is in the range U+0080..U+07FF, then view it as an 11-bit\n * integer: 0byyyyyxxxxxx. Map the code point to 2 bytes with the first 5 bits\n * of the code point stored in the first byte, and the last 6 bits stored in\n * the second byte:\n *\n * b1=0b110yyyyy b2=0b10xxxxxx\n *\n * • If a code point is in the range U+0800..U+FFFF, then view it as a 16-bit\n * integer, 0bzzzzyyyyyyxxxxxx. Map the code point to 3 bytes with the first\n * 4 bits stored in the first byte, the next 6 bits stored in the second byte,\n * and the last 6 bits in the third byte:\n *\n * b1=0b1110zzzz b2=0b10yyyyyy b3=0b10xxxxxx\n *\n * • If a code point is in the range U+10000...U+10FFFF, then view it as a\n * 21-bit integer, 0bvvvzzzzzzyyyyyyxxxxxx. Map the code point to 4 bytes with\n * the first 3 bits stored in the first byte, the next 6 bits stored in the\n * second byte, the next 6 bits stored in the third byte, and the last 6 bits\n * stored in the fourth byte:\n *\n * b1=0b11110xxx b2=0b10zzzzzz b3=0b10yyyyyy b4=0b10xxxxxx\n *\n * -----------------------------------------------------------------------------\n *\n * It is important to note, when iterating through the code points of a string\n * in JavaScript, that if a character is encoded as a surrogate pair it will\n * increase the string's length by 2 instead of 1 [4]. For example:\n *\n * ```\n * > 'a'.length\n * 1\n * > '💩'.length\n * 2\n * > '語'.length\n * 1\n * > 'a💩語'.length\n * 4\n * ```\n *\n * The results of the above example are explained by the fact that the\n * characters 'a' and '語' are not represented by surrogate pairs, but '💩' is.\n *\n * Because of this idiosyncrasy in JavaScript's string implementation and APIs,\n * we must \"jump\" an extra index after encoding a character as a surrogate\n * pair. In practice, this means we must increment the index of our for loop by\n * 2 if we encode a surrogate pair, and 1 in all other cases.\n *\n * -----------------------------------------------------------------------------\n *\n * References:\n * - [1] https://www.unicode.org/versions/Unicode12.0.0/UnicodeStandard-12.0.pdf\n * 3.9 Unicode Encoding Forms - UTF-8\n * - [2] http://www.herongyang.com/Unicode/UTF-8-UTF-8-Encoding.html\n * - [3] http://www.herongyang.com/Unicode/UTF-8-UTF-8-Encoding-Algorithm.html\n * - [4] https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/length#Description\n *\n */\nexport var utf8Encode = function (input, byteOrderMark) {\n if (byteOrderMark === void 0) { byteOrderMark = true; }\n var encoded = [];\n if (byteOrderMark)\n encoded.push(0xef, 0xbb, 0xbf);\n for (var idx = 0, len = input.length; idx < len;) {\n var codePoint = input.codePointAt(idx);\n // One byte encoding\n if (codePoint < 0x80) {\n var byte1 = codePoint & 0x7f;\n encoded.push(byte1);\n idx += 1;\n }\n // Two byte encoding\n else if (codePoint < 0x0800) {\n var byte1 = ((codePoint >> 6) & 0x1f) | 0xc0;\n var byte2 = (codePoint & 0x3f) | 0x80;\n encoded.push(byte1, byte2);\n idx += 1;\n }\n // Three byte encoding\n else if (codePoint < 0x010000) {\n var byte1 = ((codePoint >> 12) & 0x0f) | 0xe0;\n var byte2 = ((codePoint >> 6) & 0x3f) | 0x80;\n var byte3 = (codePoint & 0x3f) | 0x80;\n encoded.push(byte1, byte2, byte3);\n idx += 1;\n }\n // Four byte encoding (surrogate pair)\n else if (codePoint < 0x110000) {\n var byte1 = ((codePoint >> 18) & 0x07) | 0xf0;\n var byte2 = ((codePoint >> 12) & 0x3f) | 0x80;\n var byte3 = ((codePoint >> 6) & 0x3f) | 0x80;\n var byte4 = ((codePoint >> 0) & 0x3f) | 0x80;\n encoded.push(byte1, byte2, byte3, byte4);\n idx += 2;\n }\n // Should never reach this case\n else\n throw new Error(\"Invalid code point: 0x\" + toHexString(codePoint));\n }\n return new Uint8Array(encoded);\n};\n/**\n * Encodes a string to UTF-16.\n *\n * @param input The string to be encoded.\n * @param byteOrderMark Whether or not a byte order marker (BOM) should be added\n * to the start of the encoding. (default `true`)\n * @returns A Uint16Array containing the UTF-16 encoding of the input string.\n *\n * -----------------------------------------------------------------------------\n *\n * JavaScript strings are composed of Unicode code points. Code points are\n * integers in the range 0 to 1,114,111 (0x10FFFF). When serializing a string,\n * it must be encoded as a sequence of words. A word is typically 8, 16, or 32\n * bytes in size. As such, Unicode defines three encoding forms: UTF-8, UTF-16,\n * and UTF-32. These encoding forms are described in the Unicode standard [1].\n * This function implements the UTF-16 encoding form.\n *\n * -----------------------------------------------------------------------------\n *\n * In UTF-16, each code point is mapped to one or two 16-bit integers. The\n * UTF-16 mapping logic is as follows [2]:\n *\n * • If a code point is in the range U+0000..U+FFFF, then map the code point to\n * a 16-bit integer with the most significant byte first.\n *\n * • If a code point is in the range U+10000..U+10000, then map the code point\n * to two 16-bit integers. The first integer should contain the high surrogate\n * and the second integer should contain the low surrogate. Both surrogates\n * should be written with the most significant byte first.\n *\n * -----------------------------------------------------------------------------\n *\n * It is important to note, when iterating through the code points of a string\n * in JavaScript, that if a character is encoded as a surrogate pair it will\n * increase the string's length by 2 instead of 1 [4]. For example:\n *\n * ```\n * > 'a'.length\n * 1\n * > '💩'.length\n * 2\n * > '語'.length\n * 1\n * > 'a💩語'.length\n * 4\n * ```\n *\n * The results of the above example are explained by the fact that the\n * characters 'a' and '語' are not represented by surrogate pairs, but '💩' is.\n *\n * Because of this idiosyncrasy in JavaScript's string implementation and APIs,\n * we must \"jump\" an extra index after encoding a character as a surrogate\n * pair. In practice, this means we must increment the index of our for loop by\n * 2 if we encode a surrogate pair, and 1 in all other cases.\n *\n * -----------------------------------------------------------------------------\n *\n * References:\n * - [1] https://www.unicode.org/versions/Unicode12.0.0/UnicodeStandard-12.0.pdf\n * 3.9 Unicode Encoding Forms - UTF-8\n * - [2] http://www.herongyang.com/Unicode/UTF-16-UTF-16-Encoding.html\n * - [3] https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/length#Description\n *\n */\nexport var utf16Encode = function (input, byteOrderMark) {\n if (byteOrderMark === void 0) { byteOrderMark = true; }\n var encoded = [];\n if (byteOrderMark)\n encoded.push(0xfeff);\n for (var idx = 0, len = input.length; idx < len;) {\n var codePoint = input.codePointAt(idx);\n // Two byte encoding\n if (codePoint < 0x010000) {\n encoded.push(codePoint);\n idx += 1;\n }\n // Four byte encoding (surrogate pair)\n else if (codePoint < 0x110000) {\n encoded.push(highSurrogate(codePoint), lowSurrogate(codePoint));\n idx += 2;\n }\n // Should never reach this case\n else\n throw new Error(\"Invalid code point: 0x\" + toHexString(codePoint));\n }\n return new Uint16Array(encoded);\n};\n/**\n * Returns `true` if the `codePoint` is within the\n * Basic Multilingual Plane (BMP). Code points inside the BMP are not encoded\n * with surrogate pairs.\n * @param codePoint The code point to be evaluated.\n *\n * Reference: https://en.wikipedia.org/wiki/UTF-16#Description\n */\nexport var isWithinBMP = function (codePoint) {\n return codePoint >= 0 && codePoint <= 0xffff;\n};\n/**\n * Returns `true` if the given `codePoint` is valid and must be represented\n * with a surrogate pair when encoded.\n * @param codePoint The code point to be evaluated.\n *\n * Reference: https://en.wikipedia.org/wiki/UTF-16#Description\n */\nexport var hasSurrogates = function (codePoint) {\n return codePoint >= 0x010000 && codePoint <= 0x10ffff;\n};\n// From Unicode 3.0 spec, section 3.7:\n// http://unicode.org/versions/Unicode3.0.0/ch03.pdf\nexport var highSurrogate = function (codePoint) {\n return Math.floor((codePoint - 0x10000) / 0x400) + 0xd800;\n};\n// From Unicode 3.0 spec, section 3.7:\n// http://unicode.org/versions/Unicode3.0.0/ch03.pdf\nexport var lowSurrogate = function (codePoint) {\n return ((codePoint - 0x10000) % 0x400) + 0xdc00;\n};\nvar ByteOrder;\n(function (ByteOrder) {\n ByteOrder[\"BigEndian\"] = \"BigEndian\";\n ByteOrder[\"LittleEndian\"] = \"LittleEndian\";\n})(ByteOrder || (ByteOrder = {}));\nvar REPLACEMENT = '�'.codePointAt(0);\n/**\n * Decodes a Uint8Array of data to a string using UTF-16.\n *\n * Note that this function attempts to recover from erronous input by\n * inserting the replacement character (�) to mark invalid code points\n * and surrogate pairs.\n *\n * @param input A Uint8Array containing UTF-16 encoded data\n * @param byteOrderMark Whether or not a byte order marker (BOM) should be read\n * at the start of the encoding. (default `true`)\n * @returns The decoded string.\n */\nexport var utf16Decode = function (input, byteOrderMark) {\n if (byteOrderMark === void 0) { byteOrderMark = true; }\n // Need at least 2 bytes of data in UTF-16 encodings\n if (input.length <= 1)\n return String.fromCodePoint(REPLACEMENT);\n var byteOrder = byteOrderMark ? readBOM(input) : ByteOrder.BigEndian;\n // Skip byte order mark if needed\n var idx = byteOrderMark ? 2 : 0;\n var codePoints = [];\n while (input.length - idx >= 2) {\n var first = decodeValues(input[idx++], input[idx++], byteOrder);\n if (isHighSurrogate(first)) {\n if (input.length - idx < 2) {\n // Need at least 2 bytes left for the low surrogate that is required\n codePoints.push(REPLACEMENT);\n }\n else {\n var second = decodeValues(input[idx++], input[idx++], byteOrder);\n if (isLowSurrogate(second)) {\n codePoints.push(first, second);\n }\n else {\n // Low surrogates should always follow high surrogates\n codePoints.push(REPLACEMENT);\n }\n }\n }\n else if (isLowSurrogate(first)) {\n // High surrogates should always come first since `decodeValues()`\n // accounts for the byte ordering\n idx += 2;\n codePoints.push(REPLACEMENT);\n }\n else {\n codePoints.push(first);\n }\n }\n // There shouldn't be extra byte(s) left over\n if (idx < input.length)\n codePoints.push(REPLACEMENT);\n return String.fromCodePoint.apply(String, codePoints);\n};\n/**\n * Returns `true` if the given `codePoint` is a high surrogate.\n * @param codePoint The code point to be evaluated.\n *\n * Reference: https://en.wikipedia.org/wiki/UTF-16#Description\n */\nvar isHighSurrogate = function (codePoint) {\n return codePoint >= 0xd800 && codePoint <= 0xdbff;\n};\n/**\n * Returns `true` if the given `codePoint` is a low surrogate.\n * @param codePoint The code point to be evaluated.\n *\n * Reference: https://en.wikipedia.org/wiki/UTF-16#Description\n */\nvar isLowSurrogate = function (codePoint) {\n return codePoint >= 0xdc00 && codePoint <= 0xdfff;\n};\n/**\n * Decodes the given utf-16 values first and second using the specified\n * byte order.\n * @param first The first byte of the encoding.\n * @param second The second byte of the encoding.\n * @param byteOrder The byte order of the encoding.\n * Reference: https://en.wikipedia.org/wiki/UTF-16#Examples\n */\nvar decodeValues = function (first, second, byteOrder) {\n // Append the binary representation of the preceding byte by shifting the\n // first one 8 to the left and than applying a bitwise or-operator to append\n // the second one.\n if (byteOrder === ByteOrder.LittleEndian)\n return (second << 8) | first;\n if (byteOrder === ByteOrder.BigEndian)\n return (first << 8) | second;\n throw new Error(\"Invalid byteOrder: \" + byteOrder);\n};\n/**\n * Returns whether the given array contains a byte order mark for the\n * UTF-16BE or UTF-16LE encoding. If it has neither, BigEndian is assumed.\n *\n * Reference: https://en.wikipedia.org/wiki/Byte_order_mark#UTF-16\n *\n * @param bytes The byte array to be evaluated.\n */\n// prettier-ignore\nvar readBOM = function (bytes) { return (hasUtf16BigEndianBOM(bytes) ? ByteOrder.BigEndian\n : hasUtf16LittleEndianBOM(bytes) ? ByteOrder.LittleEndian\n : ByteOrder.BigEndian); };\nvar hasUtf16BigEndianBOM = function (bytes) {\n return bytes[0] === 0xfe && bytes[1] === 0xff;\n};\nvar hasUtf16LittleEndianBOM = function (bytes) {\n return bytes[0] === 0xff && bytes[1] === 0xfe;\n};\nexport var hasUtf16BOM = function (bytes) {\n return hasUtf16BigEndianBOM(bytes) || hasUtf16LittleEndianBOM(bytes);\n};\n//# sourceMappingURL=unicode.js.map","// tslint:disable radix\n/**\n * Converts a number to its string representation in decimal. This function\n * differs from simply converting a number to a string with `.toString()`\n * because this function's output string will **not** contain exponential\n * notation.\n *\n * Credit: https://stackoverflow.com/a/46545519\n */\nexport var numberToString = function (num) {\n var numStr = String(num);\n if (Math.abs(num) < 1.0) {\n var e = parseInt(num.toString().split('e-')[1]);\n if (e) {\n var negative = num < 0;\n if (negative)\n num *= -1;\n num *= Math.pow(10, e - 1);\n numStr = '0.' + new Array(e).join('0') + num.toString().substring(2);\n if (negative)\n numStr = '-' + numStr;\n }\n }\n else {\n var e = parseInt(num.toString().split('+')[1]);\n if (e > 20) {\n e -= 20;\n num /= Math.pow(10, e);\n numStr = num.toString() + new Array(e + 1).join('0');\n }\n }\n return numStr;\n};\nexport var sizeInBytes = function (n) { return Math.ceil(n.toString(2).length / 8); };\n/**\n * Converts a number into its constituent bytes and returns them as\n * a number[].\n *\n * Returns most significant byte as first element in array. It may be necessary\n * to call .reverse() to get the bits in the desired order.\n *\n * Example:\n * bytesFor(0x02A41E) => [ 0b10, 0b10100100, 0b11110 ]\n *\n * Credit for algorithm: https://stackoverflow.com/a/1936865\n */\nexport var bytesFor = function (n) {\n var bytes = new Uint8Array(sizeInBytes(n));\n for (var i = 1; i <= bytes.length; i++) {\n bytes[i - 1] = n >> ((bytes.length - i) * 8);\n }\n return bytes;\n};\n//# sourceMappingURL=numbers.js.map","export var error = function (msg) {\n throw new Error(msg);\n};\n//# sourceMappingURL=errors.js.map","'use strict';\n\n\nvar TYPED_OK = (typeof Uint8Array !== 'undefined') &&\n (typeof Uint16Array !== 'undefined') &&\n (typeof Int32Array !== 'undefined');\n\nfunction _has(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nexports.assign = function (obj /*from1, from2, from3, ...*/) {\n var sources = Array.prototype.slice.call(arguments, 1);\n while (sources.length) {\n var source = sources.shift();\n if (!source) { continue; }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be non-object');\n }\n\n for (var p in source) {\n if (_has(source, p)) {\n obj[p] = source[p];\n }\n }\n }\n\n return obj;\n};\n\n\n// reduce buffer size, avoiding mem copy\nexports.shrinkBuf = function (buf, size) {\n if (buf.length === size) { return buf; }\n if (buf.subarray) { return buf.subarray(0, size); }\n buf.length = size;\n return buf;\n};\n\n\nvar fnTyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n if (src.subarray && dest.subarray) {\n dest.set(src.subarray(src_offs, src_offs + len), dest_offs);\n return;\n }\n // Fallback to ordinary array\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n var i, l, len, pos, chunk, result;\n\n // calculate data length\n len = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n len += chunks[i].length;\n }\n\n // join chunks\n result = new Uint8Array(len);\n pos = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n chunk = chunks[i];\n result.set(chunk, pos);\n pos += chunk.length;\n }\n\n return result;\n }\n};\n\nvar fnUntyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n return [].concat.apply([], chunks);\n }\n};\n\n\n// Enable/Disable typed arrays use, for testing\n//\nexports.setTyped = function (on) {\n if (on) {\n exports.Buf8 = Uint8Array;\n exports.Buf16 = Uint16Array;\n exports.Buf32 = Int32Array;\n exports.assign(exports, fnTyped);\n } else {\n exports.Buf8 = Array;\n exports.Buf16 = Array;\n exports.Buf32 = Array;\n exports.assign(exports, fnUntyped);\n }\n};\n\nexports.setTyped(TYPED_OK);\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n/* eslint-disable space-unary-ops */\n\nvar utils = require('../utils/common');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n//var Z_FILTERED = 1;\n//var Z_HUFFMAN_ONLY = 2;\n//var Z_RLE = 3;\nvar Z_FIXED = 4;\n//var Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nvar Z_BINARY = 0;\nvar Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\nvar Z_UNKNOWN = 2;\n\n/*============================================================================*/\n\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nvar STORED_BLOCK = 0;\nvar STATIC_TREES = 1;\nvar DYN_TREES = 2;\n/* The three kinds of block type */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\n\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nvar D_CODES = 30;\n/* number of distance codes */\n\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\n\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\n\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar Buf_size = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nvar MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nvar END_BLOCK = 256;\n/* end of block literal code */\n\nvar REP_3_6 = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nvar REPZ_3_10 = 17;\n/* repeat a zero length 3-10 times (3 bits of repeat count) */\n\nvar REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nvar extra_lbits = /* extra bits for each length code */\n [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];\n\nvar extra_dbits = /* extra bits for each distance code */\n [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];\n\nvar extra_blbits = /* extra bits for each bit length code */\n [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];\n\nvar bl_order =\n [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nvar DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nvar static_ltree = new Array((L_CODES + 2) * 2);\nzero(static_ltree);\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nvar static_dtree = new Array(D_CODES * 2);\nzero(static_dtree);\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nvar _dist_code = new Array(DIST_CODE_LEN);\nzero(_dist_code);\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nvar _length_code = new Array(MAX_MATCH - MIN_MATCH + 1);\nzero(_length_code);\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nvar base_length = new Array(LENGTH_CODES);\nzero(base_length);\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nvar base_dist = new Array(D_CODES);\nzero(base_dist);\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n this.static_tree = static_tree; /* static tree or NULL */\n this.extra_bits = extra_bits; /* extra bits for each code or NULL */\n this.extra_base = extra_base; /* base index for extra_bits */\n this.elems = elems; /* max number of elements in the tree */\n this.max_length = max_length; /* max bit length for the codes */\n\n // show if `static_tree` has data or dummy - needed for monomorphic objects\n this.has_stree = static_tree && static_tree.length;\n}\n\n\nvar static_l_desc;\nvar static_d_desc;\nvar static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n this.dyn_tree = dyn_tree; /* the dynamic tree */\n this.max_code = 0; /* largest code with non zero frequency */\n this.stat_desc = stat_desc; /* the corresponding static tree */\n}\n\n\n\nfunction d_code(dist) {\n return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n}\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nfunction put_short(s, w) {\n// put_byte(s, (uch)((w) & 0xff));\n// put_byte(s, (uch)((ush)(w) >> 8));\n s.pending_buf[s.pending++] = (w) & 0xff;\n s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n}\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nfunction send_bits(s, value, length) {\n if (s.bi_valid > (Buf_size - length)) {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n put_short(s, s.bi_buf);\n s.bi_buf = value >> (Buf_size - s.bi_valid);\n s.bi_valid += length - Buf_size;\n } else {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n s.bi_valid += length;\n }\n}\n\n\nfunction send_code(s, c, tree) {\n send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n}\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nfunction bi_reverse(code, len) {\n var res = 0;\n do {\n res |= code & 1;\n code >>>= 1;\n res <<= 1;\n } while (--len > 0);\n return res >>> 1;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nfunction bi_flush(s) {\n if (s.bi_valid === 16) {\n put_short(s, s.bi_buf);\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n } else if (s.bi_valid >= 8) {\n s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n s.bi_buf >>= 8;\n s.bi_valid -= 8;\n }\n}\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n * above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n * array bl_count contains the frequencies for each bit length.\n * The length opt_len is updated; static_len is also updated if stree is\n * not null.\n */\nfunction gen_bitlen(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var max_code = desc.max_code;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var extra = desc.stat_desc.extra_bits;\n var base = desc.stat_desc.extra_base;\n var max_length = desc.stat_desc.max_length;\n var h; /* heap index */\n var n, m; /* iterate over the tree elements */\n var bits; /* bit length */\n var xbits; /* extra bits */\n var f; /* frequency */\n var overflow = 0; /* number of elements with bit length too large */\n\n for (bits = 0; bits <= MAX_BITS; bits++) {\n s.bl_count[bits] = 0;\n }\n\n /* In a first pass, compute the optimal bit lengths (which may\n * overflow in the case of the bit length tree).\n */\n tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n n = s.heap[h];\n bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n if (bits > max_length) {\n bits = max_length;\n overflow++;\n }\n tree[n * 2 + 1]/*.Len*/ = bits;\n /* We overwrite tree[n].Dad which is no longer needed */\n\n if (n > max_code) { continue; } /* not a leaf node */\n\n s.bl_count[bits]++;\n xbits = 0;\n if (n >= base) {\n xbits = extra[n - base];\n }\n f = tree[n * 2]/*.Freq*/;\n s.opt_len += f * (bits + xbits);\n if (has_stree) {\n s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n }\n }\n if (overflow === 0) { return; }\n\n // Trace((stderr,\"\\nbit length overflow\\n\"));\n /* This happens for example on obj2 and pic of the Calgary corpus */\n\n /* Find the first bit length which could increase: */\n do {\n bits = max_length - 1;\n while (s.bl_count[bits] === 0) { bits--; }\n s.bl_count[bits]--; /* move one leaf down the tree */\n s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n s.bl_count[max_length]--;\n /* The brother of the overflow item also moves one step up,\n * but this does not affect bl_count[max_length]\n */\n overflow -= 2;\n } while (overflow > 0);\n\n /* Now recompute all bit lengths, scanning in increasing frequency.\n * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n * lengths instead of fixing only the wrong ones. This idea is taken\n * from 'ar' written by Haruhiko Okumura.)\n */\n for (bits = max_length; bits !== 0; bits--) {\n n = s.bl_count[bits];\n while (n !== 0) {\n m = s.heap[--h];\n if (m > max_code) { continue; }\n if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n tree[m * 2 + 1]/*.Len*/ = bits;\n }\n n--;\n }\n }\n}\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n * zero code length.\n */\nfunction gen_codes(tree, max_code, bl_count)\n// ct_data *tree; /* the tree to decorate */\n// int max_code; /* largest code with non zero frequency */\n// ushf *bl_count; /* number of codes at each bit length */\n{\n var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */\n var code = 0; /* running code value */\n var bits; /* bit index */\n var n; /* code index */\n\n /* The distribution counts are first used to generate the code values\n * without bit reversal.\n */\n for (bits = 1; bits <= MAX_BITS; bits++) {\n next_code[bits] = code = (code + bl_count[bits - 1]) << 1;\n }\n /* Check that the bit counts in bl_count are consistent. The last code\n * must be all ones.\n */\n //Assert (code + bl_count[MAX_BITS]-1 == (1< length code (0..28) */\n length = 0;\n for (code = 0; code < LENGTH_CODES - 1; code++) {\n base_length[code] = length;\n for (n = 0; n < (1 << extra_lbits[code]); n++) {\n _length_code[length++] = code;\n }\n }\n //Assert (length == 256, \"tr_static_init: length != 256\");\n /* Note that the length 255 (match length 258) can be represented\n * in two different ways: code 284 + 5 bits or code 285, so we\n * overwrite length_code[255] to use the best encoding:\n */\n _length_code[length - 1] = code;\n\n /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n dist = 0;\n for (code = 0; code < 16; code++) {\n base_dist[code] = dist;\n for (n = 0; n < (1 << extra_dbits[code]); n++) {\n _dist_code[dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: dist != 256\");\n dist >>= 7; /* from now on, all distances are divided by 128 */\n for (; code < D_CODES; code++) {\n base_dist[code] = dist << 7;\n for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n _dist_code[256 + dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n /* Construct the codes of the static literal tree */\n for (bits = 0; bits <= MAX_BITS; bits++) {\n bl_count[bits] = 0;\n }\n\n n = 0;\n while (n <= 143) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n while (n <= 255) {\n static_ltree[n * 2 + 1]/*.Len*/ = 9;\n n++;\n bl_count[9]++;\n }\n while (n <= 279) {\n static_ltree[n * 2 + 1]/*.Len*/ = 7;\n n++;\n bl_count[7]++;\n }\n while (n <= 287) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n /* Codes 286 and 287 do not exist, but we must include them in the\n * tree construction to get a canonical Huffman tree (longest code\n * all ones)\n */\n gen_codes(static_ltree, L_CODES + 1, bl_count);\n\n /* The static distance tree is trivial: */\n for (n = 0; n < D_CODES; n++) {\n static_dtree[n * 2 + 1]/*.Len*/ = 5;\n static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n }\n\n // Now data ready and we can init static trees\n static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS);\n static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS);\n\n //static_init_done = true;\n}\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nfunction init_block(s) {\n var n; /* iterates over tree elements */\n\n /* Initialize the trees. */\n for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n s.opt_len = s.static_len = 0;\n s.last_lit = s.matches = 0;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nfunction bi_windup(s)\n{\n if (s.bi_valid > 8) {\n put_short(s, s.bi_buf);\n } else if (s.bi_valid > 0) {\n //put_byte(s, (Byte)s->bi_buf);\n s.pending_buf[s.pending++] = s.bi_buf;\n }\n s.bi_buf = 0;\n s.bi_valid = 0;\n}\n\n/* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\nfunction copy_block(s, buf, len, header)\n//DeflateState *s;\n//charf *buf; /* the input data */\n//unsigned len; /* its length */\n//int header; /* true if block header must be written */\n{\n bi_windup(s); /* align on byte boundary */\n\n if (header) {\n put_short(s, len);\n put_short(s, ~len);\n }\n// while (len--) {\n// put_byte(s, *buf++);\n// }\n utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);\n s.pending += len;\n}\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nfunction smaller(tree, n, m, depth) {\n var _n2 = n * 2;\n var _m2 = m * 2;\n return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n}\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nfunction pqdownheap(s, tree, k)\n// deflate_state *s;\n// ct_data *tree; /* the tree to restore */\n// int k; /* node to move down */\n{\n var v = s.heap[k];\n var j = k << 1; /* left son of k */\n while (j <= s.heap_len) {\n /* Set j to the smallest of the two sons: */\n if (j < s.heap_len &&\n smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n j++;\n }\n /* Exit if v is smaller than both sons */\n if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n /* Exchange v with the smallest son */\n s.heap[k] = s.heap[j];\n k = j;\n\n /* And continue down the tree, setting j to the left son of k */\n j <<= 1;\n }\n s.heap[k] = v;\n}\n\n\n// inlined manually\n// var SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nfunction compress_block(s, ltree, dtree)\n// deflate_state *s;\n// const ct_data *ltree; /* literal tree */\n// const ct_data *dtree; /* distance tree */\n{\n var dist; /* distance of matched string */\n var lc; /* match length or unmatched char (if dist == 0) */\n var lx = 0; /* running index in l_buf */\n var code; /* the code to send */\n var extra; /* number of extra bits to send */\n\n if (s.last_lit !== 0) {\n do {\n dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);\n lc = s.pending_buf[s.l_buf + lx];\n lx++;\n\n if (dist === 0) {\n send_code(s, lc, ltree); /* send a literal byte */\n //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n } else {\n /* Here, lc is the match length - MIN_MATCH */\n code = _length_code[lc];\n send_code(s, code + LITERALS + 1, ltree); /* send the length code */\n extra = extra_lbits[code];\n if (extra !== 0) {\n lc -= base_length[code];\n send_bits(s, lc, extra); /* send the extra length bits */\n }\n dist--; /* dist is now the match distance - 1 */\n code = d_code(dist);\n //Assert (code < D_CODES, \"bad d_code\");\n\n send_code(s, code, dtree); /* send the distance code */\n extra = extra_dbits[code];\n if (extra !== 0) {\n dist -= base_dist[code];\n send_bits(s, dist, extra); /* send the extra distance bits */\n }\n } /* literal or match pair ? */\n\n /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n // \"pendingBuf overflow\");\n\n } while (lx < s.last_lit);\n }\n\n send_code(s, END_BLOCK, ltree);\n}\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n * and corresponding code. The length opt_len is updated; static_len is\n * also updated if stree is not null. The field max_code is set.\n */\nfunction build_tree(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var elems = desc.stat_desc.elems;\n var n, m; /* iterate over heap elements */\n var max_code = -1; /* largest code with non zero frequency */\n var node; /* new node being created */\n\n /* Construct the initial heap, with least frequent element in\n * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n * heap[0] is not used.\n */\n s.heap_len = 0;\n s.heap_max = HEAP_SIZE;\n\n for (n = 0; n < elems; n++) {\n if (tree[n * 2]/*.Freq*/ !== 0) {\n s.heap[++s.heap_len] = max_code = n;\n s.depth[n] = 0;\n\n } else {\n tree[n * 2 + 1]/*.Len*/ = 0;\n }\n }\n\n /* The pkzip format requires that at least one distance code exists,\n * and that at least one bit should be sent even if there is only one\n * possible code. So to avoid special checks later on we force at least\n * two codes of non zero frequency.\n */\n while (s.heap_len < 2) {\n node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n tree[node * 2]/*.Freq*/ = 1;\n s.depth[node] = 0;\n s.opt_len--;\n\n if (has_stree) {\n s.static_len -= stree[node * 2 + 1]/*.Len*/;\n }\n /* node is 0 or 1 so it does not have extra bits */\n }\n desc.max_code = max_code;\n\n /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n * establish sub-heaps of increasing lengths:\n */\n for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n /* Construct the Huffman tree by repeatedly combining the least two\n * frequent nodes.\n */\n node = elems; /* next internal node of the tree */\n do {\n //pqremove(s, tree, n); /* n = node of least frequency */\n /*** pqremove ***/\n n = s.heap[1/*SMALLEST*/];\n s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n pqdownheap(s, tree, 1/*SMALLEST*/);\n /***/\n\n m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n s.heap[--s.heap_max] = m;\n\n /* Create a new node father of n and m */\n tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n /* and insert the new node in the heap */\n s.heap[1/*SMALLEST*/] = node++;\n pqdownheap(s, tree, 1/*SMALLEST*/);\n\n } while (s.heap_len >= 2);\n\n s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n /* At this point, the fields freq and dad are set. We can now\n * generate the bit lengths.\n */\n gen_bitlen(s, desc);\n\n /* The field len is now set, we can generate the bit codes */\n gen_codes(tree, max_code, s.bl_count);\n}\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nfunction scan_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n } else if (curlen !== 0) {\n\n if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n } else if (count <= 10) {\n s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n } else {\n s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n }\n\n count = 0;\n prevlen = curlen;\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nfunction send_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n /* tree[max_code+1].Len = -1; */ /* guard already set */\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n send_code(s, curlen, s.bl_tree);\n count--;\n }\n //Assert(count >= 3 && count <= 6, \" 3_6?\");\n send_code(s, REP_3_6, s.bl_tree);\n send_bits(s, count - 3, 2);\n\n } else if (count <= 10) {\n send_code(s, REPZ_3_10, s.bl_tree);\n send_bits(s, count - 3, 3);\n\n } else {\n send_code(s, REPZ_11_138, s.bl_tree);\n send_bits(s, count - 11, 7);\n }\n\n count = 0;\n prevlen = curlen;\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nfunction build_bl_tree(s) {\n var max_blindex; /* index of last bit length code of non zero freq */\n\n /* Determine the bit length frequencies for literal and distance trees */\n scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n /* Build the bit length tree: */\n build_tree(s, s.bl_desc);\n /* opt_len now includes the length of the tree representations, except\n * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n */\n\n /* Determine the number of bit length codes to send. The pkzip format\n * requires that at least 4 bit length codes be sent. (appnote.txt says\n * 3 but the actual value used is 4.)\n */\n for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n break;\n }\n }\n /* Update opt_len to include the bit length tree and counts */\n s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n // s->opt_len, s->static_len));\n\n return max_blindex;\n}\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nfunction send_all_trees(s, lcodes, dcodes, blcodes)\n// deflate_state *s;\n// int lcodes, dcodes, blcodes; /* number of codes for each tree */\n{\n var rank; /* index in bl_order */\n\n //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n // \"too many codes\");\n //Tracev((stderr, \"\\nbl counts: \"));\n send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n send_bits(s, dcodes - 1, 5);\n send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */\n for (rank = 0; rank < blcodes; rank++) {\n //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n }\n //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n}\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n * a) There are no non-portable control characters belonging to the\n * \"black list\" (0..6, 14..25, 28..31).\n * b) There is at least one printable character belonging to the\n * \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n * \"gray list\" that is ignored in this detection algorithm:\n * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nfunction detect_data_type(s) {\n /* black_mask is the bit mask of black-listed bytes\n * set bits 0..6, 14..25, and 28..31\n * 0xf3ffc07f = binary 11110011111111111100000001111111\n */\n var black_mask = 0xf3ffc07f;\n var n;\n\n /* Check for non-textual (\"black-listed\") bytes. */\n for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n return Z_BINARY;\n }\n }\n\n /* Check for textual (\"white-listed\") bytes. */\n if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n for (n = 32; n < LITERALS; n++) {\n if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n }\n\n /* There are no \"black-listed\" or \"white-listed\" bytes:\n * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n */\n return Z_BINARY;\n}\n\n\nvar static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nfunction _tr_init(s)\n{\n\n if (!static_init_done) {\n tr_static_init();\n static_init_done = true;\n }\n\n s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);\n s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);\n s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n /* Initialize the first block of the first file: */\n init_block(s);\n}\n\n\n/* ===========================================================================\n * Send a stored block\n */\nfunction _tr_stored_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */\n copy_block(s, buf, stored_len, true); /* with header */\n}\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nfunction _tr_align(s) {\n send_bits(s, STATIC_TREES << 1, 3);\n send_code(s, END_BLOCK, static_ltree);\n bi_flush(s);\n}\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and output the encoded block to the zip file.\n */\nfunction _tr_flush_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block, or NULL if too old */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n var opt_lenb, static_lenb; /* opt_len and static_len in bytes */\n var max_blindex = 0; /* index of last bit length code of non zero freq */\n\n /* Build the Huffman trees unless a stored block is forced */\n if (s.level > 0) {\n\n /* Check if the file is binary or text */\n if (s.strm.data_type === Z_UNKNOWN) {\n s.strm.data_type = detect_data_type(s);\n }\n\n /* Construct the literal and distance trees */\n build_tree(s, s.l_desc);\n // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n\n build_tree(s, s.d_desc);\n // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n /* At this point, opt_len and static_len are the total bit lengths of\n * the compressed block data, excluding the tree representations.\n */\n\n /* Build the bit length tree for the above two trees, and get the index\n * in bl_order of the last bit length code to send.\n */\n max_blindex = build_bl_tree(s);\n\n /* Determine the best encoding. Compute the block lengths in bytes. */\n opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n // s->last_lit));\n\n if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n } else {\n // Assert(buf != (char*)0, \"lost buf\");\n opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n }\n\n if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n /* 4: two words for the lengths */\n\n /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n * Otherwise we can't have processed more than WSIZE input bytes since\n * the last block flush, because compression would have been\n * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n * transform a block into a stored block.\n */\n _tr_stored_block(s, buf, stored_len, last);\n\n } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n\n send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n compress_block(s, static_ltree, static_dtree);\n\n } else {\n send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n compress_block(s, s.dyn_ltree, s.dyn_dtree);\n }\n // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n /* The above check is made mod 2^32, for files larger than 512 MB\n * and uLong implemented on 32 bits.\n */\n init_block(s);\n\n if (last) {\n bi_windup(s);\n }\n // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n // s->compressed_len-7*last));\n}\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nfunction _tr_tally(s, dist, lc)\n// deflate_state *s;\n// unsigned dist; /* distance of matched string */\n// unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */\n{\n //var out_length, in_length, dcode;\n\n s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff;\n s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n\n s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n s.last_lit++;\n\n if (dist === 0) {\n /* lc is the unmatched char */\n s.dyn_ltree[lc * 2]/*.Freq*/++;\n } else {\n s.matches++;\n /* Here, lc is the match length - MIN_MATCH */\n dist--; /* dist = match distance - 1 */\n //Assert((ush)dist < (ush)MAX_DIST(s) &&\n // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n // (ush)d_code(dist) < (ush)D_CODES, \"_tr_tally: bad match\");\n\n s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;\n s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n\n//#ifdef TRUNCATE_BLOCK\n// /* Try to guess if it is profitable to stop the current block here */\n// if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n// /* Compute an upper bound for the compressed length */\n// out_length = s.last_lit*8;\n// in_length = s.strstart - s.block_start;\n//\n// for (dcode = 0; dcode < D_CODES; dcode++) {\n// out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n// }\n// out_length >>>= 3;\n// //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n// // s->last_lit, in_length, out_length,\n// // 100L - out_length*100L/in_length));\n// if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n// return true;\n// }\n// }\n//#endif\n\n return (s.last_lit === s.lit_bufsize - 1);\n /* We avoid equality with lit_bufsize because of wraparound at 64K\n * on 16 bit machines and because stored blocks are restricted to\n * 64K-1 bytes.\n */\n}\n\nexports._tr_init = _tr_init;\nexports._tr_stored_block = _tr_stored_block;\nexports._tr_flush_block = _tr_flush_block;\nexports._tr_tally = _tr_tally;\nexports._tr_align = _tr_align;\n","'use strict';\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction adler32(adler, buf, len, pos) {\n var s1 = (adler & 0xffff) |0,\n s2 = ((adler >>> 16) & 0xffff) |0,\n n = 0;\n\n while (len !== 0) {\n // Set limit ~ twice less than 5552, to keep\n // s2 in 31-bits, because we force signed ints.\n // in other case %= will fail.\n n = len > 2000 ? 2000 : len;\n len -= n;\n\n do {\n s1 = (s1 + buf[pos++]) |0;\n s2 = (s2 + s1) |0;\n } while (--n);\n\n s1 %= 65521;\n s2 %= 65521;\n }\n\n return (s1 | (s2 << 16)) |0;\n}\n\n\nmodule.exports = adler32;\n","'use strict';\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nfunction makeTable() {\n var c, table = [];\n\n for (var n = 0; n < 256; n++) {\n c = n;\n for (var k = 0; k < 8; k++) {\n c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n}\n\n// Create table on load. Just 255 signed longs. Not a problem.\nvar crcTable = makeTable();\n\n\nfunction crc32(crc, buf, len, pos) {\n var t = crcTable,\n end = pos + len;\n\n crc ^= -1;\n\n for (var i = pos; i < end; i++) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\n\nmodule.exports = crc32;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n 2: 'need dictionary', /* Z_NEED_DICT 2 */\n 1: 'stream end', /* Z_STREAM_END 1 */\n 0: '', /* Z_OK 0 */\n '-1': 'file error', /* Z_ERRNO (-1) */\n '-2': 'stream error', /* Z_STREAM_ERROR (-2) */\n '-3': 'data error', /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error', /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\nvar trees = require('./trees');\nvar adler32 = require('./adler32');\nvar crc32 = require('./crc32');\nvar msg = require('./messages');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\nvar Z_NO_FLUSH = 0;\nvar Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\nvar Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\n//var Z_TREES = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\n//var Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\n//var Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n\n/* compression levels */\n//var Z_NO_COMPRESSION = 0;\n//var Z_BEST_SPEED = 1;\n//var Z_BEST_COMPRESSION = 9;\nvar Z_DEFAULT_COMPRESSION = -1;\n\n\nvar Z_FILTERED = 1;\nvar Z_HUFFMAN_ONLY = 2;\nvar Z_RLE = 3;\nvar Z_FIXED = 4;\nvar Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\n//var Z_BINARY = 0;\n//var Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\nvar Z_UNKNOWN = 2;\n\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n\n/*============================================================================*/\n\n\nvar MAX_MEM_LEVEL = 9;\n/* Maximum value for memLevel in deflateInit2 */\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_MEM_LEVEL = 8;\n\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\nvar D_CODES = 30;\n/* number of distance codes */\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\nvar MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);\n\nvar PRESET_DICT = 0x20;\n\nvar INIT_STATE = 42;\nvar EXTRA_STATE = 69;\nvar NAME_STATE = 73;\nvar COMMENT_STATE = 91;\nvar HCRC_STATE = 103;\nvar BUSY_STATE = 113;\nvar FINISH_STATE = 666;\n\nvar BS_NEED_MORE = 1; /* block not completed, need more input or more output */\nvar BS_BLOCK_DONE = 2; /* block flush performed */\nvar BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nvar BS_FINISH_DONE = 4; /* finish done, accept no more input or output */\n\nvar OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nfunction err(strm, errorCode) {\n strm.msg = msg[errorCode];\n return errorCode;\n}\n\nfunction rank(f) {\n return ((f) << 1) - ((f) > 4 ? 9 : 0);\n}\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output goes\n * through this function so some applications may wish to modify it\n * to avoid allocating a large strm->output buffer and copying into it.\n * (See also read_buf()).\n */\nfunction flush_pending(strm) {\n var s = strm.state;\n\n //_tr_flush_bits(s);\n var len = s.pending;\n if (len > strm.avail_out) {\n len = strm.avail_out;\n }\n if (len === 0) { return; }\n\n utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);\n strm.next_out += len;\n s.pending_out += len;\n strm.total_out += len;\n strm.avail_out -= len;\n s.pending -= len;\n if (s.pending === 0) {\n s.pending_out = 0;\n }\n}\n\n\nfunction flush_block_only(s, last) {\n trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n s.block_start = s.strstart;\n flush_pending(s.strm);\n}\n\n\nfunction put_byte(s, b) {\n s.pending_buf[s.pending++] = b;\n}\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nfunction putShortMSB(s, b) {\n// put_byte(s, (Byte)(b >> 8));\n// put_byte(s, (Byte)(b & 0xff));\n s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n s.pending_buf[s.pending++] = b & 0xff;\n}\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read. All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nfunction read_buf(strm, buf, start, size) {\n var len = strm.avail_in;\n\n if (len > size) { len = size; }\n if (len === 0) { return 0; }\n\n strm.avail_in -= len;\n\n // zmemcpy(buf, strm->next_in, len);\n utils.arraySet(buf, strm.input, strm.next_in, len, start);\n if (strm.state.wrap === 1) {\n strm.adler = adler32(strm.adler, buf, len, start);\n }\n\n else if (strm.state.wrap === 2) {\n strm.adler = crc32(strm.adler, buf, len, start);\n }\n\n strm.next_in += len;\n strm.total_in += len;\n\n return len;\n}\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nfunction longest_match(s, cur_match) {\n var chain_length = s.max_chain_length; /* max hash chain length */\n var scan = s.strstart; /* current string */\n var match; /* matched string */\n var len; /* length of current match */\n var best_len = s.prev_length; /* best match length so far */\n var nice_match = s.nice_match; /* stop if match long enough */\n var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n var _win = s.window; // shortcut\n\n var wmask = s.w_mask;\n var prev = s.prev;\n\n /* Stop when cur_match becomes <= limit. To simplify the code,\n * we prevent matches with the string of window index 0.\n */\n\n var strend = s.strstart + MAX_MATCH;\n var scan_end1 = _win[scan + best_len - 1];\n var scan_end = _win[scan + best_len];\n\n /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n * It is easy to get rid of this optimization if necessary.\n */\n // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n /* Do not waste too much time if we already have a good match: */\n if (s.prev_length >= s.good_match) {\n chain_length >>= 2;\n }\n /* Do not look for matches beyond the end of the input. This is necessary\n * to make deflate deterministic.\n */\n if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n do {\n // Assert(cur_match < s->strstart, \"no future\");\n match = cur_match;\n\n /* Skip to next match if the match length cannot increase\n * or if the match length is less than 2. Note that the checks below\n * for insufficient lookahead only occur occasionally for performance\n * reasons. Therefore uninitialized memory will be accessed, and\n * conditional jumps will be made that depend on those values.\n * However the length of the match is limited to the lookahead, so\n * the output of deflate is not affected by the uninitialized values.\n */\n\n if (_win[match + best_len] !== scan_end ||\n _win[match + best_len - 1] !== scan_end1 ||\n _win[match] !== _win[scan] ||\n _win[++match] !== _win[scan + 1]) {\n continue;\n }\n\n /* The check at best_len-1 can be removed because it will be made\n * again later. (This heuristic is not always a win.)\n * It is not necessary to compare scan[2] and match[2] since they\n * are always equal when the other bytes match, given that\n * the hash keys are equal and that HASH_BITS >= 8.\n */\n scan += 2;\n match++;\n // Assert(*scan == *match, \"match[2]?\");\n\n /* We check for insufficient lookahead only every 8th comparison;\n * the 256th check will be made at strstart+258.\n */\n do {\n /*jshint noempty:false*/\n } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n scan < strend);\n\n // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n len = MAX_MATCH - (strend - scan);\n scan = strend - MAX_MATCH;\n\n if (len > best_len) {\n s.match_start = cur_match;\n best_len = len;\n if (len >= nice_match) {\n break;\n }\n scan_end1 = _win[scan + best_len - 1];\n scan_end = _win[scan + best_len];\n }\n } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n if (best_len <= s.lookahead) {\n return best_len;\n }\n return s.lookahead;\n}\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n * At least one byte has been read, or avail_in == 0; reads are\n * performed for at least two bytes (required for the zip translate_eol\n * option -- not supported here).\n */\nfunction fill_window(s) {\n var _w_size = s.w_size;\n var p, n, m, more, str;\n\n //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n do {\n more = s.window_size - s.lookahead - s.strstart;\n\n // JS ints have 32 bit, block below not needed\n /* Deal with !@#$% 64K limit: */\n //if (sizeof(int) <= 2) {\n // if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n // more = wsize;\n //\n // } else if (more == (unsigned)(-1)) {\n // /* Very unlikely, but possible on 16 bit machine if\n // * strstart == 0 && lookahead == 1 (input done a byte at time)\n // */\n // more--;\n // }\n //}\n\n\n /* If the window is almost full and there is insufficient lookahead,\n * move the upper half to the lower one to make room in the upper half.\n */\n if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n utils.arraySet(s.window, s.window, _w_size, _w_size, 0);\n s.match_start -= _w_size;\n s.strstart -= _w_size;\n /* we now have strstart >= MAX_DIST */\n s.block_start -= _w_size;\n\n /* Slide the hash table (could be avoided with 32 bit values\n at the expense of memory usage). We slide even when level == 0\n to keep the hash table consistent if we switch back to level > 0\n later. (Using level 0 permanently is not an optimal usage of\n zlib, so we don't care about this pathological case.)\n */\n\n n = s.hash_size;\n p = n;\n do {\n m = s.head[--p];\n s.head[p] = (m >= _w_size ? m - _w_size : 0);\n } while (--n);\n\n n = _w_size;\n p = n;\n do {\n m = s.prev[--p];\n s.prev[p] = (m >= _w_size ? m - _w_size : 0);\n /* If n is not on any hash chain, prev[n] is garbage but\n * its value will never be used.\n */\n } while (--n);\n\n more += _w_size;\n }\n if (s.strm.avail_in === 0) {\n break;\n }\n\n /* If there was no sliding:\n * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n * more == window_size - lookahead - strstart\n * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n * => more >= window_size - 2*WSIZE + 2\n * In the BIG_MEM or MMAP case (not yet supported),\n * window_size == input_size + MIN_LOOKAHEAD &&\n * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n * Otherwise, window_size == 2*WSIZE so more >= 2.\n * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n */\n //Assert(more >= 2, \"more < 2\");\n n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n s.lookahead += n;\n\n /* Initialize the hash value now that we have some input: */\n if (s.lookahead + s.insert >= MIN_MATCH) {\n str = s.strstart - s.insert;\n s.ins_h = s.window[str];\n\n /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;\n//#if MIN_MATCH != 3\n// Call update_hash() MIN_MATCH-3 more times\n//#endif\n while (s.insert) {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = str;\n str++;\n s.insert--;\n if (s.lookahead + s.insert < MIN_MATCH) {\n break;\n }\n }\n }\n /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n * but this is not important since only literal bytes will be emitted.\n */\n\n } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n /* If the WIN_INIT bytes after the end of the current data have never been\n * written, then zero those bytes in order to avoid memory check reports of\n * the use of uninitialized (or uninitialised as Julian writes) bytes by\n * the longest match routines. Update the high water mark for the next\n * time through here. WIN_INIT is set to MAX_MATCH since the longest match\n * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n */\n// if (s.high_water < s.window_size) {\n// var curr = s.strstart + s.lookahead;\n// var init = 0;\n//\n// if (s.high_water < curr) {\n// /* Previous high water mark below current data -- zero WIN_INIT\n// * bytes or up to end of window, whichever is less.\n// */\n// init = s.window_size - curr;\n// if (init > WIN_INIT)\n// init = WIN_INIT;\n// zmemzero(s->window + curr, (unsigned)init);\n// s->high_water = curr + init;\n// }\n// else if (s->high_water < (ulg)curr + WIN_INIT) {\n// /* High water mark at or above current data, but below current data\n// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n// * to end of window, whichever is less.\n// */\n// init = (ulg)curr + WIN_INIT - s->high_water;\n// if (init > s->window_size - s->high_water)\n// init = s->window_size - s->high_water;\n// zmemzero(s->window + s->high_water, (unsigned)init);\n// s->high_water += init;\n// }\n// }\n//\n// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n// \"not enough room for search\");\n}\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n * This function does not insert new strings in the dictionary since\n * uncompressible data is probably not useful. This function is used\n * only for the level=0 compression option.\n * NOTE: this function should be optimized to avoid extra copying from\n * window to pending_buf.\n */\nfunction deflate_stored(s, flush) {\n /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n * to pending_buf_size, and each stored block has a 5 byte header:\n */\n var max_block_size = 0xffff;\n\n if (max_block_size > s.pending_buf_size - 5) {\n max_block_size = s.pending_buf_size - 5;\n }\n\n /* Copy as much as possible from input to output: */\n for (;;) {\n /* Fill the window as much as possible: */\n if (s.lookahead <= 1) {\n\n //Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n // s->block_start >= (long)s->w_size, \"slide too late\");\n// if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n// s.block_start >= s.w_size)) {\n// throw new Error(\"slide too late\");\n// }\n\n fill_window(s);\n if (s.lookahead === 0 && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n\n if (s.lookahead === 0) {\n break;\n }\n /* flush the current block */\n }\n //Assert(s->block_start >= 0L, \"block gone\");\n// if (s.block_start < 0) throw new Error(\"block gone\");\n\n s.strstart += s.lookahead;\n s.lookahead = 0;\n\n /* Emit a stored block if pending_buf will be full: */\n var max_start = s.block_start + max_block_size;\n\n if (s.strstart === 0 || s.strstart >= max_start) {\n /* strstart == 0 is possible when wraparound on 16-bit machine */\n s.lookahead = s.strstart - max_start;\n s.strstart = max_start;\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n\n\n }\n /* Flush if we may have to slide, otherwise block_start may become\n * negative and the data will be gone:\n */\n if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n\n s.insert = 0;\n\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n\n if (s.strstart > s.block_start) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_NEED_MORE;\n}\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nfunction deflate_fast(s, flush) {\n var hash_head; /* head of the hash chain */\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) {\n break; /* flush the current block */\n }\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n * At this point we have always match_length < MIN_MATCH\n */\n if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n }\n if (s.match_length >= MIN_MATCH) {\n // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n /*** _tr_tally_dist(s, s.strstart - s.match_start,\n s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n\n /* Insert new strings in the hash table only if the match length\n * is not too large. This saves time but degrades compression.\n */\n if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {\n s.match_length--; /* string at strstart already in table */\n do {\n s.strstart++;\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n * always MIN_MATCH bytes ahead.\n */\n } while (--s.match_length !== 0);\n s.strstart++;\n } else\n {\n s.strstart += s.match_length;\n s.match_length = 0;\n s.ins_h = s.window[s.strstart];\n /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;\n\n//#if MIN_MATCH != 3\n// Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n * matter since it will be recomputed at next deflate call.\n */\n }\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nfunction deflate_slow(s, flush) {\n var hash_head; /* head of hash chain */\n var bflush; /* set if current block must be flushed */\n\n var max_insert;\n\n /* Process the input block. */\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n */\n s.prev_length = s.match_length;\n s.prev_match = s.match_start;\n s.match_length = MIN_MATCH - 1;\n\n if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n\n if (s.match_length <= 5 &&\n (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n /* If prev_match is also MIN_MATCH, match_start is garbage\n * but we will ignore the current match anyway.\n */\n s.match_length = MIN_MATCH - 1;\n }\n }\n /* If there was a match at the previous step and the current\n * match is not better, output the previous match:\n */\n if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n max_insert = s.strstart + s.lookahead - MIN_MATCH;\n /* Do not insert strings in hash table beyond this. */\n\n //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n s.prev_length - MIN_MATCH, bflush);***/\n bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);\n /* Insert in hash table all strings up to the end of the match.\n * strstart-1 and strstart are already inserted. If there is not\n * enough lookahead, the last two strings are not inserted in\n * the hash table.\n */\n s.lookahead -= s.prev_length - 1;\n s.prev_length -= 2;\n do {\n if (++s.strstart <= max_insert) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n } while (--s.prev_length !== 0);\n s.match_available = 0;\n s.match_length = MIN_MATCH - 1;\n s.strstart++;\n\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n } else if (s.match_available) {\n /* If there was no match at the previous position, output a\n * single literal. If there was a match but the current match\n * is longer, truncate the previous match to a single literal.\n */\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n if (bflush) {\n /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n flush_block_only(s, false);\n /***/\n }\n s.strstart++;\n s.lookahead--;\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n } else {\n /* There is no previous match to compare with, wait for\n * the next step to decide.\n */\n s.match_available = 1;\n s.strstart++;\n s.lookahead--;\n }\n }\n //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n if (s.match_available) {\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n s.match_available = 0;\n }\n s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_BLOCK_DONE;\n}\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one. Do not maintain a hash table. (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nfunction deflate_rle(s, flush) {\n var bflush; /* set if current block must be flushed */\n var prev; /* byte at distance one to match */\n var scan, strend; /* scan goes up to strend for length of run */\n\n var _win = s.window;\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the longest run, plus one for the unrolled loop.\n */\n if (s.lookahead <= MAX_MATCH) {\n fill_window(s);\n if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* See how many times the previous byte repeats */\n s.match_length = 0;\n if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n scan = s.strstart - 1;\n prev = _win[scan];\n if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n strend = s.strstart + MAX_MATCH;\n do {\n /*jshint noempty:false*/\n } while (prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n scan < strend);\n s.match_length = MAX_MATCH - (strend - scan);\n if (s.match_length > s.lookahead) {\n s.match_length = s.lookahead;\n }\n }\n //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n }\n\n /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n if (s.match_length >= MIN_MATCH) {\n //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n s.strstart += s.match_length;\n s.match_length = 0;\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nfunction deflate_huff(s, flush) {\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we have a literal to write. */\n if (s.lookahead === 0) {\n fill_window(s);\n if (s.lookahead === 0) {\n if (flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n break; /* flush the current block */\n }\n }\n\n /* Output a literal byte */\n s.match_length = 0;\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n this.good_length = good_length;\n this.max_lazy = max_lazy;\n this.nice_length = nice_length;\n this.max_chain = max_chain;\n this.func = func;\n}\n\nvar configuration_table;\n\nconfiguration_table = [\n /* good lazy nice chain */\n new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */\n new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */\n new Config(4, 5, 16, 8, deflate_fast), /* 2 */\n new Config(4, 6, 32, 32, deflate_fast), /* 3 */\n\n new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */\n new Config(8, 16, 32, 32, deflate_slow), /* 5 */\n new Config(8, 16, 128, 128, deflate_slow), /* 6 */\n new Config(8, 32, 128, 256, deflate_slow), /* 7 */\n new Config(32, 128, 258, 1024, deflate_slow), /* 8 */\n new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */\n];\n\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nfunction lm_init(s) {\n s.window_size = 2 * s.w_size;\n\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n\n /* Set the default configuration parameters:\n */\n s.max_lazy_match = configuration_table[s.level].max_lazy;\n s.good_match = configuration_table[s.level].good_length;\n s.nice_match = configuration_table[s.level].nice_length;\n s.max_chain_length = configuration_table[s.level].max_chain;\n\n s.strstart = 0;\n s.block_start = 0;\n s.lookahead = 0;\n s.insert = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n s.ins_h = 0;\n}\n\n\nfunction DeflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.status = 0; /* as the name implies */\n this.pending_buf = null; /* output still pending */\n this.pending_buf_size = 0; /* size of pending_buf */\n this.pending_out = 0; /* next pending byte to output to the stream */\n this.pending = 0; /* nb of bytes in the pending buffer */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.gzhead = null; /* gzip header information to write */\n this.gzindex = 0; /* where in extra, name, or comment */\n this.method = Z_DEFLATED; /* can only be DEFLATED */\n this.last_flush = -1; /* value of flush param for previous deflate call */\n\n this.w_size = 0; /* LZ77 window size (32K by default) */\n this.w_bits = 0; /* log2(w_size) (8..16) */\n this.w_mask = 0; /* w_size - 1 */\n\n this.window = null;\n /* Sliding window. Input bytes are read into the second half of the window,\n * and move to the first half later to keep a dictionary of at least wSize\n * bytes. With this organization, matches are limited to a distance of\n * wSize-MAX_MATCH bytes, but this ensures that IO is always\n * performed with a length multiple of the block size.\n */\n\n this.window_size = 0;\n /* Actual size of window: 2*wSize, except when the user input buffer\n * is directly used as sliding window.\n */\n\n this.prev = null;\n /* Link to older string with same hash index. To limit the size of this\n * array to 64K, this link is maintained only for the last 32K strings.\n * An index in this array is thus a window index modulo 32K.\n */\n\n this.head = null; /* Heads of the hash chains or NIL. */\n\n this.ins_h = 0; /* hash index of string to be inserted */\n this.hash_size = 0; /* number of elements in hash table */\n this.hash_bits = 0; /* log2(hash_size) */\n this.hash_mask = 0; /* hash_size-1 */\n\n this.hash_shift = 0;\n /* Number of bits by which ins_h must be shifted at each input\n * step. It must be such that after MIN_MATCH steps, the oldest\n * byte no longer takes part in the hash key, that is:\n * hash_shift * MIN_MATCH >= hash_bits\n */\n\n this.block_start = 0;\n /* Window position at the beginning of the current output block. Gets\n * negative when the window is moved backwards.\n */\n\n this.match_length = 0; /* length of best match */\n this.prev_match = 0; /* previous match */\n this.match_available = 0; /* set if previous match exists */\n this.strstart = 0; /* start of string to insert */\n this.match_start = 0; /* start of matching string */\n this.lookahead = 0; /* number of valid bytes ahead in window */\n\n this.prev_length = 0;\n /* Length of the best match at previous step. Matches not greater than this\n * are discarded. This is used in the lazy match evaluation.\n */\n\n this.max_chain_length = 0;\n /* To speed up deflation, hash chains are never searched beyond this\n * length. A higher limit improves compression ratio but degrades the\n * speed.\n */\n\n this.max_lazy_match = 0;\n /* Attempt to find a better match only when the current match is strictly\n * smaller than this value. This mechanism is used only for compression\n * levels >= 4.\n */\n // That's alias to max_lazy_match, don't use directly\n //this.max_insert_length = 0;\n /* Insert new strings in the hash table only if the match length is not\n * greater than this length. This saves time but degrades compression.\n * max_insert_length is used only for compression levels <= 3.\n */\n\n this.level = 0; /* compression level (1..9) */\n this.strategy = 0; /* favor or force Huffman coding*/\n\n this.good_match = 0;\n /* Use a faster search when the previous match is longer than this */\n\n this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n /* used by trees.c: */\n\n /* Didn't use ct_data typedef below to suppress compiler warning */\n\n // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */\n // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */\n\n // Use flat array of DOUBLE size, with interleaved fata,\n // because JS does not support effective\n this.dyn_ltree = new utils.Buf16(HEAP_SIZE * 2);\n this.dyn_dtree = new utils.Buf16((2 * D_CODES + 1) * 2);\n this.bl_tree = new utils.Buf16((2 * BL_CODES + 1) * 2);\n zero(this.dyn_ltree);\n zero(this.dyn_dtree);\n zero(this.bl_tree);\n\n this.l_desc = null; /* desc. for literal tree */\n this.d_desc = null; /* desc. for distance tree */\n this.bl_desc = null; /* desc. for bit length tree */\n\n //ush bl_count[MAX_BITS+1];\n this.bl_count = new utils.Buf16(MAX_BITS + 1);\n /* number of codes at each bit length for an optimal tree */\n\n //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */\n this.heap = new utils.Buf16(2 * L_CODES + 1); /* heap used to build the Huffman trees */\n zero(this.heap);\n\n this.heap_len = 0; /* number of elements in the heap */\n this.heap_max = 0; /* element of largest frequency */\n /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n * The same heap array is used to build all trees.\n */\n\n this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1];\n zero(this.depth);\n /* Depth of each subtree used as tie breaker for trees of equal frequency\n */\n\n this.l_buf = 0; /* buffer index for literals or lengths */\n\n this.lit_bufsize = 0;\n /* Size of match buffer for literals/lengths. There are 4 reasons for\n * limiting lit_bufsize to 64K:\n * - frequencies can be kept in 16 bit counters\n * - if compression is not successful for the first block, all input\n * data is still in the window so we can still emit a stored block even\n * when input comes from standard input. (This can also be done for\n * all blocks if lit_bufsize is not greater than 32K.)\n * - if compression is not successful for a file smaller than 64K, we can\n * even emit a stored file instead of a stored block (saving 5 bytes).\n * This is applicable only for zip (not gzip or zlib).\n * - creating new Huffman trees less frequently may not provide fast\n * adaptation to changes in the input data statistics. (Take for\n * example a binary file with poorly compressible code followed by\n * a highly compressible string table.) Smaller buffer sizes give\n * fast adaptation but have of course the overhead of transmitting\n * trees more frequently.\n * - I can't count above 4\n */\n\n this.last_lit = 0; /* running index in l_buf */\n\n this.d_buf = 0;\n /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n * the same number of elements. To use different lengths, an extra flag\n * array would be necessary.\n */\n\n this.opt_len = 0; /* bit length of current block with optimal trees */\n this.static_len = 0; /* bit length of current block with static trees */\n this.matches = 0; /* number of string matches in current block */\n this.insert = 0; /* bytes at end of window left to insert */\n\n\n this.bi_buf = 0;\n /* Output buffer. bits are inserted starting at the bottom (least\n * significant bits).\n */\n this.bi_valid = 0;\n /* Number of valid bits in bi_buf. All bits above the last valid bit\n * are always zero.\n */\n\n // Used for window memory init. We safely ignore it for JS. That makes\n // sense only for pointers and memory check tools.\n //this.high_water = 0;\n /* High water mark offset in window for initialized bytes -- bytes above\n * this are set to zero in order to avoid memory check warnings when\n * longest match routines access bytes past the input. This is then\n * updated to the new high water mark.\n */\n}\n\n\nfunction deflateResetKeep(strm) {\n var s;\n\n if (!strm || !strm.state) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.total_in = strm.total_out = 0;\n strm.data_type = Z_UNKNOWN;\n\n s = strm.state;\n s.pending = 0;\n s.pending_out = 0;\n\n if (s.wrap < 0) {\n s.wrap = -s.wrap;\n /* was made negative by deflate(..., Z_FINISH); */\n }\n s.status = (s.wrap ? INIT_STATE : BUSY_STATE);\n strm.adler = (s.wrap === 2) ?\n 0 // crc32(0, Z_NULL, 0)\n :\n 1; // adler32(0, Z_NULL, 0)\n s.last_flush = Z_NO_FLUSH;\n trees._tr_init(s);\n return Z_OK;\n}\n\n\nfunction deflateReset(strm) {\n var ret = deflateResetKeep(strm);\n if (ret === Z_OK) {\n lm_init(strm.state);\n }\n return ret;\n}\n\n\nfunction deflateSetHeader(strm, head) {\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }\n strm.state.gzhead = head;\n return Z_OK;\n}\n\n\nfunction deflateInit2(strm, level, method, windowBits, memLevel, strategy) {\n if (!strm) { // === Z_NULL\n return Z_STREAM_ERROR;\n }\n var wrap = 1;\n\n if (level === Z_DEFAULT_COMPRESSION) {\n level = 6;\n }\n\n if (windowBits < 0) { /* suppress zlib wrapper */\n wrap = 0;\n windowBits = -windowBits;\n }\n\n else if (windowBits > 15) {\n wrap = 2; /* write gzip wrapper instead */\n windowBits -= 16;\n }\n\n\n if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||\n windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n strategy < 0 || strategy > Z_FIXED) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n\n if (windowBits === 8) {\n windowBits = 9;\n }\n /* until 256-byte window bug fixed */\n\n var s = new DeflateState();\n\n strm.state = s;\n s.strm = strm;\n\n s.wrap = wrap;\n s.gzhead = null;\n s.w_bits = windowBits;\n s.w_size = 1 << s.w_bits;\n s.w_mask = s.w_size - 1;\n\n s.hash_bits = memLevel + 7;\n s.hash_size = 1 << s.hash_bits;\n s.hash_mask = s.hash_size - 1;\n s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n\n s.window = new utils.Buf8(s.w_size * 2);\n s.head = new utils.Buf16(s.hash_size);\n s.prev = new utils.Buf16(s.w_size);\n\n // Don't need mem init magic for JS.\n //s.high_water = 0; /* nothing written to s->window yet */\n\n s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n s.pending_buf_size = s.lit_bufsize * 4;\n\n //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);\n //s->pending_buf = (uchf *) overlay;\n s.pending_buf = new utils.Buf8(s.pending_buf_size);\n\n // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);\n s.d_buf = 1 * s.lit_bufsize;\n\n //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;\n s.l_buf = (1 + 2) * s.lit_bufsize;\n\n s.level = level;\n s.strategy = strategy;\n s.method = method;\n\n return deflateReset(strm);\n}\n\nfunction deflateInit(strm, level) {\n return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);\n}\n\n\nfunction deflate(strm, flush) {\n var old_flush, s;\n var beg, val; // for gzip header write only\n\n if (!strm || !strm.state ||\n flush > Z_BLOCK || flush < 0) {\n return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n }\n\n s = strm.state;\n\n if (!strm.output ||\n (!strm.input && strm.avail_in !== 0) ||\n (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);\n }\n\n s.strm = strm; /* just in case */\n old_flush = s.last_flush;\n s.last_flush = flush;\n\n /* Write the header */\n if (s.status === INIT_STATE) {\n\n if (s.wrap === 2) { // GZIP header\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n put_byte(s, 31);\n put_byte(s, 139);\n put_byte(s, 8);\n if (!s.gzhead) { // s->gzhead == Z_NULL\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, OS_CODE);\n s.status = BUSY_STATE;\n }\n else {\n put_byte(s, (s.gzhead.text ? 1 : 0) +\n (s.gzhead.hcrc ? 2 : 0) +\n (!s.gzhead.extra ? 0 : 4) +\n (!s.gzhead.name ? 0 : 8) +\n (!s.gzhead.comment ? 0 : 16)\n );\n put_byte(s, s.gzhead.time & 0xff);\n put_byte(s, (s.gzhead.time >> 8) & 0xff);\n put_byte(s, (s.gzhead.time >> 16) & 0xff);\n put_byte(s, (s.gzhead.time >> 24) & 0xff);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, s.gzhead.os & 0xff);\n if (s.gzhead.extra && s.gzhead.extra.length) {\n put_byte(s, s.gzhead.extra.length & 0xff);\n put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n }\n if (s.gzhead.hcrc) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);\n }\n s.gzindex = 0;\n s.status = EXTRA_STATE;\n }\n }\n else // DEFLATE header\n {\n var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n var level_flags = -1;\n\n if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n level_flags = 0;\n } else if (s.level < 6) {\n level_flags = 1;\n } else if (s.level === 6) {\n level_flags = 2;\n } else {\n level_flags = 3;\n }\n header |= (level_flags << 6);\n if (s.strstart !== 0) { header |= PRESET_DICT; }\n header += 31 - (header % 31);\n\n s.status = BUSY_STATE;\n putShortMSB(s, header);\n\n /* Save the adler32 of the preset dictionary: */\n if (s.strstart !== 0) {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n strm.adler = 1; // adler32(0L, Z_NULL, 0);\n }\n }\n\n//#ifdef GZIP\n if (s.status === EXTRA_STATE) {\n if (s.gzhead.extra/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n\n while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n break;\n }\n }\n put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n s.gzindex++;\n }\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (s.gzindex === s.gzhead.extra.length) {\n s.gzindex = 0;\n s.status = NAME_STATE;\n }\n }\n else {\n s.status = NAME_STATE;\n }\n }\n if (s.status === NAME_STATE) {\n if (s.gzhead.name/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.name.length) {\n val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.gzindex = 0;\n s.status = COMMENT_STATE;\n }\n }\n else {\n s.status = COMMENT_STATE;\n }\n }\n if (s.status === COMMENT_STATE) {\n if (s.gzhead.comment/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.comment.length) {\n val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.status = HCRC_STATE;\n }\n }\n else {\n s.status = HCRC_STATE;\n }\n }\n if (s.status === HCRC_STATE) {\n if (s.gzhead.hcrc) {\n if (s.pending + 2 > s.pending_buf_size) {\n flush_pending(strm);\n }\n if (s.pending + 2 <= s.pending_buf_size) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n s.status = BUSY_STATE;\n }\n }\n else {\n s.status = BUSY_STATE;\n }\n }\n//#endif\n\n /* Flush as much pending output as possible */\n if (s.pending !== 0) {\n flush_pending(strm);\n if (strm.avail_out === 0) {\n /* Since avail_out is 0, deflate will be called again with\n * more output space, but possibly with both pending and\n * avail_in equal to zero. There won't be anything to do,\n * but this is not an error situation so make sure we\n * return OK instead of BUF_ERROR at next call of deflate:\n */\n s.last_flush = -1;\n return Z_OK;\n }\n\n /* Make sure there is something to do and avoid duplicate consecutive\n * flushes. For repeated and useless calls with Z_FINISH, we keep\n * returning Z_STREAM_END instead of Z_BUF_ERROR.\n */\n } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n flush !== Z_FINISH) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* User must not provide more input after the first FINISH: */\n if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* Start a new block or continue the current one.\n */\n if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :\n (s.strategy === Z_RLE ? deflate_rle(s, flush) :\n configuration_table[s.level].func(s, flush));\n\n if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n s.status = FINISH_STATE;\n }\n if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n if (strm.avail_out === 0) {\n s.last_flush = -1;\n /* avoid BUF_ERROR next call, see above */\n }\n return Z_OK;\n /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n * of deflate should use the same flush parameter to make sure\n * that the flush is complete. So we don't have to output an\n * empty block here, this will be done at next call. This also\n * ensures that for a very small output buffer, we emit at most\n * one empty block.\n */\n }\n if (bstate === BS_BLOCK_DONE) {\n if (flush === Z_PARTIAL_FLUSH) {\n trees._tr_align(s);\n }\n else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */\n\n trees._tr_stored_block(s, 0, 0, false);\n /* For a full flush, this empty block will be recognized\n * as a special marker by inflate_sync().\n */\n if (flush === Z_FULL_FLUSH) {\n /*** CLEAR_HASH(s); ***/ /* forget history */\n zero(s.head); // Fill with NIL (= 0);\n\n if (s.lookahead === 0) {\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n }\n }\n flush_pending(strm);\n if (strm.avail_out === 0) {\n s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n return Z_OK;\n }\n }\n }\n //Assert(strm->avail_out > 0, \"bug2\");\n //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n if (flush !== Z_FINISH) { return Z_OK; }\n if (s.wrap <= 0) { return Z_STREAM_END; }\n\n /* Write the trailer */\n if (s.wrap === 2) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n put_byte(s, (strm.adler >> 16) & 0xff);\n put_byte(s, (strm.adler >> 24) & 0xff);\n put_byte(s, strm.total_in & 0xff);\n put_byte(s, (strm.total_in >> 8) & 0xff);\n put_byte(s, (strm.total_in >> 16) & 0xff);\n put_byte(s, (strm.total_in >> 24) & 0xff);\n }\n else\n {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n\n flush_pending(strm);\n /* If avail_out is zero, the application will call deflate again\n * to flush the rest.\n */\n if (s.wrap > 0) { s.wrap = -s.wrap; }\n /* write the trailer only once! */\n return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n}\n\nfunction deflateEnd(strm) {\n var status;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n status = strm.state.status;\n if (status !== INIT_STATE &&\n status !== EXTRA_STATE &&\n status !== NAME_STATE &&\n status !== COMMENT_STATE &&\n status !== HCRC_STATE &&\n status !== BUSY_STATE &&\n status !== FINISH_STATE\n ) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.state = null;\n\n return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n}\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nfunction deflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var s;\n var str, n;\n var wrap;\n var avail;\n var next;\n var input;\n var tmpDict;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n s = strm.state;\n wrap = s.wrap;\n\n if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n return Z_STREAM_ERROR;\n }\n\n /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n if (wrap === 1) {\n /* adler32(strm->adler, dictionary, dictLength); */\n strm.adler = adler32(strm.adler, dictionary, dictLength, 0);\n }\n\n s.wrap = 0; /* avoid computing Adler-32 in read_buf */\n\n /* if dictionary would fill window, just replace the history */\n if (dictLength >= s.w_size) {\n if (wrap === 0) { /* already empty otherwise */\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n /* use the tail */\n // dictionary = dictionary.slice(dictLength - s.w_size);\n tmpDict = new utils.Buf8(s.w_size);\n utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);\n dictionary = tmpDict;\n dictLength = s.w_size;\n }\n /* insert dictionary into window and hash */\n avail = strm.avail_in;\n next = strm.next_in;\n input = strm.input;\n strm.avail_in = dictLength;\n strm.next_in = 0;\n strm.input = dictionary;\n fill_window(s);\n while (s.lookahead >= MIN_MATCH) {\n str = s.strstart;\n n = s.lookahead - (MIN_MATCH - 1);\n do {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n s.head[s.ins_h] = str;\n str++;\n } while (--n);\n s.strstart = str;\n s.lookahead = MIN_MATCH - 1;\n fill_window(s);\n }\n s.strstart += s.lookahead;\n s.block_start = s.strstart;\n s.insert = s.lookahead;\n s.lookahead = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n strm.next_in = next;\n strm.input = input;\n strm.avail_in = avail;\n s.wrap = wrap;\n return Z_OK;\n}\n\n\nexports.deflateInit = deflateInit;\nexports.deflateInit2 = deflateInit2;\nexports.deflateReset = deflateReset;\nexports.deflateResetKeep = deflateResetKeep;\nexports.deflateSetHeader = deflateSetHeader;\nexports.deflate = deflate;\nexports.deflateEnd = deflateEnd;\nexports.deflateSetDictionary = deflateSetDictionary;\nexports.deflateInfo = 'pako deflate (from Nodeca project)';\n\n/* Not implemented\nexports.deflateBound = deflateBound;\nexports.deflateCopy = deflateCopy;\nexports.deflateParams = deflateParams;\nexports.deflatePending = deflatePending;\nexports.deflatePrime = deflatePrime;\nexports.deflateTune = deflateTune;\n*/\n","// String encode/decode helpers\n'use strict';\n\n\nvar utils = require('./common');\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safari\n//\nvar STR_APPLY_OK = true;\nvar STR_APPLY_UIA_OK = true;\n\ntry { String.fromCharCode.apply(null, [ 0 ]); } catch (__) { STR_APPLY_OK = false; }\ntry { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }\n\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nvar _utf8len = new utils.Buf8(256);\nfor (var q = 0; q < 256; q++) {\n _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n}\n_utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n\n// convert string to array (typed, when possible)\nexports.string2buf = function (str) {\n var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n buf = new utils.Buf8(buf_len);\n\n // convert\n for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n};\n\n// Helper (used in 2 places)\nfunction buf2binstring(buf, len) {\n // On Chrome, the arguments in a function call that are allowed is `65534`.\n // If the length of the buffer is smaller than that, we can use this optimization,\n // otherwise we will take a slower path.\n if (len < 65534) {\n if ((buf.subarray && STR_APPLY_UIA_OK) || (!buf.subarray && STR_APPLY_OK)) {\n return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len));\n }\n }\n\n var result = '';\n for (var i = 0; i < len; i++) {\n result += String.fromCharCode(buf[i]);\n }\n return result;\n}\n\n\n// Convert byte array to binary string\nexports.buf2binstring = function (buf) {\n return buf2binstring(buf, buf.length);\n};\n\n\n// Convert binary string (typed, when possible)\nexports.binstring2buf = function (str) {\n var buf = new utils.Buf8(str.length);\n for (var i = 0, len = buf.length; i < len; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n};\n\n\n// convert array to string\nexports.buf2string = function (buf, max) {\n var i, out, c, c_len;\n var len = max || buf.length;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n var utf16buf = new Array(len * 2);\n\n for (out = 0, i = 0; i < len;) {\n c = buf[i++];\n // quick process ascii\n if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n c_len = _utf8len[c];\n // skip 5 & 6 byte codes\n if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n return buf2binstring(utf16buf, out);\n};\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nexports.utf8border = function (buf, max) {\n var pos;\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n pos = max - 1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means buffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n this.next_in = 0;\n /* number of bytes available at input */\n this.avail_in = 0;\n /* total number of input bytes read so far */\n this.total_in = 0;\n /* next output byte should be put there */\n this.output = null; // JS specific, because we have no pointers\n this.next_out = 0;\n /* remaining free space at output */\n this.avail_out = 0;\n /* total number of bytes output so far */\n this.total_out = 0;\n /* last error message, NULL if no error */\n this.msg = ''/*Z_NULL*/;\n /* not visible by applications */\n this.state = null;\n /* best guess about the data type: binary or text */\n this.data_type = 2/*Z_UNKNOWN*/;\n /* adler32 value of the uncompressed data */\n this.adler = 0;\n}\n\nmodule.exports = ZStream;\n","'use strict';\n\n\nvar zlib_deflate = require('./zlib/deflate');\nvar utils = require('./utils/common');\nvar strings = require('./utils/strings');\nvar msg = require('./zlib/messages');\nvar ZStream = require('./zlib/zstream');\n\nvar toString = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nvar Z_NO_FLUSH = 0;\nvar Z_FINISH = 4;\n\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\nvar Z_SYNC_FLUSH = 2;\n\nvar Z_DEFAULT_COMPRESSION = -1;\n\nvar Z_DEFAULT_STRATEGY = 0;\n\nvar Z_DEFLATED = 8;\n\n/* ===========================================================================*/\n\n\n/**\n * class Deflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[deflate]],\n * [[deflateRaw]] and [[gzip]].\n **/\n\n/* internal\n * Deflate.chunks -> Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overridden.\n **/\n\n/**\n * Deflate.result -> Uint8Array|Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Deflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n/**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n\n/**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n * - `header` (Object) - custom header for gzip\n * - `text` (Boolean) - true if compressed data believed to be text\n * - `time` (Number) - modification time, unix timestamp\n * - `os` (Number) - operation system code\n * - `extra` (Array) - array of bytes with extra data (max 65536)\n * - `name` (String) - file name (binary string)\n * - `comment` (String) - comment (binary string)\n * - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true); // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\nfunction Deflate(options) {\n if (!(this instanceof Deflate)) return new Deflate(options);\n\n this.options = utils.assign({\n level: Z_DEFAULT_COMPRESSION,\n method: Z_DEFLATED,\n chunkSize: 16384,\n windowBits: 15,\n memLevel: 8,\n strategy: Z_DEFAULT_STRATEGY,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n if (opt.raw && (opt.windowBits > 0)) {\n opt.windowBits = -opt.windowBits;\n }\n\n else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n opt.windowBits += 16;\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n var status = zlib_deflate.deflateInit2(\n this.strm,\n opt.level,\n opt.method,\n opt.windowBits,\n opt.memLevel,\n opt.strategy\n );\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n if (opt.header) {\n zlib_deflate.deflateSetHeader(this.strm, opt.header);\n }\n\n if (opt.dictionary) {\n var dict;\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n // If we need to compress text, change encoding to utf8.\n dict = strings.string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(opt.dictionary);\n } else {\n dict = opt.dictionary;\n }\n\n status = zlib_deflate.deflateSetDictionary(this.strm, dict);\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n this._dict_set = true;\n }\n}\n\n/**\n * Deflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data. Strings will be\n * converted to utf8 byte sequence.\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Deflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the compression context.\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * array format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nDeflate.prototype.push = function (data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var status, _mode;\n\n if (this.ended) { return false; }\n\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // If we need to compress text, change encoding to utf8.\n strm.input = strings.string2buf(data);\n } else if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = new utils.Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n status = zlib_deflate.deflate(strm, _mode); /* no bad return value */\n\n if (status !== Z_STREAM_END && status !== Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n if (strm.avail_out === 0 || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {\n if (this.options.to === 'string') {\n this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output, strm.next_out)));\n } else {\n this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n }\n }\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);\n\n // Finalize on the last chunk.\n if (_mode === Z_FINISH) {\n status = zlib_deflate.deflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === Z_OK;\n }\n\n // callback interim results if Z_SYNC_FLUSH.\n if (_mode === Z_SYNC_FLUSH) {\n this.onEnd(Z_OK);\n strm.avail_out = 0;\n return true;\n }\n\n return true;\n};\n\n\n/**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nDeflate.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called once after you tell deflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nDeflate.prototype.onEnd = function (status) {\n // On success - join\n if (status === Z_OK) {\n if (this.options.to === 'string') {\n this.result = this.chunks.join('');\n } else {\n this.result = utils.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * deflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate algorithm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n * - dictionary\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , data = Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\nfunction deflate(input, options) {\n var deflator = new Deflate(options);\n\n deflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (deflator.err) { throw deflator.msg || msg[deflator.err]; }\n\n return deflator.result;\n}\n\n\n/**\n * deflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction deflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return deflate(input, options);\n}\n\n\n/**\n * gzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\nfunction gzip(input, options) {\n options = options || {};\n options.gzip = true;\n return deflate(input, options);\n}\n\n\nexports.Deflate = Deflate;\nexports.deflate = deflate;\nexports.deflateRaw = deflateRaw;\nexports.gzip = gzip;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\n\n/*\n Decode literal, length, and distance codes and write out the resulting\n literal and match bytes until either not enough input or output is\n available, an end-of-block is encountered, or a data error is encountered.\n When large enough input and output buffers are supplied to inflate(), for\n example, a 16K input buffer and a 64K output buffer, more than 95% of the\n inflate execution time is spent in this routine.\n\n Entry assumptions:\n\n state.mode === LEN\n strm.avail_in >= 6\n strm.avail_out >= 258\n start >= strm.avail_out\n state.bits < 8\n\n On return, state.mode is one of:\n\n LEN -- ran out of enough output space or enough available input\n TYPE -- reached end of block code, inflate() to interpret next block\n BAD -- error in block data\n\n Notes:\n\n - The maximum input bits used by a length/distance pair is 15 bits for the\n length code, 5 bits for the length extra, 15 bits for the distance code,\n and 13 bits for the distance extra. This totals 48 bits, or six bytes.\n Therefore if strm.avail_in >= 6, then there is enough input to avoid\n checking for available input while decoding.\n\n - The maximum bytes that a single length/distance pair can output is 258\n bytes, which is the maximum length that can be coded. inflate_fast()\n requires strm.avail_out >= 258 for each loop to avoid checking for\n output space.\n */\nmodule.exports = function inflate_fast(strm, start) {\n var state;\n var _in; /* local strm.input */\n var last; /* have enough input while in < last */\n var _out; /* local strm.output */\n var beg; /* inflate()'s initial strm.output */\n var end; /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n var dmax; /* maximum distance from zlib header */\n//#endif\n var wsize; /* window size or zero if not using window */\n var whave; /* valid bytes in the window */\n var wnext; /* window write index */\n // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n var s_window; /* allocated sliding window, if wsize != 0 */\n var hold; /* local strm.hold */\n var bits; /* local strm.bits */\n var lcode; /* local strm.lencode */\n var dcode; /* local strm.distcode */\n var lmask; /* mask for first level of length codes */\n var dmask; /* mask for first level of distance codes */\n var here; /* retrieved table entry */\n var op; /* code bits, operation, extra bits, or */\n /* window position, window bytes to copy */\n var len; /* match length, unused bytes */\n var dist; /* match distance */\n var from; /* where to copy match from */\n var from_source;\n\n\n var input, output; // JS specific, because we have no pointers\n\n /* copy state to local variables */\n state = strm.state;\n //here = state.here;\n _in = strm.next_in;\n input = strm.input;\n last = _in + (strm.avail_in - 5);\n _out = strm.next_out;\n output = strm.output;\n beg = _out - (start - strm.avail_out);\n end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n dmax = state.dmax;\n//#endif\n wsize = state.wsize;\n whave = state.whave;\n wnext = state.wnext;\n s_window = state.window;\n hold = state.hold;\n bits = state.bits;\n lcode = state.lencode;\n dcode = state.distcode;\n lmask = (1 << state.lenbits) - 1;\n dmask = (1 << state.distbits) - 1;\n\n\n /* decode literals and length/distances until end-of-block or not enough\n input data or output space */\n\n top:\n do {\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n\n here = lcode[hold & lmask];\n\n dolen:\n for (;;) { // Goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n if (op === 0) { /* literal */\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n output[_out++] = here & 0xffff/*here.val*/;\n }\n else if (op & 16) { /* length base */\n len = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (op) {\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n len += hold & ((1 << op) - 1);\n hold >>>= op;\n bits -= op;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", len));\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n here = dcode[hold & dmask];\n\n dodist:\n for (;;) { // goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n\n if (op & 16) { /* distance base */\n dist = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n }\n dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n if (dist > dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n//#endif\n hold >>>= op;\n bits -= op;\n //Tracevv((stderr, \"inflate: distance %u\\n\", dist));\n op = _out - beg; /* max distance in output */\n if (dist > op) { /* see if copy from window */\n op = dist - op; /* distance back in window */\n if (op > whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// if (len <= op - whave) {\n// do {\n// output[_out++] = 0;\n// } while (--len);\n// continue top;\n// }\n// len -= op - whave;\n// do {\n// output[_out++] = 0;\n// } while (--op > whave);\n// if (op === 0) {\n// from = _out - dist;\n// do {\n// output[_out++] = output[from++];\n// } while (--len);\n// continue top;\n// }\n//#endif\n }\n from = 0; // window index\n from_source = s_window;\n if (wnext === 0) { /* very common case */\n from += wsize - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n else if (wnext < op) { /* wrap around window */\n from += wsize + wnext - op;\n op -= wnext;\n if (op < len) { /* some from end of window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = 0;\n if (wnext < len) { /* some from start of window */\n op = wnext;\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n }\n else { /* contiguous in window */\n from += wnext - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n while (len > 2) {\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n len -= 3;\n }\n if (len) {\n output[_out++] = from_source[from++];\n if (len > 1) {\n output[_out++] = from_source[from++];\n }\n }\n }\n else {\n from = _out - dist; /* copy direct from output */\n do { /* minimum length is three */\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n len -= 3;\n } while (len > 2);\n if (len) {\n output[_out++] = output[from++];\n if (len > 1) {\n output[_out++] = output[from++];\n }\n }\n }\n }\n else if ((op & 64) === 0) { /* 2nd level distance code */\n here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dodist;\n }\n else {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n }\n else if ((op & 64) === 0) { /* 2nd level length code */\n here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dolen;\n }\n else if (op & 32) { /* end-of-block */\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.mode = TYPE;\n break top;\n }\n else {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n } while (_in < last && _out < end);\n\n /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n len = bits >> 3;\n _in -= len;\n bits -= len << 3;\n hold &= (1 << bits) - 1;\n\n /* update state and return */\n strm.next_in = _in;\n strm.next_out = _out;\n strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n state.hold = hold;\n state.bits = bits;\n return;\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\n\nvar MAXBITS = 15;\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\nvar lbase = [ /* Length codes 257..285 base */\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n];\n\nvar lext = [ /* Length codes 257..285 extra */\n 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n];\n\nvar dbase = [ /* Distance codes 0..29 base */\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577, 0, 0\n];\n\nvar dext = [ /* Distance codes 0..29 extra */\n 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n 23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n 28, 28, 29, 29, 64, 64\n];\n\nmodule.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)\n{\n var bits = opts.bits;\n //here = opts.here; /* table entry for duplication */\n\n var len = 0; /* a code's length in bits */\n var sym = 0; /* index of code symbols */\n var min = 0, max = 0; /* minimum and maximum code lengths */\n var root = 0; /* number of index bits for root table */\n var curr = 0; /* number of index bits for current table */\n var drop = 0; /* code bits to drop for sub-table */\n var left = 0; /* number of prefix codes available */\n var used = 0; /* code entries in table used */\n var huff = 0; /* Huffman code */\n var incr; /* for incrementing code, index */\n var fill; /* index for replicating entries */\n var low; /* low bits for current root entry */\n var mask; /* mask for low root bits */\n var next; /* next available space in table */\n var base = null; /* base value table to use */\n var base_index = 0;\n// var shoextra; /* extra bits table to use */\n var end; /* use base and extra for symbol > end */\n var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */\n var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */\n var extra = null;\n var extra_index = 0;\n\n var here_bits, here_op, here_val;\n\n /*\n Process a set of code lengths to create a canonical Huffman code. The\n code lengths are lens[0..codes-1]. Each length corresponds to the\n symbols 0..codes-1. The Huffman code is generated by first sorting the\n symbols by length from short to long, and retaining the symbol order\n for codes with equal lengths. Then the code starts with all zero bits\n for the first code of the shortest length, and the codes are integer\n increments for the same length, and zeros are appended as the length\n increases. For the deflate format, these bits are stored backwards\n from their more natural integer increment ordering, and so when the\n decoding tables are built in the large loop below, the integer codes\n are incremented backwards.\n\n This routine assumes, but does not check, that all of the entries in\n lens[] are in the range 0..MAXBITS. The caller must assure this.\n 1..MAXBITS is interpreted as that code length. zero means that that\n symbol does not occur in this code.\n\n The codes are sorted by computing a count of codes for each length,\n creating from that a table of starting indices for each length in the\n sorted table, and then entering the symbols in order in the sorted\n table. The sorted table is work[], with that space being provided by\n the caller.\n\n The length counts are used for other purposes as well, i.e. finding\n the minimum and maximum length codes, determining if there are any\n codes at all, checking for a valid set of lengths, and looking ahead\n at length counts to determine sub-table sizes when building the\n decoding tables.\n */\n\n /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n for (len = 0; len <= MAXBITS; len++) {\n count[len] = 0;\n }\n for (sym = 0; sym < codes; sym++) {\n count[lens[lens_index + sym]]++;\n }\n\n /* bound code lengths, force root to be within code lengths */\n root = bits;\n for (max = MAXBITS; max >= 1; max--) {\n if (count[max] !== 0) { break; }\n }\n if (root > max) {\n root = max;\n }\n if (max === 0) { /* no symbols to code at all */\n //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */\n //table.bits[opts.table_index] = 1; //here.bits = (var char)1;\n //table.val[opts.table_index++] = 0; //here.val = (var short)0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n //table.op[opts.table_index] = 64;\n //table.bits[opts.table_index] = 1;\n //table.val[opts.table_index++] = 0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n opts.bits = 1;\n return 0; /* no symbols, but wait for decoding to report error */\n }\n for (min = 1; min < max; min++) {\n if (count[min] !== 0) { break; }\n }\n if (root < min) {\n root = min;\n }\n\n /* check for an over-subscribed or incomplete set of lengths */\n left = 1;\n for (len = 1; len <= MAXBITS; len++) {\n left <<= 1;\n left -= count[len];\n if (left < 0) {\n return -1;\n } /* over-subscribed */\n }\n if (left > 0 && (type === CODES || max !== 1)) {\n return -1; /* incomplete set */\n }\n\n /* generate offsets into symbol table for each length for sorting */\n offs[1] = 0;\n for (len = 1; len < MAXBITS; len++) {\n offs[len + 1] = offs[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (sym = 0; sym < codes; sym++) {\n if (lens[lens_index + sym] !== 0) {\n work[offs[lens[lens_index + sym]]++] = sym;\n }\n }\n\n /*\n Create and fill in decoding tables. In this loop, the table being\n filled is at next and has curr index bits. The code being used is huff\n with length len. That code is converted to an index by dropping drop\n bits off of the bottom. For codes where len is less than drop + curr,\n those top drop + curr - len bits are incremented through all values to\n fill the table with replicated entries.\n\n root is the number of index bits for the root table. When len exceeds\n root, sub-tables are created pointed to by the root entry with an index\n of the low root bits of huff. This is saved in low to check for when a\n new sub-table should be started. drop is zero when the root table is\n being filled, and drop is root when sub-tables are being filled.\n\n When a new sub-table is needed, it is necessary to look ahead in the\n code lengths to determine what size sub-table is needed. The length\n counts are used for this, and so count[] is decremented as codes are\n entered in the tables.\n\n used keeps track of how many table entries have been allocated from the\n provided *table space. It is checked for LENS and DIST tables against\n the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n the initial root table size constants. See the comments in inftrees.h\n for more information.\n\n sym increments through all symbols, and the loop terminates when\n all codes of length max, i.e. all codes, have been processed. This\n routine permits incomplete codes, so another loop after this one fills\n in the rest of the decoding tables with invalid code markers.\n */\n\n /* set up for code type */\n // poor man optimization - use if-else instead of switch,\n // to avoid deopts in old v8\n if (type === CODES) {\n base = extra = work; /* dummy value--not used */\n end = 19;\n\n } else if (type === LENS) {\n base = lbase;\n base_index -= 257;\n extra = lext;\n extra_index -= 257;\n end = 256;\n\n } else { /* DISTS */\n base = dbase;\n extra = dext;\n end = -1;\n }\n\n /* initialize opts for loop */\n huff = 0; /* starting code */\n sym = 0; /* starting code symbol */\n len = min; /* starting code length */\n next = table_index; /* current table to fill in */\n curr = root; /* current table index bits */\n drop = 0; /* current bits to drop from code for index */\n low = -1; /* trigger new sub-table when len > root */\n used = 1 << root; /* use root table entries */\n mask = used - 1; /* mask for comparing low */\n\n /* check available table space */\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* process all codes and make table entries */\n for (;;) {\n /* create table entry */\n here_bits = len - drop;\n if (work[sym] < end) {\n here_op = 0;\n here_val = work[sym];\n }\n else if (work[sym] > end) {\n here_op = extra[extra_index + work[sym]];\n here_val = base[base_index + work[sym]];\n }\n else {\n here_op = 32 + 64; /* end of block */\n here_val = 0;\n }\n\n /* replicate for those indices with low len bits equal to huff */\n incr = 1 << (len - drop);\n fill = 1 << curr;\n min = fill; /* save offset to next table */\n do {\n fill -= incr;\n table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n } while (fill !== 0);\n\n /* backwards increment the len-bit code huff */\n incr = 1 << (len - 1);\n while (huff & incr) {\n incr >>= 1;\n }\n if (incr !== 0) {\n huff &= incr - 1;\n huff += incr;\n } else {\n huff = 0;\n }\n\n /* go to next symbol, update count, len */\n sym++;\n if (--count[len] === 0) {\n if (len === max) { break; }\n len = lens[lens_index + work[sym]];\n }\n\n /* create new sub-table if needed */\n if (len > root && (huff & mask) !== low) {\n /* if first time, transition to sub-tables */\n if (drop === 0) {\n drop = root;\n }\n\n /* increment past last table */\n next += min; /* here min is 1 << curr */\n\n /* determine length of next table */\n curr = len - drop;\n left = 1 << curr;\n while (curr + drop < max) {\n left -= count[curr + drop];\n if (left <= 0) { break; }\n curr++;\n left <<= 1;\n }\n\n /* check for enough space */\n used += 1 << curr;\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* point entry in root table to sub-table */\n low = huff & mask;\n /*table.op[low] = curr;\n table.bits[low] = root;\n table.val[low] = next - opts.table_index;*/\n table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n }\n }\n\n /* fill in remaining table entry if code is incomplete (guaranteed to have\n at most one remaining entry, since if the code is incomplete, the\n maximum code length that was allowed to get this far is one bit) */\n if (huff !== 0) {\n //table.op[next + huff] = 64; /* invalid code marker */\n //table.bits[next + huff] = len - drop;\n //table.val[next + huff] = 0;\n table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n }\n\n /* set return parameters */\n //opts.table_index += used;\n opts.bits = root;\n return 0;\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\nvar adler32 = require('./adler32');\nvar crc32 = require('./crc32');\nvar inflate_fast = require('./inffast');\nvar inflate_table = require('./inftrees');\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\n//var Z_NO_FLUSH = 0;\n//var Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\n//var Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\nvar Z_TREES = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\nvar Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\nvar Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nvar HEAD = 1; /* i: waiting for magic header */\nvar FLAGS = 2; /* i: waiting for method and flags (gzip) */\nvar TIME = 3; /* i: waiting for modification time (gzip) */\nvar OS = 4; /* i: waiting for extra flags and operating system (gzip) */\nvar EXLEN = 5; /* i: waiting for extra length (gzip) */\nvar EXTRA = 6; /* i: waiting for extra bytes (gzip) */\nvar NAME = 7; /* i: waiting for end of file name (gzip) */\nvar COMMENT = 8; /* i: waiting for end of comment (gzip) */\nvar HCRC = 9; /* i: waiting for header crc (gzip) */\nvar DICTID = 10; /* i: waiting for dictionary check value */\nvar DICT = 11; /* waiting for inflateSetDictionary() call */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\nvar TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */\nvar STORED = 14; /* i: waiting for stored size (length and complement) */\nvar COPY_ = 15; /* i/o: same as COPY below, but only first time in */\nvar COPY = 16; /* i/o: waiting for input or output to copy stored block */\nvar TABLE = 17; /* i: waiting for dynamic block table lengths */\nvar LENLENS = 18; /* i: waiting for code length code lengths */\nvar CODELENS = 19; /* i: waiting for length/lit and distance code lengths */\nvar LEN_ = 20; /* i: same as LEN below, but only first time in */\nvar LEN = 21; /* i: waiting for length/lit/eob code */\nvar LENEXT = 22; /* i: waiting for length extra bits */\nvar DIST = 23; /* i: waiting for distance code */\nvar DISTEXT = 24; /* i: waiting for distance extra bits */\nvar MATCH = 25; /* o: waiting for output space to copy string */\nvar LIT = 26; /* o: waiting for output space to write literal */\nvar CHECK = 27; /* i: waiting for 32-bit check value */\nvar LENGTH = 28; /* i: waiting for 32-bit length (gzip) */\nvar DONE = 29; /* finished check, done -- remain here until reset */\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar MEM = 31; /* got an inflate() memory error -- remain here until reset */\nvar SYNC = 32; /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_WBITS = MAX_WBITS;\n\n\nfunction zswap32(q) {\n return (((q >>> 24) & 0xff) +\n ((q >>> 8) & 0xff00) +\n ((q & 0xff00) << 8) +\n ((q & 0xff) << 24));\n}\n\n\nfunction InflateState() {\n this.mode = 0; /* current inflate mode */\n this.last = false; /* true if processing last block */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.havedict = false; /* true if dictionary provided */\n this.flags = 0; /* gzip header method and flags (0 if zlib) */\n this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */\n this.check = 0; /* protected copy of check value */\n this.total = 0; /* protected copy of output count */\n // TODO: may be {}\n this.head = null; /* where to save gzip header information */\n\n /* sliding window */\n this.wbits = 0; /* log base 2 of requested window size */\n this.wsize = 0; /* window size or zero if not using window */\n this.whave = 0; /* valid bytes in the window */\n this.wnext = 0; /* window write index */\n this.window = null; /* allocated sliding window, if needed */\n\n /* bit accumulator */\n this.hold = 0; /* input bit accumulator */\n this.bits = 0; /* number of bits in \"in\" */\n\n /* for string and stored block copying */\n this.length = 0; /* literal or length of data to copy */\n this.offset = 0; /* distance back to copy string from */\n\n /* for table and code decoding */\n this.extra = 0; /* extra bits needed */\n\n /* fixed and dynamic code tables */\n this.lencode = null; /* starting table for length/literal codes */\n this.distcode = null; /* starting table for distance codes */\n this.lenbits = 0; /* index bits for lencode */\n this.distbits = 0; /* index bits for distcode */\n\n /* dynamic table building */\n this.ncode = 0; /* number of code length code lengths */\n this.nlen = 0; /* number of length code lengths */\n this.ndist = 0; /* number of distance code lengths */\n this.have = 0; /* number of code lengths in lens[] */\n this.next = null; /* next available space in codes[] */\n\n this.lens = new utils.Buf16(320); /* temporary storage for code lengths */\n this.work = new utils.Buf16(288); /* work area for code table building */\n\n /*\n because we don't have pointers in js, we use lencode and distcode directly\n as buffers so we don't need codes\n */\n //this.codes = new utils.Buf32(ENOUGH); /* space for code tables */\n this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */\n this.distdyn = null; /* dynamic table for distance codes (JS specific) */\n this.sane = 0; /* if false, allow invalid distance too far */\n this.back = 0; /* bits back of last unprocessed length/lit */\n this.was = 0; /* initial length of match */\n}\n\nfunction inflateResetKeep(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n strm.total_in = strm.total_out = state.total = 0;\n strm.msg = ''; /*Z_NULL*/\n if (state.wrap) { /* to support ill-conceived Java test suite */\n strm.adler = state.wrap & 1;\n }\n state.mode = HEAD;\n state.last = 0;\n state.havedict = 0;\n state.dmax = 32768;\n state.head = null/*Z_NULL*/;\n state.hold = 0;\n state.bits = 0;\n //state.lencode = state.distcode = state.next = state.codes;\n state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);\n state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);\n\n state.sane = 1;\n state.back = -1;\n //Tracev((stderr, \"inflate: reset\\n\"));\n return Z_OK;\n}\n\nfunction inflateReset(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n state.wsize = 0;\n state.whave = 0;\n state.wnext = 0;\n return inflateResetKeep(strm);\n\n}\n\nfunction inflateReset2(strm, windowBits) {\n var wrap;\n var state;\n\n /* get the state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n /* extract wrap request from windowBits parameter */\n if (windowBits < 0) {\n wrap = 0;\n windowBits = -windowBits;\n }\n else {\n wrap = (windowBits >> 4) + 1;\n if (windowBits < 48) {\n windowBits &= 15;\n }\n }\n\n /* set number of window bits, free window if different */\n if (windowBits && (windowBits < 8 || windowBits > 15)) {\n return Z_STREAM_ERROR;\n }\n if (state.window !== null && state.wbits !== windowBits) {\n state.window = null;\n }\n\n /* update state and reset the rest of it */\n state.wrap = wrap;\n state.wbits = windowBits;\n return inflateReset(strm);\n}\n\nfunction inflateInit2(strm, windowBits) {\n var ret;\n var state;\n\n if (!strm) { return Z_STREAM_ERROR; }\n //strm.msg = Z_NULL; /* in case we return an error */\n\n state = new InflateState();\n\n //if (state === Z_NULL) return Z_MEM_ERROR;\n //Tracev((stderr, \"inflate: allocated\\n\"));\n strm.state = state;\n state.window = null/*Z_NULL*/;\n ret = inflateReset2(strm, windowBits);\n if (ret !== Z_OK) {\n strm.state = null/*Z_NULL*/;\n }\n return ret;\n}\n\nfunction inflateInit(strm) {\n return inflateInit2(strm, DEF_WBITS);\n}\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding. Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter. This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time. However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nvar virgin = true;\n\nvar lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\nfunction fixedtables(state) {\n /* build fixed huffman tables if first call (may not be thread safe) */\n if (virgin) {\n var sym;\n\n lenfix = new utils.Buf32(512);\n distfix = new utils.Buf32(32);\n\n /* literal/length table */\n sym = 0;\n while (sym < 144) { state.lens[sym++] = 8; }\n while (sym < 256) { state.lens[sym++] = 9; }\n while (sym < 280) { state.lens[sym++] = 7; }\n while (sym < 288) { state.lens[sym++] = 8; }\n\n inflate_table(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 });\n\n /* distance table */\n sym = 0;\n while (sym < 32) { state.lens[sym++] = 5; }\n\n inflate_table(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 });\n\n /* do this just once */\n virgin = false;\n }\n\n state.lencode = lenfix;\n state.lenbits = 9;\n state.distcode = distfix;\n state.distbits = 5;\n}\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning. If window does not exist yet, create it. This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nfunction updatewindow(strm, src, end, copy) {\n var dist;\n var state = strm.state;\n\n /* if it hasn't been done already, allocate space for the window */\n if (state.window === null) {\n state.wsize = 1 << state.wbits;\n state.wnext = 0;\n state.whave = 0;\n\n state.window = new utils.Buf8(state.wsize);\n }\n\n /* copy state->wsize or less output bytes into the circular window */\n if (copy >= state.wsize) {\n utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0);\n state.wnext = 0;\n state.whave = state.wsize;\n }\n else {\n dist = state.wsize - state.wnext;\n if (dist > copy) {\n dist = copy;\n }\n //zmemcpy(state->window + state->wnext, end - copy, dist);\n utils.arraySet(state.window, src, end - copy, dist, state.wnext);\n copy -= dist;\n if (copy) {\n //zmemcpy(state->window, end - copy, copy);\n utils.arraySet(state.window, src, end - copy, copy, 0);\n state.wnext = copy;\n state.whave = state.wsize;\n }\n else {\n state.wnext += dist;\n if (state.wnext === state.wsize) { state.wnext = 0; }\n if (state.whave < state.wsize) { state.whave += dist; }\n }\n }\n return 0;\n}\n\nfunction inflate(strm, flush) {\n var state;\n var input, output; // input/output buffers\n var next; /* next input INDEX */\n var put; /* next output INDEX */\n var have, left; /* available input and output */\n var hold; /* bit buffer */\n var bits; /* bits in bit buffer */\n var _in, _out; /* save starting available input and output */\n var copy; /* number of stored or match bytes to copy */\n var from; /* where to copy match bytes from */\n var from_source;\n var here = 0; /* current decoding table entry */\n var here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n //var last; /* parent table entry */\n var last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n var len; /* length to copy for repeats, bits to drop */\n var ret; /* return code */\n var hbuf = new utils.Buf8(4); /* buffer for gzip header crc calculation */\n var opts;\n\n var n; // temporary var for NEED_BITS\n\n var order = /* permutation of code lengths */\n [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n\n if (!strm || !strm.state || !strm.output ||\n (!strm.input && strm.avail_in !== 0)) {\n return Z_STREAM_ERROR;\n }\n\n state = strm.state;\n if (state.mode === TYPE) { state.mode = TYPEDO; } /* skip check */\n\n\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n _in = have;\n _out = left;\n ret = Z_OK;\n\n inf_leave: // goto emulation\n for (;;) {\n switch (state.mode) {\n case HEAD:\n if (state.wrap === 0) {\n state.mode = TYPEDO;\n break;\n }\n //=== NEEDBITS(16);\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */\n state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = FLAGS;\n break;\n }\n state.flags = 0; /* expect zlib header */\n if (state.head) {\n state.head.done = false;\n }\n if (!(state.wrap & 1) || /* check if zlib header allowed */\n (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n strm.msg = 'incorrect header check';\n state.mode = BAD;\n break;\n }\n if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n len = (hold & 0x0f)/*BITS(4)*/ + 8;\n if (state.wbits === 0) {\n state.wbits = len;\n }\n else if (len > state.wbits) {\n strm.msg = 'invalid window size';\n state.mode = BAD;\n break;\n }\n state.dmax = 1 << len;\n //Tracev((stderr, \"inflate: zlib header ok\\n\"));\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = hold & 0x200 ? DICTID : TYPE;\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n break;\n case FLAGS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.flags = hold;\n if ((state.flags & 0xff) !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n if (state.flags & 0xe000) {\n strm.msg = 'unknown header flags set';\n state.mode = BAD;\n break;\n }\n if (state.head) {\n state.head.text = ((hold >> 8) & 1);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = TIME;\n /* falls through */\n case TIME:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.time = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC4(state.check, hold)\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n hbuf[2] = (hold >>> 16) & 0xff;\n hbuf[3] = (hold >>> 24) & 0xff;\n state.check = crc32(state.check, hbuf, 4, 0);\n //===\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = OS;\n /* falls through */\n case OS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.xflags = (hold & 0xff);\n state.head.os = (hold >> 8);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = EXLEN;\n /* falls through */\n case EXLEN:\n if (state.flags & 0x0400) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length = hold;\n if (state.head) {\n state.head.extra_len = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n else if (state.head) {\n state.head.extra = null/*Z_NULL*/;\n }\n state.mode = EXTRA;\n /* falls through */\n case EXTRA:\n if (state.flags & 0x0400) {\n copy = state.length;\n if (copy > have) { copy = have; }\n if (copy) {\n if (state.head) {\n len = state.head.extra_len - state.length;\n if (!state.head.extra) {\n // Use untyped array for more convenient processing later\n state.head.extra = new Array(state.head.extra_len);\n }\n utils.arraySet(\n state.head.extra,\n input,\n next,\n // extra field is limited to 65536 bytes\n // - no need for additional size check\n copy,\n /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n len\n );\n //zmemcpy(state.head.extra + len, next,\n // len + copy > state.head.extra_max ?\n // state.head.extra_max - len : copy);\n }\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n state.length -= copy;\n }\n if (state.length) { break inf_leave; }\n }\n state.length = 0;\n state.mode = NAME;\n /* falls through */\n case NAME:\n if (state.flags & 0x0800) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n // TODO: 2 or 1 bytes?\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.name_max*/)) {\n state.head.name += String.fromCharCode(len);\n }\n } while (len && copy < have);\n\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.name = null;\n }\n state.length = 0;\n state.mode = COMMENT;\n /* falls through */\n case COMMENT:\n if (state.flags & 0x1000) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.comm_max*/)) {\n state.head.comment += String.fromCharCode(len);\n }\n } while (len && copy < have);\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.comment = null;\n }\n state.mode = HCRC;\n /* falls through */\n case HCRC:\n if (state.flags & 0x0200) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.check & 0xffff)) {\n strm.msg = 'header crc mismatch';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n if (state.head) {\n state.head.hcrc = ((state.flags >> 9) & 1);\n state.head.done = true;\n }\n strm.adler = state.check = 0;\n state.mode = TYPE;\n break;\n case DICTID:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n strm.adler = state.check = zswap32(hold);\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = DICT;\n /* falls through */\n case DICT:\n if (state.havedict === 0) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n return Z_NEED_DICT;\n }\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = TYPE;\n /* falls through */\n case TYPE:\n if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case TYPEDO:\n if (state.last) {\n //--- BYTEBITS() ---//\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n state.mode = CHECK;\n break;\n }\n //=== NEEDBITS(3); */\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.last = (hold & 0x01)/*BITS(1)*/;\n //--- DROPBITS(1) ---//\n hold >>>= 1;\n bits -= 1;\n //---//\n\n switch ((hold & 0x03)/*BITS(2)*/) {\n case 0: /* stored block */\n //Tracev((stderr, \"inflate: stored block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = STORED;\n break;\n case 1: /* fixed block */\n fixedtables(state);\n //Tracev((stderr, \"inflate: fixed codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = LEN_; /* decode codes */\n if (flush === Z_TREES) {\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break inf_leave;\n }\n break;\n case 2: /* dynamic block */\n //Tracev((stderr, \"inflate: dynamic codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = TABLE;\n break;\n case 3:\n strm.msg = 'invalid block type';\n state.mode = BAD;\n }\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break;\n case STORED:\n //--- BYTEBITS() ---// /* go to byte boundary */\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n strm.msg = 'invalid stored block lengths';\n state.mode = BAD;\n break;\n }\n state.length = hold & 0xffff;\n //Tracev((stderr, \"inflate: stored length %u\\n\",\n // state.length));\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = COPY_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case COPY_:\n state.mode = COPY;\n /* falls through */\n case COPY:\n copy = state.length;\n if (copy) {\n if (copy > have) { copy = have; }\n if (copy > left) { copy = left; }\n if (copy === 0) { break inf_leave; }\n //--- zmemcpy(put, next, copy); ---\n utils.arraySet(output, input, next, copy, put);\n //---//\n have -= copy;\n next += copy;\n left -= copy;\n put += copy;\n state.length -= copy;\n break;\n }\n //Tracev((stderr, \"inflate: stored end\\n\"));\n state.mode = TYPE;\n break;\n case TABLE:\n //=== NEEDBITS(14); */\n while (bits < 14) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n if (state.nlen > 286 || state.ndist > 30) {\n strm.msg = 'too many length or distance symbols';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracev((stderr, \"inflate: table sizes ok\\n\"));\n state.have = 0;\n state.mode = LENLENS;\n /* falls through */\n case LENLENS:\n while (state.have < state.ncode) {\n //=== NEEDBITS(3);\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n while (state.have < 19) {\n state.lens[order[state.have++]] = 0;\n }\n // We have separate tables & no pointers. 2 commented lines below not needed.\n //state.next = state.codes;\n //state.lencode = state.next;\n // Switch to use dynamic table\n state.lencode = state.lendyn;\n state.lenbits = 7;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n state.lenbits = opts.bits;\n\n if (ret) {\n strm.msg = 'invalid code lengths set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, \"inflate: code lengths ok\\n\"));\n state.have = 0;\n state.mode = CODELENS;\n /* falls through */\n case CODELENS:\n while (state.have < state.nlen + state.ndist) {\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_val < 16) {\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.lens[state.have++] = here_val;\n }\n else {\n if (here_val === 16) {\n //=== NEEDBITS(here.bits + 2);\n n = here_bits + 2;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n if (state.have === 0) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n len = state.lens[state.have - 1];\n copy = 3 + (hold & 0x03);//BITS(2);\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n }\n else if (here_val === 17) {\n //=== NEEDBITS(here.bits + 3);\n n = here_bits + 3;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 3 + (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n else {\n //=== NEEDBITS(here.bits + 7);\n n = here_bits + 7;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 11 + (hold & 0x7f);//BITS(7);\n //--- DROPBITS(7) ---//\n hold >>>= 7;\n bits -= 7;\n //---//\n }\n if (state.have + copy > state.nlen + state.ndist) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n while (copy--) {\n state.lens[state.have++] = len;\n }\n }\n }\n\n /* handle error breaks in while */\n if (state.mode === BAD) { break; }\n\n /* check for end-of-block code (better have one) */\n if (state.lens[256] === 0) {\n strm.msg = 'invalid code -- missing end-of-block';\n state.mode = BAD;\n break;\n }\n\n /* build code tables -- note: do not change the lenbits or distbits\n values here (9 and 6) without reading the comments in inftrees.h\n concerning the ENOUGH constants, which depend on those values */\n state.lenbits = 9;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.lenbits = opts.bits;\n // state.lencode = state.next;\n\n if (ret) {\n strm.msg = 'invalid literal/lengths set';\n state.mode = BAD;\n break;\n }\n\n state.distbits = 6;\n //state.distcode.copy(state.codes);\n // Switch to use dynamic table\n state.distcode = state.distdyn;\n opts = { bits: state.distbits };\n ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.distbits = opts.bits;\n // state.distcode = state.next;\n\n if (ret) {\n strm.msg = 'invalid distances set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, 'inflate: codes ok\\n'));\n state.mode = LEN_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case LEN_:\n state.mode = LEN;\n /* falls through */\n case LEN:\n if (have >= 6 && left >= 258) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n inflate_fast(strm, _out);\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n if (state.mode === TYPE) {\n state.back = -1;\n }\n break;\n }\n state.back = 0;\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if (here_bits <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_op && (here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.lencode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n state.length = here_val;\n if (here_op === 0) {\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n state.mode = LIT;\n break;\n }\n if (here_op & 32) {\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.back = -1;\n state.mode = TYPE;\n break;\n }\n if (here_op & 64) {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break;\n }\n state.extra = here_op & 15;\n state.mode = LENEXT;\n /* falls through */\n case LENEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", state.length));\n state.was = state.length;\n state.mode = DIST;\n /* falls through */\n case DIST:\n for (;;) {\n here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if ((here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.distcode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n if (here_op & 64) {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break;\n }\n state.offset = here_val;\n state.extra = (here_op) & 15;\n state.mode = DISTEXT;\n /* falls through */\n case DISTEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n//#ifdef INFLATE_STRICT\n if (state.offset > state.dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracevv((stderr, \"inflate: distance %u\\n\", state.offset));\n state.mode = MATCH;\n /* falls through */\n case MATCH:\n if (left === 0) { break inf_leave; }\n copy = _out - left;\n if (state.offset > copy) { /* copy from window */\n copy = state.offset - copy;\n if (copy > state.whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// Trace((stderr, \"inflate.c too far\\n\"));\n// copy -= state.whave;\n// if (copy > state.length) { copy = state.length; }\n// if (copy > left) { copy = left; }\n// left -= copy;\n// state.length -= copy;\n// do {\n// output[put++] = 0;\n// } while (--copy);\n// if (state.length === 0) { state.mode = LEN; }\n// break;\n//#endif\n }\n if (copy > state.wnext) {\n copy -= state.wnext;\n from = state.wsize - copy;\n }\n else {\n from = state.wnext - copy;\n }\n if (copy > state.length) { copy = state.length; }\n from_source = state.window;\n }\n else { /* copy from output */\n from_source = output;\n from = put - state.offset;\n copy = state.length;\n }\n if (copy > left) { copy = left; }\n left -= copy;\n state.length -= copy;\n do {\n output[put++] = from_source[from++];\n } while (--copy);\n if (state.length === 0) { state.mode = LEN; }\n break;\n case LIT:\n if (left === 0) { break inf_leave; }\n output[put++] = state.length;\n left--;\n state.mode = LEN;\n break;\n case CHECK:\n if (state.wrap) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n // Use '|' instead of '+' to make sure that result is signed\n hold |= input[next++] << bits;\n bits += 8;\n }\n //===//\n _out -= left;\n strm.total_out += _out;\n state.total += _out;\n if (_out) {\n strm.adler = state.check =\n /*UPDATE(state.check, put - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));\n\n }\n _out = left;\n // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n if ((state.flags ? hold : zswap32(hold)) !== state.check) {\n strm.msg = 'incorrect data check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: check matches trailer\\n\"));\n }\n state.mode = LENGTH;\n /* falls through */\n case LENGTH:\n if (state.wrap && state.flags) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.total & 0xffffffff)) {\n strm.msg = 'incorrect length check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: length matches trailer\\n\"));\n }\n state.mode = DONE;\n /* falls through */\n case DONE:\n ret = Z_STREAM_END;\n break inf_leave;\n case BAD:\n ret = Z_DATA_ERROR;\n break inf_leave;\n case MEM:\n return Z_MEM_ERROR;\n case SYNC:\n /* falls through */\n default:\n return Z_STREAM_ERROR;\n }\n }\n\n // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n /*\n Return from inflate(), updating the total counts and the check value.\n If there was no progress during the inflate() call, return a buffer\n error. Call updatewindow() to create and/or update the window state.\n Note: a memory error from inflate() is non-recoverable.\n */\n\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n\n if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&\n (state.mode < CHECK || flush !== Z_FINISH))) {\n if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n }\n _in -= strm.avail_in;\n _out -= strm.avail_out;\n strm.total_in += _in;\n strm.total_out += _out;\n state.total += _out;\n if (state.wrap && _out) {\n strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));\n }\n strm.data_type = state.bits + (state.last ? 64 : 0) +\n (state.mode === TYPE ? 128 : 0) +\n (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {\n ret = Z_BUF_ERROR;\n }\n return ret;\n}\n\nfunction inflateEnd(strm) {\n\n if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {\n return Z_STREAM_ERROR;\n }\n\n var state = strm.state;\n if (state.window) {\n state.window = null;\n }\n strm.state = null;\n return Z_OK;\n}\n\nfunction inflateGetHeader(strm, head) {\n var state;\n\n /* check state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }\n\n /* save header structure */\n state.head = head;\n head.done = false;\n return Z_OK;\n}\n\nfunction inflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var state;\n var dictid;\n var ret;\n\n /* check state */\n if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n if (state.wrap !== 0 && state.mode !== DICT) {\n return Z_STREAM_ERROR;\n }\n\n /* check for correct dictionary identifier */\n if (state.mode === DICT) {\n dictid = 1; /* adler32(0, null, 0)*/\n /* dictid = adler32(dictid, dictionary, dictLength); */\n dictid = adler32(dictid, dictionary, dictLength, 0);\n if (dictid !== state.check) {\n return Z_DATA_ERROR;\n }\n }\n /* copy dictionary to window using updatewindow(), which will amend the\n existing dictionary if appropriate */\n ret = updatewindow(strm, dictionary, dictLength, dictLength);\n if (ret) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n state.havedict = 1;\n // Tracev((stderr, \"inflate: dictionary set\\n\"));\n return Z_OK;\n}\n\nexports.inflateReset = inflateReset;\nexports.inflateReset2 = inflateReset2;\nexports.inflateResetKeep = inflateResetKeep;\nexports.inflateInit = inflateInit;\nexports.inflateInit2 = inflateInit2;\nexports.inflate = inflate;\nexports.inflateEnd = inflateEnd;\nexports.inflateGetHeader = inflateGetHeader;\nexports.inflateSetDictionary = inflateSetDictionary;\nexports.inflateInfo = 'pako inflate (from Nodeca project)';\n\n/* Not implemented\nexports.inflateCopy = inflateCopy;\nexports.inflateGetDictionary = inflateGetDictionary;\nexports.inflateMark = inflateMark;\nexports.inflatePrime = inflatePrime;\nexports.inflateSync = inflateSync;\nexports.inflateSyncPoint = inflateSyncPoint;\nexports.inflateUndermine = inflateUndermine;\n*/\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n\n /* Allowed flush values; see deflate() and inflate() below for details */\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_TREES: 6,\n\n /* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n //Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n //Z_VERSION_ERROR: -6,\n\n /* compression levels */\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n\n\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n\n /* Possible values of the data_type field (though see inflate()) */\n Z_BINARY: 0,\n Z_TEXT: 1,\n //Z_ASCII: 1, // = Z_TEXT (deprecated)\n Z_UNKNOWN: 2,\n\n /* The deflate compression method */\n Z_DEFLATED: 8\n //Z_NULL: null // Use -1 or null inline, depending on var type\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction GZheader() {\n /* true if compressed data believed to be text */\n this.text = 0;\n /* modification time */\n this.time = 0;\n /* extra flags (not used when writing a gzip file) */\n this.xflags = 0;\n /* operating system */\n this.os = 0;\n /* pointer to extra field or Z_NULL if none */\n this.extra = null;\n /* extra field length (valid if extra != Z_NULL) */\n this.extra_len = 0; // Actually, we don't need it in JS,\n // but leave for few code modifications\n\n //\n // Setup limits is not necessary because in js we should not preallocate memory\n // for inflate use constant limit in 65536 bytes\n //\n\n /* space at extra (only when reading header) */\n // this.extra_max = 0;\n /* pointer to zero-terminated file name or Z_NULL */\n this.name = '';\n /* space at name (only when reading header) */\n // this.name_max = 0;\n /* pointer to zero-terminated comment or Z_NULL */\n this.comment = '';\n /* space at comment (only when reading header) */\n // this.comm_max = 0;\n /* true if there was or will be a header crc */\n this.hcrc = 0;\n /* true when done reading gzip header (not used when writing a gzip file) */\n this.done = false;\n}\n\nmodule.exports = GZheader;\n","'use strict';\n\n\nvar zlib_inflate = require('./zlib/inflate');\nvar utils = require('./utils/common');\nvar strings = require('./utils/strings');\nvar c = require('./zlib/constants');\nvar msg = require('./zlib/messages');\nvar ZStream = require('./zlib/zstream');\nvar GZheader = require('./zlib/gzheader');\n\nvar toString = Object.prototype.toString;\n\n/**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n/* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overridden.\n **/\n\n/**\n * Inflate.result -> Uint8Array|Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Inflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n/**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n/**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true); // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\nfunction Inflate(options) {\n if (!(this instanceof Inflate)) return new Inflate(options);\n\n this.options = utils.assign({\n chunkSize: 16384,\n windowBits: 0,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n // Force window size for `raw` data, if not set directly,\n // because we have no header for autodetect.\n if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n opt.windowBits = -opt.windowBits;\n if (opt.windowBits === 0) { opt.windowBits = -15; }\n }\n\n // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n !(options && options.windowBits)) {\n opt.windowBits += 32;\n }\n\n // Gzip header has no info about windows size, we can do autodetect only\n // for deflate. So, if window size not set, force it to max when gzip possible\n if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n // bit 3 (16) -> gzipped data\n // bit 4 (32) -> autodetect gzip/deflate\n if ((opt.windowBits & 15) === 0) {\n opt.windowBits |= 15;\n }\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n var status = zlib_inflate.inflateInit2(\n this.strm,\n opt.windowBits\n );\n\n if (status !== c.Z_OK) {\n throw new Error(msg[status]);\n }\n\n this.header = new GZheader();\n\n zlib_inflate.inflateGetHeader(this.strm, this.header);\n\n // Setup dictionary\n if (opt.dictionary) {\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n opt.dictionary = strings.string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n opt.dictionary = new Uint8Array(opt.dictionary);\n }\n if (opt.raw) { //In raw mode we need to set the dictionary early\n status = zlib_inflate.inflateSetDictionary(this.strm, opt.dictionary);\n if (status !== c.Z_OK) {\n throw new Error(msg[status]);\n }\n }\n }\n}\n\n/**\n * Inflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Inflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the decompression context.\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nInflate.prototype.push = function (data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var dictionary = this.options.dictionary;\n var status, _mode;\n var next_out_utf8, tail, utf8str;\n\n // Flag to properly process Z_BUF_ERROR on testing inflate call\n // when we check that all output data was flushed.\n var allowBufError = false;\n\n if (this.ended) { return false; }\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? c.Z_FINISH : c.Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // Only binary strings can be decompressed on practice\n strm.input = strings.binstring2buf(data);\n } else if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = new utils.Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n status = zlib_inflate.inflate(strm, c.Z_NO_FLUSH); /* no bad return value */\n\n if (status === c.Z_NEED_DICT && dictionary) {\n status = zlib_inflate.inflateSetDictionary(this.strm, dictionary);\n }\n\n if (status === c.Z_BUF_ERROR && allowBufError === true) {\n status = c.Z_OK;\n allowBufError = false;\n }\n\n if (status !== c.Z_STREAM_END && status !== c.Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n\n if (strm.next_out) {\n if (strm.avail_out === 0 || status === c.Z_STREAM_END || (strm.avail_in === 0 && (_mode === c.Z_FINISH || _mode === c.Z_SYNC_FLUSH))) {\n\n if (this.options.to === 'string') {\n\n next_out_utf8 = strings.utf8border(strm.output, strm.next_out);\n\n tail = strm.next_out - next_out_utf8;\n utf8str = strings.buf2string(strm.output, next_out_utf8);\n\n // move tail\n strm.next_out = tail;\n strm.avail_out = chunkSize - tail;\n if (tail) { utils.arraySet(strm.output, strm.output, next_out_utf8, tail, 0); }\n\n this.onData(utf8str);\n\n } else {\n this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n }\n }\n }\n\n // When no more input data, we should check that internal inflate buffers\n // are flushed. The only way to do it when avail_out = 0 - run one more\n // inflate pass. But if output data not exists, inflate return Z_BUF_ERROR.\n // Here we set flag to process this error properly.\n //\n // NOTE. Deflate does not return error in this case and does not needs such\n // logic.\n if (strm.avail_in === 0 && strm.avail_out === 0) {\n allowBufError = true;\n }\n\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== c.Z_STREAM_END);\n\n if (status === c.Z_STREAM_END) {\n _mode = c.Z_FINISH;\n }\n\n // Finalize on the last chunk.\n if (_mode === c.Z_FINISH) {\n status = zlib_inflate.inflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === c.Z_OK;\n }\n\n // callback interim results if Z_SYNC_FLUSH.\n if (_mode === c.Z_SYNC_FLUSH) {\n this.onEnd(c.Z_OK);\n strm.avail_out = 0;\n return true;\n }\n\n return true;\n};\n\n\n/**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nInflate.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called either after you tell inflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nInflate.prototype.onEnd = function (status) {\n // On success - join\n if (status === c.Z_OK) {\n if (this.options.to === 'string') {\n // Glue & convert here, until we teach pako to send\n // utf8 aligned strings to onData\n this.result = this.chunks.join('');\n } else {\n this.result = utils.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * inflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , input = pako.deflate([1,2,3,4,5,6,7,8,9])\n * , output;\n *\n * try {\n * output = pako.inflate(input);\n * } catch (err)\n * console.log(err);\n * }\n * ```\n **/\nfunction inflate(input, options) {\n var inflator = new Inflate(options);\n\n inflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (inflator.err) { throw inflator.msg || msg[inflator.err]; }\n\n return inflator.result;\n}\n\n\n/**\n * inflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction inflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return inflate(input, options);\n}\n\n\n/**\n * ungzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\n\n\nexports.Inflate = Inflate;\nexports.inflate = inflate;\nexports.inflateRaw = inflateRaw;\nexports.ungzip = inflate;\n","// Top level file is just a mixin of submodules & constants\n'use strict';\n\nvar assign = require('./lib/utils/common').assign;\n\nvar deflate = require('./lib/deflate');\nvar inflate = require('./lib/inflate');\nvar constants = require('./lib/zlib/constants');\n\nvar pako = {};\n\nassign(pako, deflate, inflate, constants);\n\nmodule.exports = pako;\n","/*\n * The `chars`, `lookup`, and `decodeFromBase64` members of this file are\n * licensed under the following:\n *\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n *\n */\nimport pako from 'pako';\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nexport var decodeFromBase64 = function (base64) {\n var bufferLength = base64.length * 0.75;\n var len = base64.length;\n var i;\n var p = 0;\n var encoded1;\n var encoded2;\n var encoded3;\n var encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var bytes = new Uint8Array(bufferLength);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return bytes;\n};\nvar arrayToString = function (array) {\n var str = '';\n for (var i = 0; i < array.length; i++) {\n str += String.fromCharCode(array[i]);\n }\n return str;\n};\nexport var decompressJson = function (compressedJson) {\n return arrayToString(pako.inflate(decodeFromBase64(compressedJson)));\n};\nexport var padStart = function (value, length, padChar) {\n var padding = '';\n for (var idx = 0, len = length - value.length; idx < len; idx++) {\n padding += padChar;\n }\n return padding + value;\n};\n","import { decompressJson } from './utils';\nimport CourierBoldCompressed from './Courier-Bold.compressed.json';\nimport CourierBoldObliqueCompressed from './Courier-BoldOblique.compressed.json';\nimport CourierObliqueCompressed from './Courier-Oblique.compressed.json';\nimport CourierCompressed from './Courier.compressed.json';\nimport HelveticaBoldCompressed from './Helvetica-Bold.compressed.json';\nimport HelveticaBoldObliqueCompressed from './Helvetica-BoldOblique.compressed.json';\nimport HelveticaObliqueCompressed from './Helvetica-Oblique.compressed.json';\nimport HelveticaCompressed from './Helvetica.compressed.json';\nimport TimesBoldCompressed from './Times-Bold.compressed.json';\nimport TimesBoldItalicCompressed from './Times-BoldItalic.compressed.json';\nimport TimesItalicCompressed from './Times-Italic.compressed.json';\nimport TimesRomanCompressed from './Times-Roman.compressed.json';\nimport SymbolCompressed from './Symbol.compressed.json';\nimport ZapfDingbatsCompressed from './ZapfDingbats.compressed.json';\n// prettier-ignore\nvar compressedJsonForFontName = {\n 'Courier': CourierCompressed,\n 'Courier-Bold': CourierBoldCompressed,\n 'Courier-Oblique': CourierObliqueCompressed,\n 'Courier-BoldOblique': CourierBoldObliqueCompressed,\n 'Helvetica': HelveticaCompressed,\n 'Helvetica-Bold': HelveticaBoldCompressed,\n 'Helvetica-Oblique': HelveticaObliqueCompressed,\n 'Helvetica-BoldOblique': HelveticaBoldObliqueCompressed,\n 'Times-Roman': TimesRomanCompressed,\n 'Times-Bold': TimesBoldCompressed,\n 'Times-Italic': TimesItalicCompressed,\n 'Times-BoldItalic': TimesBoldItalicCompressed,\n 'Symbol': SymbolCompressed,\n 'ZapfDingbats': ZapfDingbatsCompressed,\n};\nexport var FontNames;\n(function (FontNames) {\n FontNames[\"Courier\"] = \"Courier\";\n FontNames[\"CourierBold\"] = \"Courier-Bold\";\n FontNames[\"CourierOblique\"] = \"Courier-Oblique\";\n FontNames[\"CourierBoldOblique\"] = \"Courier-BoldOblique\";\n FontNames[\"Helvetica\"] = \"Helvetica\";\n FontNames[\"HelveticaBold\"] = \"Helvetica-Bold\";\n FontNames[\"HelveticaOblique\"] = \"Helvetica-Oblique\";\n FontNames[\"HelveticaBoldOblique\"] = \"Helvetica-BoldOblique\";\n FontNames[\"TimesRoman\"] = \"Times-Roman\";\n FontNames[\"TimesRomanBold\"] = \"Times-Bold\";\n FontNames[\"TimesRomanItalic\"] = \"Times-Italic\";\n FontNames[\"TimesRomanBoldItalic\"] = \"Times-BoldItalic\";\n FontNames[\"Symbol\"] = \"Symbol\";\n FontNames[\"ZapfDingbats\"] = \"ZapfDingbats\";\n})(FontNames || (FontNames = {}));\nvar fontCache = {};\nvar Font = /** @class */ (function () {\n function Font() {\n var _this = this;\n this.getWidthOfGlyph = function (glyphName) {\n return _this.CharWidths[glyphName];\n };\n this.getXAxisKerningForPair = function (leftGlyphName, rightGlyphName) {\n return (_this.KernPairXAmounts[leftGlyphName] || {})[rightGlyphName];\n };\n }\n Font.load = function (fontName) {\n var cachedFont = fontCache[fontName];\n if (cachedFont)\n return cachedFont;\n var json = decompressJson(compressedJsonForFontName[fontName]);\n var font = Object.assign(new Font(), JSON.parse(json));\n font.CharWidths = font.CharMetrics.reduce(function (acc, metric) {\n acc[metric.N] = metric.WX;\n return acc;\n }, {});\n font.KernPairXAmounts = font.KernPairs.reduce(function (acc, _a) {\n var name1 = _a[0], name2 = _a[1], width = _a[2];\n if (!acc[name1])\n acc[name1] = {};\n acc[name1][name2] = width;\n return acc;\n }, {});\n fontCache[fontName] = font;\n return font;\n };\n return Font;\n}());\nexport { Font };\n","/* tslint:disable max-classes-per-file */\nimport { decompressJson, padStart } from './utils';\nimport AllEncodingsCompressed from './all-encodings.compressed.json';\nvar decompressedEncodings = decompressJson(AllEncodingsCompressed);\nvar allUnicodeMappings = JSON.parse(decompressedEncodings);\nvar Encoding = /** @class */ (function () {\n function Encoding(name, unicodeMappings) {\n var _this = this;\n this.canEncodeUnicodeCodePoint = function (codePoint) {\n return codePoint in _this.unicodeMappings;\n };\n this.encodeUnicodeCodePoint = function (codePoint) {\n var mapped = _this.unicodeMappings[codePoint];\n if (!mapped) {\n var str = String.fromCharCode(codePoint);\n var hexCode = \"0x\" + padStart(codePoint.toString(16), 4, '0');\n var msg = _this.name + \" cannot encode \\\"\" + str + \"\\\" (\" + hexCode + \")\";\n throw new Error(msg);\n }\n return { code: mapped[0], name: mapped[1] };\n };\n this.name = name;\n this.supportedCodePoints = Object.keys(unicodeMappings)\n .map(Number)\n .sort(function (a, b) { return a - b; });\n this.unicodeMappings = unicodeMappings;\n }\n return Encoding;\n}());\nexport var Encodings = {\n Symbol: new Encoding('Symbol', allUnicodeMappings.symbol),\n ZapfDingbats: new Encoding('ZapfDingbats', allUnicodeMappings.zapfdingbats),\n WinAnsi: new Encoding('WinAnsi', allUnicodeMappings.win1252),\n};\n","import { FontNames } from '@pdf-lib/standard-fonts';\nexport var values = function (obj) { return Object.keys(obj).map(function (k) { return obj[k]; }); };\nexport var StandardFontValues = values(FontNames);\nexport var isStandardFont = function (input) {\n return StandardFontValues.includes(input);\n};\nexport var rectanglesAreEqual = function (a, b) { return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height; };\n//# sourceMappingURL=objects.js.map","/* tslint:disable:ban-types */\nimport { values as objectValues } from \"./objects\";\nexport var backtick = function (val) { return \"`\" + val + \"`\"; };\nexport var singleQuote = function (val) { return \"'\" + val + \"'\"; };\n// prettier-ignore\nvar formatValue = function (value) {\n var type = typeof value;\n if (type === 'string')\n return singleQuote(value);\n else if (type === 'undefined')\n return backtick(value);\n else\n return value;\n};\nexport var createValueErrorMsg = function (value, valueName, values) {\n var allowedValues = new Array(values.length);\n for (var idx = 0, len = values.length; idx < len; idx++) {\n var v = values[idx];\n allowedValues[idx] = formatValue(v);\n }\n var joinedValues = allowedValues.join(' or ');\n // prettier-ignore\n return backtick(valueName) + \" must be one of \" + joinedValues + \", but was actually \" + formatValue(value);\n};\nexport var assertIsOneOf = function (value, valueName, allowedValues) {\n if (!Array.isArray(allowedValues)) {\n allowedValues = objectValues(allowedValues);\n }\n for (var idx = 0, len = allowedValues.length; idx < len; idx++) {\n if (value === allowedValues[idx])\n return;\n }\n throw new TypeError(createValueErrorMsg(value, valueName, allowedValues));\n};\nexport var assertIsOneOfOrUndefined = function (value, valueName, allowedValues) {\n if (!Array.isArray(allowedValues)) {\n allowedValues = objectValues(allowedValues);\n }\n assertIsOneOf(value, valueName, allowedValues.concat(undefined));\n};\nexport var assertIsSubset = function (values, valueName, allowedValues) {\n if (!Array.isArray(allowedValues)) {\n allowedValues = objectValues(allowedValues);\n }\n for (var idx = 0, len = values.length; idx < len; idx++) {\n assertIsOneOf(values[idx], valueName, allowedValues);\n }\n};\nexport var getType = function (val) {\n if (val === null)\n return 'null';\n if (val === undefined)\n return 'undefined';\n if (typeof val === 'string')\n return 'string';\n if (isNaN(val))\n return 'NaN';\n if (typeof val === 'number')\n return 'number';\n if (typeof val === 'boolean')\n return 'boolean';\n if (typeof val === 'symbol')\n return 'symbol';\n if (typeof val === 'bigint')\n return 'bigint';\n if (val.constructor && val.constructor.name)\n return val.constructor.name;\n if (val.name)\n return val.name;\n if (val.constructor)\n return String(val.constructor);\n return String(val);\n};\nexport var isType = function (value, type) {\n if (type === 'null')\n return value === null;\n if (type === 'undefined')\n return value === undefined;\n if (type === 'string')\n return typeof value === 'string';\n if (type === 'number')\n return typeof value === 'number' && !isNaN(value);\n if (type === 'boolean')\n return typeof value === 'boolean';\n if (type === 'symbol')\n return typeof value === 'symbol';\n if (type === 'bigint')\n return typeof value === 'bigint';\n if (type === Date)\n return value instanceof Date;\n if (type === Array)\n return value instanceof Array;\n if (type === Uint8Array)\n return value instanceof Uint8Array;\n if (type === ArrayBuffer)\n return value instanceof ArrayBuffer;\n if (type === Function)\n return value instanceof Function;\n return value instanceof type[0];\n};\nexport var createTypeErrorMsg = function (value, valueName, types) {\n var allowedTypes = new Array(types.length);\n for (var idx = 0, len = types.length; idx < len; idx++) {\n var type = types[idx];\n if (type === 'null')\n allowedTypes[idx] = backtick('null');\n if (type === 'undefined')\n allowedTypes[idx] = backtick('undefined');\n if (type === 'string')\n allowedTypes[idx] = backtick('string');\n else if (type === 'number')\n allowedTypes[idx] = backtick('number');\n else if (type === 'boolean')\n allowedTypes[idx] = backtick('boolean');\n else if (type === 'symbol')\n allowedTypes[idx] = backtick('symbol');\n else if (type === 'bigint')\n allowedTypes[idx] = backtick('bigint');\n else if (type === Array)\n allowedTypes[idx] = backtick('Array');\n else if (type === Uint8Array)\n allowedTypes[idx] = backtick('Uint8Array');\n else if (type === ArrayBuffer)\n allowedTypes[idx] = backtick('ArrayBuffer');\n else\n allowedTypes[idx] = backtick(type[1]);\n }\n var joinedTypes = allowedTypes.join(' or ');\n // prettier-ignore\n return backtick(valueName) + \" must be of type \" + joinedTypes + \", but was actually of type \" + backtick(getType(value));\n};\nexport var assertIs = function (value, valueName, types) {\n for (var idx = 0, len = types.length; idx < len; idx++) {\n if (isType(value, types[idx]))\n return;\n }\n throw new TypeError(createTypeErrorMsg(value, valueName, types));\n};\nexport var assertOrUndefined = function (value, valueName, types) {\n assertIs(value, valueName, types.concat('undefined'));\n};\nexport var assertEachIs = function (values, valueName, types) {\n for (var idx = 0, len = values.length; idx < len; idx++) {\n assertIs(values[idx], valueName, types);\n }\n};\nexport var assertRange = function (value, valueName, min, max) {\n assertIs(value, valueName, ['number']);\n assertIs(min, 'min', ['number']);\n assertIs(max, 'max', ['number']);\n max = Math.max(min, max);\n if (value < min || value > max) {\n // prettier-ignore\n throw new Error(backtick(valueName) + \" must be at least \" + min + \" and at most \" + max + \", but was actually \" + value);\n }\n};\nexport var assertRangeOrUndefined = function (value, valueName, min, max) {\n assertIs(value, valueName, ['number', 'undefined']);\n if (typeof value === 'number')\n assertRange(value, valueName, min, max);\n};\nexport var assertMultiple = function (value, valueName, multiplier) {\n assertIs(value, valueName, ['number']);\n if (value % multiplier !== 0) {\n // prettier-ignore\n throw new Error(backtick(valueName) + \" must be a multiple of \" + multiplier + \", but was actually \" + value);\n }\n};\nexport var assertInteger = function (value, valueName) {\n if (!Number.isInteger(value)) {\n throw new Error(backtick(valueName) + \" must be an integer, but was actually \" + value);\n }\n};\nexport var assertPositive = function (value, valueName) {\n if (![1, 0].includes(Math.sign(value))) {\n // prettier-ignore\n throw new Error(backtick(valueName) + \" must be a positive number or 0, but was actually \" + value);\n }\n};\n//# sourceMappingURL=validators.js.map","import { toCharCode } from \"./strings\";\n// Mapping from PDFDocEncoding to Unicode code point\nvar pdfDocEncodingToUnicode = new Uint16Array(256);\n// Initialize the code points which are the same\nfor (var idx = 0; idx < 256; idx++) {\n pdfDocEncodingToUnicode[idx] = idx;\n}\n// Set differences (see \"Table D.2 – PDFDocEncoding Character Set\" of the PDF spec)\npdfDocEncodingToUnicode[0x16] = toCharCode('\\u0017'); // SYNCRONOUS IDLE\npdfDocEncodingToUnicode[0x18] = toCharCode('\\u02D8'); // BREVE\npdfDocEncodingToUnicode[0x19] = toCharCode('\\u02C7'); // CARON\npdfDocEncodingToUnicode[0x1a] = toCharCode('\\u02C6'); // MODIFIER LETTER CIRCUMFLEX ACCENT\npdfDocEncodingToUnicode[0x1b] = toCharCode('\\u02D9'); // DOT ABOVE\npdfDocEncodingToUnicode[0x1c] = toCharCode('\\u02DD'); // DOUBLE ACUTE ACCENT\npdfDocEncodingToUnicode[0x1d] = toCharCode('\\u02DB'); // OGONEK\npdfDocEncodingToUnicode[0x1e] = toCharCode('\\u02DA'); // RING ABOVE\npdfDocEncodingToUnicode[0x1f] = toCharCode('\\u02DC'); // SMALL TILDE\npdfDocEncodingToUnicode[0x7f] = toCharCode('\\uFFFD'); // REPLACEMENT CHARACTER (box with questionmark)\npdfDocEncodingToUnicode[0x80] = toCharCode('\\u2022'); // BULLET\npdfDocEncodingToUnicode[0x81] = toCharCode('\\u2020'); // DAGGER\npdfDocEncodingToUnicode[0x82] = toCharCode('\\u2021'); // DOUBLE DAGGER\npdfDocEncodingToUnicode[0x83] = toCharCode('\\u2026'); // HORIZONTAL ELLIPSIS\npdfDocEncodingToUnicode[0x84] = toCharCode('\\u2014'); // EM DASH\npdfDocEncodingToUnicode[0x85] = toCharCode('\\u2013'); // EN DASH\npdfDocEncodingToUnicode[0x86] = toCharCode('\\u0192'); // LATIN SMALL LETTER SCRIPT F\npdfDocEncodingToUnicode[0x87] = toCharCode('\\u2044'); // FRACTION SLASH (solidus)\npdfDocEncodingToUnicode[0x88] = toCharCode('\\u2039'); // SINGLE LEFT-POINTING ANGLE QUOTATION MARK\npdfDocEncodingToUnicode[0x89] = toCharCode('\\u203A'); // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK\npdfDocEncodingToUnicode[0x8a] = toCharCode('\\u2212'); // MINUS SIGN\npdfDocEncodingToUnicode[0x8b] = toCharCode('\\u2030'); // PER MILLE SIGN\npdfDocEncodingToUnicode[0x8c] = toCharCode('\\u201E'); // DOUBLE LOW-9 QUOTATION MARK (quotedblbase)\npdfDocEncodingToUnicode[0x8d] = toCharCode('\\u201C'); // LEFT DOUBLE QUOTATION MARK (quotedblleft)\npdfDocEncodingToUnicode[0x8e] = toCharCode('\\u201D'); // RIGHT DOUBLE QUOTATION MARK (quotedblright)\npdfDocEncodingToUnicode[0x8f] = toCharCode('\\u2018'); // LEFT SINGLE QUOTATION MARK (quoteleft)\npdfDocEncodingToUnicode[0x90] = toCharCode('\\u2019'); // RIGHT SINGLE QUOTATION MARK (quoteright)\npdfDocEncodingToUnicode[0x91] = toCharCode('\\u201A'); // SINGLE LOW-9 QUOTATION MARK (quotesinglbase)\npdfDocEncodingToUnicode[0x92] = toCharCode('\\u2122'); // TRADE MARK SIGN\npdfDocEncodingToUnicode[0x93] = toCharCode('\\uFB01'); // LATIN SMALL LIGATURE FI\npdfDocEncodingToUnicode[0x94] = toCharCode('\\uFB02'); // LATIN SMALL LIGATURE FL\npdfDocEncodingToUnicode[0x95] = toCharCode('\\u0141'); // LATIN CAPITAL LETTER L WITH STROKE\npdfDocEncodingToUnicode[0x96] = toCharCode('\\u0152'); // LATIN CAPITAL LIGATURE OE\npdfDocEncodingToUnicode[0x97] = toCharCode('\\u0160'); // LATIN CAPITAL LETTER S WITH CARON\npdfDocEncodingToUnicode[0x98] = toCharCode('\\u0178'); // LATIN CAPITAL LETTER Y WITH DIAERESIS\npdfDocEncodingToUnicode[0x99] = toCharCode('\\u017D'); // LATIN CAPITAL LETTER Z WITH CARON\npdfDocEncodingToUnicode[0x9a] = toCharCode('\\u0131'); // LATIN SMALL LETTER DOTLESS I\npdfDocEncodingToUnicode[0x9b] = toCharCode('\\u0142'); // LATIN SMALL LETTER L WITH STROKE\npdfDocEncodingToUnicode[0x9c] = toCharCode('\\u0153'); // LATIN SMALL LIGATURE OE\npdfDocEncodingToUnicode[0x9d] = toCharCode('\\u0161'); // LATIN SMALL LETTER S WITH CARON\npdfDocEncodingToUnicode[0x9e] = toCharCode('\\u017E'); // LATIN SMALL LETTER Z WITH CARON\npdfDocEncodingToUnicode[0x9f] = toCharCode('\\uFFFD'); // REPLACEMENT CHARACTER (box with questionmark)\npdfDocEncodingToUnicode[0xa0] = toCharCode('\\u20AC'); // EURO SIGN\npdfDocEncodingToUnicode[0xad] = toCharCode('\\uFFFD'); // REPLACEMENT CHARACTER (box with questionmark)\n/**\n * Decode a byte array into a string using PDFDocEncoding.\n *\n * @param bytes a byte array (decimal representation) containing a string\n * encoded with PDFDocEncoding.\n */\nexport var pdfDocEncodingDecode = function (bytes) {\n var codePoints = new Array(bytes.length);\n for (var idx = 0, len = bytes.length; idx < len; idx++) {\n codePoints[idx] = pdfDocEncodingToUnicode[bytes[idx]];\n }\n return String.fromCodePoint.apply(String, codePoints);\n};\n//# sourceMappingURL=pdfDocEncoding.js.map","var Cache = /** @class */ (function () {\n function Cache(populate) {\n this.populate = populate;\n this.value = undefined;\n }\n Cache.prototype.getValue = function () {\n return this.value;\n };\n Cache.prototype.access = function () {\n if (!this.value)\n this.value = this.populate();\n return this.value;\n };\n Cache.prototype.invalidate = function () {\n this.value = undefined;\n };\n Cache.populatedBy = function (populate) { return new Cache(populate); };\n return Cache;\n}());\nexport default Cache;\n//# sourceMappingURL=Cache.js.map","import { __extends } from \"tslib\";\nimport { arrayAsString } from \"../utils\";\nvar MethodNotImplementedError = /** @class */ (function (_super) {\n __extends(MethodNotImplementedError, _super);\n function MethodNotImplementedError(className, methodName) {\n var _this = this;\n var msg = \"Method \" + className + \".\" + methodName + \"() not implemented\";\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return MethodNotImplementedError;\n}(Error));\nexport { MethodNotImplementedError };\nvar PrivateConstructorError = /** @class */ (function (_super) {\n __extends(PrivateConstructorError, _super);\n function PrivateConstructorError(className) {\n var _this = this;\n var msg = \"Cannot construct \" + className + \" - it has a private constructor\";\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return PrivateConstructorError;\n}(Error));\nexport { PrivateConstructorError };\nvar UnexpectedObjectTypeError = /** @class */ (function (_super) {\n __extends(UnexpectedObjectTypeError, _super);\n function UnexpectedObjectTypeError(expected, actual) {\n var _this = this;\n var name = function (t) { var _a, _b; return (_a = t === null || t === void 0 ? void 0 : t.name) !== null && _a !== void 0 ? _a : (_b = t === null || t === void 0 ? void 0 : t.constructor) === null || _b === void 0 ? void 0 : _b.name; };\n var expectedTypes = Array.isArray(expected)\n ? expected.map(name)\n : [name(expected)];\n var msg = \"Expected instance of \" + expectedTypes.join(' or ') + \", \" +\n (\"but got instance of \" + (actual ? name(actual) : actual));\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return UnexpectedObjectTypeError;\n}(Error));\nexport { UnexpectedObjectTypeError };\nvar UnsupportedEncodingError = /** @class */ (function (_super) {\n __extends(UnsupportedEncodingError, _super);\n function UnsupportedEncodingError(encoding) {\n var _this = this;\n var msg = encoding + \" stream encoding not supported\";\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return UnsupportedEncodingError;\n}(Error));\nexport { UnsupportedEncodingError };\nvar ReparseError = /** @class */ (function (_super) {\n __extends(ReparseError, _super);\n function ReparseError(className, methodName) {\n var _this = this;\n var msg = \"Cannot call \" + className + \".\" + methodName + \"() more than once\";\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return ReparseError;\n}(Error));\nexport { ReparseError };\nvar MissingCatalogError = /** @class */ (function (_super) {\n __extends(MissingCatalogError, _super);\n function MissingCatalogError(ref) {\n var _this = this;\n var msg = \"Missing catalog (ref=\" + ref + \")\";\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return MissingCatalogError;\n}(Error));\nexport { MissingCatalogError };\nvar MissingPageContentsEmbeddingError = /** @class */ (function (_super) {\n __extends(MissingPageContentsEmbeddingError, _super);\n function MissingPageContentsEmbeddingError() {\n var _this = this;\n var msg = \"Can't embed page with missing Contents\";\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return MissingPageContentsEmbeddingError;\n}(Error));\nexport { MissingPageContentsEmbeddingError };\nvar UnrecognizedStreamTypeError = /** @class */ (function (_super) {\n __extends(UnrecognizedStreamTypeError, _super);\n function UnrecognizedStreamTypeError(stream) {\n var _a, _b, _c;\n var _this = this;\n var streamType = (_c = (_b = (_a = stream === null || stream === void 0 ? void 0 : stream.contructor) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : stream === null || stream === void 0 ? void 0 : stream.name) !== null && _c !== void 0 ? _c : stream;\n var msg = \"Unrecognized stream type: \" + streamType;\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return UnrecognizedStreamTypeError;\n}(Error));\nexport { UnrecognizedStreamTypeError };\nvar PageEmbeddingMismatchedContextError = /** @class */ (function (_super) {\n __extends(PageEmbeddingMismatchedContextError, _super);\n function PageEmbeddingMismatchedContextError() {\n var _this = this;\n var msg = \"Found mismatched contexts while embedding pages. All pages in the array passed to `PDFDocument.embedPages()` must be from the same document.\";\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return PageEmbeddingMismatchedContextError;\n}(Error));\nexport { PageEmbeddingMismatchedContextError };\nvar PDFArrayIsNotRectangleError = /** @class */ (function (_super) {\n __extends(PDFArrayIsNotRectangleError, _super);\n function PDFArrayIsNotRectangleError(size) {\n var _this = this;\n var msg = \"Attempted to convert PDFArray with \" + size + \" elements to rectangle, but must have exactly 4 elements.\";\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return PDFArrayIsNotRectangleError;\n}(Error));\nexport { PDFArrayIsNotRectangleError };\nvar InvalidPDFDateStringError = /** @class */ (function (_super) {\n __extends(InvalidPDFDateStringError, _super);\n function InvalidPDFDateStringError(value) {\n var _this = this;\n var msg = \"Attempted to convert \\\"\" + value + \"\\\" to a date, but it does not match the PDF date string format.\";\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return InvalidPDFDateStringError;\n}(Error));\nexport { InvalidPDFDateStringError };\nvar InvalidTargetIndexError = /** @class */ (function (_super) {\n __extends(InvalidTargetIndexError, _super);\n function InvalidTargetIndexError(targetIndex, Count) {\n var _this = this;\n var msg = \"Invalid targetIndex specified: targetIndex=\" + targetIndex + \" must be less than Count=\" + Count;\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return InvalidTargetIndexError;\n}(Error));\nexport { InvalidTargetIndexError };\nvar CorruptPageTreeError = /** @class */ (function (_super) {\n __extends(CorruptPageTreeError, _super);\n function CorruptPageTreeError(targetIndex, operation) {\n var _this = this;\n var msg = \"Failed to \" + operation + \" at targetIndex=\" + targetIndex + \" due to corrupt page tree: It is likely that one or more 'Count' entries are invalid\";\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return CorruptPageTreeError;\n}(Error));\nexport { CorruptPageTreeError };\nvar IndexOutOfBoundsError = /** @class */ (function (_super) {\n __extends(IndexOutOfBoundsError, _super);\n function IndexOutOfBoundsError(index, min, max) {\n var _this = this;\n var msg = \"index should be at least \" + min + \" and at most \" + max + \", but was actually \" + index;\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return IndexOutOfBoundsError;\n}(Error));\nexport { IndexOutOfBoundsError };\nvar InvalidAcroFieldValueError = /** @class */ (function (_super) {\n __extends(InvalidAcroFieldValueError, _super);\n function InvalidAcroFieldValueError() {\n var _this = this;\n var msg = \"Attempted to set invalid field value\";\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return InvalidAcroFieldValueError;\n}(Error));\nexport { InvalidAcroFieldValueError };\nvar MultiSelectValueError = /** @class */ (function (_super) {\n __extends(MultiSelectValueError, _super);\n function MultiSelectValueError() {\n var _this = this;\n var msg = \"Attempted to select multiple values for single-select field\";\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return MultiSelectValueError;\n}(Error));\nexport { MultiSelectValueError };\nvar MissingDAEntryError = /** @class */ (function (_super) {\n __extends(MissingDAEntryError, _super);\n function MissingDAEntryError(fieldName) {\n var _this = this;\n var msg = \"No /DA (default appearance) entry found for field: \" + fieldName;\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return MissingDAEntryError;\n}(Error));\nexport { MissingDAEntryError };\nvar MissingTfOperatorError = /** @class */ (function (_super) {\n __extends(MissingTfOperatorError, _super);\n function MissingTfOperatorError(fieldName) {\n var _this = this;\n var msg = \"No Tf operator found for DA of field: \" + fieldName;\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return MissingTfOperatorError;\n}(Error));\nexport { MissingTfOperatorError };\nvar NumberParsingError = /** @class */ (function (_super) {\n __extends(NumberParsingError, _super);\n function NumberParsingError(pos, value) {\n var _this = this;\n var msg = \"Failed to parse number \" +\n (\"(line:\" + pos.line + \" col:\" + pos.column + \" offset=\" + pos.offset + \"): \\\"\" + value + \"\\\"\");\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return NumberParsingError;\n}(Error));\nexport { NumberParsingError };\nvar PDFParsingError = /** @class */ (function (_super) {\n __extends(PDFParsingError, _super);\n function PDFParsingError(pos, details) {\n var _this = this;\n var msg = \"Failed to parse PDF document \" +\n (\"(line:\" + pos.line + \" col:\" + pos.column + \" offset=\" + pos.offset + \"): \" + details);\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return PDFParsingError;\n}(Error));\nexport { PDFParsingError };\nvar NextByteAssertionError = /** @class */ (function (_super) {\n __extends(NextByteAssertionError, _super);\n function NextByteAssertionError(pos, expectedByte, actualByte) {\n var _this = this;\n var msg = \"Expected next byte to be \" + expectedByte + \" but it was actually \" + actualByte;\n _this = _super.call(this, pos, msg) || this;\n return _this;\n }\n return NextByteAssertionError;\n}(PDFParsingError));\nexport { NextByteAssertionError };\nvar PDFObjectParsingError = /** @class */ (function (_super) {\n __extends(PDFObjectParsingError, _super);\n function PDFObjectParsingError(pos, byte) {\n var _this = this;\n var msg = \"Failed to parse PDF object starting with the following byte: \" + byte;\n _this = _super.call(this, pos, msg) || this;\n return _this;\n }\n return PDFObjectParsingError;\n}(PDFParsingError));\nexport { PDFObjectParsingError };\nvar PDFInvalidObjectParsingError = /** @class */ (function (_super) {\n __extends(PDFInvalidObjectParsingError, _super);\n function PDFInvalidObjectParsingError(pos) {\n var _this = this;\n var msg = \"Failed to parse invalid PDF object\";\n _this = _super.call(this, pos, msg) || this;\n return _this;\n }\n return PDFInvalidObjectParsingError;\n}(PDFParsingError));\nexport { PDFInvalidObjectParsingError };\nvar PDFStreamParsingError = /** @class */ (function (_super) {\n __extends(PDFStreamParsingError, _super);\n function PDFStreamParsingError(pos) {\n var _this = this;\n var msg = \"Failed to parse PDF stream\";\n _this = _super.call(this, pos, msg) || this;\n return _this;\n }\n return PDFStreamParsingError;\n}(PDFParsingError));\nexport { PDFStreamParsingError };\nvar UnbalancedParenthesisError = /** @class */ (function (_super) {\n __extends(UnbalancedParenthesisError, _super);\n function UnbalancedParenthesisError(pos) {\n var _this = this;\n var msg = \"Failed to parse PDF literal string due to unbalanced parenthesis\";\n _this = _super.call(this, pos, msg) || this;\n return _this;\n }\n return UnbalancedParenthesisError;\n}(PDFParsingError));\nexport { UnbalancedParenthesisError };\nvar StalledParserError = /** @class */ (function (_super) {\n __extends(StalledParserError, _super);\n function StalledParserError(pos) {\n var _this = this;\n var msg = \"Parser stalled\";\n _this = _super.call(this, pos, msg) || this;\n return _this;\n }\n return StalledParserError;\n}(PDFParsingError));\nexport { StalledParserError };\nvar MissingPDFHeaderError = /** @class */ (function (_super) {\n __extends(MissingPDFHeaderError, _super);\n function MissingPDFHeaderError(pos) {\n var _this = this;\n var msg = \"No PDF header found\";\n _this = _super.call(this, pos, msg) || this;\n return _this;\n }\n return MissingPDFHeaderError;\n}(PDFParsingError));\nexport { MissingPDFHeaderError };\nvar MissingKeywordError = /** @class */ (function (_super) {\n __extends(MissingKeywordError, _super);\n function MissingKeywordError(pos, keyword) {\n var _this = this;\n var msg = \"Did not find expected keyword '\" + arrayAsString(keyword) + \"'\";\n _this = _super.call(this, pos, msg) || this;\n return _this;\n }\n return MissingKeywordError;\n}(PDFParsingError));\nexport { MissingKeywordError };\n//# sourceMappingURL=errors.js.map","var CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"Null\"] = 0] = \"Null\";\n CharCodes[CharCodes[\"Backspace\"] = 8] = \"Backspace\";\n CharCodes[CharCodes[\"Tab\"] = 9] = \"Tab\";\n CharCodes[CharCodes[\"Newline\"] = 10] = \"Newline\";\n CharCodes[CharCodes[\"FormFeed\"] = 12] = \"FormFeed\";\n CharCodes[CharCodes[\"CarriageReturn\"] = 13] = \"CarriageReturn\";\n CharCodes[CharCodes[\"Space\"] = 32] = \"Space\";\n CharCodes[CharCodes[\"ExclamationPoint\"] = 33] = \"ExclamationPoint\";\n CharCodes[CharCodes[\"Hash\"] = 35] = \"Hash\";\n CharCodes[CharCodes[\"Percent\"] = 37] = \"Percent\";\n CharCodes[CharCodes[\"LeftParen\"] = 40] = \"LeftParen\";\n CharCodes[CharCodes[\"RightParen\"] = 41] = \"RightParen\";\n CharCodes[CharCodes[\"Plus\"] = 43] = \"Plus\";\n CharCodes[CharCodes[\"Minus\"] = 45] = \"Minus\";\n CharCodes[CharCodes[\"Dash\"] = 45] = \"Dash\";\n CharCodes[CharCodes[\"Period\"] = 46] = \"Period\";\n CharCodes[CharCodes[\"ForwardSlash\"] = 47] = \"ForwardSlash\";\n CharCodes[CharCodes[\"Zero\"] = 48] = \"Zero\";\n CharCodes[CharCodes[\"One\"] = 49] = \"One\";\n CharCodes[CharCodes[\"Two\"] = 50] = \"Two\";\n CharCodes[CharCodes[\"Three\"] = 51] = \"Three\";\n CharCodes[CharCodes[\"Four\"] = 52] = \"Four\";\n CharCodes[CharCodes[\"Five\"] = 53] = \"Five\";\n CharCodes[CharCodes[\"Six\"] = 54] = \"Six\";\n CharCodes[CharCodes[\"Seven\"] = 55] = \"Seven\";\n CharCodes[CharCodes[\"Eight\"] = 56] = \"Eight\";\n CharCodes[CharCodes[\"Nine\"] = 57] = \"Nine\";\n CharCodes[CharCodes[\"LessThan\"] = 60] = \"LessThan\";\n CharCodes[CharCodes[\"GreaterThan\"] = 62] = \"GreaterThan\";\n CharCodes[CharCodes[\"A\"] = 65] = \"A\";\n CharCodes[CharCodes[\"D\"] = 68] = \"D\";\n CharCodes[CharCodes[\"E\"] = 69] = \"E\";\n CharCodes[CharCodes[\"F\"] = 70] = \"F\";\n CharCodes[CharCodes[\"O\"] = 79] = \"O\";\n CharCodes[CharCodes[\"P\"] = 80] = \"P\";\n CharCodes[CharCodes[\"R\"] = 82] = \"R\";\n CharCodes[CharCodes[\"LeftSquareBracket\"] = 91] = \"LeftSquareBracket\";\n CharCodes[CharCodes[\"BackSlash\"] = 92] = \"BackSlash\";\n CharCodes[CharCodes[\"RightSquareBracket\"] = 93] = \"RightSquareBracket\";\n CharCodes[CharCodes[\"a\"] = 97] = \"a\";\n CharCodes[CharCodes[\"b\"] = 98] = \"b\";\n CharCodes[CharCodes[\"d\"] = 100] = \"d\";\n CharCodes[CharCodes[\"e\"] = 101] = \"e\";\n CharCodes[CharCodes[\"f\"] = 102] = \"f\";\n CharCodes[CharCodes[\"i\"] = 105] = \"i\";\n CharCodes[CharCodes[\"j\"] = 106] = \"j\";\n CharCodes[CharCodes[\"l\"] = 108] = \"l\";\n CharCodes[CharCodes[\"m\"] = 109] = \"m\";\n CharCodes[CharCodes[\"n\"] = 110] = \"n\";\n CharCodes[CharCodes[\"o\"] = 111] = \"o\";\n CharCodes[CharCodes[\"r\"] = 114] = \"r\";\n CharCodes[CharCodes[\"s\"] = 115] = \"s\";\n CharCodes[CharCodes[\"t\"] = 116] = \"t\";\n CharCodes[CharCodes[\"u\"] = 117] = \"u\";\n CharCodes[CharCodes[\"x\"] = 120] = \"x\";\n CharCodes[CharCodes[\"LeftCurly\"] = 123] = \"LeftCurly\";\n CharCodes[CharCodes[\"RightCurly\"] = 125] = \"RightCurly\";\n CharCodes[CharCodes[\"Tilde\"] = 126] = \"Tilde\";\n})(CharCodes || (CharCodes = {}));\nexport default CharCodes;\n//# sourceMappingURL=CharCodes.js.map","import CharCodes from \"../syntax/CharCodes\";\nimport { charFromCode, copyStringIntoBuffer } from \"../../utils\";\nvar PDFHeader = /** @class */ (function () {\n function PDFHeader(major, minor) {\n this.major = String(major);\n this.minor = String(minor);\n }\n PDFHeader.prototype.toString = function () {\n var bc = charFromCode(129);\n return \"%PDF-\" + this.major + \".\" + this.minor + \"\\n%\" + bc + bc + bc + bc;\n };\n PDFHeader.prototype.sizeInBytes = function () {\n return 12 + this.major.length + this.minor.length;\n };\n PDFHeader.prototype.copyBytesInto = function (buffer, offset) {\n var initialOffset = offset;\n buffer[offset++] = CharCodes.Percent;\n buffer[offset++] = CharCodes.P;\n buffer[offset++] = CharCodes.D;\n buffer[offset++] = CharCodes.F;\n buffer[offset++] = CharCodes.Dash;\n offset += copyStringIntoBuffer(this.major, buffer, offset);\n buffer[offset++] = CharCodes.Period;\n offset += copyStringIntoBuffer(this.minor, buffer, offset);\n buffer[offset++] = CharCodes.Newline;\n buffer[offset++] = CharCodes.Percent;\n buffer[offset++] = 129;\n buffer[offset++] = 129;\n buffer[offset++] = 129;\n buffer[offset++] = 129;\n return offset - initialOffset;\n };\n PDFHeader.forVersion = function (major, minor) {\n return new PDFHeader(major, minor);\n };\n return PDFHeader;\n}());\nexport default PDFHeader;\n//# sourceMappingURL=PDFHeader.js.map","import { MethodNotImplementedError } from \"../errors\";\nvar PDFObject = /** @class */ (function () {\n function PDFObject() {\n }\n PDFObject.prototype.clone = function (_context) {\n throw new MethodNotImplementedError(this.constructor.name, 'clone');\n };\n PDFObject.prototype.toString = function () {\n throw new MethodNotImplementedError(this.constructor.name, 'toString');\n };\n PDFObject.prototype.sizeInBytes = function () {\n throw new MethodNotImplementedError(this.constructor.name, 'sizeInBytes');\n };\n PDFObject.prototype.copyBytesInto = function (_buffer, _offset) {\n throw new MethodNotImplementedError(this.constructor.name, 'copyBytesInto');\n };\n return PDFObject;\n}());\nexport default PDFObject;\n//# sourceMappingURL=PDFObject.js.map","import { __extends } from \"tslib\";\nimport { copyStringIntoBuffer, numberToString } from \"../../utils/index\";\nimport PDFObject from \"./PDFObject\";\nvar PDFNumber = /** @class */ (function (_super) {\n __extends(PDFNumber, _super);\n function PDFNumber(value) {\n var _this = _super.call(this) || this;\n _this.numberValue = value;\n _this.stringValue = numberToString(value);\n return _this;\n }\n PDFNumber.prototype.asNumber = function () {\n return this.numberValue;\n };\n /** @deprecated in favor of [[PDFNumber.asNumber]] */\n PDFNumber.prototype.value = function () {\n return this.numberValue;\n };\n PDFNumber.prototype.clone = function () {\n return PDFNumber.of(this.numberValue);\n };\n PDFNumber.prototype.toString = function () {\n return this.stringValue;\n };\n PDFNumber.prototype.sizeInBytes = function () {\n return this.stringValue.length;\n };\n PDFNumber.prototype.copyBytesInto = function (buffer, offset) {\n offset += copyStringIntoBuffer(this.stringValue, buffer, offset);\n return this.stringValue.length;\n };\n PDFNumber.of = function (value) { return new PDFNumber(value); };\n return PDFNumber;\n}(PDFObject));\nexport default PDFNumber;\n//# sourceMappingURL=PDFNumber.js.map","import { __extends, __spreadArrays } from \"tslib\";\nimport PDFNumber from \"./PDFNumber\";\nimport PDFObject from \"./PDFObject\";\nimport CharCodes from \"../syntax/CharCodes\";\nimport { PDFArrayIsNotRectangleError } from \"../errors\";\nvar PDFArray = /** @class */ (function (_super) {\n __extends(PDFArray, _super);\n function PDFArray(context) {\n var _this = _super.call(this) || this;\n _this.array = [];\n _this.context = context;\n return _this;\n }\n PDFArray.prototype.size = function () {\n return this.array.length;\n };\n PDFArray.prototype.push = function (object) {\n this.array.push(object);\n };\n PDFArray.prototype.insert = function (index, object) {\n this.array.splice(index, 0, object);\n };\n PDFArray.prototype.indexOf = function (object) {\n var index = this.array.indexOf(object);\n return index === -1 ? undefined : index;\n };\n PDFArray.prototype.remove = function (index) {\n this.array.splice(index, 1);\n };\n PDFArray.prototype.set = function (idx, object) {\n this.array[idx] = object;\n };\n PDFArray.prototype.get = function (index) {\n return this.array[index];\n };\n PDFArray.prototype.lookupMaybe = function (index) {\n var _a;\n var types = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n types[_i - 1] = arguments[_i];\n }\n return (_a = this.context).lookupMaybe.apply(_a, __spreadArrays([this.get(index)], types));\n };\n PDFArray.prototype.lookup = function (index) {\n var _a;\n var types = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n types[_i - 1] = arguments[_i];\n }\n return (_a = this.context).lookup.apply(_a, __spreadArrays([this.get(index)], types));\n };\n PDFArray.prototype.asRectangle = function () {\n if (this.size() !== 4)\n throw new PDFArrayIsNotRectangleError(this.size());\n var lowerLeftX = this.lookup(0, PDFNumber).asNumber();\n var lowerLeftY = this.lookup(1, PDFNumber).asNumber();\n var upperRightX = this.lookup(2, PDFNumber).asNumber();\n var upperRightY = this.lookup(3, PDFNumber).asNumber();\n var x = lowerLeftX;\n var y = lowerLeftY;\n var width = upperRightX - lowerLeftX;\n var height = upperRightY - lowerLeftY;\n return { x: x, y: y, width: width, height: height };\n };\n PDFArray.prototype.asArray = function () {\n return this.array.slice();\n };\n PDFArray.prototype.clone = function (context) {\n var clone = PDFArray.withContext(context || this.context);\n for (var idx = 0, len = this.size(); idx < len; idx++) {\n clone.push(this.array[idx]);\n }\n return clone;\n };\n PDFArray.prototype.toString = function () {\n var arrayString = '[ ';\n for (var idx = 0, len = this.size(); idx < len; idx++) {\n arrayString += this.get(idx).toString();\n arrayString += ' ';\n }\n arrayString += ']';\n return arrayString;\n };\n PDFArray.prototype.sizeInBytes = function () {\n var size = 3;\n for (var idx = 0, len = this.size(); idx < len; idx++) {\n size += this.get(idx).sizeInBytes() + 1;\n }\n return size;\n };\n PDFArray.prototype.copyBytesInto = function (buffer, offset) {\n var initialOffset = offset;\n buffer[offset++] = CharCodes.LeftSquareBracket;\n buffer[offset++] = CharCodes.Space;\n for (var idx = 0, len = this.size(); idx < len; idx++) {\n offset += this.get(idx).copyBytesInto(buffer, offset);\n buffer[offset++] = CharCodes.Space;\n }\n buffer[offset++] = CharCodes.RightSquareBracket;\n return offset - initialOffset;\n };\n PDFArray.prototype.scalePDFNumbers = function (x, y) {\n for (var idx = 0, len = this.size(); idx < len; idx++) {\n var el = this.lookup(idx);\n if (el instanceof PDFNumber) {\n var factor = idx % 2 === 0 ? x : y;\n this.set(idx, PDFNumber.of(el.asNumber() * factor));\n }\n }\n };\n PDFArray.withContext = function (context) { return new PDFArray(context); };\n return PDFArray;\n}(PDFObject));\nexport default PDFArray;\n//# sourceMappingURL=PDFArray.js.map","import { __extends } from \"tslib\";\nimport { PrivateConstructorError } from \"../errors\";\nimport PDFObject from \"./PDFObject\";\nimport CharCodes from \"../syntax/CharCodes\";\nvar ENFORCER = {};\nvar PDFBool = /** @class */ (function (_super) {\n __extends(PDFBool, _super);\n function PDFBool(enforcer, value) {\n var _this = this;\n if (enforcer !== ENFORCER)\n throw new PrivateConstructorError('PDFBool');\n _this = _super.call(this) || this;\n _this.value = value;\n return _this;\n }\n PDFBool.prototype.asBoolean = function () {\n return this.value;\n };\n PDFBool.prototype.clone = function () {\n return this;\n };\n PDFBool.prototype.toString = function () {\n return String(this.value);\n };\n PDFBool.prototype.sizeInBytes = function () {\n return this.value ? 4 : 5;\n };\n PDFBool.prototype.copyBytesInto = function (buffer, offset) {\n if (this.value) {\n buffer[offset++] = CharCodes.t;\n buffer[offset++] = CharCodes.r;\n buffer[offset++] = CharCodes.u;\n buffer[offset++] = CharCodes.e;\n return 4;\n }\n else {\n buffer[offset++] = CharCodes.f;\n buffer[offset++] = CharCodes.a;\n buffer[offset++] = CharCodes.l;\n buffer[offset++] = CharCodes.s;\n buffer[offset++] = CharCodes.e;\n return 5;\n }\n };\n PDFBool.True = new PDFBool(ENFORCER, true);\n PDFBool.False = new PDFBool(ENFORCER, false);\n return PDFBool;\n}(PDFObject));\nexport default PDFBool;\n//# sourceMappingURL=PDFBool.js.map","import CharCodes from \"./CharCodes\";\nexport var IsDelimiter = new Uint8Array(256);\nIsDelimiter[CharCodes.LeftParen] = 1;\nIsDelimiter[CharCodes.RightParen] = 1;\nIsDelimiter[CharCodes.LessThan] = 1;\nIsDelimiter[CharCodes.GreaterThan] = 1;\nIsDelimiter[CharCodes.LeftSquareBracket] = 1;\nIsDelimiter[CharCodes.RightSquareBracket] = 1;\nIsDelimiter[CharCodes.LeftCurly] = 1;\nIsDelimiter[CharCodes.RightCurly] = 1;\nIsDelimiter[CharCodes.ForwardSlash] = 1;\nIsDelimiter[CharCodes.Percent] = 1;\n//# sourceMappingURL=Delimiters.js.map","import CharCodes from \"./CharCodes\";\nexport var IsWhitespace = new Uint8Array(256);\nIsWhitespace[CharCodes.Null] = 1;\nIsWhitespace[CharCodes.Tab] = 1;\nIsWhitespace[CharCodes.Newline] = 1;\nIsWhitespace[CharCodes.FormFeed] = 1;\nIsWhitespace[CharCodes.CarriageReturn] = 1;\nIsWhitespace[CharCodes.Space] = 1;\n//# sourceMappingURL=Whitespace.js.map","import CharCodes from \"./CharCodes\";\nimport { IsDelimiter } from \"./Delimiters\";\nimport { IsWhitespace } from \"./Whitespace\";\nexport var IsIrregular = new Uint8Array(256);\nfor (var idx = 0, len = 256; idx < len; idx++) {\n IsIrregular[idx] = IsWhitespace[idx] || IsDelimiter[idx] ? 1 : 0;\n}\nIsIrregular[CharCodes.Hash] = 1;\n//# sourceMappingURL=Irregular.js.map","import { __extends } from \"tslib\";\nimport { PrivateConstructorError } from \"../errors\";\nimport PDFObject from \"./PDFObject\";\nimport CharCodes from \"../syntax/CharCodes\";\nimport { IsIrregular } from \"../syntax/Irregular\";\nimport { charFromHexCode, copyStringIntoBuffer, toCharCode, toHexString, } from \"../../utils\";\nvar decodeName = function (name) {\n return name.replace(/#([\\dABCDEF]{2})/g, function (_, hex) { return charFromHexCode(hex); });\n};\nvar isRegularChar = function (charCode) {\n return charCode >= CharCodes.ExclamationPoint &&\n charCode <= CharCodes.Tilde &&\n !IsIrregular[charCode];\n};\nvar ENFORCER = {};\nvar pool = new Map();\nvar PDFName = /** @class */ (function (_super) {\n __extends(PDFName, _super);\n function PDFName(enforcer, name) {\n var _this = this;\n if (enforcer !== ENFORCER)\n throw new PrivateConstructorError('PDFName');\n _this = _super.call(this) || this;\n var encodedName = '/';\n for (var idx = 0, len = name.length; idx < len; idx++) {\n var character = name[idx];\n var code = toCharCode(character);\n encodedName += isRegularChar(code) ? character : \"#\" + toHexString(code);\n }\n _this.encodedName = encodedName;\n return _this;\n }\n PDFName.prototype.asBytes = function () {\n var bytes = [];\n var hex = '';\n var escaped = false;\n var pushByte = function (byte) {\n if (byte !== undefined)\n bytes.push(byte);\n escaped = false;\n };\n for (var idx = 1, len = this.encodedName.length; idx < len; idx++) {\n var char = this.encodedName[idx];\n var byte = toCharCode(char);\n var nextChar = this.encodedName[idx + 1];\n if (!escaped) {\n if (byte === CharCodes.Hash)\n escaped = true;\n else\n pushByte(byte);\n }\n else {\n if ((byte >= CharCodes.Zero && byte <= CharCodes.Nine) ||\n (byte >= CharCodes.a && byte <= CharCodes.f) ||\n (byte >= CharCodes.A && byte <= CharCodes.F)) {\n hex += char;\n if (hex.length === 2 ||\n !((nextChar >= '0' && nextChar <= '9') ||\n (nextChar >= 'a' && nextChar <= 'f') ||\n (nextChar >= 'A' && nextChar <= 'F'))) {\n pushByte(parseInt(hex, 16));\n hex = '';\n }\n }\n else {\n pushByte(byte);\n }\n }\n }\n return new Uint8Array(bytes);\n };\n // TODO: This should probably use `utf8Decode()`\n // TODO: Polyfill Array.from?\n PDFName.prototype.decodeText = function () {\n var bytes = this.asBytes();\n return String.fromCharCode.apply(String, Array.from(bytes));\n };\n PDFName.prototype.asString = function () {\n return this.encodedName;\n };\n /** @deprecated in favor of [[PDFName.asString]] */\n PDFName.prototype.value = function () {\n return this.encodedName;\n };\n PDFName.prototype.clone = function () {\n return this;\n };\n PDFName.prototype.toString = function () {\n return this.encodedName;\n };\n PDFName.prototype.sizeInBytes = function () {\n return this.encodedName.length;\n };\n PDFName.prototype.copyBytesInto = function (buffer, offset) {\n offset += copyStringIntoBuffer(this.encodedName, buffer, offset);\n return this.encodedName.length;\n };\n PDFName.of = function (name) {\n var decodedValue = decodeName(name);\n var instance = pool.get(decodedValue);\n if (!instance) {\n instance = new PDFName(ENFORCER, decodedValue);\n pool.set(decodedValue, instance);\n }\n return instance;\n };\n /* tslint:disable member-ordering */\n PDFName.Length = PDFName.of('Length');\n PDFName.FlateDecode = PDFName.of('FlateDecode');\n PDFName.Resources = PDFName.of('Resources');\n PDFName.Font = PDFName.of('Font');\n PDFName.XObject = PDFName.of('XObject');\n PDFName.ExtGState = PDFName.of('ExtGState');\n PDFName.Contents = PDFName.of('Contents');\n PDFName.Type = PDFName.of('Type');\n PDFName.Parent = PDFName.of('Parent');\n PDFName.MediaBox = PDFName.of('MediaBox');\n PDFName.Page = PDFName.of('Page');\n PDFName.Annots = PDFName.of('Annots');\n PDFName.TrimBox = PDFName.of('TrimBox');\n PDFName.ArtBox = PDFName.of('ArtBox');\n PDFName.BleedBox = PDFName.of('BleedBox');\n PDFName.CropBox = PDFName.of('CropBox');\n PDFName.Rotate = PDFName.of('Rotate');\n PDFName.Title = PDFName.of('Title');\n PDFName.Author = PDFName.of('Author');\n PDFName.Subject = PDFName.of('Subject');\n PDFName.Creator = PDFName.of('Creator');\n PDFName.Keywords = PDFName.of('Keywords');\n PDFName.Producer = PDFName.of('Producer');\n PDFName.CreationDate = PDFName.of('CreationDate');\n PDFName.ModDate = PDFName.of('ModDate');\n return PDFName;\n}(PDFObject));\nexport default PDFName;\n//# sourceMappingURL=PDFName.js.map","import { __extends } from \"tslib\";\nimport PDFObject from \"./PDFObject\";\nimport CharCodes from \"../syntax/CharCodes\";\nvar PDFNull = /** @class */ (function (_super) {\n __extends(PDFNull, _super);\n function PDFNull() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PDFNull.prototype.asNull = function () {\n return null;\n };\n PDFNull.prototype.clone = function () {\n return this;\n };\n PDFNull.prototype.toString = function () {\n return 'null';\n };\n PDFNull.prototype.sizeInBytes = function () {\n return 4;\n };\n PDFNull.prototype.copyBytesInto = function (buffer, offset) {\n buffer[offset++] = CharCodes.n;\n buffer[offset++] = CharCodes.u;\n buffer[offset++] = CharCodes.l;\n buffer[offset++] = CharCodes.l;\n return 4;\n };\n return PDFNull;\n}(PDFObject));\nexport default new PDFNull();\n//# sourceMappingURL=PDFNull.js.map","import { __extends, __spreadArrays } from \"tslib\";\nimport PDFName from \"./PDFName\";\nimport PDFNull from \"./PDFNull\";\nimport PDFObject from \"./PDFObject\";\nimport CharCodes from \"../syntax/CharCodes\";\nvar PDFDict = /** @class */ (function (_super) {\n __extends(PDFDict, _super);\n function PDFDict(map, context) {\n var _this = _super.call(this) || this;\n _this.dict = map;\n _this.context = context;\n return _this;\n }\n PDFDict.prototype.keys = function () {\n return Array.from(this.dict.keys());\n };\n PDFDict.prototype.values = function () {\n return Array.from(this.dict.values());\n };\n PDFDict.prototype.entries = function () {\n return Array.from(this.dict.entries());\n };\n PDFDict.prototype.set = function (key, value) {\n this.dict.set(key, value);\n };\n PDFDict.prototype.get = function (key, \n // TODO: `preservePDFNull` is for backwards compatibility. Should be\n // removed in next breaking API change.\n preservePDFNull) {\n if (preservePDFNull === void 0) { preservePDFNull = false; }\n var value = this.dict.get(key);\n if (value === PDFNull && !preservePDFNull)\n return undefined;\n return value;\n };\n PDFDict.prototype.has = function (key) {\n var value = this.dict.get(key);\n return value !== undefined && value !== PDFNull;\n };\n PDFDict.prototype.lookupMaybe = function (key) {\n var _a;\n var types = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n types[_i - 1] = arguments[_i];\n }\n // TODO: `preservePDFNull` is for backwards compatibility. Should be\n // removed in next breaking API change.\n var preservePDFNull = types.includes(PDFNull);\n var value = (_a = this.context).lookupMaybe.apply(_a, __spreadArrays([this.get(key, preservePDFNull)], types));\n if (value === PDFNull && !preservePDFNull)\n return undefined;\n return value;\n };\n PDFDict.prototype.lookup = function (key) {\n var _a;\n var types = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n types[_i - 1] = arguments[_i];\n }\n // TODO: `preservePDFNull` is for backwards compatibility. Should be\n // removed in next breaking API change.\n var preservePDFNull = types.includes(PDFNull);\n var value = (_a = this.context).lookup.apply(_a, __spreadArrays([this.get(key, preservePDFNull)], types));\n if (value === PDFNull && !preservePDFNull)\n return undefined;\n return value;\n };\n PDFDict.prototype.delete = function (key) {\n return this.dict.delete(key);\n };\n PDFDict.prototype.asMap = function () {\n return new Map(this.dict);\n };\n /** Generate a random key that doesn't exist in current key set */\n PDFDict.prototype.uniqueKey = function (tag) {\n if (tag === void 0) { tag = ''; }\n var existingKeys = this.keys();\n var key = PDFName.of(this.context.addRandomSuffix(tag, 10));\n while (existingKeys.includes(key)) {\n key = PDFName.of(this.context.addRandomSuffix(tag, 10));\n }\n return key;\n };\n PDFDict.prototype.clone = function (context) {\n var clone = PDFDict.withContext(context || this.context);\n var entries = this.entries();\n for (var idx = 0, len = entries.length; idx < len; idx++) {\n var _a = entries[idx], key = _a[0], value = _a[1];\n clone.set(key, value);\n }\n return clone;\n };\n PDFDict.prototype.toString = function () {\n var dictString = '<<\\n';\n var entries = this.entries();\n for (var idx = 0, len = entries.length; idx < len; idx++) {\n var _a = entries[idx], key = _a[0], value = _a[1];\n dictString += key.toString() + ' ' + value.toString() + '\\n';\n }\n dictString += '>>';\n return dictString;\n };\n PDFDict.prototype.sizeInBytes = function () {\n var size = 5;\n var entries = this.entries();\n for (var idx = 0, len = entries.length; idx < len; idx++) {\n var _a = entries[idx], key = _a[0], value = _a[1];\n size += key.sizeInBytes() + value.sizeInBytes() + 2;\n }\n return size;\n };\n PDFDict.prototype.copyBytesInto = function (buffer, offset) {\n var initialOffset = offset;\n buffer[offset++] = CharCodes.LessThan;\n buffer[offset++] = CharCodes.LessThan;\n buffer[offset++] = CharCodes.Newline;\n var entries = this.entries();\n for (var idx = 0, len = entries.length; idx < len; idx++) {\n var _a = entries[idx], key = _a[0], value = _a[1];\n offset += key.copyBytesInto(buffer, offset);\n buffer[offset++] = CharCodes.Space;\n offset += value.copyBytesInto(buffer, offset);\n buffer[offset++] = CharCodes.Newline;\n }\n buffer[offset++] = CharCodes.GreaterThan;\n buffer[offset++] = CharCodes.GreaterThan;\n return offset - initialOffset;\n };\n PDFDict.withContext = function (context) { return new PDFDict(new Map(), context); };\n PDFDict.fromMapWithContext = function (map, context) {\n return new PDFDict(map, context);\n };\n return PDFDict;\n}(PDFObject));\nexport default PDFDict;\n//# sourceMappingURL=PDFDict.js.map","import { __extends } from \"tslib\";\nimport { MethodNotImplementedError } from \"../errors\";\nimport PDFName from \"./PDFName\";\nimport PDFNumber from \"./PDFNumber\";\nimport PDFObject from \"./PDFObject\";\nimport CharCodes from \"../syntax/CharCodes\";\nvar PDFStream = /** @class */ (function (_super) {\n __extends(PDFStream, _super);\n function PDFStream(dict) {\n var _this = _super.call(this) || this;\n _this.dict = dict;\n return _this;\n }\n PDFStream.prototype.clone = function (_context) {\n throw new MethodNotImplementedError(this.constructor.name, 'clone');\n };\n PDFStream.prototype.getContentsString = function () {\n throw new MethodNotImplementedError(this.constructor.name, 'getContentsString');\n };\n PDFStream.prototype.getContents = function () {\n throw new MethodNotImplementedError(this.constructor.name, 'getContents');\n };\n PDFStream.prototype.getContentsSize = function () {\n throw new MethodNotImplementedError(this.constructor.name, 'getContentsSize');\n };\n PDFStream.prototype.updateDict = function () {\n var contentsSize = this.getContentsSize();\n this.dict.set(PDFName.Length, PDFNumber.of(contentsSize));\n };\n PDFStream.prototype.sizeInBytes = function () {\n this.updateDict();\n return this.dict.sizeInBytes() + this.getContentsSize() + 18;\n };\n PDFStream.prototype.toString = function () {\n this.updateDict();\n var streamString = this.dict.toString();\n streamString += '\\nstream\\n';\n streamString += this.getContentsString();\n streamString += '\\nendstream';\n return streamString;\n };\n PDFStream.prototype.copyBytesInto = function (buffer, offset) {\n this.updateDict();\n var initialOffset = offset;\n offset += this.dict.copyBytesInto(buffer, offset);\n buffer[offset++] = CharCodes.Newline;\n buffer[offset++] = CharCodes.s;\n buffer[offset++] = CharCodes.t;\n buffer[offset++] = CharCodes.r;\n buffer[offset++] = CharCodes.e;\n buffer[offset++] = CharCodes.a;\n buffer[offset++] = CharCodes.m;\n buffer[offset++] = CharCodes.Newline;\n var contents = this.getContents();\n for (var idx = 0, len = contents.length; idx < len; idx++) {\n buffer[offset++] = contents[idx];\n }\n buffer[offset++] = CharCodes.Newline;\n buffer[offset++] = CharCodes.e;\n buffer[offset++] = CharCodes.n;\n buffer[offset++] = CharCodes.d;\n buffer[offset++] = CharCodes.s;\n buffer[offset++] = CharCodes.t;\n buffer[offset++] = CharCodes.r;\n buffer[offset++] = CharCodes.e;\n buffer[offset++] = CharCodes.a;\n buffer[offset++] = CharCodes.m;\n return offset - initialOffset;\n };\n return PDFStream;\n}(PDFObject));\nexport default PDFStream;\n//# sourceMappingURL=PDFStream.js.map","import { __extends } from \"tslib\";\nimport PDFStream from \"./PDFStream\";\nimport { arrayAsString } from \"../../utils\";\nvar PDFRawStream = /** @class */ (function (_super) {\n __extends(PDFRawStream, _super);\n function PDFRawStream(dict, contents) {\n var _this = _super.call(this, dict) || this;\n _this.contents = contents;\n return _this;\n }\n PDFRawStream.prototype.asUint8Array = function () {\n return this.contents.slice();\n };\n PDFRawStream.prototype.clone = function (context) {\n return PDFRawStream.of(this.dict.clone(context), this.contents.slice());\n };\n PDFRawStream.prototype.getContentsString = function () {\n return arrayAsString(this.contents);\n };\n PDFRawStream.prototype.getContents = function () {\n return this.contents;\n };\n PDFRawStream.prototype.getContentsSize = function () {\n return this.contents.length;\n };\n PDFRawStream.of = function (dict, contents) {\n return new PDFRawStream(dict, contents);\n };\n return PDFRawStream;\n}(PDFStream));\nexport default PDFRawStream;\n//# sourceMappingURL=PDFRawStream.js.map","import { __extends } from \"tslib\";\nimport { PrivateConstructorError } from \"../errors\";\nimport PDFObject from \"./PDFObject\";\nimport { copyStringIntoBuffer } from \"../../utils\";\nvar ENFORCER = {};\nvar pool = new Map();\nvar PDFRef = /** @class */ (function (_super) {\n __extends(PDFRef, _super);\n function PDFRef(enforcer, objectNumber, generationNumber) {\n var _this = this;\n if (enforcer !== ENFORCER)\n throw new PrivateConstructorError('PDFRef');\n _this = _super.call(this) || this;\n _this.objectNumber = objectNumber;\n _this.generationNumber = generationNumber;\n _this.tag = objectNumber + \" \" + generationNumber + \" R\";\n return _this;\n }\n PDFRef.prototype.clone = function () {\n return this;\n };\n PDFRef.prototype.toString = function () {\n return this.tag;\n };\n PDFRef.prototype.sizeInBytes = function () {\n return this.tag.length;\n };\n PDFRef.prototype.copyBytesInto = function (buffer, offset) {\n offset += copyStringIntoBuffer(this.tag, buffer, offset);\n return this.tag.length;\n };\n PDFRef.of = function (objectNumber, generationNumber) {\n if (generationNumber === void 0) { generationNumber = 0; }\n var tag = objectNumber + \" \" + generationNumber + \" R\";\n var instance = pool.get(tag);\n if (!instance) {\n instance = new PDFRef(ENFORCER, objectNumber, generationNumber);\n pool.set(tag, instance);\n }\n return instance;\n };\n return PDFRef;\n}(PDFObject));\nexport default PDFRef;\n//# sourceMappingURL=PDFRef.js.map","import PDFObject from \"../objects/PDFObject\";\nimport CharCodes from \"../syntax/CharCodes\";\nimport { copyStringIntoBuffer } from \"../../utils\";\nvar PDFOperator = /** @class */ (function () {\n function PDFOperator(name, args) {\n this.name = name;\n this.args = args || [];\n }\n PDFOperator.prototype.clone = function (context) {\n var args = new Array(this.args.length);\n for (var idx = 0, len = args.length; idx < len; idx++) {\n var arg = this.args[idx];\n args[idx] = arg instanceof PDFObject ? arg.clone(context) : arg;\n }\n return PDFOperator.of(this.name, args);\n };\n PDFOperator.prototype.toString = function () {\n var value = '';\n for (var idx = 0, len = this.args.length; idx < len; idx++) {\n value += String(this.args[idx]) + ' ';\n }\n value += this.name;\n return value;\n };\n PDFOperator.prototype.sizeInBytes = function () {\n var size = 0;\n for (var idx = 0, len = this.args.length; idx < len; idx++) {\n var arg = this.args[idx];\n size += (arg instanceof PDFObject ? arg.sizeInBytes() : arg.length) + 1;\n }\n size += this.name.length;\n return size;\n };\n PDFOperator.prototype.copyBytesInto = function (buffer, offset) {\n var initialOffset = offset;\n for (var idx = 0, len = this.args.length; idx < len; idx++) {\n var arg = this.args[idx];\n if (arg instanceof PDFObject) {\n offset += arg.copyBytesInto(buffer, offset);\n }\n else {\n offset += copyStringIntoBuffer(arg, buffer, offset);\n }\n buffer[offset++] = CharCodes.Space;\n }\n offset += copyStringIntoBuffer(this.name, buffer, offset);\n return offset - initialOffset;\n };\n PDFOperator.of = function (name, args) {\n return new PDFOperator(name, args);\n };\n return PDFOperator;\n}());\nexport default PDFOperator;\n//# sourceMappingURL=PDFOperator.js.map","var PDFOperatorNames;\n(function (PDFOperatorNames) {\n // Non Stroking Color Operators\n PDFOperatorNames[\"NonStrokingColor\"] = \"sc\";\n PDFOperatorNames[\"NonStrokingColorN\"] = \"scn\";\n PDFOperatorNames[\"NonStrokingColorRgb\"] = \"rg\";\n PDFOperatorNames[\"NonStrokingColorGray\"] = \"g\";\n PDFOperatorNames[\"NonStrokingColorCmyk\"] = \"k\";\n PDFOperatorNames[\"NonStrokingColorspace\"] = \"cs\";\n // Stroking Color Operators\n PDFOperatorNames[\"StrokingColor\"] = \"SC\";\n PDFOperatorNames[\"StrokingColorN\"] = \"SCN\";\n PDFOperatorNames[\"StrokingColorRgb\"] = \"RG\";\n PDFOperatorNames[\"StrokingColorGray\"] = \"G\";\n PDFOperatorNames[\"StrokingColorCmyk\"] = \"K\";\n PDFOperatorNames[\"StrokingColorspace\"] = \"CS\";\n // Marked Content Operators\n PDFOperatorNames[\"BeginMarkedContentSequence\"] = \"BDC\";\n PDFOperatorNames[\"BeginMarkedContent\"] = \"BMC\";\n PDFOperatorNames[\"EndMarkedContent\"] = \"EMC\";\n PDFOperatorNames[\"MarkedContentPointWithProps\"] = \"DP\";\n PDFOperatorNames[\"MarkedContentPoint\"] = \"MP\";\n PDFOperatorNames[\"DrawObject\"] = \"Do\";\n // Graphics State Operators\n PDFOperatorNames[\"ConcatTransformationMatrix\"] = \"cm\";\n PDFOperatorNames[\"PopGraphicsState\"] = \"Q\";\n PDFOperatorNames[\"PushGraphicsState\"] = \"q\";\n PDFOperatorNames[\"SetFlatness\"] = \"i\";\n PDFOperatorNames[\"SetGraphicsStateParams\"] = \"gs\";\n PDFOperatorNames[\"SetLineCapStyle\"] = \"J\";\n PDFOperatorNames[\"SetLineDashPattern\"] = \"d\";\n PDFOperatorNames[\"SetLineJoinStyle\"] = \"j\";\n PDFOperatorNames[\"SetLineMiterLimit\"] = \"M\";\n PDFOperatorNames[\"SetLineWidth\"] = \"w\";\n PDFOperatorNames[\"SetTextMatrix\"] = \"Tm\";\n PDFOperatorNames[\"SetRenderingIntent\"] = \"ri\";\n // Graphics Operators\n PDFOperatorNames[\"AppendRectangle\"] = \"re\";\n PDFOperatorNames[\"BeginInlineImage\"] = \"BI\";\n PDFOperatorNames[\"BeginInlineImageData\"] = \"ID\";\n PDFOperatorNames[\"EndInlineImage\"] = \"EI\";\n PDFOperatorNames[\"ClipEvenOdd\"] = \"W*\";\n PDFOperatorNames[\"ClipNonZero\"] = \"W\";\n PDFOperatorNames[\"CloseAndStroke\"] = \"s\";\n PDFOperatorNames[\"CloseFillEvenOddAndStroke\"] = \"b*\";\n PDFOperatorNames[\"CloseFillNonZeroAndStroke\"] = \"b\";\n PDFOperatorNames[\"ClosePath\"] = \"h\";\n PDFOperatorNames[\"AppendBezierCurve\"] = \"c\";\n PDFOperatorNames[\"CurveToReplicateFinalPoint\"] = \"y\";\n PDFOperatorNames[\"CurveToReplicateInitialPoint\"] = \"v\";\n PDFOperatorNames[\"EndPath\"] = \"n\";\n PDFOperatorNames[\"FillEvenOddAndStroke\"] = \"B*\";\n PDFOperatorNames[\"FillEvenOdd\"] = \"f*\";\n PDFOperatorNames[\"FillNonZeroAndStroke\"] = \"B\";\n PDFOperatorNames[\"FillNonZero\"] = \"f\";\n PDFOperatorNames[\"LegacyFillNonZero\"] = \"F\";\n PDFOperatorNames[\"LineTo\"] = \"l\";\n PDFOperatorNames[\"MoveTo\"] = \"m\";\n PDFOperatorNames[\"ShadingFill\"] = \"sh\";\n PDFOperatorNames[\"StrokePath\"] = \"S\";\n // Text Operators\n PDFOperatorNames[\"BeginText\"] = \"BT\";\n PDFOperatorNames[\"EndText\"] = \"ET\";\n PDFOperatorNames[\"MoveText\"] = \"Td\";\n PDFOperatorNames[\"MoveTextSetLeading\"] = \"TD\";\n PDFOperatorNames[\"NextLine\"] = \"T*\";\n PDFOperatorNames[\"SetCharacterSpacing\"] = \"Tc\";\n PDFOperatorNames[\"SetFontAndSize\"] = \"Tf\";\n PDFOperatorNames[\"SetTextHorizontalScaling\"] = \"Tz\";\n PDFOperatorNames[\"SetTextLineHeight\"] = \"TL\";\n PDFOperatorNames[\"SetTextRenderingMode\"] = \"Tr\";\n PDFOperatorNames[\"SetTextRise\"] = \"Ts\";\n PDFOperatorNames[\"SetWordSpacing\"] = \"Tw\";\n PDFOperatorNames[\"ShowText\"] = \"Tj\";\n PDFOperatorNames[\"ShowTextAdjusted\"] = \"TJ\";\n PDFOperatorNames[\"ShowTextLine\"] = \"'\";\n PDFOperatorNames[\"ShowTextLineAndSpace\"] = \"\\\"\";\n // Type3 Font Operators\n PDFOperatorNames[\"Type3D0\"] = \"d0\";\n PDFOperatorNames[\"Type3D1\"] = \"d1\";\n // Compatibility Section Operators\n PDFOperatorNames[\"BeginCompatibilitySection\"] = \"BX\";\n PDFOperatorNames[\"EndCompatibilitySection\"] = \"EX\";\n})(PDFOperatorNames || (PDFOperatorNames = {}));\nexport default PDFOperatorNames;\n//# sourceMappingURL=PDFOperatorNames.js.map","import { __extends } from \"tslib\";\nimport pako from 'pako';\nimport { MethodNotImplementedError } from \"../errors\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFStream from \"../objects/PDFStream\";\nimport { Cache } from \"../../utils\";\nvar PDFFlateStream = /** @class */ (function (_super) {\n __extends(PDFFlateStream, _super);\n function PDFFlateStream(dict, encode) {\n var _this = _super.call(this, dict) || this;\n _this.computeContents = function () {\n var unencodedContents = _this.getUnencodedContents();\n return _this.encode ? pako.deflate(unencodedContents) : unencodedContents;\n };\n _this.encode = encode;\n if (encode)\n dict.set(PDFName.of('Filter'), PDFName.of('FlateDecode'));\n _this.contentsCache = Cache.populatedBy(_this.computeContents);\n return _this;\n }\n PDFFlateStream.prototype.getContents = function () {\n return this.contentsCache.access();\n };\n PDFFlateStream.prototype.getContentsSize = function () {\n return this.contentsCache.access().length;\n };\n PDFFlateStream.prototype.getUnencodedContents = function () {\n throw new MethodNotImplementedError(this.constructor.name, 'getUnencodedContents');\n };\n return PDFFlateStream;\n}(PDFStream));\nexport default PDFFlateStream;\n//# sourceMappingURL=PDFFlateStream.js.map","import { __extends } from \"tslib\";\nimport PDFFlateStream from \"./PDFFlateStream\";\nimport CharCodes from \"../syntax/CharCodes\";\nvar PDFContentStream = /** @class */ (function (_super) {\n __extends(PDFContentStream, _super);\n function PDFContentStream(dict, operators, encode) {\n if (encode === void 0) { encode = true; }\n var _this = _super.call(this, dict, encode) || this;\n _this.operators = operators;\n return _this;\n }\n PDFContentStream.prototype.push = function () {\n var _a;\n var operators = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operators[_i] = arguments[_i];\n }\n (_a = this.operators).push.apply(_a, operators);\n };\n PDFContentStream.prototype.clone = function (context) {\n var operators = new Array(this.operators.length);\n for (var idx = 0, len = this.operators.length; idx < len; idx++) {\n operators[idx] = this.operators[idx].clone(context);\n }\n var _a = this, dict = _a.dict, encode = _a.encode;\n return PDFContentStream.of(dict.clone(context), operators, encode);\n };\n PDFContentStream.prototype.getContentsString = function () {\n var value = '';\n for (var idx = 0, len = this.operators.length; idx < len; idx++) {\n value += this.operators[idx] + \"\\n\";\n }\n return value;\n };\n PDFContentStream.prototype.getUnencodedContents = function () {\n var buffer = new Uint8Array(this.getUnencodedContentsSize());\n var offset = 0;\n for (var idx = 0, len = this.operators.length; idx < len; idx++) {\n offset += this.operators[idx].copyBytesInto(buffer, offset);\n buffer[offset++] = CharCodes.Newline;\n }\n return buffer;\n };\n PDFContentStream.prototype.getUnencodedContentsSize = function () {\n var size = 0;\n for (var idx = 0, len = this.operators.length; idx < len; idx++) {\n size += this.operators[idx].sizeInBytes() + 1;\n }\n return size;\n };\n PDFContentStream.of = function (dict, operators, encode) {\n if (encode === void 0) { encode = true; }\n return new PDFContentStream(dict, operators, encode);\n };\n return PDFContentStream;\n}(PDFFlateStream));\nexport default PDFContentStream;\n//# sourceMappingURL=PDFContentStream.js.map","/**\n * Generates a pseudo random number. Although it is not cryptographically secure\n * and uniformly distributed, it is not a concern for the intended use-case,\n * which is to generate distinct numbers.\n *\n * Credit: https://stackoverflow.com/a/19303725/10254049\n */\nvar SimpleRNG = /** @class */ (function () {\n function SimpleRNG(seed) {\n this.seed = seed;\n }\n SimpleRNG.prototype.nextInt = function () {\n var x = Math.sin(this.seed++) * 10000;\n return x - Math.floor(x);\n };\n SimpleRNG.withSeed = function (seed) { return new SimpleRNG(seed); };\n return SimpleRNG;\n}());\nexport { SimpleRNG };\n//# sourceMappingURL=rng.js.map","import { __assign } from \"tslib\";\nimport pako from 'pako';\nimport PDFHeader from \"./document/PDFHeader\";\nimport { UnexpectedObjectTypeError } from \"./errors\";\nimport PDFArray from \"./objects/PDFArray\";\nimport PDFBool from \"./objects/PDFBool\";\nimport PDFDict from \"./objects/PDFDict\";\nimport PDFName from \"./objects/PDFName\";\nimport PDFNull from \"./objects/PDFNull\";\nimport PDFNumber from \"./objects/PDFNumber\";\nimport PDFObject from \"./objects/PDFObject\";\nimport PDFRawStream from \"./objects/PDFRawStream\";\nimport PDFRef from \"./objects/PDFRef\";\nimport PDFOperator from \"./operators/PDFOperator\";\nimport Ops from \"./operators/PDFOperatorNames\";\nimport PDFContentStream from \"./structures/PDFContentStream\";\nimport { typedArrayFor } from \"../utils\";\nimport { SimpleRNG } from \"../utils/rng\";\nvar byAscendingObjectNumber = function (_a, _b) {\n var a = _a[0];\n var b = _b[0];\n return a.objectNumber - b.objectNumber;\n};\nvar PDFContext = /** @class */ (function () {\n function PDFContext() {\n this.largestObjectNumber = 0;\n this.header = PDFHeader.forVersion(1, 7);\n this.trailerInfo = {};\n this.indirectObjects = new Map();\n this.rng = SimpleRNG.withSeed(1);\n }\n PDFContext.prototype.assign = function (ref, object) {\n this.indirectObjects.set(ref, object);\n if (ref.objectNumber > this.largestObjectNumber) {\n this.largestObjectNumber = ref.objectNumber;\n }\n };\n PDFContext.prototype.nextRef = function () {\n this.largestObjectNumber += 1;\n return PDFRef.of(this.largestObjectNumber);\n };\n PDFContext.prototype.register = function (object) {\n var ref = this.nextRef();\n this.assign(ref, object);\n return ref;\n };\n PDFContext.prototype.delete = function (ref) {\n return this.indirectObjects.delete(ref);\n };\n PDFContext.prototype.lookupMaybe = function (ref) {\n var types = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n types[_i - 1] = arguments[_i];\n }\n // TODO: `preservePDFNull` is for backwards compatibility. Should be\n // removed in next breaking API change.\n var preservePDFNull = types.includes(PDFNull);\n var result = ref instanceof PDFRef ? this.indirectObjects.get(ref) : ref;\n if (!result || (result === PDFNull && !preservePDFNull))\n return undefined;\n for (var idx = 0, len = types.length; idx < len; idx++) {\n var type = types[idx];\n if (type === PDFNull) {\n if (result === PDFNull)\n return result;\n }\n else {\n if (result instanceof type)\n return result;\n }\n }\n throw new UnexpectedObjectTypeError(types, result);\n };\n PDFContext.prototype.lookup = function (ref) {\n var types = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n types[_i - 1] = arguments[_i];\n }\n var result = ref instanceof PDFRef ? this.indirectObjects.get(ref) : ref;\n if (types.length === 0)\n return result;\n for (var idx = 0, len = types.length; idx < len; idx++) {\n var type = types[idx];\n if (type === PDFNull) {\n if (result === PDFNull)\n return result;\n }\n else {\n if (result instanceof type)\n return result;\n }\n }\n throw new UnexpectedObjectTypeError(types, result);\n };\n PDFContext.prototype.getObjectRef = function (pdfObject) {\n var entries = Array.from(this.indirectObjects.entries());\n for (var idx = 0, len = entries.length; idx < len; idx++) {\n var _a = entries[idx], ref = _a[0], object = _a[1];\n if (object === pdfObject) {\n return ref;\n }\n }\n return undefined;\n };\n PDFContext.prototype.enumerateIndirectObjects = function () {\n return Array.from(this.indirectObjects.entries()).sort(byAscendingObjectNumber);\n };\n PDFContext.prototype.obj = function (literal) {\n if (literal instanceof PDFObject) {\n return literal;\n }\n else if (literal === null || literal === undefined) {\n return PDFNull;\n }\n else if (typeof literal === 'string') {\n return PDFName.of(literal);\n }\n else if (typeof literal === 'number') {\n return PDFNumber.of(literal);\n }\n else if (typeof literal === 'boolean') {\n return literal ? PDFBool.True : PDFBool.False;\n }\n else if (Array.isArray(literal)) {\n var array = PDFArray.withContext(this);\n for (var idx = 0, len = literal.length; idx < len; idx++) {\n array.push(this.obj(literal[idx]));\n }\n return array;\n }\n else {\n var dict = PDFDict.withContext(this);\n var keys = Object.keys(literal);\n for (var idx = 0, len = keys.length; idx < len; idx++) {\n var key = keys[idx];\n var value = literal[key];\n if (value !== undefined)\n dict.set(PDFName.of(key), this.obj(value));\n }\n return dict;\n }\n };\n PDFContext.prototype.stream = function (contents, dict) {\n if (dict === void 0) { dict = {}; }\n return PDFRawStream.of(this.obj(dict), typedArrayFor(contents));\n };\n PDFContext.prototype.flateStream = function (contents, dict) {\n if (dict === void 0) { dict = {}; }\n return this.stream(pako.deflate(typedArrayFor(contents)), __assign(__assign({}, dict), { Filter: 'FlateDecode' }));\n };\n PDFContext.prototype.contentStream = function (operators, dict) {\n if (dict === void 0) { dict = {}; }\n return PDFContentStream.of(this.obj(dict), operators);\n };\n PDFContext.prototype.formXObject = function (operators, dict) {\n if (dict === void 0) { dict = {}; }\n return this.contentStream(operators, __assign(__assign({ BBox: this.obj([0, 0, 0, 0]), Matrix: this.obj([1, 0, 0, 1, 0, 0]) }, dict), { Type: 'XObject', Subtype: 'Form' }));\n };\n /*\n * Reference to PDFContentStream that contains a single PDFOperator: `q`.\n * Used by [[PDFPageLeaf]] instances to ensure that when content streams are\n * added to a modified PDF, they start in the default, unchanged graphics\n * state.\n */\n PDFContext.prototype.getPushGraphicsStateContentStream = function () {\n if (this.pushGraphicsStateContentStreamRef) {\n return this.pushGraphicsStateContentStreamRef;\n }\n var dict = this.obj({});\n var op = PDFOperator.of(Ops.PushGraphicsState);\n var stream = PDFContentStream.of(dict, [op]);\n this.pushGraphicsStateContentStreamRef = this.register(stream);\n return this.pushGraphicsStateContentStreamRef;\n };\n /*\n * Reference to PDFContentStream that contains a single PDFOperator: `Q`.\n * Used by [[PDFPageLeaf]] instances to ensure that when content streams are\n * added to a modified PDF, they start in the default, unchanged graphics\n * state.\n */\n PDFContext.prototype.getPopGraphicsStateContentStream = function () {\n if (this.popGraphicsStateContentStreamRef) {\n return this.popGraphicsStateContentStreamRef;\n }\n var dict = this.obj({});\n var op = PDFOperator.of(Ops.PopGraphicsState);\n var stream = PDFContentStream.of(dict, [op]);\n this.popGraphicsStateContentStreamRef = this.register(stream);\n return this.popGraphicsStateContentStreamRef;\n };\n PDFContext.prototype.addRandomSuffix = function (prefix, suffixLength) {\n if (suffixLength === void 0) { suffixLength = 4; }\n return prefix + \"-\" + Math.floor(this.rng.nextInt() * Math.pow(10, suffixLength));\n };\n PDFContext.create = function () { return new PDFContext(); };\n return PDFContext;\n}());\nexport default PDFContext;\n//# sourceMappingURL=PDFContext.js.map","import { __extends } from \"tslib\";\nimport PDFArray from \"../objects/PDFArray\";\nimport PDFDict from \"../objects/PDFDict\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFNumber from \"../objects/PDFNumber\";\nimport PDFStream from \"../objects/PDFStream\";\nvar PDFPageLeaf = /** @class */ (function (_super) {\n __extends(PDFPageLeaf, _super);\n function PDFPageLeaf(map, context, autoNormalizeCTM) {\n if (autoNormalizeCTM === void 0) { autoNormalizeCTM = true; }\n var _this = _super.call(this, map, context) || this;\n _this.normalized = false;\n _this.autoNormalizeCTM = autoNormalizeCTM;\n return _this;\n }\n PDFPageLeaf.prototype.clone = function (context) {\n var clone = PDFPageLeaf.fromMapWithContext(new Map(), context || this.context, this.autoNormalizeCTM);\n var entries = this.entries();\n for (var idx = 0, len = entries.length; idx < len; idx++) {\n var _a = entries[idx], key = _a[0], value = _a[1];\n clone.set(key, value);\n }\n return clone;\n };\n PDFPageLeaf.prototype.Parent = function () {\n return this.lookupMaybe(PDFName.Parent, PDFDict);\n };\n PDFPageLeaf.prototype.Contents = function () {\n return this.lookup(PDFName.of('Contents'));\n };\n PDFPageLeaf.prototype.Annots = function () {\n return this.lookupMaybe(PDFName.Annots, PDFArray);\n };\n PDFPageLeaf.prototype.BleedBox = function () {\n return this.lookupMaybe(PDFName.BleedBox, PDFArray);\n };\n PDFPageLeaf.prototype.TrimBox = function () {\n return this.lookupMaybe(PDFName.TrimBox, PDFArray);\n };\n PDFPageLeaf.prototype.ArtBox = function () {\n return this.lookupMaybe(PDFName.ArtBox, PDFArray);\n };\n PDFPageLeaf.prototype.Resources = function () {\n var dictOrRef = this.getInheritableAttribute(PDFName.Resources);\n return this.context.lookupMaybe(dictOrRef, PDFDict);\n };\n PDFPageLeaf.prototype.MediaBox = function () {\n var arrayOrRef = this.getInheritableAttribute(PDFName.MediaBox);\n return this.context.lookup(arrayOrRef, PDFArray);\n };\n PDFPageLeaf.prototype.CropBox = function () {\n var arrayOrRef = this.getInheritableAttribute(PDFName.CropBox);\n return this.context.lookupMaybe(arrayOrRef, PDFArray);\n };\n PDFPageLeaf.prototype.Rotate = function () {\n var numberOrRef = this.getInheritableAttribute(PDFName.Rotate);\n return this.context.lookupMaybe(numberOrRef, PDFNumber);\n };\n PDFPageLeaf.prototype.getInheritableAttribute = function (name) {\n var attribute;\n this.ascend(function (node) {\n if (!attribute)\n attribute = node.get(name);\n });\n return attribute;\n };\n PDFPageLeaf.prototype.setParent = function (parentRef) {\n this.set(PDFName.Parent, parentRef);\n };\n PDFPageLeaf.prototype.addContentStream = function (contentStreamRef) {\n var Contents = this.normalizedEntries().Contents || this.context.obj([]);\n this.set(PDFName.Contents, Contents);\n Contents.push(contentStreamRef);\n };\n PDFPageLeaf.prototype.wrapContentStreams = function (startStream, endStream) {\n var Contents = this.Contents();\n if (Contents instanceof PDFArray) {\n Contents.insert(0, startStream);\n Contents.push(endStream);\n return true;\n }\n return false;\n };\n PDFPageLeaf.prototype.addAnnot = function (annotRef) {\n var Annots = this.normalizedEntries().Annots;\n Annots.push(annotRef);\n };\n PDFPageLeaf.prototype.removeAnnot = function (annotRef) {\n var Annots = this.normalizedEntries().Annots;\n var index = Annots.indexOf(annotRef);\n if (index !== undefined) {\n Annots.remove(index);\n }\n };\n PDFPageLeaf.prototype.setFontDictionary = function (name, fontDictRef) {\n var Font = this.normalizedEntries().Font;\n Font.set(name, fontDictRef);\n };\n PDFPageLeaf.prototype.newFontDictionaryKey = function (tag) {\n var Font = this.normalizedEntries().Font;\n return Font.uniqueKey(tag);\n };\n PDFPageLeaf.prototype.newFontDictionary = function (tag, fontDictRef) {\n var key = this.newFontDictionaryKey(tag);\n this.setFontDictionary(key, fontDictRef);\n return key;\n };\n PDFPageLeaf.prototype.setXObject = function (name, xObjectRef) {\n var XObject = this.normalizedEntries().XObject;\n XObject.set(name, xObjectRef);\n };\n PDFPageLeaf.prototype.newXObjectKey = function (tag) {\n var XObject = this.normalizedEntries().XObject;\n return XObject.uniqueKey(tag);\n };\n PDFPageLeaf.prototype.newXObject = function (tag, xObjectRef) {\n var key = this.newXObjectKey(tag);\n this.setXObject(key, xObjectRef);\n return key;\n };\n PDFPageLeaf.prototype.setExtGState = function (name, extGStateRef) {\n var ExtGState = this.normalizedEntries().ExtGState;\n ExtGState.set(name, extGStateRef);\n };\n PDFPageLeaf.prototype.newExtGStateKey = function (tag) {\n var ExtGState = this.normalizedEntries().ExtGState;\n return ExtGState.uniqueKey(tag);\n };\n PDFPageLeaf.prototype.newExtGState = function (tag, extGStateRef) {\n var key = this.newExtGStateKey(tag);\n this.setExtGState(key, extGStateRef);\n return key;\n };\n PDFPageLeaf.prototype.ascend = function (visitor) {\n visitor(this);\n var Parent = this.Parent();\n if (Parent)\n Parent.ascend(visitor);\n };\n PDFPageLeaf.prototype.normalize = function () {\n if (this.normalized)\n return;\n var context = this.context;\n var contentsRef = this.get(PDFName.Contents);\n var contents = this.context.lookup(contentsRef);\n if (contents instanceof PDFStream) {\n this.set(PDFName.Contents, context.obj([contentsRef]));\n }\n if (this.autoNormalizeCTM) {\n this.wrapContentStreams(this.context.getPushGraphicsStateContentStream(), this.context.getPopGraphicsStateContentStream());\n }\n // TODO: Clone `Resources` if it is inherited\n var dictOrRef = this.getInheritableAttribute(PDFName.Resources);\n var Resources = context.lookupMaybe(dictOrRef, PDFDict) || context.obj({});\n this.set(PDFName.Resources, Resources);\n // TODO: Clone `Font` if it is inherited\n var Font = Resources.lookupMaybe(PDFName.Font, PDFDict) || context.obj({});\n Resources.set(PDFName.Font, Font);\n // TODO: Clone `XObject` if it is inherited\n var XObject = Resources.lookupMaybe(PDFName.XObject, PDFDict) || context.obj({});\n Resources.set(PDFName.XObject, XObject);\n // TODO: Clone `ExtGState` if it is inherited\n var ExtGState = Resources.lookupMaybe(PDFName.ExtGState, PDFDict) || context.obj({});\n Resources.set(PDFName.ExtGState, ExtGState);\n var Annots = this.Annots() || context.obj([]);\n this.set(PDFName.Annots, Annots);\n this.normalized = true;\n };\n PDFPageLeaf.prototype.normalizedEntries = function () {\n this.normalize();\n var Annots = this.Annots();\n var Resources = this.Resources();\n var Contents = this.Contents();\n return {\n Annots: Annots,\n Resources: Resources,\n Contents: Contents,\n Font: Resources.lookup(PDFName.Font, PDFDict),\n XObject: Resources.lookup(PDFName.XObject, PDFDict),\n ExtGState: Resources.lookup(PDFName.ExtGState, PDFDict),\n };\n };\n PDFPageLeaf.InheritableEntries = [\n 'Resources',\n 'MediaBox',\n 'CropBox',\n 'Rotate',\n ];\n PDFPageLeaf.withContextAndParent = function (context, parent) {\n var dict = new Map();\n dict.set(PDFName.Type, PDFName.Page);\n dict.set(PDFName.Parent, parent);\n dict.set(PDFName.Resources, context.obj({}));\n dict.set(PDFName.MediaBox, context.obj([0, 0, 612, 792]));\n return new PDFPageLeaf(dict, context, false);\n };\n PDFPageLeaf.fromMapWithContext = function (map, context, autoNormalizeCTM) {\n if (autoNormalizeCTM === void 0) { autoNormalizeCTM = true; }\n return new PDFPageLeaf(map, context, autoNormalizeCTM);\n };\n return PDFPageLeaf;\n}(PDFDict));\nexport default PDFPageLeaf;\n//# sourceMappingURL=PDFPageLeaf.js.map","import PDFArray from \"./objects/PDFArray\";\nimport PDFDict from \"./objects/PDFDict\";\nimport PDFName from \"./objects/PDFName\";\nimport PDFRef from \"./objects/PDFRef\";\nimport PDFStream from \"./objects/PDFStream\";\nimport PDFPageLeaf from \"./structures/PDFPageLeaf\";\n/**\n * PDFObjectCopier copies PDFObjects from a src context to a dest context.\n * The primary use case for this is to copy pages between PDFs.\n *\n * _Copying_ an object with a PDFObjectCopier is different from _cloning_ an\n * object with its [[PDFObject.clone]] method:\n *\n * ```\n * const src: PDFContext = ...\n * const dest: PDFContext = ...\n * const originalObject: PDFObject = ...\n * const copiedObject = PDFObjectCopier.for(src, dest).copy(originalObject);\n * const clonedObject = originalObject.clone();\n * ```\n *\n * Copying an object is equivalent to cloning it and then copying over any other\n * objects that it references. Note that only dictionaries, arrays, and streams\n * (or structures build from them) can contain indirect references to other\n * objects. Copying a PDFObject that is not a dictionary, array, or stream is\n * supported, but is equivalent to cloning it.\n */\nvar PDFObjectCopier = /** @class */ (function () {\n function PDFObjectCopier(src, dest) {\n var _this = this;\n this.traversedObjects = new Map();\n // prettier-ignore\n this.copy = function (object) { return (object instanceof PDFPageLeaf ? _this.copyPDFPage(object)\n : object instanceof PDFDict ? _this.copyPDFDict(object)\n : object instanceof PDFArray ? _this.copyPDFArray(object)\n : object instanceof PDFStream ? _this.copyPDFStream(object)\n : object instanceof PDFRef ? _this.copyPDFIndirectObject(object)\n : object.clone()); };\n this.copyPDFPage = function (originalPage) {\n var clonedPage = originalPage.clone();\n // Move any entries that the originalPage is inheriting from its parent\n // tree nodes directly into originalPage so they are preserved during\n // the copy.\n var InheritableEntries = PDFPageLeaf.InheritableEntries;\n for (var idx = 0, len = InheritableEntries.length; idx < len; idx++) {\n var key = PDFName.of(InheritableEntries[idx]);\n var value = clonedPage.getInheritableAttribute(key);\n if (!clonedPage.get(key) && value)\n clonedPage.set(key, value);\n }\n // Remove the parent reference to prevent the whole donor document's page\n // tree from being copied when we only need a single page.\n clonedPage.delete(PDFName.of('Parent'));\n return _this.copyPDFDict(clonedPage);\n };\n this.copyPDFDict = function (originalDict) {\n if (_this.traversedObjects.has(originalDict)) {\n return _this.traversedObjects.get(originalDict);\n }\n var clonedDict = originalDict.clone(_this.dest);\n _this.traversedObjects.set(originalDict, clonedDict);\n var entries = originalDict.entries();\n for (var idx = 0, len = entries.length; idx < len; idx++) {\n var _a = entries[idx], key = _a[0], value = _a[1];\n clonedDict.set(key, _this.copy(value));\n }\n return clonedDict;\n };\n this.copyPDFArray = function (originalArray) {\n if (_this.traversedObjects.has(originalArray)) {\n return _this.traversedObjects.get(originalArray);\n }\n var clonedArray = originalArray.clone(_this.dest);\n _this.traversedObjects.set(originalArray, clonedArray);\n for (var idx = 0, len = originalArray.size(); idx < len; idx++) {\n var value = originalArray.get(idx);\n clonedArray.set(idx, _this.copy(value));\n }\n return clonedArray;\n };\n this.copyPDFStream = function (originalStream) {\n if (_this.traversedObjects.has(originalStream)) {\n return _this.traversedObjects.get(originalStream);\n }\n var clonedStream = originalStream.clone(_this.dest);\n _this.traversedObjects.set(originalStream, clonedStream);\n var entries = originalStream.dict.entries();\n for (var idx = 0, len = entries.length; idx < len; idx++) {\n var _a = entries[idx], key = _a[0], value = _a[1];\n clonedStream.dict.set(key, _this.copy(value));\n }\n return clonedStream;\n };\n this.copyPDFIndirectObject = function (ref) {\n var alreadyMapped = _this.traversedObjects.has(ref);\n if (!alreadyMapped) {\n var newRef = _this.dest.nextRef();\n _this.traversedObjects.set(ref, newRef);\n var dereferencedValue = _this.src.lookup(ref);\n if (dereferencedValue) {\n var cloned = _this.copy(dereferencedValue);\n _this.dest.assign(newRef, cloned);\n }\n }\n return _this.traversedObjects.get(ref);\n };\n this.src = src;\n this.dest = dest;\n }\n PDFObjectCopier.for = function (src, dest) {\n return new PDFObjectCopier(src, dest);\n };\n return PDFObjectCopier;\n}());\nexport default PDFObjectCopier;\n//# sourceMappingURL=PDFObjectCopier.js.map","import PDFRef from \"../objects/PDFRef\";\nimport CharCodes from \"../syntax/CharCodes\";\nimport { copyStringIntoBuffer, padStart } from \"../../utils\";\n/**\n * Entries should be added using the [[addEntry]] and [[addDeletedEntry]]\n * methods **in order of ascending object number**.\n */\nvar PDFCrossRefSection = /** @class */ (function () {\n function PDFCrossRefSection(firstEntry) {\n this.subsections = firstEntry ? [[firstEntry]] : [];\n this.chunkIdx = 0;\n this.chunkLength = firstEntry ? 1 : 0;\n }\n PDFCrossRefSection.prototype.addEntry = function (ref, offset) {\n this.append({ ref: ref, offset: offset, deleted: false });\n };\n PDFCrossRefSection.prototype.addDeletedEntry = function (ref, nextFreeObjectNumber) {\n this.append({ ref: ref, offset: nextFreeObjectNumber, deleted: true });\n };\n PDFCrossRefSection.prototype.toString = function () {\n var section = \"xref\\n\";\n for (var rangeIdx = 0, rangeLen = this.subsections.length; rangeIdx < rangeLen; rangeIdx++) {\n var range = this.subsections[rangeIdx];\n section += range[0].ref.objectNumber + \" \" + range.length + \"\\n\";\n for (var entryIdx = 0, entryLen = range.length; entryIdx < entryLen; entryIdx++) {\n var entry = range[entryIdx];\n section += padStart(String(entry.offset), 10, '0');\n section += ' ';\n section += padStart(String(entry.ref.generationNumber), 5, '0');\n section += ' ';\n section += entry.deleted ? 'f' : 'n';\n section += ' \\n';\n }\n }\n return section;\n };\n PDFCrossRefSection.prototype.sizeInBytes = function () {\n var size = 5;\n for (var idx = 0, len = this.subsections.length; idx < len; idx++) {\n var subsection = this.subsections[idx];\n var subsectionLength = subsection.length;\n var firstEntry = subsection[0];\n size += 2;\n size += String(firstEntry.ref.objectNumber).length;\n size += String(subsectionLength).length;\n size += 20 * subsectionLength;\n }\n return size;\n };\n PDFCrossRefSection.prototype.copyBytesInto = function (buffer, offset) {\n var initialOffset = offset;\n buffer[offset++] = CharCodes.x;\n buffer[offset++] = CharCodes.r;\n buffer[offset++] = CharCodes.e;\n buffer[offset++] = CharCodes.f;\n buffer[offset++] = CharCodes.Newline;\n offset += this.copySubsectionsIntoBuffer(this.subsections, buffer, offset);\n return offset - initialOffset;\n };\n PDFCrossRefSection.prototype.copySubsectionsIntoBuffer = function (subsections, buffer, offset) {\n var initialOffset = offset;\n var length = subsections.length;\n for (var idx = 0; idx < length; idx++) {\n var subsection = this.subsections[idx];\n var firstObjectNumber = String(subsection[0].ref.objectNumber);\n offset += copyStringIntoBuffer(firstObjectNumber, buffer, offset);\n buffer[offset++] = CharCodes.Space;\n var rangeLength = String(subsection.length);\n offset += copyStringIntoBuffer(rangeLength, buffer, offset);\n buffer[offset++] = CharCodes.Newline;\n offset += this.copyEntriesIntoBuffer(subsection, buffer, offset);\n }\n return offset - initialOffset;\n };\n PDFCrossRefSection.prototype.copyEntriesIntoBuffer = function (entries, buffer, offset) {\n var length = entries.length;\n for (var idx = 0; idx < length; idx++) {\n var entry = entries[idx];\n var entryOffset = padStart(String(entry.offset), 10, '0');\n offset += copyStringIntoBuffer(entryOffset, buffer, offset);\n buffer[offset++] = CharCodes.Space;\n var entryGen = padStart(String(entry.ref.generationNumber), 5, '0');\n offset += copyStringIntoBuffer(entryGen, buffer, offset);\n buffer[offset++] = CharCodes.Space;\n buffer[offset++] = entry.deleted ? CharCodes.f : CharCodes.n;\n buffer[offset++] = CharCodes.Space;\n buffer[offset++] = CharCodes.Newline;\n }\n return 20 * length;\n };\n PDFCrossRefSection.prototype.append = function (currEntry) {\n if (this.chunkLength === 0) {\n this.subsections.push([currEntry]);\n this.chunkIdx = 0;\n this.chunkLength = 1;\n return;\n }\n var chunk = this.subsections[this.chunkIdx];\n var prevEntry = chunk[this.chunkLength - 1];\n if (currEntry.ref.objectNumber - prevEntry.ref.objectNumber > 1) {\n this.subsections.push([currEntry]);\n this.chunkIdx += 1;\n this.chunkLength = 1;\n }\n else {\n chunk.push(currEntry);\n this.chunkLength += 1;\n }\n };\n PDFCrossRefSection.create = function () {\n return new PDFCrossRefSection({\n ref: PDFRef.of(0, 65535),\n offset: 0,\n deleted: true,\n });\n };\n PDFCrossRefSection.createEmpty = function () { return new PDFCrossRefSection(); };\n return PDFCrossRefSection;\n}());\nexport default PDFCrossRefSection;\n//# sourceMappingURL=PDFCrossRefSection.js.map","import CharCodes from \"../syntax/CharCodes\";\nimport { copyStringIntoBuffer } from \"../../utils\";\nvar PDFTrailer = /** @class */ (function () {\n function PDFTrailer(lastXRefOffset) {\n this.lastXRefOffset = String(lastXRefOffset);\n }\n PDFTrailer.prototype.toString = function () {\n return \"startxref\\n\" + this.lastXRefOffset + \"\\n%%EOF\";\n };\n PDFTrailer.prototype.sizeInBytes = function () {\n return 16 + this.lastXRefOffset.length;\n };\n PDFTrailer.prototype.copyBytesInto = function (buffer, offset) {\n var initialOffset = offset;\n buffer[offset++] = CharCodes.s;\n buffer[offset++] = CharCodes.t;\n buffer[offset++] = CharCodes.a;\n buffer[offset++] = CharCodes.r;\n buffer[offset++] = CharCodes.t;\n buffer[offset++] = CharCodes.x;\n buffer[offset++] = CharCodes.r;\n buffer[offset++] = CharCodes.e;\n buffer[offset++] = CharCodes.f;\n buffer[offset++] = CharCodes.Newline;\n offset += copyStringIntoBuffer(this.lastXRefOffset, buffer, offset);\n buffer[offset++] = CharCodes.Newline;\n buffer[offset++] = CharCodes.Percent;\n buffer[offset++] = CharCodes.Percent;\n buffer[offset++] = CharCodes.E;\n buffer[offset++] = CharCodes.O;\n buffer[offset++] = CharCodes.F;\n return offset - initialOffset;\n };\n PDFTrailer.forLastCrossRefSectionOffset = function (offset) {\n return new PDFTrailer(offset);\n };\n return PDFTrailer;\n}());\nexport default PDFTrailer;\n//# sourceMappingURL=PDFTrailer.js.map","import CharCodes from \"../syntax/CharCodes\";\nvar PDFTrailerDict = /** @class */ (function () {\n function PDFTrailerDict(dict) {\n this.dict = dict;\n }\n PDFTrailerDict.prototype.toString = function () {\n return \"trailer\\n\" + this.dict.toString();\n };\n PDFTrailerDict.prototype.sizeInBytes = function () {\n return 8 + this.dict.sizeInBytes();\n };\n PDFTrailerDict.prototype.copyBytesInto = function (buffer, offset) {\n var initialOffset = offset;\n buffer[offset++] = CharCodes.t;\n buffer[offset++] = CharCodes.r;\n buffer[offset++] = CharCodes.a;\n buffer[offset++] = CharCodes.i;\n buffer[offset++] = CharCodes.l;\n buffer[offset++] = CharCodes.e;\n buffer[offset++] = CharCodes.r;\n buffer[offset++] = CharCodes.Newline;\n offset += this.dict.copyBytesInto(buffer, offset);\n return offset - initialOffset;\n };\n PDFTrailerDict.of = function (dict) { return new PDFTrailerDict(dict); };\n return PDFTrailerDict;\n}());\nexport default PDFTrailerDict;\n//# sourceMappingURL=PDFTrailerDict.js.map","import { __extends } from \"tslib\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFNumber from \"../objects/PDFNumber\";\nimport PDFFlateStream from \"./PDFFlateStream\";\nimport CharCodes from \"../syntax/CharCodes\";\nimport { copyStringIntoBuffer, last } from \"../../utils\";\nvar PDFObjectStream = /** @class */ (function (_super) {\n __extends(PDFObjectStream, _super);\n function PDFObjectStream(context, objects, encode) {\n if (encode === void 0) { encode = true; }\n var _this = _super.call(this, context.obj({}), encode) || this;\n _this.objects = objects;\n _this.offsets = _this.computeObjectOffsets();\n _this.offsetsString = _this.computeOffsetsString();\n _this.dict.set(PDFName.of('Type'), PDFName.of('ObjStm'));\n _this.dict.set(PDFName.of('N'), PDFNumber.of(_this.objects.length));\n _this.dict.set(PDFName.of('First'), PDFNumber.of(_this.offsetsString.length));\n return _this;\n }\n PDFObjectStream.prototype.getObjectsCount = function () {\n return this.objects.length;\n };\n PDFObjectStream.prototype.clone = function (context) {\n return PDFObjectStream.withContextAndObjects(context || this.dict.context, this.objects.slice(), this.encode);\n };\n PDFObjectStream.prototype.getContentsString = function () {\n var value = this.offsetsString;\n for (var idx = 0, len = this.objects.length; idx < len; idx++) {\n var _a = this.objects[idx], object = _a[1];\n value += object + \"\\n\";\n }\n return value;\n };\n PDFObjectStream.prototype.getUnencodedContents = function () {\n var buffer = new Uint8Array(this.getUnencodedContentsSize());\n var offset = copyStringIntoBuffer(this.offsetsString, buffer, 0);\n for (var idx = 0, len = this.objects.length; idx < len; idx++) {\n var _a = this.objects[idx], object = _a[1];\n offset += object.copyBytesInto(buffer, offset);\n buffer[offset++] = CharCodes.Newline;\n }\n return buffer;\n };\n PDFObjectStream.prototype.getUnencodedContentsSize = function () {\n return (this.offsetsString.length +\n last(this.offsets)[1] +\n last(this.objects)[1].sizeInBytes() +\n 1);\n };\n PDFObjectStream.prototype.computeOffsetsString = function () {\n var offsetsString = '';\n for (var idx = 0, len = this.offsets.length; idx < len; idx++) {\n var _a = this.offsets[idx], objectNumber = _a[0], offset = _a[1];\n offsetsString += objectNumber + \" \" + offset + \" \";\n }\n return offsetsString;\n };\n PDFObjectStream.prototype.computeObjectOffsets = function () {\n var offset = 0;\n var offsets = new Array(this.objects.length);\n for (var idx = 0, len = this.objects.length; idx < len; idx++) {\n var _a = this.objects[idx], ref = _a[0], object = _a[1];\n offsets[idx] = [ref.objectNumber, offset];\n offset += object.sizeInBytes() + 1; // '\\n'\n }\n return offsets;\n };\n PDFObjectStream.withContextAndObjects = function (context, objects, encode) {\n if (encode === void 0) { encode = true; }\n return new PDFObjectStream(context, objects, encode);\n };\n return PDFObjectStream;\n}(PDFFlateStream));\nexport default PDFObjectStream;\n//# sourceMappingURL=PDFObjectStream.js.map","import { __awaiter, __generator } from \"tslib\";\nimport PDFCrossRefSection from \"../document/PDFCrossRefSection\";\nimport PDFHeader from \"../document/PDFHeader\";\nimport PDFTrailer from \"../document/PDFTrailer\";\nimport PDFTrailerDict from \"../document/PDFTrailerDict\";\nimport PDFObjectStream from \"../structures/PDFObjectStream\";\nimport CharCodes from \"../syntax/CharCodes\";\nimport { copyStringIntoBuffer, waitForTick } from \"../../utils\";\nvar PDFWriter = /** @class */ (function () {\n function PDFWriter(context, objectsPerTick) {\n var _this = this;\n this.parsedObjects = 0;\n this.shouldWaitForTick = function (n) {\n _this.parsedObjects += n;\n return _this.parsedObjects % _this.objectsPerTick === 0;\n };\n this.context = context;\n this.objectsPerTick = objectsPerTick;\n }\n PDFWriter.prototype.serializeToBuffer = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a, size, header, indirectObjects, xref, trailerDict, trailer, offset, buffer, idx, len, _b, ref, object, objectNumber, generationNumber, n;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0: return [4 /*yield*/, this.computeBufferSize()];\n case 1:\n _a = _c.sent(), size = _a.size, header = _a.header, indirectObjects = _a.indirectObjects, xref = _a.xref, trailerDict = _a.trailerDict, trailer = _a.trailer;\n offset = 0;\n buffer = new Uint8Array(size);\n offset += header.copyBytesInto(buffer, offset);\n buffer[offset++] = CharCodes.Newline;\n buffer[offset++] = CharCodes.Newline;\n idx = 0, len = indirectObjects.length;\n _c.label = 2;\n case 2:\n if (!(idx < len)) return [3 /*break*/, 5];\n _b = indirectObjects[idx], ref = _b[0], object = _b[1];\n objectNumber = String(ref.objectNumber);\n offset += copyStringIntoBuffer(objectNumber, buffer, offset);\n buffer[offset++] = CharCodes.Space;\n generationNumber = String(ref.generationNumber);\n offset += copyStringIntoBuffer(generationNumber, buffer, offset);\n buffer[offset++] = CharCodes.Space;\n buffer[offset++] = CharCodes.o;\n buffer[offset++] = CharCodes.b;\n buffer[offset++] = CharCodes.j;\n buffer[offset++] = CharCodes.Newline;\n offset += object.copyBytesInto(buffer, offset);\n buffer[offset++] = CharCodes.Newline;\n buffer[offset++] = CharCodes.e;\n buffer[offset++] = CharCodes.n;\n buffer[offset++] = CharCodes.d;\n buffer[offset++] = CharCodes.o;\n buffer[offset++] = CharCodes.b;\n buffer[offset++] = CharCodes.j;\n buffer[offset++] = CharCodes.Newline;\n buffer[offset++] = CharCodes.Newline;\n n = object instanceof PDFObjectStream ? object.getObjectsCount() : 1;\n if (!this.shouldWaitForTick(n)) return [3 /*break*/, 4];\n return [4 /*yield*/, waitForTick()];\n case 3:\n _c.sent();\n _c.label = 4;\n case 4:\n idx++;\n return [3 /*break*/, 2];\n case 5:\n if (xref) {\n offset += xref.copyBytesInto(buffer, offset);\n buffer[offset++] = CharCodes.Newline;\n }\n if (trailerDict) {\n offset += trailerDict.copyBytesInto(buffer, offset);\n buffer[offset++] = CharCodes.Newline;\n buffer[offset++] = CharCodes.Newline;\n }\n offset += trailer.copyBytesInto(buffer, offset);\n return [2 /*return*/, buffer];\n }\n });\n });\n };\n PDFWriter.prototype.computeIndirectObjectSize = function (_a) {\n var ref = _a[0], object = _a[1];\n var refSize = ref.sizeInBytes() + 3; // 'R' -> 'obj\\n'\n var objectSize = object.sizeInBytes() + 9; // '\\nendobj\\n\\n'\n return refSize + objectSize;\n };\n PDFWriter.prototype.createTrailerDict = function () {\n return this.context.obj({\n Size: this.context.largestObjectNumber + 1,\n Root: this.context.trailerInfo.Root,\n Encrypt: this.context.trailerInfo.Encrypt,\n Info: this.context.trailerInfo.Info,\n ID: this.context.trailerInfo.ID,\n });\n };\n PDFWriter.prototype.computeBufferSize = function () {\n return __awaiter(this, void 0, void 0, function () {\n var header, size, xref, indirectObjects, idx, len, indirectObject, ref, xrefOffset, trailerDict, trailer;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n header = PDFHeader.forVersion(1, 7);\n size = header.sizeInBytes() + 2;\n xref = PDFCrossRefSection.create();\n indirectObjects = this.context.enumerateIndirectObjects();\n idx = 0, len = indirectObjects.length;\n _a.label = 1;\n case 1:\n if (!(idx < len)) return [3 /*break*/, 4];\n indirectObject = indirectObjects[idx];\n ref = indirectObject[0];\n xref.addEntry(ref, size);\n size += this.computeIndirectObjectSize(indirectObject);\n if (!this.shouldWaitForTick(1)) return [3 /*break*/, 3];\n return [4 /*yield*/, waitForTick()];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3:\n idx++;\n return [3 /*break*/, 1];\n case 4:\n xrefOffset = size;\n size += xref.sizeInBytes() + 1; // '\\n'\n trailerDict = PDFTrailerDict.of(this.createTrailerDict());\n size += trailerDict.sizeInBytes() + 2; // '\\n\\n'\n trailer = PDFTrailer.forLastCrossRefSectionOffset(xrefOffset);\n size += trailer.sizeInBytes();\n return [2 /*return*/, { size: size, header: header, indirectObjects: indirectObjects, xref: xref, trailerDict: trailerDict, trailer: trailer }];\n }\n });\n });\n };\n PDFWriter.forContext = function (context, objectsPerTick) {\n return new PDFWriter(context, objectsPerTick);\n };\n return PDFWriter;\n}());\nexport default PDFWriter;\n//# sourceMappingURL=PDFWriter.js.map","import { __extends } from \"tslib\";\nimport PDFObject from \"./PDFObject\";\nvar PDFInvalidObject = /** @class */ (function (_super) {\n __extends(PDFInvalidObject, _super);\n function PDFInvalidObject(data) {\n var _this = _super.call(this) || this;\n _this.data = data;\n return _this;\n }\n PDFInvalidObject.prototype.clone = function () {\n return PDFInvalidObject.of(this.data.slice());\n };\n PDFInvalidObject.prototype.toString = function () {\n return \"PDFInvalidObject(\" + this.data.length + \" bytes)\";\n };\n PDFInvalidObject.prototype.sizeInBytes = function () {\n return this.data.length;\n };\n PDFInvalidObject.prototype.copyBytesInto = function (buffer, offset) {\n var length = this.data.length;\n for (var idx = 0; idx < length; idx++) {\n buffer[offset++] = this.data[idx];\n }\n return length;\n };\n PDFInvalidObject.of = function (data) { return new PDFInvalidObject(data); };\n return PDFInvalidObject;\n}(PDFObject));\nexport default PDFInvalidObject;\n//# sourceMappingURL=PDFInvalidObject.js.map","import { __extends } from \"tslib\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFRef from \"../objects/PDFRef\";\nimport PDFFlateStream from \"./PDFFlateStream\";\nimport { bytesFor, Cache, reverseArray, sizeInBytes, sum } from \"../../utils\";\nexport var EntryType;\n(function (EntryType) {\n EntryType[EntryType[\"Deleted\"] = 0] = \"Deleted\";\n EntryType[EntryType[\"Uncompressed\"] = 1] = \"Uncompressed\";\n EntryType[EntryType[\"Compressed\"] = 2] = \"Compressed\";\n})(EntryType || (EntryType = {}));\n/**\n * Entries should be added using the [[addDeletedEntry]],\n * [[addUncompressedEntry]], and [[addCompressedEntry]] methods\n * **in order of ascending object number**.\n */\nvar PDFCrossRefStream = /** @class */ (function (_super) {\n __extends(PDFCrossRefStream, _super);\n function PDFCrossRefStream(dict, entries, encode) {\n if (encode === void 0) { encode = true; }\n var _this = _super.call(this, dict, encode) || this;\n // Returns an array of integer pairs for each subsection of the cross ref\n // section, where each integer pair represents:\n // firstObjectNumber(OfSection), length(OfSection)\n _this.computeIndex = function () {\n var subsections = [];\n var subsectionLength = 0;\n for (var idx = 0, len = _this.entries.length; idx < len; idx++) {\n var currEntry = _this.entries[idx];\n var prevEntry = _this.entries[idx - 1];\n if (idx === 0) {\n subsections.push(currEntry.ref.objectNumber);\n }\n else if (currEntry.ref.objectNumber - prevEntry.ref.objectNumber > 1) {\n subsections.push(subsectionLength);\n subsections.push(currEntry.ref.objectNumber);\n subsectionLength = 0;\n }\n subsectionLength += 1;\n }\n subsections.push(subsectionLength);\n return subsections;\n };\n _this.computeEntryTuples = function () {\n var entryTuples = new Array(_this.entries.length);\n for (var idx = 0, len = _this.entries.length; idx < len; idx++) {\n var entry = _this.entries[idx];\n if (entry.type === EntryType.Deleted) {\n var type = entry.type, nextFreeObjectNumber = entry.nextFreeObjectNumber, ref = entry.ref;\n entryTuples[idx] = [type, nextFreeObjectNumber, ref.generationNumber];\n }\n if (entry.type === EntryType.Uncompressed) {\n var type = entry.type, offset = entry.offset, ref = entry.ref;\n entryTuples[idx] = [type, offset, ref.generationNumber];\n }\n if (entry.type === EntryType.Compressed) {\n var type = entry.type, objectStreamRef = entry.objectStreamRef, index = entry.index;\n entryTuples[idx] = [type, objectStreamRef.objectNumber, index];\n }\n }\n return entryTuples;\n };\n _this.computeMaxEntryByteWidths = function () {\n var entryTuples = _this.entryTuplesCache.access();\n var widths = [0, 0, 0];\n for (var idx = 0, len = entryTuples.length; idx < len; idx++) {\n var _a = entryTuples[idx], first = _a[0], second = _a[1], third = _a[2];\n var firstSize = sizeInBytes(first);\n var secondSize = sizeInBytes(second);\n var thirdSize = sizeInBytes(third);\n if (firstSize > widths[0])\n widths[0] = firstSize;\n if (secondSize > widths[1])\n widths[1] = secondSize;\n if (thirdSize > widths[2])\n widths[2] = thirdSize;\n }\n return widths;\n };\n _this.entries = entries || [];\n _this.entryTuplesCache = Cache.populatedBy(_this.computeEntryTuples);\n _this.maxByteWidthsCache = Cache.populatedBy(_this.computeMaxEntryByteWidths);\n _this.indexCache = Cache.populatedBy(_this.computeIndex);\n dict.set(PDFName.of('Type'), PDFName.of('XRef'));\n return _this;\n }\n PDFCrossRefStream.prototype.addDeletedEntry = function (ref, nextFreeObjectNumber) {\n var type = EntryType.Deleted;\n this.entries.push({ type: type, ref: ref, nextFreeObjectNumber: nextFreeObjectNumber });\n this.entryTuplesCache.invalidate();\n this.maxByteWidthsCache.invalidate();\n this.indexCache.invalidate();\n this.contentsCache.invalidate();\n };\n PDFCrossRefStream.prototype.addUncompressedEntry = function (ref, offset) {\n var type = EntryType.Uncompressed;\n this.entries.push({ type: type, ref: ref, offset: offset });\n this.entryTuplesCache.invalidate();\n this.maxByteWidthsCache.invalidate();\n this.indexCache.invalidate();\n this.contentsCache.invalidate();\n };\n PDFCrossRefStream.prototype.addCompressedEntry = function (ref, objectStreamRef, index) {\n var type = EntryType.Compressed;\n this.entries.push({ type: type, ref: ref, objectStreamRef: objectStreamRef, index: index });\n this.entryTuplesCache.invalidate();\n this.maxByteWidthsCache.invalidate();\n this.indexCache.invalidate();\n this.contentsCache.invalidate();\n };\n PDFCrossRefStream.prototype.clone = function (context) {\n var _a = this, dict = _a.dict, entries = _a.entries, encode = _a.encode;\n return PDFCrossRefStream.of(dict.clone(context), entries.slice(), encode);\n };\n PDFCrossRefStream.prototype.getContentsString = function () {\n var entryTuples = this.entryTuplesCache.access();\n var byteWidths = this.maxByteWidthsCache.access();\n var value = '';\n for (var entryIdx = 0, entriesLen = entryTuples.length; entryIdx < entriesLen; entryIdx++) {\n var _a = entryTuples[entryIdx], first = _a[0], second = _a[1], third = _a[2];\n var firstBytes = reverseArray(bytesFor(first));\n var secondBytes = reverseArray(bytesFor(second));\n var thirdBytes = reverseArray(bytesFor(third));\n for (var idx = byteWidths[0] - 1; idx >= 0; idx--) {\n value += (firstBytes[idx] || 0).toString(2);\n }\n for (var idx = byteWidths[1] - 1; idx >= 0; idx--) {\n value += (secondBytes[idx] || 0).toString(2);\n }\n for (var idx = byteWidths[2] - 1; idx >= 0; idx--) {\n value += (thirdBytes[idx] || 0).toString(2);\n }\n }\n return value;\n };\n PDFCrossRefStream.prototype.getUnencodedContents = function () {\n var entryTuples = this.entryTuplesCache.access();\n var byteWidths = this.maxByteWidthsCache.access();\n var buffer = new Uint8Array(this.getUnencodedContentsSize());\n var offset = 0;\n for (var entryIdx = 0, entriesLen = entryTuples.length; entryIdx < entriesLen; entryIdx++) {\n var _a = entryTuples[entryIdx], first = _a[0], second = _a[1], third = _a[2];\n var firstBytes = reverseArray(bytesFor(first));\n var secondBytes = reverseArray(bytesFor(second));\n var thirdBytes = reverseArray(bytesFor(third));\n for (var idx = byteWidths[0] - 1; idx >= 0; idx--) {\n buffer[offset++] = firstBytes[idx] || 0;\n }\n for (var idx = byteWidths[1] - 1; idx >= 0; idx--) {\n buffer[offset++] = secondBytes[idx] || 0;\n }\n for (var idx = byteWidths[2] - 1; idx >= 0; idx--) {\n buffer[offset++] = thirdBytes[idx] || 0;\n }\n }\n return buffer;\n };\n PDFCrossRefStream.prototype.getUnencodedContentsSize = function () {\n var byteWidths = this.maxByteWidthsCache.access();\n var entryWidth = sum(byteWidths);\n return entryWidth * this.entries.length;\n };\n PDFCrossRefStream.prototype.updateDict = function () {\n _super.prototype.updateDict.call(this);\n var byteWidths = this.maxByteWidthsCache.access();\n var index = this.indexCache.access();\n var context = this.dict.context;\n this.dict.set(PDFName.of('W'), context.obj(byteWidths));\n this.dict.set(PDFName.of('Index'), context.obj(index));\n };\n PDFCrossRefStream.create = function (dict, encode) {\n if (encode === void 0) { encode = true; }\n var stream = new PDFCrossRefStream(dict, [], encode);\n stream.addDeletedEntry(PDFRef.of(0, 65535), 0);\n return stream;\n };\n PDFCrossRefStream.of = function (dict, entries, encode) {\n if (encode === void 0) { encode = true; }\n return new PDFCrossRefStream(dict, entries, encode);\n };\n return PDFCrossRefStream;\n}(PDFFlateStream));\nexport default PDFCrossRefStream;\n//# sourceMappingURL=PDFCrossRefStream.js.map","import { __awaiter, __extends, __generator } from \"tslib\";\nimport PDFHeader from \"../document/PDFHeader\";\nimport PDFTrailer from \"../document/PDFTrailer\";\nimport PDFInvalidObject from \"../objects/PDFInvalidObject\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFNumber from \"../objects/PDFNumber\";\nimport PDFRef from \"../objects/PDFRef\";\nimport PDFStream from \"../objects/PDFStream\";\nimport PDFCrossRefStream from \"../structures/PDFCrossRefStream\";\nimport PDFObjectStream from \"../structures/PDFObjectStream\";\nimport PDFWriter from \"./PDFWriter\";\nimport { last, waitForTick } from \"../../utils\";\nvar PDFStreamWriter = /** @class */ (function (_super) {\n __extends(PDFStreamWriter, _super);\n function PDFStreamWriter(context, objectsPerTick, encodeStreams, objectsPerStream) {\n var _this = _super.call(this, context, objectsPerTick) || this;\n _this.encodeStreams = encodeStreams;\n _this.objectsPerStream = objectsPerStream;\n return _this;\n }\n PDFStreamWriter.prototype.computeBufferSize = function () {\n return __awaiter(this, void 0, void 0, function () {\n var objectNumber, header, size, xrefStream, uncompressedObjects, compressedObjects, objectStreamRefs, indirectObjects, idx, len, indirectObject, ref, object, shouldNotCompress, chunk, objectStreamRef, idx, len, chunk, ref, objectStream, xrefStreamRef, xrefOffset, trailer;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n objectNumber = this.context.largestObjectNumber + 1;\n header = PDFHeader.forVersion(1, 7);\n size = header.sizeInBytes() + 2;\n xrefStream = PDFCrossRefStream.create(this.createTrailerDict(), this.encodeStreams);\n uncompressedObjects = [];\n compressedObjects = [];\n objectStreamRefs = [];\n indirectObjects = this.context.enumerateIndirectObjects();\n idx = 0, len = indirectObjects.length;\n _a.label = 1;\n case 1:\n if (!(idx < len)) return [3 /*break*/, 6];\n indirectObject = indirectObjects[idx];\n ref = indirectObject[0], object = indirectObject[1];\n shouldNotCompress = ref === this.context.trailerInfo.Encrypt ||\n object instanceof PDFStream ||\n object instanceof PDFInvalidObject ||\n ref.generationNumber !== 0;\n if (!shouldNotCompress) return [3 /*break*/, 4];\n uncompressedObjects.push(indirectObject);\n xrefStream.addUncompressedEntry(ref, size);\n size += this.computeIndirectObjectSize(indirectObject);\n if (!this.shouldWaitForTick(1)) return [3 /*break*/, 3];\n return [4 /*yield*/, waitForTick()];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3: return [3 /*break*/, 5];\n case 4:\n chunk = last(compressedObjects);\n objectStreamRef = last(objectStreamRefs);\n if (!chunk || chunk.length % this.objectsPerStream === 0) {\n chunk = [];\n compressedObjects.push(chunk);\n objectStreamRef = PDFRef.of(objectNumber++);\n objectStreamRefs.push(objectStreamRef);\n }\n xrefStream.addCompressedEntry(ref, objectStreamRef, chunk.length);\n chunk.push(indirectObject);\n _a.label = 5;\n case 5:\n idx++;\n return [3 /*break*/, 1];\n case 6:\n idx = 0, len = compressedObjects.length;\n _a.label = 7;\n case 7:\n if (!(idx < len)) return [3 /*break*/, 10];\n chunk = compressedObjects[idx];\n ref = objectStreamRefs[idx];\n objectStream = PDFObjectStream.withContextAndObjects(this.context, chunk, this.encodeStreams);\n xrefStream.addUncompressedEntry(ref, size);\n size += this.computeIndirectObjectSize([ref, objectStream]);\n uncompressedObjects.push([ref, objectStream]);\n if (!this.shouldWaitForTick(chunk.length)) return [3 /*break*/, 9];\n return [4 /*yield*/, waitForTick()];\n case 8:\n _a.sent();\n _a.label = 9;\n case 9:\n idx++;\n return [3 /*break*/, 7];\n case 10:\n xrefStreamRef = PDFRef.of(objectNumber++);\n xrefStream.dict.set(PDFName.of('Size'), PDFNumber.of(objectNumber));\n xrefStream.addUncompressedEntry(xrefStreamRef, size);\n xrefOffset = size;\n size += this.computeIndirectObjectSize([xrefStreamRef, xrefStream]);\n uncompressedObjects.push([xrefStreamRef, xrefStream]);\n trailer = PDFTrailer.forLastCrossRefSectionOffset(xrefOffset);\n size += trailer.sizeInBytes();\n return [2 /*return*/, { size: size, header: header, indirectObjects: uncompressedObjects, trailer: trailer }];\n }\n });\n });\n };\n PDFStreamWriter.forContext = function (context, objectsPerTick, encodeStreams, objectsPerStream) {\n if (encodeStreams === void 0) { encodeStreams = true; }\n if (objectsPerStream === void 0) { objectsPerStream = 50; }\n return new PDFStreamWriter(context, objectsPerTick, encodeStreams, objectsPerStream);\n };\n return PDFStreamWriter;\n}(PDFWriter));\nexport default PDFStreamWriter;\n//# sourceMappingURL=PDFStreamWriter.js.map","import { __extends } from \"tslib\";\nimport PDFObject from \"./PDFObject\";\nimport CharCodes from \"../syntax/CharCodes\";\nimport { copyStringIntoBuffer, toHexStringOfMinLength, utf16Decode, utf16Encode, pdfDocEncodingDecode, parseDate, hasUtf16BOM, } from \"../../utils\";\nimport { InvalidPDFDateStringError } from \"../errors\";\nvar PDFHexString = /** @class */ (function (_super) {\n __extends(PDFHexString, _super);\n function PDFHexString(value) {\n var _this = _super.call(this) || this;\n _this.value = value;\n return _this;\n }\n PDFHexString.prototype.asBytes = function () {\n // Append a zero if the number of digits is odd. See PDF spec 7.3.4.3\n var hex = this.value + (this.value.length % 2 === 1 ? '0' : '');\n var hexLength = hex.length;\n var bytes = new Uint8Array(hex.length / 2);\n var hexOffset = 0;\n var bytesOffset = 0;\n // Interpret each pair of hex digits as a single byte\n while (hexOffset < hexLength) {\n var byte = parseInt(hex.substring(hexOffset, hexOffset + 2), 16);\n bytes[bytesOffset] = byte;\n hexOffset += 2;\n bytesOffset += 1;\n }\n return bytes;\n };\n PDFHexString.prototype.decodeText = function () {\n var bytes = this.asBytes();\n if (hasUtf16BOM(bytes))\n return utf16Decode(bytes);\n return pdfDocEncodingDecode(bytes);\n };\n PDFHexString.prototype.decodeDate = function () {\n var text = this.decodeText();\n var date = parseDate(text);\n if (!date)\n throw new InvalidPDFDateStringError(text);\n return date;\n };\n PDFHexString.prototype.asString = function () {\n return this.value;\n };\n PDFHexString.prototype.clone = function () {\n return PDFHexString.of(this.value);\n };\n PDFHexString.prototype.toString = function () {\n return \"<\" + this.value + \">\";\n };\n PDFHexString.prototype.sizeInBytes = function () {\n return this.value.length + 2;\n };\n PDFHexString.prototype.copyBytesInto = function (buffer, offset) {\n buffer[offset++] = CharCodes.LessThan;\n offset += copyStringIntoBuffer(this.value, buffer, offset);\n buffer[offset++] = CharCodes.GreaterThan;\n return this.value.length + 2;\n };\n PDFHexString.of = function (value) { return new PDFHexString(value); };\n PDFHexString.fromText = function (value) {\n var encoded = utf16Encode(value);\n var hex = '';\n for (var idx = 0, len = encoded.length; idx < len; idx++) {\n hex += toHexStringOfMinLength(encoded[idx], 4);\n }\n return new PDFHexString(hex);\n };\n return PDFHexString;\n}(PDFObject));\nexport default PDFHexString;\n//# sourceMappingURL=PDFHexString.js.map","import { Encodings, Font, FontNames, } from '@pdf-lib/standard-fonts';\nimport PDFHexString from \"../objects/PDFHexString\";\nimport { toCodePoint, toHexString } from \"../../utils\";\n/**\n * A note of thanks to the developers of https://github.com/foliojs/pdfkit, as\n * this class borrows from:\n * https://github.com/foliojs/pdfkit/blob/f91bdd61c164a72ea06be1a43dc0a412afc3925f/lib/font/afm.coffee\n */\nvar StandardFontEmbedder = /** @class */ (function () {\n function StandardFontEmbedder(fontName, customName) {\n // prettier-ignore\n this.encoding = (fontName === FontNames.ZapfDingbats ? Encodings.ZapfDingbats\n : fontName === FontNames.Symbol ? Encodings.Symbol\n : Encodings.WinAnsi);\n this.font = Font.load(fontName);\n this.fontName = this.font.FontName;\n this.customName = customName;\n }\n /**\n * Encode the JavaScript string into this font. (JavaScript encodes strings in\n * Unicode, but standard fonts use either WinAnsi, ZapfDingbats, or Symbol\n * encodings)\n */\n StandardFontEmbedder.prototype.encodeText = function (text) {\n var glyphs = this.encodeTextAsGlyphs(text);\n var hexCodes = new Array(glyphs.length);\n for (var idx = 0, len = glyphs.length; idx < len; idx++) {\n hexCodes[idx] = toHexString(glyphs[idx].code);\n }\n return PDFHexString.of(hexCodes.join(''));\n };\n StandardFontEmbedder.prototype.widthOfTextAtSize = function (text, size) {\n var glyphs = this.encodeTextAsGlyphs(text);\n var totalWidth = 0;\n for (var idx = 0, len = glyphs.length; idx < len; idx++) {\n var left = glyphs[idx].name;\n var right = (glyphs[idx + 1] || {}).name;\n var kernAmount = this.font.getXAxisKerningForPair(left, right) || 0;\n totalWidth += this.widthOfGlyph(left) + kernAmount;\n }\n var scale = size / 1000;\n return totalWidth * scale;\n };\n StandardFontEmbedder.prototype.heightOfFontAtSize = function (size, options) {\n if (options === void 0) { options = {}; }\n var _a = options.descender, descender = _a === void 0 ? true : _a;\n var _b = this.font, Ascender = _b.Ascender, Descender = _b.Descender, FontBBox = _b.FontBBox;\n var yTop = Ascender || FontBBox[3];\n var yBottom = Descender || FontBBox[1];\n var height = yTop - yBottom;\n if (!descender)\n height += Descender || 0;\n return (height / 1000) * size;\n };\n StandardFontEmbedder.prototype.sizeOfFontAtHeight = function (height) {\n var _a = this.font, Ascender = _a.Ascender, Descender = _a.Descender, FontBBox = _a.FontBBox;\n var yTop = Ascender || FontBBox[3];\n var yBottom = Descender || FontBBox[1];\n return (1000 * height) / (yTop - yBottom);\n };\n StandardFontEmbedder.prototype.embedIntoContext = function (context, ref) {\n var fontDict = context.obj({\n Type: 'Font',\n Subtype: 'Type1',\n BaseFont: this.customName || this.fontName,\n Encoding: this.encoding === Encodings.WinAnsi ? 'WinAnsiEncoding' : undefined,\n });\n if (ref) {\n context.assign(ref, fontDict);\n return ref;\n }\n else {\n return context.register(fontDict);\n }\n };\n StandardFontEmbedder.prototype.widthOfGlyph = function (glyphName) {\n // Default to 250 if font doesn't specify a width\n return this.font.getWidthOfGlyph(glyphName) || 250;\n };\n StandardFontEmbedder.prototype.encodeTextAsGlyphs = function (text) {\n var codePoints = Array.from(text);\n var glyphs = new Array(codePoints.length);\n for (var idx = 0, len = codePoints.length; idx < len; idx++) {\n var codePoint = toCodePoint(codePoints[idx]);\n glyphs[idx] = this.encoding.encodeUnicodeCodePoint(codePoint);\n }\n return glyphs;\n };\n StandardFontEmbedder.for = function (fontName, customName) {\n return new StandardFontEmbedder(fontName, customName);\n };\n return StandardFontEmbedder;\n}());\nexport default StandardFontEmbedder;\n//# sourceMappingURL=StandardFontEmbedder.js.map","import { toHexString, toHexStringOfMinLength } from \"../../utils\";\nimport { hasSurrogates, highSurrogate, isWithinBMP, lowSurrogate, } from \"../../utils/unicode\";\n/** `glyphs` should be an array of unique glyphs */\nexport var createCmap = function (glyphs, glyphId) {\n var bfChars = new Array(glyphs.length);\n for (var idx = 0, len = glyphs.length; idx < len; idx++) {\n var glyph = glyphs[idx];\n var id = cmapHexFormat(cmapHexString(glyphId(glyph)));\n var unicode = cmapHexFormat.apply(void 0, glyph.codePoints.map(cmapCodePointFormat));\n bfChars[idx] = [id, unicode];\n }\n return fillCmapTemplate(bfChars);\n};\n/* =============================== Templates ================================ */\nvar fillCmapTemplate = function (bfChars) { return \"/CIDInit /ProcSet findresource begin\\n12 dict begin\\nbegincmap\\n/CIDSystemInfo <<\\n /Registry (Adobe)\\n /Ordering (UCS)\\n /Supplement 0\\n>> def\\n/CMapName /Adobe-Identity-UCS def\\n/CMapType 2 def\\n1 begincodespacerange\\n<0000>\\nendcodespacerange\\n\" + bfChars.length + \" beginbfchar\\n\" + bfChars.map(function (_a) {\n var glyphId = _a[0], codePoint = _a[1];\n return glyphId + \" \" + codePoint;\n}).join('\\n') + \"\\nendbfchar\\nendcmap\\nCMapName currentdict /CMap defineresource pop\\nend\\nend\"; };\n/* =============================== Utilities ================================ */\nvar cmapHexFormat = function () {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n return \"<\" + values.join('') + \">\";\n};\nvar cmapHexString = function (value) { return toHexStringOfMinLength(value, 4); };\nvar cmapCodePointFormat = function (codePoint) {\n if (isWithinBMP(codePoint))\n return cmapHexString(codePoint);\n if (hasSurrogates(codePoint)) {\n var hs = highSurrogate(codePoint);\n var ls = lowSurrogate(codePoint);\n return \"\" + cmapHexString(hs) + cmapHexString(ls);\n }\n var hex = toHexString(codePoint);\n var msg = \"0x\" + hex + \" is not a valid UTF-8 or UTF-16 codepoint.\";\n throw new Error(msg);\n};\n//# sourceMappingURL=CMap.js.map","// prettier-ignore\nvar makeFontFlags = function (options) {\n var flags = 0;\n var flipBit = function (bit) { flags |= (1 << (bit - 1)); };\n if (options.fixedPitch)\n flipBit(1);\n if (options.serif)\n flipBit(2);\n if (options.symbolic)\n flipBit(3);\n if (options.script)\n flipBit(4);\n if (options.nonsymbolic)\n flipBit(6);\n if (options.italic)\n flipBit(7);\n if (options.allCap)\n flipBit(17);\n if (options.smallCap)\n flipBit(18);\n if (options.forceBold)\n flipBit(19);\n return flags;\n};\n// From: https://github.com/foliojs/pdfkit/blob/83f5f7243172a017adcf6a7faa5547c55982c57b/lib/font/embedded.js#L123-L129\nexport var deriveFontFlags = function (font) {\n var familyClass = font['OS/2'] ? font['OS/2'].sFamilyClass : 0;\n var flags = makeFontFlags({\n fixedPitch: font.post.isFixedPitch,\n serif: 1 <= familyClass && familyClass <= 7,\n symbolic: true,\n script: familyClass === 10,\n italic: font.head.macStyle.italic,\n });\n return flags;\n};\n//# sourceMappingURL=FontFlags.js.map","import { __extends } from \"tslib\";\nimport PDFObject from \"./PDFObject\";\nimport CharCodes from \"../syntax/CharCodes\";\nimport { copyStringIntoBuffer, padStart, utf16Decode, pdfDocEncodingDecode, toCharCode, parseDate, hasUtf16BOM, } from \"../../utils\";\nimport { InvalidPDFDateStringError } from \"../errors\";\nvar PDFString = /** @class */ (function (_super) {\n __extends(PDFString, _super);\n function PDFString(value) {\n var _this = _super.call(this) || this;\n _this.value = value;\n return _this;\n }\n PDFString.prototype.asBytes = function () {\n var bytes = [];\n var octal = '';\n var escaped = false;\n var pushByte = function (byte) {\n if (byte !== undefined)\n bytes.push(byte);\n escaped = false;\n };\n for (var idx = 0, len = this.value.length; idx < len; idx++) {\n var char = this.value[idx];\n var byte = toCharCode(char);\n var nextChar = this.value[idx + 1];\n if (!escaped) {\n if (byte === CharCodes.BackSlash)\n escaped = true;\n else\n pushByte(byte);\n }\n else {\n if (byte === CharCodes.Newline)\n pushByte();\n else if (byte === CharCodes.CarriageReturn)\n pushByte();\n else if (byte === CharCodes.n)\n pushByte(CharCodes.Newline);\n else if (byte === CharCodes.r)\n pushByte(CharCodes.CarriageReturn);\n else if (byte === CharCodes.t)\n pushByte(CharCodes.Tab);\n else if (byte === CharCodes.b)\n pushByte(CharCodes.Backspace);\n else if (byte === CharCodes.f)\n pushByte(CharCodes.FormFeed);\n else if (byte === CharCodes.LeftParen)\n pushByte(CharCodes.LeftParen);\n else if (byte === CharCodes.RightParen)\n pushByte(CharCodes.RightParen);\n else if (byte === CharCodes.Backspace)\n pushByte(CharCodes.BackSlash);\n else if (byte >= CharCodes.Zero && byte <= CharCodes.Seven) {\n octal += char;\n if (octal.length === 3 || !(nextChar >= '0' && nextChar <= '7')) {\n pushByte(parseInt(octal, 8));\n octal = '';\n }\n }\n else {\n pushByte(byte);\n }\n }\n }\n return new Uint8Array(bytes);\n };\n PDFString.prototype.decodeText = function () {\n var bytes = this.asBytes();\n if (hasUtf16BOM(bytes))\n return utf16Decode(bytes);\n return pdfDocEncodingDecode(bytes);\n };\n PDFString.prototype.decodeDate = function () {\n var text = this.decodeText();\n var date = parseDate(text);\n if (!date)\n throw new InvalidPDFDateStringError(text);\n return date;\n };\n PDFString.prototype.asString = function () {\n return this.value;\n };\n PDFString.prototype.clone = function () {\n return PDFString.of(this.value);\n };\n PDFString.prototype.toString = function () {\n return \"(\" + this.value + \")\";\n };\n PDFString.prototype.sizeInBytes = function () {\n return this.value.length + 2;\n };\n PDFString.prototype.copyBytesInto = function (buffer, offset) {\n buffer[offset++] = CharCodes.LeftParen;\n offset += copyStringIntoBuffer(this.value, buffer, offset);\n buffer[offset++] = CharCodes.RightParen;\n return this.value.length + 2;\n };\n // The PDF spec allows newlines and parens to appear directly within a literal\n // string. These character _may_ be escaped. But they do not _have_ to be. So\n // for simplicity, we will not bother escaping them.\n PDFString.of = function (value) { return new PDFString(value); };\n PDFString.fromDate = function (date) {\n var year = padStart(String(date.getUTCFullYear()), 4, '0');\n var month = padStart(String(date.getUTCMonth() + 1), 2, '0');\n var day = padStart(String(date.getUTCDate()), 2, '0');\n var hours = padStart(String(date.getUTCHours()), 2, '0');\n var mins = padStart(String(date.getUTCMinutes()), 2, '0');\n var secs = padStart(String(date.getUTCSeconds()), 2, '0');\n return new PDFString(\"D:\" + year + month + day + hours + mins + secs + \"Z\");\n };\n return PDFString;\n}(PDFObject));\nexport default PDFString;\n//# sourceMappingURL=PDFString.js.map","import { __awaiter, __generator } from \"tslib\";\nimport { createCmap } from \"./CMap\";\nimport { deriveFontFlags } from \"./FontFlags\";\nimport PDFHexString from \"../objects/PDFHexString\";\nimport PDFString from \"../objects/PDFString\";\nimport { byAscendingId, Cache, sortedUniq, toHexStringOfMinLength, } from \"../../utils\";\n/**\n * A note of thanks to the developers of https://github.com/foliojs/pdfkit, as\n * this class borrows from:\n * https://github.com/devongovett/pdfkit/blob/e71edab0dd4657b5a767804ba86c94c58d01fbca/lib/image/jpeg.coffee\n */\nvar CustomFontEmbedder = /** @class */ (function () {\n function CustomFontEmbedder(font, fontData, customName, fontFeatures) {\n var _this = this;\n this.allGlyphsInFontSortedById = function () {\n var glyphs = new Array(_this.font.characterSet.length);\n for (var idx = 0, len = glyphs.length; idx < len; idx++) {\n var codePoint = _this.font.characterSet[idx];\n glyphs[idx] = _this.font.glyphForCodePoint(codePoint);\n }\n return sortedUniq(glyphs.sort(byAscendingId), function (g) { return g.id; });\n };\n this.font = font;\n this.scale = 1000 / this.font.unitsPerEm;\n this.fontData = fontData;\n this.fontName = this.font.postscriptName || 'Font';\n this.customName = customName;\n this.fontFeatures = fontFeatures;\n this.baseFontName = '';\n this.glyphCache = Cache.populatedBy(this.allGlyphsInFontSortedById);\n }\n CustomFontEmbedder.for = function (fontkit, fontData, customName, fontFeatures) {\n return __awaiter(this, void 0, void 0, function () {\n var font;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, fontkit.create(fontData)];\n case 1:\n font = _a.sent();\n return [2 /*return*/, new CustomFontEmbedder(font, fontData, customName, fontFeatures)];\n }\n });\n });\n };\n /**\n * Encode the JavaScript string into this font. (JavaScript encodes strings in\n * Unicode, but embedded fonts use their own custom encodings)\n */\n CustomFontEmbedder.prototype.encodeText = function (text) {\n var glyphs = this.font.layout(text, this.fontFeatures).glyphs;\n var hexCodes = new Array(glyphs.length);\n for (var idx = 0, len = glyphs.length; idx < len; idx++) {\n hexCodes[idx] = toHexStringOfMinLength(glyphs[idx].id, 4);\n }\n return PDFHexString.of(hexCodes.join(''));\n };\n // The advanceWidth takes into account kerning automatically, so we don't\n // have to do that manually like we do for the standard fonts.\n CustomFontEmbedder.prototype.widthOfTextAtSize = function (text, size) {\n var glyphs = this.font.layout(text, this.fontFeatures).glyphs;\n var totalWidth = 0;\n for (var idx = 0, len = glyphs.length; idx < len; idx++) {\n totalWidth += glyphs[idx].advanceWidth * this.scale;\n }\n var scale = size / 1000;\n return totalWidth * scale;\n };\n CustomFontEmbedder.prototype.heightOfFontAtSize = function (size, options) {\n if (options === void 0) { options = {}; }\n var _a = options.descender, descender = _a === void 0 ? true : _a;\n var _b = this.font, ascent = _b.ascent, descent = _b.descent, bbox = _b.bbox;\n var yTop = (ascent || bbox.maxY) * this.scale;\n var yBottom = (descent || bbox.minY) * this.scale;\n var height = yTop - yBottom;\n if (!descender)\n height -= Math.abs(descent) || 0;\n return (height / 1000) * size;\n };\n CustomFontEmbedder.prototype.sizeOfFontAtHeight = function (height) {\n var _a = this.font, ascent = _a.ascent, descent = _a.descent, bbox = _a.bbox;\n var yTop = (ascent || bbox.maxY) * this.scale;\n var yBottom = (descent || bbox.minY) * this.scale;\n return (1000 * height) / (yTop - yBottom);\n };\n CustomFontEmbedder.prototype.embedIntoContext = function (context, ref) {\n this.baseFontName =\n this.customName || context.addRandomSuffix(this.fontName);\n return this.embedFontDict(context, ref);\n };\n CustomFontEmbedder.prototype.embedFontDict = function (context, ref) {\n return __awaiter(this, void 0, void 0, function () {\n var cidFontDictRef, unicodeCMapRef, fontDict;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.embedCIDFontDict(context)];\n case 1:\n cidFontDictRef = _a.sent();\n unicodeCMapRef = this.embedUnicodeCmap(context);\n fontDict = context.obj({\n Type: 'Font',\n Subtype: 'Type0',\n BaseFont: this.baseFontName,\n Encoding: 'Identity-H',\n DescendantFonts: [cidFontDictRef],\n ToUnicode: unicodeCMapRef,\n });\n if (ref) {\n context.assign(ref, fontDict);\n return [2 /*return*/, ref];\n }\n else {\n return [2 /*return*/, context.register(fontDict)];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n CustomFontEmbedder.prototype.isCFF = function () {\n return this.font.cff;\n };\n CustomFontEmbedder.prototype.embedCIDFontDict = function (context) {\n return __awaiter(this, void 0, void 0, function () {\n var fontDescriptorRef, cidFontDict;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.embedFontDescriptor(context)];\n case 1:\n fontDescriptorRef = _a.sent();\n cidFontDict = context.obj({\n Type: 'Font',\n Subtype: this.isCFF() ? 'CIDFontType0' : 'CIDFontType2',\n CIDToGIDMap: 'Identity',\n BaseFont: this.baseFontName,\n CIDSystemInfo: {\n Registry: PDFString.of('Adobe'),\n Ordering: PDFString.of('Identity'),\n Supplement: 0,\n },\n FontDescriptor: fontDescriptorRef,\n W: this.computeWidths(),\n });\n return [2 /*return*/, context.register(cidFontDict)];\n }\n });\n });\n };\n CustomFontEmbedder.prototype.embedFontDescriptor = function (context) {\n return __awaiter(this, void 0, void 0, function () {\n var fontStreamRef, scale, _a, italicAngle, ascent, descent, capHeight, xHeight, _b, minX, minY, maxX, maxY, fontDescriptor;\n var _c;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0: return [4 /*yield*/, this.embedFontStream(context)];\n case 1:\n fontStreamRef = _d.sent();\n scale = this.scale;\n _a = this.font, italicAngle = _a.italicAngle, ascent = _a.ascent, descent = _a.descent, capHeight = _a.capHeight, xHeight = _a.xHeight;\n _b = this.font.bbox, minX = _b.minX, minY = _b.minY, maxX = _b.maxX, maxY = _b.maxY;\n fontDescriptor = context.obj((_c = {\n Type: 'FontDescriptor',\n FontName: this.baseFontName,\n Flags: deriveFontFlags(this.font),\n FontBBox: [minX * scale, minY * scale, maxX * scale, maxY * scale],\n ItalicAngle: italicAngle,\n Ascent: ascent * scale,\n Descent: descent * scale,\n CapHeight: (capHeight || ascent) * scale,\n XHeight: (xHeight || 0) * scale,\n // Not sure how to compute/find this, nor is anybody else really:\n // https://stackoverflow.com/questions/35485179/stemv-value-of-the-truetype-font\n StemV: 0\n },\n _c[this.isCFF() ? 'FontFile3' : 'FontFile2'] = fontStreamRef,\n _c));\n return [2 /*return*/, context.register(fontDescriptor)];\n }\n });\n });\n };\n CustomFontEmbedder.prototype.serializeFont = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.fontData];\n });\n });\n };\n CustomFontEmbedder.prototype.embedFontStream = function (context) {\n return __awaiter(this, void 0, void 0, function () {\n var fontStream, _a, _b;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _b = (_a = context).flateStream;\n return [4 /*yield*/, this.serializeFont()];\n case 1:\n fontStream = _b.apply(_a, [_c.sent(), {\n Subtype: this.isCFF() ? 'CIDFontType0C' : undefined,\n }]);\n return [2 /*return*/, context.register(fontStream)];\n }\n });\n });\n };\n CustomFontEmbedder.prototype.embedUnicodeCmap = function (context) {\n var cmap = createCmap(this.glyphCache.access(), this.glyphId.bind(this));\n var cmapStream = context.flateStream(cmap);\n return context.register(cmapStream);\n };\n CustomFontEmbedder.prototype.glyphId = function (glyph) {\n return glyph ? glyph.id : -1;\n };\n CustomFontEmbedder.prototype.computeWidths = function () {\n var glyphs = this.glyphCache.access();\n var widths = [];\n var currSection = [];\n for (var idx = 0, len = glyphs.length; idx < len; idx++) {\n var currGlyph = glyphs[idx];\n var prevGlyph = glyphs[idx - 1];\n var currGlyphId = this.glyphId(currGlyph);\n var prevGlyphId = this.glyphId(prevGlyph);\n if (idx === 0) {\n widths.push(currGlyphId);\n }\n else if (currGlyphId - prevGlyphId !== 1) {\n widths.push(currSection);\n widths.push(currGlyphId);\n currSection = [];\n }\n currSection.push(currGlyph.advanceWidth * this.scale);\n }\n widths.push(currSection);\n return widths;\n };\n return CustomFontEmbedder;\n}());\nexport default CustomFontEmbedder;\n//# sourceMappingURL=CustomFontEmbedder.js.map","import { __awaiter, __extends, __generator } from \"tslib\";\nimport CustomFontEmbedder from \"./CustomFontEmbedder\";\nimport PDFHexString from \"../objects/PDFHexString\";\nimport { Cache, mergeUint8Arrays, toHexStringOfMinLength } from \"../../utils\";\n/**\n * A note of thanks to the developers of https://github.com/foliojs/pdfkit, as\n * this class borrows from:\n * https://github.com/devongovett/pdfkit/blob/e71edab0dd4657b5a767804ba86c94c58d01fbca/lib/image/jpeg.coffee\n */\nvar CustomFontSubsetEmbedder = /** @class */ (function (_super) {\n __extends(CustomFontSubsetEmbedder, _super);\n function CustomFontSubsetEmbedder(font, fontData, customFontName, fontFeatures) {\n var _this = _super.call(this, font, fontData, customFontName, fontFeatures) || this;\n _this.subset = _this.font.createSubset();\n _this.glyphs = [];\n _this.glyphCache = Cache.populatedBy(function () { return _this.glyphs; });\n _this.glyphIdMap = new Map();\n return _this;\n }\n CustomFontSubsetEmbedder.for = function (fontkit, fontData, customFontName, fontFeatures) {\n return __awaiter(this, void 0, void 0, function () {\n var font;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, fontkit.create(fontData)];\n case 1:\n font = _a.sent();\n return [2 /*return*/, new CustomFontSubsetEmbedder(font, fontData, customFontName, fontFeatures)];\n }\n });\n });\n };\n CustomFontSubsetEmbedder.prototype.encodeText = function (text) {\n var glyphs = this.font.layout(text, this.fontFeatures).glyphs;\n var hexCodes = new Array(glyphs.length);\n for (var idx = 0, len = glyphs.length; idx < len; idx++) {\n var glyph = glyphs[idx];\n var subsetGlyphId = this.subset.includeGlyph(glyph);\n this.glyphs[subsetGlyphId - 1] = glyph;\n this.glyphIdMap.set(glyph.id, subsetGlyphId);\n hexCodes[idx] = toHexStringOfMinLength(subsetGlyphId, 4);\n }\n this.glyphCache.invalidate();\n return PDFHexString.of(hexCodes.join(''));\n };\n CustomFontSubsetEmbedder.prototype.isCFF = function () {\n return this.subset.cff;\n };\n CustomFontSubsetEmbedder.prototype.glyphId = function (glyph) {\n return glyph ? this.glyphIdMap.get(glyph.id) : -1;\n };\n CustomFontSubsetEmbedder.prototype.serializeFont = function () {\n var _this = this;\n return new Promise(function (resolve, reject) {\n var parts = [];\n _this.subset\n .encodeStream()\n .on('data', function (bytes) { return parts.push(bytes); })\n .on('end', function () { return resolve(mergeUint8Arrays(parts)); })\n .on('error', function (err) { return reject(err); });\n });\n };\n return CustomFontSubsetEmbedder;\n}(CustomFontEmbedder));\nexport default CustomFontSubsetEmbedder;\n//# sourceMappingURL=CustomFontSubsetEmbedder.js.map","import { __awaiter, __generator } from \"tslib\";\nimport PDFString from \"../objects/PDFString\";\nimport PDFHexString from \"../objects/PDFHexString\";\n/**\n * From the PDF-A3 specification, section **3.1. Requirements - General**.\n * See:\n * * https://www.pdfa.org/wp-content/uploads/2018/10/PDF20_AN002-AF.pdf\n */\nexport var AFRelationship;\n(function (AFRelationship) {\n AFRelationship[\"Source\"] = \"Source\";\n AFRelationship[\"Data\"] = \"Data\";\n AFRelationship[\"Alternative\"] = \"Alternative\";\n AFRelationship[\"Supplement\"] = \"Supplement\";\n AFRelationship[\"EncryptedPayload\"] = \"EncryptedPayload\";\n AFRelationship[\"FormData\"] = \"EncryptedPayload\";\n AFRelationship[\"Schema\"] = \"Schema\";\n AFRelationship[\"Unspecified\"] = \"Unspecified\";\n})(AFRelationship || (AFRelationship = {}));\nvar FileEmbedder = /** @class */ (function () {\n function FileEmbedder(fileData, fileName, options) {\n if (options === void 0) { options = {}; }\n this.fileData = fileData;\n this.fileName = fileName;\n this.options = options;\n }\n FileEmbedder.for = function (bytes, fileName, options) {\n if (options === void 0) { options = {}; }\n return new FileEmbedder(bytes, fileName, options);\n };\n FileEmbedder.prototype.embedIntoContext = function (context, ref) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, mimeType, description, creationDate, modificationDate, afRelationship, embeddedFileStream, embeddedFileStreamRef, fileSpecDict;\n return __generator(this, function (_b) {\n _a = this.options, mimeType = _a.mimeType, description = _a.description, creationDate = _a.creationDate, modificationDate = _a.modificationDate, afRelationship = _a.afRelationship;\n embeddedFileStream = context.flateStream(this.fileData, {\n Type: 'EmbeddedFile',\n Subtype: mimeType !== null && mimeType !== void 0 ? mimeType : undefined,\n Params: {\n Size: this.fileData.length,\n CreationDate: creationDate\n ? PDFString.fromDate(creationDate)\n : undefined,\n ModDate: modificationDate\n ? PDFString.fromDate(modificationDate)\n : undefined,\n },\n });\n embeddedFileStreamRef = context.register(embeddedFileStream);\n fileSpecDict = context.obj({\n Type: 'Filespec',\n F: PDFString.of(this.fileName),\n UF: PDFHexString.fromText(this.fileName),\n EF: { F: embeddedFileStreamRef },\n Desc: description ? PDFHexString.fromText(description) : undefined,\n AFRelationship: afRelationship !== null && afRelationship !== void 0 ? afRelationship : undefined,\n });\n if (ref) {\n context.assign(ref, fileSpecDict);\n return [2 /*return*/, ref];\n }\n else {\n return [2 /*return*/, context.register(fileSpecDict)];\n }\n return [2 /*return*/];\n });\n });\n };\n return FileEmbedder;\n}());\nexport default FileEmbedder;\n//# sourceMappingURL=FileEmbedder.js.map","import { __awaiter, __generator } from \"tslib\";\n// prettier-ignore\nvar MARKERS = [\n 0xffc0, 0xffc1, 0xffc2,\n 0xffc3, 0xffc5, 0xffc6,\n 0xffc7, 0xffc8, 0xffc9,\n 0xffca, 0xffcb, 0xffcc,\n 0xffcd, 0xffce, 0xffcf,\n];\nvar ColorSpace;\n(function (ColorSpace) {\n ColorSpace[\"DeviceGray\"] = \"DeviceGray\";\n ColorSpace[\"DeviceRGB\"] = \"DeviceRGB\";\n ColorSpace[\"DeviceCMYK\"] = \"DeviceCMYK\";\n})(ColorSpace || (ColorSpace = {}));\nvar ChannelToColorSpace = {\n 1: ColorSpace.DeviceGray,\n 3: ColorSpace.DeviceRGB,\n 4: ColorSpace.DeviceCMYK,\n};\n/**\n * A note of thanks to the developers of https://github.com/foliojs/pdfkit, as\n * this class borrows from:\n * https://github.com/foliojs/pdfkit/blob/a6af76467ce06bd6a2af4aa7271ccac9ff152a7d/lib/image/jpeg.js\n */\nvar JpegEmbedder = /** @class */ (function () {\n function JpegEmbedder(imageData, bitsPerComponent, width, height, colorSpace) {\n this.imageData = imageData;\n this.bitsPerComponent = bitsPerComponent;\n this.width = width;\n this.height = height;\n this.colorSpace = colorSpace;\n }\n JpegEmbedder.for = function (imageData) {\n return __awaiter(this, void 0, void 0, function () {\n var dataView, soi, pos, marker, bitsPerComponent, height, width, channelByte, channelName, colorSpace;\n return __generator(this, function (_a) {\n dataView = new DataView(imageData.buffer);\n soi = dataView.getUint16(0);\n if (soi !== 0xffd8)\n throw new Error('SOI not found in JPEG');\n pos = 2;\n while (pos < dataView.byteLength) {\n marker = dataView.getUint16(pos);\n pos += 2;\n if (MARKERS.includes(marker))\n break;\n pos += dataView.getUint16(pos);\n }\n if (!MARKERS.includes(marker))\n throw new Error('Invalid JPEG');\n pos += 2;\n bitsPerComponent = dataView.getUint8(pos++);\n height = dataView.getUint16(pos);\n pos += 2;\n width = dataView.getUint16(pos);\n pos += 2;\n channelByte = dataView.getUint8(pos++);\n channelName = ChannelToColorSpace[channelByte];\n if (!channelName)\n throw new Error('Unknown JPEG channel.');\n colorSpace = channelName;\n return [2 /*return*/, new JpegEmbedder(imageData, bitsPerComponent, width, height, colorSpace)];\n });\n });\n };\n JpegEmbedder.prototype.embedIntoContext = function (context, ref) {\n return __awaiter(this, void 0, void 0, function () {\n var xObject;\n return __generator(this, function (_a) {\n xObject = context.stream(this.imageData, {\n Type: 'XObject',\n Subtype: 'Image',\n BitsPerComponent: this.bitsPerComponent,\n Width: this.width,\n Height: this.height,\n ColorSpace: this.colorSpace,\n Filter: 'DCTDecode',\n // CMYK JPEG streams in PDF are typically stored complemented,\n // with 1 as 'off' and 0 as 'on' (PDF 32000-1:2008, 8.6.4.4).\n //\n // Standalone CMYK JPEG (usually exported by Photoshop) are\n // stored inverse, with 0 as 'off' and 1 as 'on', like RGB.\n //\n // Applying a swap here as a hedge that most bytes passing\n // through this method will benefit from it.\n Decode: this.colorSpace === ColorSpace.DeviceCMYK\n ? [1, 0, 1, 0, 1, 0, 1, 0]\n : undefined,\n });\n if (ref) {\n context.assign(ref, xObject);\n return [2 /*return*/, ref];\n }\n else {\n return [2 /*return*/, context.register(xObject)];\n }\n return [2 /*return*/];\n });\n });\n };\n return JpegEmbedder;\n}());\nexport default JpegEmbedder;\n//# sourceMappingURL=JpegEmbedder.js.map","import pako from 'pako';\n\nvar UPNG = {};\n\n\t\n\nUPNG.toRGBA8 = function(out)\n{\n\tvar w = out.width, h = out.height;\n\tif(out.tabs.acTL==null) return [UPNG.toRGBA8.decodeImage(out.data, w, h, out).buffer];\n\t\n\tvar frms = [];\n\tif(out.frames[0].data==null) out.frames[0].data = out.data;\n\t\n\tvar len = w*h*4, img = new Uint8Array(len), empty = new Uint8Array(len), prev=new Uint8Array(len);\n\tfor(var i=0; i>3)]>>(7-((i&7)<<0)))& 1), cj=3*j; bf[qi]=p[cj]; bf[qi+1]=p[cj+1]; bf[qi+2]=p[cj+2]; bf[qi+3]=(j>2)]>>(6-((i&3)<<1)))& 3), cj=3*j; bf[qi]=p[cj]; bf[qi+1]=p[cj+1]; bf[qi+2]=p[cj+2]; bf[qi+3]=(j>1)]>>(4-((i&1)<<2)))&15), cj=3*j; bf[qi]=p[cj]; bf[qi+1]=p[cj+1]; bf[qi+2]=p[cj+2]; bf[qi+3]=(j>>3)]>>>(7 -((x&7) )))& 1), al=(gr==tr*255)?0:255; bf32[to+x]=(al<<24)|(gr<<16)|(gr<<8)|gr; }\n\t\t\telse if(depth== 2) for(var x=0; x>>2)]>>>(6 -((x&3)<<1)))& 3), al=(gr==tr* 85)?0:255; bf32[to+x]=(al<<24)|(gr<<16)|(gr<<8)|gr; }\n\t\t\telse if(depth== 4) for(var x=0; x>>1)]>>>(4 -((x&1)<<2)))&15), al=(gr==tr* 17)?0:255; bf32[to+x]=(al<<24)|(gr<<16)|(gr<<8)|gr; }\n\t\t\telse if(depth== 8) for(var x=0; x>>2<<3);while(i==0){i=n(N,d,1);m=n(N,d+1,2);d+=3;if(m==0){if((d&7)!=0)d+=8-(d&7);\nvar D=(d>>>3)+4,q=N[D-4]|N[D-3]<<8;if(Z)W=H.H.W(W,w+q);W.set(new R(N.buffer,N.byteOffset+D,q),w);d=D+q<<3;\nw+=q;continue}if(Z)W=H.H.W(W,w+(1<<17));if(m==1){v=b.J;C=b.h;X=(1<<9)-1;u=(1<<5)-1}if(m==2){J=A(N,d,5)+257;\nh=A(N,d+5,5)+1;Q=A(N,d+10,4)+4;d+=14;var E=d,j=1;for(var c=0;c<38;c+=2){b.Q[c]=0;b.Q[c+1]=0}for(var c=0;\ncj)j=K}d+=3*Q;M(b.Q,j);I(b.Q,j,b.u);v=b.w;C=b.d;\nd=l(b.u,(1<>>4;if(p>>>8==0){W[w++]=p}else if(p==256){break}else{var z=w+p-254;\nif(p>264){var _=b.q[p-257];z=w+(_>>>3)+A(N,d,_&7);d+=_&7}var $=C[e(N,d)&u];d+=$&15;var s=$>>>4,Y=b.c[s],a=(Y>>>4)+n(N,d,Y&15);\nd+=Y&15;while(w>>4;\nif(b<=15){A[I]=b;I++}else{var Z=0,m=0;if(b==16){m=3+l(V,n,2);n+=2;Z=A[I-1]}else if(b==17){m=3+l(V,n,3);\nn+=3}else if(b==18){m=11+l(V,n,7);n+=7}var J=I+m;while(I>>1;\nwhile(An)n=M;A++}while(A>1,I=N[l+1],e=M<<4|I,b=W-I,Z=N[l]<>>15-W;R[J]=e;Z++}}};H.H.l=function(N,W){var R=H.H.m.r,V=15-W;for(var n=0;n>>V}};H.H.M=function(N,W,R){R=R<<(W&7);var V=W>>>3;N[V]|=R;N[V+1]|=R>>>8};\nH.H.I=function(N,W,R){R=R<<(W&7);var V=W>>>3;N[V]|=R;N[V+1]|=R>>>8;N[V+2]|=R>>>16};H.H.e=function(N,W,R){return(N[W>>>3]|N[(W>>>3)+1]<<8)>>>(W&7)&(1<>>3]|N[(W>>>3)+1]<<8|N[(W>>>3)+2]<<16)>>>(W&7)&(1<>>3]|N[(W>>>3)+1]<<8|N[(W>>>3)+2]<<16)>>>(W&7)};\nH.H.i=function(N,W){return(N[W>>>3]|N[(W>>>3)+1]<<8|N[(W>>>3)+2]<<16|N[(W>>>3)+3]<<24)>>>(W&7)};H.H.m=function(){var N=Uint16Array,W=Uint32Array;\nreturn{K:new N(16),j:new N(16),X:[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],S:[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,999,999,999],T:[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0],q:new N(32),p:[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,65535,65535],z:[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0],c:new W(32),J:new N(512),_:[],h:new N(32),$:[],w:new N(32768),C:[],v:[],d:new N(32768),D:[],u:new N(512),Q:[],r:new N(1<<15),s:new W(286),Y:new W(30),a:new W(19),t:new W(15e3),k:new N(1<<16),g:new N(1<<15)}}();\n(function(){var N=H.H.m,W=1<<15;for(var R=0;R>>1|(V&1431655765)<<1;\nV=(V&3435973836)>>>2|(V&858993459)<<2;V=(V&4042322160)>>>4|(V&252645135)<<4;V=(V&4278255360)>>>8|(V&16711935)<<8;\nN.r[R]=(V>>>16|V<<16)>>>17}function n(A,l,M){while(l--!=0)A.push(0,M)}for(var R=0;R<32;R++){N.q[R]=N.S[R]<<3|N.T[R];\nN.c[R]=N.p[R]<<4|N.z[R]}n(N._,144,8);n(N._,255-143,9);n(N._,279-255,7);n(N._,287-279,8);H.H.n(N._,9);\nH.H.A(N._,9,N.J);H.H.l(N._,9);n(N.$,32,5);H.H.n(N.$,5);H.H.A(N.$,5,N.h);H.H.l(N.$,5);n(N.Q,19,0);n(N.C,286,0);\nn(N.D,30,0);n(N.v,320,0)}());return H.H.N}()\n\n\nUPNG.decode._readInterlace = function(data, out)\n{\n\tvar w = out.width, h = out.height;\n\tvar bpp = UPNG.decode._getBPP(out), cbpp = bpp>>3, bpl = Math.ceil(w*bpp/8);\n\tvar img = new Uint8Array( h * bpl );\n\tvar di = 0;\n\n\tvar starting_row = [ 0, 0, 4, 0, 2, 0, 1 ];\n\tvar starting_col = [ 0, 4, 0, 2, 0, 1, 0 ];\n\tvar row_increment = [ 8, 8, 8, 4, 4, 2, 2 ];\n\tvar col_increment = [ 8, 8, 4, 4, 2, 2, 1 ];\n\n\tvar pass=0;\n\twhile(pass<7)\n\t{\n\t\tvar ri = row_increment[pass], ci = col_increment[pass];\n\t\tvar sw = 0, sh = 0;\n\t\tvar cr = starting_row[pass]; while(cr>3]; val = (val>>(7-(cdi&7)))&1;\n\t\t\t\t\timg[row*bpl + (col>>3)] |= (val << (7-((col&7)<<0)));\n\t\t\t\t}\n\t\t\t\tif(bpp==2) {\n\t\t\t\t\tvar val = data[cdi>>3]; val = (val>>(6-(cdi&7)))&3;\n\t\t\t\t\timg[row*bpl + (col>>2)] |= (val << (6-((col&3)<<1)));\n\t\t\t\t}\n\t\t\t\tif(bpp==4) {\n\t\t\t\t\tvar val = data[cdi>>3]; val = (val>>(4-(cdi&7)))&15;\n\t\t\t\t\timg[row*bpl + (col>>1)] |= (val << (4-((col&1)<<2)));\n\t\t\t\t}\n\t\t\t\tif(bpp>=8) {\n\t\t\t\t\tvar ii = row*bpl+col*cbpp;\n\t\t\t\t\tfor(var j=0; j>3)+j];\n\t\t\t\t}\n\t\t\t\tcdi+=bpp; col+=ci;\n\t\t\t}\n\t\t\ty++; row += ri;\n\t\t}\n\t\tif(sw*sh!=0) di += sh * (1 + bpll);\n\t\tpass = pass + 1;\n\t}\n\treturn img;\n}\n\nUPNG.decode._getBPP = function(out) {\n\tvar noc = [1,null,3,1,2,null,4][out.ctype];\n\treturn noc * out.depth;\n}\n\nUPNG.decode._filterZero = function(data, out, off, w, h)\n{\n\tvar bpp = UPNG.decode._getBPP(out), bpl = Math.ceil(w*bpp/8), paeth = UPNG.decode._paeth;\n\tbpp = Math.ceil(bpp/8);\n\t\n\tvar i=0, di=1, type=data[off], x=0;\n\t\n\tif(type>1) data[off]=[0,0,1][type-2]; \n\tif(type==3) for(x=bpp; x>>1) )&255;\n\n\tfor(var y=0; y>>1));\n\t\t\t for(; x>>1) ); }\n\t\telse { for(; x>8)&255; buff[p+1] = n&255; },\n\treadUint : function(buff,p) { return (buff[p]*(256*256*256)) + ((buff[p+1]<<16) | (buff[p+2]<< 8) | buff[p+3]); },\n\twriteUint : function(buff,p,n){ buff[p]=(n>>24)&255; buff[p+1]=(n>>16)&255; buff[p+2]=(n>>8)&255; buff[p+3]=n&255; },\n\treadASCII : function(buff,p,l){ var s = \"\"; for(var i=0; i=0 && yoff>=0) { si = (y*sw+x)<<2; ti = (( yoff+y)*tw+xoff+x)<<2; }\n\t\t\telse { si = ((-yoff+y)*sw-xoff+x)<<2; ti = (y*tw+x)<<2; }\n\t\t\t\n\t\t\tif (mode==0) { tb[ti] = sb[si]; tb[ti+1] = sb[si+1]; tb[ti+2] = sb[si+2]; tb[ti+3] = sb[si+3]; }\n\t\t\telse if(mode==1) {\n\t\t\t\tvar fa = sb[si+3]*(1/255), fr=sb[si]*fa, fg=sb[si+1]*fa, fb=sb[si+2]*fa; \n\t\t\t\tvar ba = tb[ti+3]*(1/255), br=tb[ti]*ba, bg=tb[ti+1]*ba, bb=tb[ti+2]*ba; \n\t\t\t\t\n\t\t\t\tvar ifa=1-fa, oa = fa+ba*ifa, ioa = (oa==0?0:1/oa);\n\t\t\t\ttb[ti+3] = 255*oa; \n\t\t\t\ttb[ti+0] = (fr+br*ifa)*ioa; \n\t\t\t\ttb[ti+1] = (fg+bg*ifa)*ioa; \n\t\t\t\ttb[ti+2] = (fb+bb*ifa)*ioa; \n\t\t\t}\n\t\t\telse if(mode==2){\t// copy only differences, otherwise zero\n\t\t\t\tvar fa = sb[si+3], fr=sb[si], fg=sb[si+1], fb=sb[si+2]; \n\t\t\t\tvar ba = tb[ti+3], br=tb[ti], bg=tb[ti+1], bb=tb[ti+2]; \n\t\t\t\tif(fa==ba && fr==br && fg==bg && fb==bb) { tb[ti]=0; tb[ti+1]=0; tb[ti+2]=0; tb[ti+3]=0; }\n\t\t\t\telse { tb[ti]=fr; tb[ti+1]=fg; tb[ti+2]=fb; tb[ti+3]=fa; }\n\t\t\t}\n\t\t\telse if(mode==3){\t// check if can be blended\n\t\t\t\tvar fa = sb[si+3], fr=sb[si], fg=sb[si+1], fb=sb[si+2]; \n\t\t\t\tvar ba = tb[ti+3], br=tb[ti], bg=tb[ti+1], bb=tb[ti+2]; \n\t\t\t\tif(fa==ba && fr==br && fg==bg && fb==bb) continue;\n\t\t\t\t//if(fa!=255 && ba!=0) return false;\n\t\t\t\tif(fa<220 && ba>20) return false;\n\t\t\t}\n\t\t}\n\treturn true;\n}\n\n\n\n\nUPNG.encode = function(bufs, w, h, ps, dels, tabs, forbidPlte)\n{\n\tif(ps==null) ps=0;\n\tif(forbidPlte==null) forbidPlte = false;\n\n\tvar nimg = UPNG.encode.compress(bufs, w, h, ps, [false, false, false, 0, forbidPlte]);\n\tUPNG.encode.compressPNG(nimg, -1);\n\t\n\treturn UPNG.encode._main(nimg, w, h, dels, tabs);\n}\n\nUPNG.encodeLL = function(bufs, w, h, cc, ac, depth, dels, tabs) {\n\tvar nimg = { ctype: 0 + (cc==1 ? 0 : 2) + (ac==0 ? 0 : 4), depth: depth, frames: [] };\n\t\n\tvar time = Date.now();\n\tvar bipp = (cc+ac)*depth, bipl = bipp * w;\n\tfor(var i=0; i1, pltAlpha = false;\n\t\n\tvar leng = 8 + (16+5+4) /*+ (9+4)*/ + (anim ? 20 : 0);\n\tif(tabs[\"sRGB\"]!=null) leng += 8+1+4;\n\tif(tabs[\"pHYs\"]!=null) leng += 8+9+4;\n\tif(nimg.ctype==3) {\n\t\tvar dl = nimg.plte.length;\n\t\tfor(var i=0; i>>24)!=255) pltAlpha = true;\n\t\tleng += (8 + dl*3 + 4) + (pltAlpha ? (8 + dl*1 + 4) : 0);\n\t}\n\tfor(var j=0; j>>8)&255, b=(c>>>16)&255;\n\t\t\tdata[offset+ti+0]=r; data[offset+ti+1]=g; data[offset+ti+2]=b;\n\t\t}\n\t\toffset+=dl*3;\n\t\twUi(data,offset,crc(data,offset-dl*3-4,dl*3+4)); offset+=4; // crc\n\n\t\tif(pltAlpha) {\n\t\t\twUi(data,offset, dl); offset+=4;\n\t\t\twAs(data,offset,\"tRNS\"); offset+=4;\n\t\t\tfor(var i=0; i>>24)&255;\n\t\t\toffset+=dl;\n\t\t\twUi(data,offset,crc(data,offset-dl-4,dl+4)); offset+=4; // crc\n\t\t}\n\t}\n\t\n\tvar fi = 0;\n\tfor(var j=0; j>2, bln>>2));\n\t\t\tfor(var j=0; jnw && c==img32[i-nw]) ind[i]=ind[i-nw];\n\t\t\t\telse {\n\t\t\t\t\tvar cmc = cmap[c];\n\t\t\t\t\tif(cmc==null) { cmap[c]=cmc=plte.length; plte.push(c); if(plte.length>=300) break; }\n\t\t\t\t\tind[i]=cmc;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t//console.log(\"make palette\", Date.now()-time); time = Date.now();\n\t}\n\t\n\tvar cc=plte.length; //console.log(\"colors:\",cc);\n\tif(cc<=256 && forbidPlte==false) {\n\t\tif(cc<= 2) depth=1; else if(cc<= 4) depth=2; else if(cc<=16) depth=4; else depth=8;\n\t\tdepth = Math.max(depth, minBits);\n\t}\n\t\n\tfor(var j=0; j>1)] |= (inj[ii+x]<<(4-(x&1)*4));\n\t\t\t\telse if(depth==2) for(var x=0; x>2)] |= (inj[ii+x]<<(6-(x&3)*2));\n\t\t\t\telse if(depth==1) for(var x=0; x>3)] |= (inj[ii+x]<<(7-(x&7)*1));\n\t\t\t}\n\t\t\tcimg=nimg; ctype=3; bpp=1;\n\t\t}\n\t\telse if(gotAlpha==false && frms.length==1) {\t// some next \"reduced\" frames may contain alpha for blending\n\t\t\tvar nimg = new Uint8Array(nw*nh*3), area=nw*nh;\n\t\t\tfor(var i=0; i palette indices\", Date.now()-time); time = Date.now();\n\t\n\treturn {ctype:ctype, depth:depth, plte:plte, frames:frms };\n}\nUPNG.encode.framize = function(bufs,w,h,alwaysBlend,evenCrd,forbidPrev) {\n\t/* DISPOSE\n\t - 0 : no change\n\t\t- 1 : clear to transparent\n\t\t- 2 : retstore to content before rendering (previous frame disposed)\n\t\tBLEND\n\t\t- 0 : replace\n\t\t- 1 : blend\n\t*/\n\tvar frms = [];\n\tfor(var j=0; jmax) max=x;\n\t\t\t\t\t\tif(ymay) may=y;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(max==-1) mix=miy=max=may=0;\n\t\t\t\tif(evenCrd) { if((mix&1)==1)mix--; if((miy&1)==1)miy--; }\n\t\t\t\tvar sarea = (max-mix+1)*(may-miy+1);\n\t\t\t\tif(sareamax) max=cx;\n\t\t\tif(cymay) may=cy;\n\t\t}\n\t}\n\tif(max==-1) mix=miy=max=may=0;\n\tif(evenCrd) { if((mix&1)==1)mix--; if((miy&1)==1)miy--; }\n\tr = {x:mix, y:miy, width:max-mix+1, height:may-miy+1};\n\t\n\tvar fr = frms[i]; fr.rect = r; fr.blend = 1; fr.img = new Uint8Array(r.width*r.height*4);\n\tif(frms[i-1].dispose==0) {\n\t\tUPNG._copyTile(pimg,w,h, fr.img,r.width,r.height, -r.x,-r.y, 0);\n\t\tUPNG.encode._prepareDiff(cimg,w,h,fr.img,r);\n\t\t//UPNG._copyTile(cimg,w,h, fr.img,r.width,r.height, -r.x,-r.y, 2);\n\t}\n\telse\n\t\tUPNG._copyTile(cimg,w,h, fr.img,r.width,r.height, -r.x,-r.y, 0);\n}\nUPNG.encode._prepareDiff = function(cimg, w,h, nimg, rec) {\n\tUPNG._copyTile(cimg,w,h, nimg,rec.width,rec.height, -rec.x,-rec.y, 2);\n\t/*\n\tvar n32 = new Uint32Array(nimg.buffer);\n\tvar og = new Uint8Array(rec.width*rec.height*4), o32 = new Uint32Array(og.buffer);\n\tUPNG._copyTile(cimg,w,h, og,rec.width,rec.height, -rec.x,-rec.y, 0);\n\tfor(var i=4; i>>2]==o32[(i>>>2)-1]) {\n\t\t\tn32[i>>>2]=o32[i>>>2];\n\t\t\t//var j = i, c=p32[(i>>>2)-1];\n\t\t\t//while(p32[j>>>2]==c) { n32[j>>>2]=c; j+=4; }\n\t\t}\n\t}\n\tfor(var i=nimg.length-8; i>0; i-=4) {\n\t\tif(nimg[i+7]!=0 && nimg[i+3]==0 && o32[i>>>2]==o32[(i>>>2)+1]) {\n\t\t\tn32[i>>>2]=o32[i>>>2];\n\t\t\t//var j = i, c=p32[(i>>>2)-1];\n\t\t\t//while(p32[j>>>2]==c) { n32[j>>>2]=c; j+=4; }\n\t\t}\n\t}*/\n}\n\nUPNG.encode._filterZero = function(img,h,bpp,bpl,data, filter, levelZero)\n{\n\tvar fls = [], ftry=[0,1,2,3,4];\n\tif (filter!=-1) ftry=[filter];\n\telse if(h*bpl>500000 || bpp==1) ftry=[0];\n\tvar opts; if(levelZero) opts={level:0};\n\t\n\tvar CMPR = (levelZero && UZIP!=null) ? UZIP : pako;\n\t\n\tfor(var i=0; i>1) +256)&255;\n\t\tif(type==4) for(var x=bpp; x>1))&255;\n\t\t\t\t\t for(var x=bpp; x>1))&255; }\n\t\tif(type==4) { for(var x= 0; x>> 1);\n\t\t\t\telse c = c >>> 1;\n\t\t\t}\n\t\t\ttab[n] = c; }\n\t\treturn tab; })(),\n\tupdate : function(c, buf, off, len) {\n\t\tfor (var i=0; i>> 8);\n\t\treturn c;\n\t},\n\tcrc : function(b,o,l) { return UPNG.crc.update(0xffffffff,b,o,l) ^ 0xffffffff; }\n}\n\n\nUPNG.quantize = function(abuf, ps)\n{\t\n\tvar oimg = new Uint8Array(abuf), nimg = oimg.slice(0), nimg32 = new Uint32Array(nimg.buffer);\n\t\n\tvar KD = UPNG.quantize.getKDtree(nimg, ps);\n\tvar root = KD[0], leafs = KD[1];\n\t\n\tvar planeDst = UPNG.quantize.planeDst;\n\tvar sb = oimg, tb = nimg32, len=sb.length;\n\t\t\n\tvar inds = new Uint8Array(oimg.length>>2);\n\tfor(var i=0; i>2] = nd.ind;\n\t\ttb[i>>2] = nd.est.rgba;\n\t}\n\treturn { abuf:nimg.buffer, inds:inds, plte:leafs };\n}\n\nUPNG.quantize.getKDtree = function(nimg, ps, err) {\n\tif(err==null) err = 0.0001;\n\tvar nimg32 = new Uint32Array(nimg.buffer);\n\t\n\tvar root = {i0:0, i1:nimg.length, bst:null, est:null, tdst:0, left:null, right:null }; // basic statistic, extra statistic\n\troot.bst = UPNG.quantize.stats( nimg,root.i0, root.i1 ); root.est = UPNG.quantize.estats( root.bst );\n\tvar leafs = [root];\n\t\n\twhile(leafs.length maxL) { maxL=leafs[i].est.L; mi=i; }\n\t\tif(maxL=s0 || node.i1<=s0);\n\t\t//console.log(maxL, leafs.length, mi);\n\t\tif(s0wrong) { node.est.L=0; continue; }\n\t\t\n\t\t\n\t\tvar ln = {i0:node.i0, i1:s0, bst:null, est:null, tdst:0, left:null, right:null }; ln.bst = UPNG.quantize.stats( nimg, ln.i0, ln.i1 ); \n\t\tln.est = UPNG.quantize.estats( ln.bst );\n\t\tvar rn = {i0:s0, i1:node.i1, bst:null, est:null, tdst:0, left:null, right:null }; rn.bst = {R:[], m:[], N:node.bst.N-ln.bst.N};\n\t\tfor(var i=0; i<16; i++) rn.bst.R[i] = node.bst.R[i]-ln.bst.R[i];\n\t\tfor(var i=0; i< 4; i++) rn.bst.m[i] = node.bst.m[i]-ln.bst.m[i];\n\t\trn.est = UPNG.quantize.estats( rn.bst );\n\t\t\n\t\tnode.left = ln; node.right = rn;\n\t\tleafs[mi]=ln; leafs.push(rn);\n\t}\n\tleafs.sort(function(a,b) { return b.bst.N-a.bst.N; });\n\tfor(var i=0; i0) { node0=nd.right; node1=nd.left; }\n\t\n\tvar ln = UPNG.quantize.getNearest(node0, r,g,b,a);\n\tif(ln.tdst<=planeDst*planeDst) return ln;\n\tvar rn = UPNG.quantize.getNearest(node1, r,g,b,a);\n\treturn rn.tdst eMq) i1-=4;\n\t\tif(i0>=i1) break;\n\t\t\n\t\tvar t = nimg32[i0>>2]; nimg32[i0>>2] = nimg32[i1>>2]; nimg32[i1>>2]=t;\n\t\t\n\t\ti0+=4; i1-=4;\n\t}\n\twhile(vecDot(nimg, i0, e)>eMq) i0-=4;\n\treturn i0+4;\n}\nUPNG.quantize.vecDot = function(nimg, i, e)\n{\n\treturn nimg[i]*e[0] + nimg[i+1]*e[1] + nimg[i+2]*e[2] + nimg[i+3]*e[3];\n}\nUPNG.quantize.stats = function(nimg, i0, i1){\n\tvar R = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0];\n\tvar m = [0,0,0,0];\n\tvar N = (i1-i0)>>2;\n\tfor(var i=i0; i>>0) };\n}\nUPNG.M4 = {\n\tmultVec : function(m,v) {\n\t\t\treturn [\n\t\t\t\tm[ 0]*v[0] + m[ 1]*v[1] + m[ 2]*v[2] + m[ 3]*v[3],\n\t\t\t\tm[ 4]*v[0] + m[ 5]*v[1] + m[ 6]*v[2] + m[ 7]*v[3],\n\t\t\t\tm[ 8]*v[0] + m[ 9]*v[1] + m[10]*v[2] + m[11]*v[3],\n\t\t\t\tm[12]*v[0] + m[13]*v[1] + m[14]*v[2] + m[15]*v[3]\n\t\t\t];\n\t},\n\tdot : function(x,y) { return x[0]*y[0]+x[1]*y[1]+x[2]*y[2]+x[3]*y[3]; },\n\tsml : function(a,y) { return [a*y[0],a*y[1],a*y[2],a*y[3]]; }\n}\n\nUPNG.encode.concatRGBA = function(bufs) {\n\tvar tlen = 0;\n\tfor(var i=0; i 1)\n throw new Error(\"Animated PNGs are not supported\");\n var frame = new Uint8Array(frames[0]);\n var _a = splitAlphaChannel(frame), rgbChannel = _a.rgbChannel, alphaChannel = _a.alphaChannel;\n this.rgbChannel = rgbChannel;\n var hasAlphaValues = alphaChannel.some(function (a) { return a < 255; });\n if (hasAlphaValues)\n this.alphaChannel = alphaChannel;\n this.type = getImageType(upng.ctype);\n this.width = upng.width;\n this.height = upng.height;\n this.bitsPerComponent = 8;\n }\n PNG.load = function (pngData) { return new PNG(pngData); };\n return PNG;\n}());\nexport { PNG };\n//# sourceMappingURL=png.js.map","import { __awaiter, __generator } from \"tslib\";\nimport { PNG } from \"../../utils/png\";\n/**\n * A note of thanks to the developers of https://github.com/foliojs/pdfkit, as\n * this class borrows from:\n * https://github.com/devongovett/pdfkit/blob/e71edab0dd4657b5a767804ba86c94c58d01fbca/lib/image/png.coffee\n */\nvar PngEmbedder = /** @class */ (function () {\n function PngEmbedder(png) {\n this.image = png;\n this.bitsPerComponent = png.bitsPerComponent;\n this.width = png.width;\n this.height = png.height;\n this.colorSpace = 'DeviceRGB';\n }\n PngEmbedder.for = function (imageData) {\n return __awaiter(this, void 0, void 0, function () {\n var png;\n return __generator(this, function (_a) {\n png = PNG.load(imageData);\n return [2 /*return*/, new PngEmbedder(png)];\n });\n });\n };\n PngEmbedder.prototype.embedIntoContext = function (context, ref) {\n return __awaiter(this, void 0, void 0, function () {\n var SMask, xObject;\n return __generator(this, function (_a) {\n SMask = this.embedAlphaChannel(context);\n xObject = context.flateStream(this.image.rgbChannel, {\n Type: 'XObject',\n Subtype: 'Image',\n BitsPerComponent: this.image.bitsPerComponent,\n Width: this.image.width,\n Height: this.image.height,\n ColorSpace: this.colorSpace,\n SMask: SMask,\n });\n if (ref) {\n context.assign(ref, xObject);\n return [2 /*return*/, ref];\n }\n else {\n return [2 /*return*/, context.register(xObject)];\n }\n return [2 /*return*/];\n });\n });\n };\n PngEmbedder.prototype.embedAlphaChannel = function (context) {\n if (!this.image.alphaChannel)\n return undefined;\n var xObject = context.flateStream(this.image.alphaChannel, {\n Type: 'XObject',\n Subtype: 'Image',\n Height: this.image.height,\n Width: this.image.width,\n BitsPerComponent: this.image.bitsPerComponent,\n ColorSpace: 'DeviceGray',\n Decode: [0, 1],\n });\n return context.register(xObject);\n };\n return PngEmbedder;\n}());\nexport default PngEmbedder;\n//# sourceMappingURL=PngEmbedder.js.map","/*\n * Copyright 2012 Mozilla Foundation\n *\n * The Stream class contained in this file is a TypeScript port of the\n * JavaScript Stream class in Mozilla's pdf.js project, made available\n * under the Apache 2.0 open source license.\n */\nvar Stream = /** @class */ (function () {\n function Stream(buffer, start, length) {\n this.bytes = buffer;\n this.start = start || 0;\n this.pos = this.start;\n this.end = !!start && !!length ? start + length : this.bytes.length;\n }\n Object.defineProperty(Stream.prototype, \"length\", {\n get: function () {\n return this.end - this.start;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Stream.prototype, \"isEmpty\", {\n get: function () {\n return this.length === 0;\n },\n enumerable: false,\n configurable: true\n });\n Stream.prototype.getByte = function () {\n if (this.pos >= this.end) {\n return -1;\n }\n return this.bytes[this.pos++];\n };\n Stream.prototype.getUint16 = function () {\n var b0 = this.getByte();\n var b1 = this.getByte();\n if (b0 === -1 || b1 === -1) {\n return -1;\n }\n return (b0 << 8) + b1;\n };\n Stream.prototype.getInt32 = function () {\n var b0 = this.getByte();\n var b1 = this.getByte();\n var b2 = this.getByte();\n var b3 = this.getByte();\n return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n };\n // Returns subarray of original buffer, should only be read.\n Stream.prototype.getBytes = function (length, forceClamped) {\n if (forceClamped === void 0) { forceClamped = false; }\n var bytes = this.bytes;\n var pos = this.pos;\n var strEnd = this.end;\n if (!length) {\n var subarray = bytes.subarray(pos, strEnd);\n // `this.bytes` is always a `Uint8Array` here.\n return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n }\n else {\n var end = pos + length;\n if (end > strEnd) {\n end = strEnd;\n }\n this.pos = end;\n var subarray = bytes.subarray(pos, end);\n // `this.bytes` is always a `Uint8Array` here.\n return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n }\n };\n Stream.prototype.peekByte = function () {\n var peekedByte = this.getByte();\n this.pos--;\n return peekedByte;\n };\n Stream.prototype.peekBytes = function (length, forceClamped) {\n if (forceClamped === void 0) { forceClamped = false; }\n var bytes = this.getBytes(length, forceClamped);\n this.pos -= bytes.length;\n return bytes;\n };\n Stream.prototype.skip = function (n) {\n if (!n) {\n n = 1;\n }\n this.pos += n;\n };\n Stream.prototype.reset = function () {\n this.pos = this.start;\n };\n Stream.prototype.moveStart = function () {\n this.start = this.pos;\n };\n Stream.prototype.makeSubStream = function (start, length) {\n return new Stream(this.bytes, start, length);\n };\n Stream.prototype.decode = function () {\n return this.bytes;\n };\n return Stream;\n}());\nexport default Stream;\n//# sourceMappingURL=Stream.js.map","import { MethodNotImplementedError } from \"../errors\";\nimport Stream from \"./Stream\";\n/*\n * Copyright 2012 Mozilla Foundation\n *\n * The DecodeStream class contained in this file is a TypeScript port of the\n * JavaScript DecodeStream class in Mozilla's pdf.js project, made available\n * under the Apache 2.0 open source license.\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.\nvar emptyBuffer = new Uint8Array(0);\n/**\n * Super class for the decoding streams\n */\nvar DecodeStream = /** @class */ (function () {\n function DecodeStream(maybeMinBufferLength) {\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 Object.defineProperty(DecodeStream.prototype, \"isEmpty\", {\n get: function () {\n while (!this.eof && this.bufferLength === 0) {\n this.readBlock();\n }\n return this.bufferLength === 0;\n },\n enumerable: false,\n configurable: true\n });\n DecodeStream.prototype.getByte = function () {\n var pos = this.pos;\n while (this.bufferLength <= pos) {\n if (this.eof) {\n return -1;\n }\n this.readBlock();\n }\n return this.buffer[this.pos++];\n };\n DecodeStream.prototype.getUint16 = function () {\n var b0 = this.getByte();\n var b1 = this.getByte();\n if (b0 === -1 || b1 === -1) {\n return -1;\n }\n return (b0 << 8) + b1;\n };\n DecodeStream.prototype.getInt32 = function () {\n var b0 = this.getByte();\n var b1 = this.getByte();\n var b2 = this.getByte();\n var b3 = this.getByte();\n return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n };\n DecodeStream.prototype.getBytes = function (length, forceClamped) {\n if (forceClamped === void 0) { forceClamped = false; }\n var end;\n var pos = this.pos;\n if (length) {\n this.ensureBuffer(pos + length);\n end = pos + length;\n while (!this.eof && this.bufferLength < end) {\n this.readBlock();\n }\n var bufEnd = this.bufferLength;\n if (end > bufEnd) {\n end = bufEnd;\n }\n }\n else {\n while (!this.eof) {\n this.readBlock();\n }\n end = this.bufferLength;\n }\n this.pos = end;\n var 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 DecodeStream.prototype.peekByte = function () {\n var peekedByte = this.getByte();\n this.pos--;\n return peekedByte;\n };\n DecodeStream.prototype.peekBytes = function (length, forceClamped) {\n if (forceClamped === void 0) { forceClamped = false; }\n var bytes = this.getBytes(length, forceClamped);\n this.pos -= bytes.length;\n return bytes;\n };\n DecodeStream.prototype.skip = function (n) {\n if (!n) {\n n = 1;\n }\n this.pos += n;\n };\n DecodeStream.prototype.reset = function () {\n this.pos = 0;\n };\n DecodeStream.prototype.makeSubStream = function (start, length /* dict */) {\n var end = start + length;\n while (this.bufferLength <= end && !this.eof) {\n this.readBlock();\n }\n return new Stream(this.buffer, start, length /* dict */);\n };\n DecodeStream.prototype.decode = function () {\n while (!this.eof)\n this.readBlock();\n return this.buffer.subarray(0, this.bufferLength);\n };\n DecodeStream.prototype.readBlock = function () {\n throw new MethodNotImplementedError(this.constructor.name, 'readBlock');\n };\n DecodeStream.prototype.ensureBuffer = function (requested) {\n var buffer = this.buffer;\n if (requested <= buffer.byteLength) {\n return buffer;\n }\n var size = this.minBufferLength;\n while (size < requested) {\n size *= 2;\n }\n var buffer2 = new Uint8Array(size);\n buffer2.set(buffer);\n return (this.buffer = buffer2);\n };\n return DecodeStream;\n}());\nexport default DecodeStream;\n//# sourceMappingURL=DecodeStream.js.map","/*\n * Copyright 2012 Mozilla Foundation\n *\n * The Ascii85Stream class contained in this file is a TypeScript port of the\n * JavaScript Ascii85Stream class in Mozilla's pdf.js project, made available\n * under the Apache 2.0 open source license.\n */\nimport { __extends } from \"tslib\";\nimport DecodeStream from \"./DecodeStream\";\nvar isSpace = function (ch) {\n return ch === 0x20 || ch === 0x09 || ch === 0x0d || ch === 0x0a;\n};\nvar Ascii85Stream = /** @class */ (function (_super) {\n __extends(Ascii85Stream, _super);\n function Ascii85Stream(stream, maybeLength) {\n var _this = _super.call(this, maybeLength) || this;\n _this.stream = stream;\n _this.input = new Uint8Array(5);\n // Most streams increase in size when decoded, but Ascii85 streams\n // typically shrink by ~20%.\n if (maybeLength) {\n maybeLength = 0.8 * maybeLength;\n }\n return _this;\n }\n Ascii85Stream.prototype.readBlock = function () {\n var TILDA_CHAR = 0x7e; // '~'\n var Z_LOWER_CHAR = 0x7a; // 'z'\n var EOF = -1;\n var stream = this.stream;\n var c = stream.getByte();\n while (isSpace(c)) {\n c = stream.getByte();\n }\n if (c === EOF || c === TILDA_CHAR) {\n this.eof = true;\n return;\n }\n var bufferLength = this.bufferLength;\n var buffer;\n var i;\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 }\n else {\n var input = this.input;\n input[0] = c;\n for (i = 1; i < 5; ++i) {\n c = stream.getByte();\n while (isSpace(c)) {\n c = stream.getByte();\n }\n input[i] = c;\n if (c === EOF || c === TILDA_CHAR) {\n break;\n }\n }\n buffer = this.ensureBuffer(bufferLength + i - 1);\n this.bufferLength += i - 1;\n // partial ending;\n if (i < 5) {\n for (; i < 5; ++i) {\n input[i] = 0x21 + 84;\n }\n this.eof = true;\n }\n var t = 0;\n for (i = 0; i < 5; ++i) {\n t = t * 85 + (input[i] - 0x21);\n }\n for (i = 3; i >= 0; --i) {\n buffer[bufferLength + i] = t & 0xff;\n t >>= 8;\n }\n }\n };\n return Ascii85Stream;\n}(DecodeStream));\nexport default Ascii85Stream;\n//# sourceMappingURL=Ascii85Stream.js.map","/*\n * Copyright 2012 Mozilla Foundation\n *\n * The AsciiHexStream class contained in this file is a TypeScript port of the\n * JavaScript AsciiHexStream class in Mozilla's pdf.js project, made available\n * under the Apache 2.0 open source license.\n */\nimport { __extends } from \"tslib\";\nimport DecodeStream from \"./DecodeStream\";\nvar AsciiHexStream = /** @class */ (function (_super) {\n __extends(AsciiHexStream, _super);\n function AsciiHexStream(stream, maybeLength) {\n var _this = _super.call(this, maybeLength) || this;\n _this.stream = stream;\n _this.firstDigit = -1;\n // Most streams increase in size when decoded, but AsciiHex streams shrink\n // by 50%.\n if (maybeLength) {\n maybeLength = 0.5 * maybeLength;\n }\n return _this;\n }\n AsciiHexStream.prototype.readBlock = function () {\n var UPSTREAM_BLOCK_SIZE = 8000;\n var bytes = this.stream.getBytes(UPSTREAM_BLOCK_SIZE);\n if (!bytes.length) {\n this.eof = true;\n return;\n }\n var maxDecodeLength = (bytes.length + 1) >> 1;\n var buffer = this.ensureBuffer(this.bufferLength + maxDecodeLength);\n var bufferLength = this.bufferLength;\n var firstDigit = this.firstDigit;\n for (var i = 0, ii = bytes.length; i < ii; i++) {\n var ch = bytes[i];\n var digit = void 0;\n if (ch >= 0x30 && ch <= 0x39) {\n // '0'-'9'\n digit = ch & 0x0f;\n }\n else if ((ch >= 0x41 && ch <= 0x46) || (ch >= 0x61 && ch <= 0x66)) {\n // 'A'-'Z', 'a'-'z'\n digit = (ch & 0x0f) + 9;\n }\n else if (ch === 0x3e) {\n // '>'\n this.eof = true;\n break;\n }\n else {\n // probably whitespace\n continue; // ignoring\n }\n if (firstDigit < 0) {\n firstDigit = digit;\n }\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 return AsciiHexStream;\n}(DecodeStream));\nexport default AsciiHexStream;\n//# sourceMappingURL=AsciiHexStream.js.map","/*\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 */\nimport { __extends } from \"tslib\";\n/*\n * Copyright 2012 Mozilla Foundation\n *\n * The FlateStream class contained in this file is a TypeScript port of the\n * JavaScript FlateStream class in Mozilla's pdf.js project, made available\n * under the Apache 2.0 open source license.\n */\n/* tslint:disable no-conditional-assignment */\nimport DecodeStream from \"./DecodeStream\";\n// prettier-ignore\nvar 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// prettier-ignore\nvar 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// prettier-ignore\nvar 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// prettier-ignore\nvar fixedLitCodeTab = [new Int32Array([\n 0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c0,\n 0x70108, 0x80060, 0x80020, 0x900a0, 0x80000, 0x80080, 0x80040, 0x900e0,\n 0x70104, 0x80058, 0x80018, 0x90090, 0x70114, 0x80078, 0x80038, 0x900d0,\n 0x7010c, 0x80068, 0x80028, 0x900b0, 0x80008, 0x80088, 0x80048, 0x900f0,\n 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c8,\n 0x7010a, 0x80064, 0x80024, 0x900a8, 0x80004, 0x80084, 0x80044, 0x900e8,\n 0x70106, 0x8005c, 0x8001c, 0x90098, 0x70116, 0x8007c, 0x8003c, 0x900d8,\n 0x7010e, 0x8006c, 0x8002c, 0x900b8, 0x8000c, 0x8008c, 0x8004c, 0x900f8,\n 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c4,\n 0x70109, 0x80062, 0x80022, 0x900a4, 0x80002, 0x80082, 0x80042, 0x900e4,\n 0x70105, 0x8005a, 0x8001a, 0x90094, 0x70115, 0x8007a, 0x8003a, 0x900d4,\n 0x7010d, 0x8006a, 0x8002a, 0x900b4, 0x8000a, 0x8008a, 0x8004a, 0x900f4,\n 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cc,\n 0x7010b, 0x80066, 0x80026, 0x900ac, 0x80006, 0x80086, 0x80046, 0x900ec,\n 0x70107, 0x8005e, 0x8001e, 0x9009c, 0x70117, 0x8007e, 0x8003e, 0x900dc,\n 0x7010f, 0x8006e, 0x8002e, 0x900bc, 0x8000e, 0x8008e, 0x8004e, 0x900fc,\n 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c2,\n 0x70108, 0x80061, 0x80021, 0x900a2, 0x80001, 0x80081, 0x80041, 0x900e2,\n 0x70104, 0x80059, 0x80019, 0x90092, 0x70114, 0x80079, 0x80039, 0x900d2,\n 0x7010c, 0x80069, 0x80029, 0x900b2, 0x80009, 0x80089, 0x80049, 0x900f2,\n 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900ca,\n 0x7010a, 0x80065, 0x80025, 0x900aa, 0x80005, 0x80085, 0x80045, 0x900ea,\n 0x70106, 0x8005d, 0x8001d, 0x9009a, 0x70116, 0x8007d, 0x8003d, 0x900da,\n 0x7010e, 0x8006d, 0x8002d, 0x900ba, 0x8000d, 0x8008d, 0x8004d, 0x900fa,\n 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c6,\n 0x70109, 0x80063, 0x80023, 0x900a6, 0x80003, 0x80083, 0x80043, 0x900e6,\n 0x70105, 0x8005b, 0x8001b, 0x90096, 0x70115, 0x8007b, 0x8003b, 0x900d6,\n 0x7010d, 0x8006b, 0x8002b, 0x900b6, 0x8000b, 0x8008b, 0x8004b, 0x900f6,\n 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900ce,\n 0x7010b, 0x80067, 0x80027, 0x900ae, 0x80007, 0x80087, 0x80047, 0x900ee,\n 0x70107, 0x8005f, 0x8001f, 0x9009e, 0x70117, 0x8007f, 0x8003f, 0x900de,\n 0x7010f, 0x8006f, 0x8002f, 0x900be, 0x8000f, 0x8008f, 0x8004f, 0x900fe,\n 0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c1,\n 0x70108, 0x80060, 0x80020, 0x900a1, 0x80000, 0x80080, 0x80040, 0x900e1,\n 0x70104, 0x80058, 0x80018, 0x90091, 0x70114, 0x80078, 0x80038, 0x900d1,\n 0x7010c, 0x80068, 0x80028, 0x900b1, 0x80008, 0x80088, 0x80048, 0x900f1,\n 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c9,\n 0x7010a, 0x80064, 0x80024, 0x900a9, 0x80004, 0x80084, 0x80044, 0x900e9,\n 0x70106, 0x8005c, 0x8001c, 0x90099, 0x70116, 0x8007c, 0x8003c, 0x900d9,\n 0x7010e, 0x8006c, 0x8002c, 0x900b9, 0x8000c, 0x8008c, 0x8004c, 0x900f9,\n 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c5,\n 0x70109, 0x80062, 0x80022, 0x900a5, 0x80002, 0x80082, 0x80042, 0x900e5,\n 0x70105, 0x8005a, 0x8001a, 0x90095, 0x70115, 0x8007a, 0x8003a, 0x900d5,\n 0x7010d, 0x8006a, 0x8002a, 0x900b5, 0x8000a, 0x8008a, 0x8004a, 0x900f5,\n 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cd,\n 0x7010b, 0x80066, 0x80026, 0x900ad, 0x80006, 0x80086, 0x80046, 0x900ed,\n 0x70107, 0x8005e, 0x8001e, 0x9009d, 0x70117, 0x8007e, 0x8003e, 0x900dd,\n 0x7010f, 0x8006e, 0x8002e, 0x900bd, 0x8000e, 0x8008e, 0x8004e, 0x900fd,\n 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c3,\n 0x70108, 0x80061, 0x80021, 0x900a3, 0x80001, 0x80081, 0x80041, 0x900e3,\n 0x70104, 0x80059, 0x80019, 0x90093, 0x70114, 0x80079, 0x80039, 0x900d3,\n 0x7010c, 0x80069, 0x80029, 0x900b3, 0x80009, 0x80089, 0x80049, 0x900f3,\n 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900cb,\n 0x7010a, 0x80065, 0x80025, 0x900ab, 0x80005, 0x80085, 0x80045, 0x900eb,\n 0x70106, 0x8005d, 0x8001d, 0x9009b, 0x70116, 0x8007d, 0x8003d, 0x900db,\n 0x7010e, 0x8006d, 0x8002d, 0x900bb, 0x8000d, 0x8008d, 0x8004d, 0x900fb,\n 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c7,\n 0x70109, 0x80063, 0x80023, 0x900a7, 0x80003, 0x80083, 0x80043, 0x900e7,\n 0x70105, 0x8005b, 0x8001b, 0x90097, 0x70115, 0x8007b, 0x8003b, 0x900d7,\n 0x7010d, 0x8006b, 0x8002b, 0x900b7, 0x8000b, 0x8008b, 0x8004b, 0x900f7,\n 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900cf,\n 0x7010b, 0x80067, 0x80027, 0x900af, 0x80007, 0x80087, 0x80047, 0x900ef,\n 0x70107, 0x8005f, 0x8001f, 0x9009f, 0x70117, 0x8007f, 0x8003f, 0x900df,\n 0x7010f, 0x8006f, 0x8002f, 0x900bf, 0x8000f, 0x8008f, 0x8004f, 0x900ff\n ]), 9];\n// prettier-ignore\nvar fixedDistCodeTab = [new Int32Array([\n 0x50000, 0x50010, 0x50008, 0x50018, 0x50004, 0x50014, 0x5000c, 0x5001c,\n 0x50002, 0x50012, 0x5000a, 0x5001a, 0x50006, 0x50016, 0x5000e, 0x00000,\n 0x50001, 0x50011, 0x50009, 0x50019, 0x50005, 0x50015, 0x5000d, 0x5001d,\n 0x50003, 0x50013, 0x5000b, 0x5001b, 0x50007, 0x50017, 0x5000f, 0x00000\n ]), 5];\nvar FlateStream = /** @class */ (function (_super) {\n __extends(FlateStream, _super);\n function FlateStream(stream, maybeLength) {\n var _this = _super.call(this, maybeLength) || this;\n _this.stream = stream;\n var cmf = stream.getByte();\n var flg = stream.getByte();\n if (cmf === -1 || flg === -1) {\n throw new Error(\"Invalid header in flate stream: \" + cmf + \", \" + flg);\n }\n if ((cmf & 0x0f) !== 0x08) {\n throw new Error(\"Unknown compression method in flate stream: \" + cmf + \", \" + flg);\n }\n if (((cmf << 8) + flg) % 31 !== 0) {\n throw new Error(\"Bad FCHECK in flate stream: \" + cmf + \", \" + flg);\n }\n if (flg & 0x20) {\n throw new Error(\"FDICT bit set in flate stream: \" + cmf + \", \" + flg);\n }\n _this.codeSize = 0;\n _this.codeBuf = 0;\n return _this;\n }\n FlateStream.prototype.readBlock = function () {\n var buffer;\n var len;\n var str = this.stream;\n // read block header\n var hdr = this.getBits(3);\n if (hdr & 1) {\n this.eof = true;\n }\n hdr >>= 1;\n if (hdr === 0) {\n // uncompressed block\n var b = void 0;\n if ((b = str.getByte()) === -1) {\n throw new Error('Bad block header in flate stream');\n }\n var blockLen = b;\n if ((b = str.getByte()) === -1) {\n throw new Error('Bad block header in flate stream');\n }\n blockLen |= b << 8;\n if ((b = str.getByte()) === -1) {\n throw new Error('Bad block header in flate stream');\n }\n var check = b;\n if ((b = str.getByte()) === -1) {\n throw new Error('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 Error('Bad uncompressed block length in flate stream');\n }\n this.codeBuf = 0;\n this.codeSize = 0;\n var bufferLength = this.bufferLength;\n buffer = this.ensureBuffer(bufferLength + blockLen);\n var end = bufferLength + blockLen;\n this.bufferLength = end;\n if (blockLen === 0) {\n if (str.peekByte() === -1) {\n this.eof = true;\n }\n }\n else {\n for (var n = bufferLength; n < end; ++n) {\n if ((b = str.getByte()) === -1) {\n this.eof = true;\n break;\n }\n buffer[n] = b;\n }\n }\n return;\n }\n var litCodeTable;\n var distCodeTable;\n if (hdr === 1) {\n // compressed block, fixed codes\n litCodeTable = fixedLitCodeTab;\n distCodeTable = fixedDistCodeTab;\n }\n else if (hdr === 2) {\n // compressed block, dynamic codes\n var numLitCodes = this.getBits(5) + 257;\n var numDistCodes = this.getBits(5) + 1;\n var numCodeLenCodes = this.getBits(4) + 4;\n // build the code lengths code table\n var codeLenCodeLengths = new Uint8Array(codeLenCodeMap.length);\n var i = void 0;\n for (i = 0; i < numCodeLenCodes; ++i) {\n codeLenCodeLengths[codeLenCodeMap[i]] = this.getBits(3);\n }\n var codeLenCodeTab = this.generateHuffmanTable(codeLenCodeLengths);\n // build the literal and distance code tables\n len = 0;\n i = 0;\n var codes = numLitCodes + numDistCodes;\n var codeLengths = new Uint8Array(codes);\n var bitsLength = void 0;\n var bitsOffset = void 0;\n var what = void 0;\n while (i < codes) {\n var code = this.getCode(codeLenCodeTab);\n if (code === 16) {\n bitsLength = 2;\n bitsOffset = 3;\n what = len;\n }\n else if (code === 17) {\n bitsLength = 3;\n bitsOffset = 3;\n what = len = 0;\n }\n else if (code === 18) {\n bitsLength = 7;\n bitsOffset = 11;\n what = len = 0;\n }\n else {\n codeLengths[i++] = len = code;\n continue;\n }\n var repeatLength = this.getBits(bitsLength) + bitsOffset;\n while (repeatLength-- > 0) {\n codeLengths[i++] = what;\n }\n }\n litCodeTable = this.generateHuffmanTable(codeLengths.subarray(0, numLitCodes));\n distCodeTable = this.generateHuffmanTable(codeLengths.subarray(numLitCodes, codes));\n }\n else {\n throw new Error('Unknown block type in flate stream');\n }\n buffer = this.buffer;\n var limit = buffer ? buffer.length : 0;\n var pos = this.bufferLength;\n while (true) {\n var code1 = this.getCode(litCodeTable);\n if (code1 < 256) {\n if (pos + 1 >= limit) {\n buffer = this.ensureBuffer(pos + 1);\n limit = buffer.length;\n }\n buffer[pos++] = code1;\n continue;\n }\n if (code1 === 256) {\n this.bufferLength = pos;\n return;\n }\n code1 -= 257;\n code1 = lengthDecode[code1];\n var code2 = code1 >> 16;\n if (code2 > 0) {\n code2 = this.getBits(code2);\n }\n len = (code1 & 0xffff) + code2;\n code1 = this.getCode(distCodeTable);\n code1 = distDecode[code1];\n code2 = code1 >> 16;\n if (code2 > 0) {\n code2 = this.getBits(code2);\n }\n var dist = (code1 & 0xffff) + code2;\n if (pos + len >= limit) {\n buffer = this.ensureBuffer(pos + len);\n limit = buffer.length;\n }\n for (var k = 0; k < len; ++k, ++pos) {\n buffer[pos] = buffer[pos - dist];\n }\n }\n };\n FlateStream.prototype.getBits = function (bits) {\n var str = this.stream;\n var codeSize = this.codeSize;\n var codeBuf = this.codeBuf;\n var b;\n while (codeSize < bits) {\n if ((b = str.getByte()) === -1) {\n throw new Error('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 return b;\n };\n FlateStream.prototype.getCode = function (table) {\n var str = this.stream;\n var codes = table[0];\n var maxLen = table[1];\n var codeSize = this.codeSize;\n var codeBuf = this.codeBuf;\n var b;\n while (codeSize < maxLen) {\n if ((b = str.getByte()) === -1) {\n // premature end of stream. code might however still be valid.\n // codeSize < codeLen check below guards against incomplete codeVal.\n break;\n }\n codeBuf |= b << codeSize;\n codeSize += 8;\n }\n var code = codes[codeBuf & ((1 << maxLen) - 1)];\n if (typeof codes === 'number') {\n console.log('FLATE:', code);\n }\n var codeLen = code >> 16;\n var codeVal = code & 0xffff;\n if (codeLen < 1 || codeSize < codeLen) {\n throw new Error('Bad encoding in flate stream');\n }\n this.codeBuf = codeBuf >> codeLen;\n this.codeSize = codeSize - codeLen;\n return codeVal;\n };\n FlateStream.prototype.generateHuffmanTable = function (lengths) {\n var n = lengths.length;\n // find max code length\n var maxLen = 0;\n var i;\n for (i = 0; i < n; ++i) {\n if (lengths[i] > maxLen) {\n maxLen = lengths[i];\n }\n }\n // build the table\n var size = 1 << maxLen;\n var codes = new Int32Array(size);\n for (var len = 1, code = 0, skip = 2; len <= maxLen; ++len, code <<= 1, skip <<= 1) {\n for (var val = 0; val < n; ++val) {\n if (lengths[val] === len) {\n // bit-reverse the code\n var code2 = 0;\n var t = code;\n for (i = 0; i < len; ++i) {\n code2 = (code2 << 1) | (t & 1);\n t >>= 1;\n }\n // 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 return [codes, maxLen];\n };\n return FlateStream;\n}(DecodeStream));\nexport default FlateStream;\n//# sourceMappingURL=FlateStream.js.map","/*\n * Copyright 2012 Mozilla Foundation\n *\n * The LZWStream class contained in this file is a TypeScript port of the\n * JavaScript LZWStream class in Mozilla's pdf.js project, made available\n * under the Apache 2.0 open source license.\n */\nimport { __extends } from \"tslib\";\nimport DecodeStream from \"./DecodeStream\";\nvar LZWStream = /** @class */ (function (_super) {\n __extends(LZWStream, _super);\n function LZWStream(stream, maybeLength, earlyChange) {\n var _this = _super.call(this, maybeLength) || this;\n _this.stream = stream;\n _this.cachedData = 0;\n _this.bitsCached = 0;\n var maxLzwDictionarySize = 4096;\n var lzwState = {\n earlyChange: earlyChange,\n codeLength: 9,\n nextCode: 258,\n dictionaryValues: new Uint8Array(maxLzwDictionarySize),\n dictionaryLengths: new Uint16Array(maxLzwDictionarySize),\n dictionaryPrevCodes: new Uint16Array(maxLzwDictionarySize),\n currentSequence: new Uint8Array(maxLzwDictionarySize),\n currentSequenceLength: 0,\n };\n for (var i = 0; i < 256; ++i) {\n lzwState.dictionaryValues[i] = i;\n lzwState.dictionaryLengths[i] = 1;\n }\n _this.lzwState = lzwState;\n return _this;\n }\n LZWStream.prototype.readBlock = function () {\n var blockSize = 512;\n var estimatedDecodedSize = blockSize * 2;\n var decodedSizeDelta = blockSize;\n var i;\n var j;\n var q;\n var lzwState = this.lzwState;\n if (!lzwState) {\n return; // eof was found\n }\n var earlyChange = lzwState.earlyChange;\n var nextCode = lzwState.nextCode;\n var dictionaryValues = lzwState.dictionaryValues;\n var dictionaryLengths = lzwState.dictionaryLengths;\n var dictionaryPrevCodes = lzwState.dictionaryPrevCodes;\n var codeLength = lzwState.codeLength;\n var prevCode = lzwState.prevCode;\n var currentSequence = lzwState.currentSequence;\n var currentSequenceLength = lzwState.currentSequenceLength;\n var decodedLength = 0;\n var currentBufferLength = this.bufferLength;\n var buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n for (i = 0; i < blockSize; i++) {\n var code = this.readBits(codeLength);\n var hasPrev = currentSequenceLength > 0;\n if (!code || code < 256) {\n currentSequence[0] = code;\n currentSequenceLength = 1;\n }\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 }\n else {\n currentSequence[currentSequenceLength++] = currentSequence[0];\n }\n }\n else if (code === 256) {\n codeLength = 9;\n nextCode = 258;\n currentSequenceLength = 0;\n continue;\n }\n else {\n this.eof = true;\n delete this.lzwState;\n break;\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(Math.log(nextCode + earlyChange) / 0.6931471805599453 + 1, 12) | 0;\n }\n prevCode = code;\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 this.bufferLength = currentBufferLength;\n };\n LZWStream.prototype.readBits = function (n) {\n var bitsCached = this.bitsCached;\n var cachedData = this.cachedData;\n while (bitsCached < n) {\n var c = this.stream.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 return (cachedData >>> bitsCached) & ((1 << n) - 1);\n };\n return LZWStream;\n}(DecodeStream));\nexport default LZWStream;\n//# sourceMappingURL=LZWStream.js.map","/*\n * Copyright 2012 Mozilla Foundation\n *\n * The RunLengthStream class contained in this file is a TypeScript port of the\n * JavaScript RunLengthStream class in Mozilla's pdf.js project, made available\n * under the Apache 2.0 open source license.\n */\nimport { __extends } from \"tslib\";\nimport DecodeStream from \"./DecodeStream\";\nvar RunLengthStream = /** @class */ (function (_super) {\n __extends(RunLengthStream, _super);\n function RunLengthStream(stream, maybeLength) {\n var _this = _super.call(this, maybeLength) || this;\n _this.stream = stream;\n return _this;\n }\n RunLengthStream.prototype.readBlock = function () {\n // The repeatHeader has following format. The first byte defines type of run\n // and amount of bytes to repeat/copy: n = 0 through 127 - copy next n bytes\n // (in addition to the second byte from the header), n = 129 through 255 -\n // duplicate the second byte from the header (257 - n) times, n = 128 - end.\n var repeatHeader = this.stream.getBytes(2);\n if (!repeatHeader || repeatHeader.length < 2 || repeatHeader[0] === 128) {\n this.eof = true;\n return;\n }\n var buffer;\n var bufferLength = this.bufferLength;\n var n = repeatHeader[0];\n if (n < 128) {\n // copy n bytes\n buffer = this.ensureBuffer(bufferLength + n + 1);\n buffer[bufferLength++] = repeatHeader[1];\n if (n > 0) {\n var source = this.stream.getBytes(n);\n buffer.set(source, bufferLength);\n bufferLength += n;\n }\n }\n else {\n n = 257 - n;\n var b = repeatHeader[1];\n buffer = this.ensureBuffer(bufferLength + n + 1);\n for (var i = 0; i < n; i++) {\n buffer[bufferLength++] = b;\n }\n }\n this.bufferLength = bufferLength;\n };\n return RunLengthStream;\n}(DecodeStream));\nexport default RunLengthStream;\n//# sourceMappingURL=RunLengthStream.js.map","import { UnexpectedObjectTypeError, UnsupportedEncodingError, } from \"../errors\";\nimport PDFArray from \"../objects/PDFArray\";\nimport PDFDict from \"../objects/PDFDict\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFNumber from \"../objects/PDFNumber\";\nimport Ascii85Stream from \"./Ascii85Stream\";\nimport AsciiHexStream from \"./AsciiHexStream\";\nimport FlateStream from \"./FlateStream\";\nimport LZWStream from \"./LZWStream\";\nimport RunLengthStream from \"./RunLengthStream\";\nimport Stream from \"./Stream\";\nvar decodeStream = function (stream, encoding, params) {\n if (encoding === PDFName.of('FlateDecode')) {\n return new FlateStream(stream);\n }\n if (encoding === PDFName.of('LZWDecode')) {\n var earlyChange = 1;\n if (params instanceof PDFDict) {\n var EarlyChange = params.lookup(PDFName.of('EarlyChange'));\n if (EarlyChange instanceof PDFNumber) {\n earlyChange = EarlyChange.asNumber();\n }\n }\n return new LZWStream(stream, undefined, earlyChange);\n }\n if (encoding === PDFName.of('ASCII85Decode')) {\n return new Ascii85Stream(stream);\n }\n if (encoding === PDFName.of('ASCIIHexDecode')) {\n return new AsciiHexStream(stream);\n }\n if (encoding === PDFName.of('RunLengthDecode')) {\n return new RunLengthStream(stream);\n }\n throw new UnsupportedEncodingError(encoding.asString());\n};\nexport var decodePDFRawStream = function (_a) {\n var dict = _a.dict, contents = _a.contents;\n var stream = new Stream(contents);\n var Filter = dict.lookup(PDFName.of('Filter'));\n var DecodeParms = dict.lookup(PDFName.of('DecodeParms'));\n if (Filter instanceof PDFName) {\n stream = decodeStream(stream, Filter, DecodeParms);\n }\n else if (Filter instanceof PDFArray) {\n for (var idx = 0, len = Filter.size(); idx < len; idx++) {\n stream = decodeStream(stream, Filter.lookup(idx, PDFName), DecodeParms && DecodeParms.lookupMaybe(idx, PDFDict));\n }\n }\n else if (!!Filter) {\n throw new UnexpectedObjectTypeError([PDFName, PDFArray], Filter);\n }\n return stream;\n};\n//# sourceMappingURL=decode.js.map","import { __awaiter, __generator } from \"tslib\";\nimport { MissingPageContentsEmbeddingError, UnrecognizedStreamTypeError, } from \"../errors\";\nimport PDFNumber from \"../objects/PDFNumber\";\nimport PDFRawStream from \"../objects/PDFRawStream\";\nimport PDFStream from \"../objects/PDFStream\";\nimport { decodePDFRawStream } from \"../streams/decode\";\nimport PDFContentStream from \"../structures/PDFContentStream\";\nimport CharCodes from \"../syntax/CharCodes\";\nimport { mergeIntoTypedArray } from \"../../utils\";\nvar fullPageBoundingBox = function (page) {\n var mediaBox = page.MediaBox();\n var width = mediaBox.lookup(2, PDFNumber).asNumber() -\n mediaBox.lookup(0, PDFNumber).asNumber();\n var height = mediaBox.lookup(3, PDFNumber).asNumber() -\n mediaBox.lookup(1, PDFNumber).asNumber();\n return { left: 0, bottom: 0, right: width, top: height };\n};\n// Returns the identity matrix, modified to position the content of the given\n// bounding box at (0, 0).\nvar boundingBoxAdjustedMatrix = function (bb) { return [1, 0, 0, 1, -bb.left, -bb.bottom]; };\nvar PDFPageEmbedder = /** @class */ (function () {\n function PDFPageEmbedder(page, boundingBox, transformationMatrix) {\n this.page = page;\n var bb = boundingBox !== null && boundingBox !== void 0 ? boundingBox : fullPageBoundingBox(page);\n this.width = bb.right - bb.left;\n this.height = bb.top - bb.bottom;\n this.boundingBox = bb;\n this.transformationMatrix = transformationMatrix !== null && transformationMatrix !== void 0 ? transformationMatrix : boundingBoxAdjustedMatrix(bb);\n }\n PDFPageEmbedder.for = function (page, boundingBox, transformationMatrix) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, new PDFPageEmbedder(page, boundingBox, transformationMatrix)];\n });\n });\n };\n PDFPageEmbedder.prototype.embedIntoContext = function (context, ref) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, Contents, Resources, decodedContents, _b, left, bottom, right, top, xObject;\n return __generator(this, function (_c) {\n _a = this.page.normalizedEntries(), Contents = _a.Contents, Resources = _a.Resources;\n if (!Contents)\n throw new MissingPageContentsEmbeddingError();\n decodedContents = this.decodeContents(Contents);\n _b = this.boundingBox, left = _b.left, bottom = _b.bottom, right = _b.right, top = _b.top;\n xObject = context.flateStream(decodedContents, {\n Type: 'XObject',\n Subtype: 'Form',\n FormType: 1,\n BBox: [left, bottom, right, top],\n Matrix: this.transformationMatrix,\n Resources: Resources,\n });\n if (ref) {\n context.assign(ref, xObject);\n return [2 /*return*/, ref];\n }\n else {\n return [2 /*return*/, context.register(xObject)];\n }\n return [2 /*return*/];\n });\n });\n };\n // `contents` is an array of streams which are merged to include them in the XObject.\n // This methods extracts each stream and joins them with a newline character.\n PDFPageEmbedder.prototype.decodeContents = function (contents) {\n var newline = Uint8Array.of(CharCodes.Newline);\n var decodedContents = [];\n for (var idx = 0, len = contents.size(); idx < len; idx++) {\n var stream = contents.lookup(idx, PDFStream);\n var content = void 0;\n if (stream instanceof PDFRawStream) {\n content = decodePDFRawStream(stream).decode();\n }\n else if (stream instanceof PDFContentStream) {\n content = stream.getUnencodedContents();\n }\n else {\n throw new UnrecognizedStreamTypeError(stream);\n }\n decodedContents.push(content, newline);\n }\n return mergeIntoTypedArray.apply(void 0, decodedContents);\n };\n return PDFPageEmbedder;\n}());\nexport default PDFPageEmbedder;\n//# sourceMappingURL=PDFPageEmbedder.js.map","import PDFArray from \"../objects/PDFArray\";\nimport PDFBool from \"../objects/PDFBool\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFNumber from \"../objects/PDFNumber\";\nimport { assertEachIs, assertInteger, assertIsOneOf, assertRange, } from \"../../utils\";\nvar asEnum = function (rawValue, enumType) {\n if (rawValue === undefined)\n return undefined;\n return enumType[rawValue];\n};\nexport var NonFullScreenPageMode;\n(function (NonFullScreenPageMode) {\n /**\n * After exiting FullScreen mode, neither the document outline nor thumbnail\n * images should be visible.\n */\n NonFullScreenPageMode[\"UseNone\"] = \"UseNone\";\n /** After exiting FullScreen mode, the document outline should be visible. */\n NonFullScreenPageMode[\"UseOutlines\"] = \"UseOutlines\";\n /** After exiting FullScreen mode, thumbnail images should be visible. */\n NonFullScreenPageMode[\"UseThumbs\"] = \"UseThumbs\";\n /**\n * After exiting FullScreen mode, the optional content group panel should be\n * visible.\n */\n NonFullScreenPageMode[\"UseOC\"] = \"UseOC\";\n})(NonFullScreenPageMode || (NonFullScreenPageMode = {}));\nexport var ReadingDirection;\n(function (ReadingDirection) {\n /** The predominant reading order is Left to Right. */\n ReadingDirection[\"L2R\"] = \"L2R\";\n /**\n * The predominant reading order is Right to left (including vertical writing\n * systems, such as Chinese, Japanese and Korean).\n */\n ReadingDirection[\"R2L\"] = \"R2L\";\n})(ReadingDirection || (ReadingDirection = {}));\nexport var PrintScaling;\n(function (PrintScaling) {\n /** No page scaling. */\n PrintScaling[\"None\"] = \"None\";\n /* Use the PDF reader's default print scaling. */\n PrintScaling[\"AppDefault\"] = \"AppDefault\";\n})(PrintScaling || (PrintScaling = {}));\nexport var Duplex;\n(function (Duplex) {\n /** The PDF reader should print single-sided. */\n Duplex[\"Simplex\"] = \"Simplex\";\n /**\n * The PDF reader should print double sided and flip on the short edge of the\n * sheet.\n */\n Duplex[\"DuplexFlipShortEdge\"] = \"DuplexFlipShortEdge\";\n /**\n * The PDF reader should print double sided and flip on the long edge of the\n * sheet.\n */\n Duplex[\"DuplexFlipLongEdge\"] = \"DuplexFlipLongEdge\";\n})(Duplex || (Duplex = {}));\nvar ViewerPreferences = /** @class */ (function () {\n /** @ignore */\n function ViewerPreferences(dict) {\n this.dict = dict;\n }\n ViewerPreferences.prototype.lookupBool = function (key) {\n var returnObj = this.dict.lookup(PDFName.of(key));\n if (returnObj instanceof PDFBool)\n return returnObj;\n return undefined;\n };\n ViewerPreferences.prototype.lookupName = function (key) {\n var returnObj = this.dict.lookup(PDFName.of(key));\n if (returnObj instanceof PDFName)\n return returnObj;\n return undefined;\n };\n /** @ignore */\n ViewerPreferences.prototype.HideToolbar = function () {\n return this.lookupBool('HideToolbar');\n };\n /** @ignore */\n ViewerPreferences.prototype.HideMenubar = function () {\n return this.lookupBool('HideMenubar');\n };\n /** @ignore */\n ViewerPreferences.prototype.HideWindowUI = function () {\n return this.lookupBool('HideWindowUI');\n };\n /** @ignore */\n ViewerPreferences.prototype.FitWindow = function () {\n return this.lookupBool('FitWindow');\n };\n /** @ignore */\n ViewerPreferences.prototype.CenterWindow = function () {\n return this.lookupBool('CenterWindow');\n };\n /** @ignore */\n ViewerPreferences.prototype.DisplayDocTitle = function () {\n return this.lookupBool('DisplayDocTitle');\n };\n /** @ignore */\n ViewerPreferences.prototype.NonFullScreenPageMode = function () {\n return this.lookupName('NonFullScreenPageMode');\n };\n /** @ignore */\n ViewerPreferences.prototype.Direction = function () {\n return this.lookupName('Direction');\n };\n /** @ignore */\n ViewerPreferences.prototype.PrintScaling = function () {\n return this.lookupName('PrintScaling');\n };\n /** @ignore */\n ViewerPreferences.prototype.Duplex = function () {\n return this.lookupName('Duplex');\n };\n /** @ignore */\n ViewerPreferences.prototype.PickTrayByPDFSize = function () {\n return this.lookupBool('PickTrayByPDFSize');\n };\n /** @ignore */\n ViewerPreferences.prototype.PrintPageRange = function () {\n var PrintPageRange = this.dict.lookup(PDFName.of('PrintPageRange'));\n if (PrintPageRange instanceof PDFArray)\n return PrintPageRange;\n return undefined;\n };\n /** @ignore */\n ViewerPreferences.prototype.NumCopies = function () {\n var NumCopies = this.dict.lookup(PDFName.of('NumCopies'));\n if (NumCopies instanceof PDFNumber)\n return NumCopies;\n return undefined;\n };\n /**\n * Returns `true` if PDF readers should hide the toolbar menus when displaying\n * this document.\n * @returns Whether or not toolbars should be hidden.\n */\n ViewerPreferences.prototype.getHideToolbar = function () {\n var _a, _b;\n return (_b = (_a = this.HideToolbar()) === null || _a === void 0 ? void 0 : _a.asBoolean()) !== null && _b !== void 0 ? _b : false;\n };\n /**\n * Returns `true` if PDF readers should hide the menu bar when displaying this\n * document.\n * @returns Whether or not the menu bar should be hidden.\n */\n ViewerPreferences.prototype.getHideMenubar = function () {\n var _a, _b;\n return (_b = (_a = this.HideMenubar()) === null || _a === void 0 ? void 0 : _a.asBoolean()) !== null && _b !== void 0 ? _b : false;\n };\n /**\n * Returns `true` if PDF readers should hide the user interface elements in\n * the document's window (such as scroll bars and navigation controls),\n * leaving only the document's contents displayed.\n * @returns Whether or not user interface elements should be hidden.\n */\n ViewerPreferences.prototype.getHideWindowUI = function () {\n var _a, _b;\n return (_b = (_a = this.HideWindowUI()) === null || _a === void 0 ? void 0 : _a.asBoolean()) !== null && _b !== void 0 ? _b : false;\n };\n /**\n * Returns `true` if PDF readers should resize the document's window to fit\n * the size of the first displayed page.\n * @returns Whether or not the window should be resized to fit.\n */\n ViewerPreferences.prototype.getFitWindow = function () {\n var _a, _b;\n return (_b = (_a = this.FitWindow()) === null || _a === void 0 ? void 0 : _a.asBoolean()) !== null && _b !== void 0 ? _b : false;\n };\n /**\n * Returns `true` if PDF readers should position the document's window in the\n * center of the screen.\n * @returns Whether or not to center the document window.\n */\n ViewerPreferences.prototype.getCenterWindow = function () {\n var _a, _b;\n return (_b = (_a = this.CenterWindow()) === null || _a === void 0 ? void 0 : _a.asBoolean()) !== null && _b !== void 0 ? _b : false;\n };\n /**\n * Returns `true` if the window's title bar should display the document\n * `Title`, taken from the document metadata (see [[PDFDocument.getTitle]]).\n * Returns `false` if the title bar should instead display the filename of the\n * PDF file.\n * @returns Whether to display the document title.\n */\n ViewerPreferences.prototype.getDisplayDocTitle = function () {\n var _a, _b;\n return (_b = (_a = this.DisplayDocTitle()) === null || _a === void 0 ? void 0 : _a.asBoolean()) !== null && _b !== void 0 ? _b : false;\n };\n /**\n * Returns the page mode, which tells the PDF reader how to display the\n * document after exiting full-screen mode.\n * @returns The page mode after exiting full-screen mode.\n */\n ViewerPreferences.prototype.getNonFullScreenPageMode = function () {\n var _a, _b;\n var mode = (_a = this.NonFullScreenPageMode()) === null || _a === void 0 ? void 0 : _a.decodeText();\n return (_b = asEnum(mode, NonFullScreenPageMode)) !== null && _b !== void 0 ? _b : NonFullScreenPageMode.UseNone;\n };\n /**\n * Returns the predominant reading order for text.\n * @returns The text reading order.\n */\n ViewerPreferences.prototype.getReadingDirection = function () {\n var _a, _b;\n var direction = (_a = this.Direction()) === null || _a === void 0 ? void 0 : _a.decodeText();\n return (_b = asEnum(direction, ReadingDirection)) !== null && _b !== void 0 ? _b : ReadingDirection.L2R;\n };\n /**\n * Returns the page scaling option that the PDF reader should select when the\n * print dialog is displayed.\n * @returns The page scaling option.\n */\n ViewerPreferences.prototype.getPrintScaling = function () {\n var _a, _b;\n var scaling = (_a = this.PrintScaling()) === null || _a === void 0 ? void 0 : _a.decodeText();\n return (_b = asEnum(scaling, PrintScaling)) !== null && _b !== void 0 ? _b : PrintScaling.AppDefault;\n };\n /**\n * Returns the paper handling option that should be used when printing the\n * file from the print dialog.\n * @returns The paper handling option.\n */\n ViewerPreferences.prototype.getDuplex = function () {\n var _a;\n var duplex = (_a = this.Duplex()) === null || _a === void 0 ? void 0 : _a.decodeText();\n return asEnum(duplex, Duplex);\n };\n /**\n * Returns `true` if the PDF page size should be used to select the input\n * paper tray.\n * @returns Whether or not the PDF page size should be used to select the\n * input paper tray.\n */\n ViewerPreferences.prototype.getPickTrayByPDFSize = function () {\n var _a;\n return (_a = this.PickTrayByPDFSize()) === null || _a === void 0 ? void 0 : _a.asBoolean();\n };\n /**\n * Returns an array of page number ranges, which are the values used to\n * initialize the print dialog box when the file is printed. Each range\n * specifies the first (`start`) and last (`end`) pages in a sub-range of\n * pages to be printed. The first page of the PDF file is denoted by 0.\n * For example:\n * ```js\n * const viewerPrefs = pdfDoc.catalog.getOrCreateViewerPreferences()\n * const includesPage3 = viewerPrefs\n * .getPrintRanges()\n * .some(pr => pr.start =< 2 && pr.end >= 2)\n * if (includesPage3) console.log('printRange includes page 3')\n * ```\n * @returns An array of objects, each with the properties `start` and `end`,\n * denoting page indices. If not, specified an empty array is\n * returned.\n */\n ViewerPreferences.prototype.getPrintPageRange = function () {\n var rng = this.PrintPageRange();\n if (!rng)\n return [];\n var pageRanges = [];\n for (var i = 0; i < rng.size(); i += 2) {\n // Despite the spec clearly stating that \"The first page of the PDF file\n // shall be donoted by 1\", several test PDFs (spec 1.7) created in\n // Acrobat XI 11.0 and also read with Reader DC 2020.013 indicate this is\n // actually a 0 based index.\n var start = rng.lookup(i, PDFNumber).asNumber();\n var end = rng.lookup(i + 1, PDFNumber).asNumber();\n pageRanges.push({ start: start, end: end });\n }\n return pageRanges;\n };\n /**\n * Returns the number of copies to be printed when the print dialog is opened\n * for this document.\n * @returns The default number of copies to be printed.\n */\n ViewerPreferences.prototype.getNumCopies = function () {\n var _a, _b;\n return (_b = (_a = this.NumCopies()) === null || _a === void 0 ? void 0 : _a.asNumber()) !== null && _b !== void 0 ? _b : 1;\n };\n /**\n * Choose whether the PDF reader's toolbars should be hidden while the\n * document is active.\n * @param hideToolbar `true` if the toolbar should be hidden.\n */\n ViewerPreferences.prototype.setHideToolbar = function (hideToolbar) {\n var HideToolbar = this.dict.context.obj(hideToolbar);\n this.dict.set(PDFName.of('HideToolbar'), HideToolbar);\n };\n /**\n * Choose whether the PDF reader's menu bar should be hidden while the\n * document is active.\n * @param hideMenubar `true` if the menu bar should be hidden.\n */\n ViewerPreferences.prototype.setHideMenubar = function (hideMenubar) {\n var HideMenubar = this.dict.context.obj(hideMenubar);\n this.dict.set(PDFName.of('HideMenubar'), HideMenubar);\n };\n /**\n * Choose whether the PDF reader should hide user interface elements in the\n * document's window (such as scroll bars and navigation controls), leaving\n * only the document's contents displayed.\n * @param hideWindowUI `true` if the user interface elements should be hidden.\n */\n ViewerPreferences.prototype.setHideWindowUI = function (hideWindowUI) {\n var HideWindowUI = this.dict.context.obj(hideWindowUI);\n this.dict.set(PDFName.of('HideWindowUI'), HideWindowUI);\n };\n /**\n * Choose whether the PDF reader should resize the document's window to fit\n * the size of the first displayed page.\n * @param fitWindow `true` if the window should be resized.\n */\n ViewerPreferences.prototype.setFitWindow = function (fitWindow) {\n var FitWindow = this.dict.context.obj(fitWindow);\n this.dict.set(PDFName.of('FitWindow'), FitWindow);\n };\n /**\n * Choose whether the PDF reader should position the document's window in the\n * center of the screen.\n * @param centerWindow `true` if the window should be centered.\n */\n ViewerPreferences.prototype.setCenterWindow = function (centerWindow) {\n var CenterWindow = this.dict.context.obj(centerWindow);\n this.dict.set(PDFName.of('CenterWindow'), CenterWindow);\n };\n /**\n * Choose whether the window's title bar should display the document `Title`\n * taken from the document metadata (see [[PDFDocument.setTitle]]). If\n * `false`, the title bar should instead display the PDF filename.\n * @param displayTitle `true` if the document title should be displayed.\n */\n ViewerPreferences.prototype.setDisplayDocTitle = function (displayTitle) {\n var DisplayDocTitle = this.dict.context.obj(displayTitle);\n this.dict.set(PDFName.of('DisplayDocTitle'), DisplayDocTitle);\n };\n /**\n * Choose how the PDF reader should display the document upon exiting\n * full-screen mode. This entry is meaningful only if the value of the\n * `PageMode` entry in the document's [[PDFCatalog]] is `FullScreen`.\n *\n * For example:\n * ```js\n * import { PDFDocument, NonFullScreenPageMode, PDFName } from 'pdf-lib'\n *\n * const pdfDoc = await PDFDocument.create()\n *\n * // Set the PageMode\n * pdfDoc.catalog.set(PDFName.of('PageMode'),PDFName.of('FullScreen'))\n *\n * // Set what happens when full-screen is closed\n * const viewerPrefs = pdfDoc.catalog.getOrCreateViewerPreferences()\n * viewerPrefs.setNonFullScreenPageMode(NonFullScreenPageMode.UseOutlines)\n * ```\n *\n * @param nonFullScreenPageMode How the document should be displayed upon\n * exiting full screen mode.\n */\n ViewerPreferences.prototype.setNonFullScreenPageMode = function (nonFullScreenPageMode) {\n assertIsOneOf(nonFullScreenPageMode, 'nonFullScreenPageMode', NonFullScreenPageMode);\n var mode = PDFName.of(nonFullScreenPageMode);\n this.dict.set(PDFName.of('NonFullScreenPageMode'), mode);\n };\n /**\n * Choose the predominant reading order for text.\n *\n * This entry has no direct effect on the document's contents or page\n * numbering, but may be used to determine the relative positioning of pages\n * when displayed side by side or printed n-up.\n *\n * For example:\n * ```js\n * import { PDFDocument, ReadingDirection } from 'pdf-lib'\n *\n * const pdfDoc = await PDFDocument.create()\n * const viewerPrefs = pdfDoc.catalog.getOrCreateViewerPreferences()\n * viewerPrefs.setReadingDirection(ReadingDirection.R2L)\n * ```\n *\n * @param readingDirection The reading order for text.\n */\n ViewerPreferences.prototype.setReadingDirection = function (readingDirection) {\n assertIsOneOf(readingDirection, 'readingDirection', ReadingDirection);\n var direction = PDFName.of(readingDirection);\n this.dict.set(PDFName.of('Direction'), direction);\n };\n /**\n * Choose the page scaling option that should be selected when a print dialog\n * is displayed for this document.\n *\n * For example:\n * ```js\n * import { PDFDocument, PrintScaling } from 'pdf-lib'\n *\n * const pdfDoc = await PDFDocument.create()\n * const viewerPrefs = pdfDoc.catalog.getOrCreateViewerPreferences()\n * viewerPrefs.setPrintScaling(PrintScaling.None)\n * ```\n *\n * @param printScaling The print scaling option.\n */\n ViewerPreferences.prototype.setPrintScaling = function (printScaling) {\n assertIsOneOf(printScaling, 'printScaling', PrintScaling);\n var scaling = PDFName.of(printScaling);\n this.dict.set(PDFName.of('PrintScaling'), scaling);\n };\n /**\n * Choose the paper handling option that should be selected by default in the\n * print dialog.\n *\n * For example:\n * ```js\n * import { PDFDocument, Duplex } from 'pdf-lib'\n *\n * const pdfDoc = await PDFDocument.create()\n * const viewerPrefs = pdfDoc.catalog.getOrCreateViewerPreferences()\n * viewerPrefs.setDuplex(Duplex.DuplexFlipShortEdge)\n * ```\n *\n * @param duplex The double or single sided printing option.\n */\n ViewerPreferences.prototype.setDuplex = function (duplex) {\n assertIsOneOf(duplex, 'duplex', Duplex);\n var dup = PDFName.of(duplex);\n this.dict.set(PDFName.of('Duplex'), dup);\n };\n /**\n * Choose whether the PDF document's page size should be used to select the\n * input paper tray when printing. This setting influences only the preset\n * values used to populate the print dialog presented by a PDF reader.\n *\n * If PickTrayByPDFSize is true, the check box in the print dialog associated\n * with input paper tray should be checked. This setting has no effect on\n * operating systems that do not provide the ability to pick the input tray\n * by size.\n *\n * @param pickTrayByPDFSize `true` if the document's page size should be used\n * to select the input paper tray.\n */\n ViewerPreferences.prototype.setPickTrayByPDFSize = function (pickTrayByPDFSize) {\n var PickTrayByPDFSize = this.dict.context.obj(pickTrayByPDFSize);\n this.dict.set(PDFName.of('PickTrayByPDFSize'), PickTrayByPDFSize);\n };\n /**\n * Choose the page numbers used to initialize the print dialog box when the\n * file is printed. The first page of the PDF file is denoted by 0.\n *\n * For example:\n * ```js\n * import { PDFDocument } from 'pdf-lib'\n *\n * const pdfDoc = await PDFDocument.create()\n * const viewerPrefs = pdfDoc.catalog.getOrCreateViewerPreferences()\n *\n * // We can set the default print range to only the first page\n * viewerPrefs.setPrintPageRange({ start: 0, end: 0 })\n *\n * // Or we can supply noncontiguous ranges (e.g. pages 1, 3, and 5-7)\n * viewerPrefs.setPrintPageRange([\n * { start: 0, end: 0 },\n * { start: 2, end: 2 },\n * { start: 4, end: 6 },\n * ])\n * ```\n *\n * @param printPageRange An object or array of objects, each with the\n * properties `start` and `end`, denoting a range of\n * page indices.\n */\n ViewerPreferences.prototype.setPrintPageRange = function (printPageRange) {\n if (!Array.isArray(printPageRange))\n printPageRange = [printPageRange];\n var flatRange = [];\n for (var idx = 0, len = printPageRange.length; idx < len; idx++) {\n flatRange.push(printPageRange[idx].start);\n flatRange.push(printPageRange[idx].end);\n }\n assertEachIs(flatRange, 'printPageRange', ['number']);\n var pageRanges = this.dict.context.obj(flatRange);\n this.dict.set(PDFName.of('PrintPageRange'), pageRanges);\n };\n /**\n * Choose the default number of copies to be printed when the print dialog is\n * opened for this file.\n * @param numCopies The default number of copies.\n */\n ViewerPreferences.prototype.setNumCopies = function (numCopies) {\n assertRange(numCopies, 'numCopies', 1, Number.MAX_VALUE);\n assertInteger(numCopies, 'numCopies');\n var NumCopies = this.dict.context.obj(numCopies);\n this.dict.set(PDFName.of('NumCopies'), NumCopies);\n };\n /** @ignore */\n ViewerPreferences.fromDict = function (dict) {\n return new ViewerPreferences(dict);\n };\n /** @ignore */\n ViewerPreferences.create = function (context) {\n var dict = context.obj({});\n return new ViewerPreferences(dict);\n };\n return ViewerPreferences;\n}());\nexport default ViewerPreferences;\n//# sourceMappingURL=ViewerPreferences.js.map","import PDFDict from \"../objects/PDFDict\";\nimport PDFString from \"../objects/PDFString\";\nimport PDFHexString from \"../objects/PDFHexString\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFNumber from \"../objects/PDFNumber\";\nimport PDFArray from \"../objects/PDFArray\";\nimport PDFRef from \"../objects/PDFRef\";\nimport { findLastMatch } from \"../../utils\";\nimport { MissingDAEntryError, MissingTfOperatorError } from \"../errors\";\n// Examples:\n// `/Helv 12 Tf` -> ['Helv', '12']\n// `/HeBo 8.00 Tf` -> ['HeBo', '8.00']\n// `/HeBo Tf` -> ['HeBo', undefined]\nvar tfRegex = /\\/([^\\0\\t\\n\\f\\r\\ ]+)[\\0\\t\\n\\f\\r\\ ]*(\\d*\\.\\d+|\\d+)?[\\0\\t\\n\\f\\r\\ ]+Tf/;\nvar PDFAcroField = /** @class */ (function () {\n function PDFAcroField(dict, ref) {\n this.dict = dict;\n this.ref = ref;\n }\n PDFAcroField.prototype.T = function () {\n return this.dict.lookupMaybe(PDFName.of('T'), PDFString, PDFHexString);\n };\n PDFAcroField.prototype.Ff = function () {\n var numberOrRef = this.getInheritableAttribute(PDFName.of('Ff'));\n return this.dict.context.lookupMaybe(numberOrRef, PDFNumber);\n };\n PDFAcroField.prototype.V = function () {\n var valueOrRef = this.getInheritableAttribute(PDFName.of('V'));\n return this.dict.context.lookup(valueOrRef);\n };\n PDFAcroField.prototype.Kids = function () {\n return this.dict.lookupMaybe(PDFName.of('Kids'), PDFArray);\n };\n // Parent(): PDFDict | undefined {\n // return this.dict.lookupMaybe(PDFName.of('Parent'), PDFDict);\n // }\n PDFAcroField.prototype.DA = function () {\n var da = this.dict.lookup(PDFName.of('DA'));\n if (da instanceof PDFString || da instanceof PDFHexString)\n return da;\n return undefined;\n };\n PDFAcroField.prototype.setKids = function (kids) {\n this.dict.set(PDFName.of('Kids'), this.dict.context.obj(kids));\n };\n PDFAcroField.prototype.getParent = function () {\n // const parent = this.Parent();\n // if (!parent) return undefined;\n // return new PDFAcroField(parent);\n var parentRef = this.dict.get(PDFName.of('Parent'));\n if (parentRef instanceof PDFRef) {\n var parent_1 = this.dict.lookup(PDFName.of('Parent'), PDFDict);\n return new PDFAcroField(parent_1, parentRef);\n }\n return undefined;\n };\n PDFAcroField.prototype.setParent = function (parent) {\n if (!parent)\n this.dict.delete(PDFName.of('Parent'));\n else\n this.dict.set(PDFName.of('Parent'), parent);\n };\n PDFAcroField.prototype.getFullyQualifiedName = function () {\n var parent = this.getParent();\n if (!parent)\n return this.getPartialName();\n return parent.getFullyQualifiedName() + \".\" + this.getPartialName();\n };\n PDFAcroField.prototype.getPartialName = function () {\n var _a;\n return (_a = this.T()) === null || _a === void 0 ? void 0 : _a.decodeText();\n };\n PDFAcroField.prototype.setPartialName = function (partialName) {\n if (!partialName)\n this.dict.delete(PDFName.of('T'));\n else\n this.dict.set(PDFName.of('T'), PDFHexString.fromText(partialName));\n };\n PDFAcroField.prototype.setDefaultAppearance = function (appearance) {\n this.dict.set(PDFName.of('DA'), PDFString.of(appearance));\n };\n PDFAcroField.prototype.getDefaultAppearance = function () {\n var DA = this.DA();\n if (DA instanceof PDFHexString) {\n return DA.decodeText();\n }\n return DA === null || DA === void 0 ? void 0 : DA.asString();\n };\n PDFAcroField.prototype.setFontSize = function (fontSize) {\n var _a;\n var name = (_a = this.getFullyQualifiedName()) !== null && _a !== void 0 ? _a : '';\n var da = this.getDefaultAppearance();\n if (!da)\n throw new MissingDAEntryError(name);\n var daMatch = findLastMatch(da, tfRegex);\n if (!daMatch.match)\n throw new MissingTfOperatorError(name);\n var daStart = da.slice(0, daMatch.pos - daMatch.match[0].length);\n var daEnd = daMatch.pos <= da.length ? da.slice(daMatch.pos) : '';\n var fontName = daMatch.match[1];\n var modifiedDa = daStart + \" /\" + fontName + \" \" + fontSize + \" Tf \" + daEnd;\n this.setDefaultAppearance(modifiedDa);\n };\n PDFAcroField.prototype.getFlags = function () {\n var _a, _b;\n return (_b = (_a = this.Ff()) === null || _a === void 0 ? void 0 : _a.asNumber()) !== null && _b !== void 0 ? _b : 0;\n };\n PDFAcroField.prototype.setFlags = function (flags) {\n this.dict.set(PDFName.of('Ff'), PDFNumber.of(flags));\n };\n PDFAcroField.prototype.hasFlag = function (flag) {\n var flags = this.getFlags();\n return (flags & flag) !== 0;\n };\n PDFAcroField.prototype.setFlag = function (flag) {\n var flags = this.getFlags();\n this.setFlags(flags | flag);\n };\n PDFAcroField.prototype.clearFlag = function (flag) {\n var flags = this.getFlags();\n this.setFlags(flags & ~flag);\n };\n PDFAcroField.prototype.setFlagTo = function (flag, enable) {\n if (enable)\n this.setFlag(flag);\n else\n this.clearFlag(flag);\n };\n PDFAcroField.prototype.getInheritableAttribute = function (name) {\n var attribute;\n this.ascend(function (node) {\n if (!attribute)\n attribute = node.dict.get(name);\n });\n return attribute;\n };\n PDFAcroField.prototype.ascend = function (visitor) {\n visitor(this);\n var parent = this.getParent();\n if (parent)\n parent.ascend(visitor);\n };\n return PDFAcroField;\n}());\nexport default PDFAcroField;\n//# sourceMappingURL=PDFAcroField.js.map","import PDFName from \"../objects/PDFName\";\nimport PDFNumber from \"../objects/PDFNumber\";\n// TODO: Also handle the `/S` and `/D` entries\nvar BorderStyle = /** @class */ (function () {\n function BorderStyle(dict) {\n this.dict = dict;\n }\n BorderStyle.prototype.W = function () {\n var W = this.dict.lookup(PDFName.of('W'));\n if (W instanceof PDFNumber)\n return W;\n return undefined;\n };\n BorderStyle.prototype.getWidth = function () {\n var _a, _b;\n return (_b = (_a = this.W()) === null || _a === void 0 ? void 0 : _a.asNumber()) !== null && _b !== void 0 ? _b : 1;\n };\n BorderStyle.prototype.setWidth = function (width) {\n var W = this.dict.context.obj(width);\n this.dict.set(PDFName.of('W'), W);\n };\n BorderStyle.fromDict = function (dict) { return new BorderStyle(dict); };\n return BorderStyle;\n}());\nexport default BorderStyle;\n//# sourceMappingURL=BorderStyle.js.map","import PDFDict from \"../objects/PDFDict\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFStream from \"../objects/PDFStream\";\nimport PDFArray from \"../objects/PDFArray\";\nimport PDFRef from \"../objects/PDFRef\";\nimport PDFNumber from \"../objects/PDFNumber\";\nvar PDFAnnotation = /** @class */ (function () {\n function PDFAnnotation(dict) {\n this.dict = dict;\n }\n // This is technically required by the PDF spec\n PDFAnnotation.prototype.Rect = function () {\n return this.dict.lookup(PDFName.of('Rect'), PDFArray);\n };\n PDFAnnotation.prototype.AP = function () {\n return this.dict.lookupMaybe(PDFName.of('AP'), PDFDict);\n };\n PDFAnnotation.prototype.F = function () {\n var numberOrRef = this.dict.lookup(PDFName.of('F'));\n return this.dict.context.lookupMaybe(numberOrRef, PDFNumber);\n };\n PDFAnnotation.prototype.getRectangle = function () {\n var _a;\n var Rect = this.Rect();\n return (_a = Rect === null || Rect === void 0 ? void 0 : Rect.asRectangle()) !== null && _a !== void 0 ? _a : { x: 0, y: 0, width: 0, height: 0 };\n };\n PDFAnnotation.prototype.setRectangle = function (rect) {\n var x = rect.x, y = rect.y, width = rect.width, height = rect.height;\n var Rect = this.dict.context.obj([x, y, x + width, y + height]);\n this.dict.set(PDFName.of('Rect'), Rect);\n };\n PDFAnnotation.prototype.getAppearanceState = function () {\n var AS = this.dict.lookup(PDFName.of('AS'));\n if (AS instanceof PDFName)\n return AS;\n return undefined;\n };\n PDFAnnotation.prototype.setAppearanceState = function (state) {\n this.dict.set(PDFName.of('AS'), state);\n };\n PDFAnnotation.prototype.setAppearances = function (appearances) {\n this.dict.set(PDFName.of('AP'), appearances);\n };\n PDFAnnotation.prototype.ensureAP = function () {\n var AP = this.AP();\n if (!AP) {\n AP = this.dict.context.obj({});\n this.dict.set(PDFName.of('AP'), AP);\n }\n return AP;\n };\n PDFAnnotation.prototype.getNormalAppearance = function () {\n var AP = this.ensureAP();\n var N = AP.get(PDFName.of('N'));\n if (N instanceof PDFRef || N instanceof PDFDict)\n return N;\n throw new Error(\"Unexpected N type: \" + (N === null || N === void 0 ? void 0 : N.constructor.name));\n };\n /** @param appearance A PDFDict or PDFStream (direct or ref) */\n PDFAnnotation.prototype.setNormalAppearance = function (appearance) {\n var AP = this.ensureAP();\n AP.set(PDFName.of('N'), appearance);\n };\n /** @param appearance A PDFDict or PDFStream (direct or ref) */\n PDFAnnotation.prototype.setRolloverAppearance = function (appearance) {\n var AP = this.ensureAP();\n AP.set(PDFName.of('R'), appearance);\n };\n /** @param appearance A PDFDict or PDFStream (direct or ref) */\n PDFAnnotation.prototype.setDownAppearance = function (appearance) {\n var AP = this.ensureAP();\n AP.set(PDFName.of('D'), appearance);\n };\n PDFAnnotation.prototype.removeRolloverAppearance = function () {\n var AP = this.AP();\n AP === null || AP === void 0 ? void 0 : AP.delete(PDFName.of('R'));\n };\n PDFAnnotation.prototype.removeDownAppearance = function () {\n var AP = this.AP();\n AP === null || AP === void 0 ? void 0 : AP.delete(PDFName.of('D'));\n };\n PDFAnnotation.prototype.getAppearances = function () {\n var AP = this.AP();\n if (!AP)\n return undefined;\n var N = AP.lookup(PDFName.of('N'), PDFDict, PDFStream);\n var R = AP.lookupMaybe(PDFName.of('R'), PDFDict, PDFStream);\n var D = AP.lookupMaybe(PDFName.of('D'), PDFDict, PDFStream);\n return { normal: N, rollover: R, down: D };\n };\n PDFAnnotation.prototype.getFlags = function () {\n var _a, _b;\n return (_b = (_a = this.F()) === null || _a === void 0 ? void 0 : _a.asNumber()) !== null && _b !== void 0 ? _b : 0;\n };\n PDFAnnotation.prototype.setFlags = function (flags) {\n this.dict.set(PDFName.of('F'), PDFNumber.of(flags));\n };\n PDFAnnotation.prototype.hasFlag = function (flag) {\n var flags = this.getFlags();\n return (flags & flag) !== 0;\n };\n PDFAnnotation.prototype.setFlag = function (flag) {\n var flags = this.getFlags();\n this.setFlags(flags | flag);\n };\n PDFAnnotation.prototype.clearFlag = function (flag) {\n var flags = this.getFlags();\n this.setFlags(flags & ~flag);\n };\n PDFAnnotation.prototype.setFlagTo = function (flag, enable) {\n if (enable)\n this.setFlag(flag);\n else\n this.clearFlag(flag);\n };\n PDFAnnotation.fromDict = function (dict) { return new PDFAnnotation(dict); };\n return PDFAnnotation;\n}());\nexport default PDFAnnotation;\n//# sourceMappingURL=PDFAnnotation.js.map","import PDFName from \"../objects/PDFName\";\nimport PDFNumber from \"../objects/PDFNumber\";\nimport PDFArray from \"../objects/PDFArray\";\nimport PDFHexString from \"../objects/PDFHexString\";\nimport PDFString from \"../objects/PDFString\";\nvar AppearanceCharacteristics = /** @class */ (function () {\n function AppearanceCharacteristics(dict) {\n this.dict = dict;\n }\n AppearanceCharacteristics.prototype.R = function () {\n var R = this.dict.lookup(PDFName.of('R'));\n if (R instanceof PDFNumber)\n return R;\n return undefined;\n };\n AppearanceCharacteristics.prototype.BC = function () {\n var BC = this.dict.lookup(PDFName.of('BC'));\n if (BC instanceof PDFArray)\n return BC;\n return undefined;\n };\n AppearanceCharacteristics.prototype.BG = function () {\n var BG = this.dict.lookup(PDFName.of('BG'));\n if (BG instanceof PDFArray)\n return BG;\n return undefined;\n };\n AppearanceCharacteristics.prototype.CA = function () {\n var CA = this.dict.lookup(PDFName.of('CA'));\n if (CA instanceof PDFHexString || CA instanceof PDFString)\n return CA;\n return undefined;\n };\n AppearanceCharacteristics.prototype.RC = function () {\n var RC = this.dict.lookup(PDFName.of('RC'));\n if (RC instanceof PDFHexString || RC instanceof PDFString)\n return RC;\n return undefined;\n };\n AppearanceCharacteristics.prototype.AC = function () {\n var AC = this.dict.lookup(PDFName.of('AC'));\n if (AC instanceof PDFHexString || AC instanceof PDFString)\n return AC;\n return undefined;\n };\n AppearanceCharacteristics.prototype.getRotation = function () {\n var _a;\n return (_a = this.R()) === null || _a === void 0 ? void 0 : _a.asNumber();\n };\n AppearanceCharacteristics.prototype.getBorderColor = function () {\n var BC = this.BC();\n if (!BC)\n return undefined;\n var components = [];\n for (var idx = 0, len = BC === null || BC === void 0 ? void 0 : BC.size(); idx < len; idx++) {\n var component = BC.get(idx);\n if (component instanceof PDFNumber)\n components.push(component.asNumber());\n }\n return components;\n };\n AppearanceCharacteristics.prototype.getBackgroundColor = function () {\n var BG = this.BG();\n if (!BG)\n return undefined;\n var components = [];\n for (var idx = 0, len = BG === null || BG === void 0 ? void 0 : BG.size(); idx < len; idx++) {\n var component = BG.get(idx);\n if (component instanceof PDFNumber)\n components.push(component.asNumber());\n }\n return components;\n };\n AppearanceCharacteristics.prototype.getCaptions = function () {\n var CA = this.CA();\n var RC = this.RC();\n var AC = this.AC();\n return {\n normal: CA === null || CA === void 0 ? void 0 : CA.decodeText(),\n rollover: RC === null || RC === void 0 ? void 0 : RC.decodeText(),\n down: AC === null || AC === void 0 ? void 0 : AC.decodeText(),\n };\n };\n AppearanceCharacteristics.prototype.setRotation = function (rotation) {\n var R = this.dict.context.obj(rotation);\n this.dict.set(PDFName.of('R'), R);\n };\n AppearanceCharacteristics.prototype.setBorderColor = function (color) {\n var BC = this.dict.context.obj(color);\n this.dict.set(PDFName.of('BC'), BC);\n };\n AppearanceCharacteristics.prototype.setBackgroundColor = function (color) {\n var BG = this.dict.context.obj(color);\n this.dict.set(PDFName.of('BG'), BG);\n };\n AppearanceCharacteristics.prototype.setCaptions = function (captions) {\n var CA = PDFHexString.fromText(captions.normal);\n this.dict.set(PDFName.of('CA'), CA);\n if (captions.rollover) {\n var RC = PDFHexString.fromText(captions.rollover);\n this.dict.set(PDFName.of('RC'), RC);\n }\n else {\n this.dict.delete(PDFName.of('RC'));\n }\n if (captions.down) {\n var AC = PDFHexString.fromText(captions.down);\n this.dict.set(PDFName.of('AC'), AC);\n }\n else {\n this.dict.delete(PDFName.of('AC'));\n }\n };\n AppearanceCharacteristics.fromDict = function (dict) {\n return new AppearanceCharacteristics(dict);\n };\n return AppearanceCharacteristics;\n}());\nexport default AppearanceCharacteristics;\n//# sourceMappingURL=AppearanceCharacteristics.js.map","import { __extends } from \"tslib\";\nimport PDFDict from \"../objects/PDFDict\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFRef from \"../objects/PDFRef\";\nimport PDFString from \"../objects/PDFString\";\nimport PDFHexString from \"../objects/PDFHexString\";\nimport BorderStyle from \"./BorderStyle\";\nimport PDFAnnotation from \"./PDFAnnotation\";\nimport AppearanceCharacteristics from \"./AppearanceCharacteristics\";\nvar PDFWidgetAnnotation = /** @class */ (function (_super) {\n __extends(PDFWidgetAnnotation, _super);\n function PDFWidgetAnnotation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PDFWidgetAnnotation.prototype.MK = function () {\n var MK = this.dict.lookup(PDFName.of('MK'));\n if (MK instanceof PDFDict)\n return MK;\n return undefined;\n };\n PDFWidgetAnnotation.prototype.BS = function () {\n var BS = this.dict.lookup(PDFName.of('BS'));\n if (BS instanceof PDFDict)\n return BS;\n return undefined;\n };\n PDFWidgetAnnotation.prototype.DA = function () {\n var da = this.dict.lookup(PDFName.of('DA'));\n if (da instanceof PDFString || da instanceof PDFHexString)\n return da;\n return undefined;\n };\n PDFWidgetAnnotation.prototype.P = function () {\n var P = this.dict.get(PDFName.of('P'));\n if (P instanceof PDFRef)\n return P;\n return undefined;\n };\n PDFWidgetAnnotation.prototype.setP = function (page) {\n this.dict.set(PDFName.of('P'), page);\n };\n PDFWidgetAnnotation.prototype.setDefaultAppearance = function (appearance) {\n this.dict.set(PDFName.of('DA'), PDFString.of(appearance));\n };\n PDFWidgetAnnotation.prototype.getDefaultAppearance = function () {\n var DA = this.DA();\n if (DA instanceof PDFHexString) {\n return DA.decodeText();\n }\n return DA === null || DA === void 0 ? void 0 : DA.asString();\n };\n PDFWidgetAnnotation.prototype.getAppearanceCharacteristics = function () {\n var MK = this.MK();\n if (MK)\n return AppearanceCharacteristics.fromDict(MK);\n return undefined;\n };\n PDFWidgetAnnotation.prototype.getOrCreateAppearanceCharacteristics = function () {\n var MK = this.MK();\n if (MK)\n return AppearanceCharacteristics.fromDict(MK);\n var ac = AppearanceCharacteristics.fromDict(this.dict.context.obj({}));\n this.dict.set(PDFName.of('MK'), ac.dict);\n return ac;\n };\n PDFWidgetAnnotation.prototype.getBorderStyle = function () {\n var BS = this.BS();\n if (BS)\n return BorderStyle.fromDict(BS);\n return undefined;\n };\n PDFWidgetAnnotation.prototype.getOrCreateBorderStyle = function () {\n var BS = this.BS();\n if (BS)\n return BorderStyle.fromDict(BS);\n var bs = BorderStyle.fromDict(this.dict.context.obj({}));\n this.dict.set(PDFName.of('BS'), bs.dict);\n return bs;\n };\n PDFWidgetAnnotation.prototype.getOnValue = function () {\n var _a;\n var normal = (_a = this.getAppearances()) === null || _a === void 0 ? void 0 : _a.normal;\n if (normal instanceof PDFDict) {\n var keys = normal.keys();\n for (var idx = 0, len = keys.length; idx < len; idx++) {\n var key = keys[idx];\n if (key !== PDFName.of('Off'))\n return key;\n }\n }\n return undefined;\n };\n PDFWidgetAnnotation.fromDict = function (dict) {\n return new PDFWidgetAnnotation(dict);\n };\n PDFWidgetAnnotation.create = function (context, parent) {\n var dict = context.obj({\n Type: 'Annot',\n Subtype: 'Widget',\n Rect: [0, 0, 0, 0],\n Parent: parent,\n });\n return new PDFWidgetAnnotation(dict);\n };\n return PDFWidgetAnnotation;\n}(PDFAnnotation));\nexport default PDFWidgetAnnotation;\n//# sourceMappingURL=PDFWidgetAnnotation.js.map","import { __extends } from \"tslib\";\nimport PDFDict from \"../objects/PDFDict\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFAcroField from \"./PDFAcroField\";\nimport PDFWidgetAnnotation from \"../annotation/PDFWidgetAnnotation\";\nimport { IndexOutOfBoundsError } from \"../errors\";\nvar PDFAcroTerminal = /** @class */ (function (_super) {\n __extends(PDFAcroTerminal, _super);\n function PDFAcroTerminal() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PDFAcroTerminal.prototype.FT = function () {\n var nameOrRef = this.getInheritableAttribute(PDFName.of('FT'));\n return this.dict.context.lookup(nameOrRef, PDFName);\n };\n PDFAcroTerminal.prototype.getWidgets = function () {\n var kidDicts = this.Kids();\n // This field is itself a widget\n if (!kidDicts)\n return [PDFWidgetAnnotation.fromDict(this.dict)];\n // This field's kids are its widgets\n var widgets = new Array(kidDicts.size());\n for (var idx = 0, len = kidDicts.size(); idx < len; idx++) {\n var dict = kidDicts.lookup(idx, PDFDict);\n widgets[idx] = PDFWidgetAnnotation.fromDict(dict);\n }\n return widgets;\n };\n PDFAcroTerminal.prototype.addWidget = function (ref) {\n var Kids = this.normalizedEntries().Kids;\n Kids.push(ref);\n };\n PDFAcroTerminal.prototype.removeWidget = function (idx) {\n var kidDicts = this.Kids();\n if (!kidDicts) {\n // This field is itself a widget\n if (idx !== 0)\n throw new IndexOutOfBoundsError(idx, 0, 0);\n this.setKids([]);\n }\n else {\n // This field's kids are its widgets\n if (idx < 0 || idx > kidDicts.size()) {\n throw new IndexOutOfBoundsError(idx, 0, kidDicts.size());\n }\n kidDicts.remove(idx);\n }\n };\n PDFAcroTerminal.prototype.normalizedEntries = function () {\n var Kids = this.Kids();\n // If this field is itself a widget (because it was only rendered once in\n // the document, so the field and widget properties were merged) then we\n // add itself to the `Kids` array. The alternative would be to try\n // splitting apart the widget properties and creating a separate object\n // for them.\n if (!Kids) {\n Kids = this.dict.context.obj([this.ref]);\n this.dict.set(PDFName.of('Kids'), Kids);\n }\n return { Kids: Kids };\n };\n PDFAcroTerminal.fromDict = function (dict, ref) {\n return new PDFAcroTerminal(dict, ref);\n };\n return PDFAcroTerminal;\n}(PDFAcroField));\nexport default PDFAcroTerminal;\n//# sourceMappingURL=PDFAcroTerminal.js.map","import { __extends } from \"tslib\";\nimport PDFString from \"../objects/PDFString\";\nimport PDFHexString from \"../objects/PDFHexString\";\nimport PDFArray from \"../objects/PDFArray\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFAcroTerminal from \"./PDFAcroTerminal\";\nimport { IndexOutOfBoundsError } from \"../errors\";\nvar PDFAcroButton = /** @class */ (function (_super) {\n __extends(PDFAcroButton, _super);\n function PDFAcroButton() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PDFAcroButton.prototype.Opt = function () {\n return this.dict.lookupMaybe(PDFName.of('Opt'), PDFString, PDFHexString, PDFArray);\n };\n PDFAcroButton.prototype.setOpt = function (opt) {\n this.dict.set(PDFName.of('Opt'), this.dict.context.obj(opt));\n };\n PDFAcroButton.prototype.getExportValues = function () {\n var opt = this.Opt();\n if (!opt)\n return undefined;\n if (opt instanceof PDFString || opt instanceof PDFHexString) {\n return [opt];\n }\n var values = [];\n for (var idx = 0, len = opt.size(); idx < len; idx++) {\n var value = opt.lookup(idx);\n if (value instanceof PDFString || value instanceof PDFHexString) {\n values.push(value);\n }\n }\n return values;\n };\n PDFAcroButton.prototype.removeExportValue = function (idx) {\n var opt = this.Opt();\n if (!opt)\n return;\n if (opt instanceof PDFString || opt instanceof PDFHexString) {\n if (idx !== 0)\n throw new IndexOutOfBoundsError(idx, 0, 0);\n this.setOpt([]);\n }\n else {\n if (idx < 0 || idx > opt.size()) {\n throw new IndexOutOfBoundsError(idx, 0, opt.size());\n }\n opt.remove(idx);\n }\n };\n // Enforce use use of /Opt even if it isn't strictly necessary\n PDFAcroButton.prototype.normalizeExportValues = function () {\n var _a, _b, _c, _d;\n var exportValues = (_a = this.getExportValues()) !== null && _a !== void 0 ? _a : [];\n var Opt = [];\n var widgets = this.getWidgets();\n for (var idx = 0, len = widgets.length; idx < len; idx++) {\n var widget = widgets[idx];\n var exportVal = (_b = exportValues[idx]) !== null && _b !== void 0 ? _b : PDFHexString.fromText((_d = (_c = widget.getOnValue()) === null || _c === void 0 ? void 0 : _c.decodeText()) !== null && _d !== void 0 ? _d : '');\n Opt.push(exportVal);\n }\n this.setOpt(Opt);\n };\n /**\n * Reuses existing opt if one exists with the same value (assuming\n * `useExistingIdx` is `true`). Returns index of existing (or new) opt.\n */\n PDFAcroButton.prototype.addOpt = function (opt, useExistingOptIdx) {\n var _a;\n this.normalizeExportValues();\n var optText = opt.decodeText();\n var existingIdx;\n if (useExistingOptIdx) {\n var exportValues = (_a = this.getExportValues()) !== null && _a !== void 0 ? _a : [];\n for (var idx = 0, len = exportValues.length; idx < len; idx++) {\n var exportVal = exportValues[idx];\n if (exportVal.decodeText() === optText)\n existingIdx = idx;\n }\n }\n var Opt = this.Opt();\n Opt.push(opt);\n return existingIdx !== null && existingIdx !== void 0 ? existingIdx : Opt.size() - 1;\n };\n PDFAcroButton.prototype.addWidgetWithOpt = function (widget, opt, useExistingOptIdx) {\n var optIdx = this.addOpt(opt, useExistingOptIdx);\n var apStateValue = PDFName.of(String(optIdx));\n this.addWidget(widget);\n return apStateValue;\n };\n return PDFAcroButton;\n}(PDFAcroTerminal));\nexport default PDFAcroButton;\n//# sourceMappingURL=PDFAcroButton.js.map","import { __extends } from \"tslib\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFAcroButton from \"./PDFAcroButton\";\nimport { InvalidAcroFieldValueError } from \"../errors\";\nvar PDFAcroCheckBox = /** @class */ (function (_super) {\n __extends(PDFAcroCheckBox, _super);\n function PDFAcroCheckBox() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PDFAcroCheckBox.prototype.setValue = function (value) {\n var _a;\n var onValue = (_a = this.getOnValue()) !== null && _a !== void 0 ? _a : PDFName.of('Yes');\n if (value !== onValue && value !== PDFName.of('Off')) {\n throw new InvalidAcroFieldValueError();\n }\n this.dict.set(PDFName.of('V'), value);\n var widgets = this.getWidgets();\n for (var idx = 0, len = widgets.length; idx < len; idx++) {\n var widget = widgets[idx];\n var state = widget.getOnValue() === value ? value : PDFName.of('Off');\n widget.setAppearanceState(state);\n }\n };\n PDFAcroCheckBox.prototype.getValue = function () {\n var v = this.V();\n if (v instanceof PDFName)\n return v;\n return PDFName.of('Off');\n };\n PDFAcroCheckBox.prototype.getOnValue = function () {\n var widget = this.getWidgets()[0];\n return widget === null || widget === void 0 ? void 0 : widget.getOnValue();\n };\n PDFAcroCheckBox.fromDict = function (dict, ref) {\n return new PDFAcroCheckBox(dict, ref);\n };\n PDFAcroCheckBox.create = function (context) {\n var dict = context.obj({\n FT: 'Btn',\n Kids: [],\n });\n var ref = context.register(dict);\n return new PDFAcroCheckBox(dict, ref);\n };\n return PDFAcroCheckBox;\n}(PDFAcroButton));\nexport default PDFAcroCheckBox;\n//# sourceMappingURL=PDFAcroCheckBox.js.map","var flag = function (bitIndex) { return 1 << bitIndex; };\n/** From PDF spec table 221 */\nexport var AcroFieldFlags;\n(function (AcroFieldFlags) {\n /**\n * If set, the user may not change the value of the field. Any associated\n * widget annotations will not interact with the user; that is, they will not\n * respond to mouse clicks or change their appearance in response to mouse\n * motions. This flag is useful for fields whose values are computed or\n * imported from a database.\n */\n AcroFieldFlags[AcroFieldFlags[\"ReadOnly\"] = flag(1 - 1)] = \"ReadOnly\";\n /**\n * If set, the field shall have a value at the time it is exported by a\n * submit-form action (see 12.7.5.2, \"Submit-Form Action\").\n */\n AcroFieldFlags[AcroFieldFlags[\"Required\"] = flag(2 - 1)] = \"Required\";\n /**\n * If set, the field shall not be exported by a submit-form action\n * (see 12.7.5.2, \"Submit-Form Action\").\n */\n AcroFieldFlags[AcroFieldFlags[\"NoExport\"] = flag(3 - 1)] = \"NoExport\";\n})(AcroFieldFlags || (AcroFieldFlags = {}));\n/** From PDF spec table 226 */\nexport var AcroButtonFlags;\n(function (AcroButtonFlags) {\n /**\n * (Radio buttons only) If set, exactly one radio button shall be selected at\n * all times; selecting the currently selected button has no effect. If clear,\n * clicking the selected button deselects it, leaving no button selected.\n */\n AcroButtonFlags[AcroButtonFlags[\"NoToggleToOff\"] = flag(15 - 1)] = \"NoToggleToOff\";\n /**\n * If set, the field is a set of radio buttons; if clear, the field is a check\n * box. This flag may be set only if the Pushbutton flag is clear.\n */\n AcroButtonFlags[AcroButtonFlags[\"Radio\"] = flag(16 - 1)] = \"Radio\";\n /**\n * If set, the field is a pushbutton that does not retain a permanent value.\n */\n AcroButtonFlags[AcroButtonFlags[\"PushButton\"] = flag(17 - 1)] = \"PushButton\";\n /**\n * If set, a group of radio buttons within a radio button field that use the\n * same value for the on state will turn on and off in unison; that is if one\n * is checked, they are all checked. If clear, the buttons are mutually\n * exclusive (the same behavior as HTML radio buttons).\n */\n AcroButtonFlags[AcroButtonFlags[\"RadiosInUnison\"] = flag(26 - 1)] = \"RadiosInUnison\";\n})(AcroButtonFlags || (AcroButtonFlags = {}));\n/** From PDF spec table 228 */\nexport var AcroTextFlags;\n(function (AcroTextFlags) {\n /**\n * If set, the field may contain multiple lines of text; if clear, the field's\n * text shall be restricted to a single line.\n */\n AcroTextFlags[AcroTextFlags[\"Multiline\"] = flag(13 - 1)] = \"Multiline\";\n /**\n * If set, the field is intended for entering a secure password that should\n * not be echoed visibly to the screen. Characters typed from the keyboard\n * shall instead be echoed in some unreadable form, such as asterisks or\n * bullet characters.\n * > NOTE To protect password confidentiality, readers should never store\n * > the value of the text field in the PDF file if this flag is set.\n */\n AcroTextFlags[AcroTextFlags[\"Password\"] = flag(14 - 1)] = \"Password\";\n /**\n * If set, the text entered in the field represents the pathname of a file\n * whose contents shall be submitted as the value of the field.\n */\n AcroTextFlags[AcroTextFlags[\"FileSelect\"] = flag(21 - 1)] = \"FileSelect\";\n /**\n * If set, text entered in the field shall not be spell-checked.\n */\n AcroTextFlags[AcroTextFlags[\"DoNotSpellCheck\"] = flag(23 - 1)] = \"DoNotSpellCheck\";\n /**\n * If set, the field shall not scroll (horizontally for single-line fields,\n * vertically for multiple-line fields) to accommodate more text than fits\n * within its annotation rectangle. Once the field is full, no further text\n * shall be accepted for interactive form filling; for non-interactive form\n * filling, the filler should take care not to add more character than will\n * visibly fit in the defined area.\n */\n AcroTextFlags[AcroTextFlags[\"DoNotScroll\"] = flag(24 - 1)] = \"DoNotScroll\";\n /**\n * May be set only if the MaxLen entry is present in the text field dictionary\n * (see Table 229) and if the Multiline, Password, and FileSelect flags are\n * clear. If set, the field shall be automatically divided into as many\n * equally spaced positions, or combs, as the value of MaxLen, and the text\n * is laid out into those combs.\n */\n AcroTextFlags[AcroTextFlags[\"Comb\"] = flag(25 - 1)] = \"Comb\";\n /**\n * If set, the value of this field shall be a rich text string\n * (see 12.7.3.4, \"Rich Text Strings\"). If the field has a value, the RV\n * entry of the field dictionary (Table 222) shall specify the rich text\n * string.\n */\n AcroTextFlags[AcroTextFlags[\"RichText\"] = flag(26 - 1)] = \"RichText\";\n})(AcroTextFlags || (AcroTextFlags = {}));\n/** From PDF spec table 230 */\nexport var AcroChoiceFlags;\n(function (AcroChoiceFlags) {\n /**\n * If set, the field is a combo box; if clear, the field is a list box.\n */\n AcroChoiceFlags[AcroChoiceFlags[\"Combo\"] = flag(18 - 1)] = \"Combo\";\n /**\n * If set, the combo box shall include an editable text box as well as a\n * drop-down list; if clear, it shall include only a drop-down list. This\n * flag shall be used only if the Combo flag is set.\n */\n AcroChoiceFlags[AcroChoiceFlags[\"Edit\"] = flag(19 - 1)] = \"Edit\";\n /**\n * If set, the field's option items shall be sorted alphabetically. This flag\n * is intended for use by writers, not by readers. Conforming readers shall\n * display the options in the order in which they occur in the Opt array\n * (see Table 231).\n */\n AcroChoiceFlags[AcroChoiceFlags[\"Sort\"] = flag(20 - 1)] = \"Sort\";\n /**\n * If set, more than one of the field's option items may be selected\n * simultaneously; if clear, at most one item shall be selected.\n */\n AcroChoiceFlags[AcroChoiceFlags[\"MultiSelect\"] = flag(22 - 1)] = \"MultiSelect\";\n /**\n * If set, text entered in the field shall not be spell-checked. This flag\n * shall not be used unless the Combo and Edit flags are both set.\n */\n AcroChoiceFlags[AcroChoiceFlags[\"DoNotSpellCheck\"] = flag(23 - 1)] = \"DoNotSpellCheck\";\n /**\n * If set, the new value shall be committed as soon as a selection is made\n * (commonly with the pointing device). In this case, supplying a value for\n * a field involves three actions: selecting the field for fill-in,\n * selecting a choice for the fill-in value, and leaving that field, which\n * finalizes or \"commits\" the data choice and triggers any actions associated\n * with the entry or changing of this data. If this flag is on, then\n * processing does not wait for leaving the field action to occur, but\n * immediately proceeds to the third step.\n *\n * This option enables applications to perform an action once a selection is\n * made, without requiring the user to exit the field. If clear, the new\n * value is not committed until the user exits the field.\n */\n AcroChoiceFlags[AcroChoiceFlags[\"CommitOnSelChange\"] = flag(27 - 1)] = \"CommitOnSelChange\";\n})(AcroChoiceFlags || (AcroChoiceFlags = {}));\n//# sourceMappingURL=flags.js.map","import { __extends } from \"tslib\";\nimport PDFAcroTerminal from \"./PDFAcroTerminal\";\nimport PDFHexString from \"../objects/PDFHexString\";\nimport PDFString from \"../objects/PDFString\";\nimport PDFArray from \"../objects/PDFArray\";\nimport PDFName from \"../objects/PDFName\";\nimport { AcroChoiceFlags } from \"./flags\";\nimport { InvalidAcroFieldValueError, MultiSelectValueError, } from \"../errors\";\nvar PDFAcroChoice = /** @class */ (function (_super) {\n __extends(PDFAcroChoice, _super);\n function PDFAcroChoice() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PDFAcroChoice.prototype.setValues = function (values) {\n if (this.hasFlag(AcroChoiceFlags.Combo) &&\n !this.hasFlag(AcroChoiceFlags.Edit) &&\n !this.valuesAreValid(values)) {\n throw new InvalidAcroFieldValueError();\n }\n if (values.length === 0) {\n this.dict.delete(PDFName.of('V'));\n }\n if (values.length === 1) {\n this.dict.set(PDFName.of('V'), values[0]);\n }\n if (values.length > 1) {\n if (!this.hasFlag(AcroChoiceFlags.MultiSelect)) {\n throw new MultiSelectValueError();\n }\n this.dict.set(PDFName.of('V'), this.dict.context.obj(values));\n }\n this.updateSelectedIndices(values);\n };\n PDFAcroChoice.prototype.valuesAreValid = function (values) {\n var options = this.getOptions();\n var _loop_1 = function (idx, len) {\n var val = values[idx].decodeText();\n if (!options.find(function (o) { return val === (o.display || o.value).decodeText(); })) {\n return { value: false };\n }\n };\n for (var idx = 0, len = values.length; idx < len; idx++) {\n var state_1 = _loop_1(idx, len);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n return true;\n };\n PDFAcroChoice.prototype.updateSelectedIndices = function (values) {\n if (values.length > 1) {\n var indices = new Array(values.length);\n var options = this.getOptions();\n var _loop_2 = function (idx, len) {\n var val = values[idx].decodeText();\n indices[idx] = options.findIndex(function (o) { return val === (o.display || o.value).decodeText(); });\n };\n for (var idx = 0, len = values.length; idx < len; idx++) {\n _loop_2(idx, len);\n }\n this.dict.set(PDFName.of('I'), this.dict.context.obj(indices.sort()));\n }\n else {\n this.dict.delete(PDFName.of('I'));\n }\n };\n PDFAcroChoice.prototype.getValues = function () {\n var v = this.V();\n if (v instanceof PDFString || v instanceof PDFHexString)\n return [v];\n if (v instanceof PDFArray) {\n var values = [];\n for (var idx = 0, len = v.size(); idx < len; idx++) {\n var value = v.lookup(idx);\n if (value instanceof PDFString || value instanceof PDFHexString) {\n values.push(value);\n }\n }\n return values;\n }\n return [];\n };\n PDFAcroChoice.prototype.Opt = function () {\n return this.dict.lookupMaybe(PDFName.of('Opt'), PDFString, PDFHexString, PDFArray);\n };\n PDFAcroChoice.prototype.setOptions = function (options) {\n var newOpt = new Array(options.length);\n for (var idx = 0, len = options.length; idx < len; idx++) {\n var _a = options[idx], value = _a.value, display = _a.display;\n newOpt[idx] = this.dict.context.obj([value, display || value]);\n }\n this.dict.set(PDFName.of('Opt'), this.dict.context.obj(newOpt));\n };\n PDFAcroChoice.prototype.getOptions = function () {\n var Opt = this.Opt();\n // Not supposed to happen - Opt _should_ always be `PDFArray | undefined`\n if (Opt instanceof PDFString || Opt instanceof PDFHexString) {\n return [{ value: Opt, display: Opt }];\n }\n if (Opt instanceof PDFArray) {\n var res = [];\n for (var idx = 0, len = Opt.size(); idx < len; idx++) {\n var item = Opt.lookup(idx);\n // If `item` is a string, use that as both the export and text value\n if (item instanceof PDFString || item instanceof PDFHexString) {\n res.push({ value: item, display: item });\n }\n // If `item` is an array of one, treat it the same as just a string,\n // if it's an array of two then `item[0]` is the export value and\n // `item[1]` is the text value\n if (item instanceof PDFArray) {\n if (item.size() > 0) {\n var first = item.lookup(0, PDFString, PDFHexString);\n var second = item.lookupMaybe(1, PDFString, PDFHexString);\n res.push({ value: first, display: second || first });\n }\n }\n }\n return res;\n }\n return [];\n };\n return PDFAcroChoice;\n}(PDFAcroTerminal));\nexport default PDFAcroChoice;\n//# sourceMappingURL=PDFAcroChoice.js.map","import { __extends } from \"tslib\";\nimport PDFAcroChoice from \"./PDFAcroChoice\";\nimport { AcroChoiceFlags } from \"./flags\";\nvar PDFAcroComboBox = /** @class */ (function (_super) {\n __extends(PDFAcroComboBox, _super);\n function PDFAcroComboBox() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PDFAcroComboBox.fromDict = function (dict, ref) {\n return new PDFAcroComboBox(dict, ref);\n };\n PDFAcroComboBox.create = function (context) {\n var dict = context.obj({\n FT: 'Ch',\n Ff: AcroChoiceFlags.Combo,\n Kids: [],\n });\n var ref = context.register(dict);\n return new PDFAcroComboBox(dict, ref);\n };\n return PDFAcroComboBox;\n}(PDFAcroChoice));\nexport default PDFAcroComboBox;\n//# sourceMappingURL=PDFAcroComboBox.js.map","import { __extends } from \"tslib\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFAcroField from \"./PDFAcroField\";\nvar PDFAcroNonTerminal = /** @class */ (function (_super) {\n __extends(PDFAcroNonTerminal, _super);\n function PDFAcroNonTerminal() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PDFAcroNonTerminal.prototype.addField = function (field) {\n var Kids = this.normalizedEntries().Kids;\n Kids === null || Kids === void 0 ? void 0 : Kids.push(field);\n };\n PDFAcroNonTerminal.prototype.normalizedEntries = function () {\n var Kids = this.Kids();\n if (!Kids) {\n Kids = this.dict.context.obj([]);\n this.dict.set(PDFName.of('Kids'), Kids);\n }\n return { Kids: Kids };\n };\n PDFAcroNonTerminal.fromDict = function (dict, ref) {\n return new PDFAcroNonTerminal(dict, ref);\n };\n PDFAcroNonTerminal.create = function (context) {\n var dict = context.obj({});\n var ref = context.register(dict);\n return new PDFAcroNonTerminal(dict, ref);\n };\n return PDFAcroNonTerminal;\n}(PDFAcroField));\nexport default PDFAcroNonTerminal;\n//# sourceMappingURL=PDFAcroNonTerminal.js.map","import { __extends } from \"tslib\";\nimport PDFAcroTerminal from \"./PDFAcroTerminal\";\nvar PDFAcroSignature = /** @class */ (function (_super) {\n __extends(PDFAcroSignature, _super);\n function PDFAcroSignature() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PDFAcroSignature.fromDict = function (dict, ref) {\n return new PDFAcroSignature(dict, ref);\n };\n return PDFAcroSignature;\n}(PDFAcroTerminal));\nexport default PDFAcroSignature;\n//# sourceMappingURL=PDFAcroSignature.js.map","import { __extends } from \"tslib\";\nimport PDFNumber from \"../objects/PDFNumber\";\nimport PDFString from \"../objects/PDFString\";\nimport PDFHexString from \"../objects/PDFHexString\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFAcroTerminal from \"./PDFAcroTerminal\";\nvar PDFAcroText = /** @class */ (function (_super) {\n __extends(PDFAcroText, _super);\n function PDFAcroText() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PDFAcroText.prototype.MaxLen = function () {\n var maxLen = this.dict.lookup(PDFName.of('MaxLen'));\n if (maxLen instanceof PDFNumber)\n return maxLen;\n return undefined;\n };\n PDFAcroText.prototype.Q = function () {\n var q = this.dict.lookup(PDFName.of('Q'));\n if (q instanceof PDFNumber)\n return q;\n return undefined;\n };\n PDFAcroText.prototype.setMaxLength = function (maxLength) {\n this.dict.set(PDFName.of('MaxLen'), PDFNumber.of(maxLength));\n };\n PDFAcroText.prototype.removeMaxLength = function () {\n this.dict.delete(PDFName.of('MaxLen'));\n };\n PDFAcroText.prototype.getMaxLength = function () {\n var _a;\n return (_a = this.MaxLen()) === null || _a === void 0 ? void 0 : _a.asNumber();\n };\n PDFAcroText.prototype.setQuadding = function (quadding) {\n this.dict.set(PDFName.of('Q'), PDFNumber.of(quadding));\n };\n PDFAcroText.prototype.getQuadding = function () {\n var _a;\n return (_a = this.Q()) === null || _a === void 0 ? void 0 : _a.asNumber();\n };\n PDFAcroText.prototype.setValue = function (value) {\n this.dict.set(PDFName.of('V'), value);\n // const widgets = this.getWidgets();\n // for (let idx = 0, len = widgets.length; idx < len; idx++) {\n // const widget = widgets[idx];\n // const state = widget.getOnValue() === value ? value : PDFName.of('Off');\n // widget.setAppearanceState(state);\n // }\n };\n PDFAcroText.prototype.removeValue = function () {\n this.dict.delete(PDFName.of('V'));\n };\n PDFAcroText.prototype.getValue = function () {\n var v = this.V();\n if (v instanceof PDFString || v instanceof PDFHexString)\n return v;\n return undefined;\n };\n PDFAcroText.fromDict = function (dict, ref) { return new PDFAcroText(dict, ref); };\n PDFAcroText.create = function (context) {\n var dict = context.obj({\n FT: 'Tx',\n Kids: [],\n });\n var ref = context.register(dict);\n return new PDFAcroText(dict, ref);\n };\n return PDFAcroText;\n}(PDFAcroTerminal));\nexport default PDFAcroText;\n//# sourceMappingURL=PDFAcroText.js.map","import { __extends } from \"tslib\";\nimport PDFAcroButton from \"./PDFAcroButton\";\nimport { AcroButtonFlags } from \"./flags\";\nvar PDFAcroPushButton = /** @class */ (function (_super) {\n __extends(PDFAcroPushButton, _super);\n function PDFAcroPushButton() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PDFAcroPushButton.fromDict = function (dict, ref) {\n return new PDFAcroPushButton(dict, ref);\n };\n PDFAcroPushButton.create = function (context) {\n var dict = context.obj({\n FT: 'Btn',\n Ff: AcroButtonFlags.PushButton,\n Kids: [],\n });\n var ref = context.register(dict);\n return new PDFAcroPushButton(dict, ref);\n };\n return PDFAcroPushButton;\n}(PDFAcroButton));\nexport default PDFAcroPushButton;\n//# sourceMappingURL=PDFAcroPushButton.js.map","import { __extends } from \"tslib\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFAcroButton from \"./PDFAcroButton\";\nimport { AcroButtonFlags } from \"./flags\";\nimport { InvalidAcroFieldValueError } from \"../errors\";\nvar PDFAcroRadioButton = /** @class */ (function (_super) {\n __extends(PDFAcroRadioButton, _super);\n function PDFAcroRadioButton() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PDFAcroRadioButton.prototype.setValue = function (value) {\n var onValues = this.getOnValues();\n if (!onValues.includes(value) && value !== PDFName.of('Off')) {\n throw new InvalidAcroFieldValueError();\n }\n this.dict.set(PDFName.of('V'), value);\n var widgets = this.getWidgets();\n for (var idx = 0, len = widgets.length; idx < len; idx++) {\n var widget = widgets[idx];\n var state = widget.getOnValue() === value ? value : PDFName.of('Off');\n widget.setAppearanceState(state);\n }\n };\n PDFAcroRadioButton.prototype.getValue = function () {\n var v = this.V();\n if (v instanceof PDFName)\n return v;\n return PDFName.of('Off');\n };\n PDFAcroRadioButton.prototype.getOnValues = function () {\n var widgets = this.getWidgets();\n var onValues = [];\n for (var idx = 0, len = widgets.length; idx < len; idx++) {\n var onValue = widgets[idx].getOnValue();\n if (onValue)\n onValues.push(onValue);\n }\n return onValues;\n };\n PDFAcroRadioButton.fromDict = function (dict, ref) {\n return new PDFAcroRadioButton(dict, ref);\n };\n PDFAcroRadioButton.create = function (context) {\n var dict = context.obj({\n FT: 'Btn',\n Ff: AcroButtonFlags.Radio,\n Kids: [],\n });\n var ref = context.register(dict);\n return new PDFAcroRadioButton(dict, ref);\n };\n return PDFAcroRadioButton;\n}(PDFAcroButton));\nexport default PDFAcroRadioButton;\n//# sourceMappingURL=PDFAcroRadioButton.js.map","import { __extends } from \"tslib\";\nimport PDFAcroChoice from \"./PDFAcroChoice\";\nvar PDFAcroListBox = /** @class */ (function (_super) {\n __extends(PDFAcroListBox, _super);\n function PDFAcroListBox() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PDFAcroListBox.fromDict = function (dict, ref) {\n return new PDFAcroListBox(dict, ref);\n };\n PDFAcroListBox.create = function (context) {\n var dict = context.obj({\n FT: 'Ch',\n Kids: [],\n });\n var ref = context.register(dict);\n return new PDFAcroListBox(dict, ref);\n };\n return PDFAcroListBox;\n}(PDFAcroChoice));\nexport default PDFAcroListBox;\n//# sourceMappingURL=PDFAcroListBox.js.map","import PDFNumber from \"../objects/PDFNumber\";\nimport PDFDict from \"../objects/PDFDict\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFArray from \"../objects/PDFArray\";\nimport PDFRef from \"../objects/PDFRef\";\nimport PDFAcroTerminal from \"./PDFAcroTerminal\";\nimport PDFAcroNonTerminal from \"./PDFAcroNonTerminal\";\nimport PDFAcroSignature from \"./PDFAcroSignature\";\nimport PDFAcroText from \"./PDFAcroText\";\nimport PDFAcroPushButton from \"./PDFAcroPushButton\";\nimport PDFAcroRadioButton from \"./PDFAcroRadioButton\";\nimport PDFAcroCheckBox from \"./PDFAcroCheckBox\";\nimport PDFAcroComboBox from \"./PDFAcroComboBox\";\nimport PDFAcroListBox from \"./PDFAcroListBox\";\nimport { AcroButtonFlags, AcroChoiceFlags } from \"./flags\";\nexport var createPDFAcroFields = function (kidDicts) {\n if (!kidDicts)\n return [];\n var kids = [];\n for (var idx = 0, len = kidDicts.size(); idx < len; idx++) {\n var ref = kidDicts.get(idx);\n var dict = kidDicts.lookup(idx);\n // if (dict instanceof PDFDict) kids.push(PDFAcroField.fromDict(dict));\n if (ref instanceof PDFRef && dict instanceof PDFDict) {\n kids.push([createPDFAcroField(dict, ref), ref]);\n }\n }\n return kids;\n};\nexport var createPDFAcroField = function (dict, ref) {\n var isNonTerminal = isNonTerminalAcroField(dict);\n if (isNonTerminal)\n return PDFAcroNonTerminal.fromDict(dict, ref);\n return createPDFAcroTerminal(dict, ref);\n};\n// TODO: Maybe just check if the dict is *not* a widget? That might be better.\n// According to the PDF spec:\n//\n// > A field's children in the hierarchy may also include widget annotations\n// > that define its appearance on the page. A field that has children that\n// > are fields is called a non-terminal field. A field that does not have\n// > children that are fields is called a terminal field.\n//\n// The spec is not entirely clear about how to determine whether a given\n// dictionary represents an acrofield or a widget annotation. So we will assume\n// that a dictionary is an acrofield if it is a member of the `/Kids` array\n// and it contains a `/T` entry (widgets do not have `/T` entries). This isn't\n// a bullet proof solution, because the `/T` entry is technically defined as\n// optional for acrofields by the PDF spec. But in practice all acrofields seem\n// to have a `/T` entry defined.\nvar isNonTerminalAcroField = function (dict) {\n var kids = dict.lookup(PDFName.of('Kids'));\n if (kids instanceof PDFArray) {\n for (var idx = 0, len = kids.size(); idx < len; idx++) {\n var kid = kids.lookup(idx);\n var kidIsField = kid instanceof PDFDict && kid.has(PDFName.of('T'));\n if (kidIsField)\n return true;\n }\n }\n return false;\n};\nvar createPDFAcroTerminal = function (dict, ref) {\n var ftNameOrRef = getInheritableAttribute(dict, PDFName.of('FT'));\n var type = dict.context.lookup(ftNameOrRef, PDFName);\n if (type === PDFName.of('Btn'))\n return createPDFAcroButton(dict, ref);\n if (type === PDFName.of('Ch'))\n return createPDFAcroChoice(dict, ref);\n if (type === PDFName.of('Tx'))\n return PDFAcroText.fromDict(dict, ref);\n if (type === PDFName.of('Sig'))\n return PDFAcroSignature.fromDict(dict, ref);\n // We should never reach this line. But there are a lot of weird PDFs out\n // there. So, just to be safe, we'll try to handle things gracefully instead\n // of throwing an error.\n return PDFAcroTerminal.fromDict(dict, ref);\n};\nvar createPDFAcroButton = function (dict, ref) {\n var _a;\n var ffNumberOrRef = getInheritableAttribute(dict, PDFName.of('Ff'));\n var ffNumber = dict.context.lookupMaybe(ffNumberOrRef, PDFNumber);\n var flags = (_a = ffNumber === null || ffNumber === void 0 ? void 0 : ffNumber.asNumber()) !== null && _a !== void 0 ? _a : 0;\n if (flagIsSet(flags, AcroButtonFlags.PushButton)) {\n return PDFAcroPushButton.fromDict(dict, ref);\n }\n else if (flagIsSet(flags, AcroButtonFlags.Radio)) {\n return PDFAcroRadioButton.fromDict(dict, ref);\n }\n else {\n return PDFAcroCheckBox.fromDict(dict, ref);\n }\n};\nvar createPDFAcroChoice = function (dict, ref) {\n var _a;\n var ffNumberOrRef = getInheritableAttribute(dict, PDFName.of('Ff'));\n var ffNumber = dict.context.lookupMaybe(ffNumberOrRef, PDFNumber);\n var flags = (_a = ffNumber === null || ffNumber === void 0 ? void 0 : ffNumber.asNumber()) !== null && _a !== void 0 ? _a : 0;\n if (flagIsSet(flags, AcroChoiceFlags.Combo)) {\n return PDFAcroComboBox.fromDict(dict, ref);\n }\n else {\n return PDFAcroListBox.fromDict(dict, ref);\n }\n};\nvar flagIsSet = function (flags, flag) {\n return (flags & flag) !== 0;\n};\nvar getInheritableAttribute = function (startNode, name) {\n var attribute;\n ascend(startNode, function (node) {\n if (!attribute)\n attribute = node.get(name);\n });\n return attribute;\n};\nvar ascend = function (startNode, visitor) {\n visitor(startNode);\n var Parent = startNode.lookupMaybe(PDFName.of('Parent'), PDFDict);\n if (Parent)\n ascend(Parent, visitor);\n};\n//# sourceMappingURL=utils.js.map","import PDFDict from \"../objects/PDFDict\";\nimport PDFArray from \"../objects/PDFArray\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFAcroNonTerminal from \"./PDFAcroNonTerminal\";\nimport { createPDFAcroField, createPDFAcroFields, } from \"./utils\";\nvar PDFAcroForm = /** @class */ (function () {\n function PDFAcroForm(dict) {\n this.dict = dict;\n }\n PDFAcroForm.prototype.Fields = function () {\n var fields = this.dict.lookup(PDFName.of('Fields'));\n if (fields instanceof PDFArray)\n return fields;\n return undefined;\n };\n PDFAcroForm.prototype.getFields = function () {\n var Fields = this.normalizedEntries().Fields;\n var fields = new Array(Fields.size());\n for (var idx = 0, len = Fields.size(); idx < len; idx++) {\n var ref = Fields.get(idx);\n var dict = Fields.lookup(idx, PDFDict);\n fields[idx] = [createPDFAcroField(dict, ref), ref];\n }\n return fields;\n };\n PDFAcroForm.prototype.getAllFields = function () {\n var allFields = [];\n var pushFields = function (fields) {\n if (!fields)\n return;\n for (var idx = 0, len = fields.length; idx < len; idx++) {\n var field = fields[idx];\n allFields.push(field);\n var fieldModel = field[0];\n if (fieldModel instanceof PDFAcroNonTerminal) {\n pushFields(createPDFAcroFields(fieldModel.Kids()));\n }\n }\n };\n pushFields(this.getFields());\n return allFields;\n };\n PDFAcroForm.prototype.addField = function (field) {\n var Fields = this.normalizedEntries().Fields;\n Fields === null || Fields === void 0 ? void 0 : Fields.push(field);\n };\n PDFAcroForm.prototype.removeField = function (field) {\n var parent = field.getParent();\n var fields = parent === undefined ? this.normalizedEntries().Fields : parent.Kids();\n var index = fields === null || fields === void 0 ? void 0 : fields.indexOf(field.ref);\n if (fields === undefined || index === undefined) {\n throw new Error(\"Tried to remove inexistent field \" + field.getFullyQualifiedName());\n }\n fields.remove(index);\n if (parent !== undefined && fields.size() === 0) {\n this.removeField(parent);\n }\n };\n PDFAcroForm.prototype.normalizedEntries = function () {\n var Fields = this.Fields();\n if (!Fields) {\n Fields = this.dict.context.obj([]);\n this.dict.set(PDFName.of('Fields'), Fields);\n }\n return { Fields: Fields };\n };\n PDFAcroForm.fromDict = function (dict) { return new PDFAcroForm(dict); };\n PDFAcroForm.create = function (context) {\n var dict = context.obj({ Fields: [] });\n return new PDFAcroForm(dict);\n };\n return PDFAcroForm;\n}());\nexport default PDFAcroForm;\n//# sourceMappingURL=PDFAcroForm.js.map","import { __extends } from \"tslib\";\nimport PDFDict from \"../objects/PDFDict\";\nimport PDFName from \"../objects/PDFName\";\nimport { PDFAcroForm } from \"../acroform\";\nimport ViewerPreferences from '../interactive/ViewerPreferences';\nvar PDFCatalog = /** @class */ (function (_super) {\n __extends(PDFCatalog, _super);\n function PDFCatalog() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PDFCatalog.prototype.Pages = function () {\n return this.lookup(PDFName.of('Pages'), PDFDict);\n };\n PDFCatalog.prototype.AcroForm = function () {\n return this.lookupMaybe(PDFName.of('AcroForm'), PDFDict);\n };\n PDFCatalog.prototype.getAcroForm = function () {\n var dict = this.AcroForm();\n if (!dict)\n return undefined;\n return PDFAcroForm.fromDict(dict);\n };\n PDFCatalog.prototype.getOrCreateAcroForm = function () {\n var acroForm = this.getAcroForm();\n if (!acroForm) {\n acroForm = PDFAcroForm.create(this.context);\n var acroFormRef = this.context.register(acroForm.dict);\n this.set(PDFName.of('AcroForm'), acroFormRef);\n }\n return acroForm;\n };\n PDFCatalog.prototype.ViewerPreferences = function () {\n return this.lookupMaybe(PDFName.of('ViewerPreferences'), PDFDict);\n };\n PDFCatalog.prototype.getViewerPreferences = function () {\n var dict = this.ViewerPreferences();\n if (!dict)\n return undefined;\n return ViewerPreferences.fromDict(dict);\n };\n PDFCatalog.prototype.getOrCreateViewerPreferences = function () {\n var viewerPrefs = this.getViewerPreferences();\n if (!viewerPrefs) {\n viewerPrefs = ViewerPreferences.create(this.context);\n var viewerPrefsRef = this.context.register(viewerPrefs.dict);\n this.set(PDFName.of('ViewerPreferences'), viewerPrefsRef);\n }\n return viewerPrefs;\n };\n /**\n * Inserts the given ref as a leaf node of this catalog's page tree at the\n * specified index (zero-based). Also increments the `Count` of each node in\n * the page tree hierarchy to accomodate the new page.\n *\n * Returns the ref of the PDFPageTree node into which `leafRef` was inserted.\n */\n PDFCatalog.prototype.insertLeafNode = function (leafRef, index) {\n var pagesRef = this.get(PDFName.of('Pages'));\n var maybeParentRef = this.Pages().insertLeafNode(leafRef, index);\n return maybeParentRef || pagesRef;\n };\n PDFCatalog.prototype.removeLeafNode = function (index) {\n this.Pages().removeLeafNode(index);\n };\n PDFCatalog.withContextAndPages = function (context, pages) {\n var dict = new Map();\n dict.set(PDFName.of('Type'), PDFName.of('Catalog'));\n dict.set(PDFName.of('Pages'), pages);\n return new PDFCatalog(dict, context);\n };\n PDFCatalog.fromMapWithContext = function (map, context) {\n return new PDFCatalog(map, context);\n };\n return PDFCatalog;\n}(PDFDict));\nexport default PDFCatalog;\n//# sourceMappingURL=PDFCatalog.js.map","import { __extends } from \"tslib\";\nimport PDFArray from \"../objects/PDFArray\";\nimport PDFDict from \"../objects/PDFDict\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFNumber from \"../objects/PDFNumber\";\nimport PDFPageLeaf from \"./PDFPageLeaf\";\nimport { InvalidTargetIndexError, CorruptPageTreeError } from \"../errors\";\nvar PDFPageTree = /** @class */ (function (_super) {\n __extends(PDFPageTree, _super);\n function PDFPageTree() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PDFPageTree.prototype.Parent = function () {\n return this.lookup(PDFName.of('Parent'));\n };\n PDFPageTree.prototype.Kids = function () {\n return this.lookup(PDFName.of('Kids'), PDFArray);\n };\n PDFPageTree.prototype.Count = function () {\n return this.lookup(PDFName.of('Count'), PDFNumber);\n };\n PDFPageTree.prototype.pushTreeNode = function (treeRef) {\n var Kids = this.Kids();\n Kids.push(treeRef);\n };\n PDFPageTree.prototype.pushLeafNode = function (leafRef) {\n var Kids = this.Kids();\n this.insertLeafKid(Kids.size(), leafRef);\n };\n /**\n * Inserts the given ref as a leaf node of this page tree at the specified\n * index (zero-based). Also increments the `Count` of each page tree in the\n * hierarchy to accomodate the new page.\n *\n * Returns the ref of the PDFPageTree node into which `leafRef` was inserted,\n * or `undefined` if it was inserted into the root node (the PDFPageTree upon\n * which the method was first called).\n */\n PDFPageTree.prototype.insertLeafNode = function (leafRef, targetIndex) {\n var Kids = this.Kids();\n var Count = this.Count().asNumber();\n if (targetIndex > Count) {\n throw new InvalidTargetIndexError(targetIndex, Count);\n }\n var leafsRemainingUntilTarget = targetIndex;\n for (var idx = 0, len = Kids.size(); idx < len; idx++) {\n if (leafsRemainingUntilTarget === 0) {\n // Insert page and return\n this.insertLeafKid(idx, leafRef);\n return undefined;\n }\n var kidRef = Kids.get(idx);\n var kid = this.context.lookup(kidRef);\n if (kid instanceof PDFPageTree) {\n if (kid.Count().asNumber() > leafsRemainingUntilTarget) {\n // Dig in\n return (kid.insertLeafNode(leafRef, leafsRemainingUntilTarget) || kidRef);\n }\n else {\n // Move on\n leafsRemainingUntilTarget -= kid.Count().asNumber();\n }\n }\n if (kid instanceof PDFPageLeaf) {\n // Move on\n leafsRemainingUntilTarget -= 1;\n }\n }\n if (leafsRemainingUntilTarget === 0) {\n // Insert page at the end and return\n this.insertLeafKid(Kids.size(), leafRef);\n return undefined;\n }\n // Should never get here if `targetIndex` is valid\n throw new CorruptPageTreeError(targetIndex, 'insertLeafNode');\n };\n /**\n * Removes the leaf node at the specified index (zero-based) from this page\n * tree. Also decrements the `Count` of each page tree in the hierarchy to\n * account for the removed page.\n *\n * If `prune` is true, then intermediate tree nodes will be removed from the\n * tree if they contain 0 children after the leaf node is removed.\n */\n PDFPageTree.prototype.removeLeafNode = function (targetIndex, prune) {\n if (prune === void 0) { prune = true; }\n var Kids = this.Kids();\n var Count = this.Count().asNumber();\n if (targetIndex >= Count) {\n throw new InvalidTargetIndexError(targetIndex, Count);\n }\n var leafsRemainingUntilTarget = targetIndex;\n for (var idx = 0, len = Kids.size(); idx < len; idx++) {\n var kidRef = Kids.get(idx);\n var kid = this.context.lookup(kidRef);\n if (kid instanceof PDFPageTree) {\n if (kid.Count().asNumber() > leafsRemainingUntilTarget) {\n // Dig in\n kid.removeLeafNode(leafsRemainingUntilTarget, prune);\n if (prune && kid.Kids().size() === 0)\n Kids.remove(idx);\n return;\n }\n else {\n // Move on\n leafsRemainingUntilTarget -= kid.Count().asNumber();\n }\n }\n if (kid instanceof PDFPageLeaf) {\n if (leafsRemainingUntilTarget === 0) {\n // Remove page and return\n this.removeKid(idx);\n return;\n }\n else {\n // Move on\n leafsRemainingUntilTarget -= 1;\n }\n }\n }\n // Should never get here if `targetIndex` is valid\n throw new CorruptPageTreeError(targetIndex, 'removeLeafNode');\n };\n PDFPageTree.prototype.ascend = function (visitor) {\n visitor(this);\n var Parent = this.Parent();\n if (Parent)\n Parent.ascend(visitor);\n };\n /** Performs a Post-Order traversal of this page tree */\n PDFPageTree.prototype.traverse = function (visitor) {\n var Kids = this.Kids();\n for (var idx = 0, len = Kids.size(); idx < len; idx++) {\n var kidRef = Kids.get(idx);\n var kid = this.context.lookup(kidRef);\n if (kid instanceof PDFPageTree)\n kid.traverse(visitor);\n visitor(kid, kidRef);\n }\n };\n PDFPageTree.prototype.insertLeafKid = function (kidIdx, leafRef) {\n var Kids = this.Kids();\n this.ascend(function (node) {\n var newCount = node.Count().asNumber() + 1;\n node.set(PDFName.of('Count'), PDFNumber.of(newCount));\n });\n Kids.insert(kidIdx, leafRef);\n };\n PDFPageTree.prototype.removeKid = function (kidIdx) {\n var Kids = this.Kids();\n var kid = Kids.lookup(kidIdx);\n if (kid instanceof PDFPageLeaf) {\n this.ascend(function (node) {\n var newCount = node.Count().asNumber() - 1;\n node.set(PDFName.of('Count'), PDFNumber.of(newCount));\n });\n }\n Kids.remove(kidIdx);\n };\n PDFPageTree.withContext = function (context, parent) {\n var dict = new Map();\n dict.set(PDFName.of('Type'), PDFName.of('Pages'));\n dict.set(PDFName.of('Kids'), context.obj([]));\n dict.set(PDFName.of('Count'), context.obj(0));\n if (parent)\n dict.set(PDFName.of('Parent'), parent);\n return new PDFPageTree(dict, context);\n };\n PDFPageTree.fromMapWithContext = function (map, context) {\n return new PDFPageTree(map, context);\n };\n return PDFPageTree;\n}(PDFDict));\nexport default PDFPageTree;\n//# sourceMappingURL=PDFPageTree.js.map","import CharCodes from \"./CharCodes\";\nexport var IsDigit = new Uint8Array(256);\nIsDigit[CharCodes.Zero] = 1;\nIsDigit[CharCodes.One] = 1;\nIsDigit[CharCodes.Two] = 1;\nIsDigit[CharCodes.Three] = 1;\nIsDigit[CharCodes.Four] = 1;\nIsDigit[CharCodes.Five] = 1;\nIsDigit[CharCodes.Six] = 1;\nIsDigit[CharCodes.Seven] = 1;\nIsDigit[CharCodes.Eight] = 1;\nIsDigit[CharCodes.Nine] = 1;\nexport var IsNumericPrefix = new Uint8Array(256);\nIsNumericPrefix[CharCodes.Period] = 1;\nIsNumericPrefix[CharCodes.Plus] = 1;\nIsNumericPrefix[CharCodes.Minus] = 1;\nexport var IsNumeric = new Uint8Array(256);\nfor (var idx = 0, len = 256; idx < len; idx++) {\n IsNumeric[idx] = IsDigit[idx] || IsNumericPrefix[idx] ? 1 : 0;\n}\n//# sourceMappingURL=Numeric.js.map","import { NumberParsingError } from \"../errors\";\nimport CharCodes from \"../syntax/CharCodes\";\nimport { IsDigit, IsNumeric } from \"../syntax/Numeric\";\nimport { IsWhitespace } from \"../syntax/Whitespace\";\nimport { charFromCode } from \"../../utils\";\nvar Newline = CharCodes.Newline, CarriageReturn = CharCodes.CarriageReturn;\n// TODO: Throw error if eof is reached before finishing object parse...\nvar BaseParser = /** @class */ (function () {\n function BaseParser(bytes, capNumbers) {\n if (capNumbers === void 0) { capNumbers = false; }\n this.bytes = bytes;\n this.capNumbers = capNumbers;\n }\n BaseParser.prototype.parseRawInt = function () {\n var value = '';\n while (!this.bytes.done()) {\n var byte = this.bytes.peek();\n if (!IsDigit[byte])\n break;\n value += charFromCode(this.bytes.next());\n }\n var numberValue = Number(value);\n if (!value || !isFinite(numberValue)) {\n throw new NumberParsingError(this.bytes.position(), value);\n }\n return numberValue;\n };\n // TODO: Maybe handle exponential format?\n // TODO: Compare performance of string concatenation to charFromCode(...bytes)\n BaseParser.prototype.parseRawNumber = function () {\n var value = '';\n // Parse integer-part, the leading (+ | - | . | 0-9)\n while (!this.bytes.done()) {\n var byte = this.bytes.peek();\n if (!IsNumeric[byte])\n break;\n value += charFromCode(this.bytes.next());\n if (byte === CharCodes.Period)\n break;\n }\n // Parse decimal-part, the trailing (0-9)\n while (!this.bytes.done()) {\n var byte = this.bytes.peek();\n if (!IsDigit[byte])\n break;\n value += charFromCode(this.bytes.next());\n }\n var numberValue = Number(value);\n if (!value || !isFinite(numberValue)) {\n throw new NumberParsingError(this.bytes.position(), value);\n }\n if (numberValue > Number.MAX_SAFE_INTEGER) {\n if (this.capNumbers) {\n var msg = \"Parsed number that is too large for some PDF readers: \" + value + \", using Number.MAX_SAFE_INTEGER instead.\";\n console.warn(msg);\n return Number.MAX_SAFE_INTEGER;\n }\n else {\n var msg = \"Parsed number that is too large for some PDF readers: \" + value + \", not capping.\";\n console.warn(msg);\n }\n }\n return numberValue;\n };\n BaseParser.prototype.skipWhitespace = function () {\n while (!this.bytes.done() && IsWhitespace[this.bytes.peek()]) {\n this.bytes.next();\n }\n };\n BaseParser.prototype.skipLine = function () {\n while (!this.bytes.done()) {\n var byte = this.bytes.peek();\n if (byte === Newline || byte === CarriageReturn)\n return;\n this.bytes.next();\n }\n };\n BaseParser.prototype.skipComment = function () {\n if (this.bytes.peek() !== CharCodes.Percent)\n return false;\n while (!this.bytes.done()) {\n var byte = this.bytes.peek();\n if (byte === Newline || byte === CarriageReturn)\n return true;\n this.bytes.next();\n }\n return true;\n };\n BaseParser.prototype.skipWhitespaceAndComments = function () {\n this.skipWhitespace();\n while (this.skipComment())\n this.skipWhitespace();\n };\n BaseParser.prototype.matchKeyword = function (keyword) {\n var initialOffset = this.bytes.offset();\n for (var idx = 0, len = keyword.length; idx < len; idx++) {\n if (this.bytes.done() || this.bytes.next() !== keyword[idx]) {\n this.bytes.moveTo(initialOffset);\n return false;\n }\n }\n return true;\n };\n return BaseParser;\n}());\nexport default BaseParser;\n//# sourceMappingURL=BaseParser.js.map","import { NextByteAssertionError } from \"../errors\";\nimport { decodePDFRawStream } from \"../streams/decode\";\nimport CharCodes from \"../syntax/CharCodes\";\n// TODO: See how line/col tracking affects performance\nvar ByteStream = /** @class */ (function () {\n function ByteStream(bytes) {\n this.idx = 0;\n this.line = 0;\n this.column = 0;\n this.bytes = bytes;\n this.length = this.bytes.length;\n }\n ByteStream.prototype.moveTo = function (offset) {\n this.idx = offset;\n };\n ByteStream.prototype.next = function () {\n var byte = this.bytes[this.idx++];\n if (byte === CharCodes.Newline) {\n this.line += 1;\n this.column = 0;\n }\n else {\n this.column += 1;\n }\n return byte;\n };\n ByteStream.prototype.assertNext = function (expected) {\n if (this.peek() !== expected) {\n throw new NextByteAssertionError(this.position(), expected, this.peek());\n }\n return this.next();\n };\n ByteStream.prototype.peek = function () {\n return this.bytes[this.idx];\n };\n ByteStream.prototype.peekAhead = function (steps) {\n return this.bytes[this.idx + steps];\n };\n ByteStream.prototype.peekAt = function (offset) {\n return this.bytes[offset];\n };\n ByteStream.prototype.done = function () {\n return this.idx >= this.length;\n };\n ByteStream.prototype.offset = function () {\n return this.idx;\n };\n ByteStream.prototype.slice = function (start, end) {\n return this.bytes.slice(start, end);\n };\n ByteStream.prototype.position = function () {\n return { line: this.line, column: this.column, offset: this.idx };\n };\n ByteStream.of = function (bytes) { return new ByteStream(bytes); };\n ByteStream.fromPDFRawStream = function (rawStream) {\n return ByteStream.of(decodePDFRawStream(rawStream).decode());\n };\n return ByteStream;\n}());\nexport default ByteStream;\n//# sourceMappingURL=ByteStream.js.map","import { __spreadArrays } from \"tslib\";\nimport CharCodes from \"./CharCodes\";\nvar Space = CharCodes.Space, CarriageReturn = CharCodes.CarriageReturn, Newline = CharCodes.Newline;\nvar stream = [\n CharCodes.s,\n CharCodes.t,\n CharCodes.r,\n CharCodes.e,\n CharCodes.a,\n CharCodes.m,\n];\nvar endstream = [\n CharCodes.e,\n CharCodes.n,\n CharCodes.d,\n CharCodes.s,\n CharCodes.t,\n CharCodes.r,\n CharCodes.e,\n CharCodes.a,\n CharCodes.m,\n];\nexport var Keywords = {\n header: [\n CharCodes.Percent,\n CharCodes.P,\n CharCodes.D,\n CharCodes.F,\n CharCodes.Dash,\n ],\n eof: [\n CharCodes.Percent,\n CharCodes.Percent,\n CharCodes.E,\n CharCodes.O,\n CharCodes.F,\n ],\n obj: [CharCodes.o, CharCodes.b, CharCodes.j],\n endobj: [\n CharCodes.e,\n CharCodes.n,\n CharCodes.d,\n CharCodes.o,\n CharCodes.b,\n CharCodes.j,\n ],\n xref: [CharCodes.x, CharCodes.r, CharCodes.e, CharCodes.f],\n trailer: [\n CharCodes.t,\n CharCodes.r,\n CharCodes.a,\n CharCodes.i,\n CharCodes.l,\n CharCodes.e,\n CharCodes.r,\n ],\n startxref: [\n CharCodes.s,\n CharCodes.t,\n CharCodes.a,\n CharCodes.r,\n CharCodes.t,\n CharCodes.x,\n CharCodes.r,\n CharCodes.e,\n CharCodes.f,\n ],\n true: [CharCodes.t, CharCodes.r, CharCodes.u, CharCodes.e],\n false: [CharCodes.f, CharCodes.a, CharCodes.l, CharCodes.s, CharCodes.e],\n null: [CharCodes.n, CharCodes.u, CharCodes.l, CharCodes.l],\n stream: stream,\n streamEOF1: __spreadArrays(stream, [Space, CarriageReturn, Newline]),\n streamEOF2: __spreadArrays(stream, [CarriageReturn, Newline]),\n streamEOF3: __spreadArrays(stream, [CarriageReturn]),\n streamEOF4: __spreadArrays(stream, [Newline]),\n endstream: endstream,\n EOF1endstream: __spreadArrays([CarriageReturn, Newline], endstream),\n EOF2endstream: __spreadArrays([CarriageReturn], endstream),\n EOF3endstream: __spreadArrays([Newline], endstream),\n};\n//# sourceMappingURL=Keywords.js.map","import { __extends } from \"tslib\";\nimport { PDFObjectParsingError, PDFStreamParsingError, UnbalancedParenthesisError, } from \"../errors\";\nimport PDFArray from \"../objects/PDFArray\";\nimport PDFBool from \"../objects/PDFBool\";\nimport PDFDict from \"../objects/PDFDict\";\nimport PDFHexString from \"../objects/PDFHexString\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFNull from \"../objects/PDFNull\";\nimport PDFNumber from \"../objects/PDFNumber\";\nimport PDFRawStream from \"../objects/PDFRawStream\";\nimport PDFRef from \"../objects/PDFRef\";\nimport PDFString from \"../objects/PDFString\";\nimport BaseParser from \"./BaseParser\";\nimport ByteStream from \"./ByteStream\";\nimport PDFCatalog from \"../structures/PDFCatalog\";\nimport PDFPageLeaf from \"../structures/PDFPageLeaf\";\nimport PDFPageTree from \"../structures/PDFPageTree\";\nimport CharCodes from \"../syntax/CharCodes\";\nimport { IsDelimiter } from \"../syntax/Delimiters\";\nimport { Keywords } from \"../syntax/Keywords\";\nimport { IsDigit, IsNumeric } from \"../syntax/Numeric\";\nimport { IsWhitespace } from \"../syntax/Whitespace\";\nimport { charFromCode } from \"../../utils\";\n// TODO: Throw error if eof is reached before finishing object parse...\nvar PDFObjectParser = /** @class */ (function (_super) {\n __extends(PDFObjectParser, _super);\n function PDFObjectParser(byteStream, context, capNumbers) {\n if (capNumbers === void 0) { capNumbers = false; }\n var _this = _super.call(this, byteStream, capNumbers) || this;\n _this.context = context;\n return _this;\n }\n // TODO: Is it possible to reduce duplicate parsing for ref lookaheads?\n PDFObjectParser.prototype.parseObject = function () {\n this.skipWhitespaceAndComments();\n if (this.matchKeyword(Keywords.true))\n return PDFBool.True;\n if (this.matchKeyword(Keywords.false))\n return PDFBool.False;\n if (this.matchKeyword(Keywords.null))\n return PDFNull;\n var byte = this.bytes.peek();\n if (byte === CharCodes.LessThan &&\n this.bytes.peekAhead(1) === CharCodes.LessThan) {\n return this.parseDictOrStream();\n }\n if (byte === CharCodes.LessThan)\n return this.parseHexString();\n if (byte === CharCodes.LeftParen)\n return this.parseString();\n if (byte === CharCodes.ForwardSlash)\n return this.parseName();\n if (byte === CharCodes.LeftSquareBracket)\n return this.parseArray();\n if (IsNumeric[byte])\n return this.parseNumberOrRef();\n throw new PDFObjectParsingError(this.bytes.position(), byte);\n };\n PDFObjectParser.prototype.parseNumberOrRef = function () {\n var firstNum = this.parseRawNumber();\n this.skipWhitespaceAndComments();\n var lookaheadStart = this.bytes.offset();\n if (IsDigit[this.bytes.peek()]) {\n var secondNum = this.parseRawNumber();\n this.skipWhitespaceAndComments();\n if (this.bytes.peek() === CharCodes.R) {\n this.bytes.assertNext(CharCodes.R);\n return PDFRef.of(firstNum, secondNum);\n }\n }\n this.bytes.moveTo(lookaheadStart);\n return PDFNumber.of(firstNum);\n };\n // TODO: Maybe update PDFHexString.of() logic to remove whitespace and validate input?\n PDFObjectParser.prototype.parseHexString = function () {\n var value = '';\n this.bytes.assertNext(CharCodes.LessThan);\n while (!this.bytes.done() && this.bytes.peek() !== CharCodes.GreaterThan) {\n value += charFromCode(this.bytes.next());\n }\n this.bytes.assertNext(CharCodes.GreaterThan);\n return PDFHexString.of(value);\n };\n PDFObjectParser.prototype.parseString = function () {\n var nestingLvl = 0;\n var isEscaped = false;\n var value = '';\n while (!this.bytes.done()) {\n var byte = this.bytes.next();\n value += charFromCode(byte);\n // Check for unescaped parenthesis\n if (!isEscaped) {\n if (byte === CharCodes.LeftParen)\n nestingLvl += 1;\n if (byte === CharCodes.RightParen)\n nestingLvl -= 1;\n }\n // Track whether current character is being escaped or not\n if (byte === CharCodes.BackSlash) {\n isEscaped = !isEscaped;\n }\n else if (isEscaped) {\n isEscaped = false;\n }\n // Once (if) the unescaped parenthesis balance out, return their contents\n if (nestingLvl === 0) {\n // Remove the outer parens so they aren't part of the contents\n return PDFString.of(value.substring(1, value.length - 1));\n }\n }\n throw new UnbalancedParenthesisError(this.bytes.position());\n };\n // TODO: Compare performance of string concatenation to charFromCode(...bytes)\n // TODO: Maybe preallocate small Uint8Array if can use charFromCode?\n PDFObjectParser.prototype.parseName = function () {\n this.bytes.assertNext(CharCodes.ForwardSlash);\n var name = '';\n while (!this.bytes.done()) {\n var byte = this.bytes.peek();\n if (IsWhitespace[byte] || IsDelimiter[byte])\n break;\n name += charFromCode(byte);\n this.bytes.next();\n }\n return PDFName.of(name);\n };\n PDFObjectParser.prototype.parseArray = function () {\n this.bytes.assertNext(CharCodes.LeftSquareBracket);\n this.skipWhitespaceAndComments();\n var pdfArray = PDFArray.withContext(this.context);\n while (this.bytes.peek() !== CharCodes.RightSquareBracket) {\n var element = this.parseObject();\n pdfArray.push(element);\n this.skipWhitespaceAndComments();\n }\n this.bytes.assertNext(CharCodes.RightSquareBracket);\n return pdfArray;\n };\n PDFObjectParser.prototype.parseDict = function () {\n this.bytes.assertNext(CharCodes.LessThan);\n this.bytes.assertNext(CharCodes.LessThan);\n this.skipWhitespaceAndComments();\n var dict = new Map();\n while (!this.bytes.done() &&\n this.bytes.peek() !== CharCodes.GreaterThan &&\n this.bytes.peekAhead(1) !== CharCodes.GreaterThan) {\n var key = this.parseName();\n var value = this.parseObject();\n dict.set(key, value);\n this.skipWhitespaceAndComments();\n }\n this.skipWhitespaceAndComments();\n this.bytes.assertNext(CharCodes.GreaterThan);\n this.bytes.assertNext(CharCodes.GreaterThan);\n var Type = dict.get(PDFName.of('Type'));\n if (Type === PDFName.of('Catalog')) {\n return PDFCatalog.fromMapWithContext(dict, this.context);\n }\n else if (Type === PDFName.of('Pages')) {\n return PDFPageTree.fromMapWithContext(dict, this.context);\n }\n else if (Type === PDFName.of('Page')) {\n return PDFPageLeaf.fromMapWithContext(dict, this.context);\n }\n else {\n return PDFDict.fromMapWithContext(dict, this.context);\n }\n };\n PDFObjectParser.prototype.parseDictOrStream = function () {\n var startPos = this.bytes.position();\n var dict = this.parseDict();\n this.skipWhitespaceAndComments();\n if (!this.matchKeyword(Keywords.streamEOF1) &&\n !this.matchKeyword(Keywords.streamEOF2) &&\n !this.matchKeyword(Keywords.streamEOF3) &&\n !this.matchKeyword(Keywords.streamEOF4) &&\n !this.matchKeyword(Keywords.stream)) {\n return dict;\n }\n var start = this.bytes.offset();\n var end;\n var Length = dict.get(PDFName.of('Length'));\n if (Length instanceof PDFNumber) {\n end = start + Length.asNumber();\n this.bytes.moveTo(end);\n this.skipWhitespaceAndComments();\n if (!this.matchKeyword(Keywords.endstream)) {\n this.bytes.moveTo(start);\n end = this.findEndOfStreamFallback(startPos);\n }\n }\n else {\n end = this.findEndOfStreamFallback(startPos);\n }\n var contents = this.bytes.slice(start, end);\n return PDFRawStream.of(dict, contents);\n };\n PDFObjectParser.prototype.findEndOfStreamFallback = function (startPos) {\n // Move to end of stream, while handling nested streams\n var nestingLvl = 1;\n var end = this.bytes.offset();\n while (!this.bytes.done()) {\n end = this.bytes.offset();\n if (this.matchKeyword(Keywords.stream)) {\n nestingLvl += 1;\n }\n else if (this.matchKeyword(Keywords.EOF1endstream) ||\n this.matchKeyword(Keywords.EOF2endstream) ||\n this.matchKeyword(Keywords.EOF3endstream) ||\n this.matchKeyword(Keywords.endstream)) {\n nestingLvl -= 1;\n }\n else {\n this.bytes.next();\n }\n if (nestingLvl === 0)\n break;\n }\n if (nestingLvl !== 0)\n throw new PDFStreamParsingError(startPos);\n return end;\n };\n PDFObjectParser.forBytes = function (bytes, context, capNumbers) { return new PDFObjectParser(ByteStream.of(bytes), context, capNumbers); };\n PDFObjectParser.forByteStream = function (byteStream, context, capNumbers) {\n if (capNumbers === void 0) { capNumbers = false; }\n return new PDFObjectParser(byteStream, context, capNumbers);\n };\n return PDFObjectParser;\n}(BaseParser));\nexport default PDFObjectParser;\n//# sourceMappingURL=PDFObjectParser.js.map","import { __awaiter, __extends, __generator } from \"tslib\";\nimport { ReparseError } from \"../errors\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFNumber from \"../objects/PDFNumber\";\nimport PDFRef from \"../objects/PDFRef\";\nimport ByteStream from \"./ByteStream\";\nimport PDFObjectParser from \"./PDFObjectParser\";\nimport { waitForTick } from \"../../utils\";\nvar PDFObjectStreamParser = /** @class */ (function (_super) {\n __extends(PDFObjectStreamParser, _super);\n function PDFObjectStreamParser(rawStream, shouldWaitForTick) {\n var _this = _super.call(this, ByteStream.fromPDFRawStream(rawStream), rawStream.dict.context) || this;\n var dict = rawStream.dict;\n _this.alreadyParsed = false;\n _this.shouldWaitForTick = shouldWaitForTick || (function () { return false; });\n _this.firstOffset = dict.lookup(PDFName.of('First'), PDFNumber).asNumber();\n _this.objectCount = dict.lookup(PDFName.of('N'), PDFNumber).asNumber();\n return _this;\n }\n PDFObjectStreamParser.prototype.parseIntoContext = function () {\n return __awaiter(this, void 0, void 0, function () {\n var offsetsAndObjectNumbers, idx, len, _a, objectNumber, offset, object, ref;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (this.alreadyParsed) {\n throw new ReparseError('PDFObjectStreamParser', 'parseIntoContext');\n }\n this.alreadyParsed = true;\n offsetsAndObjectNumbers = this.parseOffsetsAndObjectNumbers();\n idx = 0, len = offsetsAndObjectNumbers.length;\n _b.label = 1;\n case 1:\n if (!(idx < len)) return [3 /*break*/, 4];\n _a = offsetsAndObjectNumbers[idx], objectNumber = _a.objectNumber, offset = _a.offset;\n this.bytes.moveTo(this.firstOffset + offset);\n object = this.parseObject();\n ref = PDFRef.of(objectNumber, 0);\n this.context.assign(ref, object);\n if (!this.shouldWaitForTick()) return [3 /*break*/, 3];\n return [4 /*yield*/, waitForTick()];\n case 2:\n _b.sent();\n _b.label = 3;\n case 3:\n idx++;\n return [3 /*break*/, 1];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n PDFObjectStreamParser.prototype.parseOffsetsAndObjectNumbers = function () {\n var offsetsAndObjectNumbers = [];\n for (var idx = 0, len = this.objectCount; idx < len; idx++) {\n this.skipWhitespaceAndComments();\n var objectNumber = this.parseRawInt();\n this.skipWhitespaceAndComments();\n var offset = this.parseRawInt();\n offsetsAndObjectNumbers.push({ objectNumber: objectNumber, offset: offset });\n }\n return offsetsAndObjectNumbers;\n };\n PDFObjectStreamParser.forStream = function (rawStream, shouldWaitForTick) { return new PDFObjectStreamParser(rawStream, shouldWaitForTick); };\n return PDFObjectStreamParser;\n}(PDFObjectParser));\nexport default PDFObjectStreamParser;\n//# sourceMappingURL=PDFObjectStreamParser.js.map","import { ReparseError } from \"../errors\";\nimport PDFArray from \"../objects/PDFArray\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFNumber from \"../objects/PDFNumber\";\nimport PDFRef from \"../objects/PDFRef\";\nimport ByteStream from \"./ByteStream\";\nvar PDFXRefStreamParser = /** @class */ (function () {\n function PDFXRefStreamParser(rawStream) {\n this.alreadyParsed = false;\n this.dict = rawStream.dict;\n this.bytes = ByteStream.fromPDFRawStream(rawStream);\n this.context = this.dict.context;\n var Size = this.dict.lookup(PDFName.of('Size'), PDFNumber);\n var Index = this.dict.lookup(PDFName.of('Index'));\n if (Index instanceof PDFArray) {\n this.subsections = [];\n for (var idx = 0, len = Index.size(); idx < len; idx += 2) {\n var firstObjectNumber = Index.lookup(idx + 0, PDFNumber).asNumber();\n var length_1 = Index.lookup(idx + 1, PDFNumber).asNumber();\n this.subsections.push({ firstObjectNumber: firstObjectNumber, length: length_1 });\n }\n }\n else {\n this.subsections = [{ firstObjectNumber: 0, length: Size.asNumber() }];\n }\n var W = this.dict.lookup(PDFName.of('W'), PDFArray);\n this.byteWidths = [-1, -1, -1];\n for (var idx = 0, len = W.size(); idx < len; idx++) {\n this.byteWidths[idx] = W.lookup(idx, PDFNumber).asNumber();\n }\n }\n PDFXRefStreamParser.prototype.parseIntoContext = function () {\n if (this.alreadyParsed) {\n throw new ReparseError('PDFXRefStreamParser', 'parseIntoContext');\n }\n this.alreadyParsed = true;\n this.context.trailerInfo = {\n Root: this.dict.get(PDFName.of('Root')),\n Encrypt: this.dict.get(PDFName.of('Encrypt')),\n Info: this.dict.get(PDFName.of('Info')),\n ID: this.dict.get(PDFName.of('ID')),\n };\n var entries = this.parseEntries();\n // for (let idx = 0, len = entries.length; idx < len; idx++) {\n // const entry = entries[idx];\n // if (entry.deleted) this.context.delete(entry.ref);\n // }\n return entries;\n };\n PDFXRefStreamParser.prototype.parseEntries = function () {\n var entries = [];\n var _a = this.byteWidths, typeFieldWidth = _a[0], offsetFieldWidth = _a[1], genFieldWidth = _a[2];\n for (var subsectionIdx = 0, subsectionLen = this.subsections.length; subsectionIdx < subsectionLen; subsectionIdx++) {\n var _b = this.subsections[subsectionIdx], firstObjectNumber = _b.firstObjectNumber, length_2 = _b.length;\n for (var objIdx = 0; objIdx < length_2; objIdx++) {\n var type = 0;\n for (var idx = 0, len = typeFieldWidth; idx < len; idx++) {\n type = (type << 8) | this.bytes.next();\n }\n var offset = 0;\n for (var idx = 0, len = offsetFieldWidth; idx < len; idx++) {\n offset = (offset << 8) | this.bytes.next();\n }\n var generationNumber = 0;\n for (var idx = 0, len = genFieldWidth; idx < len; idx++) {\n generationNumber = (generationNumber << 8) | this.bytes.next();\n }\n // When the `type` field is absent, it defaults to 1\n if (typeFieldWidth === 0)\n type = 1;\n var objectNumber = firstObjectNumber + objIdx;\n var entry = {\n ref: PDFRef.of(objectNumber, generationNumber),\n offset: offset,\n deleted: type === 0,\n inObjectStream: type === 2,\n };\n entries.push(entry);\n }\n }\n return entries;\n };\n PDFXRefStreamParser.forStream = function (rawStream) {\n return new PDFXRefStreamParser(rawStream);\n };\n return PDFXRefStreamParser;\n}());\nexport default PDFXRefStreamParser;\n//# sourceMappingURL=PDFXRefStreamParser.js.map","import { __awaiter, __extends, __generator } from \"tslib\";\nimport PDFCrossRefSection from \"../document/PDFCrossRefSection\";\nimport PDFHeader from \"../document/PDFHeader\";\nimport PDFTrailer from \"../document/PDFTrailer\";\nimport { MissingKeywordError, MissingPDFHeaderError, PDFInvalidObjectParsingError, ReparseError, StalledParserError, } from \"../errors\";\nimport PDFDict from \"../objects/PDFDict\";\nimport PDFInvalidObject from \"../objects/PDFInvalidObject\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFRawStream from \"../objects/PDFRawStream\";\nimport PDFRef from \"../objects/PDFRef\";\nimport ByteStream from \"./ByteStream\";\nimport PDFObjectParser from \"./PDFObjectParser\";\nimport PDFObjectStreamParser from \"./PDFObjectStreamParser\";\nimport PDFXRefStreamParser from \"./PDFXRefStreamParser\";\nimport PDFContext from \"../PDFContext\";\nimport CharCodes from \"../syntax/CharCodes\";\nimport { Keywords } from \"../syntax/Keywords\";\nimport { IsDigit } from \"../syntax/Numeric\";\nimport { waitForTick } from \"../../utils\";\nvar PDFParser = /** @class */ (function (_super) {\n __extends(PDFParser, _super);\n function PDFParser(pdfBytes, objectsPerTick, throwOnInvalidObject, capNumbers) {\n if (objectsPerTick === void 0) { objectsPerTick = Infinity; }\n if (throwOnInvalidObject === void 0) { throwOnInvalidObject = false; }\n if (capNumbers === void 0) { capNumbers = false; }\n var _this = _super.call(this, ByteStream.of(pdfBytes), PDFContext.create(), capNumbers) || this;\n _this.alreadyParsed = false;\n _this.parsedObjects = 0;\n _this.shouldWaitForTick = function () {\n _this.parsedObjects += 1;\n return _this.parsedObjects % _this.objectsPerTick === 0;\n };\n _this.objectsPerTick = objectsPerTick;\n _this.throwOnInvalidObject = throwOnInvalidObject;\n return _this;\n }\n PDFParser.prototype.parseDocument = function () {\n return __awaiter(this, void 0, void 0, function () {\n var prevOffset, offset;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.alreadyParsed) {\n throw new ReparseError('PDFParser', 'parseDocument');\n }\n this.alreadyParsed = true;\n this.context.header = this.parseHeader();\n _a.label = 1;\n case 1:\n if (!!this.bytes.done()) return [3 /*break*/, 3];\n return [4 /*yield*/, this.parseDocumentSection()];\n case 2:\n _a.sent();\n offset = this.bytes.offset();\n if (offset === prevOffset) {\n throw new StalledParserError(this.bytes.position());\n }\n prevOffset = offset;\n return [3 /*break*/, 1];\n case 3:\n this.maybeRecoverRoot();\n if (this.context.lookup(PDFRef.of(0))) {\n console.warn('Removing parsed object: 0 0 R');\n this.context.delete(PDFRef.of(0));\n }\n return [2 /*return*/, this.context];\n }\n });\n });\n };\n PDFParser.prototype.maybeRecoverRoot = function () {\n var isValidCatalog = function (obj) {\n return obj instanceof PDFDict &&\n obj.lookup(PDFName.of('Type')) === PDFName.of('Catalog');\n };\n var catalog = this.context.lookup(this.context.trailerInfo.Root);\n if (!isValidCatalog(catalog)) {\n var indirectObjects = this.context.enumerateIndirectObjects();\n for (var idx = 0, len = indirectObjects.length; idx < len; idx++) {\n var _a = indirectObjects[idx], ref = _a[0], object = _a[1];\n if (isValidCatalog(object)) {\n this.context.trailerInfo.Root = ref;\n }\n }\n }\n };\n PDFParser.prototype.parseHeader = function () {\n while (!this.bytes.done()) {\n if (this.matchKeyword(Keywords.header)) {\n var major = this.parseRawInt();\n this.bytes.assertNext(CharCodes.Period);\n var minor = this.parseRawInt();\n var header = PDFHeader.forVersion(major, minor);\n this.skipBinaryHeaderComment();\n return header;\n }\n this.bytes.next();\n }\n throw new MissingPDFHeaderError(this.bytes.position());\n };\n PDFParser.prototype.parseIndirectObjectHeader = function () {\n this.skipWhitespaceAndComments();\n var objectNumber = this.parseRawInt();\n this.skipWhitespaceAndComments();\n var generationNumber = this.parseRawInt();\n this.skipWhitespaceAndComments();\n if (!this.matchKeyword(Keywords.obj)) {\n throw new MissingKeywordError(this.bytes.position(), Keywords.obj);\n }\n return PDFRef.of(objectNumber, generationNumber);\n };\n PDFParser.prototype.matchIndirectObjectHeader = function () {\n var initialOffset = this.bytes.offset();\n try {\n this.parseIndirectObjectHeader();\n return true;\n }\n catch (e) {\n this.bytes.moveTo(initialOffset);\n return false;\n }\n };\n PDFParser.prototype.parseIndirectObject = function () {\n return __awaiter(this, void 0, void 0, function () {\n var ref, object;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n ref = this.parseIndirectObjectHeader();\n this.skipWhitespaceAndComments();\n object = this.parseObject();\n this.skipWhitespaceAndComments();\n // if (!this.matchKeyword(Keywords.endobj)) {\n // throw new MissingKeywordError(this.bytes.position(), Keywords.endobj);\n // }\n // TODO: Log a warning if this fails...\n this.matchKeyword(Keywords.endobj);\n if (!(object instanceof PDFRawStream &&\n object.dict.lookup(PDFName.of('Type')) === PDFName.of('ObjStm'))) return [3 /*break*/, 2];\n return [4 /*yield*/, PDFObjectStreamParser.forStream(object, this.shouldWaitForTick).parseIntoContext()];\n case 1:\n _a.sent();\n return [3 /*break*/, 3];\n case 2:\n if (object instanceof PDFRawStream &&\n object.dict.lookup(PDFName.of('Type')) === PDFName.of('XRef')) {\n PDFXRefStreamParser.forStream(object).parseIntoContext();\n }\n else {\n this.context.assign(ref, object);\n }\n _a.label = 3;\n case 3: return [2 /*return*/, ref];\n }\n });\n });\n };\n // TODO: Improve and clean this up\n PDFParser.prototype.tryToParseInvalidIndirectObject = function () {\n var startPos = this.bytes.position();\n var msg = \"Trying to parse invalid object: \" + JSON.stringify(startPos) + \")\";\n if (this.throwOnInvalidObject)\n throw new Error(msg);\n console.warn(msg);\n var ref = this.parseIndirectObjectHeader();\n console.warn(\"Invalid object ref: \" + ref);\n this.skipWhitespaceAndComments();\n var start = this.bytes.offset();\n var failed = true;\n while (!this.bytes.done()) {\n if (this.matchKeyword(Keywords.endobj)) {\n failed = false;\n }\n if (!failed)\n break;\n this.bytes.next();\n }\n if (failed)\n throw new PDFInvalidObjectParsingError(startPos);\n var end = this.bytes.offset() - Keywords.endobj.length;\n var object = PDFInvalidObject.of(this.bytes.slice(start, end));\n this.context.assign(ref, object);\n return ref;\n };\n PDFParser.prototype.parseIndirectObjects = function () {\n return __awaiter(this, void 0, void 0, function () {\n var initialOffset, e_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.skipWhitespaceAndComments();\n _a.label = 1;\n case 1:\n if (!(!this.bytes.done() && IsDigit[this.bytes.peek()])) return [3 /*break*/, 8];\n initialOffset = this.bytes.offset();\n _a.label = 2;\n case 2:\n _a.trys.push([2, 4, , 5]);\n return [4 /*yield*/, this.parseIndirectObject()];\n case 3:\n _a.sent();\n return [3 /*break*/, 5];\n case 4:\n e_1 = _a.sent();\n // TODO: Add tracing/logging mechanism to track when this happens!\n this.bytes.moveTo(initialOffset);\n this.tryToParseInvalidIndirectObject();\n return [3 /*break*/, 5];\n case 5:\n this.skipWhitespaceAndComments();\n // TODO: Can this be done only when needed, to avoid harming performance?\n this.skipJibberish();\n if (!this.shouldWaitForTick()) return [3 /*break*/, 7];\n return [4 /*yield*/, waitForTick()];\n case 6:\n _a.sent();\n _a.label = 7;\n case 7: return [3 /*break*/, 1];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n PDFParser.prototype.maybeParseCrossRefSection = function () {\n this.skipWhitespaceAndComments();\n if (!this.matchKeyword(Keywords.xref))\n return;\n this.skipWhitespaceAndComments();\n var objectNumber = -1;\n var xref = PDFCrossRefSection.createEmpty();\n while (!this.bytes.done() && IsDigit[this.bytes.peek()]) {\n var firstInt = this.parseRawInt();\n this.skipWhitespaceAndComments();\n var secondInt = this.parseRawInt();\n this.skipWhitespaceAndComments();\n var byte = this.bytes.peek();\n if (byte === CharCodes.n || byte === CharCodes.f) {\n var ref = PDFRef.of(objectNumber, secondInt);\n if (this.bytes.next() === CharCodes.n) {\n xref.addEntry(ref, firstInt);\n }\n else {\n // this.context.delete(ref);\n xref.addDeletedEntry(ref, firstInt);\n }\n objectNumber += 1;\n }\n else {\n objectNumber = firstInt;\n }\n this.skipWhitespaceAndComments();\n }\n return xref;\n };\n PDFParser.prototype.maybeParseTrailerDict = function () {\n this.skipWhitespaceAndComments();\n if (!this.matchKeyword(Keywords.trailer))\n return;\n this.skipWhitespaceAndComments();\n var dict = this.parseDict();\n var context = this.context;\n context.trailerInfo = {\n Root: dict.get(PDFName.of('Root')) || context.trailerInfo.Root,\n Encrypt: dict.get(PDFName.of('Encrypt')) || context.trailerInfo.Encrypt,\n Info: dict.get(PDFName.of('Info')) || context.trailerInfo.Info,\n ID: dict.get(PDFName.of('ID')) || context.trailerInfo.ID,\n };\n };\n PDFParser.prototype.maybeParseTrailer = function () {\n this.skipWhitespaceAndComments();\n if (!this.matchKeyword(Keywords.startxref))\n return;\n this.skipWhitespaceAndComments();\n var offset = this.parseRawInt();\n this.skipWhitespace();\n this.matchKeyword(Keywords.eof);\n this.skipWhitespaceAndComments();\n this.matchKeyword(Keywords.eof);\n this.skipWhitespaceAndComments();\n return PDFTrailer.forLastCrossRefSectionOffset(offset);\n };\n PDFParser.prototype.parseDocumentSection = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.parseIndirectObjects()];\n case 1:\n _a.sent();\n this.maybeParseCrossRefSection();\n this.maybeParseTrailerDict();\n this.maybeParseTrailer();\n // TODO: Can this be done only when needed, to avoid harming performance?\n this.skipJibberish();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * This operation is not necessary for valid PDF files. But some invalid PDFs\n * contain jibberish in between indirect objects. This method is designed to\n * skip past that jibberish, should it exist, until it reaches the next\n * indirect object header, an xref table section, or the file trailer.\n */\n PDFParser.prototype.skipJibberish = function () {\n this.skipWhitespaceAndComments();\n while (!this.bytes.done()) {\n var initialOffset = this.bytes.offset();\n var byte = this.bytes.peek();\n var isAlphaNumeric = byte >= CharCodes.Space && byte <= CharCodes.Tilde;\n if (isAlphaNumeric) {\n if (this.matchKeyword(Keywords.xref) ||\n this.matchKeyword(Keywords.trailer) ||\n this.matchKeyword(Keywords.startxref) ||\n this.matchIndirectObjectHeader()) {\n this.bytes.moveTo(initialOffset);\n break;\n }\n }\n this.bytes.next();\n }\n };\n /**\n * Skips the binary comment following a PDF header. The specification\n * defines this binary comment (section 7.5.2 File Header) as a sequence of 4\n * or more bytes that are 128 or greater, and which are preceded by a \"%\".\n *\n * This would imply that to strip out this binary comment, we could check for\n * a sequence of bytes starting with \"%\", and remove all subsequent bytes that\n * are 128 or greater. This works for many documents that properly comply with\n * the spec. But in the wild, there are PDFs that omit the leading \"%\", and\n * include bytes that are less than 128 (e.g. 0 or 1). So in order to parse\n * these headers correctly, we just throw out all bytes leading up to the\n * first indirect object header.\n */\n PDFParser.prototype.skipBinaryHeaderComment = function () {\n this.skipWhitespaceAndComments();\n try {\n var initialOffset = this.bytes.offset();\n this.parseIndirectObjectHeader();\n this.bytes.moveTo(initialOffset);\n }\n catch (e) {\n this.bytes.next();\n this.skipWhitespaceAndComments();\n }\n };\n PDFParser.forBytesWithOptions = function (pdfBytes, objectsPerTick, throwOnInvalidObject, capNumbers) {\n return new PDFParser(pdfBytes, objectsPerTick, throwOnInvalidObject, capNumbers);\n };\n return PDFParser;\n}(PDFObjectParser));\nexport default PDFParser;\n//# sourceMappingURL=PDFParser.js.map","var flag = function (bitIndex) { return 1 << bitIndex; };\n/** From PDF spec table 165 */\nexport var AnnotationFlags;\n(function (AnnotationFlags) {\n /**\n * If set, do not display the annotation if it does not belong to one of the\n * standard annotation types and no annotation handler is available. If clear,\n * display such an unknown annotation using an appearance stream specified by\n * its appearance dictionary, if any.\n */\n AnnotationFlags[AnnotationFlags[\"Invisible\"] = flag(1 - 1)] = \"Invisible\";\n /**\n * If set, do not display or print the annotation or allow it to interact with\n * the user, regardless of its annotation type or whether an annotation\n * handler is available.\n *\n * In cases where screen space is limited, the ability to hide and show\n * annotations selectively can be used in combination with appearance streams\n * to display auxiliary pop-up information similar in function to online help\n * systems.\n */\n AnnotationFlags[AnnotationFlags[\"Hidden\"] = flag(2 - 1)] = \"Hidden\";\n /**\n * If set, print the annotation when the page is printed. If clear, never\n * print the annotation, regardless of whether it is displayed on the screen.\n *\n * This can be useful for annotations representing interactive pushbuttons,\n * which would serve no meaningful purpose on the printed page.\n */\n AnnotationFlags[AnnotationFlags[\"Print\"] = flag(3 - 1)] = \"Print\";\n /**\n * If set, do not scale the annotation’s appearance to match the magnification\n * of the page. The location of the annotation on the page (defined by the\n * upper-left corner of its annotation rectangle) shall remain fixed,\n * regardless of the page magnification.\n */\n AnnotationFlags[AnnotationFlags[\"NoZoom\"] = flag(4 - 1)] = \"NoZoom\";\n /**\n * If set, do not rotate the annotation’s appearance to match the rotation of\n * the page. The upper-left corner of the annotation rectangle shall remain in\n * a fixed location on the page, regardless of the page rotation.\n */\n AnnotationFlags[AnnotationFlags[\"NoRotate\"] = flag(5 - 1)] = \"NoRotate\";\n /**\n * If set, do not display the annotation on the screen or allow it to interact\n * with the user. The annotation may be printed (depending on the setting of\n * the Print flag) but should be considered hidden for purposes of on-screen\n * display and user interaction.\n */\n AnnotationFlags[AnnotationFlags[\"NoView\"] = flag(6 - 1)] = \"NoView\";\n /**\n * If set, do not allow the annotation to interact with the user. The\n * annotation may be displayed or printed (depending on the settings of the\n * NoView and Print flags) but should not respond to mouse clicks or change\n * its appearance in response to mouse motions.\n *\n * This flag shall be ignored for widget annotations; its function is\n * subsumed by the ReadOnly flag of the associated form field.\n */\n AnnotationFlags[AnnotationFlags[\"ReadOnly\"] = flag(7 - 1)] = \"ReadOnly\";\n /**\n * If set, do not allow the annotation to be deleted or its properties\n * (including position and size) to be modified by the user. However, this\n * flag does not restrict changes to the annotation’s contents, such as the\n * value of a form field.\n */\n AnnotationFlags[AnnotationFlags[\"Locked\"] = flag(8 - 1)] = \"Locked\";\n /**\n * If set, invert the interpretation of the NoView flag for certain events.\n *\n * A typical use is to have an annotation that appears only when a mouse\n * cursor is held over it.\n */\n AnnotationFlags[AnnotationFlags[\"ToggleNoView\"] = flag(9 - 1)] = \"ToggleNoView\";\n /**\n * If set, do not allow the contents of the annotation to be modified by the\n * user. This flag does not restrict deletion of the annotation or changes to\n * other annotation properties, such as position and size.\n */\n AnnotationFlags[AnnotationFlags[\"LockedContents\"] = flag(10 - 1)] = \"LockedContents\";\n})(AnnotationFlags || (AnnotationFlags = {}));\n//# sourceMappingURL=flags.js.map","import { PDFName, PDFNumber } from \"../core\";\nexport var asPDFName = function (name) {\n return name instanceof PDFName ? name : PDFName.of(name);\n};\nexport var asPDFNumber = function (num) {\n return num instanceof PDFNumber ? num : PDFNumber.of(num);\n};\nexport var asNumber = function (num) {\n return num instanceof PDFNumber ? num.asNumber() : num;\n};\n//# sourceMappingURL=objects.js.map","import { assertIs, error } from \"../utils\";\nexport var RotationTypes;\n(function (RotationTypes) {\n RotationTypes[\"Degrees\"] = \"degrees\";\n RotationTypes[\"Radians\"] = \"radians\";\n})(RotationTypes || (RotationTypes = {}));\nexport var radians = function (radianAngle) {\n assertIs(radianAngle, 'radianAngle', ['number']);\n return { type: RotationTypes.Radians, angle: radianAngle };\n};\nexport var degrees = function (degreeAngle) {\n assertIs(degreeAngle, 'degreeAngle', ['number']);\n return { type: RotationTypes.Degrees, angle: degreeAngle };\n};\nvar Radians = RotationTypes.Radians, Degrees = RotationTypes.Degrees;\nexport var degreesToRadians = function (degree) { return (degree * Math.PI) / 180; };\nexport var radiansToDegrees = function (radian) { return (radian * 180) / Math.PI; };\n// prettier-ignore\nexport var toRadians = function (rotation) {\n return rotation.type === Radians ? rotation.angle\n : rotation.type === Degrees ? degreesToRadians(rotation.angle)\n : error(\"Invalid rotation: \" + JSON.stringify(rotation));\n};\n// prettier-ignore\nexport var toDegrees = function (rotation) {\n return rotation.type === Radians ? radiansToDegrees(rotation.angle)\n : rotation.type === Degrees ? rotation.angle\n : error(\"Invalid rotation: \" + JSON.stringify(rotation));\n};\nexport var reduceRotation = function (degreeAngle) {\n if (degreeAngle === void 0) { degreeAngle = 0; }\n var quadrants = (degreeAngle / 90) % 4;\n if (quadrants === 0)\n return 0;\n if (quadrants === 1)\n return 90;\n if (quadrants === 2)\n return 180;\n if (quadrants === 3)\n return 270;\n return 0; // `degreeAngle` is not a multiple of 90\n};\nexport var adjustDimsForRotation = function (dims, degreeAngle) {\n if (degreeAngle === void 0) { degreeAngle = 0; }\n var rotation = reduceRotation(degreeAngle);\n return rotation === 90 || rotation === 270\n ? { width: dims.height, height: dims.width }\n : { width: dims.width, height: dims.height };\n};\nexport var rotateRectangle = function (rectangle, borderWidth, degreeAngle) {\n if (borderWidth === void 0) { borderWidth = 0; }\n if (degreeAngle === void 0) { degreeAngle = 0; }\n var x = rectangle.x, y = rectangle.y, w = rectangle.width, h = rectangle.height;\n var r = reduceRotation(degreeAngle);\n var b = borderWidth / 2;\n // prettier-ignore\n if (r === 0)\n return { x: x - b, y: y - b, width: w, height: h };\n else if (r === 90)\n return { x: x - h + b, y: y - b, width: h, height: w };\n else if (r === 180)\n return { x: x - w + b, y: y - h + b, width: w, height: h };\n else if (r === 270)\n return { x: x - b, y: y - w + b, width: h, height: w };\n else\n return { x: x - b, y: y - b, width: w, height: h };\n};\n//# sourceMappingURL=rotations.js.map","import { asNumber, asPDFName, asPDFNumber } from \"./objects\";\nimport { degreesToRadians } from \"./rotations\";\nimport { PDFOperator, PDFOperatorNames as Ops, } from \"../core\";\n/* ==================== Clipping Path Operators ==================== */\nexport var clip = function () { return PDFOperator.of(Ops.ClipNonZero); };\nexport var clipEvenOdd = function () { return PDFOperator.of(Ops.ClipEvenOdd); };\n/* ==================== Graphics State Operators ==================== */\nvar cos = Math.cos, sin = Math.sin, tan = Math.tan;\nexport var concatTransformationMatrix = function (a, b, c, d, e, f) {\n return PDFOperator.of(Ops.ConcatTransformationMatrix, [\n asPDFNumber(a),\n asPDFNumber(b),\n asPDFNumber(c),\n asPDFNumber(d),\n asPDFNumber(e),\n asPDFNumber(f),\n ]);\n};\nexport var translate = function (xPos, yPos) {\n return concatTransformationMatrix(1, 0, 0, 1, xPos, yPos);\n};\nexport var scale = function (xPos, yPos) {\n return concatTransformationMatrix(xPos, 0, 0, yPos, 0, 0);\n};\nexport var rotateRadians = function (angle) {\n return concatTransformationMatrix(cos(asNumber(angle)), sin(asNumber(angle)), -sin(asNumber(angle)), cos(asNumber(angle)), 0, 0);\n};\nexport var rotateDegrees = function (angle) {\n return rotateRadians(degreesToRadians(asNumber(angle)));\n};\nexport var skewRadians = function (xSkewAngle, ySkewAngle) {\n return concatTransformationMatrix(1, tan(asNumber(xSkewAngle)), tan(asNumber(ySkewAngle)), 1, 0, 0);\n};\nexport var skewDegrees = function (xSkewAngle, ySkewAngle) {\n return skewRadians(degreesToRadians(asNumber(xSkewAngle)), degreesToRadians(asNumber(ySkewAngle)));\n};\nexport var setDashPattern = function (dashArray, dashPhase) {\n return PDFOperator.of(Ops.SetLineDashPattern, [\n \"[\" + dashArray.map(asPDFNumber).join(' ') + \"]\",\n asPDFNumber(dashPhase),\n ]);\n};\nexport var restoreDashPattern = function () { return setDashPattern([], 0); };\nexport var LineCapStyle;\n(function (LineCapStyle) {\n LineCapStyle[LineCapStyle[\"Butt\"] = 0] = \"Butt\";\n LineCapStyle[LineCapStyle[\"Round\"] = 1] = \"Round\";\n LineCapStyle[LineCapStyle[\"Projecting\"] = 2] = \"Projecting\";\n})(LineCapStyle || (LineCapStyle = {}));\nexport var setLineCap = function (style) {\n return PDFOperator.of(Ops.SetLineCapStyle, [asPDFNumber(style)]);\n};\nexport var LineJoinStyle;\n(function (LineJoinStyle) {\n LineJoinStyle[LineJoinStyle[\"Miter\"] = 0] = \"Miter\";\n LineJoinStyle[LineJoinStyle[\"Round\"] = 1] = \"Round\";\n LineJoinStyle[LineJoinStyle[\"Bevel\"] = 2] = \"Bevel\";\n})(LineJoinStyle || (LineJoinStyle = {}));\nexport var setLineJoin = function (style) {\n return PDFOperator.of(Ops.SetLineJoinStyle, [asPDFNumber(style)]);\n};\nexport var setGraphicsState = function (state) {\n return PDFOperator.of(Ops.SetGraphicsStateParams, [asPDFName(state)]);\n};\nexport var pushGraphicsState = function () { return PDFOperator.of(Ops.PushGraphicsState); };\nexport var popGraphicsState = function () { return PDFOperator.of(Ops.PopGraphicsState); };\nexport var setLineWidth = function (width) {\n return PDFOperator.of(Ops.SetLineWidth, [asPDFNumber(width)]);\n};\n/* ==================== Path Construction Operators ==================== */\nexport var appendBezierCurve = function (x1, y1, x2, y2, x3, y3) {\n return PDFOperator.of(Ops.AppendBezierCurve, [\n asPDFNumber(x1),\n asPDFNumber(y1),\n asPDFNumber(x2),\n asPDFNumber(y2),\n asPDFNumber(x3),\n asPDFNumber(y3),\n ]);\n};\nexport var appendQuadraticCurve = function (x1, y1, x2, y2) {\n return PDFOperator.of(Ops.CurveToReplicateInitialPoint, [\n asPDFNumber(x1),\n asPDFNumber(y1),\n asPDFNumber(x2),\n asPDFNumber(y2),\n ]);\n};\nexport var closePath = function () { return PDFOperator.of(Ops.ClosePath); };\nexport var moveTo = function (xPos, yPos) {\n return PDFOperator.of(Ops.MoveTo, [asPDFNumber(xPos), asPDFNumber(yPos)]);\n};\nexport var lineTo = function (xPos, yPos) {\n return PDFOperator.of(Ops.LineTo, [asPDFNumber(xPos), asPDFNumber(yPos)]);\n};\n/**\n * @param xPos x coordinate for the lower left corner of the rectangle\n * @param yPos y coordinate for the lower left corner of the rectangle\n * @param width width of the rectangle\n * @param height height of the rectangle\n */\nexport var rectangle = function (xPos, yPos, width, height) {\n return PDFOperator.of(Ops.AppendRectangle, [\n asPDFNumber(xPos),\n asPDFNumber(yPos),\n asPDFNumber(width),\n asPDFNumber(height),\n ]);\n};\n/**\n * @param xPos x coordinate for the lower left corner of the square\n * @param yPos y coordinate for the lower left corner of the square\n * @param size width and height of the square\n */\nexport var square = function (xPos, yPos, size) {\n return rectangle(xPos, yPos, size, size);\n};\n/* ==================== Path Painting Operators ==================== */\nexport var stroke = function () { return PDFOperator.of(Ops.StrokePath); };\nexport var fill = function () { return PDFOperator.of(Ops.FillNonZero); };\nexport var fillAndStroke = function () { return PDFOperator.of(Ops.FillNonZeroAndStroke); };\nexport var endPath = function () { return PDFOperator.of(Ops.EndPath); };\n/* ==================== Text Positioning Operators ==================== */\nexport var nextLine = function () { return PDFOperator.of(Ops.NextLine); };\nexport var moveText = function (x, y) {\n return PDFOperator.of(Ops.MoveText, [asPDFNumber(x), asPDFNumber(y)]);\n};\n/* ==================== Text Showing Operators ==================== */\nexport var showText = function (text) {\n return PDFOperator.of(Ops.ShowText, [text]);\n};\n/* ==================== Text State Operators ==================== */\nexport var beginText = function () { return PDFOperator.of(Ops.BeginText); };\nexport var endText = function () { return PDFOperator.of(Ops.EndText); };\nexport var setFontAndSize = function (name, size) { return PDFOperator.of(Ops.SetFontAndSize, [asPDFName(name), asPDFNumber(size)]); };\nexport var setCharacterSpacing = function (spacing) {\n return PDFOperator.of(Ops.SetCharacterSpacing, [asPDFNumber(spacing)]);\n};\nexport var setWordSpacing = function (spacing) {\n return PDFOperator.of(Ops.SetWordSpacing, [asPDFNumber(spacing)]);\n};\n/** @param squeeze horizontal character spacing */\nexport var setCharacterSqueeze = function (squeeze) {\n return PDFOperator.of(Ops.SetTextHorizontalScaling, [asPDFNumber(squeeze)]);\n};\nexport var setLineHeight = function (lineHeight) {\n return PDFOperator.of(Ops.SetTextLineHeight, [asPDFNumber(lineHeight)]);\n};\nexport var setTextRise = function (rise) {\n return PDFOperator.of(Ops.SetTextRise, [asPDFNumber(rise)]);\n};\nexport var TextRenderingMode;\n(function (TextRenderingMode) {\n TextRenderingMode[TextRenderingMode[\"Fill\"] = 0] = \"Fill\";\n TextRenderingMode[TextRenderingMode[\"Outline\"] = 1] = \"Outline\";\n TextRenderingMode[TextRenderingMode[\"FillAndOutline\"] = 2] = \"FillAndOutline\";\n TextRenderingMode[TextRenderingMode[\"Invisible\"] = 3] = \"Invisible\";\n TextRenderingMode[TextRenderingMode[\"FillAndClip\"] = 4] = \"FillAndClip\";\n TextRenderingMode[TextRenderingMode[\"OutlineAndClip\"] = 5] = \"OutlineAndClip\";\n TextRenderingMode[TextRenderingMode[\"FillAndOutlineAndClip\"] = 6] = \"FillAndOutlineAndClip\";\n TextRenderingMode[TextRenderingMode[\"Clip\"] = 7] = \"Clip\";\n})(TextRenderingMode || (TextRenderingMode = {}));\nexport var setTextRenderingMode = function (mode) {\n return PDFOperator.of(Ops.SetTextRenderingMode, [asPDFNumber(mode)]);\n};\nexport var setTextMatrix = function (a, b, c, d, e, f) {\n return PDFOperator.of(Ops.SetTextMatrix, [\n asPDFNumber(a),\n asPDFNumber(b),\n asPDFNumber(c),\n asPDFNumber(d),\n asPDFNumber(e),\n asPDFNumber(f),\n ]);\n};\nexport var rotateAndSkewTextRadiansAndTranslate = function (rotationAngle, xSkewAngle, ySkewAngle, x, y) {\n return setTextMatrix(cos(asNumber(rotationAngle)), sin(asNumber(rotationAngle)) + tan(asNumber(xSkewAngle)), -sin(asNumber(rotationAngle)) + tan(asNumber(ySkewAngle)), cos(asNumber(rotationAngle)), x, y);\n};\nexport var rotateAndSkewTextDegreesAndTranslate = function (rotationAngle, xSkewAngle, ySkewAngle, x, y) {\n return rotateAndSkewTextRadiansAndTranslate(degreesToRadians(asNumber(rotationAngle)), degreesToRadians(asNumber(xSkewAngle)), degreesToRadians(asNumber(ySkewAngle)), x, y);\n};\n/* ==================== XObject Operator ==================== */\nexport var drawObject = function (name) {\n return PDFOperator.of(Ops.DrawObject, [asPDFName(name)]);\n};\n/* ==================== Color Operators ==================== */\nexport var setFillingGrayscaleColor = function (gray) {\n return PDFOperator.of(Ops.NonStrokingColorGray, [asPDFNumber(gray)]);\n};\nexport var setStrokingGrayscaleColor = function (gray) {\n return PDFOperator.of(Ops.StrokingColorGray, [asPDFNumber(gray)]);\n};\nexport var setFillingRgbColor = function (red, green, blue) {\n return PDFOperator.of(Ops.NonStrokingColorRgb, [\n asPDFNumber(red),\n asPDFNumber(green),\n asPDFNumber(blue),\n ]);\n};\nexport var setStrokingRgbColor = function (red, green, blue) {\n return PDFOperator.of(Ops.StrokingColorRgb, [\n asPDFNumber(red),\n asPDFNumber(green),\n asPDFNumber(blue),\n ]);\n};\nexport var setFillingCmykColor = function (cyan, magenta, yellow, key) {\n return PDFOperator.of(Ops.NonStrokingColorCmyk, [\n asPDFNumber(cyan),\n asPDFNumber(magenta),\n asPDFNumber(yellow),\n asPDFNumber(key),\n ]);\n};\nexport var setStrokingCmykColor = function (cyan, magenta, yellow, key) {\n return PDFOperator.of(Ops.StrokingColorCmyk, [\n asPDFNumber(cyan),\n asPDFNumber(magenta),\n asPDFNumber(yellow),\n asPDFNumber(key),\n ]);\n};\n/* ==================== Marked Content Operators ==================== */\nexport var beginMarkedContent = function (tag) {\n return PDFOperator.of(Ops.BeginMarkedContent, [asPDFName(tag)]);\n};\nexport var endMarkedContent = function () { return PDFOperator.of(Ops.EndMarkedContent); };\n//# sourceMappingURL=operators.js.map","import { setFillingCmykColor, setFillingGrayscaleColor, setFillingRgbColor, setStrokingCmykColor, setStrokingGrayscaleColor, setStrokingRgbColor, } from \"./operators\";\nimport { assertRange, error } from \"../utils\";\nexport var ColorTypes;\n(function (ColorTypes) {\n ColorTypes[\"Grayscale\"] = \"Grayscale\";\n ColorTypes[\"RGB\"] = \"RGB\";\n ColorTypes[\"CMYK\"] = \"CMYK\";\n})(ColorTypes || (ColorTypes = {}));\nexport var grayscale = function (gray) {\n assertRange(gray, 'gray', 0.0, 1.0);\n return { type: ColorTypes.Grayscale, gray: gray };\n};\nexport var rgb = function (red, green, blue) {\n assertRange(red, 'red', 0, 1);\n assertRange(green, 'green', 0, 1);\n assertRange(blue, 'blue', 0, 1);\n return { type: ColorTypes.RGB, red: red, green: green, blue: blue };\n};\nexport var cmyk = function (cyan, magenta, yellow, key) {\n assertRange(cyan, 'cyan', 0, 1);\n assertRange(magenta, 'magenta', 0, 1);\n assertRange(yellow, 'yellow', 0, 1);\n assertRange(key, 'key', 0, 1);\n return { type: ColorTypes.CMYK, cyan: cyan, magenta: magenta, yellow: yellow, key: key };\n};\nvar Grayscale = ColorTypes.Grayscale, RGB = ColorTypes.RGB, CMYK = ColorTypes.CMYK;\n// prettier-ignore\nexport var setFillingColor = function (color) {\n return color.type === Grayscale ? setFillingGrayscaleColor(color.gray)\n : color.type === RGB ? setFillingRgbColor(color.red, color.green, color.blue)\n : color.type === CMYK ? setFillingCmykColor(color.cyan, color.magenta, color.yellow, color.key)\n : error(\"Invalid color: \" + JSON.stringify(color));\n};\n// prettier-ignore\nexport var setStrokingColor = function (color) {\n return color.type === Grayscale ? setStrokingGrayscaleColor(color.gray)\n : color.type === RGB ? setStrokingRgbColor(color.red, color.green, color.blue)\n : color.type === CMYK ? setStrokingCmykColor(color.cyan, color.magenta, color.yellow, color.key)\n : error(\"Invalid color: \" + JSON.stringify(color));\n};\n// prettier-ignore\nexport var componentsToColor = function (comps, scale) {\n if (scale === void 0) { scale = 1; }\n return ((comps === null || comps === void 0 ? void 0 : comps.length) === 1 ? grayscale(comps[0] * scale)\n : (comps === null || comps === void 0 ? void 0 : comps.length) === 3 ? rgb(comps[0] * scale, comps[1] * scale, comps[2] * scale)\n : (comps === null || comps === void 0 ? void 0 : comps.length) === 4 ? cmyk(comps[0] * scale, comps[1] * scale, comps[2] * scale, comps[3] * scale)\n : undefined);\n};\n// prettier-ignore\nexport var colorToComponents = function (color) {\n return color.type === Grayscale ? [color.gray]\n : color.type === RGB ? [color.red, color.green, color.blue]\n : color.type === CMYK ? [color.cyan, color.magenta, color.yellow, color.key]\n : error(\"Invalid color: \" + JSON.stringify(color));\n};\n//# sourceMappingURL=colors.js.map","// Originated from pdfkit Copyright (c) 2014 Devon Govett\n// https://github.com/foliojs/pdfkit/blob/1e62e6ffe24b378eb890df507a47610f4c4a7b24/lib/path.js\n// MIT LICENSE\n// Updated for pdf-lib & TypeScript by Jeremy Messenger\nimport { appendBezierCurve, appendQuadraticCurve, closePath, lineTo, moveTo, } from \"./operators\";\nvar cx = 0;\nvar cy = 0;\nvar px = 0;\nvar py = 0;\nvar sx = 0;\nvar sy = 0;\nvar parameters = new Map([\n ['A', 7],\n ['a', 7],\n ['C', 6],\n ['c', 6],\n ['H', 1],\n ['h', 1],\n ['L', 2],\n ['l', 2],\n ['M', 2],\n ['m', 2],\n ['Q', 4],\n ['q', 4],\n ['S', 4],\n ['s', 4],\n ['T', 2],\n ['t', 2],\n ['V', 1],\n ['v', 1],\n ['Z', 0],\n ['z', 0],\n]);\nvar parse = function (path) {\n var cmd;\n var ret = [];\n var args = [];\n var curArg = '';\n var foundDecimal = false;\n var params = 0;\n for (var _i = 0, path_1 = path; _i < path_1.length; _i++) {\n var c = path_1[_i];\n if (parameters.has(c)) {\n params = parameters.get(c);\n if (cmd) {\n // save existing command\n if (curArg.length > 0) {\n args[args.length] = +curArg;\n }\n ret[ret.length] = { cmd: cmd, args: args };\n args = [];\n curArg = '';\n foundDecimal = false;\n }\n cmd = c;\n }\n else if ([' ', ','].includes(c) ||\n (c === '-' && curArg.length > 0 && curArg[curArg.length - 1] !== 'e') ||\n (c === '.' && foundDecimal)) {\n if (curArg.length === 0) {\n continue;\n }\n if (args.length === params) {\n // handle reused commands\n ret[ret.length] = { cmd: cmd, args: args };\n args = [+curArg];\n // handle assumed commands\n if (cmd === 'M') {\n cmd = 'L';\n }\n if (cmd === 'm') {\n cmd = 'l';\n }\n }\n else {\n args[args.length] = +curArg;\n }\n foundDecimal = c === '.';\n // fix for negative numbers or repeated decimals with no delimeter between commands\n curArg = ['-', '.'].includes(c) ? c : '';\n }\n else {\n curArg += c;\n if (c === '.') {\n foundDecimal = true;\n }\n }\n }\n // add the last command\n if (curArg.length > 0) {\n if (args.length === params) {\n // handle reused commands\n ret[ret.length] = { cmd: cmd, args: args };\n args = [+curArg];\n // handle assumed commands\n if (cmd === 'M') {\n cmd = 'L';\n }\n if (cmd === 'm') {\n cmd = 'l';\n }\n }\n else {\n args[args.length] = +curArg;\n }\n }\n ret[ret.length] = { cmd: cmd, args: args };\n return ret;\n};\nvar apply = function (commands) {\n // current point, control point, and subpath starting point\n cx = cy = px = py = sx = sy = 0;\n // run the commands\n var cmds = [];\n for (var i = 0; i < commands.length; i++) {\n var c = commands[i];\n if (c.cmd && typeof runners[c.cmd] === 'function') {\n var cmd = runners[c.cmd](c.args);\n if (Array.isArray(cmd)) {\n cmds = cmds.concat(cmd);\n }\n else {\n cmds.push(cmd);\n }\n }\n }\n return cmds;\n};\nvar runners = {\n M: function (a) {\n cx = a[0];\n cy = a[1];\n px = py = null;\n sx = cx;\n sy = cy;\n return moveTo(cx, cy);\n },\n m: function (a) {\n cx += a[0];\n cy += a[1];\n px = py = null;\n sx = cx;\n sy = cy;\n return moveTo(cx, cy);\n },\n C: function (a) {\n cx = a[4];\n cy = a[5];\n px = a[2];\n py = a[3];\n return appendBezierCurve(a[0], a[1], a[2], a[3], a[4], a[5]);\n },\n c: function (a) {\n var cmd = appendBezierCurve(a[0] + cx, a[1] + cy, a[2] + cx, a[3] + cy, a[4] + cx, a[5] + cy);\n px = cx + a[2];\n py = cy + a[3];\n cx += a[4];\n cy += a[5];\n return cmd;\n },\n S: function (a) {\n if (px === null || py === null) {\n px = cx;\n py = cy;\n }\n var cmd = appendBezierCurve(cx - (px - cx), cy - (py - cy), a[0], a[1], a[2], a[3]);\n px = a[0];\n py = a[1];\n cx = a[2];\n cy = a[3];\n return cmd;\n },\n s: function (a) {\n if (px === null || py === null) {\n px = cx;\n py = cy;\n }\n var cmd = appendBezierCurve(cx - (px - cx), cy - (py - cy), cx + a[0], cy + a[1], cx + a[2], cy + a[3]);\n px = cx + a[0];\n py = cy + a[1];\n cx += a[2];\n cy += a[3];\n return cmd;\n },\n Q: function (a) {\n px = a[0];\n py = a[1];\n cx = a[2];\n cy = a[3];\n return appendQuadraticCurve(a[0], a[1], cx, cy);\n },\n q: function (a) {\n var cmd = appendQuadraticCurve(a[0] + cx, a[1] + cy, a[2] + cx, a[3] + cy);\n px = cx + a[0];\n py = cy + a[1];\n cx += a[2];\n cy += a[3];\n return cmd;\n },\n T: function (a) {\n if (px === null || py === null) {\n px = cx;\n py = cy;\n }\n else {\n px = cx - (px - cx);\n py = cy - (py - cy);\n }\n var cmd = appendQuadraticCurve(px, py, a[0], a[1]);\n px = cx - (px - cx);\n py = cy - (py - cy);\n cx = a[0];\n cy = a[1];\n return cmd;\n },\n t: function (a) {\n if (px === null || py === null) {\n px = cx;\n py = cy;\n }\n else {\n px = cx - (px - cx);\n py = cy - (py - cy);\n }\n var cmd = appendQuadraticCurve(px, py, cx + a[0], cy + a[1]);\n cx += a[0];\n cy += a[1];\n return cmd;\n },\n A: function (a) {\n var cmds = solveArc(cx, cy, a);\n cx = a[5];\n cy = a[6];\n return cmds;\n },\n a: function (a) {\n a[5] += cx;\n a[6] += cy;\n var cmds = solveArc(cx, cy, a);\n cx = a[5];\n cy = a[6];\n return cmds;\n },\n L: function (a) {\n cx = a[0];\n cy = a[1];\n px = py = null;\n return lineTo(cx, cy);\n },\n l: function (a) {\n cx += a[0];\n cy += a[1];\n px = py = null;\n return lineTo(cx, cy);\n },\n H: function (a) {\n cx = a[0];\n px = py = null;\n return lineTo(cx, cy);\n },\n h: function (a) {\n cx += a[0];\n px = py = null;\n return lineTo(cx, cy);\n },\n V: function (a) {\n cy = a[0];\n px = py = null;\n return lineTo(cx, cy);\n },\n v: function (a) {\n cy += a[0];\n px = py = null;\n return lineTo(cx, cy);\n },\n Z: function () {\n var cmd = closePath();\n cx = sx;\n cy = sy;\n return cmd;\n },\n z: function () {\n var cmd = closePath();\n cx = sx;\n cy = sy;\n return cmd;\n },\n};\nvar solveArc = function (x, y, coords) {\n var rx = coords[0], ry = coords[1], rot = coords[2], large = coords[3], sweep = coords[4], ex = coords[5], ey = coords[6];\n var segs = arcToSegments(ex, ey, rx, ry, large, sweep, rot, x, y);\n var cmds = [];\n for (var _i = 0, segs_1 = segs; _i < segs_1.length; _i++) {\n var seg = segs_1[_i];\n var bez = segmentToBezier.apply(void 0, seg);\n cmds.push(appendBezierCurve.apply(void 0, bez));\n }\n return cmds;\n};\n// from Inkscape svgtopdf, thanks!\nvar arcToSegments = function (x, y, rx, ry, large, sweep, rotateX, ox, oy) {\n var th = rotateX * (Math.PI / 180);\n var sinTh = Math.sin(th);\n var cosTh = Math.cos(th);\n rx = Math.abs(rx);\n ry = Math.abs(ry);\n px = cosTh * (ox - x) * 0.5 + sinTh * (oy - y) * 0.5;\n py = cosTh * (oy - y) * 0.5 - sinTh * (ox - x) * 0.5;\n var pl = (px * px) / (rx * rx) + (py * py) / (ry * ry);\n if (pl > 1) {\n pl = Math.sqrt(pl);\n rx *= pl;\n ry *= pl;\n }\n var a00 = cosTh / rx;\n var a01 = sinTh / rx;\n var a10 = -sinTh / ry;\n var a11 = cosTh / ry;\n var x0 = a00 * ox + a01 * oy;\n var y0 = a10 * ox + a11 * oy;\n var x1 = a00 * x + a01 * y;\n var y1 = a10 * x + a11 * y;\n var d = (x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0);\n var sfactorSq = 1 / d - 0.25;\n if (sfactorSq < 0) {\n sfactorSq = 0;\n }\n var sfactor = Math.sqrt(sfactorSq);\n if (sweep === large) {\n sfactor = -sfactor;\n }\n var xc = 0.5 * (x0 + x1) - sfactor * (y1 - y0);\n var yc = 0.5 * (y0 + y1) + sfactor * (x1 - x0);\n var th0 = Math.atan2(y0 - yc, x0 - xc);\n var th1 = Math.atan2(y1 - yc, x1 - xc);\n var thArc = th1 - th0;\n if (thArc < 0 && sweep === 1) {\n thArc += 2 * Math.PI;\n }\n else if (thArc > 0 && sweep === 0) {\n thArc -= 2 * Math.PI;\n }\n var segments = Math.ceil(Math.abs(thArc / (Math.PI * 0.5 + 0.001)));\n var result = [];\n for (var i = 0; i < segments; i++) {\n var th2 = th0 + (i * thArc) / segments;\n var th3 = th0 + ((i + 1) * thArc) / segments;\n result[i] = [xc, yc, th2, th3, rx, ry, sinTh, cosTh];\n }\n return result;\n};\nvar segmentToBezier = function (cx1, cy1, th0, th1, rx, ry, sinTh, cosTh) {\n var a00 = cosTh * rx;\n var a01 = -sinTh * ry;\n var a10 = sinTh * rx;\n var a11 = cosTh * ry;\n var thHalf = 0.5 * (th1 - th0);\n var t = ((8 / 3) * Math.sin(thHalf * 0.5) * Math.sin(thHalf * 0.5)) /\n Math.sin(thHalf);\n var x1 = cx1 + Math.cos(th0) - t * Math.sin(th0);\n var y1 = cy1 + Math.sin(th0) + t * Math.cos(th0);\n var x3 = cx1 + Math.cos(th1);\n var y3 = cy1 + Math.sin(th1);\n var x2 = x3 + t * Math.sin(th1);\n var y2 = y3 - t * Math.cos(th1);\n var result = [\n a00 * x1 + a01 * y1,\n a10 * x1 + a11 * y1,\n a00 * x2 + a01 * y2,\n a10 * x2 + a11 * y2,\n a00 * x3 + a01 * y3,\n a10 * x3 + a11 * y3,\n ];\n return result;\n};\nexport var svgPathToOperators = function (path) { return apply(parse(path)); };\n//# sourceMappingURL=svgPath.js.map","import { __spreadArrays } from \"tslib\";\nimport { setFillingColor, setStrokingColor } from \"./colors\";\nimport { beginText, closePath, drawObject, endText, fill, fillAndStroke, lineTo, moveTo, nextLine, popGraphicsState, pushGraphicsState, rotateAndSkewTextRadiansAndTranslate, rotateRadians, scale, setFontAndSize, setLineHeight, setLineWidth, showText, skewRadians, stroke, translate, setLineCap, rotateDegrees, setGraphicsState, setDashPattern, beginMarkedContent, endMarkedContent, clip, endPath, appendBezierCurve, } from \"./operators\";\nimport { degrees, toRadians } from \"./rotations\";\nimport { svgPathToOperators } from \"./svgPath\";\nimport { asNumber } from \"./objects\";\nexport var drawText = function (line, options) {\n return [\n pushGraphicsState(),\n options.graphicsState && setGraphicsState(options.graphicsState),\n beginText(),\n setFillingColor(options.color),\n setFontAndSize(options.font, options.size),\n rotateAndSkewTextRadiansAndTranslate(toRadians(options.rotate), toRadians(options.xSkew), toRadians(options.ySkew), options.x, options.y),\n showText(line),\n endText(),\n popGraphicsState(),\n ].filter(Boolean);\n};\nexport var drawLinesOfText = function (lines, options) {\n var operators = [\n pushGraphicsState(),\n options.graphicsState && setGraphicsState(options.graphicsState),\n beginText(),\n setFillingColor(options.color),\n setFontAndSize(options.font, options.size),\n setLineHeight(options.lineHeight),\n rotateAndSkewTextRadiansAndTranslate(toRadians(options.rotate), toRadians(options.xSkew), toRadians(options.ySkew), options.x, options.y),\n ].filter(Boolean);\n for (var idx = 0, len = lines.length; idx < len; idx++) {\n operators.push(showText(lines[idx]), nextLine());\n }\n operators.push(endText(), popGraphicsState());\n return operators;\n};\nexport var drawImage = function (name, options) {\n return [\n pushGraphicsState(),\n options.graphicsState && setGraphicsState(options.graphicsState),\n translate(options.x, options.y),\n rotateRadians(toRadians(options.rotate)),\n scale(options.width, options.height),\n skewRadians(toRadians(options.xSkew), toRadians(options.ySkew)),\n drawObject(name),\n popGraphicsState(),\n ].filter(Boolean);\n};\nexport var drawPage = function (name, options) {\n return [\n pushGraphicsState(),\n options.graphicsState && setGraphicsState(options.graphicsState),\n translate(options.x, options.y),\n rotateRadians(toRadians(options.rotate)),\n scale(options.xScale, options.yScale),\n skewRadians(toRadians(options.xSkew), toRadians(options.ySkew)),\n drawObject(name),\n popGraphicsState(),\n ].filter(Boolean);\n};\nexport var drawLine = function (options) {\n var _a, _b;\n return [\n pushGraphicsState(),\n options.graphicsState && setGraphicsState(options.graphicsState),\n options.color && setStrokingColor(options.color),\n setLineWidth(options.thickness),\n setDashPattern((_a = options.dashArray) !== null && _a !== void 0 ? _a : [], (_b = options.dashPhase) !== null && _b !== void 0 ? _b : 0),\n moveTo(options.start.x, options.start.y),\n options.lineCap && setLineCap(options.lineCap),\n moveTo(options.start.x, options.start.y),\n lineTo(options.end.x, options.end.y),\n stroke(),\n popGraphicsState(),\n ].filter(Boolean);\n};\nexport var drawRectangle = function (options) {\n var _a, _b;\n return [\n pushGraphicsState(),\n options.graphicsState && setGraphicsState(options.graphicsState),\n options.color && setFillingColor(options.color),\n options.borderColor && setStrokingColor(options.borderColor),\n setLineWidth(options.borderWidth),\n options.borderLineCap && setLineCap(options.borderLineCap),\n setDashPattern((_a = options.borderDashArray) !== null && _a !== void 0 ? _a : [], (_b = options.borderDashPhase) !== null && _b !== void 0 ? _b : 0),\n translate(options.x, options.y),\n rotateRadians(toRadians(options.rotate)),\n skewRadians(toRadians(options.xSkew), toRadians(options.ySkew)),\n moveTo(0, 0),\n lineTo(0, options.height),\n lineTo(options.width, options.height),\n lineTo(options.width, 0),\n closePath(),\n // prettier-ignore\n options.color && options.borderWidth ? fillAndStroke()\n : options.color ? fill()\n : options.borderColor ? stroke()\n : closePath(),\n popGraphicsState(),\n ].filter(Boolean);\n};\nvar KAPPA = 4.0 * ((Math.sqrt(2) - 1.0) / 3.0);\n/** @deprecated */\nexport var drawEllipsePath = function (config) {\n var x = asNumber(config.x);\n var y = asNumber(config.y);\n var xScale = asNumber(config.xScale);\n var yScale = asNumber(config.yScale);\n x -= xScale;\n y -= yScale;\n var ox = xScale * KAPPA;\n var oy = yScale * KAPPA;\n var xe = x + xScale * 2;\n var ye = y + yScale * 2;\n var xm = x + xScale;\n var ym = y + yScale;\n return [\n pushGraphicsState(),\n moveTo(x, ym),\n appendBezierCurve(x, ym - oy, xm - ox, y, xm, y),\n appendBezierCurve(xm + ox, y, xe, ym - oy, xe, ym),\n appendBezierCurve(xe, ym + oy, xm + ox, ye, xm, ye),\n appendBezierCurve(xm - ox, ye, x, ym + oy, x, ym),\n popGraphicsState(),\n ];\n};\nvar drawEllipseCurves = function (config) {\n var centerX = asNumber(config.x);\n var centerY = asNumber(config.y);\n var xScale = asNumber(config.xScale);\n var yScale = asNumber(config.yScale);\n var x = -xScale;\n var y = -yScale;\n var ox = xScale * KAPPA;\n var oy = yScale * KAPPA;\n var xe = x + xScale * 2;\n var ye = y + yScale * 2;\n var xm = x + xScale;\n var ym = y + yScale;\n return [\n translate(centerX, centerY),\n rotateRadians(toRadians(config.rotate)),\n moveTo(x, ym),\n appendBezierCurve(x, ym - oy, xm - ox, y, xm, y),\n appendBezierCurve(xm + ox, y, xe, ym - oy, xe, ym),\n appendBezierCurve(xe, ym + oy, xm + ox, ye, xm, ye),\n appendBezierCurve(xm - ox, ye, x, ym + oy, x, ym),\n ];\n};\nexport var drawEllipse = function (options) {\n var _a, _b, _c;\n return __spreadArrays([\n pushGraphicsState(),\n options.graphicsState && setGraphicsState(options.graphicsState),\n options.color && setFillingColor(options.color),\n options.borderColor && setStrokingColor(options.borderColor),\n setLineWidth(options.borderWidth),\n options.borderLineCap && setLineCap(options.borderLineCap),\n setDashPattern((_a = options.borderDashArray) !== null && _a !== void 0 ? _a : [], (_b = options.borderDashPhase) !== null && _b !== void 0 ? _b : 0)\n ], (options.rotate === undefined\n ? drawEllipsePath({\n x: options.x,\n y: options.y,\n xScale: options.xScale,\n yScale: options.yScale,\n })\n : drawEllipseCurves({\n x: options.x,\n y: options.y,\n xScale: options.xScale,\n yScale: options.yScale,\n rotate: (_c = options.rotate) !== null && _c !== void 0 ? _c : degrees(0),\n })), [\n // prettier-ignore\n options.color && options.borderWidth ? fillAndStroke()\n : options.color ? fill()\n : options.borderColor ? stroke()\n : closePath(),\n popGraphicsState(),\n ]).filter(Boolean);\n};\nexport var drawSvgPath = function (path, options) {\n var _a, _b, _c;\n return __spreadArrays([\n pushGraphicsState(),\n options.graphicsState && setGraphicsState(options.graphicsState),\n translate(options.x, options.y),\n rotateRadians(toRadians((_a = options.rotate) !== null && _a !== void 0 ? _a : degrees(0))),\n // SVG path Y axis is opposite pdf-lib's\n options.scale ? scale(options.scale, -options.scale) : scale(1, -1),\n options.color && setFillingColor(options.color),\n options.borderColor && setStrokingColor(options.borderColor),\n options.borderWidth && setLineWidth(options.borderWidth),\n options.borderLineCap && setLineCap(options.borderLineCap),\n setDashPattern((_b = options.borderDashArray) !== null && _b !== void 0 ? _b : [], (_c = options.borderDashPhase) !== null && _c !== void 0 ? _c : 0)\n ], svgPathToOperators(path), [\n // prettier-ignore\n options.color && options.borderWidth ? fillAndStroke()\n : options.color ? fill()\n : options.borderColor ? stroke()\n : closePath(),\n popGraphicsState(),\n ]).filter(Boolean);\n};\nexport var drawCheckMark = function (options) {\n var size = asNumber(options.size);\n /*********************** Define Check Mark Points ***************************/\n // A check mark is defined by three points in some coordinate space. Here, we\n // define these points in a unit coordinate system, where the range of the x\n // and y axis are both [-1, 1].\n //\n // Note that we do not hard code `p1y` in case we wish to change the\n // size/shape of the check mark in the future. We want the check mark to\n // always form a right angle. This means that the dot product between (p1-p2)\n // and (p3-p2) should be zero:\n //\n // (p1x-p2x) * (p3x-p2x) + (p1y-p2y) * (p3y-p2y) = 0\n //\n // We can now rejigger this equation to solve for `p1y`:\n //\n // (p1y-p2y) * (p3y-p2y) = -((p1x-p2x) * (p3x-p2x))\n // (p1y-p2y) = -((p1x-p2x) * (p3x-p2x)) / (p3y-p2y)\n // p1y = -((p1x-p2x) * (p3x-p2x)) / (p3y-p2y) + p2y\n //\n // Thanks to my friend Joel Walker (https://github.com/JWalker1995) for\n // devising the above equation and unit coordinate system approach!\n // (x, y) coords of the check mark's bottommost point\n var p2x = -1 + 0.75;\n var p2y = -1 + 0.51;\n // (x, y) coords of the check mark's topmost point\n var p3y = 1 - 0.525;\n var p3x = 1 - 0.31;\n // (x, y) coords of the check mark's center (vertically) point\n var p1x = -1 + 0.325;\n var p1y = -((p1x - p2x) * (p3x - p2x)) / (p3y - p2y) + p2y;\n /****************************************************************************/\n return [\n pushGraphicsState(),\n options.color && setStrokingColor(options.color),\n setLineWidth(options.thickness),\n translate(options.x, options.y),\n moveTo(p1x * size, p1y * size),\n lineTo(p2x * size, p2y * size),\n lineTo(p3x * size, p3y * size),\n stroke(),\n popGraphicsState(),\n ].filter(Boolean);\n};\n// prettier-ignore\nexport var rotateInPlace = function (options) {\n return options.rotation === 0 ? [\n translate(0, 0),\n rotateDegrees(0)\n ]\n : options.rotation === 90 ? [\n translate(options.width, 0),\n rotateDegrees(90)\n ]\n : options.rotation === 180 ? [\n translate(options.width, options.height),\n rotateDegrees(180)\n ]\n : options.rotation === 270 ? [\n translate(0, options.height),\n rotateDegrees(270)\n ]\n : [];\n}; // Invalid rotation - noop\nexport var drawCheckBox = function (options) {\n var outline = drawRectangle({\n x: options.x,\n y: options.y,\n width: options.width,\n height: options.height,\n borderWidth: options.borderWidth,\n color: options.color,\n borderColor: options.borderColor,\n rotate: degrees(0),\n xSkew: degrees(0),\n ySkew: degrees(0),\n });\n if (!options.filled)\n return outline;\n var width = asNumber(options.width);\n var height = asNumber(options.height);\n var checkMarkSize = Math.min(width, height) / 2;\n var checkMark = drawCheckMark({\n x: width / 2,\n y: height / 2,\n size: checkMarkSize,\n thickness: options.thickness,\n color: options.markColor,\n });\n return __spreadArrays([pushGraphicsState()], outline, checkMark, [popGraphicsState()]);\n};\nexport var drawRadioButton = function (options) {\n var width = asNumber(options.width);\n var height = asNumber(options.height);\n var outlineScale = Math.min(width, height) / 2;\n var outline = drawEllipse({\n x: options.x,\n y: options.y,\n xScale: outlineScale,\n yScale: outlineScale,\n color: options.color,\n borderColor: options.borderColor,\n borderWidth: options.borderWidth,\n });\n if (!options.filled)\n return outline;\n var dot = drawEllipse({\n x: options.x,\n y: options.y,\n xScale: outlineScale * 0.45,\n yScale: outlineScale * 0.45,\n color: options.dotColor,\n borderColor: undefined,\n borderWidth: 0,\n });\n return __spreadArrays([pushGraphicsState()], outline, dot, [popGraphicsState()]);\n};\nexport var drawButton = function (options) {\n var x = asNumber(options.x);\n var y = asNumber(options.y);\n var width = asNumber(options.width);\n var height = asNumber(options.height);\n var background = drawRectangle({\n x: x,\n y: y,\n width: width,\n height: height,\n borderWidth: options.borderWidth,\n color: options.color,\n borderColor: options.borderColor,\n rotate: degrees(0),\n xSkew: degrees(0),\n ySkew: degrees(0),\n });\n var lines = drawTextLines(options.textLines, {\n color: options.textColor,\n font: options.font,\n size: options.fontSize,\n rotate: degrees(0),\n xSkew: degrees(0),\n ySkew: degrees(0),\n });\n return __spreadArrays([pushGraphicsState()], background, lines, [popGraphicsState()]);\n};\nexport var drawTextLines = function (lines, options) {\n var operators = [\n beginText(),\n setFillingColor(options.color),\n setFontAndSize(options.font, options.size),\n ];\n for (var idx = 0, len = lines.length; idx < len; idx++) {\n var _a = lines[idx], encoded = _a.encoded, x = _a.x, y = _a.y;\n operators.push(rotateAndSkewTextRadiansAndTranslate(toRadians(options.rotate), toRadians(options.xSkew), toRadians(options.ySkew), x, y), showText(encoded));\n }\n operators.push(endText());\n return operators;\n};\nexport var drawTextField = function (options) {\n var x = asNumber(options.x);\n var y = asNumber(options.y);\n var width = asNumber(options.width);\n var height = asNumber(options.height);\n var borderWidth = asNumber(options.borderWidth);\n var padding = asNumber(options.padding);\n var clipX = x + borderWidth / 2 + padding;\n var clipY = y + borderWidth / 2 + padding;\n var clipWidth = width - (borderWidth / 2 + padding) * 2;\n var clipHeight = height - (borderWidth / 2 + padding) * 2;\n var clippingArea = [\n moveTo(clipX, clipY),\n lineTo(clipX, clipY + clipHeight),\n lineTo(clipX + clipWidth, clipY + clipHeight),\n lineTo(clipX + clipWidth, clipY),\n closePath(),\n clip(),\n endPath(),\n ];\n var background = drawRectangle({\n x: x,\n y: y,\n width: width,\n height: height,\n borderWidth: options.borderWidth,\n color: options.color,\n borderColor: options.borderColor,\n rotate: degrees(0),\n xSkew: degrees(0),\n ySkew: degrees(0),\n });\n var lines = drawTextLines(options.textLines, {\n color: options.textColor,\n font: options.font,\n size: options.fontSize,\n rotate: degrees(0),\n xSkew: degrees(0),\n ySkew: degrees(0),\n });\n var markedContent = __spreadArrays([\n beginMarkedContent('Tx'),\n pushGraphicsState()\n ], lines, [\n popGraphicsState(),\n endMarkedContent(),\n ]);\n return __spreadArrays([\n pushGraphicsState()\n ], background, clippingArea, markedContent, [\n popGraphicsState(),\n ]);\n};\nexport var drawOptionList = function (options) {\n var x = asNumber(options.x);\n var y = asNumber(options.y);\n var width = asNumber(options.width);\n var height = asNumber(options.height);\n var lineHeight = asNumber(options.lineHeight);\n var borderWidth = asNumber(options.borderWidth);\n var padding = asNumber(options.padding);\n var clipX = x + borderWidth / 2 + padding;\n var clipY = y + borderWidth / 2 + padding;\n var clipWidth = width - (borderWidth / 2 + padding) * 2;\n var clipHeight = height - (borderWidth / 2 + padding) * 2;\n var clippingArea = [\n moveTo(clipX, clipY),\n lineTo(clipX, clipY + clipHeight),\n lineTo(clipX + clipWidth, clipY + clipHeight),\n lineTo(clipX + clipWidth, clipY),\n closePath(),\n clip(),\n endPath(),\n ];\n var background = drawRectangle({\n x: x,\n y: y,\n width: width,\n height: height,\n borderWidth: options.borderWidth,\n color: options.color,\n borderColor: options.borderColor,\n rotate: degrees(0),\n xSkew: degrees(0),\n ySkew: degrees(0),\n });\n var highlights = [];\n for (var idx = 0, len = options.selectedLines.length; idx < len; idx++) {\n var line = options.textLines[options.selectedLines[idx]];\n highlights.push.apply(highlights, drawRectangle({\n x: line.x - padding,\n y: line.y - (lineHeight - line.height) / 2,\n width: width - borderWidth,\n height: line.height + (lineHeight - line.height) / 2,\n borderWidth: 0,\n color: options.selectedColor,\n borderColor: undefined,\n rotate: degrees(0),\n xSkew: degrees(0),\n ySkew: degrees(0),\n }));\n }\n var lines = drawTextLines(options.textLines, {\n color: options.textColor,\n font: options.font,\n size: options.fontSize,\n rotate: degrees(0),\n xSkew: degrees(0),\n ySkew: degrees(0),\n });\n var markedContent = __spreadArrays([\n beginMarkedContent('Tx'),\n pushGraphicsState()\n ], lines, [\n popGraphicsState(),\n endMarkedContent(),\n ]);\n return __spreadArrays([\n pushGraphicsState()\n ], background, highlights, clippingArea, markedContent, [\n popGraphicsState(),\n ]);\n};\n//# sourceMappingURL=operations.js.map","// tslint:disable: max-classes-per-file\nimport { __extends } from \"tslib\";\n// TODO: Include link to documentation with example\nvar EncryptedPDFError = /** @class */ (function (_super) {\n __extends(EncryptedPDFError, _super);\n function EncryptedPDFError() {\n var _this = this;\n var msg = 'Input document to `PDFDocument.load` is encrypted. You can use `PDFDocument.load(..., { ignoreEncryption: true })` if you wish to load the document anyways.';\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return EncryptedPDFError;\n}(Error));\nexport { EncryptedPDFError };\n// TODO: Include link to documentation with example\nvar FontkitNotRegisteredError = /** @class */ (function (_super) {\n __extends(FontkitNotRegisteredError, _super);\n function FontkitNotRegisteredError() {\n var _this = this;\n var msg = 'Input to `PDFDocument.embedFont` was a custom font, but no `fontkit` instance was found. You must register a `fontkit` instance with `PDFDocument.registerFontkit(...)` before embedding custom fonts.';\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return FontkitNotRegisteredError;\n}(Error));\nexport { FontkitNotRegisteredError };\n// TODO: Include link to documentation with example\nvar ForeignPageError = /** @class */ (function (_super) {\n __extends(ForeignPageError, _super);\n function ForeignPageError() {\n var _this = this;\n var msg = 'A `page` passed to `PDFDocument.addPage` or `PDFDocument.insertPage` was from a different (foreign) PDF document. If you want to copy pages from one PDFDocument to another, you must use `PDFDocument.copyPages(...)` to copy the pages before adding or inserting them.';\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return ForeignPageError;\n}(Error));\nexport { ForeignPageError };\n// TODO: Include link to documentation with example\nvar RemovePageFromEmptyDocumentError = /** @class */ (function (_super) {\n __extends(RemovePageFromEmptyDocumentError, _super);\n function RemovePageFromEmptyDocumentError() {\n var _this = this;\n var msg = 'PDFDocument has no pages so `PDFDocument.removePage` cannot be called';\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return RemovePageFromEmptyDocumentError;\n}(Error));\nexport { RemovePageFromEmptyDocumentError };\nvar NoSuchFieldError = /** @class */ (function (_super) {\n __extends(NoSuchFieldError, _super);\n function NoSuchFieldError(name) {\n var _this = this;\n var msg = \"PDFDocument has no form field with the name \\\"\" + name + \"\\\"\";\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return NoSuchFieldError;\n}(Error));\nexport { NoSuchFieldError };\nvar UnexpectedFieldTypeError = /** @class */ (function (_super) {\n __extends(UnexpectedFieldTypeError, _super);\n function UnexpectedFieldTypeError(name, expected, actual) {\n var _a, _b;\n var _this = this;\n var expectedType = expected === null || expected === void 0 ? void 0 : expected.name;\n var actualType = (_b = (_a = actual === null || actual === void 0 ? void 0 : actual.constructor) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : actual;\n var msg = \"Expected field \\\"\" + name + \"\\\" to be of type \" + expectedType + \", \" +\n (\"but it is actually of type \" + actualType);\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return UnexpectedFieldTypeError;\n}(Error));\nexport { UnexpectedFieldTypeError };\nvar MissingOnValueCheckError = /** @class */ (function (_super) {\n __extends(MissingOnValueCheckError, _super);\n function MissingOnValueCheckError(onValue) {\n var _this = this;\n var msg = \"Failed to select check box due to missing onValue: \\\"\" + onValue + \"\\\"\";\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return MissingOnValueCheckError;\n}(Error));\nexport { MissingOnValueCheckError };\nvar FieldAlreadyExistsError = /** @class */ (function (_super) {\n __extends(FieldAlreadyExistsError, _super);\n function FieldAlreadyExistsError(name) {\n var _this = this;\n var msg = \"A field already exists with the specified name: \\\"\" + name + \"\\\"\";\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return FieldAlreadyExistsError;\n}(Error));\nexport { FieldAlreadyExistsError };\nvar InvalidFieldNamePartError = /** @class */ (function (_super) {\n __extends(InvalidFieldNamePartError, _super);\n function InvalidFieldNamePartError(namePart) {\n var _this = this;\n var msg = \"Field name contains invalid component: \\\"\" + namePart + \"\\\"\";\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return InvalidFieldNamePartError;\n}(Error));\nexport { InvalidFieldNamePartError };\nvar FieldExistsAsNonTerminalError = /** @class */ (function (_super) {\n __extends(FieldExistsAsNonTerminalError, _super);\n function FieldExistsAsNonTerminalError(name) {\n var _this = this;\n var msg = \"A non-terminal field already exists with the specified name: \\\"\" + name + \"\\\"\";\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return FieldExistsAsNonTerminalError;\n}(Error));\nexport { FieldExistsAsNonTerminalError };\nvar RichTextFieldReadError = /** @class */ (function (_super) {\n __extends(RichTextFieldReadError, _super);\n function RichTextFieldReadError(fieldName) {\n var _this = this;\n var msg = \"Reading rich text fields is not supported: Attempted to read rich text field: \" + fieldName;\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return RichTextFieldReadError;\n}(Error));\nexport { RichTextFieldReadError };\nvar CombedTextLayoutError = /** @class */ (function (_super) {\n __extends(CombedTextLayoutError, _super);\n function CombedTextLayoutError(lineLength, cellCount) {\n var _this = this;\n var msg = \"Failed to layout combed text as lineLength=\" + lineLength + \" is greater than cellCount=\" + cellCount;\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return CombedTextLayoutError;\n}(Error));\nexport { CombedTextLayoutError };\nvar ExceededMaxLengthError = /** @class */ (function (_super) {\n __extends(ExceededMaxLengthError, _super);\n function ExceededMaxLengthError(textLength, maxLength, name) {\n var _this = this;\n var msg = \"Attempted to set text with length=\" + textLength + \" for TextField with maxLength=\" + maxLength + \" and name=\" + name;\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return ExceededMaxLengthError;\n}(Error));\nexport { ExceededMaxLengthError };\nvar InvalidMaxLengthError = /** @class */ (function (_super) {\n __extends(InvalidMaxLengthError, _super);\n function InvalidMaxLengthError(textLength, maxLength, name) {\n var _this = this;\n var msg = \"Attempted to set maxLength=\" + maxLength + \", which is less than \" + textLength + \", the length of this field's current value (name=\" + name + \")\";\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return InvalidMaxLengthError;\n}(Error));\nexport { InvalidMaxLengthError };\n//# sourceMappingURL=errors.js.map","export var TextAlignment;\n(function (TextAlignment) {\n TextAlignment[TextAlignment[\"Left\"] = 0] = \"Left\";\n TextAlignment[TextAlignment[\"Center\"] = 1] = \"Center\";\n TextAlignment[TextAlignment[\"Right\"] = 2] = \"Right\";\n})(TextAlignment || (TextAlignment = {}));\n//# sourceMappingURL=alignment.js.map","import { CombedTextLayoutError } from \"../errors\";\nimport { TextAlignment } from \"./alignment\";\nimport { cleanText, lineSplit, mergeLines, charAtIndex, charSplit, } from \"../../utils\";\nvar MIN_FONT_SIZE = 4;\nvar MAX_FONT_SIZE = 500;\nvar computeFontSize = function (lines, font, bounds, multiline) {\n if (multiline === void 0) { multiline = false; }\n var fontSize = MIN_FONT_SIZE;\n while (fontSize < MAX_FONT_SIZE) {\n var linesUsed = 0;\n for (var lineIdx = 0, lineLen = lines.length; lineIdx < lineLen; lineIdx++) {\n linesUsed += 1;\n var line = lines[lineIdx];\n var words = line.split(' ');\n // Layout the words using the current `fontSize`, line wrapping\n // whenever we reach the end of the current line.\n var spaceInLineRemaining = bounds.width;\n for (var idx = 0, len = words.length; idx < len; idx++) {\n var isLastWord = idx === len - 1;\n var word = isLastWord ? words[idx] : words[idx] + ' ';\n var widthOfWord = font.widthOfTextAtSize(word, fontSize);\n spaceInLineRemaining -= widthOfWord;\n if (spaceInLineRemaining <= 0) {\n linesUsed += 1;\n spaceInLineRemaining = bounds.width - widthOfWord;\n }\n }\n }\n // Return if we exceeded the allowed width\n if (!multiline && linesUsed > lines.length)\n return fontSize - 1;\n var height = font.heightAtSize(fontSize);\n var lineHeight = height + height * 0.2;\n var totalHeight = lineHeight * linesUsed;\n // Return if we exceeded the allowed height\n if (totalHeight > Math.abs(bounds.height))\n return fontSize - 1;\n fontSize += 1;\n }\n return fontSize;\n};\nvar computeCombedFontSize = function (line, font, bounds, cellCount) {\n var cellWidth = bounds.width / cellCount;\n var cellHeight = bounds.height;\n var fontSize = MIN_FONT_SIZE;\n var chars = charSplit(line);\n while (fontSize < MAX_FONT_SIZE) {\n for (var idx = 0, len = chars.length; idx < len; idx++) {\n var c = chars[idx];\n var tooLong = font.widthOfTextAtSize(c, fontSize) > cellWidth * 0.75;\n if (tooLong)\n return fontSize - 1;\n }\n var height = font.heightAtSize(fontSize, { descender: false });\n if (height > cellHeight)\n return fontSize - 1;\n fontSize += 1;\n }\n return fontSize;\n};\nvar lastIndexOfWhitespace = function (line) {\n for (var idx = line.length; idx > 0; idx--) {\n if (/\\s/.test(line[idx]))\n return idx;\n }\n return undefined;\n};\nvar splitOutLines = function (input, maxWidth, font, fontSize) {\n var _a;\n var lastWhitespaceIdx = input.length;\n while (lastWhitespaceIdx > 0) {\n var line = input.substring(0, lastWhitespaceIdx);\n var encoded = font.encodeText(line);\n var width = font.widthOfTextAtSize(line, fontSize);\n if (width < maxWidth) {\n var remainder = input.substring(lastWhitespaceIdx) || undefined;\n return { line: line, encoded: encoded, width: width, remainder: remainder };\n }\n lastWhitespaceIdx = (_a = lastIndexOfWhitespace(line)) !== null && _a !== void 0 ? _a : 0;\n }\n // We were unable to split the input enough to get a chunk that would fit\n // within the specified `maxWidth` so we'll just return everything\n return {\n line: input,\n encoded: font.encodeText(input),\n width: font.widthOfTextAtSize(input, fontSize),\n remainder: undefined,\n };\n};\nexport var layoutMultilineText = function (text, _a) {\n var alignment = _a.alignment, fontSize = _a.fontSize, font = _a.font, bounds = _a.bounds;\n var lines = lineSplit(cleanText(text));\n if (fontSize === undefined || fontSize === 0) {\n fontSize = computeFontSize(lines, font, bounds, true);\n }\n var height = font.heightAtSize(fontSize);\n var lineHeight = height + height * 0.2;\n var textLines = [];\n var minX = bounds.x;\n var minY = bounds.y;\n var maxX = bounds.x + bounds.width;\n var maxY = bounds.y + bounds.height;\n var y = bounds.y + bounds.height;\n for (var idx = 0, len = lines.length; idx < len; idx++) {\n var prevRemainder = lines[idx];\n while (prevRemainder !== undefined) {\n var _b = splitOutLines(prevRemainder, bounds.width, font, fontSize), line = _b.line, encoded = _b.encoded, width = _b.width, remainder = _b.remainder;\n // prettier-ignore\n var x = (alignment === TextAlignment.Left ? bounds.x\n : alignment === TextAlignment.Center ? bounds.x + (bounds.width / 2) - (width / 2)\n : alignment === TextAlignment.Right ? bounds.x + bounds.width - width\n : bounds.x);\n y -= lineHeight;\n if (x < minX)\n minX = x;\n if (y < minY)\n minY = y;\n if (x + width > maxX)\n maxX = x + width;\n if (y + height > maxY)\n maxY = y + height;\n textLines.push({ text: line, encoded: encoded, width: width, height: height, x: x, y: y });\n // Only trim lines that we had to split ourselves. So we won't trim lines\n // that the user provided themselves with whitespace.\n prevRemainder = remainder === null || remainder === void 0 ? void 0 : remainder.trim();\n }\n }\n return {\n fontSize: fontSize,\n lineHeight: lineHeight,\n lines: textLines,\n bounds: {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n },\n };\n};\nexport var layoutCombedText = function (text, _a) {\n var fontSize = _a.fontSize, font = _a.font, bounds = _a.bounds, cellCount = _a.cellCount;\n var line = mergeLines(cleanText(text));\n if (line.length > cellCount) {\n throw new CombedTextLayoutError(line.length, cellCount);\n }\n if (fontSize === undefined || fontSize === 0) {\n fontSize = computeCombedFontSize(line, font, bounds, cellCount);\n }\n var cellWidth = bounds.width / cellCount;\n var height = font.heightAtSize(fontSize, { descender: false });\n var y = bounds.y + (bounds.height / 2 - height / 2);\n var cells = [];\n var minX = bounds.x;\n var minY = bounds.y;\n var maxX = bounds.x + bounds.width;\n var maxY = bounds.y + bounds.height;\n var cellOffset = 0;\n var charOffset = 0;\n while (cellOffset < cellCount) {\n var _b = charAtIndex(line, charOffset), char = _b[0], charLength = _b[1];\n var encoded = font.encodeText(char);\n var width = font.widthOfTextAtSize(char, fontSize);\n var cellCenter = bounds.x + (cellWidth * cellOffset + cellWidth / 2);\n var x = cellCenter - width / 2;\n if (x < minX)\n minX = x;\n if (y < minY)\n minY = y;\n if (x + width > maxX)\n maxX = x + width;\n if (y + height > maxY)\n maxY = y + height;\n cells.push({ text: line, encoded: encoded, width: width, height: height, x: x, y: y });\n cellOffset += 1;\n charOffset += charLength;\n }\n return {\n fontSize: fontSize,\n cells: cells,\n bounds: {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n },\n };\n};\nexport var layoutSinglelineText = function (text, _a) {\n var alignment = _a.alignment, fontSize = _a.fontSize, font = _a.font, bounds = _a.bounds;\n var line = mergeLines(cleanText(text));\n if (fontSize === undefined || fontSize === 0) {\n fontSize = computeFontSize([line], font, bounds);\n }\n var encoded = font.encodeText(line);\n var width = font.widthOfTextAtSize(line, fontSize);\n var height = font.heightAtSize(fontSize, { descender: false });\n // prettier-ignore\n var x = (alignment === TextAlignment.Left ? bounds.x\n : alignment === TextAlignment.Center ? bounds.x + (bounds.width / 2) - (width / 2)\n : alignment === TextAlignment.Right ? bounds.x + bounds.width - width\n : bounds.x);\n var y = bounds.y + (bounds.height / 2 - height / 2);\n return {\n fontSize: fontSize,\n line: { text: line, encoded: encoded, width: width, height: height, x: x, y: y },\n bounds: { x: x, y: y, width: width, height: height },\n };\n};\n//# sourceMappingURL=layout.js.map","import { __assign, __spreadArrays } from \"tslib\";\nimport { drawCheckBox, rotateInPlace, drawRadioButton, drawButton, drawTextField, drawOptionList, } from \"../operations\";\nimport { rgb, componentsToColor, setFillingColor, grayscale, cmyk, } from \"../colors\";\nimport { reduceRotation, adjustDimsForRotation } from \"../rotations\";\nimport { layoutMultilineText, layoutCombedText, layoutSinglelineText, } from \"../text/layout\";\nimport { TextAlignment } from \"../text/alignment\";\nimport { setFontAndSize } from \"../operators\";\nimport { findLastMatch } from \"../../utils\";\n/********************* Appearance Provider Functions **************************/\nexport var normalizeAppearance = function (appearance) {\n if ('normal' in appearance)\n return appearance;\n return { normal: appearance };\n};\n// Examples:\n// `/Helv 12 Tf` -> ['/Helv 12 Tf', 'Helv', '12']\n// `/HeBo 8.00 Tf` -> ['/HeBo 8 Tf', 'HeBo', '8.00']\nvar tfRegex = /\\/([^\\0\\t\\n\\f\\r\\ ]+)[\\0\\t\\n\\f\\r\\ ]+(\\d*\\.\\d+|\\d+)[\\0\\t\\n\\f\\r\\ ]+Tf/;\nvar getDefaultFontSize = function (field) {\n var _a, _b;\n var da = (_a = field.getDefaultAppearance()) !== null && _a !== void 0 ? _a : '';\n var daMatch = (_b = findLastMatch(da, tfRegex).match) !== null && _b !== void 0 ? _b : [];\n var defaultFontSize = Number(daMatch[2]);\n return isFinite(defaultFontSize) ? defaultFontSize : undefined;\n};\n// Examples:\n// `0.3 g` -> ['0.3', 'g']\n// `0.3 1 .3 rg` -> ['0.3', '1', '.3', 'rg']\n// `0.3 1 .3 0 k` -> ['0.3', '1', '.3', '0', 'k']\nvar colorRegex = /(\\d*\\.\\d+|\\d+)[\\0\\t\\n\\f\\r\\ ]*(\\d*\\.\\d+|\\d+)?[\\0\\t\\n\\f\\r\\ ]*(\\d*\\.\\d+|\\d+)?[\\0\\t\\n\\f\\r\\ ]*(\\d*\\.\\d+|\\d+)?[\\0\\t\\n\\f\\r\\ ]+(g|rg|k)/;\nvar getDefaultColor = function (field) {\n var _a;\n var da = (_a = field.getDefaultAppearance()) !== null && _a !== void 0 ? _a : '';\n var daMatch = findLastMatch(da, colorRegex).match;\n var _b = daMatch !== null && daMatch !== void 0 ? daMatch : [], c1 = _b[1], c2 = _b[2], c3 = _b[3], c4 = _b[4], colorSpace = _b[5];\n if (colorSpace === 'g' && c1) {\n return grayscale(Number(c1));\n }\n if (colorSpace === 'rg' && c1 && c2 && c3) {\n return rgb(Number(c1), Number(c2), Number(c3));\n }\n if (colorSpace === 'k' && c1 && c2 && c3 && c4) {\n return cmyk(Number(c1), Number(c2), Number(c3), Number(c4));\n }\n return undefined;\n};\nvar updateDefaultAppearance = function (field, color, font, fontSize) {\n var _a;\n if (fontSize === void 0) { fontSize = 0; }\n var da = [\n setFillingColor(color).toString(),\n setFontAndSize((_a = font === null || font === void 0 ? void 0 : font.name) !== null && _a !== void 0 ? _a : 'dummy__noop', fontSize).toString(),\n ].join('\\n');\n field.setDefaultAppearance(da);\n};\nexport var defaultCheckBoxAppearanceProvider = function (checkBox, widget) {\n var _a, _b, _c;\n // The `/DA` entry can be at the widget or field level - so we handle both\n var widgetColor = getDefaultColor(widget);\n var fieldColor = getDefaultColor(checkBox.acroField);\n var rectangle = widget.getRectangle();\n var ap = widget.getAppearanceCharacteristics();\n var bs = widget.getBorderStyle();\n var borderWidth = (_a = bs === null || bs === void 0 ? void 0 : bs.getWidth()) !== null && _a !== void 0 ? _a : 0;\n var rotation = reduceRotation(ap === null || ap === void 0 ? void 0 : ap.getRotation());\n var _d = adjustDimsForRotation(rectangle, rotation), width = _d.width, height = _d.height;\n var rotate = rotateInPlace(__assign(__assign({}, rectangle), { rotation: rotation }));\n var black = rgb(0, 0, 0);\n var borderColor = (_b = componentsToColor(ap === null || ap === void 0 ? void 0 : ap.getBorderColor())) !== null && _b !== void 0 ? _b : black;\n var normalBackgroundColor = componentsToColor(ap === null || ap === void 0 ? void 0 : ap.getBackgroundColor());\n var downBackgroundColor = componentsToColor(ap === null || ap === void 0 ? void 0 : ap.getBackgroundColor(), 0.8);\n // Update color\n var textColor = (_c = widgetColor !== null && widgetColor !== void 0 ? widgetColor : fieldColor) !== null && _c !== void 0 ? _c : black;\n if (widgetColor) {\n updateDefaultAppearance(widget, textColor);\n }\n else {\n updateDefaultAppearance(checkBox.acroField, textColor);\n }\n var options = {\n x: 0 + borderWidth / 2,\n y: 0 + borderWidth / 2,\n width: width - borderWidth,\n height: height - borderWidth,\n thickness: 1.5,\n borderWidth: borderWidth,\n borderColor: borderColor,\n markColor: textColor,\n };\n return {\n normal: {\n on: __spreadArrays(rotate, drawCheckBox(__assign(__assign({}, options), { color: normalBackgroundColor, filled: true }))),\n off: __spreadArrays(rotate, drawCheckBox(__assign(__assign({}, options), { color: normalBackgroundColor, filled: false }))),\n },\n down: {\n on: __spreadArrays(rotate, drawCheckBox(__assign(__assign({}, options), { color: downBackgroundColor, filled: true }))),\n off: __spreadArrays(rotate, drawCheckBox(__assign(__assign({}, options), { color: downBackgroundColor, filled: false }))),\n },\n };\n};\nexport var defaultRadioGroupAppearanceProvider = function (radioGroup, widget) {\n var _a, _b, _c;\n // The `/DA` entry can be at the widget or field level - so we handle both\n var widgetColor = getDefaultColor(widget);\n var fieldColor = getDefaultColor(radioGroup.acroField);\n var rectangle = widget.getRectangle();\n var ap = widget.getAppearanceCharacteristics();\n var bs = widget.getBorderStyle();\n var borderWidth = (_a = bs === null || bs === void 0 ? void 0 : bs.getWidth()) !== null && _a !== void 0 ? _a : 0;\n var rotation = reduceRotation(ap === null || ap === void 0 ? void 0 : ap.getRotation());\n var _d = adjustDimsForRotation(rectangle, rotation), width = _d.width, height = _d.height;\n var rotate = rotateInPlace(__assign(__assign({}, rectangle), { rotation: rotation }));\n var black = rgb(0, 0, 0);\n var borderColor = (_b = componentsToColor(ap === null || ap === void 0 ? void 0 : ap.getBorderColor())) !== null && _b !== void 0 ? _b : black;\n var normalBackgroundColor = componentsToColor(ap === null || ap === void 0 ? void 0 : ap.getBackgroundColor());\n var downBackgroundColor = componentsToColor(ap === null || ap === void 0 ? void 0 : ap.getBackgroundColor(), 0.8);\n // Update color\n var textColor = (_c = widgetColor !== null && widgetColor !== void 0 ? widgetColor : fieldColor) !== null && _c !== void 0 ? _c : black;\n if (widgetColor) {\n updateDefaultAppearance(widget, textColor);\n }\n else {\n updateDefaultAppearance(radioGroup.acroField, textColor);\n }\n var options = {\n x: width / 2,\n y: height / 2,\n width: width - borderWidth,\n height: height - borderWidth,\n borderWidth: borderWidth,\n borderColor: borderColor,\n dotColor: textColor,\n };\n return {\n normal: {\n on: __spreadArrays(rotate, drawRadioButton(__assign(__assign({}, options), { color: normalBackgroundColor, filled: true }))),\n off: __spreadArrays(rotate, drawRadioButton(__assign(__assign({}, options), { color: normalBackgroundColor, filled: false }))),\n },\n down: {\n on: __spreadArrays(rotate, drawRadioButton(__assign(__assign({}, options), { color: downBackgroundColor, filled: true }))),\n off: __spreadArrays(rotate, drawRadioButton(__assign(__assign({}, options), { color: downBackgroundColor, filled: false }))),\n },\n };\n};\nexport var defaultButtonAppearanceProvider = function (button, widget, font) {\n var _a, _b, _c, _d, _e;\n // The `/DA` entry can be at the widget or field level - so we handle both\n var widgetColor = getDefaultColor(widget);\n var fieldColor = getDefaultColor(button.acroField);\n var widgetFontSize = getDefaultFontSize(widget);\n var fieldFontSize = getDefaultFontSize(button.acroField);\n var rectangle = widget.getRectangle();\n var ap = widget.getAppearanceCharacteristics();\n var bs = widget.getBorderStyle();\n var captions = ap === null || ap === void 0 ? void 0 : ap.getCaptions();\n var normalText = (_a = captions === null || captions === void 0 ? void 0 : captions.normal) !== null && _a !== void 0 ? _a : '';\n var downText = (_c = (_b = captions === null || captions === void 0 ? void 0 : captions.down) !== null && _b !== void 0 ? _b : normalText) !== null && _c !== void 0 ? _c : '';\n var borderWidth = (_d = bs === null || bs === void 0 ? void 0 : bs.getWidth()) !== null && _d !== void 0 ? _d : 0;\n var rotation = reduceRotation(ap === null || ap === void 0 ? void 0 : ap.getRotation());\n var _f = adjustDimsForRotation(rectangle, rotation), width = _f.width, height = _f.height;\n var rotate = rotateInPlace(__assign(__assign({}, rectangle), { rotation: rotation }));\n var black = rgb(0, 0, 0);\n var borderColor = componentsToColor(ap === null || ap === void 0 ? void 0 : ap.getBorderColor());\n var normalBackgroundColor = componentsToColor(ap === null || ap === void 0 ? void 0 : ap.getBackgroundColor());\n var downBackgroundColor = componentsToColor(ap === null || ap === void 0 ? void 0 : ap.getBackgroundColor(), 0.8);\n var bounds = {\n x: borderWidth,\n y: borderWidth,\n width: width - borderWidth * 2,\n height: height - borderWidth * 2,\n };\n var normalLayout = layoutSinglelineText(normalText, {\n alignment: TextAlignment.Center,\n fontSize: widgetFontSize !== null && widgetFontSize !== void 0 ? widgetFontSize : fieldFontSize,\n font: font,\n bounds: bounds,\n });\n var downLayout = layoutSinglelineText(downText, {\n alignment: TextAlignment.Center,\n fontSize: widgetFontSize !== null && widgetFontSize !== void 0 ? widgetFontSize : fieldFontSize,\n font: font,\n bounds: bounds,\n });\n // Update font size and color\n var fontSize = Math.min(normalLayout.fontSize, downLayout.fontSize);\n var textColor = (_e = widgetColor !== null && widgetColor !== void 0 ? widgetColor : fieldColor) !== null && _e !== void 0 ? _e : black;\n if (widgetColor || widgetFontSize !== undefined) {\n updateDefaultAppearance(widget, textColor, font, fontSize);\n }\n else {\n updateDefaultAppearance(button.acroField, textColor, font, fontSize);\n }\n var options = {\n x: 0 + borderWidth / 2,\n y: 0 + borderWidth / 2,\n width: width - borderWidth,\n height: height - borderWidth,\n borderWidth: borderWidth,\n borderColor: borderColor,\n textColor: textColor,\n font: font.name,\n fontSize: fontSize,\n };\n return {\n normal: __spreadArrays(rotate, drawButton(__assign(__assign({}, options), { color: normalBackgroundColor, textLines: [normalLayout.line] }))),\n down: __spreadArrays(rotate, drawButton(__assign(__assign({}, options), { color: downBackgroundColor, textLines: [downLayout.line] }))),\n };\n};\nexport var defaultTextFieldAppearanceProvider = function (textField, widget, font) {\n var _a, _b, _c, _d;\n // The `/DA` entry can be at the widget or field level - so we handle both\n var widgetColor = getDefaultColor(widget);\n var fieldColor = getDefaultColor(textField.acroField);\n var widgetFontSize = getDefaultFontSize(widget);\n var fieldFontSize = getDefaultFontSize(textField.acroField);\n var rectangle = widget.getRectangle();\n var ap = widget.getAppearanceCharacteristics();\n var bs = widget.getBorderStyle();\n var text = (_a = textField.getText()) !== null && _a !== void 0 ? _a : '';\n var borderWidth = (_b = bs === null || bs === void 0 ? void 0 : bs.getWidth()) !== null && _b !== void 0 ? _b : 0;\n var rotation = reduceRotation(ap === null || ap === void 0 ? void 0 : ap.getRotation());\n var _e = adjustDimsForRotation(rectangle, rotation), width = _e.width, height = _e.height;\n var rotate = rotateInPlace(__assign(__assign({}, rectangle), { rotation: rotation }));\n var black = rgb(0, 0, 0);\n var borderColor = componentsToColor(ap === null || ap === void 0 ? void 0 : ap.getBorderColor());\n var normalBackgroundColor = componentsToColor(ap === null || ap === void 0 ? void 0 : ap.getBackgroundColor());\n var textLines;\n var fontSize;\n var padding = textField.isCombed() ? 0 : 1;\n var bounds = {\n x: borderWidth + padding,\n y: borderWidth + padding,\n width: width - (borderWidth + padding) * 2,\n height: height - (borderWidth + padding) * 2,\n };\n if (textField.isMultiline()) {\n var layout = layoutMultilineText(text, {\n alignment: textField.getAlignment(),\n fontSize: widgetFontSize !== null && widgetFontSize !== void 0 ? widgetFontSize : fieldFontSize,\n font: font,\n bounds: bounds,\n });\n textLines = layout.lines;\n fontSize = layout.fontSize;\n }\n else if (textField.isCombed()) {\n var layout = layoutCombedText(text, {\n fontSize: widgetFontSize !== null && widgetFontSize !== void 0 ? widgetFontSize : fieldFontSize,\n font: font,\n bounds: bounds,\n cellCount: (_c = textField.getMaxLength()) !== null && _c !== void 0 ? _c : 0,\n });\n textLines = layout.cells;\n fontSize = layout.fontSize;\n }\n else {\n var layout = layoutSinglelineText(text, {\n alignment: textField.getAlignment(),\n fontSize: widgetFontSize !== null && widgetFontSize !== void 0 ? widgetFontSize : fieldFontSize,\n font: font,\n bounds: bounds,\n });\n textLines = [layout.line];\n fontSize = layout.fontSize;\n }\n // Update font size and color\n var textColor = (_d = widgetColor !== null && widgetColor !== void 0 ? widgetColor : fieldColor) !== null && _d !== void 0 ? _d : black;\n if (widgetColor || widgetFontSize !== undefined) {\n updateDefaultAppearance(widget, textColor, font, fontSize);\n }\n else {\n updateDefaultAppearance(textField.acroField, textColor, font, fontSize);\n }\n var options = {\n x: 0 + borderWidth / 2,\n y: 0 + borderWidth / 2,\n width: width - borderWidth,\n height: height - borderWidth,\n borderWidth: borderWidth !== null && borderWidth !== void 0 ? borderWidth : 0,\n borderColor: borderColor,\n textColor: textColor,\n font: font.name,\n fontSize: fontSize,\n color: normalBackgroundColor,\n textLines: textLines,\n padding: padding,\n };\n return __spreadArrays(rotate, drawTextField(options));\n};\nexport var defaultDropdownAppearanceProvider = function (dropdown, widget, font) {\n var _a, _b, _c;\n // The `/DA` entry can be at the widget or field level - so we handle both\n var widgetColor = getDefaultColor(widget);\n var fieldColor = getDefaultColor(dropdown.acroField);\n var widgetFontSize = getDefaultFontSize(widget);\n var fieldFontSize = getDefaultFontSize(dropdown.acroField);\n var rectangle = widget.getRectangle();\n var ap = widget.getAppearanceCharacteristics();\n var bs = widget.getBorderStyle();\n var text = (_a = dropdown.getSelected()[0]) !== null && _a !== void 0 ? _a : '';\n var borderWidth = (_b = bs === null || bs === void 0 ? void 0 : bs.getWidth()) !== null && _b !== void 0 ? _b : 0;\n var rotation = reduceRotation(ap === null || ap === void 0 ? void 0 : ap.getRotation());\n var _d = adjustDimsForRotation(rectangle, rotation), width = _d.width, height = _d.height;\n var rotate = rotateInPlace(__assign(__assign({}, rectangle), { rotation: rotation }));\n var black = rgb(0, 0, 0);\n var borderColor = componentsToColor(ap === null || ap === void 0 ? void 0 : ap.getBorderColor());\n var normalBackgroundColor = componentsToColor(ap === null || ap === void 0 ? void 0 : ap.getBackgroundColor());\n var padding = 1;\n var bounds = {\n x: borderWidth + padding,\n y: borderWidth + padding,\n width: width - (borderWidth + padding) * 2,\n height: height - (borderWidth + padding) * 2,\n };\n var _e = layoutSinglelineText(text, {\n alignment: TextAlignment.Left,\n fontSize: widgetFontSize !== null && widgetFontSize !== void 0 ? widgetFontSize : fieldFontSize,\n font: font,\n bounds: bounds,\n }), line = _e.line, fontSize = _e.fontSize;\n // Update font size and color\n var textColor = (_c = widgetColor !== null && widgetColor !== void 0 ? widgetColor : fieldColor) !== null && _c !== void 0 ? _c : black;\n if (widgetColor || widgetFontSize !== undefined) {\n updateDefaultAppearance(widget, textColor, font, fontSize);\n }\n else {\n updateDefaultAppearance(dropdown.acroField, textColor, font, fontSize);\n }\n var options = {\n x: 0 + borderWidth / 2,\n y: 0 + borderWidth / 2,\n width: width - borderWidth,\n height: height - borderWidth,\n borderWidth: borderWidth !== null && borderWidth !== void 0 ? borderWidth : 0,\n borderColor: borderColor,\n textColor: textColor,\n font: font.name,\n fontSize: fontSize,\n color: normalBackgroundColor,\n textLines: [line],\n padding: padding,\n };\n return __spreadArrays(rotate, drawTextField(options));\n};\nexport var defaultOptionListAppearanceProvider = function (optionList, widget, font) {\n var _a, _b;\n // The `/DA` entry can be at the widget or field level - so we handle both\n var widgetColor = getDefaultColor(widget);\n var fieldColor = getDefaultColor(optionList.acroField);\n var widgetFontSize = getDefaultFontSize(widget);\n var fieldFontSize = getDefaultFontSize(optionList.acroField);\n var rectangle = widget.getRectangle();\n var ap = widget.getAppearanceCharacteristics();\n var bs = widget.getBorderStyle();\n var borderWidth = (_a = bs === null || bs === void 0 ? void 0 : bs.getWidth()) !== null && _a !== void 0 ? _a : 0;\n var rotation = reduceRotation(ap === null || ap === void 0 ? void 0 : ap.getRotation());\n var _c = adjustDimsForRotation(rectangle, rotation), width = _c.width, height = _c.height;\n var rotate = rotateInPlace(__assign(__assign({}, rectangle), { rotation: rotation }));\n var black = rgb(0, 0, 0);\n var borderColor = componentsToColor(ap === null || ap === void 0 ? void 0 : ap.getBorderColor());\n var normalBackgroundColor = componentsToColor(ap === null || ap === void 0 ? void 0 : ap.getBackgroundColor());\n var options = optionList.getOptions();\n var selected = optionList.getSelected();\n if (optionList.isSorted())\n options.sort();\n var text = '';\n for (var idx = 0, len = options.length; idx < len; idx++) {\n text += options[idx];\n if (idx < len - 1)\n text += '\\n';\n }\n var padding = 1;\n var bounds = {\n x: borderWidth + padding,\n y: borderWidth + padding,\n width: width - (borderWidth + padding) * 2,\n height: height - (borderWidth + padding) * 2,\n };\n var _d = layoutMultilineText(text, {\n alignment: TextAlignment.Left,\n fontSize: widgetFontSize !== null && widgetFontSize !== void 0 ? widgetFontSize : fieldFontSize,\n font: font,\n bounds: bounds,\n }), lines = _d.lines, fontSize = _d.fontSize, lineHeight = _d.lineHeight;\n var selectedLines = [];\n for (var idx = 0, len = lines.length; idx < len; idx++) {\n var line = lines[idx];\n if (selected.includes(line.text))\n selectedLines.push(idx);\n }\n var blue = rgb(153 / 255, 193 / 255, 218 / 255);\n // Update font size and color\n var textColor = (_b = widgetColor !== null && widgetColor !== void 0 ? widgetColor : fieldColor) !== null && _b !== void 0 ? _b : black;\n if (widgetColor || widgetFontSize !== undefined) {\n updateDefaultAppearance(widget, textColor, font, fontSize);\n }\n else {\n updateDefaultAppearance(optionList.acroField, textColor, font, fontSize);\n }\n return __spreadArrays(rotate, drawOptionList({\n x: 0 + borderWidth / 2,\n y: 0 + borderWidth / 2,\n width: width - borderWidth,\n height: height - borderWidth,\n borderWidth: borderWidth !== null && borderWidth !== void 0 ? borderWidth : 0,\n borderColor: borderColor,\n textColor: textColor,\n font: font.name,\n fontSize: fontSize,\n color: normalBackgroundColor,\n textLines: lines,\n lineHeight: lineHeight,\n selectedColor: blue,\n selectedLines: selectedLines,\n padding: padding,\n }));\n};\n//# sourceMappingURL=appearances.js.map","import { __awaiter, __generator } from \"tslib\";\nimport PDFDocument from \"./PDFDocument\";\nimport { PDFPageEmbedder, PDFRef } from \"../core\";\nimport { assertIs } from \"../utils\";\n/**\n * Represents a PDF page that has been embedded in a [[PDFDocument]].\n */\nvar PDFEmbeddedPage = /** @class */ (function () {\n function PDFEmbeddedPage(ref, doc, embedder) {\n this.alreadyEmbedded = false;\n assertIs(ref, 'ref', [[PDFRef, 'PDFRef']]);\n assertIs(doc, 'doc', [[PDFDocument, 'PDFDocument']]);\n assertIs(embedder, 'embedder', [[PDFPageEmbedder, 'PDFPageEmbedder']]);\n this.ref = ref;\n this.doc = doc;\n this.width = embedder.width;\n this.height = embedder.height;\n this.embedder = embedder;\n }\n /**\n * Compute the width and height of this page after being scaled by the\n * given `factor`. For example:\n * ```js\n * embeddedPage.width // => 500\n * embeddedPage.height // => 250\n *\n * const scaled = embeddedPage.scale(0.5)\n * scaled.width // => 250\n * scaled.height // => 125\n * ```\n * This operation is often useful before drawing a page with\n * [[PDFPage.drawPage]] to compute the `width` and `height` options.\n * @param factor The factor by which this page should be scaled.\n * @returns The width and height of the page after being scaled.\n */\n PDFEmbeddedPage.prototype.scale = function (factor) {\n assertIs(factor, 'factor', ['number']);\n return { width: this.width * factor, height: this.height * factor };\n };\n /**\n * Get the width and height of this page. For example:\n * ```js\n * const { width, height } = embeddedPage.size()\n * ```\n * @returns The width and height of the page.\n */\n PDFEmbeddedPage.prototype.size = function () {\n return this.scale(1);\n };\n /**\n * > **NOTE:** You probably don't need to call this method directly. The\n * > [[PDFDocument.save]] and [[PDFDocument.saveAsBase64]] methods will\n * > automatically ensure all embeddable pages get embedded.\n *\n * Embed this embeddable page in its document.\n *\n * @returns Resolves when the embedding is complete.\n */\n PDFEmbeddedPage.prototype.embed = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!this.alreadyEmbedded) return [3 /*break*/, 2];\n return [4 /*yield*/, this.embedder.embedIntoContext(this.doc.context, this.ref)];\n case 1:\n _a.sent();\n this.alreadyEmbedded = true;\n _a.label = 2;\n case 2: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * > **NOTE:** You probably don't want to call this method directly. Instead,\n * > consider using the [[PDFDocument.embedPdf]] and\n * > [[PDFDocument.embedPage]] methods, which will create instances of\n * > [[PDFEmbeddedPage]] for you.\n *\n * Create an instance of [[PDFEmbeddedPage]] from an existing ref and embedder\n *\n * @param ref The unique reference for this embedded page.\n * @param doc The document to which the embedded page will belong.\n * @param embedder The embedder that will be used to embed the page.\n */\n PDFEmbeddedPage.of = function (ref, doc, embedder) {\n return new PDFEmbeddedPage(ref, doc, embedder);\n };\n return PDFEmbeddedPage;\n}());\nexport default PDFEmbeddedPage;\n//# sourceMappingURL=PDFEmbeddedPage.js.map","import { __awaiter, __generator } from \"tslib\";\nimport PDFDocument from \"./PDFDocument\";\nimport { CustomFontEmbedder, PDFRef, StandardFontEmbedder, } from \"../core\";\nimport { assertIs, assertOrUndefined } from \"../utils\";\n/**\n * Represents a font that has been embedded in a [[PDFDocument]].\n */\nvar PDFFont = /** @class */ (function () {\n function PDFFont(ref, doc, embedder) {\n this.modified = true;\n assertIs(ref, 'ref', [[PDFRef, 'PDFRef']]);\n assertIs(doc, 'doc', [[PDFDocument, 'PDFDocument']]);\n assertIs(embedder, 'embedder', [\n [CustomFontEmbedder, 'CustomFontEmbedder'],\n [StandardFontEmbedder, 'StandardFontEmbedder'],\n ]);\n this.ref = ref;\n this.doc = doc;\n this.name = embedder.fontName;\n this.embedder = embedder;\n }\n /**\n * > **NOTE:** You probably don't need to call this method directly. The\n * > [[PDFPage.drawText]] method will automatically encode the text it is\n * > given.\n *\n * Encodes a string of text in this font.\n *\n * @param text The text to be encoded.\n * @returns The encoded text as a hex string.\n */\n PDFFont.prototype.encodeText = function (text) {\n assertIs(text, 'text', ['string']);\n this.modified = true;\n return this.embedder.encodeText(text);\n };\n /**\n * Measure the width of a string of text drawn in this font at a given size.\n * For example:\n * ```js\n * const width = font.widthOfTextAtSize('Foo Bar Qux Baz', 36)\n * ```\n * @param text The string of text to be measured.\n * @param size The font size to be used for this measurement.\n * @returns The width of the string of text when drawn in this font at the\n * given size.\n */\n PDFFont.prototype.widthOfTextAtSize = function (text, size) {\n assertIs(text, 'text', ['string']);\n assertIs(size, 'size', ['number']);\n return this.embedder.widthOfTextAtSize(text, size);\n };\n /**\n * Measure the height of this font at a given size. For example:\n * ```js\n * const height = font.heightAtSize(24)\n * ```\n *\n * The `options.descender` value controls whether or not the font's\n * descender is included in the height calculation.\n *\n * @param size The font size to be used for this measurement.\n * @param options The options to be used when computing this measurement.\n * @returns The height of this font at the given size.\n */\n PDFFont.prototype.heightAtSize = function (size, options) {\n var _a;\n assertIs(size, 'size', ['number']);\n assertOrUndefined(options === null || options === void 0 ? void 0 : options.descender, 'options.descender', ['boolean']);\n return this.embedder.heightOfFontAtSize(size, {\n descender: (_a = options === null || options === void 0 ? void 0 : options.descender) !== null && _a !== void 0 ? _a : true,\n });\n };\n /**\n * Compute the font size at which this font is a given height. For example:\n * ```js\n * const fontSize = font.sizeAtHeight(12)\n * ```\n * @param height The height to be used for this calculation.\n * @returns The font size at which this font is the given height.\n */\n PDFFont.prototype.sizeAtHeight = function (height) {\n assertIs(height, 'height', ['number']);\n return this.embedder.sizeOfFontAtHeight(height);\n };\n /**\n * Get the set of unicode code points that can be represented by this font.\n * @returns The set of unicode code points supported by this font.\n */\n PDFFont.prototype.getCharacterSet = function () {\n if (this.embedder instanceof StandardFontEmbedder) {\n return this.embedder.encoding.supportedCodePoints;\n }\n else {\n return this.embedder.font.characterSet;\n }\n };\n /**\n * > **NOTE:** You probably don't need to call this method directly. The\n * > [[PDFDocument.save]] and [[PDFDocument.saveAsBase64]] methods will\n * > automatically ensure all fonts get embedded.\n *\n * Embed this font in its document.\n *\n * @returns Resolves when the embedding is complete.\n */\n PDFFont.prototype.embed = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.modified) return [3 /*break*/, 2];\n return [4 /*yield*/, this.embedder.embedIntoContext(this.doc.context, this.ref)];\n case 1:\n _a.sent();\n this.modified = false;\n _a.label = 2;\n case 2: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * > **NOTE:** You probably don't want to call this method directly. Instead,\n * > consider using the [[PDFDocument.embedFont]] and\n * > [[PDFDocument.embedStandardFont]] methods, which will create instances\n * > of [[PDFFont]] for you.\n *\n * Create an instance of [[PDFFont]] from an existing ref and embedder\n *\n * @param ref The unique reference for this font.\n * @param doc The document to which the font will belong.\n * @param embedder The embedder that will be used to embed the font.\n */\n PDFFont.of = function (ref, doc, embedder) {\n return new PDFFont(ref, doc, embedder);\n };\n return PDFFont;\n}());\nexport default PDFFont;\n//# sourceMappingURL=PDFFont.js.map","import { __awaiter, __generator } from \"tslib\";\nimport PDFDocument from \"./PDFDocument\";\nimport { JpegEmbedder, PDFRef, PngEmbedder } from \"../core\";\nimport { assertIs } from \"../utils\";\n/**\n * Represents an image that has been embedded in a [[PDFDocument]].\n */\nvar PDFImage = /** @class */ (function () {\n function PDFImage(ref, doc, embedder) {\n assertIs(ref, 'ref', [[PDFRef, 'PDFRef']]);\n assertIs(doc, 'doc', [[PDFDocument, 'PDFDocument']]);\n assertIs(embedder, 'embedder', [\n [JpegEmbedder, 'JpegEmbedder'],\n [PngEmbedder, 'PngEmbedder'],\n ]);\n this.ref = ref;\n this.doc = doc;\n this.width = embedder.width;\n this.height = embedder.height;\n this.embedder = embedder;\n }\n /**\n * Compute the width and height of this image after being scaled by the\n * given `factor`. For example:\n * ```js\n * image.width // => 500\n * image.height // => 250\n *\n * const scaled = image.scale(0.5)\n * scaled.width // => 250\n * scaled.height // => 125\n * ```\n * This operation is often useful before drawing an image with\n * [[PDFPage.drawImage]] to compute the `width` and `height` options.\n * @param factor The factor by which this image should be scaled.\n * @returns The width and height of the image after being scaled.\n */\n PDFImage.prototype.scale = function (factor) {\n assertIs(factor, 'factor', ['number']);\n return { width: this.width * factor, height: this.height * factor };\n };\n /**\n * Get the width and height of this image after scaling it as large as\n * possible while maintaining its aspect ratio and not exceeding the\n * specified `width` and `height`. For example:\n * ```\n * image.width // => 500\n * image.height // => 250\n *\n * const scaled = image.scaleToFit(750, 1000)\n * scaled.width // => 750\n * scaled.height // => 375\n * ```\n * The `width` and `height` parameters can also be thought of as the width\n * and height of a box that the scaled image must fit within.\n * @param width The bounding box's width.\n * @param height The bounding box's height.\n * @returns The width and height of the image after being scaled.\n */\n PDFImage.prototype.scaleToFit = function (width, height) {\n assertIs(width, 'width', ['number']);\n assertIs(height, 'height', ['number']);\n var imgWidthScale = width / this.width;\n var imgHeightScale = height / this.height;\n var scale = Math.min(imgWidthScale, imgHeightScale);\n return this.scale(scale);\n };\n /**\n * Get the width and height of this image. For example:\n * ```js\n * const { width, height } = image.size()\n * ```\n * @returns The width and height of the image.\n */\n PDFImage.prototype.size = function () {\n return this.scale(1);\n };\n /**\n * > **NOTE:** You probably don't need to call this method directly. The\n * > [[PDFDocument.save]] and [[PDFDocument.saveAsBase64]] methods will\n * > automatically ensure all images get embedded.\n *\n * Embed this image in its document.\n *\n * @returns Resolves when the embedding is complete.\n */\n PDFImage.prototype.embed = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a, doc, ref;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!this.embedder)\n return [2 /*return*/];\n // The image should only be embedded once. If there's a pending embed\n // operation then wait on it. Otherwise we need to start the embed.\n if (!this.embedTask) {\n _a = this, doc = _a.doc, ref = _a.ref;\n this.embedTask = this.embedder.embedIntoContext(doc.context, ref);\n }\n return [4 /*yield*/, this.embedTask];\n case 1:\n _b.sent();\n // We clear `this.embedder` so that the indirectly referenced image data\n // can be garbage collected, thus avoiding a memory leak.\n // See https://github.com/Hopding/pdf-lib/pull/1032/files.\n this.embedder = undefined;\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * > **NOTE:** You probably don't want to call this method directly. Instead,\n * > consider using the [[PDFDocument.embedPng]] and [[PDFDocument.embedJpg]]\n * > methods, which will create instances of [[PDFImage]] for you.\n *\n * Create an instance of [[PDFImage]] from an existing ref and embedder\n *\n * @param ref The unique reference for this image.\n * @param doc The document to which the image will belong.\n * @param embedder The embedder that will be used to embed the image.\n */\n PDFImage.of = function (ref, doc, embedder) {\n return new PDFImage(ref, doc, embedder);\n };\n return PDFImage;\n}());\nexport default PDFImage;\n//# sourceMappingURL=PDFImage.js.map","export var ImageAlignment;\n(function (ImageAlignment) {\n ImageAlignment[ImageAlignment[\"Left\"] = 0] = \"Left\";\n ImageAlignment[ImageAlignment[\"Center\"] = 1] = \"Center\";\n ImageAlignment[ImageAlignment[\"Right\"] = 2] = \"Right\";\n})(ImageAlignment || (ImageAlignment = {}));\n//# sourceMappingURL=alignment.js.map","import { __assign, __spreadArrays } from \"tslib\";\nimport PDFDocument from \"../PDFDocument\";\nimport { colorToComponents, setFillingColor } from \"../colors\";\nimport { toDegrees, rotateRectangle, reduceRotation, adjustDimsForRotation, degrees, } from \"../rotations\";\nimport { PDFRef, PDFWidgetAnnotation, PDFName, MethodNotImplementedError, AcroFieldFlags, PDFAcroTerminal, AnnotationFlags, } from \"../../core\";\nimport { assertIs, assertMultiple, assertOrUndefined } from \"../../utils\";\nimport { ImageAlignment } from '../image';\nimport { drawImage, rotateInPlace } from '../operations';\nexport var assertFieldAppearanceOptions = function (options) {\n assertOrUndefined(options === null || options === void 0 ? void 0 : options.x, 'options.x', ['number']);\n assertOrUndefined(options === null || options === void 0 ? void 0 : options.y, 'options.y', ['number']);\n assertOrUndefined(options === null || options === void 0 ? void 0 : options.width, 'options.width', ['number']);\n assertOrUndefined(options === null || options === void 0 ? void 0 : options.height, 'options.height', ['number']);\n assertOrUndefined(options === null || options === void 0 ? void 0 : options.textColor, 'options.textColor', [\n [Object, 'Color'],\n ]);\n assertOrUndefined(options === null || options === void 0 ? void 0 : options.backgroundColor, 'options.backgroundColor', [\n [Object, 'Color'],\n ]);\n assertOrUndefined(options === null || options === void 0 ? void 0 : options.borderColor, 'options.borderColor', [\n [Object, 'Color'],\n ]);\n assertOrUndefined(options === null || options === void 0 ? void 0 : options.borderWidth, 'options.borderWidth', ['number']);\n assertOrUndefined(options === null || options === void 0 ? void 0 : options.rotate, 'options.rotate', [[Object, 'Rotation']]);\n};\n/**\n * Represents a field of a [[PDFForm]].\n *\n * This class is effectively abstract. All fields in a [[PDFForm]] will\n * actually be an instance of a subclass of this class.\n *\n * Note that each field in a PDF is represented by a single field object.\n * However, a given field object may be rendered at multiple locations within\n * the document (across one or more pages). The rendering of a field is\n * controlled by its widgets. Each widget causes its field to be displayed at a\n * particular location in the document.\n *\n * Most of the time each field in a PDF has only a single widget, and thus is\n * only rendered once. However, if a field is rendered multiple times, it will\n * have multiple widgets - one for each location it is rendered.\n *\n * This abstraction of field objects and widgets is defined in the PDF\n * specification and dictates how PDF files store fields and where they are\n * to be rendered.\n */\nvar PDFField = /** @class */ (function () {\n function PDFField(acroField, ref, doc) {\n assertIs(acroField, 'acroField', [[PDFAcroTerminal, 'PDFAcroTerminal']]);\n assertIs(ref, 'ref', [[PDFRef, 'PDFRef']]);\n assertIs(doc, 'doc', [[PDFDocument, 'PDFDocument']]);\n this.acroField = acroField;\n this.ref = ref;\n this.doc = doc;\n }\n /**\n * Get the fully qualified name of this field. For example:\n * ```js\n * const fields = form.getFields()\n * fields.forEach(field => {\n * const name = field.getName()\n * console.log('Field name:', name)\n * })\n * ```\n * Note that PDF fields are structured as a tree. Each field is the\n * descendent of a series of ancestor nodes all the way up to the form node,\n * which is always the root of the tree. Each node in the tree (except for\n * the form node) has a partial name. Partial names can be composed of any\n * unicode characters except a period (`.`). The fully qualified name of a\n * field is composed of the partial names of all its ancestors joined\n * with periods. This means that splitting the fully qualified name on\n * periods and taking the last element of the resulting array will give you\n * the partial name of a specific field.\n * @returns The fully qualified name of this field.\n */\n PDFField.prototype.getName = function () {\n var _a;\n return (_a = this.acroField.getFullyQualifiedName()) !== null && _a !== void 0 ? _a : '';\n };\n /**\n * Returns `true` if this field is read only. This means that PDF readers\n * will not allow users to interact with the field or change its value. See\n * [[PDFField.enableReadOnly]] and [[PDFField.disableReadOnly]].\n * For example:\n * ```js\n * const field = form.getField('some.field')\n * if (field.isReadOnly()) console.log('Read only is enabled')\n * ```\n * @returns Whether or not this is a read only field.\n */\n PDFField.prototype.isReadOnly = function () {\n return this.acroField.hasFlag(AcroFieldFlags.ReadOnly);\n };\n /**\n * Prevent PDF readers from allowing users to interact with this field or\n * change its value. The field will not respond to mouse or keyboard input.\n * For example:\n * ```js\n * const field = form.getField('some.field')\n * field.enableReadOnly()\n * ```\n * Useful for fields whose values are computed, imported from a database, or\n * prefilled by software before being displayed to the user.\n */\n PDFField.prototype.enableReadOnly = function () {\n this.acroField.setFlagTo(AcroFieldFlags.ReadOnly, true);\n };\n /**\n * Allow users to interact with this field and change its value in PDF\n * readers via mouse and keyboard input. For example:\n * ```js\n * const field = form.getField('some.field')\n * field.disableReadOnly()\n * ```\n */\n PDFField.prototype.disableReadOnly = function () {\n this.acroField.setFlagTo(AcroFieldFlags.ReadOnly, false);\n };\n /**\n * Returns `true` if this field must have a value when the form is submitted.\n * See [[PDFField.enableRequired]] and [[PDFField.disableRequired]].\n * For example:\n * ```js\n * const field = form.getField('some.field')\n * if (field.isRequired()) console.log('Field is required')\n * ```\n * @returns Whether or not this field is required.\n */\n PDFField.prototype.isRequired = function () {\n return this.acroField.hasFlag(AcroFieldFlags.Required);\n };\n /**\n * Require this field to have a value when the form is submitted.\n * For example:\n * ```js\n * const field = form.getField('some.field')\n * field.enableRequired()\n * ```\n */\n PDFField.prototype.enableRequired = function () {\n this.acroField.setFlagTo(AcroFieldFlags.Required, true);\n };\n /**\n * Do not require this field to have a value when the form is submitted.\n * For example:\n * ```js\n * const field = form.getField('some.field')\n * field.disableRequired()\n * ```\n */\n PDFField.prototype.disableRequired = function () {\n this.acroField.setFlagTo(AcroFieldFlags.Required, false);\n };\n /**\n * Returns `true` if this field's value should be exported when the form is\n * submitted. See [[PDFField.enableExporting]] and\n * [[PDFField.disableExporting]].\n * For example:\n * ```js\n * const field = form.getField('some.field')\n * if (field.isExported()) console.log('Exporting is enabled')\n * ```\n * @returns Whether or not this field's value should be exported.\n */\n PDFField.prototype.isExported = function () {\n return !this.acroField.hasFlag(AcroFieldFlags.NoExport);\n };\n /**\n * Indicate that this field's value should be exported when the form is\n * submitted in a PDF reader. For example:\n * ```js\n * const field = form.getField('some.field')\n * field.enableExporting()\n * ```\n */\n PDFField.prototype.enableExporting = function () {\n this.acroField.setFlagTo(AcroFieldFlags.NoExport, false);\n };\n /**\n * Indicate that this field's value should **not** be exported when the form\n * is submitted in a PDF reader. For example:\n * ```js\n * const field = form.getField('some.field')\n * field.disableExporting()\n * ```\n */\n PDFField.prototype.disableExporting = function () {\n this.acroField.setFlagTo(AcroFieldFlags.NoExport, true);\n };\n /** @ignore */\n PDFField.prototype.needsAppearancesUpdate = function () {\n throw new MethodNotImplementedError(this.constructor.name, 'needsAppearancesUpdate');\n };\n /** @ignore */\n PDFField.prototype.defaultUpdateAppearances = function (_font) {\n throw new MethodNotImplementedError(this.constructor.name, 'defaultUpdateAppearances');\n };\n PDFField.prototype.markAsDirty = function () {\n this.doc.getForm().markFieldAsDirty(this.ref);\n };\n PDFField.prototype.markAsClean = function () {\n this.doc.getForm().markFieldAsClean(this.ref);\n };\n PDFField.prototype.isDirty = function () {\n return this.doc.getForm().fieldIsDirty(this.ref);\n };\n PDFField.prototype.createWidget = function (options) {\n var _a;\n var textColor = options.textColor;\n var backgroundColor = options.backgroundColor;\n var borderColor = options.borderColor;\n var borderWidth = options.borderWidth;\n var degreesAngle = toDegrees(options.rotate);\n var caption = options.caption;\n var x = options.x;\n var y = options.y;\n var width = options.width + borderWidth;\n var height = options.height + borderWidth;\n var hidden = Boolean(options.hidden);\n var pageRef = options.page;\n assertMultiple(degreesAngle, 'degreesAngle', 90);\n // Create a widget for this field\n var widget = PDFWidgetAnnotation.create(this.doc.context, this.ref);\n // Set widget properties\n var rect = rotateRectangle({ x: x, y: y, width: width, height: height }, borderWidth, degreesAngle);\n widget.setRectangle(rect);\n if (pageRef)\n widget.setP(pageRef);\n var ac = widget.getOrCreateAppearanceCharacteristics();\n if (backgroundColor) {\n ac.setBackgroundColor(colorToComponents(backgroundColor));\n }\n ac.setRotation(degreesAngle);\n if (caption)\n ac.setCaptions({ normal: caption });\n if (borderColor)\n ac.setBorderColor(colorToComponents(borderColor));\n var bs = widget.getOrCreateBorderStyle();\n if (borderWidth !== undefined)\n bs.setWidth(borderWidth);\n widget.setFlagTo(AnnotationFlags.Print, true);\n widget.setFlagTo(AnnotationFlags.Hidden, hidden);\n widget.setFlagTo(AnnotationFlags.Invisible, false);\n // Set acrofield properties\n if (textColor) {\n var da = (_a = this.acroField.getDefaultAppearance()) !== null && _a !== void 0 ? _a : '';\n var newDa = da + '\\n' + setFillingColor(textColor).toString();\n this.acroField.setDefaultAppearance(newDa);\n }\n return widget;\n };\n PDFField.prototype.updateWidgetAppearanceWithFont = function (widget, font, _a) {\n var normal = _a.normal, rollover = _a.rollover, down = _a.down;\n this.updateWidgetAppearances(widget, {\n normal: this.createAppearanceStream(widget, normal, font),\n rollover: rollover && this.createAppearanceStream(widget, rollover, font),\n down: down && this.createAppearanceStream(widget, down, font),\n });\n };\n PDFField.prototype.updateOnOffWidgetAppearance = function (widget, onValue, _a) {\n var normal = _a.normal, rollover = _a.rollover, down = _a.down;\n this.updateWidgetAppearances(widget, {\n normal: this.createAppearanceDict(widget, normal, onValue),\n rollover: rollover && this.createAppearanceDict(widget, rollover, onValue),\n down: down && this.createAppearanceDict(widget, down, onValue),\n });\n };\n PDFField.prototype.updateWidgetAppearances = function (widget, _a) {\n var normal = _a.normal, rollover = _a.rollover, down = _a.down;\n widget.setNormalAppearance(normal);\n if (rollover) {\n widget.setRolloverAppearance(rollover);\n }\n else {\n widget.removeRolloverAppearance();\n }\n if (down) {\n widget.setDownAppearance(down);\n }\n else {\n widget.removeDownAppearance();\n }\n };\n // // TODO: Do we need to do this...?\n // private foo(font: PDFFont, dict: PDFDict) {\n // if (!dict.lookup(PDFName.of('DR'))) {\n // dict.set(PDFName.of('DR'), dict.context.obj({}));\n // }\n // const DR = dict.lookup(PDFName.of('DR'), PDFDict);\n // if (!DR.lookup(PDFName.of('Font'))) {\n // DR.set(PDFName.of('Font'), dict.context.obj({}));\n // }\n // const Font = DR.lookup(PDFName.of('Font'), PDFDict);\n // Font.set(PDFName.of(font.name), font.ref);\n // }\n PDFField.prototype.createAppearanceStream = function (widget, appearance, font) {\n var _a;\n var context = this.acroField.dict.context;\n var _b = widget.getRectangle(), width = _b.width, height = _b.height;\n // TODO: Do we need to do this...?\n // if (font) {\n // this.foo(font, widget.dict);\n // this.foo(font, this.doc.getForm().acroForm.dict);\n // }\n // END TODO\n var Resources = font && { Font: (_a = {}, _a[font.name] = font.ref, _a) };\n var stream = context.formXObject(appearance, {\n Resources: Resources,\n BBox: context.obj([0, 0, width, height]),\n Matrix: context.obj([1, 0, 0, 1, 0, 0]),\n });\n var streamRef = context.register(stream);\n return streamRef;\n };\n /**\n * Create a FormXObject of the supplied image and add it to context.\n * The FormXObject size is calculated based on the widget (including\n * the alignment).\n * @param widget The widget that should display the image.\n * @param alignment The alignment of the image.\n * @param image The image that should be displayed.\n * @returns The ref for the FormXObject that was added to the context.\n */\n PDFField.prototype.createImageAppearanceStream = function (widget, image, alignment) {\n // NOTE: This implementation doesn't handle image borders.\n // NOTE: Acrobat seems to resize the image (maybe even skewing its aspect\n // ratio) to fit perfectly within the widget's rectangle. This method\n // does not currently do that. Should there be an option for that?\n var _a;\n var _b;\n var context = this.acroField.dict.context;\n var rectangle = widget.getRectangle();\n var ap = widget.getAppearanceCharacteristics();\n var bs = widget.getBorderStyle();\n var borderWidth = (_b = bs === null || bs === void 0 ? void 0 : bs.getWidth()) !== null && _b !== void 0 ? _b : 0;\n var rotation = reduceRotation(ap === null || ap === void 0 ? void 0 : ap.getRotation());\n var rotate = rotateInPlace(__assign(__assign({}, rectangle), { rotation: rotation }));\n var adj = adjustDimsForRotation(rectangle, rotation);\n var imageDims = image.scaleToFit(adj.width - borderWidth * 2, adj.height - borderWidth * 2);\n // Support borders on images and maybe other properties\n var options = {\n x: borderWidth,\n y: borderWidth,\n width: imageDims.width,\n height: imageDims.height,\n //\n rotate: degrees(0),\n xSkew: degrees(0),\n ySkew: degrees(0),\n };\n if (alignment === ImageAlignment.Center) {\n options.x += (adj.width - borderWidth * 2) / 2 - imageDims.width / 2;\n options.y += (adj.height - borderWidth * 2) / 2 - imageDims.height / 2;\n }\n else if (alignment === ImageAlignment.Right) {\n options.x = adj.width - borderWidth - imageDims.width;\n options.y = adj.height - borderWidth - imageDims.height;\n }\n var imageName = this.doc.context.addRandomSuffix('Image', 10);\n var appearance = __spreadArrays(rotate, drawImage(imageName, options));\n ////////////\n var Resources = { XObject: (_a = {}, _a[imageName] = image.ref, _a) };\n var stream = context.formXObject(appearance, {\n Resources: Resources,\n BBox: context.obj([0, 0, rectangle.width, rectangle.height]),\n Matrix: context.obj([1, 0, 0, 1, 0, 0]),\n });\n return context.register(stream);\n };\n PDFField.prototype.createAppearanceDict = function (widget, appearance, onValue) {\n var context = this.acroField.dict.context;\n var onStreamRef = this.createAppearanceStream(widget, appearance.on);\n var offStreamRef = this.createAppearanceStream(widget, appearance.off);\n var appearanceDict = context.obj({});\n appearanceDict.set(onValue, onStreamRef);\n appearanceDict.set(PDFName.of('Off'), offStreamRef);\n return appearanceDict;\n };\n return PDFField;\n}());\nexport default PDFField;\n//# sourceMappingURL=PDFField.js.map","import { __extends } from \"tslib\";\nimport PDFPage from \"../PDFPage\";\nimport { normalizeAppearance, defaultCheckBoxAppearanceProvider, } from \"./appearances\";\nimport { rgb } from \"../colors\";\nimport { degrees } from \"../rotations\";\nimport PDFField, { assertFieldAppearanceOptions, } from \"./PDFField\";\nimport { PDFName, PDFDict, PDFAcroCheckBox, } from \"../../core\";\nimport { assertIs, assertOrUndefined } from \"../../utils\";\n/**\n * Represents a check box field of a [[PDFForm]].\n *\n * [[PDFCheckBox]] fields are interactive boxes that users can click with their\n * mouse. This type of [[PDFField]] has two states: `on` and `off`. The purpose\n * of a check box is to enable users to select from one or more options, where\n * each option is represented by a single check box. Check boxes are typically\n * square in shape and display a check mark when they are in the `on` state.\n */\nvar PDFCheckBox = /** @class */ (function (_super) {\n __extends(PDFCheckBox, _super);\n function PDFCheckBox(acroCheckBox, ref, doc) {\n var _this = _super.call(this, acroCheckBox, ref, doc) || this;\n assertIs(acroCheckBox, 'acroCheckBox', [\n [PDFAcroCheckBox, 'PDFAcroCheckBox'],\n ]);\n _this.acroField = acroCheckBox;\n return _this;\n }\n /**\n * Mark this check box. This operation is analogous to a human user clicking\n * a check box to fill it in a PDF reader. This method will update the\n * underlying state of the check box field to indicate it has been selected.\n * PDF libraries and readers will be able to extract this value from the\n * saved document and determine that it was selected.\n *\n * For example:\n * ```js\n * const checkBox = form.getCheckBox('some.checkBox.field')\n * checkBox.check()\n * ```\n *\n * This method will mark this check box as dirty, causing its appearance\n * streams to be updated when either [[PDFDocument.save]] or\n * [[PDFForm.updateFieldAppearances]] is called. The updated appearance\n * streams will display a check mark inside the widgets of this check box\n * field.\n */\n PDFCheckBox.prototype.check = function () {\n var _a;\n var onValue = (_a = this.acroField.getOnValue()) !== null && _a !== void 0 ? _a : PDFName.of('Yes');\n this.markAsDirty();\n this.acroField.setValue(onValue);\n };\n /**\n * Clears this check box. This operation is analogous to a human user clicking\n * a check box to unmark it in a PDF reader. This method will update the\n * underlying state of the check box field to indicate it has been deselected.\n * PDF libraries and readers will be able to extract this value from the\n * saved document and determine that it was not selected.\n *\n * For example:\n * ```js\n * const checkBox = form.getCheckBox('some.checkBox.field')\n * checkBox.uncheck()\n * ```\n *\n * This method will mark this check box as dirty. See [[PDFCheckBox.check]]\n * for more details about what this means.\n */\n PDFCheckBox.prototype.uncheck = function () {\n this.markAsDirty();\n this.acroField.setValue(PDFName.of('Off'));\n };\n /**\n * Returns `true` if this check box is selected (either by a human user via\n * a PDF reader, or else programmatically via software). For example:\n * ```js\n * const checkBox = form.getCheckBox('some.checkBox.field')\n * if (checkBox.isChecked()) console.log('check box is selected')\n * ```\n * @returns Whether or not this check box is selected.\n */\n PDFCheckBox.prototype.isChecked = function () {\n var onValue = this.acroField.getOnValue();\n return !!onValue && onValue === this.acroField.getValue();\n };\n /**\n * Show this check box on the specified page. For example:\n * ```js\n * const helvetica = await pdfDoc.embedFont(StandardFonts.Helvetica)\n * const page = pdfDoc.addPage()\n *\n * const form = pdfDoc.getForm()\n * const checkBox = form.createCheckBox('some.checkBox.field')\n *\n * checkBox.addToPage(page, {\n * x: 50,\n * y: 75,\n * width: 25,\n * height: 25,\n * textColor: rgb(1, 0, 0),\n * backgroundColor: rgb(0, 1, 0),\n * borderColor: rgb(0, 0, 1),\n * borderWidth: 2,\n * rotate: degrees(90),\n * })\n * ```\n * This will create a new widget for this check box field.\n * @param page The page to which this check box widget should be added.\n * @param options The options to be used when adding this check box widget.\n */\n PDFCheckBox.prototype.addToPage = function (page, options) {\n var _a, _b, _c, _d, _e, _f;\n assertIs(page, 'page', [[PDFPage, 'PDFPage']]);\n assertFieldAppearanceOptions(options);\n if (!options)\n options = {};\n if (!('textColor' in options))\n options.textColor = rgb(0, 0, 0);\n if (!('backgroundColor' in options))\n options.backgroundColor = rgb(1, 1, 1);\n if (!('borderColor' in options))\n options.borderColor = rgb(0, 0, 0);\n if (!('borderWidth' in options))\n options.borderWidth = 1;\n // Create a widget for this check box\n var widget = this.createWidget({\n x: (_a = options.x) !== null && _a !== void 0 ? _a : 0,\n y: (_b = options.y) !== null && _b !== void 0 ? _b : 0,\n width: (_c = options.width) !== null && _c !== void 0 ? _c : 50,\n height: (_d = options.height) !== null && _d !== void 0 ? _d : 50,\n textColor: options.textColor,\n backgroundColor: options.backgroundColor,\n borderColor: options.borderColor,\n borderWidth: (_e = options.borderWidth) !== null && _e !== void 0 ? _e : 0,\n rotate: (_f = options.rotate) !== null && _f !== void 0 ? _f : degrees(0),\n hidden: options.hidden,\n page: page.ref,\n });\n var widgetRef = this.doc.context.register(widget.dict);\n // Add widget to this field\n this.acroField.addWidget(widgetRef);\n // Set appearance streams for widget\n widget.setAppearanceState(PDFName.of('Off'));\n this.updateWidgetAppearance(widget, PDFName.of('Yes'));\n // Add widget to the given page\n page.node.addAnnot(widgetRef);\n };\n /**\n * Returns `true` if any of this check box's widgets do not have an\n * appearance stream for its current state. For example:\n * ```js\n * const checkBox = form.getCheckBox('some.checkBox.field')\n * if (checkBox.needsAppearancesUpdate()) console.log('Needs update')\n * ```\n * @returns Whether or not this check box needs an appearance update.\n */\n PDFCheckBox.prototype.needsAppearancesUpdate = function () {\n var _a;\n var widgets = this.acroField.getWidgets();\n for (var idx = 0, len = widgets.length; idx < len; idx++) {\n var widget = widgets[idx];\n var state = widget.getAppearanceState();\n var normal = (_a = widget.getAppearances()) === null || _a === void 0 ? void 0 : _a.normal;\n if (!(normal instanceof PDFDict))\n return true;\n if (state && !normal.has(state))\n return true;\n }\n return false;\n };\n /**\n * Update the appearance streams for each of this check box's widgets using\n * the default appearance provider for check boxes. For example:\n * ```js\n * const checkBox = form.getCheckBox('some.checkBox.field')\n * checkBox.defaultUpdateAppearances()\n * ```\n */\n PDFCheckBox.prototype.defaultUpdateAppearances = function () {\n this.updateAppearances();\n };\n /**\n * Update the appearance streams for each of this check box's widgets using\n * the given appearance provider. If no `provider` is passed, the default\n * appearance provider for check boxs will be used. For example:\n * ```js\n * const checkBox = form.getCheckBox('some.checkBox.field')\n * checkBox.updateAppearances((field, widget) => {\n * ...\n * return {\n * normal: { on: drawCheckBox(...), off: drawCheckBox(...) },\n * down: { on: drawCheckBox(...), off: drawCheckBox(...) },\n * }\n * })\n * ```\n * @param provider Optionally, the appearance provider to be used for\n * generating the contents of the appearance streams.\n */\n PDFCheckBox.prototype.updateAppearances = function (provider) {\n var _a;\n assertOrUndefined(provider, 'provider', [Function]);\n var widgets = this.acroField.getWidgets();\n for (var idx = 0, len = widgets.length; idx < len; idx++) {\n var widget = widgets[idx];\n var onValue = (_a = widget.getOnValue()) !== null && _a !== void 0 ? _a : PDFName.of('Yes');\n if (!onValue)\n continue;\n this.updateWidgetAppearance(widget, onValue, provider);\n }\n this.markAsClean();\n };\n PDFCheckBox.prototype.updateWidgetAppearance = function (widget, onValue, provider) {\n var apProvider = provider !== null && provider !== void 0 ? provider : defaultCheckBoxAppearanceProvider;\n var appearances = normalizeAppearance(apProvider(this, widget));\n this.updateOnOffWidgetAppearance(widget, onValue, appearances);\n };\n /**\n * > **NOTE:** You probably don't want to call this method directly. Instead,\n * > consider using the [[PDFForm.getCheckBox]] method, which will create an\n * > instance of [[PDFCheckBox]] for you.\n *\n * Create an instance of [[PDFCheckBox]] from an existing acroCheckBox and ref\n *\n * @param acroCheckBox The underlying `PDFAcroCheckBox` for this check box.\n * @param ref The unique reference for this check box.\n * @param doc The document to which this check box will belong.\n */\n PDFCheckBox.of = function (acroCheckBox, ref, doc) {\n return new PDFCheckBox(acroCheckBox, ref, doc);\n };\n return PDFCheckBox;\n}(PDFField));\nexport default PDFCheckBox;\n//# sourceMappingURL=PDFCheckBox.js.map","import { __extends } from \"tslib\";\nimport PDFPage from \"../PDFPage\";\nimport PDFFont from \"../PDFFont\";\nimport PDFField, { assertFieldAppearanceOptions, } from \"./PDFField\";\nimport { normalizeAppearance, defaultDropdownAppearanceProvider, } from \"./appearances\";\nimport { rgb } from \"../colors\";\nimport { degrees } from \"../rotations\";\nimport { PDFHexString, PDFStream, PDFAcroComboBox, AcroChoiceFlags, } from \"../../core\";\nimport { assertIs, assertOrUndefined, assertPositive } from \"../../utils\";\n/**\n * Represents a dropdown field of a [[PDFForm]].\n *\n * [[PDFDropdown]] fields are interactive text boxes that display a single\n * element (the currently selected value). The purpose of a dropdown is to\n * enable users to select a single option from a set of possible options. Users\n * can click on a dropdown to view the full list of options it provides.\n * Clicking on an option in the list will cause it to be selected and displayed\n * in the dropdown's text box. Some dropdowns allow users to enter text\n * directly into the box from their keyboard, rather than only being allowed to\n * choose an option from the list (see [[PDFDropdown.isEditable]]).\n */\nvar PDFDropdown = /** @class */ (function (_super) {\n __extends(PDFDropdown, _super);\n function PDFDropdown(acroComboBox, ref, doc) {\n var _this = _super.call(this, acroComboBox, ref, doc) || this;\n assertIs(acroComboBox, 'acroComboBox', [\n [PDFAcroComboBox, 'PDFAcroComboBox'],\n ]);\n _this.acroField = acroComboBox;\n return _this;\n }\n /**\n * Get the list of available options for this dropdown. These options will be\n * displayed to users who click on this dropdown in a PDF reader.\n * For example:\n * ```js\n * const dropdown = form.getDropdown('some.dropdown.field')\n * const options = dropdown.getOptions()\n * console.log('Dropdown options:', options)\n * ```\n * @returns The options for this dropdown.\n */\n PDFDropdown.prototype.getOptions = function () {\n var rawOptions = this.acroField.getOptions();\n var options = new Array(rawOptions.length);\n for (var idx = 0, len = options.length; idx < len; idx++) {\n var _a = rawOptions[idx], display = _a.display, value = _a.value;\n options[idx] = (display !== null && display !== void 0 ? display : value).decodeText();\n }\n return options;\n };\n /**\n * Get the selected options for this dropdown. These are the values that were\n * selected by a human user via a PDF reader, or programatically via\n * software.\n * For example:\n * ```js\n * const dropdown = form.getDropdown('some.dropdown.field')\n * const selections = dropdown.getSelected()\n * console.log('Dropdown selections:', selections)\n * ```\n * > **NOTE:** Note that PDF readers only display one selected option when\n * > rendering dropdowns. However, the PDF specification does allow for\n * > multiple values to be selected in a dropdown. As such, the `pdf-lib`\n * > API supports this. However, in most cases the array returned by this\n * > method will contain only a single element (or no elements).\n * @returns The selected options in this dropdown.\n */\n PDFDropdown.prototype.getSelected = function () {\n var values = this.acroField.getValues();\n var selected = new Array(values.length);\n for (var idx = 0, len = values.length; idx < len; idx++) {\n selected[idx] = values[idx].decodeText();\n }\n return selected;\n };\n /**\n * Set the list of options that are available for this dropdown. These are\n * the values that will be available for users to select when they view this\n * dropdown in a PDF reader. Note that preexisting options for this dropdown\n * will be removed. Only the values passed as `options` will be available to\n * select.\n * For example:\n * ```js\n * const dropdown = form.getDropdown('planets.dropdown')\n * dropdown.setOptions(['Earth', 'Mars', 'Pluto', 'Venus'])\n * ```\n * @param options The options that should be available in this dropdown.\n */\n PDFDropdown.prototype.setOptions = function (options) {\n assertIs(options, 'options', [Array]);\n var optionObjects = new Array(options.length);\n for (var idx = 0, len = options.length; idx < len; idx++) {\n optionObjects[idx] = { value: PDFHexString.fromText(options[idx]) };\n }\n this.acroField.setOptions(optionObjects);\n };\n /**\n * Add to the list of options that are available for this dropdown. Users\n * will be able to select these values in a PDF reader. In addition to the\n * values passed as `options`, any preexisting options for this dropdown will\n * still be available for users to select.\n * For example:\n * ```js\n * const dropdown = form.getDropdown('rockets.dropdown')\n * dropdown.addOptions(['Saturn IV', 'Falcon Heavy'])\n * ```\n * @param options New options that should be available in this dropdown.\n */\n PDFDropdown.prototype.addOptions = function (options) {\n assertIs(options, 'options', ['string', Array]);\n var optionsArr = Array.isArray(options) ? options : [options];\n var existingOptions = this.acroField.getOptions();\n var newOptions = new Array(optionsArr.length);\n for (var idx = 0, len = optionsArr.length; idx < len; idx++) {\n newOptions[idx] = { value: PDFHexString.fromText(optionsArr[idx]) };\n }\n this.acroField.setOptions(existingOptions.concat(newOptions));\n };\n /**\n * Select one or more values for this dropdown. This operation is analogous\n * to a human user opening the dropdown in a PDF reader and clicking on a\n * value to select it. This method will update the underlying state of the\n * dropdown to indicate which values have been selected. PDF libraries and\n * readers will be able to extract these values from the saved document and\n * determine which values were selected.\n *\n * For example:\n * ```js\n * const dropdown = form.getDropdown('best.superhero.dropdown')\n * dropdown.select('One Punch Man')\n * ```\n *\n * This method will mark this dropdown as dirty, causing its appearance\n * streams to be updated when either [[PDFDocument.save]] or\n * [[PDFForm.updateFieldAppearances]] is called. The updated streams will\n * display the selected option inside the widgets of this dropdown.\n *\n * **IMPORTANT:** The default font used to update appearance streams is\n * [[StandardFonts.Helvetica]]. Note that this is a WinAnsi font. This means\n * that encoding errors will be thrown if the selected option for this field\n * contains characters outside the WinAnsi character set (the latin alphabet).\n *\n * Embedding a custom font and passing it to\n * [[PDFForm.updateFieldAppearances]] or [[PDFDropdown.updateAppearances]]\n * allows you to generate appearance streams with characters outside the\n * latin alphabet (assuming the custom font supports them).\n *\n * Selecting an option that does not exist in this dropdown's option list\n * (see [[PDFDropdown.getOptions]]) will enable editing on this dropdown\n * (see [[PDFDropdown.enableEditing]]).\n *\n * > **NOTE:** PDF readers only display one selected option when rendering\n * > dropdowns. However, the PDF specification does allow for multiple values\n * > to be selected in a dropdown. As such, the `pdf-lib` API supports this.\n * > However, it is not recommended to select more than one value with this\n * > method, as only one will be visible. [[PDFOptionList]] fields are better\n * > suited for displaying multiple selected values.\n *\n * @param options The options to be selected.\n * @param merge Whether or not existing selections should be preserved.\n */\n PDFDropdown.prototype.select = function (options, merge) {\n if (merge === void 0) { merge = false; }\n assertIs(options, 'options', ['string', Array]);\n assertIs(merge, 'merge', ['boolean']);\n var optionsArr = Array.isArray(options) ? options : [options];\n var validOptions = this.getOptions();\n var hasCustomOption = optionsArr.find(function (option) { return !validOptions.includes(option); });\n if (hasCustomOption)\n this.enableEditing();\n this.markAsDirty();\n if (optionsArr.length > 1 || (optionsArr.length === 1 && merge)) {\n this.enableMultiselect();\n }\n var values = new Array(optionsArr.length);\n for (var idx = 0, len = optionsArr.length; idx < len; idx++) {\n values[idx] = PDFHexString.fromText(optionsArr[idx]);\n }\n if (merge) {\n var existingValues = this.acroField.getValues();\n this.acroField.setValues(existingValues.concat(values));\n }\n else {\n this.acroField.setValues(values);\n }\n };\n /**\n * Clear all selected values for this dropdown. This operation is equivalent\n * to selecting an empty list. This method will update the underlying state\n * of the dropdown to indicate that no values have been selected.\n * For example:\n * ```js\n * const dropdown = form.getDropdown('some.dropdown.field')\n * dropdown.clear()\n * ```\n * This method will mark this text field as dirty. See [[PDFDropdown.select]]\n * for more details about what this means.\n */\n PDFDropdown.prototype.clear = function () {\n this.markAsDirty();\n this.acroField.setValues([]);\n };\n /**\n * Set the font size for this field. Larger font sizes will result in larger\n * text being displayed when PDF readers render this dropdown. Font sizes may\n * be integer or floating point numbers. Supplying a negative font size will\n * cause this method to throw an error.\n *\n * For example:\n * ```js\n * const dropdown = form.getDropdown('some.dropdown.field')\n * dropdown.setFontSize(4)\n * dropdown.setFontSize(15.7)\n * ```\n *\n * > This method depends upon the existence of a default appearance\n * > (`/DA`) string. If this field does not have a default appearance string,\n * > or that string does not contain a font size (via the `Tf` operator),\n * > then this method will throw an error.\n *\n * @param fontSize The font size to be used when rendering text in this field.\n */\n PDFDropdown.prototype.setFontSize = function (fontSize) {\n assertPositive(fontSize, 'fontSize');\n this.acroField.setFontSize(fontSize);\n this.markAsDirty();\n };\n /**\n * Returns `true` if users are allowed to edit the selected value of this\n * dropdown directly and are not constrained by the list of available\n * options. See [[PDFDropdown.enableEditing]] and\n * [[PDFDropdown.disableEditing]]. For example:\n * ```js\n * const dropdown = form.getDropdown('some.dropdown.field')\n * if (dropdown.isEditable()) console.log('Editing is enabled')\n * ```\n * @returns Whether or not this dropdown is editable.\n */\n PDFDropdown.prototype.isEditable = function () {\n return this.acroField.hasFlag(AcroChoiceFlags.Edit);\n };\n /**\n * Allow users to edit the selected value of this dropdown in PDF readers\n * with their keyboard. This means that the selected value of this dropdown\n * will not be constrained by the list of available options. However, if this\n * dropdown has any available options, users will still be allowed to select\n * from that list.\n * For example:\n * ```js\n * const dropdown = form.getDropdown('some.dropdown.field')\n * dropdown.enableEditing()\n * ```\n */\n PDFDropdown.prototype.enableEditing = function () {\n this.acroField.setFlagTo(AcroChoiceFlags.Edit, true);\n };\n /**\n * Do not allow users to edit the selected value of this dropdown in PDF\n * readers with their keyboard. This will constrain the selected value of\n * this dropdown to the list of available options. Users will only be able\n * to select an option from that list.\n * For example:\n * ```js\n * const dropdown = form.getDropdown('some.dropdown.field')\n * dropdown.disableEditing()\n * ```\n */\n PDFDropdown.prototype.disableEditing = function () {\n this.acroField.setFlagTo(AcroChoiceFlags.Edit, false);\n };\n /**\n * Returns `true` if the option list of this dropdown is always displayed\n * in alphabetical order, irrespective of the order in which the options\n * were added to the dropdown. See [[PDFDropdown.enableSorting]] and\n * [[PDFDropdown.disableSorting]]. For example:\n * ```js\n * const dropdown = form.getDropdown('some.dropdown.field')\n * if (dropdown.isSorted()) console.log('Sorting is enabled')\n * ```\n * @returns Whether or not this dropdown's options are sorted.\n */\n PDFDropdown.prototype.isSorted = function () {\n return this.acroField.hasFlag(AcroChoiceFlags.Sort);\n };\n /**\n * Always display the option list of this dropdown in alphabetical order,\n * irrespective of the order in which the options were added to this dropdown.\n * For example:\n * ```js\n * const dropdown = form.getDropdown('some.dropdown.field')\n * dropdown.enableSorting()\n * ```\n */\n PDFDropdown.prototype.enableSorting = function () {\n this.acroField.setFlagTo(AcroChoiceFlags.Sort, true);\n };\n /**\n * Do not always display the option list of this dropdown in alphabetical\n * order. Instead, display the options in whichever order they were added\n * to the list. For example:\n * ```js\n * const dropdown = form.getDropdown('some.dropdown.field')\n * dropdown.disableSorting()\n * ```\n */\n PDFDropdown.prototype.disableSorting = function () {\n this.acroField.setFlagTo(AcroChoiceFlags.Sort, false);\n };\n /**\n * Returns `true` if multiple options can be selected from this dropdown's\n * option list. See [[PDFDropdown.enableMultiselect]] and\n * [[PDFDropdown.disableMultiselect]]. For example:\n * ```js\n * const dropdown = form.getDropdown('some.dropdown.field')\n * if (dropdown.isMultiselect()) console.log('Multiselect is enabled')\n * ```\n * @returns Whether or not multiple options can be selected.\n */\n PDFDropdown.prototype.isMultiselect = function () {\n return this.acroField.hasFlag(AcroChoiceFlags.MultiSelect);\n };\n /**\n * Allow users to select more than one option from this dropdown's option\n * list. For example:\n * ```js\n * const dropdown = form.getDropdown('some.dropdown.field')\n * dropdown.enableMultiselect()\n * ```\n */\n PDFDropdown.prototype.enableMultiselect = function () {\n this.acroField.setFlagTo(AcroChoiceFlags.MultiSelect, true);\n };\n /**\n * Do not allow users to select more than one option from this dropdown's\n * option list. For example:\n * ```js\n * const dropdown = form.getDropdown('some.dropdown.field')\n * dropdown.disableMultiselect()\n * ```\n */\n PDFDropdown.prototype.disableMultiselect = function () {\n this.acroField.setFlagTo(AcroChoiceFlags.MultiSelect, false);\n };\n /**\n * Returns `true` if the selected option should be spell checked by PDF\n * readers. Spell checking will only be performed if this dropdown allows\n * editing (see [[PDFDropdown.isEditable]]). See\n * [[PDFDropdown.enableSpellChecking]] and\n * [[PDFDropdown.disableSpellChecking]]. For example:\n * ```js\n * const dropdown = form.getDropdown('some.dropdown.field')\n * if (dropdown.isSpellChecked()) console.log('Spell checking is enabled')\n * ```\n * @returns Whether or not this dropdown can be spell checked.\n */\n PDFDropdown.prototype.isSpellChecked = function () {\n return !this.acroField.hasFlag(AcroChoiceFlags.DoNotSpellCheck);\n };\n /**\n * Allow PDF readers to spell check the selected option of this dropdown.\n * For example:\n * ```js\n * const dropdown = form.getDropdown('some.dropdown.field')\n * dropdown.enableSpellChecking()\n * ```\n */\n PDFDropdown.prototype.enableSpellChecking = function () {\n this.acroField.setFlagTo(AcroChoiceFlags.DoNotSpellCheck, false);\n };\n /**\n * Do not allow PDF readers to spell check the selected option of this\n * dropdown. For example:\n * ```js\n * const dropdown = form.getDropdown('some.dropdown.field')\n * dropdown.disableSpellChecking()\n * ```\n */\n PDFDropdown.prototype.disableSpellChecking = function () {\n this.acroField.setFlagTo(AcroChoiceFlags.DoNotSpellCheck, true);\n };\n /**\n * Returns `true` if the option selected by a user is stored, or \"committed\",\n * when the user clicks the option. The alternative is that the user's\n * selection is stored when the user leaves this dropdown field (by clicking\n * outside of it - on another field, for example). See\n * [[PDFDropdown.enableSelectOnClick]] and\n * [[PDFDropdown.disableSelectOnClick]]. For example:\n * ```js\n * const dropdown = form.getDropdown('some.dropdown.field')\n * if (dropdown.isSelectOnClick()) console.log('Select on click is enabled')\n * ```\n * @returns Whether or not options are selected immediately after they are\n * clicked.\n */\n PDFDropdown.prototype.isSelectOnClick = function () {\n return this.acroField.hasFlag(AcroChoiceFlags.CommitOnSelChange);\n };\n /**\n * Store the option selected by a user immediately after the user clicks the\n * option. Do not wait for the user to leave this dropdown field (by clicking\n * outside of it - on another field, for example). For example:\n * ```js\n * const dropdown = form.getDropdown('some.dropdown.field')\n * dropdown.enableSelectOnClick()\n * ```\n */\n PDFDropdown.prototype.enableSelectOnClick = function () {\n this.acroField.setFlagTo(AcroChoiceFlags.CommitOnSelChange, true);\n };\n /**\n * Wait to store the option selected by a user until they leave this dropdown\n * field (by clicking outside of it - on another field, for example).\n * For example:\n * ```js\n * const dropdown = form.getDropdown('some.dropdown.field')\n * dropdown.disableSelectOnClick()\n * ```\n */\n PDFDropdown.prototype.disableSelectOnClick = function () {\n this.acroField.setFlagTo(AcroChoiceFlags.CommitOnSelChange, false);\n };\n /**\n * Show this dropdown on the specified page. For example:\n * ```js\n * const ubuntuFont = await pdfDoc.embedFont(ubuntuFontBytes)\n * const page = pdfDoc.addPage()\n *\n * const form = pdfDoc.getForm()\n * const dropdown = form.createDropdown('best.gundam')\n * dropdown.setOptions(['Exia', 'Dynames'])\n * dropdown.select('Exia')\n *\n * dropdown.addToPage(page, {\n * x: 50,\n * y: 75,\n * width: 200,\n * height: 100,\n * textColor: rgb(1, 0, 0),\n * backgroundColor: rgb(0, 1, 0),\n * borderColor: rgb(0, 0, 1),\n * borderWidth: 2,\n * rotate: degrees(90),\n * font: ubuntuFont,\n * })\n * ```\n * This will create a new widget for this dropdown field.\n * @param page The page to which this dropdown widget should be added.\n * @param options The options to be used when adding this dropdown widget.\n */\n PDFDropdown.prototype.addToPage = function (page, options) {\n var _a, _b, _c, _d, _e, _f, _g;\n assertIs(page, 'page', [[PDFPage, 'PDFPage']]);\n assertFieldAppearanceOptions(options);\n if (!options)\n options = {};\n if (!('textColor' in options))\n options.textColor = rgb(0, 0, 0);\n if (!('backgroundColor' in options))\n options.backgroundColor = rgb(1, 1, 1);\n if (!('borderColor' in options))\n options.borderColor = rgb(0, 0, 0);\n if (!('borderWidth' in options))\n options.borderWidth = 1;\n // Create a widget for this dropdown\n var widget = this.createWidget({\n x: (_a = options.x) !== null && _a !== void 0 ? _a : 0,\n y: (_b = options.y) !== null && _b !== void 0 ? _b : 0,\n width: (_c = options.width) !== null && _c !== void 0 ? _c : 200,\n height: (_d = options.height) !== null && _d !== void 0 ? _d : 50,\n textColor: options.textColor,\n backgroundColor: options.backgroundColor,\n borderColor: options.borderColor,\n borderWidth: (_e = options.borderWidth) !== null && _e !== void 0 ? _e : 0,\n rotate: (_f = options.rotate) !== null && _f !== void 0 ? _f : degrees(0),\n hidden: options.hidden,\n page: page.ref,\n });\n var widgetRef = this.doc.context.register(widget.dict);\n // Add widget to this field\n this.acroField.addWidget(widgetRef);\n // Set appearance streams for widget\n var font = (_g = options.font) !== null && _g !== void 0 ? _g : this.doc.getForm().getDefaultFont();\n this.updateWidgetAppearance(widget, font);\n // Add widget to the given page\n page.node.addAnnot(widgetRef);\n };\n /**\n * Returns `true` if this dropdown has been marked as dirty, or if any of\n * this dropdown's widgets do not have an appearance stream. For example:\n * ```js\n * const dropdown = form.getDropdown('some.dropdown.field')\n * if (dropdown.needsAppearancesUpdate()) console.log('Needs update')\n * ```\n * @returns Whether or not this dropdown needs an appearance update.\n */\n PDFDropdown.prototype.needsAppearancesUpdate = function () {\n var _a;\n if (this.isDirty())\n return true;\n var widgets = this.acroField.getWidgets();\n for (var idx = 0, len = widgets.length; idx < len; idx++) {\n var widget = widgets[idx];\n var hasAppearances = ((_a = widget.getAppearances()) === null || _a === void 0 ? void 0 : _a.normal) instanceof PDFStream;\n if (!hasAppearances)\n return true;\n }\n return false;\n };\n /**\n * Update the appearance streams for each of this dropdown's widgets using\n * the default appearance provider for dropdowns. For example:\n * ```js\n * const helvetica = await pdfDoc.embedFont(StandardFonts.Helvetica)\n * const dropdown = form.getDropdown('some.dropdown.field')\n * dropdown.defaultUpdateAppearances(helvetica)\n * ```\n * @param font The font to be used for creating the appearance streams.\n */\n PDFDropdown.prototype.defaultUpdateAppearances = function (font) {\n assertIs(font, 'font', [[PDFFont, 'PDFFont']]);\n this.updateAppearances(font);\n };\n /**\n * Update the appearance streams for each of this dropdown's widgets using\n * the given appearance provider. If no `provider` is passed, the default\n * appearance provider for dropdowns will be used. For example:\n * ```js\n * const helvetica = await pdfDoc.embedFont(StandardFonts.Helvetica)\n * const dropdown = form.getDropdown('some.dropdown.field')\n * dropdown.updateAppearances(helvetica, (field, widget, font) => {\n * ...\n * return drawTextField(...)\n * })\n * ```\n * @param font The font to be used for creating the appearance streams.\n * @param provider Optionally, the appearance provider to be used for\n * generating the contents of the appearance streams.\n */\n PDFDropdown.prototype.updateAppearances = function (font, provider) {\n assertIs(font, 'font', [[PDFFont, 'PDFFont']]);\n assertOrUndefined(provider, 'provider', [Function]);\n var widgets = this.acroField.getWidgets();\n for (var idx = 0, len = widgets.length; idx < len; idx++) {\n var widget = widgets[idx];\n this.updateWidgetAppearance(widget, font, provider);\n }\n this.markAsClean();\n };\n // getOption(index: number): string {}\n // getSelectedIndices(): number[] {}\n // removeOptions(option: string | string[]) {}\n // removeIndices(option: number[]) {}\n // deselect(options: string | string[]) {}\n // deselectIndices(optionIndices: number[]) {}\n PDFDropdown.prototype.updateWidgetAppearance = function (widget, font, provider) {\n var apProvider = provider !== null && provider !== void 0 ? provider : defaultDropdownAppearanceProvider;\n var appearances = normalizeAppearance(apProvider(this, widget, font));\n this.updateWidgetAppearanceWithFont(widget, font, appearances);\n };\n /**\n * > **NOTE:** You probably don't want to call this method directly. Instead,\n * > consider using the [[PDFForm.getDropdown]] method, which will create an\n * > instance of [[PDFDropdown]] for you.\n *\n * Create an instance of [[PDFDropdown]] from an existing acroComboBox and ref\n *\n * @param acroComboBox The underlying `PDFAcroComboBox` for this dropdown.\n * @param ref The unique reference for this dropdown.\n * @param doc The document to which this dropdown will belong.\n */\n PDFDropdown.of = function (acroComboBox, ref, doc) {\n return new PDFDropdown(acroComboBox, ref, doc);\n };\n return PDFDropdown;\n}(PDFField));\nexport default PDFDropdown;\n//# sourceMappingURL=PDFDropdown.js.map","import { __extends } from \"tslib\";\nimport PDFPage from \"../PDFPage\";\nimport PDFFont from \"../PDFFont\";\nimport PDFField, { assertFieldAppearanceOptions, } from \"./PDFField\";\nimport { normalizeAppearance, defaultOptionListAppearanceProvider, } from \"./appearances\";\nimport { rgb } from \"../colors\";\nimport { degrees } from \"../rotations\";\nimport { PDFHexString, PDFStream, PDFAcroListBox, AcroChoiceFlags, } from \"../../core\";\nimport { assertIs, assertIsSubset, assertOrUndefined, assertPositive, } from \"../../utils\";\n/**\n * Represents an option list field of a [[PDFForm]].\n *\n * [[PDFOptionList]] fields are interactive lists of options. The purpose of an\n * option list is to enable users to select one or more options from a set of\n * possible options. Users are able to see the full set of options without\n * first having to click on the field (though scrolling may be necessary).\n * Clicking an option in the list will cause it to be selected and displayed\n * with a highlighted background. Some option lists allow users to select\n * more than one option (see [[PDFOptionList.isMultiselect]]).\n */\nvar PDFOptionList = /** @class */ (function (_super) {\n __extends(PDFOptionList, _super);\n function PDFOptionList(acroListBox, ref, doc) {\n var _this = _super.call(this, acroListBox, ref, doc) || this;\n assertIs(acroListBox, 'acroListBox', [[PDFAcroListBox, 'PDFAcroListBox']]);\n _this.acroField = acroListBox;\n return _this;\n }\n /**\n * Get the list of available options for this option list. These options will\n * be displayed to users who view this option list in a PDF reader.\n * For example:\n * ```js\n * const optionList = form.getOptionList('some.optionList.field')\n * const options = optionList.getOptions()\n * console.log('Option List options:', options)\n * ```\n * @returns The options for this option list.\n */\n PDFOptionList.prototype.getOptions = function () {\n var rawOptions = this.acroField.getOptions();\n var options = new Array(rawOptions.length);\n for (var idx = 0, len = options.length; idx < len; idx++) {\n var _a = rawOptions[idx], display = _a.display, value = _a.value;\n options[idx] = (display !== null && display !== void 0 ? display : value).decodeText();\n }\n return options;\n };\n /**\n * Get the selected options for this option list. These are the values that\n * were selected by a human user via a PDF reader, or programatically via\n * software.\n * For example:\n * ```js\n * const optionList = form.getOptionList('some.optionList.field')\n * const selections = optionList.getSelected()\n * console.log('Option List selections:', selections)\n * ```\n * @returns The selected options for this option list.\n */\n PDFOptionList.prototype.getSelected = function () {\n var values = this.acroField.getValues();\n var selected = new Array(values.length);\n for (var idx = 0, len = values.length; idx < len; idx++) {\n selected[idx] = values[idx].decodeText();\n }\n return selected;\n };\n /**\n * Set the list of options that are available for this option list. These are\n * the values that will be available for users to select when they view this\n * option list in a PDF reader. Note that preexisting options for this\n * option list will be removed. Only the values passed as `options` will be\n * available to select.\n *\n * For example:\n * ```js\n * const optionList = form.getOptionList('planets.optionList')\n * optionList.setOptions(['Earth', 'Mars', 'Pluto', 'Venus'])\n * ```\n *\n * This method will mark this option list as dirty, causing its appearance\n * streams to be updated when either [[PDFDocument.save]] or\n * [[PDFForm.updateFieldAppearances]] is called. The updated streams will\n * display the options this field contains inside the widgets of this text\n * field (with selected options highlighted).\n *\n * **IMPORTANT:** The default font used to update appearance streams is\n * [[StandardFonts.Helvetica]]. Note that this is a WinAnsi font. This means\n * that encoding errors will be thrown if this field contains any options\n * with characters outside the WinAnsi character set (the latin alphabet).\n *\n * Embedding a custom font and passing it to\n * [[PDFForm.updateFieldAppearances]] or [[PDFOptionList.updateAppearances]]\n * allows you to generate appearance streams with characters outside the\n * latin alphabet (assuming the custom font supports them).\n *\n * @param options The options that should be available in this option list.\n */\n PDFOptionList.prototype.setOptions = function (options) {\n assertIs(options, 'options', [Array]);\n this.markAsDirty();\n var optionObjects = new Array(options.length);\n for (var idx = 0, len = options.length; idx < len; idx++) {\n optionObjects[idx] = { value: PDFHexString.fromText(options[idx]) };\n }\n this.acroField.setOptions(optionObjects);\n };\n /**\n * Add to the list of options that are available for this option list. Users\n * will be able to select these values in a PDF reader. In addition to the\n * values passed as `options`, any preexisting options for this option list\n * will still be available for users to select.\n * For example:\n * ```js\n * const optionList = form.getOptionList('rockets.optionList')\n * optionList.addOptions(['Saturn IV', 'Falcon Heavy'])\n * ```\n * This method will mark this option list as dirty. See\n * [[PDFOptionList.setOptions]] for more details about what this means.\n * @param options New options that should be available in this option list.\n */\n PDFOptionList.prototype.addOptions = function (options) {\n assertIs(options, 'options', ['string', Array]);\n this.markAsDirty();\n var optionsArr = Array.isArray(options) ? options : [options];\n var existingOptions = this.acroField.getOptions();\n var newOptions = new Array(optionsArr.length);\n for (var idx = 0, len = optionsArr.length; idx < len; idx++) {\n newOptions[idx] = { value: PDFHexString.fromText(optionsArr[idx]) };\n }\n this.acroField.setOptions(existingOptions.concat(newOptions));\n };\n /**\n * Select one or more values for this option list. This operation is analogous\n * to a human user opening the option list in a PDF reader and clicking on one\n * or more values to select them. This method will update the underlying state\n * of the option list to indicate which values have been selected. PDF\n * libraries and readers will be able to extract these values from the saved\n * document and determine which values were selected.\n * For example:\n * ```js\n * const optionList = form.getOptionList('best.superheroes.optionList')\n * optionList.select(['One Punch Man', 'Iron Man'])\n * ```\n * This method will mark this option list as dirty. See\n * [[PDFOptionList.setOptions]] for more details about what this means.\n * @param options The options to be selected.\n * @param merge Whether or not existing selections should be preserved.\n */\n PDFOptionList.prototype.select = function (options, merge) {\n if (merge === void 0) { merge = false; }\n assertIs(options, 'options', ['string', Array]);\n assertIs(merge, 'merge', ['boolean']);\n var optionsArr = Array.isArray(options) ? options : [options];\n var validOptions = this.getOptions();\n assertIsSubset(optionsArr, 'option', validOptions);\n this.markAsDirty();\n if (optionsArr.length > 1 || (optionsArr.length === 1 && merge)) {\n this.enableMultiselect();\n }\n var values = new Array(optionsArr.length);\n for (var idx = 0, len = optionsArr.length; idx < len; idx++) {\n values[idx] = PDFHexString.fromText(optionsArr[idx]);\n }\n if (merge) {\n var existingValues = this.acroField.getValues();\n this.acroField.setValues(existingValues.concat(values));\n }\n else {\n this.acroField.setValues(values);\n }\n };\n /**\n * Clear all selected values for this option list. This operation is\n * equivalent to selecting an empty list. This method will update the\n * underlying state of the option list to indicate that no values have been\n * selected.\n * For example:\n * ```js\n * const optionList = form.getOptionList('some.optionList.field')\n * optionList.clear()\n * ```\n * This method will mark this option list as dirty. See\n * [[PDFOptionList.setOptions]] for more details about what this means.\n */\n PDFOptionList.prototype.clear = function () {\n this.markAsDirty();\n this.acroField.setValues([]);\n };\n /**\n * Set the font size for the text in this field. There needs to be a\n * default appearance string (DA) set with a font value specified\n * for this to work. For example:\n * ```js\n * const optionList = form.getOptionList('some.optionList.field')\n * optionList.setFontSize(4);\n * ```\n * @param fontSize The font size to set the font to.\n */\n /**\n * Set the font size for this field. Larger font sizes will result in larger\n * text being displayed when PDF readers render this option list. Font sizes\n * may be integer or floating point numbers. Supplying a negative font size\n * will cause this method to throw an error.\n *\n * For example:\n * ```js\n * const optionList = form.getOptionList('some.optionList.field')\n * optionList.setFontSize(4)\n * optionList.setFontSize(15.7)\n * ```\n *\n * > This method depends upon the existence of a default appearance\n * > (`/DA`) string. If this field does not have a default appearance string,\n * > or that string does not contain a font size (via the `Tf` operator),\n * > then this method will throw an error.\n *\n * @param fontSize The font size to be used when rendering text in this field.\n */\n PDFOptionList.prototype.setFontSize = function (fontSize) {\n assertPositive(fontSize, 'fontSize');\n this.acroField.setFontSize(fontSize);\n this.markAsDirty();\n };\n /**\n * Returns `true` if the options of this option list are always displayed\n * in alphabetical order, irrespective of the order in which the options\n * were added to the option list. See [[PDFOptionList.enableSorting]] and\n * [[PDFOptionList.disableSorting]]. For example:\n * ```js\n * const optionList = form.getOptionList('some.optionList.field')\n * if (optionList.isSorted()) console.log('Sorting is enabled')\n * ```\n * @returns Whether or not this option list is sorted.\n */\n PDFOptionList.prototype.isSorted = function () {\n return this.acroField.hasFlag(AcroChoiceFlags.Sort);\n };\n /**\n * Always display the options of this option list in alphabetical order,\n * irrespective of the order in which the options were added to this option\n * list.\n * For example:\n * ```js\n * const optionList = form.getOptionList('some.optionList.field')\n * optionList.enableSorting()\n * ```\n */\n PDFOptionList.prototype.enableSorting = function () {\n this.acroField.setFlagTo(AcroChoiceFlags.Sort, true);\n };\n /**\n * Do not always display the options of this option list in alphabetical\n * order. Instead, display the options in whichever order they were added\n * to this option list. For example:\n * ```js\n * const optionList = form.getOptionList('some.optionList.field')\n * optionList.disableSorting()\n * ```\n */\n PDFOptionList.prototype.disableSorting = function () {\n this.acroField.setFlagTo(AcroChoiceFlags.Sort, false);\n };\n /**\n * Returns `true` if multiple options can be selected from this option list.\n * See [[PDFOptionList.enableMultiselect]] and\n * [[PDFOptionList.disableMultiselect]]. For example:\n * ```js\n * const optionList = form.getOptionList('some.optionList.field')\n * if (optionList.isMultiselect()) console.log('Multiselect is enabled')\n * ```\n * @returns Whether or not multiple options can be selected.\n */\n PDFOptionList.prototype.isMultiselect = function () {\n return this.acroField.hasFlag(AcroChoiceFlags.MultiSelect);\n };\n /**\n * Allow users to select more than one option from this option list.\n * For example:\n * ```js\n * const optionList = form.getOptionList('some.optionList.field')\n * optionList.enableMultiselect()\n * ```\n */\n PDFOptionList.prototype.enableMultiselect = function () {\n this.acroField.setFlagTo(AcroChoiceFlags.MultiSelect, true);\n };\n /**\n * Do not allow users to select more than one option from this option list.\n * For example:\n * ```js\n * const optionList = form.getOptionList('some.optionList.field')\n * optionList.disableMultiselect()\n * ```\n */\n PDFOptionList.prototype.disableMultiselect = function () {\n this.acroField.setFlagTo(AcroChoiceFlags.MultiSelect, false);\n };\n /**\n * Returns `true` if the option selected by a user is stored, or \"committed\",\n * when the user clicks the option. The alternative is that the user's\n * selection is stored when the user leaves this option list field (by\n * clicking outside of it - on another field, for example). See\n * [[PDFOptionList.enableSelectOnClick]] and\n * [[PDFOptionList.disableSelectOnClick]]. For example:\n * ```js\n * const optionList = form.getOptionList('some.optionList.field')\n * if (optionList.isSelectOnClick()) console.log('Select on click is enabled')\n * ```\n * @returns Whether or not options are selected immediately after they are\n * clicked.\n */\n PDFOptionList.prototype.isSelectOnClick = function () {\n return this.acroField.hasFlag(AcroChoiceFlags.CommitOnSelChange);\n };\n /**\n * Store the option selected by a user immediately after the user clicks the\n * option. Do not wait for the user to leave this option list field (by\n * clicking outside of it - on another field, for example). For example:\n * ```js\n * const optionList = form.getOptionList('some.optionList.field')\n * optionList.enableSelectOnClick()\n * ```\n */\n PDFOptionList.prototype.enableSelectOnClick = function () {\n this.acroField.setFlagTo(AcroChoiceFlags.CommitOnSelChange, true);\n };\n /**\n * Wait to store the option selected by a user until they leave this option\n * list field (by clicking outside of it - on another field, for example).\n * For example:\n * ```js\n * const optionList = form.getOptionList('some.optionList.field')\n * optionList.disableSelectOnClick()\n * ```\n */\n PDFOptionList.prototype.disableSelectOnClick = function () {\n this.acroField.setFlagTo(AcroChoiceFlags.CommitOnSelChange, false);\n };\n /**\n * Show this option list on the specified page. For example:\n * ```js\n * const ubuntuFont = await pdfDoc.embedFont(ubuntuFontBytes)\n * const page = pdfDoc.addPage()\n *\n * const form = pdfDoc.getForm()\n * const optionList = form.createOptionList('best.gundams')\n * optionList.setOptions(['Exia', 'Dynames', 'Kyrios', 'Virtue'])\n * optionList.select(['Exia', 'Virtue'])\n *\n * optionList.addToPage(page, {\n * x: 50,\n * y: 75,\n * width: 200,\n * height: 100,\n * textColor: rgb(1, 0, 0),\n * backgroundColor: rgb(0, 1, 0),\n * borderColor: rgb(0, 0, 1),\n * borderWidth: 2,\n * rotate: degrees(90),\n * font: ubuntuFont,\n * })\n * ```\n * This will create a new widget for this option list field.\n * @param page The page to which this option list widget should be added.\n * @param options The options to be used when adding this option list widget.\n */\n PDFOptionList.prototype.addToPage = function (page, options) {\n var _a, _b, _c, _d, _e, _f, _g;\n assertIs(page, 'page', [[PDFPage, 'PDFPage']]);\n assertFieldAppearanceOptions(options);\n if (!options)\n options = {};\n if (!('textColor' in options))\n options.textColor = rgb(0, 0, 0);\n if (!('backgroundColor' in options))\n options.backgroundColor = rgb(1, 1, 1);\n if (!('borderColor' in options))\n options.borderColor = rgb(0, 0, 0);\n if (!('borderWidth' in options))\n options.borderWidth = 1;\n // Create a widget for this option list\n var widget = this.createWidget({\n x: (_a = options.x) !== null && _a !== void 0 ? _a : 0,\n y: (_b = options.y) !== null && _b !== void 0 ? _b : 0,\n width: (_c = options.width) !== null && _c !== void 0 ? _c : 200,\n height: (_d = options.height) !== null && _d !== void 0 ? _d : 100,\n textColor: options.textColor,\n backgroundColor: options.backgroundColor,\n borderColor: options.borderColor,\n borderWidth: (_e = options.borderWidth) !== null && _e !== void 0 ? _e : 0,\n rotate: (_f = options.rotate) !== null && _f !== void 0 ? _f : degrees(0),\n hidden: options.hidden,\n page: page.ref,\n });\n var widgetRef = this.doc.context.register(widget.dict);\n // Add widget to this field\n this.acroField.addWidget(widgetRef);\n // Set appearance streams for widget\n var font = (_g = options.font) !== null && _g !== void 0 ? _g : this.doc.getForm().getDefaultFont();\n this.updateWidgetAppearance(widget, font);\n // Add widget to the given page\n page.node.addAnnot(widgetRef);\n };\n /**\n * Returns `true` if this option list has been marked as dirty, or if any of\n * this option list's widgets do not have an appearance stream. For example:\n * ```js\n * const optionList = form.getOptionList('some.optionList.field')\n * if (optionList.needsAppearancesUpdate()) console.log('Needs update')\n * ```\n * @returns Whether or not this option list needs an appearance update.\n */\n PDFOptionList.prototype.needsAppearancesUpdate = function () {\n var _a;\n if (this.isDirty())\n return true;\n var widgets = this.acroField.getWidgets();\n for (var idx = 0, len = widgets.length; idx < len; idx++) {\n var widget = widgets[idx];\n var hasAppearances = ((_a = widget.getAppearances()) === null || _a === void 0 ? void 0 : _a.normal) instanceof PDFStream;\n if (!hasAppearances)\n return true;\n }\n return false;\n };\n /**\n * Update the appearance streams for each of this option list's widgets using\n * the default appearance provider for option lists. For example:\n * ```js\n * const helvetica = await pdfDoc.embedFont(StandardFonts.Helvetica)\n * const optionList = form.getOptionList('some.optionList.field')\n * optionList.defaultUpdateAppearances(helvetica)\n * ```\n * @param font The font to be used for creating the appearance streams.\n */\n PDFOptionList.prototype.defaultUpdateAppearances = function (font) {\n assertIs(font, 'font', [[PDFFont, 'PDFFont']]);\n this.updateAppearances(font);\n };\n /**\n * Update the appearance streams for each of this option list's widgets using\n * the given appearance provider. If no `provider` is passed, the default\n * appearance provider for option lists will be used. For example:\n * ```js\n * const helvetica = await pdfDoc.embedFont(StandardFonts.Helvetica)\n * const optionList = form.getOptionList('some.optionList.field')\n * optionList.updateAppearances(helvetica, (field, widget, font) => {\n * ...\n * return drawOptionList(...)\n * })\n * ```\n * @param font The font to be used for creating the appearance streams.\n * @param provider Optionally, the appearance provider to be used for\n * generating the contents of the appearance streams.\n */\n PDFOptionList.prototype.updateAppearances = function (font, provider) {\n assertIs(font, 'font', [[PDFFont, 'PDFFont']]);\n assertOrUndefined(provider, 'provider', [Function]);\n var widgets = this.acroField.getWidgets();\n for (var idx = 0, len = widgets.length; idx < len; idx++) {\n var widget = widgets[idx];\n this.updateWidgetAppearance(widget, font, provider);\n }\n this.markAsClean();\n };\n // getOption(index: number): string {}\n // getSelectedIndices(): number[] {}\n // removeOptions(option: string | string[]) {}\n // removeIndices(option: number[]) {}\n // deselect(options: string | string[]) {}\n // deselectIndices(optionIndices: number[]) {}\n PDFOptionList.prototype.updateWidgetAppearance = function (widget, font, provider) {\n var apProvider = provider !== null && provider !== void 0 ? provider : defaultOptionListAppearanceProvider;\n var appearances = normalizeAppearance(apProvider(this, widget, font));\n this.updateWidgetAppearanceWithFont(widget, font, appearances);\n };\n /**\n * > **NOTE:** You probably don't want to call this method directly. Instead,\n * > consider using the [[PDFForm.getOptionList]] method, which will create\n * > an instance of [[PDFOptionList]] for you.\n *\n * Create an instance of [[PDFOptionList]] from an existing acroListBox and\n * ref\n *\n * @param acroComboBox The underlying `PDFAcroListBox` for this option list.\n * @param ref The unique reference for this option list.\n * @param doc The document to which this option list will belong.\n */\n PDFOptionList.of = function (acroListBox, ref, doc) {\n return new PDFOptionList(acroListBox, ref, doc);\n };\n return PDFOptionList;\n}(PDFField));\nexport default PDFOptionList;\n//# sourceMappingURL=PDFOptionList.js.map","import { __extends } from \"tslib\";\nimport PDFPage from \"../PDFPage\";\nimport PDFField, { assertFieldAppearanceOptions, } from \"./PDFField\";\nimport { normalizeAppearance, defaultRadioGroupAppearanceProvider, } from \"./appearances\";\nimport { rgb } from \"../colors\";\nimport { degrees } from \"../rotations\";\nimport { PDFName, PDFHexString, PDFDict, PDFAcroRadioButton, AcroButtonFlags, } from \"../../core\";\nimport { assertIs, assertOrUndefined, assertIsOneOf } from \"../../utils\";\n/**\n * Represents a radio group field of a [[PDFForm]].\n *\n * [[PDFRadioGroup]] fields are collections of radio buttons. The purpose of a\n * radio group is to enable users to select one option from a set of mutually\n * exclusive choices. Each choice in a radio group is represented by a radio\n * button. Radio buttons each have two states: `on` and `off`. At most one\n * radio button in a group may be in the `on` state at any time. Users can\n * click on a radio button to select it (and thereby automatically deselect any\n * other radio button that might have already been selected). Some radio\n * groups allow users to toggle a selected radio button `off` by clicking on\n * it (see [[PDFRadioGroup.isOffToggleable]]).\n *\n * Note that some radio groups allow multiple radio buttons to be in the `on`\n * state at the same type **if** they represent the same underlying value (see\n * [[PDFRadioGroup.isMutuallyExclusive]]).\n */\nvar PDFRadioGroup = /** @class */ (function (_super) {\n __extends(PDFRadioGroup, _super);\n function PDFRadioGroup(acroRadioButton, ref, doc) {\n var _this = _super.call(this, acroRadioButton, ref, doc) || this;\n assertIs(acroRadioButton, 'acroRadioButton', [\n [PDFAcroRadioButton, 'PDFAcroRadioButton'],\n ]);\n _this.acroField = acroRadioButton;\n return _this;\n }\n /**\n * Get the list of available options for this radio group. Each option is\n * represented by a radio button. These radio buttons are displayed at\n * various locations in the document, potentially on different pages (though\n * typically they are stacked horizontally or vertically on the same page).\n * For example:\n * ```js\n * const radioGroup = form.getRadioGroup('some.radioGroup.field')\n * const options = radioGroup.getOptions()\n * console.log('Radio Group options:', options)\n * ```\n * @returns The options for this radio group.\n */\n PDFRadioGroup.prototype.getOptions = function () {\n var exportValues = this.acroField.getExportValues();\n if (exportValues) {\n var exportOptions = new Array(exportValues.length);\n for (var idx = 0, len = exportValues.length; idx < len; idx++) {\n exportOptions[idx] = exportValues[idx].decodeText();\n }\n return exportOptions;\n }\n var onValues = this.acroField.getOnValues();\n var onOptions = new Array(onValues.length);\n for (var idx = 0, len = onOptions.length; idx < len; idx++) {\n onOptions[idx] = onValues[idx].decodeText();\n }\n return onOptions;\n };\n /**\n * Get the selected option for this radio group. The selected option is\n * represented by the radio button in this group that is turned on. At most\n * one radio button in a group can be selected. If no buttons in this group\n * are selected, `undefined` is returned.\n * For example:\n * ```js\n * const radioGroup = form.getRadioGroup('some.radioGroup.field')\n * const selected = radioGroup.getSelected()\n * console.log('Selected radio button:', selected)\n * ```\n * @returns The selected option for this radio group.\n */\n PDFRadioGroup.prototype.getSelected = function () {\n var value = this.acroField.getValue();\n if (value === PDFName.of('Off'))\n return undefined;\n var exportValues = this.acroField.getExportValues();\n if (exportValues) {\n var onValues = this.acroField.getOnValues();\n for (var idx = 0, len = onValues.length; idx < len; idx++) {\n if (onValues[idx] === value)\n return exportValues[idx].decodeText();\n }\n }\n return value.decodeText();\n };\n // // TODO: Figure out why this seems to crash Acrobat. Maybe it's because we\n // // aren't removing the widget reference from the page's Annots?\n // removeOption(option: string) {\n // assertIs(option, 'option', ['string']);\n // // TODO: Assert is valid `option`!\n // const onValues = this.acroField.getOnValues();\n // const exportValues = this.acroField.getExportValues();\n // if (exportValues) {\n // for (let idx = 0, len = exportValues.length; idx < len; idx++) {\n // if (exportValues[idx].decodeText() === option) {\n // this.acroField.removeWidget(idx);\n // this.acroField.removeExportValue(idx);\n // }\n // }\n // } else {\n // for (let idx = 0, len = onValues.length; idx < len; idx++) {\n // const value = onValues[idx];\n // if (value.decodeText() === option) {\n // this.acroField.removeWidget(idx);\n // this.acroField.removeExportValue(idx);\n // }\n // }\n // }\n // }\n /**\n * Select an option for this radio group. This operation is analogous to a\n * human user clicking one of the radio buttons in this group via a PDF\n * reader to toggle it on. This method will update the underlying state of\n * the radio group to indicate which option has been selected. PDF libraries\n * and readers will be able to extract this value from the saved document and\n * determine which option was selected.\n *\n * For example:\n * ```js\n * const radioGroup = form.getRadioGroup('best.superhero.radioGroup')\n * radioGroup.select('One Punch Man')\n * ```\n *\n * This method will mark this radio group as dirty, causing its appearance\n * streams to be updated when either [[PDFDocument.save]] or\n * [[PDFForm.updateFieldAppearances]] is called. The updated appearance\n * streams will display a dot inside the widget of this check box field\n * that represents the selected option.\n *\n * @param option The option to be selected.\n */\n PDFRadioGroup.prototype.select = function (option) {\n assertIs(option, 'option', ['string']);\n var validOptions = this.getOptions();\n assertIsOneOf(option, 'option', validOptions);\n this.markAsDirty();\n var onValues = this.acroField.getOnValues();\n var exportValues = this.acroField.getExportValues();\n if (exportValues) {\n for (var idx = 0, len = exportValues.length; idx < len; idx++) {\n if (exportValues[idx].decodeText() === option) {\n this.acroField.setValue(onValues[idx]);\n }\n }\n }\n else {\n for (var idx = 0, len = onValues.length; idx < len; idx++) {\n var value = onValues[idx];\n if (value.decodeText() === option)\n this.acroField.setValue(value);\n }\n }\n };\n /**\n * Clear any selected option for this dropdown. This will result in all\n * radio buttons in this group being toggled off. This method will update\n * the underlying state of the dropdown to indicate that no radio buttons\n * have been selected.\n * For example:\n * ```js\n * const radioGroup = form.getRadioGroup('some.radioGroup.field')\n * radioGroup.clear()\n * ```\n * This method will mark this radio group as dirty. See\n * [[PDFRadioGroup.select]] for more details about what this means.\n */\n PDFRadioGroup.prototype.clear = function () {\n this.markAsDirty();\n this.acroField.setValue(PDFName.of('Off'));\n };\n /**\n * Returns `true` if users can click on radio buttons in this group to toggle\n * them off. The alternative is that once a user clicks on a radio button\n * to select it, the only way to deselect it is by selecting on another radio\n * button in the group. See [[PDFRadioGroup.enableOffToggling]] and\n * [[PDFRadioGroup.disableOffToggling]]. For example:\n * ```js\n * const radioGroup = form.getRadioGroup('some.radioGroup.field')\n * if (radioGroup.isOffToggleable()) console.log('Off toggling is enabled')\n * ```\n */\n PDFRadioGroup.prototype.isOffToggleable = function () {\n return !this.acroField.hasFlag(AcroButtonFlags.NoToggleToOff);\n };\n /**\n * Allow users to click on selected radio buttons in this group to toggle\n * them off. For example:\n * ```js\n * const radioGroup = form.getRadioGroup('some.radioGroup.field')\n * radioGroup.enableOffToggling()\n * ```\n * > **NOTE:** This feature is documented in the PDF specification\n * > (Table 226). However, most PDF readers do not respect this option and\n * > prevent users from toggling radio buttons off even when it is enabled.\n * > At the time of this writing (9/6/2020) Mac's Preview software did\n * > respect the option. Adobe Acrobat, Foxit Reader, and Google Chrome did\n * > not.\n */\n PDFRadioGroup.prototype.enableOffToggling = function () {\n this.acroField.setFlagTo(AcroButtonFlags.NoToggleToOff, false);\n };\n /**\n * Prevent users from clicking on selected radio buttons in this group to\n * toggle them off. Clicking on a selected radio button will have no effect.\n * The only way to deselect a selected radio button is to click on a\n * different radio button in the group. For example:\n * ```js\n * const radioGroup = form.getRadioGroup('some.radioGroup.field')\n * radioGroup.disableOffToggling()\n * ```\n */\n PDFRadioGroup.prototype.disableOffToggling = function () {\n this.acroField.setFlagTo(AcroButtonFlags.NoToggleToOff, true);\n };\n /**\n * Returns `true` if the radio buttons in this group are mutually exclusive.\n * This means that when the user selects a radio button, only that specific\n * button will be turned on. Even if other radio buttons in the group\n * represent the same value, they will not be enabled. The alternative to\n * this is that clicking a radio button will select that button along with\n * any other radio buttons in the group that share the same value. See\n * [[PDFRadioGroup.enableMutualExclusion]] and\n * [[PDFRadioGroup.disableMutualExclusion]].\n * For example:\n * ```js\n * const radioGroup = form.getRadioGroup('some.radioGroup.field')\n * if (radioGroup.isMutuallyExclusive()) console.log('Mutual exclusion is enabled')\n * ```\n */\n PDFRadioGroup.prototype.isMutuallyExclusive = function () {\n return !this.acroField.hasFlag(AcroButtonFlags.RadiosInUnison);\n };\n /**\n * When the user clicks a radio button in this group it will be selected. In\n * addition, any other radio buttons in this group that share the same\n * underlying value will also be selected. For example:\n * ```js\n * const radioGroup = form.getRadioGroup('some.radioGroup.field')\n * radioGroup.enableMutualExclusion()\n * ```\n * Note that this option must be enabled prior to adding options to the\n * radio group. It does not currently apply retroactively to existing\n * radio buttons in the group.\n */\n PDFRadioGroup.prototype.enableMutualExclusion = function () {\n this.acroField.setFlagTo(AcroButtonFlags.RadiosInUnison, false);\n };\n /**\n * When the user clicks a radio button in this group only it will be selected.\n * No other radio buttons in the group will be selected, even if they share\n * the same underlying value. For example:\n * ```js\n * const radioGroup = form.getRadioGroup('some.radioGroup.field')\n * radioGroup.disableMutualExclusion()\n * ```\n * Note that this option must be disabled prior to adding options to the\n * radio group. It does not currently apply retroactively to existing\n * radio buttons in the group.\n */\n PDFRadioGroup.prototype.disableMutualExclusion = function () {\n this.acroField.setFlagTo(AcroButtonFlags.RadiosInUnison, true);\n };\n /**\n * Add a new radio button to this group on the specified page. For example:\n * ```js\n * const page = pdfDoc.addPage()\n *\n * const form = pdfDoc.getForm()\n * const radioGroup = form.createRadioGroup('best.gundam')\n *\n * const options = {\n * x: 50,\n * width: 25,\n * height: 25,\n * textColor: rgb(1, 0, 0),\n * backgroundColor: rgb(0, 1, 0),\n * borderColor: rgb(0, 0, 1),\n * borderWidth: 2,\n * rotate: degrees(90),\n * }\n *\n * radioGroup.addOptionToPage('Exia', page, { ...options, y: 50 })\n * radioGroup.addOptionToPage('Dynames', page, { ...options, y: 110 })\n * ```\n * This will create a new radio button widget for this radio group field.\n * @param option The option that the radio button widget represents.\n * @param page The page to which the radio button widget should be added.\n * @param options The options to be used when adding the radio button widget.\n */\n PDFRadioGroup.prototype.addOptionToPage = function (option, page, options) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n assertIs(option, 'option', ['string']);\n assertIs(page, 'page', [[PDFPage, 'PDFPage']]);\n assertFieldAppearanceOptions(options);\n // Create a widget for this radio button\n var widget = this.createWidget({\n x: (_a = options === null || options === void 0 ? void 0 : options.x) !== null && _a !== void 0 ? _a : 0,\n y: (_b = options === null || options === void 0 ? void 0 : options.y) !== null && _b !== void 0 ? _b : 0,\n width: (_c = options === null || options === void 0 ? void 0 : options.width) !== null && _c !== void 0 ? _c : 50,\n height: (_d = options === null || options === void 0 ? void 0 : options.height) !== null && _d !== void 0 ? _d : 50,\n textColor: (_e = options === null || options === void 0 ? void 0 : options.textColor) !== null && _e !== void 0 ? _e : rgb(0, 0, 0),\n backgroundColor: (_f = options === null || options === void 0 ? void 0 : options.backgroundColor) !== null && _f !== void 0 ? _f : rgb(1, 1, 1),\n borderColor: (_g = options === null || options === void 0 ? void 0 : options.borderColor) !== null && _g !== void 0 ? _g : rgb(0, 0, 0),\n borderWidth: (_h = options === null || options === void 0 ? void 0 : options.borderWidth) !== null && _h !== void 0 ? _h : 1,\n rotate: (_j = options === null || options === void 0 ? void 0 : options.rotate) !== null && _j !== void 0 ? _j : degrees(0),\n hidden: options === null || options === void 0 ? void 0 : options.hidden,\n page: page.ref,\n });\n var widgetRef = this.doc.context.register(widget.dict);\n // Add widget to this field\n var apStateValue = this.acroField.addWidgetWithOpt(widgetRef, PDFHexString.fromText(option), !this.isMutuallyExclusive());\n // Set appearance streams for widget\n widget.setAppearanceState(PDFName.of('Off'));\n this.updateWidgetAppearance(widget, apStateValue);\n // Add widget to the given page\n page.node.addAnnot(widgetRef);\n };\n /**\n * Returns `true` if any of this group's radio button widgets do not have an\n * appearance stream for their current state. For example:\n * ```js\n * const radioGroup = form.getRadioGroup('some.radioGroup.field')\n * if (radioGroup.needsAppearancesUpdate()) console.log('Needs update')\n * ```\n * @returns Whether or not this radio group needs an appearance update.\n */\n PDFRadioGroup.prototype.needsAppearancesUpdate = function () {\n var _a;\n var widgets = this.acroField.getWidgets();\n for (var idx = 0, len = widgets.length; idx < len; idx++) {\n var widget = widgets[idx];\n var state = widget.getAppearanceState();\n var normal = (_a = widget.getAppearances()) === null || _a === void 0 ? void 0 : _a.normal;\n if (!(normal instanceof PDFDict))\n return true;\n if (state && !normal.has(state))\n return true;\n }\n return false;\n };\n /**\n * Update the appearance streams for each of this group's radio button widgets\n * using the default appearance provider for radio groups. For example:\n * ```js\n * const radioGroup = form.getRadioGroup('some.radioGroup.field')\n * radioGroup.defaultUpdateAppearances()\n * ```\n */\n PDFRadioGroup.prototype.defaultUpdateAppearances = function () {\n this.updateAppearances();\n };\n // rg.updateAppearances((field: any, widget: any) => {\n // assert(field === rg);\n // assert(widget instanceof PDFWidgetAnnotation);\n // return { on: [...rectangle, ...circle], off: [...rectangle, ...circle] };\n // });\n /**\n * Update the appearance streams for each of this group's radio button widgets\n * using the given appearance provider. If no `provider` is passed, the\n * default appearance provider for radio groups will be used. For example:\n * ```js\n * const radioGroup = form.getRadioGroup('some.radioGroup.field')\n * radioGroup.updateAppearances((field, widget) => {\n * ...\n * return {\n * normal: { on: drawRadioButton(...), off: drawRadioButton(...) },\n * down: { on: drawRadioButton(...), off: drawRadioButton(...) },\n * }\n * })\n * ```\n * @param provider Optionally, the appearance provider to be used for\n * generating the contents of the appearance streams.\n */\n PDFRadioGroup.prototype.updateAppearances = function (provider) {\n assertOrUndefined(provider, 'provider', [Function]);\n var widgets = this.acroField.getWidgets();\n for (var idx = 0, len = widgets.length; idx < len; idx++) {\n var widget = widgets[idx];\n var onValue = widget.getOnValue();\n if (!onValue)\n continue;\n this.updateWidgetAppearance(widget, onValue, provider);\n }\n };\n PDFRadioGroup.prototype.updateWidgetAppearance = function (widget, onValue, provider) {\n var apProvider = provider !== null && provider !== void 0 ? provider : defaultRadioGroupAppearanceProvider;\n var appearances = normalizeAppearance(apProvider(this, widget));\n this.updateOnOffWidgetAppearance(widget, onValue, appearances);\n };\n /**\n * > **NOTE:** You probably don't want to call this method directly. Instead,\n * > consider using the [[PDFForm.getOptionList]] method, which will create an\n * > instance of [[PDFOptionList]] for you.\n *\n * Create an instance of [[PDFOptionList]] from an existing acroRadioButton\n * and ref\n *\n * @param acroRadioButton The underlying `PDFAcroRadioButton` for this\n * radio group.\n * @param ref The unique reference for this radio group.\n * @param doc The document to which this radio group will belong.\n */\n PDFRadioGroup.of = function (acroRadioButton, ref, doc) { return new PDFRadioGroup(acroRadioButton, ref, doc); };\n return PDFRadioGroup;\n}(PDFField));\nexport default PDFRadioGroup;\n//# sourceMappingURL=PDFRadioGroup.js.map","import { __extends } from \"tslib\";\nimport PDFField from \"./PDFField\";\nimport { PDFAcroSignature } from \"../../core\";\nimport { assertIs } from \"../../utils\";\n/**\n * Represents a signature field of a [[PDFForm]].\n *\n * [[PDFSignature]] fields are digital signatures. `pdf-lib` does not\n * currently provide any specialized APIs for creating digital signatures or\n * reading the contents of existing digital signatures.\n */\nvar PDFSignature = /** @class */ (function (_super) {\n __extends(PDFSignature, _super);\n function PDFSignature(acroSignature, ref, doc) {\n var _this = _super.call(this, acroSignature, ref, doc) || this;\n assertIs(acroSignature, 'acroSignature', [\n [PDFAcroSignature, 'PDFAcroSignature'],\n ]);\n _this.acroField = acroSignature;\n return _this;\n }\n PDFSignature.prototype.needsAppearancesUpdate = function () {\n return false;\n };\n /**\n * > **NOTE:** You probably don't want to call this method directly. Instead,\n * > consider using the [[PDFForm.getSignature]] method, which will create an\n * > instance of [[PDFSignature]] for you.\n *\n * Create an instance of [[PDFSignature]] from an existing acroSignature and\n * ref\n *\n * @param acroSignature The underlying `PDFAcroSignature` for this signature.\n * @param ref The unique reference for this signature.\n * @param doc The document to which this signature will belong.\n */\n PDFSignature.of = function (acroSignature, ref, doc) { return new PDFSignature(acroSignature, ref, doc); };\n return PDFSignature;\n}(PDFField));\nexport default PDFSignature;\n//# sourceMappingURL=PDFSignature.js.map","import { __extends } from \"tslib\";\nimport PDFPage from \"../PDFPage\";\nimport PDFFont from \"../PDFFont\";\nimport PDFField, { assertFieldAppearanceOptions, } from \"./PDFField\";\nimport { normalizeAppearance, defaultTextFieldAppearanceProvider, } from \"./appearances\";\nimport { rgb } from \"../colors\";\nimport { degrees } from \"../rotations\";\nimport { RichTextFieldReadError, ExceededMaxLengthError, InvalidMaxLengthError, } from \"../errors\";\nimport { ImageAlignment } from \"../image/alignment\";\nimport { TextAlignment } from \"../text/alignment\";\nimport { PDFHexString, PDFStream, PDFAcroText, AcroTextFlags, } from \"../../core\";\nimport { assertIs, assertIsOneOf, assertOrUndefined, assertPositive, assertRangeOrUndefined, } from \"../../utils\";\n/**\n * Represents a text field of a [[PDFForm]].\n *\n * [[PDFTextField]] fields are boxes that display text entered by the user. The\n * purpose of a text field is to enable users to enter text or view text values\n * in the document prefilled by software. Users can click on a text field and\n * input text via their keyboard. Some text fields allow multiple lines of text\n * to be entered (see [[PDFTextField.isMultiline]]).\n */\nvar PDFTextField = /** @class */ (function (_super) {\n __extends(PDFTextField, _super);\n function PDFTextField(acroText, ref, doc) {\n var _this = _super.call(this, acroText, ref, doc) || this;\n assertIs(acroText, 'acroText', [[PDFAcroText, 'PDFAcroText']]);\n _this.acroField = acroText;\n return _this;\n }\n /**\n * Get the text that this field contains. This text is visible to users who\n * view this field in a PDF reader.\n *\n * For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * const text = textField.getText()\n * console.log('Text field contents:', text)\n * ```\n *\n * Note that if this text field contains no underlying value, `undefined`\n * will be returned. Text fields may also contain an underlying value that\n * is simply an empty string (`''`). This detail is largely irrelevant for\n * most applications. In general, you'll want to treat both cases the same\n * way and simply consider the text field to be empty. In either case, the\n * text field will appear empty to users when viewed in a PDF reader.\n *\n * An error will be thrown if this is a rich text field. `pdf-lib` does not\n * support reading rich text fields. Nor do most PDF readers and writers.\n * Rich text fields are based on XFA (XML Forms Architecture). Relatively few\n * PDFs use rich text fields or XFA. Unlike PDF itself, XFA is not an ISO\n * standard. XFA has been deprecated in PDF 2.0:\n * * https://en.wikipedia.org/wiki/XFA\n * * http://blog.pdfshareforms.com/pdf-2-0-release-bid-farewell-xfa-forms/\n *\n * @returns The text contained in this text field.\n */\n PDFTextField.prototype.getText = function () {\n var value = this.acroField.getValue();\n if (!value && this.isRichFormatted()) {\n throw new RichTextFieldReadError(this.getName());\n }\n return value === null || value === void 0 ? void 0 : value.decodeText();\n };\n /**\n * Set the text for this field. This operation is analogous to a human user\n * clicking on the text field in a PDF reader and typing in text via their\n * keyboard. This method will update the underlying state of the text field\n * to indicate what text has been set. PDF libraries and readers will be able\n * to extract these values from the saved document and determine what text\n * was set.\n *\n * For example:\n * ```js\n * const textField = form.getTextField('best.superhero.text.field')\n * textField.setText('One Punch Man')\n * ```\n *\n * This method will mark this text field as dirty, causing its appearance\n * streams to be updated when either [[PDFDocument.save]] or\n * [[PDFForm.updateFieldAppearances]] is called. The updated streams will\n * display the text this field contains inside the widgets of this text\n * field.\n *\n * **IMPORTANT:** The default font used to update appearance streams is\n * [[StandardFonts.Helvetica]]. Note that this is a WinAnsi font. This means\n * that encoding errors will be thrown if this field contains text outside\n * the WinAnsi character set (the latin alphabet).\n *\n * Embedding a custom font and passing it to\n * [[PDFForm.updateFieldAppearances]] or [[PDFTextField.updateAppearances]]\n * allows you to generate appearance streams with characters outside the\n * latin alphabet (assuming the custom font supports them).\n *\n * If this is a rich text field, it will be converted to a standard text\n * field in order to set the text. `pdf-lib` does not support writing rich\n * text strings. Nor do most PDF readers and writers. See\n * [[PDFTextField.getText]] for more information about rich text fields and\n * their deprecation in PDF 2.0.\n *\n * @param text The text this field should contain.\n */\n PDFTextField.prototype.setText = function (text) {\n assertOrUndefined(text, 'text', ['string']);\n var maxLength = this.getMaxLength();\n if (maxLength !== undefined && text && text.length > maxLength) {\n throw new ExceededMaxLengthError(text.length, maxLength, this.getName());\n }\n this.markAsDirty();\n this.disableRichFormatting();\n if (text) {\n this.acroField.setValue(PDFHexString.fromText(text));\n }\n else {\n this.acroField.removeValue();\n }\n };\n /**\n * Get the alignment for this text field. This value represents the\n * justification of the text when it is displayed to the user in PDF readers.\n * There are three possible alignments: left, center, and right. For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * const alignment = textField.getAlignment()\n * if (alignment === TextAlignment.Left) console.log('Text is left justified')\n * if (alignment === TextAlignment.Center) console.log('Text is centered')\n * if (alignment === TextAlignment.Right) console.log('Text is right justified')\n * ```\n * @returns The alignment of this text field.\n */\n PDFTextField.prototype.getAlignment = function () {\n var quadding = this.acroField.getQuadding();\n // prettier-ignore\n return (quadding === 0 ? TextAlignment.Left\n : quadding === 1 ? TextAlignment.Center\n : quadding === 2 ? TextAlignment.Right\n : TextAlignment.Left);\n };\n /**\n * Set the alignment for this text field. This will determine the\n * justification of the text when it is displayed to the user in PDF readers.\n * There are three possible alignments: left, center, and right. For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n *\n * // Text will be left justified when displayed\n * textField.setAlignment(TextAlignment.Left)\n *\n * // Text will be centered when displayed\n * textField.setAlignment(TextAlignment.Center)\n *\n * // Text will be right justified when displayed\n * textField.setAlignment(TextAlignment.Right)\n * ```\n * This method will mark this text field as dirty. See\n * [[PDFTextField.setText]] for more details about what this means.\n * @param alignment The alignment for this text field.\n */\n PDFTextField.prototype.setAlignment = function (alignment) {\n assertIsOneOf(alignment, 'alignment', TextAlignment);\n this.markAsDirty();\n this.acroField.setQuadding(alignment);\n };\n /**\n * Get the maximum length of this field. This value represents the maximum\n * number of characters that can be typed into this field by the user. If\n * this field does not have a maximum length, `undefined` is returned.\n * For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * const maxLength = textField.getMaxLength()\n * if (maxLength === undefined) console.log('No max length')\n * else console.log(`Max length is ${maxLength}`)\n * ```\n * @returns The maximum number of characters allowed in this field, or\n * `undefined` if no limit exists.\n */\n PDFTextField.prototype.getMaxLength = function () {\n return this.acroField.getMaxLength();\n };\n /**\n * Set the maximum length of this field. This limits the number of characters\n * that can be typed into this field by the user. This also limits the length\n * of the string that can be passed to [[PDFTextField.setText]]. This limit\n * can be removed by passing `undefined` as `maxLength`. For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n *\n * // Allow between 0 and 5 characters to be entered\n * textField.setMaxLength(5)\n *\n * // Allow any number of characters to be entered\n * textField.setMaxLength(undefined)\n * ```\n * This method will mark this text field as dirty. See\n * [[PDFTextField.setText]] for more details about what this means.\n * @param maxLength The maximum number of characters allowed in this field, or\n * `undefined` to remove the limit.\n */\n PDFTextField.prototype.setMaxLength = function (maxLength) {\n assertRangeOrUndefined(maxLength, 'maxLength', 0, Number.MAX_SAFE_INTEGER);\n this.markAsDirty();\n if (maxLength === undefined) {\n this.acroField.removeMaxLength();\n }\n else {\n var text = this.getText();\n if (text && text.length > maxLength) {\n throw new InvalidMaxLengthError(text.length, maxLength, this.getName());\n }\n this.acroField.setMaxLength(maxLength);\n }\n };\n /**\n * Remove the maximum length for this text field. This allows any number of\n * characters to be typed into this field by the user. For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * textField.removeMaxLength()\n * ```\n * Calling this method is equivalent to passing `undefined` to\n * [[PDFTextField.setMaxLength]].\n */\n PDFTextField.prototype.removeMaxLength = function () {\n this.markAsDirty();\n this.acroField.removeMaxLength();\n };\n /**\n * Display an image inside the bounds of this text field's widgets. For example:\n * ```js\n * const pngImage = await pdfDoc.embedPng(...)\n * const textField = form.getTextField('some.text.field')\n * textField.setImage(pngImage)\n * ```\n * This will update the appearances streams for each of this text field's widgets.\n * @param image The image that should be displayed.\n */\n PDFTextField.prototype.setImage = function (image) {\n var fieldAlignment = this.getAlignment();\n // prettier-ignore\n var alignment = fieldAlignment === TextAlignment.Center ? ImageAlignment.Center\n : fieldAlignment === TextAlignment.Right ? ImageAlignment.Right\n : ImageAlignment.Left;\n var widgets = this.acroField.getWidgets();\n for (var idx = 0, len = widgets.length; idx < len; idx++) {\n var widget = widgets[idx];\n var streamRef = this.createImageAppearanceStream(widget, image, alignment);\n this.updateWidgetAppearances(widget, { normal: streamRef });\n }\n this.markAsClean();\n };\n /**\n * Set the font size for this field. Larger font sizes will result in larger\n * text being displayed when PDF readers render this text field. Font sizes\n * may be integer or floating point numbers. Supplying a negative font size\n * will cause this method to throw an error.\n *\n * For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * textField.setFontSize(4)\n * textField.setFontSize(15.7)\n * ```\n *\n * > This method depends upon the existence of a default appearance\n * > (`/DA`) string. If this field does not have a default appearance string,\n * > or that string does not contain a font size (via the `Tf` operator),\n * > then this method will throw an error.\n *\n * @param fontSize The font size to be used when rendering text in this field.\n */\n PDFTextField.prototype.setFontSize = function (fontSize) {\n assertPositive(fontSize, 'fontSize');\n this.acroField.setFontSize(fontSize);\n this.markAsDirty();\n };\n /**\n * Returns `true` if each line of text is shown on a new line when this\n * field is displayed in a PDF reader. The alternative is that all lines of\n * text are merged onto a single line when displayed. See\n * [[PDFTextField.enableMultiline]] and [[PDFTextField.disableMultiline]].\n * For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * if (textField.isMultiline()) console.log('Multiline is enabled')\n * ```\n * @returns Whether or not this is a multiline text field.\n */\n PDFTextField.prototype.isMultiline = function () {\n return this.acroField.hasFlag(AcroTextFlags.Multiline);\n };\n /**\n * Display each line of text on a new line when this field is displayed in a\n * PDF reader. For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * textField.enableMultiline()\n * ```\n * This method will mark this text field as dirty. See\n * [[PDFTextField.setText]] for more details about what this means.\n */\n PDFTextField.prototype.enableMultiline = function () {\n this.markAsDirty();\n this.acroField.setFlagTo(AcroTextFlags.Multiline, true);\n };\n /**\n * Display each line of text on the same line when this field is displayed\n * in a PDF reader. For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * textField.disableMultiline()\n * ```\n * This method will mark this text field as dirty. See\n * [[PDFTextField.setText]] for more details about what this means.\n */\n PDFTextField.prototype.disableMultiline = function () {\n this.markAsDirty();\n this.acroField.setFlagTo(AcroTextFlags.Multiline, false);\n };\n /**\n * Returns `true` if this is a password text field. This means that the field\n * is intended for storing a secure password. See\n * [[PDFTextField.enablePassword]] and [[PDFTextField.disablePassword]].\n * For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * if (textField.isPassword()) console.log('Password is enabled')\n * ```\n * @returns Whether or not this is a password text field.\n */\n PDFTextField.prototype.isPassword = function () {\n return this.acroField.hasFlag(AcroTextFlags.Password);\n };\n /**\n * Indicate that this text field is intended for storing a secure password.\n * For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * textField.enablePassword()\n * ```\n * Values entered into password text fields should not be displayed on the\n * screen by PDF readers. Most PDF readers will display the value as\n * asterisks or bullets. PDF readers should never store values entered by the\n * user into password text fields. Similarly, applications should not\n * write data to a password text field.\n *\n * **Please note that this method does not cause entered values to be\n * encrypted or secured in any way! It simply sets a flag that PDF software\n * and readers can access to determine the _purpose_ of this field.**\n */\n PDFTextField.prototype.enablePassword = function () {\n this.acroField.setFlagTo(AcroTextFlags.Password, true);\n };\n /**\n * Indicate that this text field is **not** intended for storing a secure\n * password. For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * textField.disablePassword()\n * ```\n */\n PDFTextField.prototype.disablePassword = function () {\n this.acroField.setFlagTo(AcroTextFlags.Password, false);\n };\n /**\n * Returns `true` if the contents of this text field represent a file path.\n * See [[PDFTextField.enableFileSelection]] and\n * [[PDFTextField.disableFileSelection]]. For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * if (textField.isFileSelector()) console.log('Is a file selector')\n * ```\n * @returns Whether or not this field should contain file paths.\n */\n PDFTextField.prototype.isFileSelector = function () {\n return this.acroField.hasFlag(AcroTextFlags.FileSelect);\n };\n /**\n * Indicate that this text field is intended to store a file path. The\n * contents of the file stored at that path should be submitted as the value\n * of the field. For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * textField.enableFileSelection()\n * ```\n */\n PDFTextField.prototype.enableFileSelection = function () {\n this.acroField.setFlagTo(AcroTextFlags.FileSelect, true);\n };\n /**\n * Indicate that this text field is **not** intended to store a file path.\n * For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * textField.disableFileSelection()\n * ```\n */\n PDFTextField.prototype.disableFileSelection = function () {\n this.acroField.setFlagTo(AcroTextFlags.FileSelect, false);\n };\n /**\n * Returns `true` if the text entered in this field should be spell checked\n * by PDF readers. See [[PDFTextField.enableSpellChecking]] and\n * [[PDFTextField.disableSpellChecking]]. For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * if (textField.isSpellChecked()) console.log('Spell checking is enabled')\n * ```\n * @returns Whether or not this field should be spell checked.\n */\n PDFTextField.prototype.isSpellChecked = function () {\n return !this.acroField.hasFlag(AcroTextFlags.DoNotSpellCheck);\n };\n /**\n * Allow PDF readers to spell check the text entered in this field.\n * For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * textField.enableSpellChecking()\n * ```\n */\n PDFTextField.prototype.enableSpellChecking = function () {\n this.acroField.setFlagTo(AcroTextFlags.DoNotSpellCheck, false);\n };\n /**\n * Do not allow PDF readers to spell check the text entered in this field.\n * For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * textField.disableSpellChecking()\n * ```\n */\n PDFTextField.prototype.disableSpellChecking = function () {\n this.acroField.setFlagTo(AcroTextFlags.DoNotSpellCheck, true);\n };\n /**\n * Returns `true` if PDF readers should allow the user to scroll the text\n * field when its contents do not fit within the field's view bounds. See\n * [[PDFTextField.enableScrolling]] and [[PDFTextField.disableScrolling]].\n * For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * if (textField.isScrollable()) console.log('Scrolling is enabled')\n * ```\n * @returns Whether or not the field is scrollable in PDF readers.\n */\n PDFTextField.prototype.isScrollable = function () {\n return !this.acroField.hasFlag(AcroTextFlags.DoNotScroll);\n };\n /**\n * Allow PDF readers to present a scroll bar to the user when the contents\n * of this text field do not fit within its view bounds. For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * textField.enableScrolling()\n * ```\n * A horizontal scroll bar should be shown for singleline fields. A vertical\n * scroll bar should be shown for multiline fields.\n */\n PDFTextField.prototype.enableScrolling = function () {\n this.acroField.setFlagTo(AcroTextFlags.DoNotScroll, false);\n };\n /**\n * Do not allow PDF readers to present a scroll bar to the user when the\n * contents of this text field do not fit within its view bounds. For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * textField.disableScrolling()\n * ```\n */\n PDFTextField.prototype.disableScrolling = function () {\n this.acroField.setFlagTo(AcroTextFlags.DoNotScroll, true);\n };\n /**\n * Returns `true` if this is a combed text field. This means that the field\n * is split into `n` equal size cells with one character in each (where `n`\n * is equal to the max length of the text field). The result is that all\n * characters in this field are displayed an equal distance apart from one\n * another. See [[PDFTextField.enableCombing]] and\n * [[PDFTextField.disableCombing]]. For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * if (textField.isCombed()) console.log('Combing is enabled')\n * ```\n * Note that in order for a text field to be combed, the following must be\n * true (in addition to enabling combing):\n * * It must not be a multiline field (see [[PDFTextField.isMultiline]])\n * * It must not be a password field (see [[PDFTextField.isPassword]])\n * * It must not be a file selector field (see [[PDFTextField.isFileSelector]])\n * * It must have a max length defined (see [[PDFTextField.setMaxLength]])\n * @returns Whether or not this field is combed.\n */\n PDFTextField.prototype.isCombed = function () {\n return (this.acroField.hasFlag(AcroTextFlags.Comb) &&\n !this.isMultiline() &&\n !this.isPassword() &&\n !this.isFileSelector() &&\n this.getMaxLength() !== undefined);\n };\n /**\n * Split this field into `n` equal size cells with one character in each\n * (where `n` is equal to the max length of the text field). This will cause\n * all characters in the field to be displayed an equal distance apart from\n * one another. For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * textField.enableCombing()\n * ```\n *\n * In addition to calling this method, text fields must have a max length\n * defined in order to be combed (see [[PDFTextField.setMaxLength]]).\n *\n * This method will also call the following three methods internally:\n * * [[PDFTextField.disableMultiline]]\n * * [[PDFTextField.disablePassword]]\n * * [[PDFTextField.disableFileSelection]]\n *\n * This method will mark this text field as dirty. See\n * [[PDFTextField.setText]] for more details about what this means.\n */\n PDFTextField.prototype.enableCombing = function () {\n if (this.getMaxLength() === undefined) {\n var msg = \"PDFTextFields must have a max length in order to be combed\";\n console.warn(msg);\n }\n this.markAsDirty();\n this.disableMultiline();\n this.disablePassword();\n this.disableFileSelection();\n this.acroField.setFlagTo(AcroTextFlags.Comb, true);\n };\n /**\n * Turn off combing for this text field. For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * textField.disableCombing()\n * ```\n * See [[PDFTextField.isCombed]] and [[PDFTextField.enableCombing]] for more\n * information about what combing is.\n *\n * This method will mark this text field as dirty. See\n * [[PDFTextField.setText]] for more details about what this means.\n */\n PDFTextField.prototype.disableCombing = function () {\n this.markAsDirty();\n this.acroField.setFlagTo(AcroTextFlags.Comb, false);\n };\n /**\n * Returns `true` if this text field contains rich text. See\n * [[PDFTextField.enableRichFormatting]] and\n * [[PDFTextField.disableRichFormatting]]. For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * if (textField.isRichFormatted()) console.log('Rich formatting enabled')\n * ```\n * @returns Whether or not this field contains rich text.\n */\n PDFTextField.prototype.isRichFormatted = function () {\n return this.acroField.hasFlag(AcroTextFlags.RichText);\n };\n /**\n * Indicate that this field contains XFA data - or rich text. For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * textField.enableRichFormatting()\n * ```\n * Note that `pdf-lib` does not support reading or writing rich text fields.\n * Nor do most PDF readers and writers. Rich text fields are based on XFA\n * (XML Forms Architecture). Relatively few PDFs use rich text fields or XFA.\n * Unlike PDF itself, XFA is not an ISO standard. XFA has been deprecated in\n * PDF 2.0:\n * * https://en.wikipedia.org/wiki/XFA\n * * http://blog.pdfshareforms.com/pdf-2-0-release-bid-farewell-xfa-forms/\n */\n PDFTextField.prototype.enableRichFormatting = function () {\n this.acroField.setFlagTo(AcroTextFlags.RichText, true);\n };\n /**\n * Indicate that this is a standard text field that does not XFA data (rich\n * text). For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * textField.disableRichFormatting()\n * ```\n */\n PDFTextField.prototype.disableRichFormatting = function () {\n this.acroField.setFlagTo(AcroTextFlags.RichText, false);\n };\n /**\n * Show this text field on the specified page. For example:\n * ```js\n * const ubuntuFont = await pdfDoc.embedFont(ubuntuFontBytes)\n * const page = pdfDoc.addPage()\n *\n * const form = pdfDoc.getForm()\n * const textField = form.createTextField('best.gundam')\n * textField.setText('Exia')\n *\n * textField.addToPage(page, {\n * x: 50,\n * y: 75,\n * width: 200,\n * height: 100,\n * textColor: rgb(1, 0, 0),\n * backgroundColor: rgb(0, 1, 0),\n * borderColor: rgb(0, 0, 1),\n * borderWidth: 2,\n * rotate: degrees(90),\n * font: ubuntuFont,\n * })\n * ```\n * This will create a new widget for this text field.\n * @param page The page to which this text field widget should be added.\n * @param options The options to be used when adding this text field widget.\n */\n PDFTextField.prototype.addToPage = function (page, options) {\n var _a, _b, _c, _d, _e, _f, _g;\n assertIs(page, 'page', [[PDFPage, 'PDFPage']]);\n assertFieldAppearanceOptions(options);\n if (!options)\n options = {};\n if (!('textColor' in options))\n options.textColor = rgb(0, 0, 0);\n if (!('backgroundColor' in options))\n options.backgroundColor = rgb(1, 1, 1);\n if (!('borderColor' in options))\n options.borderColor = rgb(0, 0, 0);\n if (!('borderWidth' in options))\n options.borderWidth = 1;\n // Create a widget for this text field\n var widget = this.createWidget({\n x: (_a = options.x) !== null && _a !== void 0 ? _a : 0,\n y: (_b = options.y) !== null && _b !== void 0 ? _b : 0,\n width: (_c = options.width) !== null && _c !== void 0 ? _c : 200,\n height: (_d = options.height) !== null && _d !== void 0 ? _d : 50,\n textColor: options.textColor,\n backgroundColor: options.backgroundColor,\n borderColor: options.borderColor,\n borderWidth: (_e = options.borderWidth) !== null && _e !== void 0 ? _e : 0,\n rotate: (_f = options.rotate) !== null && _f !== void 0 ? _f : degrees(0),\n hidden: options.hidden,\n page: page.ref,\n });\n var widgetRef = this.doc.context.register(widget.dict);\n // Add widget to this field\n this.acroField.addWidget(widgetRef);\n // Set appearance streams for widget\n var font = (_g = options.font) !== null && _g !== void 0 ? _g : this.doc.getForm().getDefaultFont();\n this.updateWidgetAppearance(widget, font);\n // Add widget to the given page\n page.node.addAnnot(widgetRef);\n };\n /**\n * Returns `true` if this text field has been marked as dirty, or if any of\n * this text field's widgets do not have an appearance stream. For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * if (textField.needsAppearancesUpdate()) console.log('Needs update')\n * ```\n * @returns Whether or not this text field needs an appearance update.\n */\n PDFTextField.prototype.needsAppearancesUpdate = function () {\n var _a;\n if (this.isDirty())\n return true;\n var widgets = this.acroField.getWidgets();\n for (var idx = 0, len = widgets.length; idx < len; idx++) {\n var widget = widgets[idx];\n var hasAppearances = ((_a = widget.getAppearances()) === null || _a === void 0 ? void 0 : _a.normal) instanceof PDFStream;\n if (!hasAppearances)\n return true;\n }\n return false;\n };\n /**\n * Update the appearance streams for each of this text field's widgets using\n * the default appearance provider for text fields. For example:\n * ```js\n * const helvetica = await pdfDoc.embedFont(StandardFonts.Helvetica)\n * const textField = form.getTextField('some.text.field')\n * textField.defaultUpdateAppearances(helvetica)\n * ```\n * @param font The font to be used for creating the appearance streams.\n */\n PDFTextField.prototype.defaultUpdateAppearances = function (font) {\n assertIs(font, 'font', [[PDFFont, 'PDFFont']]);\n this.updateAppearances(font);\n };\n /**\n * Update the appearance streams for each of this text field's widgets using\n * the given appearance provider. If no `provider` is passed, the default\n * appearance provider for text fields will be used. For example:\n * ```js\n * const helvetica = await pdfDoc.embedFont(StandardFonts.Helvetica)\n * const textField = form.getTextField('some.text.field')\n * textField.updateAppearances(helvetica, (field, widget, font) => {\n * ...\n * return drawTextField(...)\n * })\n * ```\n * @param font The font to be used for creating the appearance streams.\n * @param provider Optionally, the appearance provider to be used for\n * generating the contents of the appearance streams.\n */\n PDFTextField.prototype.updateAppearances = function (font, provider) {\n assertIs(font, 'font', [[PDFFont, 'PDFFont']]);\n assertOrUndefined(provider, 'provider', [Function]);\n var widgets = this.acroField.getWidgets();\n for (var idx = 0, len = widgets.length; idx < len; idx++) {\n var widget = widgets[idx];\n this.updateWidgetAppearance(widget, font, provider);\n }\n this.markAsClean();\n };\n PDFTextField.prototype.updateWidgetAppearance = function (widget, font, provider) {\n var apProvider = provider !== null && provider !== void 0 ? provider : defaultTextFieldAppearanceProvider;\n var appearances = normalizeAppearance(apProvider(this, widget, font));\n this.updateWidgetAppearanceWithFont(widget, font, appearances);\n };\n /**\n * > **NOTE:** You probably don't want to call this method directly. Instead,\n * > consider using the [[PDFForm.getTextField]] method, which will create an\n * > instance of [[PDFTextField]] for you.\n *\n * Create an instance of [[PDFTextField]] from an existing acroText and ref\n *\n * @param acroText The underlying `PDFAcroText` for this text field.\n * @param ref The unique reference for this text field.\n * @param doc The document to which this text field will belong.\n */\n PDFTextField.of = function (acroText, ref, doc) {\n return new PDFTextField(acroText, ref, doc);\n };\n return PDFTextField;\n}(PDFField));\nexport default PDFTextField;\n//# sourceMappingURL=PDFTextField.js.map","export var StandardFonts;\n(function (StandardFonts) {\n StandardFonts[\"Courier\"] = \"Courier\";\n StandardFonts[\"CourierBold\"] = \"Courier-Bold\";\n StandardFonts[\"CourierOblique\"] = \"Courier-Oblique\";\n StandardFonts[\"CourierBoldOblique\"] = \"Courier-BoldOblique\";\n StandardFonts[\"Helvetica\"] = \"Helvetica\";\n StandardFonts[\"HelveticaBold\"] = \"Helvetica-Bold\";\n StandardFonts[\"HelveticaOblique\"] = \"Helvetica-Oblique\";\n StandardFonts[\"HelveticaBoldOblique\"] = \"Helvetica-BoldOblique\";\n StandardFonts[\"TimesRoman\"] = \"Times-Roman\";\n StandardFonts[\"TimesRomanBold\"] = \"Times-Bold\";\n StandardFonts[\"TimesRomanItalic\"] = \"Times-Italic\";\n StandardFonts[\"TimesRomanBoldItalic\"] = \"Times-BoldItalic\";\n StandardFonts[\"Symbol\"] = \"Symbol\";\n StandardFonts[\"ZapfDingbats\"] = \"ZapfDingbats\";\n})(StandardFonts || (StandardFonts = {}));\n//# sourceMappingURL=StandardFonts.js.map","import { __assign, __spreadArrays } from \"tslib\";\nimport PDFDocument from \"../PDFDocument\";\nimport PDFButton from \"./PDFButton\";\nimport PDFCheckBox from \"./PDFCheckBox\";\nimport PDFDropdown from \"./PDFDropdown\";\nimport PDFOptionList from \"./PDFOptionList\";\nimport PDFRadioGroup from \"./PDFRadioGroup\";\nimport PDFSignature from \"./PDFSignature\";\nimport PDFTextField from \"./PDFTextField\";\nimport { NoSuchFieldError, UnexpectedFieldTypeError, FieldAlreadyExistsError, InvalidFieldNamePartError, } from \"../errors\";\nimport PDFFont from \"../PDFFont\";\nimport { StandardFonts } from \"../StandardFonts\";\nimport { rotateInPlace } from \"../operations\";\nimport { drawObject, popGraphicsState, pushGraphicsState, translate, } from \"../operators\";\nimport { PDFAcroForm, PDFAcroCheckBox, PDFAcroComboBox, PDFAcroListBox, PDFAcroRadioButton, PDFAcroSignature, PDFAcroText, PDFAcroPushButton, PDFAcroNonTerminal, PDFDict, PDFRef, createPDFAcroFields, PDFName, } from \"../../core\";\nimport { assertIs, Cache, assertOrUndefined } from \"../../utils\";\n/**\n * Represents the interactive form of a [[PDFDocument]].\n *\n * Interactive forms (sometimes called _AcroForms_) are collections of fields\n * designed to gather information from a user. A PDF document may contains any\n * number of fields that appear on various pages, all of which make up a single,\n * global interactive form spanning the entire document. This means that\n * instances of [[PDFDocument]] shall contain at most one [[PDFForm]].\n *\n * The fields of an interactive form are represented by [[PDFField]] instances.\n */\nvar PDFForm = /** @class */ (function () {\n function PDFForm(acroForm, doc) {\n var _this = this;\n this.embedDefaultFont = function () {\n return _this.doc.embedStandardFont(StandardFonts.Helvetica);\n };\n assertIs(acroForm, 'acroForm', [[PDFAcroForm, 'PDFAcroForm']]);\n assertIs(doc, 'doc', [[PDFDocument, 'PDFDocument']]);\n this.acroForm = acroForm;\n this.doc = doc;\n this.dirtyFields = new Set();\n this.defaultFontCache = Cache.populatedBy(this.embedDefaultFont);\n }\n /**\n * Returns `true` if this [[PDFForm]] has XFA data. Most PDFs with form\n * fields do not use XFA as it is not widely supported by PDF readers.\n *\n * > `pdf-lib` does not support creation, modification, or reading of XFA\n * > fields.\n *\n * For example:\n * ```js\n * const form = pdfDoc.getForm()\n * if (form.hasXFA()) console.log('PDF has XFA data')\n * ```\n * @returns Whether or not this form has XFA data.\n */\n PDFForm.prototype.hasXFA = function () {\n return this.acroForm.dict.has(PDFName.of('XFA'));\n };\n /**\n * Disconnect the XFA data from this [[PDFForm]] (if any exists). This will\n * force readers to fallback to standard fields if the [[PDFDocument]]\n * contains any. For example:\n *\n * For example:\n * ```js\n * const form = pdfDoc.getForm()\n * form.deleteXFA()\n * ```\n */\n PDFForm.prototype.deleteXFA = function () {\n this.acroForm.dict.delete(PDFName.of('XFA'));\n };\n /**\n * Get all fields contained in this [[PDFForm]]. For example:\n * ```js\n * const form = pdfDoc.getForm()\n * const fields = form.getFields()\n * fields.forEach(field => {\n * const type = field.constructor.name\n * const name = field.getName()\n * console.log(`${type}: ${name}`)\n * })\n * ```\n * @returns An array of all fields in this form.\n */\n PDFForm.prototype.getFields = function () {\n var allFields = this.acroForm.getAllFields();\n var fields = [];\n for (var idx = 0, len = allFields.length; idx < len; idx++) {\n var _a = allFields[idx], acroField = _a[0], ref = _a[1];\n var field = convertToPDFField(acroField, ref, this.doc);\n if (field)\n fields.push(field);\n }\n return fields;\n };\n /**\n * Get the field in this [[PDFForm]] with the given name. For example:\n * ```js\n * const form = pdfDoc.getForm()\n * const field = form.getFieldMaybe('Page1.Foo.Bar[0]')\n * if (field) console.log('Field exists!')\n * ```\n * @param name A fully qualified field name.\n * @returns The field with the specified name, if one exists.\n */\n PDFForm.prototype.getFieldMaybe = function (name) {\n assertIs(name, 'name', ['string']);\n var fields = this.getFields();\n for (var idx = 0, len = fields.length; idx < len; idx++) {\n var field = fields[idx];\n if (field.getName() === name)\n return field;\n }\n return undefined;\n };\n /**\n * Get the field in this [[PDFForm]] with the given name. For example:\n * ```js\n * const form = pdfDoc.getForm()\n * const field = form.getField('Page1.Foo.Bar[0]')\n * ```\n * If no field exists with the provided name, an error will be thrown.\n * @param name A fully qualified field name.\n * @returns The field with the specified name.\n */\n PDFForm.prototype.getField = function (name) {\n assertIs(name, 'name', ['string']);\n var field = this.getFieldMaybe(name);\n if (field)\n return field;\n throw new NoSuchFieldError(name);\n };\n /**\n * Get the button field in this [[PDFForm]] with the given name. For example:\n * ```js\n * const form = pdfDoc.getForm()\n * const button = form.getButton('Page1.Foo.Button[0]')\n * ```\n * An error will be thrown if no field exists with the provided name, or if\n * the field exists but is not a button.\n * @param name A fully qualified button name.\n * @returns The button with the specified name.\n */\n PDFForm.prototype.getButton = function (name) {\n assertIs(name, 'name', ['string']);\n var field = this.getField(name);\n if (field instanceof PDFButton)\n return field;\n throw new UnexpectedFieldTypeError(name, PDFButton, field);\n };\n /**\n * Get the check box field in this [[PDFForm]] with the given name.\n * For example:\n * ```js\n * const form = pdfDoc.getForm()\n * const checkBox = form.getCheckBox('Page1.Foo.CheckBox[0]')\n * checkBox.check()\n * ```\n * An error will be thrown if no field exists with the provided name, or if\n * the field exists but is not a check box.\n * @param name A fully qualified check box name.\n * @returns The check box with the specified name.\n */\n PDFForm.prototype.getCheckBox = function (name) {\n assertIs(name, 'name', ['string']);\n var field = this.getField(name);\n if (field instanceof PDFCheckBox)\n return field;\n throw new UnexpectedFieldTypeError(name, PDFCheckBox, field);\n };\n /**\n * Get the dropdown field in this [[PDFForm]] with the given name.\n * For example:\n * ```js\n * const form = pdfDoc.getForm()\n * const dropdown = form.getDropdown('Page1.Foo.Dropdown[0]')\n * const options = dropdown.getOptions()\n * dropdown.select(options[0])\n * ```\n * An error will be thrown if no field exists with the provided name, or if\n * the field exists but is not a dropdown.\n * @param name A fully qualified dropdown name.\n * @returns The dropdown with the specified name.\n */\n PDFForm.prototype.getDropdown = function (name) {\n assertIs(name, 'name', ['string']);\n var field = this.getField(name);\n if (field instanceof PDFDropdown)\n return field;\n throw new UnexpectedFieldTypeError(name, PDFDropdown, field);\n };\n /**\n * Get the option list field in this [[PDFForm]] with the given name.\n * For example:\n * ```js\n * const form = pdfDoc.getForm()\n * const optionList = form.getOptionList('Page1.Foo.OptionList[0]')\n * const options = optionList.getOptions()\n * optionList.select(options[0])\n * ```\n * An error will be thrown if no field exists with the provided name, or if\n * the field exists but is not an option list.\n * @param name A fully qualified option list name.\n * @returns The option list with the specified name.\n */\n PDFForm.prototype.getOptionList = function (name) {\n assertIs(name, 'name', ['string']);\n var field = this.getField(name);\n if (field instanceof PDFOptionList)\n return field;\n throw new UnexpectedFieldTypeError(name, PDFOptionList, field);\n };\n /**\n * Get the radio group field in this [[PDFForm]] with the given name.\n * For example:\n * ```js\n * const form = pdfDoc.getForm()\n * const radioGroup = form.getRadioGroup('Page1.Foo.RadioGroup[0]')\n * const options = radioGroup.getOptions()\n * radioGroup.select(options[0])\n * ```\n * An error will be thrown if no field exists with the provided name, or if\n * the field exists but is not a radio group.\n * @param name A fully qualified radio group name.\n * @returns The radio group with the specified name.\n */\n PDFForm.prototype.getRadioGroup = function (name) {\n assertIs(name, 'name', ['string']);\n var field = this.getField(name);\n if (field instanceof PDFRadioGroup)\n return field;\n throw new UnexpectedFieldTypeError(name, PDFRadioGroup, field);\n };\n /**\n * Get the signature field in this [[PDFForm]] with the given name.\n * For example:\n * ```js\n * const form = pdfDoc.getForm()\n * const signature = form.getSignature('Page1.Foo.Signature[0]')\n * ```\n * An error will be thrown if no field exists with the provided name, or if\n * the field exists but is not a signature.\n * @param name A fully qualified signature name.\n * @returns The signature with the specified name.\n */\n PDFForm.prototype.getSignature = function (name) {\n assertIs(name, 'name', ['string']);\n var field = this.getField(name);\n if (field instanceof PDFSignature)\n return field;\n throw new UnexpectedFieldTypeError(name, PDFSignature, field);\n };\n /**\n * Get the text field in this [[PDFForm]] with the given name.\n * For example:\n * ```js\n * const form = pdfDoc.getForm()\n * const textField = form.getTextField('Page1.Foo.TextField[0]')\n * textField.setText('Are you designed to act or to be acted upon?')\n * ```\n * An error will be thrown if no field exists with the provided name, or if\n * the field exists but is not a text field.\n * @param name A fully qualified text field name.\n * @returns The text field with the specified name.\n */\n PDFForm.prototype.getTextField = function (name) {\n assertIs(name, 'name', ['string']);\n var field = this.getField(name);\n if (field instanceof PDFTextField)\n return field;\n throw new UnexpectedFieldTypeError(name, PDFTextField, field);\n };\n /**\n * Create a new button field in this [[PDFForm]] with the given name.\n * For example:\n * ```js\n * const font = await pdfDoc.embedFont(StandardFonts.Helvetica)\n * const page = pdfDoc.addPage()\n *\n * const form = pdfDoc.getForm()\n * const button = form.createButton('cool.new.button')\n *\n * button.addToPage('Do Stuff', font, page)\n * ```\n * An error will be thrown if a field already exists with the provided name.\n * @param name The fully qualified name for the new button.\n * @returns The new button field.\n */\n PDFForm.prototype.createButton = function (name) {\n assertIs(name, 'name', ['string']);\n var nameParts = splitFieldName(name);\n var parent = this.findOrCreateNonTerminals(nameParts.nonTerminal);\n var button = PDFAcroPushButton.create(this.doc.context);\n button.setPartialName(nameParts.terminal);\n addFieldToParent(parent, [button, button.ref], nameParts.terminal);\n return PDFButton.of(button, button.ref, this.doc);\n };\n /**\n * Create a new check box field in this [[PDFForm]] with the given name.\n * For example:\n * ```js\n * const font = await pdfDoc.embedFont(StandardFonts.Helvetica)\n * const page = pdfDoc.addPage()\n *\n * const form = pdfDoc.getForm()\n * const checkBox = form.createCheckBox('cool.new.checkBox')\n *\n * checkBox.addToPage(page)\n * ```\n * An error will be thrown if a field already exists with the provided name.\n * @param name The fully qualified name for the new check box.\n * @returns The new check box field.\n */\n PDFForm.prototype.createCheckBox = function (name) {\n assertIs(name, 'name', ['string']);\n var nameParts = splitFieldName(name);\n var parent = this.findOrCreateNonTerminals(nameParts.nonTerminal);\n var checkBox = PDFAcroCheckBox.create(this.doc.context);\n checkBox.setPartialName(nameParts.terminal);\n addFieldToParent(parent, [checkBox, checkBox.ref], nameParts.terminal);\n return PDFCheckBox.of(checkBox, checkBox.ref, this.doc);\n };\n /**\n * Create a new dropdown field in this [[PDFForm]] with the given name.\n * For example:\n * ```js\n * const font = await pdfDoc.embedFont(StandardFonts.Helvetica)\n * const page = pdfDoc.addPage()\n *\n * const form = pdfDoc.getForm()\n * const dropdown = form.createDropdown('cool.new.dropdown')\n *\n * dropdown.addToPage(font, page)\n * ```\n * An error will be thrown if a field already exists with the provided name.\n * @param name The fully qualified name for the new dropdown.\n * @returns The new dropdown field.\n */\n PDFForm.prototype.createDropdown = function (name) {\n assertIs(name, 'name', ['string']);\n var nameParts = splitFieldName(name);\n var parent = this.findOrCreateNonTerminals(nameParts.nonTerminal);\n var comboBox = PDFAcroComboBox.create(this.doc.context);\n comboBox.setPartialName(nameParts.terminal);\n addFieldToParent(parent, [comboBox, comboBox.ref], nameParts.terminal);\n return PDFDropdown.of(comboBox, comboBox.ref, this.doc);\n };\n /**\n * Create a new option list field in this [[PDFForm]] with the given name.\n * For example:\n * ```js\n * const font = await pdfDoc.embedFont(StandardFonts.Helvetica)\n * const page = pdfDoc.addPage()\n *\n * const form = pdfDoc.getForm()\n * const optionList = form.createOptionList('cool.new.optionList')\n *\n * optionList.addToPage(font, page)\n * ```\n * An error will be thrown if a field already exists with the provided name.\n * @param name The fully qualified name for the new option list.\n * @returns The new option list field.\n */\n PDFForm.prototype.createOptionList = function (name) {\n assertIs(name, 'name', ['string']);\n var nameParts = splitFieldName(name);\n var parent = this.findOrCreateNonTerminals(nameParts.nonTerminal);\n var listBox = PDFAcroListBox.create(this.doc.context);\n listBox.setPartialName(nameParts.terminal);\n addFieldToParent(parent, [listBox, listBox.ref], nameParts.terminal);\n return PDFOptionList.of(listBox, listBox.ref, this.doc);\n };\n /**\n * Create a new radio group field in this [[PDFForm]] with the given name.\n * For example:\n * ```js\n * const font = await pdfDoc.embedFont(StandardFonts.Helvetica)\n * const page = pdfDoc.addPage()\n *\n * const form = pdfDoc.getForm()\n * const radioGroup = form.createRadioGroup('cool.new.radioGroup')\n *\n * radioGroup.addOptionToPage('is-dog', page, { y: 0 })\n * radioGroup.addOptionToPage('is-cat', page, { y: 75 })\n * ```\n * An error will be thrown if a field already exists with the provided name.\n * @param name The fully qualified name for the new radio group.\n * @returns The new radio group field.\n */\n PDFForm.prototype.createRadioGroup = function (name) {\n assertIs(name, 'name', ['string']);\n var nameParts = splitFieldName(name);\n var parent = this.findOrCreateNonTerminals(nameParts.nonTerminal);\n var radioButton = PDFAcroRadioButton.create(this.doc.context);\n radioButton.setPartialName(nameParts.terminal);\n addFieldToParent(parent, [radioButton, radioButton.ref], nameParts.terminal);\n return PDFRadioGroup.of(radioButton, radioButton.ref, this.doc);\n };\n /**\n * Create a new text field in this [[PDFForm]] with the given name.\n * For example:\n * ```js\n * const font = await pdfDoc.embedFont(StandardFonts.Helvetica)\n * const page = pdfDoc.addPage()\n *\n * const form = pdfDoc.getForm()\n * const textField = form.createTextField('cool.new.textField')\n *\n * textField.addToPage(font, page)\n * ```\n * An error will be thrown if a field already exists with the provided name.\n * @param name The fully qualified name for the new radio group.\n * @returns The new radio group field.\n */\n PDFForm.prototype.createTextField = function (name) {\n assertIs(name, 'name', ['string']);\n var nameParts = splitFieldName(name);\n var parent = this.findOrCreateNonTerminals(nameParts.nonTerminal);\n var text = PDFAcroText.create(this.doc.context);\n text.setPartialName(nameParts.terminal);\n addFieldToParent(parent, [text, text.ref], nameParts.terminal);\n return PDFTextField.of(text, text.ref, this.doc);\n };\n /**\n * Flatten all fields in this [[PDFForm]].\n *\n * Flattening a form field will take the current appearance for each of that\n * field's widgets and make them part of their page's content stream. All form\n * fields and annotations associated are then removed. Note that once a form\n * has been flattened its fields can no longer be accessed or edited.\n *\n * This operation is often used after filling form fields to ensure a\n * consistent appearance across different PDF readers and/or printers.\n * Another common use case is to copy a template document with form fields\n * into another document. In this scenario you would load the template\n * document, fill its fields, flatten it, and then copy its pages into the\n * recipient document - the filled fields will be copied over.\n *\n * For example:\n * ```js\n * const form = pdfDoc.getForm();\n * form.flatten();\n * ```\n */\n PDFForm.prototype.flatten = function (options) {\n if (options === void 0) { options = { updateFieldAppearances: true }; }\n if (options.updateFieldAppearances) {\n this.updateFieldAppearances();\n }\n var fields = this.getFields();\n for (var i = 0, lenFields = fields.length; i < lenFields; i++) {\n var field = fields[i];\n var widgets = field.acroField.getWidgets();\n for (var j = 0, lenWidgets = widgets.length; j < lenWidgets; j++) {\n var widget = widgets[j];\n var page = this.findWidgetPage(widget);\n var widgetRef = this.findWidgetAppearanceRef(field, widget);\n var xObjectKey = page.node.newXObject('FlatWidget', widgetRef);\n var rectangle = widget.getRectangle();\n var operators = __spreadArrays([\n pushGraphicsState(),\n translate(rectangle.x, rectangle.y)\n ], rotateInPlace(__assign(__assign({}, rectangle), { rotation: 0 })), [\n drawObject(xObjectKey),\n popGraphicsState(),\n ]).filter(Boolean);\n page.pushOperators.apply(page, operators);\n }\n this.removeField(field);\n }\n };\n /**\n * Remove a field from this [[PDFForm]].\n *\n * For example:\n * ```js\n * const form = pdfDoc.getForm();\n * const ageField = form.getFields().find(x => x.getName() === 'Age');\n * form.removeField(ageField);\n * ```\n */\n PDFForm.prototype.removeField = function (field) {\n var widgets = field.acroField.getWidgets();\n var pages = new Set();\n for (var i = 0, len = widgets.length; i < len; i++) {\n var widget = widgets[i];\n var widgetRef = this.findWidgetAppearanceRef(field, widget);\n var page = this.findWidgetPage(widget);\n pages.add(page);\n page.node.removeAnnot(widgetRef);\n }\n pages.forEach(function (page) { return page.node.removeAnnot(field.ref); });\n this.acroForm.removeField(field.acroField);\n var fieldKids = field.acroField.normalizedEntries().Kids;\n var kidsCount = fieldKids.size();\n for (var childIndex = 0; childIndex < kidsCount; childIndex++) {\n var child = fieldKids.get(childIndex);\n if (child instanceof PDFRef) {\n this.doc.context.delete(child);\n }\n }\n this.doc.context.delete(field.ref);\n };\n /**\n * Update the appearance streams for all widgets of all fields in this\n * [[PDFForm]]. Appearance streams will only be created for a widget if it\n * does not have any existing appearance streams, or the field's value has\n * changed (e.g. by calling [[PDFTextField.setText]] or\n * [[PDFDropdown.select]]).\n *\n * For example:\n * ```js\n * const courier = await pdfDoc.embedFont(StandardFonts.Courier)\n * const form = pdfDoc.getForm()\n * form.updateFieldAppearances(courier)\n * ```\n *\n * **IMPORTANT:** The default value for the `font` parameter is\n * [[StandardFonts.Helvetica]]. Note that this is a WinAnsi font. This means\n * that encoding errors will be thrown if any fields contain text with\n * characters outside the WinAnsi character set (the latin alphabet).\n *\n * Embedding a custom font and passing that as the `font`\n * parameter allows you to generate appearance streams with non WinAnsi\n * characters (assuming your custom font supports them).\n *\n * > **NOTE:** The [[PDFDocument.save]] method will call this method to\n * > update appearances automatically if a form was accessed via the\n * > [[PDFDocument.getForm]] method prior to saving.\n *\n * @param font Optionally, the font to use when creating new appearances.\n */\n PDFForm.prototype.updateFieldAppearances = function (font) {\n assertOrUndefined(font, 'font', [[PDFFont, 'PDFFont']]);\n font = font !== null && font !== void 0 ? font : this.getDefaultFont();\n var fields = this.getFields();\n for (var idx = 0, len = fields.length; idx < len; idx++) {\n var field = fields[idx];\n if (field.needsAppearancesUpdate()) {\n field.defaultUpdateAppearances(font);\n }\n }\n };\n /**\n * Mark a field as dirty. This will cause its appearance streams to be\n * updated by [[PDFForm.updateFieldAppearances]].\n * ```js\n * const form = pdfDoc.getForm()\n * const field = form.getField('foo.bar')\n * form.markFieldAsDirty(field.ref)\n * ```\n * @param fieldRef The reference to the field that should be marked.\n */\n PDFForm.prototype.markFieldAsDirty = function (fieldRef) {\n assertOrUndefined(fieldRef, 'fieldRef', [[PDFRef, 'PDFRef']]);\n this.dirtyFields.add(fieldRef);\n };\n /**\n * Mark a field as dirty. This will cause its appearance streams to not be\n * updated by [[PDFForm.updateFieldAppearances]].\n * ```js\n * const form = pdfDoc.getForm()\n * const field = form.getField('foo.bar')\n * form.markFieldAsClean(field.ref)\n * ```\n * @param fieldRef The reference to the field that should be marked.\n */\n PDFForm.prototype.markFieldAsClean = function (fieldRef) {\n assertOrUndefined(fieldRef, 'fieldRef', [[PDFRef, 'PDFRef']]);\n this.dirtyFields.delete(fieldRef);\n };\n /**\n * Returns `true` is the specified field has been marked as dirty.\n * ```js\n * const form = pdfDoc.getForm()\n * const field = form.getField('foo.bar')\n * if (form.fieldIsDirty(field.ref)) console.log('Field is dirty')\n * ```\n * @param fieldRef The reference to the field that should be checked.\n * @returns Whether or not the specified field is dirty.\n */\n PDFForm.prototype.fieldIsDirty = function (fieldRef) {\n assertOrUndefined(fieldRef, 'fieldRef', [[PDFRef, 'PDFRef']]);\n return this.dirtyFields.has(fieldRef);\n };\n PDFForm.prototype.getDefaultFont = function () {\n return this.defaultFontCache.access();\n };\n PDFForm.prototype.findWidgetPage = function (widget) {\n var pageRef = widget.P();\n var page = this.doc.getPages().find(function (x) { return x.ref === pageRef; });\n if (page === undefined) {\n var widgetRef = this.doc.context.getObjectRef(widget.dict);\n if (widgetRef === undefined) {\n throw new Error('Could not find PDFRef for PDFObject');\n }\n page = this.doc.findPageForAnnotationRef(widgetRef);\n if (page === undefined) {\n throw new Error(\"Could not find page for PDFRef \" + widgetRef);\n }\n }\n return page;\n };\n PDFForm.prototype.findWidgetAppearanceRef = function (field, widget) {\n var _a;\n var refOrDict = widget.getNormalAppearance();\n if (refOrDict instanceof PDFDict &&\n (field instanceof PDFCheckBox || field instanceof PDFRadioGroup)) {\n var value = field.acroField.getValue();\n var ref = (_a = refOrDict.get(value)) !== null && _a !== void 0 ? _a : refOrDict.get(PDFName.of('Off'));\n if (ref instanceof PDFRef) {\n refOrDict = ref;\n }\n }\n if (!(refOrDict instanceof PDFRef)) {\n var name_1 = field.getName();\n throw new Error(\"Failed to extract appearance ref for: \" + name_1);\n }\n return refOrDict;\n };\n PDFForm.prototype.findOrCreateNonTerminals = function (partialNames) {\n var nonTerminal = [\n this.acroForm,\n ];\n for (var idx = 0, len = partialNames.length; idx < len; idx++) {\n var namePart = partialNames[idx];\n if (!namePart)\n throw new InvalidFieldNamePartError(namePart);\n var parent_1 = nonTerminal[0], parentRef = nonTerminal[1];\n var res = this.findNonTerminal(namePart, parent_1);\n if (res) {\n nonTerminal = res;\n }\n else {\n var node = PDFAcroNonTerminal.create(this.doc.context);\n node.setPartialName(namePart);\n node.setParent(parentRef);\n var nodeRef = this.doc.context.register(node.dict);\n parent_1.addField(nodeRef);\n nonTerminal = [node, nodeRef];\n }\n }\n return nonTerminal;\n };\n PDFForm.prototype.findNonTerminal = function (partialName, parent) {\n var fields = parent instanceof PDFAcroForm\n ? this.acroForm.getFields()\n : createPDFAcroFields(parent.Kids());\n for (var idx = 0, len = fields.length; idx < len; idx++) {\n var _a = fields[idx], field = _a[0], ref = _a[1];\n if (field.getPartialName() === partialName) {\n if (field instanceof PDFAcroNonTerminal)\n return [field, ref];\n throw new FieldAlreadyExistsError(partialName);\n }\n }\n return undefined;\n };\n /**\n * > **NOTE:** You probably don't want to call this method directly. Instead,\n * > consider using the [[PDFDocument.getForm]] method, which will create an\n * > instance of [[PDFForm]] for you.\n *\n * Create an instance of [[PDFForm]] from an existing acroForm and embedder\n *\n * @param acroForm The underlying `PDFAcroForm` for this form.\n * @param doc The document to which the form will belong.\n */\n PDFForm.of = function (acroForm, doc) {\n return new PDFForm(acroForm, doc);\n };\n return PDFForm;\n}());\nexport default PDFForm;\nvar convertToPDFField = function (field, ref, doc) {\n if (field instanceof PDFAcroPushButton)\n return PDFButton.of(field, ref, doc);\n if (field instanceof PDFAcroCheckBox)\n return PDFCheckBox.of(field, ref, doc);\n if (field instanceof PDFAcroComboBox)\n return PDFDropdown.of(field, ref, doc);\n if (field instanceof PDFAcroListBox)\n return PDFOptionList.of(field, ref, doc);\n if (field instanceof PDFAcroText)\n return PDFTextField.of(field, ref, doc);\n if (field instanceof PDFAcroRadioButton) {\n return PDFRadioGroup.of(field, ref, doc);\n }\n if (field instanceof PDFAcroSignature) {\n return PDFSignature.of(field, ref, doc);\n }\n return undefined;\n};\nvar splitFieldName = function (fullyQualifiedName) {\n if (fullyQualifiedName.length === 0) {\n throw new Error('PDF field names must not be empty strings');\n }\n var parts = fullyQualifiedName.split('.');\n for (var idx = 0, len = parts.length; idx < len; idx++) {\n if (parts[idx] === '') {\n throw new Error(\"Periods in PDF field names must be separated by at least one character: \\\"\" + fullyQualifiedName + \"\\\"\");\n }\n }\n if (parts.length === 1)\n return { nonTerminal: [], terminal: parts[0] };\n return {\n nonTerminal: parts.slice(0, parts.length - 1),\n terminal: parts[parts.length - 1],\n };\n};\nvar addFieldToParent = function (_a, _b, partialName) {\n var parent = _a[0], parentRef = _a[1];\n var field = _b[0], fieldRef = _b[1];\n var entries = parent.normalizedEntries();\n var fields = createPDFAcroFields('Kids' in entries ? entries.Kids : entries.Fields);\n for (var idx = 0, len = fields.length; idx < len; idx++) {\n if (fields[idx][0].getPartialName() === partialName) {\n throw new FieldAlreadyExistsError(partialName);\n }\n }\n parent.addField(fieldRef);\n field.setParent(parentRef);\n};\n//# sourceMappingURL=PDFForm.js.map","export var PageSizes = {\n '4A0': [4767.87, 6740.79],\n '2A0': [3370.39, 4767.87],\n A0: [2383.94, 3370.39],\n A1: [1683.78, 2383.94],\n A2: [1190.55, 1683.78],\n A3: [841.89, 1190.55],\n A4: [595.28, 841.89],\n A5: [419.53, 595.28],\n A6: [297.64, 419.53],\n A7: [209.76, 297.64],\n A8: [147.4, 209.76],\n A9: [104.88, 147.4],\n A10: [73.7, 104.88],\n B0: [2834.65, 4008.19],\n B1: [2004.09, 2834.65],\n B2: [1417.32, 2004.09],\n B3: [1000.63, 1417.32],\n B4: [708.66, 1000.63],\n B5: [498.9, 708.66],\n B6: [354.33, 498.9],\n B7: [249.45, 354.33],\n B8: [175.75, 249.45],\n B9: [124.72, 175.75],\n B10: [87.87, 124.72],\n C0: [2599.37, 3676.54],\n C1: [1836.85, 2599.37],\n C2: [1298.27, 1836.85],\n C3: [918.43, 1298.27],\n C4: [649.13, 918.43],\n C5: [459.21, 649.13],\n C6: [323.15, 459.21],\n C7: [229.61, 323.15],\n C8: [161.57, 229.61],\n C9: [113.39, 161.57],\n C10: [79.37, 113.39],\n RA0: [2437.8, 3458.27],\n RA1: [1729.13, 2437.8],\n RA2: [1218.9, 1729.13],\n RA3: [864.57, 1218.9],\n RA4: [609.45, 864.57],\n SRA0: [2551.18, 3628.35],\n SRA1: [1814.17, 2551.18],\n SRA2: [1275.59, 1814.17],\n SRA3: [907.09, 1275.59],\n SRA4: [637.8, 907.09],\n Executive: [521.86, 756.0],\n Folio: [612.0, 936.0],\n Legal: [612.0, 1008.0],\n Letter: [612.0, 792.0],\n Tabloid: [792.0, 1224.0],\n};\n//# sourceMappingURL=sizes.js.map","export var ParseSpeeds;\n(function (ParseSpeeds) {\n ParseSpeeds[ParseSpeeds[\"Fastest\"] = Infinity] = \"Fastest\";\n ParseSpeeds[ParseSpeeds[\"Fast\"] = 1500] = \"Fast\";\n ParseSpeeds[ParseSpeeds[\"Medium\"] = 500] = \"Medium\";\n ParseSpeeds[ParseSpeeds[\"Slow\"] = 100] = \"Slow\";\n})(ParseSpeeds || (ParseSpeeds = {}));\n//# sourceMappingURL=PDFDocumentOptions.js.map","import { __awaiter, __generator } from \"tslib\";\nimport { PDFName, PDFArray, PDFDict, PDFHexString } from \"../core\";\n/**\n * Represents a file that has been embedded in a [[PDFDocument]].\n */\nvar PDFEmbeddedFile = /** @class */ (function () {\n function PDFEmbeddedFile(ref, doc, embedder) {\n this.alreadyEmbedded = false;\n this.ref = ref;\n this.doc = doc;\n this.embedder = embedder;\n }\n /**\n * > **NOTE:** You probably don't need to call this method directly. The\n * > [[PDFDocument.save]] and [[PDFDocument.saveAsBase64]] methods will\n * > automatically ensure all embeddable files get embedded.\n *\n * Embed this embeddable file in its document.\n *\n * @returns Resolves when the embedding is complete.\n */\n PDFEmbeddedFile.prototype.embed = function () {\n return __awaiter(this, void 0, void 0, function () {\n var ref, Names, EmbeddedFiles, EFNames, AF;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!this.alreadyEmbedded) return [3 /*break*/, 2];\n return [4 /*yield*/, this.embedder.embedIntoContext(this.doc.context, this.ref)];\n case 1:\n ref = _a.sent();\n if (!this.doc.catalog.has(PDFName.of('Names'))) {\n this.doc.catalog.set(PDFName.of('Names'), this.doc.context.obj({}));\n }\n Names = this.doc.catalog.lookup(PDFName.of('Names'), PDFDict);\n if (!Names.has(PDFName.of('EmbeddedFiles'))) {\n Names.set(PDFName.of('EmbeddedFiles'), this.doc.context.obj({}));\n }\n EmbeddedFiles = Names.lookup(PDFName.of('EmbeddedFiles'), PDFDict);\n if (!EmbeddedFiles.has(PDFName.of('Names'))) {\n EmbeddedFiles.set(PDFName.of('Names'), this.doc.context.obj([]));\n }\n EFNames = EmbeddedFiles.lookup(PDFName.of('Names'), PDFArray);\n EFNames.push(PDFHexString.fromText(this.embedder.fileName));\n EFNames.push(ref);\n /**\n * The AF-Tag is needed to achieve PDF-A3 compliance for embedded files\n *\n * The following document outlines the uses cases of the associated files (AF) tag.\n * See:\n * https://www.pdfa.org/wp-content/uploads/2018/10/PDF20_AN002-AF.pdf\n */\n if (!this.doc.catalog.has(PDFName.of('AF'))) {\n this.doc.catalog.set(PDFName.of('AF'), this.doc.context.obj([]));\n }\n AF = this.doc.catalog.lookup(PDFName.of('AF'), PDFArray);\n AF.push(ref);\n this.alreadyEmbedded = true;\n _a.label = 2;\n case 2: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * > **NOTE:** You probably don't want to call this method directly. Instead,\n * > consider using the [[PDFDocument.attach]] method, which will create\n * instances of [[PDFEmbeddedFile]] for you.\n *\n * Create an instance of [[PDFEmbeddedFile]] from an existing ref and embedder\n *\n * @param ref The unique reference for this file.\n * @param doc The document to which the file will belong.\n * @param embedder The embedder that will be used to embed the file.\n */\n PDFEmbeddedFile.of = function (ref, doc, embedder) {\n return new PDFEmbeddedFile(ref, doc, embedder);\n };\n return PDFEmbeddedFile;\n}());\nexport default PDFEmbeddedFile;\n//# sourceMappingURL=PDFEmbeddedFile.js.map","import { __awaiter, __generator } from \"tslib\";\nimport { PDFName, PDFArray, PDFDict, PDFHexString } from \"../core\";\n/**\n * Represents JavaScript that has been embedded in a [[PDFDocument]].\n */\nvar PDFJavaScript = /** @class */ (function () {\n function PDFJavaScript(ref, doc, embedder) {\n this.alreadyEmbedded = false;\n this.ref = ref;\n this.doc = doc;\n this.embedder = embedder;\n }\n /**\n * > **NOTE:** You probably don't need to call this method directly. The\n * > [[PDFDocument.save]] and [[PDFDocument.saveAsBase64]] methods will\n * > automatically ensure all JavaScripts get embedded.\n *\n * Embed this JavaScript in its document.\n *\n * @returns Resolves when the embedding is complete.\n */\n PDFJavaScript.prototype.embed = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a, catalog, context, ref, Names, Javascript, JSNames;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!!this.alreadyEmbedded) return [3 /*break*/, 2];\n _a = this.doc, catalog = _a.catalog, context = _a.context;\n return [4 /*yield*/, this.embedder.embedIntoContext(this.doc.context, this.ref)];\n case 1:\n ref = _b.sent();\n if (!catalog.has(PDFName.of('Names'))) {\n catalog.set(PDFName.of('Names'), context.obj({}));\n }\n Names = catalog.lookup(PDFName.of('Names'), PDFDict);\n if (!Names.has(PDFName.of('JavaScript'))) {\n Names.set(PDFName.of('JavaScript'), context.obj({}));\n }\n Javascript = Names.lookup(PDFName.of('JavaScript'), PDFDict);\n if (!Javascript.has(PDFName.of('Names'))) {\n Javascript.set(PDFName.of('Names'), context.obj([]));\n }\n JSNames = Javascript.lookup(PDFName.of('Names'), PDFArray);\n JSNames.push(PDFHexString.fromText(this.embedder.scriptName));\n JSNames.push(ref);\n this.alreadyEmbedded = true;\n _b.label = 2;\n case 2: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * > **NOTE:** You probably don't want to call this method directly. Instead,\n * > consider using the [[PDFDocument.addJavaScript]] method, which will\n * create instances of [[PDFJavaScript]] for you.\n *\n * Create an instance of [[PDFJavaScript]] from an existing ref and script\n *\n * @param ref The unique reference for this script.\n * @param doc The document to which the script will belong.\n * @param embedder The embedder that will be used to embed the script.\n */\n PDFJavaScript.of = function (ref, doc, embedder) {\n return new PDFJavaScript(ref, doc, embedder);\n };\n return PDFJavaScript;\n}());\nexport default PDFJavaScript;\n//# sourceMappingURL=PDFJavaScript.js.map","import { __awaiter, __generator } from \"tslib\";\nimport PDFHexString from \"../objects/PDFHexString\";\nvar JavaScriptEmbedder = /** @class */ (function () {\n function JavaScriptEmbedder(script, scriptName) {\n this.script = script;\n this.scriptName = scriptName;\n }\n JavaScriptEmbedder.for = function (script, scriptName) {\n return new JavaScriptEmbedder(script, scriptName);\n };\n JavaScriptEmbedder.prototype.embedIntoContext = function (context, ref) {\n return __awaiter(this, void 0, void 0, function () {\n var jsActionDict;\n return __generator(this, function (_a) {\n jsActionDict = context.obj({\n Type: 'Action',\n S: 'JavaScript',\n JS: PDFHexString.fromText(this.script),\n });\n if (ref) {\n context.assign(ref, jsActionDict);\n return [2 /*return*/, ref];\n }\n else {\n return [2 /*return*/, context.register(jsActionDict)];\n }\n return [2 /*return*/];\n });\n });\n };\n return JavaScriptEmbedder;\n}());\nexport default JavaScriptEmbedder;\n//# sourceMappingURL=JavaScriptEmbedder.js.map","import { __awaiter, __generator, __rest } from \"tslib\";\nimport { EncryptedPDFError, FontkitNotRegisteredError, ForeignPageError, RemovePageFromEmptyDocumentError, } from \"./errors\";\nimport PDFEmbeddedPage from \"./PDFEmbeddedPage\";\nimport PDFFont from \"./PDFFont\";\nimport PDFImage from \"./PDFImage\";\nimport PDFPage from \"./PDFPage\";\nimport PDFForm from \"./form/PDFForm\";\nimport { PageSizes } from \"./sizes\";\nimport { CustomFontEmbedder, CustomFontSubsetEmbedder, JpegEmbedder, PageEmbeddingMismatchedContextError, PDFCatalog, PDFContext, PDFDict, PDFHexString, PDFName, PDFObjectCopier, PDFPageEmbedder, PDFPageLeaf, PDFPageTree, PDFParser, PDFStreamWriter, PDFString, PDFWriter, PngEmbedder, StandardFontEmbedder, UnexpectedObjectTypeError, } from \"../core\";\nimport { ParseSpeeds, } from \"./PDFDocumentOptions\";\nimport { assertIs, assertIsOneOfOrUndefined, assertOrUndefined, assertRange, Cache, canBeConvertedToUint8Array, encodeToBase64, isStandardFont, pluckIndices, range, toUint8Array, } from \"../utils\";\nimport FileEmbedder, { AFRelationship } from \"../core/embedders/FileEmbedder\";\nimport PDFEmbeddedFile from \"./PDFEmbeddedFile\";\nimport PDFJavaScript from \"./PDFJavaScript\";\nimport JavaScriptEmbedder from \"../core/embedders/JavaScriptEmbedder\";\n/**\n * Represents a PDF document.\n */\nvar PDFDocument = /** @class */ (function () {\n function PDFDocument(context, ignoreEncryption, updateMetadata) {\n var _this = this;\n /** The default word breaks used in PDFPage.drawText */\n this.defaultWordBreaks = [' '];\n this.computePages = function () {\n var pages = [];\n _this.catalog.Pages().traverse(function (node, ref) {\n if (node instanceof PDFPageLeaf) {\n var page = _this.pageMap.get(node);\n if (!page) {\n page = PDFPage.of(node, ref, _this);\n _this.pageMap.set(node, page);\n }\n pages.push(page);\n }\n });\n return pages;\n };\n this.getOrCreateForm = function () {\n var acroForm = _this.catalog.getOrCreateAcroForm();\n return PDFForm.of(acroForm, _this);\n };\n assertIs(context, 'context', [[PDFContext, 'PDFContext']]);\n assertIs(ignoreEncryption, 'ignoreEncryption', ['boolean']);\n this.context = context;\n this.catalog = context.lookup(context.trailerInfo.Root);\n this.isEncrypted = !!context.lookup(context.trailerInfo.Encrypt);\n this.pageCache = Cache.populatedBy(this.computePages);\n this.pageMap = new Map();\n this.formCache = Cache.populatedBy(this.getOrCreateForm);\n this.fonts = [];\n this.images = [];\n this.embeddedPages = [];\n this.embeddedFiles = [];\n this.javaScripts = [];\n if (!ignoreEncryption && this.isEncrypted)\n throw new EncryptedPDFError();\n if (updateMetadata)\n this.updateInfoDict();\n }\n /**\n * Load an existing [[PDFDocument]]. The input data can be provided in\n * multiple formats:\n *\n * | Type | Contents |\n * | ------------- | ------------------------------------------------------ |\n * | `string` | A base64 encoded string (or data URI) containing a PDF |\n * | `Uint8Array` | The raw bytes of a PDF |\n * | `ArrayBuffer` | The raw bytes of a PDF |\n *\n * For example:\n * ```js\n * import { PDFDocument } from 'pdf-lib'\n *\n * // pdf=string\n * const base64 =\n * 'JVBERi0xLjcKJYGBgYEKCjUgMCBvYmoKPDwKL0ZpbHRlciAvRmxhdGVEZWNvZGUKL0xlbm' +\n * 'd0aCAxMDQKPj4Kc3RyZWFtCniccwrhMlAAwaJ0Ln2P1Jyy1JLM5ERdc0MjCwUjE4WQNC4Q' +\n * '6cNlCFZkqGCqYGSqEJLLZWNuYGZiZmbkYuZsZmlmZGRgZmluDCQNzc3NTM2NzdzMXMxMjQ' +\n * 'ztFEKyuEK0uFxDuAAOERdVCmVuZHN0cmVhbQplbmRvYmoKCjYgMCBvYmoKPDwKL0ZpbHRl' +\n * 'ciAvRmxhdGVEZWNvZGUKL1R5cGUgL09ialN0bQovTiA0Ci9GaXJzdCAyMAovTGVuZ3RoID' +\n * 'IxNQo+PgpzdHJlYW0KeJxVj9GqwjAMhu/zFHkBzTo3nCCCiiKIHPEICuJF3cKoSCu2E8/b' +\n * '20wPIr1p8v9/8kVhgilmGfawX2CGaVrgcAi0/bsy0lrX7IGWpvJ4iJYEN3gEmrrGBlQwGs' +\n * 'HHO9VBX1wNrxAqMX87RBD5xpJuddqwd82tjAHxzV1U5LPgy52DKXWnr1Lheg+j/c/pzGVr' +\n * 'iqV0VlwZPXGPCJjElw/ybkwUmeoWgxesDXGhHJC/D/iikp1Av80ptKU0FdBEe25pPihAM1' +\n * 'u6ytgaaWfs2Hrz35CJT1+EWmAKZW5kc3RyZWFtCmVuZG9iagoKNyAwIG9iago8PAovU2l6' +\n * 'ZSA4Ci9Sb290IDIgMCBSCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCi9UeXBlIC9YUmVmCi9MZW' +\n * '5ndGggMzgKL1cgWyAxIDIgMiBdCi9JbmRleCBbIDAgOCBdCj4+CnN0cmVhbQp4nBXEwREA' +\n * 'EBAEsCwz3vrvRmOOyyOoGhZdutHN2MT55fIAVocD+AplbmRzdHJlYW0KZW5kb2JqCgpzdG' +\n * 'FydHhyZWYKNTEwCiUlRU9G'\n *\n * const dataUri = 'data:application/pdf;base64,' + base64\n *\n * const pdfDoc1 = await PDFDocument.load(base64)\n * const pdfDoc2 = await PDFDocument.load(dataUri)\n *\n * // pdf=Uint8Array\n * import fs from 'fs'\n * const uint8Array = fs.readFileSync('with_update_sections.pdf')\n * const pdfDoc3 = await PDFDocument.load(uint8Array)\n *\n * // pdf=ArrayBuffer\n * const url = 'https://pdf-lib.js.org/assets/with_update_sections.pdf'\n * const arrayBuffer = await fetch(url).then(res => res.arrayBuffer())\n * const pdfDoc4 = await PDFDocument.load(arrayBuffer)\n *\n * ```\n *\n * @param pdf The input data containing a PDF document.\n * @param options The options to be used when loading the document.\n * @returns Resolves with a document loaded from the input.\n */\n PDFDocument.load = function (pdf, options) {\n if (options === void 0) { options = {}; }\n return __awaiter(this, void 0, void 0, function () {\n var _a, ignoreEncryption, _b, parseSpeed, _c, throwOnInvalidObject, _d, updateMetadata, _e, capNumbers, bytes, context;\n return __generator(this, function (_f) {\n switch (_f.label) {\n case 0:\n _a = options.ignoreEncryption, ignoreEncryption = _a === void 0 ? false : _a, _b = options.parseSpeed, parseSpeed = _b === void 0 ? ParseSpeeds.Slow : _b, _c = options.throwOnInvalidObject, throwOnInvalidObject = _c === void 0 ? false : _c, _d = options.updateMetadata, updateMetadata = _d === void 0 ? true : _d, _e = options.capNumbers, capNumbers = _e === void 0 ? false : _e;\n assertIs(pdf, 'pdf', ['string', Uint8Array, ArrayBuffer]);\n assertIs(ignoreEncryption, 'ignoreEncryption', ['boolean']);\n assertIs(parseSpeed, 'parseSpeed', ['number']);\n assertIs(throwOnInvalidObject, 'throwOnInvalidObject', ['boolean']);\n bytes = toUint8Array(pdf);\n return [4 /*yield*/, PDFParser.forBytesWithOptions(bytes, parseSpeed, throwOnInvalidObject, capNumbers).parseDocument()];\n case 1:\n context = _f.sent();\n return [2 /*return*/, new PDFDocument(context, ignoreEncryption, updateMetadata)];\n }\n });\n });\n };\n /**\n * Create a new [[PDFDocument]].\n * @returns Resolves with the newly created document.\n */\n PDFDocument.create = function (options) {\n if (options === void 0) { options = {}; }\n return __awaiter(this, void 0, void 0, function () {\n var _a, updateMetadata, context, pageTree, pageTreeRef, catalog;\n return __generator(this, function (_b) {\n _a = options.updateMetadata, updateMetadata = _a === void 0 ? true : _a;\n context = PDFContext.create();\n pageTree = PDFPageTree.withContext(context);\n pageTreeRef = context.register(pageTree);\n catalog = PDFCatalog.withContextAndPages(context, pageTreeRef);\n context.trailerInfo.Root = context.register(catalog);\n return [2 /*return*/, new PDFDocument(context, false, updateMetadata)];\n });\n });\n };\n /**\n * Register a fontkit instance. This must be done before custom fonts can\n * be embedded. See [here](https://github.com/Hopding/pdf-lib/tree/master#fontkit-installation)\n * for instructions on how to install and register a fontkit instance.\n *\n * > You do **not** need to call this method to embed standard fonts.\n *\n * For example:\n * ```js\n * import { PDFDocument } from 'pdf-lib'\n * import fontkit from '@pdf-lib/fontkit'\n *\n * const pdfDoc = await PDFDocument.create()\n * pdfDoc.registerFontkit(fontkit)\n * ```\n *\n * @param fontkit The fontkit instance to be registered.\n */\n PDFDocument.prototype.registerFontkit = function (fontkit) {\n this.fontkit = fontkit;\n };\n /**\n * Get the [[PDFForm]] containing all interactive fields for this document.\n * For example:\n * ```js\n * const form = pdfDoc.getForm()\n * const fields = form.getFields()\n * fields.forEach(field => {\n * const type = field.constructor.name\n * const name = field.getName()\n * console.log(`${type}: ${name}`)\n * })\n * ```\n * @returns The form for this document.\n */\n PDFDocument.prototype.getForm = function () {\n var form = this.formCache.access();\n if (form.hasXFA()) {\n console.warn('Removing XFA form data as pdf-lib does not support reading or writing XFA');\n form.deleteXFA();\n }\n return form;\n };\n /**\n * Get this document's title metadata. The title appears in the\n * \"Document Properties\" section of most PDF readers. For example:\n * ```js\n * const title = pdfDoc.getTitle()\n * ```\n * @returns A string containing the title of this document, if it has one.\n */\n PDFDocument.prototype.getTitle = function () {\n var title = this.getInfoDict().lookup(PDFName.Title);\n if (!title)\n return undefined;\n assertIsLiteralOrHexString(title);\n return title.decodeText();\n };\n /**\n * Get this document's author metadata. The author appears in the\n * \"Document Properties\" section of most PDF readers. For example:\n * ```js\n * const author = pdfDoc.getAuthor()\n * ```\n * @returns A string containing the author of this document, if it has one.\n */\n PDFDocument.prototype.getAuthor = function () {\n var author = this.getInfoDict().lookup(PDFName.Author);\n if (!author)\n return undefined;\n assertIsLiteralOrHexString(author);\n return author.decodeText();\n };\n /**\n * Get this document's subject metadata. The subject appears in the\n * \"Document Properties\" section of most PDF readers. For example:\n * ```js\n * const subject = pdfDoc.getSubject()\n * ```\n * @returns A string containing the subject of this document, if it has one.\n */\n PDFDocument.prototype.getSubject = function () {\n var subject = this.getInfoDict().lookup(PDFName.Subject);\n if (!subject)\n return undefined;\n assertIsLiteralOrHexString(subject);\n return subject.decodeText();\n };\n /**\n * Get this document's keywords metadata. The keywords appear in the\n * \"Document Properties\" section of most PDF readers. For example:\n * ```js\n * const keywords = pdfDoc.getKeywords()\n * ```\n * @returns A string containing the keywords of this document, if it has any.\n */\n PDFDocument.prototype.getKeywords = function () {\n var keywords = this.getInfoDict().lookup(PDFName.Keywords);\n if (!keywords)\n return undefined;\n assertIsLiteralOrHexString(keywords);\n return keywords.decodeText();\n };\n /**\n * Get this document's creator metadata. The creator appears in the\n * \"Document Properties\" section of most PDF readers. For example:\n * ```js\n * const creator = pdfDoc.getCreator()\n * ```\n * @returns A string containing the creator of this document, if it has one.\n */\n PDFDocument.prototype.getCreator = function () {\n var creator = this.getInfoDict().lookup(PDFName.Creator);\n if (!creator)\n return undefined;\n assertIsLiteralOrHexString(creator);\n return creator.decodeText();\n };\n /**\n * Get this document's producer metadata. The producer appears in the\n * \"Document Properties\" section of most PDF readers. For example:\n * ```js\n * const producer = pdfDoc.getProducer()\n * ```\n * @returns A string containing the producer of this document, if it has one.\n */\n PDFDocument.prototype.getProducer = function () {\n var producer = this.getInfoDict().lookup(PDFName.Producer);\n if (!producer)\n return undefined;\n assertIsLiteralOrHexString(producer);\n return producer.decodeText();\n };\n /**\n * Get this document's creation date metadata. The creation date appears in\n * the \"Document Properties\" section of most PDF readers. For example:\n * ```js\n * const creationDate = pdfDoc.getCreationDate()\n * ```\n * @returns A Date containing the creation date of this document,\n * if it has one.\n */\n PDFDocument.prototype.getCreationDate = function () {\n var creationDate = this.getInfoDict().lookup(PDFName.CreationDate);\n if (!creationDate)\n return undefined;\n assertIsLiteralOrHexString(creationDate);\n return creationDate.decodeDate();\n };\n /**\n * Get this document's modification date metadata. The modification date\n * appears in the \"Document Properties\" section of most PDF readers.\n * For example:\n * ```js\n * const modification = pdfDoc.getModificationDate()\n * ```\n * @returns A Date containing the modification date of this document,\n * if it has one.\n */\n PDFDocument.prototype.getModificationDate = function () {\n var modificationDate = this.getInfoDict().lookup(PDFName.ModDate);\n if (!modificationDate)\n return undefined;\n assertIsLiteralOrHexString(modificationDate);\n return modificationDate.decodeDate();\n };\n /**\n * Set this document's title metadata. The title will appear in the\n * \"Document Properties\" section of most PDF readers. For example:\n * ```js\n * pdfDoc.setTitle('🥚 The Life of an Egg 🍳')\n * ```\n *\n * To display the title in the window's title bar, set the\n * `showInWindowTitleBar` option to `true` (works for _most_ PDF readers).\n * For example:\n * ```js\n * pdfDoc.setTitle('🥚 The Life of an Egg 🍳', { showInWindowTitleBar: true })\n * ```\n *\n * @param title The title of this document.\n * @param options The options to be used when setting the title.\n */\n PDFDocument.prototype.setTitle = function (title, options) {\n assertIs(title, 'title', ['string']);\n var key = PDFName.of('Title');\n this.getInfoDict().set(key, PDFHexString.fromText(title));\n // Indicate that readers should display the title rather than the filename\n if (options === null || options === void 0 ? void 0 : options.showInWindowTitleBar) {\n var prefs = this.catalog.getOrCreateViewerPreferences();\n prefs.setDisplayDocTitle(true);\n }\n };\n /**\n * Set this document's author metadata. The author will appear in the\n * \"Document Properties\" section of most PDF readers. For example:\n * ```js\n * pdfDoc.setAuthor('Humpty Dumpty')\n * ```\n * @param author The author of this document.\n */\n PDFDocument.prototype.setAuthor = function (author) {\n assertIs(author, 'author', ['string']);\n var key = PDFName.of('Author');\n this.getInfoDict().set(key, PDFHexString.fromText(author));\n };\n /**\n * Set this document's subject metadata. The subject will appear in the\n * \"Document Properties\" section of most PDF readers. For example:\n * ```js\n * pdfDoc.setSubject('📘 An Epic Tale of Woe 📖')\n * ```\n * @param subject The subject of this document.\n */\n PDFDocument.prototype.setSubject = function (subject) {\n assertIs(subject, 'author', ['string']);\n var key = PDFName.of('Subject');\n this.getInfoDict().set(key, PDFHexString.fromText(subject));\n };\n /**\n * Set this document's keyword metadata. These keywords will appear in the\n * \"Document Properties\" section of most PDF readers. For example:\n * ```js\n * pdfDoc.setKeywords(['eggs', 'wall', 'fall', 'king', 'horses', 'men'])\n * ```\n * @param keywords An array of keywords associated with this document.\n */\n PDFDocument.prototype.setKeywords = function (keywords) {\n assertIs(keywords, 'keywords', [Array]);\n var key = PDFName.of('Keywords');\n this.getInfoDict().set(key, PDFHexString.fromText(keywords.join(' ')));\n };\n /**\n * Set this document's creator metadata. The creator will appear in the\n * \"Document Properties\" section of most PDF readers. For example:\n * ```js\n * pdfDoc.setCreator('PDF App 9000 🤖')\n * ```\n * @param creator The creator of this document.\n */\n PDFDocument.prototype.setCreator = function (creator) {\n assertIs(creator, 'creator', ['string']);\n var key = PDFName.of('Creator');\n this.getInfoDict().set(key, PDFHexString.fromText(creator));\n };\n /**\n * Set this document's producer metadata. The producer will appear in the\n * \"Document Properties\" section of most PDF readers. For example:\n * ```js\n * pdfDoc.setProducer('PDF App 9000 🤖')\n * ```\n * @param producer The producer of this document.\n */\n PDFDocument.prototype.setProducer = function (producer) {\n assertIs(producer, 'creator', ['string']);\n var key = PDFName.of('Producer');\n this.getInfoDict().set(key, PDFHexString.fromText(producer));\n };\n /**\n * Set this document's language metadata. The language will appear in the\n * \"Document Properties\" section of some PDF readers. For example:\n * ```js\n * pdfDoc.setLanguage('en-us')\n * ```\n *\n * @param language An RFC 3066 _Language-Tag_ denoting the language of this\n * document, or an empty string if the language is unknown.\n */\n PDFDocument.prototype.setLanguage = function (language) {\n assertIs(language, 'language', ['string']);\n var key = PDFName.of('Lang');\n this.catalog.set(key, PDFString.of(language));\n };\n /**\n * Set this document's creation date metadata. The creation date will appear\n * in the \"Document Properties\" section of most PDF readers. For example:\n * ```js\n * pdfDoc.setCreationDate(new Date())\n * ```\n * @param creationDate The date this document was created.\n */\n PDFDocument.prototype.setCreationDate = function (creationDate) {\n assertIs(creationDate, 'creationDate', [[Date, 'Date']]);\n var key = PDFName.of('CreationDate');\n this.getInfoDict().set(key, PDFString.fromDate(creationDate));\n };\n /**\n * Set this document's modification date metadata. The modification date will\n * appear in the \"Document Properties\" section of most PDF readers. For\n * example:\n * ```js\n * pdfDoc.setModificationDate(new Date())\n * ```\n * @param modificationDate The date this document was last modified.\n */\n PDFDocument.prototype.setModificationDate = function (modificationDate) {\n assertIs(modificationDate, 'modificationDate', [[Date, 'Date']]);\n var key = PDFName.of('ModDate');\n this.getInfoDict().set(key, PDFString.fromDate(modificationDate));\n };\n /**\n * Get the number of pages contained in this document. For example:\n * ```js\n * const totalPages = pdfDoc.getPageCount()\n * ```\n * @returns The number of pages in this document.\n */\n PDFDocument.prototype.getPageCount = function () {\n if (this.pageCount === undefined)\n this.pageCount = this.getPages().length;\n return this.pageCount;\n };\n /**\n * Get an array of all the pages contained in this document. The pages are\n * stored in the array in the same order that they are rendered in the\n * document. For example:\n * ```js\n * const pages = pdfDoc.getPages()\n * pages[0] // The first page of the document\n * pages[2] // The third page of the document\n * pages[197] // The 198th page of the document\n * ```\n * @returns An array of all the pages contained in this document.\n */\n PDFDocument.prototype.getPages = function () {\n return this.pageCache.access();\n };\n /**\n * Get the page rendered at a particular `index` of the document. For example:\n * ```js\n * pdfDoc.getPage(0) // The first page of the document\n * pdfDoc.getPage(2) // The third page of the document\n * pdfDoc.getPage(197) // The 198th page of the document\n * ```\n * @returns The [[PDFPage]] rendered at the given `index` of the document.\n */\n PDFDocument.prototype.getPage = function (index) {\n var pages = this.getPages();\n assertRange(index, 'index', 0, pages.length - 1);\n return pages[index];\n };\n /**\n * Get an array of indices for all the pages contained in this document. The\n * array will contain a range of integers from\n * `0..pdfDoc.getPageCount() - 1`. For example:\n * ```js\n * const pdfDoc = await PDFDocument.create()\n * pdfDoc.addPage()\n * pdfDoc.addPage()\n * pdfDoc.addPage()\n *\n * const indices = pdfDoc.getPageIndices()\n * indices // => [0, 1, 2]\n * ```\n * @returns An array of indices for all pages contained in this document.\n */\n PDFDocument.prototype.getPageIndices = function () {\n return range(0, this.getPageCount());\n };\n /**\n * Remove the page at a given index from this document. For example:\n * ```js\n * pdfDoc.removePage(0) // Remove the first page of the document\n * pdfDoc.removePage(2) // Remove the third page of the document\n * pdfDoc.removePage(197) // Remove the 198th page of the document\n * ```\n * Once a page has been removed, it will no longer be rendered at that index\n * in the document.\n * @param index The index of the page to be removed.\n */\n PDFDocument.prototype.removePage = function (index) {\n var pageCount = this.getPageCount();\n if (this.pageCount === 0)\n throw new RemovePageFromEmptyDocumentError();\n assertRange(index, 'index', 0, pageCount - 1);\n this.catalog.removeLeafNode(index);\n this.pageCount = pageCount - 1;\n };\n /**\n * Add a page to the end of this document. This method accepts three\n * different value types for the `page` parameter:\n *\n * | Type | Behavior |\n * | ------------------ | ----------------------------------------------------------------------------------- |\n * | `undefined` | Create a new page and add it to the end of this document |\n * | `[number, number]` | Create a new page with the given dimensions and add it to the end of this document |\n * | `PDFPage` | Add the existing page to the end of this document |\n *\n * For example:\n * ```js\n * // page=undefined\n * const newPage = pdfDoc.addPage()\n *\n * // page=[number, number]\n * import { PageSizes } from 'pdf-lib'\n * const newPage1 = pdfDoc.addPage(PageSizes.A7)\n * const newPage2 = pdfDoc.addPage(PageSizes.Letter)\n * const newPage3 = pdfDoc.addPage([500, 750])\n *\n * // page=PDFPage\n * const pdfDoc1 = await PDFDocument.create()\n * const pdfDoc2 = await PDFDocument.load(...)\n * const [existingPage] = await pdfDoc1.copyPages(pdfDoc2, [0])\n * pdfDoc1.addPage(existingPage)\n * ```\n *\n * @param page Optionally, the desired dimensions or existing page.\n * @returns The newly created (or existing) page.\n */\n PDFDocument.prototype.addPage = function (page) {\n assertIs(page, 'page', ['undefined', [PDFPage, 'PDFPage'], Array]);\n return this.insertPage(this.getPageCount(), page);\n };\n /**\n * Insert a page at a given index within this document. This method accepts\n * three different value types for the `page` parameter:\n *\n * | Type | Behavior |\n * | ------------------ | ------------------------------------------------------------------------------ |\n * | `undefined` | Create a new page and insert it into this document |\n * | `[number, number]` | Create a new page with the given dimensions and insert it into this document |\n * | `PDFPage` | Insert the existing page into this document |\n *\n * For example:\n * ```js\n * // page=undefined\n * const newPage = pdfDoc.insertPage(2)\n *\n * // page=[number, number]\n * import { PageSizes } from 'pdf-lib'\n * const newPage1 = pdfDoc.insertPage(2, PageSizes.A7)\n * const newPage2 = pdfDoc.insertPage(0, PageSizes.Letter)\n * const newPage3 = pdfDoc.insertPage(198, [500, 750])\n *\n * // page=PDFPage\n * const pdfDoc1 = await PDFDocument.create()\n * const pdfDoc2 = await PDFDocument.load(...)\n * const [existingPage] = await pdfDoc1.copyPages(pdfDoc2, [0])\n * pdfDoc1.insertPage(0, existingPage)\n * ```\n *\n * @param index The index at which the page should be inserted (zero-based).\n * @param page Optionally, the desired dimensions or existing page.\n * @returns The newly created (or existing) page.\n */\n PDFDocument.prototype.insertPage = function (index, page) {\n var pageCount = this.getPageCount();\n assertRange(index, 'index', 0, pageCount);\n assertIs(page, 'page', ['undefined', [PDFPage, 'PDFPage'], Array]);\n if (!page || Array.isArray(page)) {\n var dims = Array.isArray(page) ? page : PageSizes.A4;\n page = PDFPage.create(this);\n page.setSize.apply(page, dims);\n }\n else if (page.doc !== this) {\n throw new ForeignPageError();\n }\n var parentRef = this.catalog.insertLeafNode(page.ref, index);\n page.node.setParent(parentRef);\n this.pageMap.set(page.node, page);\n this.pageCache.invalidate();\n this.pageCount = pageCount + 1;\n return page;\n };\n /**\n * Copy pages from a source document into this document. Allows pages to be\n * copied between different [[PDFDocument]] instances. For example:\n * ```js\n * const pdfDoc = await PDFDocument.create()\n * const srcDoc = await PDFDocument.load(...)\n *\n * const copiedPages = await pdfDoc.copyPages(srcDoc, [0, 3, 89])\n * const [firstPage, fourthPage, ninetiethPage] = copiedPages;\n *\n * pdfDoc.addPage(fourthPage)\n * pdfDoc.insertPage(0, ninetiethPage)\n * pdfDoc.addPage(firstPage)\n * ```\n * @param srcDoc The document from which pages should be copied.\n * @param indices The indices of the pages that should be copied.\n * @returns Resolves with an array of pages copied into this document.\n */\n PDFDocument.prototype.copyPages = function (srcDoc, indices) {\n return __awaiter(this, void 0, void 0, function () {\n var copier, srcPages, copiedPages, idx, len, srcPage, copiedPage, ref;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n assertIs(srcDoc, 'srcDoc', [[PDFDocument, 'PDFDocument']]);\n assertIs(indices, 'indices', [Array]);\n return [4 /*yield*/, srcDoc.flush()];\n case 1:\n _a.sent();\n copier = PDFObjectCopier.for(srcDoc.context, this.context);\n srcPages = srcDoc.getPages();\n copiedPages = new Array(indices.length);\n for (idx = 0, len = indices.length; idx < len; idx++) {\n srcPage = srcPages[indices[idx]];\n copiedPage = copier.copy(srcPage.node);\n ref = this.context.register(copiedPage);\n copiedPages[idx] = PDFPage.of(copiedPage, ref, this);\n }\n return [2 /*return*/, copiedPages];\n }\n });\n });\n };\n /**\n * Get a copy of this document.\n *\n * For example:\n * ```js\n * const srcDoc = await PDFDocument.load(...)\n * const pdfDoc = await srcDoc.copy()\n * ```\n *\n * > **NOTE:** This method won't copy all information over to the new\n * > document (acroforms, outlines, etc...).\n *\n * @returns Resolves with a copy this document.\n */\n PDFDocument.prototype.copy = function () {\n return __awaiter(this, void 0, void 0, function () {\n var pdfCopy, contentPages, idx, len;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, PDFDocument.create()];\n case 1:\n pdfCopy = _a.sent();\n return [4 /*yield*/, pdfCopy.copyPages(this, this.getPageIndices())];\n case 2:\n contentPages = _a.sent();\n for (idx = 0, len = contentPages.length; idx < len; idx++) {\n pdfCopy.addPage(contentPages[idx]);\n }\n if (this.getAuthor() !== undefined) {\n pdfCopy.setAuthor(this.getAuthor());\n }\n if (this.getCreationDate() !== undefined) {\n pdfCopy.setCreationDate(this.getCreationDate());\n }\n if (this.getCreator() !== undefined) {\n pdfCopy.setCreator(this.getCreator());\n }\n if (this.getModificationDate() !== undefined) {\n pdfCopy.setModificationDate(this.getModificationDate());\n }\n if (this.getProducer() !== undefined) {\n pdfCopy.setProducer(this.getProducer());\n }\n if (this.getSubject() !== undefined) {\n pdfCopy.setSubject(this.getSubject());\n }\n if (this.getTitle() !== undefined) {\n pdfCopy.setTitle(this.getTitle());\n }\n pdfCopy.defaultWordBreaks = this.defaultWordBreaks;\n return [2 /*return*/, pdfCopy];\n }\n });\n });\n };\n /**\n * Add JavaScript to this document. The supplied `script` is executed when the\n * document is opened. The `script` can be used to perform some operation\n * when the document is opened (e.g. logging to the console), or it can be\n * used to define a function that can be referenced later in a JavaScript\n * action. For example:\n * ```js\n * // Show \"Hello World!\" in the console when the PDF is opened\n * pdfDoc.addJavaScript(\n * 'main',\n * 'console.show(); console.println(\"Hello World!\");'\n * );\n *\n * // Define a function named \"foo\" that can be called in JavaScript Actions\n * pdfDoc.addJavaScript(\n * 'foo',\n * 'function foo() { return \"foo\"; }'\n * );\n * ```\n * See the [JavaScript for Acrobat API Reference](https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/js_api_reference.pdf)\n * for details.\n * @param name The name of the script. Must be unique per document.\n * @param script The JavaScript to execute.\n */\n PDFDocument.prototype.addJavaScript = function (name, script) {\n assertIs(name, 'name', ['string']);\n assertIs(script, 'script', ['string']);\n var embedder = JavaScriptEmbedder.for(script, name);\n var ref = this.context.nextRef();\n var javaScript = PDFJavaScript.of(ref, this, embedder);\n this.javaScripts.push(javaScript);\n };\n /**\n * Add an attachment to this document. Attachments are visible in the\n * \"Attachments\" panel of Adobe Acrobat and some other PDF readers. Any\n * type of file can be added as an attachment. This includes, but is not\n * limited to, `.png`, `.jpg`, `.pdf`, `.csv`, `.docx`, and `.xlsx` files.\n *\n * The input data can be provided in multiple formats:\n *\n * | Type | Contents |\n * | ------------- | -------------------------------------------------------------- |\n * | `string` | A base64 encoded string (or data URI) containing an attachment |\n * | `Uint8Array` | The raw bytes of an attachment |\n * | `ArrayBuffer` | The raw bytes of an attachment |\n *\n * For example:\n * ```js\n * // attachment=string\n * await pdfDoc.attach('/9j/4AAQSkZJRgABAQAAAQABAAD/2wBD...', 'cat_riding_unicorn.jpg', {\n * mimeType: 'image/jpeg',\n * description: 'Cool cat riding a unicorn! 🦄🐈🕶️',\n * creationDate: new Date('2019/12/01'),\n * modificationDate: new Date('2020/04/19'),\n * })\n * await pdfDoc.attach('data:image/jpeg;base64,/9j/4AAQ...', 'cat_riding_unicorn.jpg', {\n * mimeType: 'image/jpeg',\n * description: 'Cool cat riding a unicorn! 🦄🐈🕶️',\n * creationDate: new Date('2019/12/01'),\n * modificationDate: new Date('2020/04/19'),\n * })\n *\n * // attachment=Uint8Array\n * import fs from 'fs'\n * const uint8Array = fs.readFileSync('cat_riding_unicorn.jpg')\n * await pdfDoc.attach(uint8Array, 'cat_riding_unicorn.jpg', {\n * mimeType: 'image/jpeg',\n * description: 'Cool cat riding a unicorn! 🦄🐈🕶️',\n * creationDate: new Date('2019/12/01'),\n * modificationDate: new Date('2020/04/19'),\n * })\n *\n * // attachment=ArrayBuffer\n * const url = 'https://pdf-lib.js.org/assets/cat_riding_unicorn.jpg'\n * const arrayBuffer = await fetch(url).then(res => res.arrayBuffer())\n * await pdfDoc.attach(arrayBuffer, 'cat_riding_unicorn.jpg', {\n * mimeType: 'image/jpeg',\n * description: 'Cool cat riding a unicorn! 🦄🐈🕶️',\n * creationDate: new Date('2019/12/01'),\n * modificationDate: new Date('2020/04/19'),\n * })\n * ```\n *\n * @param attachment The input data containing the file to be attached.\n * @param name The name of the file to be attached.\n * @returns Resolves when the attachment is complete.\n */\n PDFDocument.prototype.attach = function (attachment, name, options) {\n if (options === void 0) { options = {}; }\n return __awaiter(this, void 0, void 0, function () {\n var bytes, embedder, ref, embeddedFile;\n return __generator(this, function (_a) {\n assertIs(attachment, 'attachment', ['string', Uint8Array, ArrayBuffer]);\n assertIs(name, 'name', ['string']);\n assertOrUndefined(options.mimeType, 'mimeType', ['string']);\n assertOrUndefined(options.description, 'description', ['string']);\n assertOrUndefined(options.creationDate, 'options.creationDate', [Date]);\n assertOrUndefined(options.modificationDate, 'options.modificationDate', [\n Date,\n ]);\n assertIsOneOfOrUndefined(options.afRelationship, 'options.afRelationship', AFRelationship);\n bytes = toUint8Array(attachment);\n embedder = FileEmbedder.for(bytes, name, options);\n ref = this.context.nextRef();\n embeddedFile = PDFEmbeddedFile.of(ref, this, embedder);\n this.embeddedFiles.push(embeddedFile);\n return [2 /*return*/];\n });\n });\n };\n /**\n * Embed a font into this document. The input data can be provided in multiple\n * formats:\n *\n * | Type | Contents |\n * | --------------- | ------------------------------------------------------- |\n * | `StandardFonts` | One of the standard 14 fonts |\n * | `string` | A base64 encoded string (or data URI) containing a font |\n * | `Uint8Array` | The raw bytes of a font |\n * | `ArrayBuffer` | The raw bytes of a font |\n *\n * For example:\n * ```js\n * // font=StandardFonts\n * import { StandardFonts } from 'pdf-lib'\n * const font1 = await pdfDoc.embedFont(StandardFonts.Helvetica)\n *\n * // font=string\n * const font2 = await pdfDoc.embedFont('AAEAAAAVAQAABABQRFNJRx/upe...')\n * const font3 = await pdfDoc.embedFont('data:font/opentype;base64,AAEAAA...')\n *\n * // font=Uint8Array\n * import fs from 'fs'\n * const font4 = await pdfDoc.embedFont(fs.readFileSync('Ubuntu-R.ttf'))\n *\n * // font=ArrayBuffer\n * const url = 'https://pdf-lib.js.org/assets/ubuntu/Ubuntu-R.ttf'\n * const ubuntuBytes = await fetch(url).then(res => res.arrayBuffer())\n * const font5 = await pdfDoc.embedFont(ubuntuBytes)\n * ```\n * See also: [[registerFontkit]]\n * @param font The input data for a font.\n * @param options The options to be used when embedding the font.\n * @returns Resolves with the embedded font.\n */\n PDFDocument.prototype.embedFont = function (font, options) {\n if (options === void 0) { options = {}; }\n return __awaiter(this, void 0, void 0, function () {\n var _a, subset, customName, features, embedder, bytes, fontkit, _b, ref, pdfFont;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = options.subset, subset = _a === void 0 ? false : _a, customName = options.customName, features = options.features;\n assertIs(font, 'font', ['string', Uint8Array, ArrayBuffer]);\n assertIs(subset, 'subset', ['boolean']);\n if (!isStandardFont(font)) return [3 /*break*/, 1];\n embedder = StandardFontEmbedder.for(font, customName);\n return [3 /*break*/, 7];\n case 1:\n if (!canBeConvertedToUint8Array(font)) return [3 /*break*/, 6];\n bytes = toUint8Array(font);\n fontkit = this.assertFontkit();\n if (!subset) return [3 /*break*/, 3];\n return [4 /*yield*/, CustomFontSubsetEmbedder.for(fontkit, bytes, customName, features)];\n case 2:\n _b = _c.sent();\n return [3 /*break*/, 5];\n case 3: return [4 /*yield*/, CustomFontEmbedder.for(fontkit, bytes, customName, features)];\n case 4:\n _b = _c.sent();\n _c.label = 5;\n case 5:\n embedder = _b;\n return [3 /*break*/, 7];\n case 6: throw new TypeError('`font` must be one of `StandardFonts | string | Uint8Array | ArrayBuffer`');\n case 7:\n ref = this.context.nextRef();\n pdfFont = PDFFont.of(ref, this, embedder);\n this.fonts.push(pdfFont);\n return [2 /*return*/, pdfFont];\n }\n });\n });\n };\n /**\n * Embed a standard font into this document.\n * For example:\n * ```js\n * import { StandardFonts } from 'pdf-lib'\n * const helveticaFont = pdfDoc.embedFont(StandardFonts.Helvetica)\n * ```\n * @param font The standard font to be embedded.\n * @param customName The name to be used when embedding the font.\n * @returns The embedded font.\n */\n PDFDocument.prototype.embedStandardFont = function (font, customName) {\n assertIs(font, 'font', ['string']);\n if (!isStandardFont(font)) {\n throw new TypeError('`font` must be one of type `StandardFonts`');\n }\n var embedder = StandardFontEmbedder.for(font, customName);\n var ref = this.context.nextRef();\n var pdfFont = PDFFont.of(ref, this, embedder);\n this.fonts.push(pdfFont);\n return pdfFont;\n };\n /**\n * Embed a JPEG image into this document. The input data can be provided in\n * multiple formats:\n *\n * | Type | Contents |\n * | ------------- | ------------------------------------------------------------- |\n * | `string` | A base64 encoded string (or data URI) containing a JPEG image |\n * | `Uint8Array` | The raw bytes of a JPEG image |\n * | `ArrayBuffer` | The raw bytes of a JPEG image |\n *\n * For example:\n * ```js\n * // jpg=string\n * const image1 = await pdfDoc.embedJpg('/9j/4AAQSkZJRgABAQAAAQABAAD/2wBD...')\n * const image2 = await pdfDoc.embedJpg('data:image/jpeg;base64,/9j/4AAQ...')\n *\n * // jpg=Uint8Array\n * import fs from 'fs'\n * const uint8Array = fs.readFileSync('cat_riding_unicorn.jpg')\n * const image3 = await pdfDoc.embedJpg(uint8Array)\n *\n * // jpg=ArrayBuffer\n * const url = 'https://pdf-lib.js.org/assets/cat_riding_unicorn.jpg'\n * const arrayBuffer = await fetch(url).then(res => res.arrayBuffer())\n * const image4 = await pdfDoc.embedJpg(arrayBuffer)\n * ```\n *\n * @param jpg The input data for a JPEG image.\n * @returns Resolves with the embedded image.\n */\n PDFDocument.prototype.embedJpg = function (jpg) {\n return __awaiter(this, void 0, void 0, function () {\n var bytes, embedder, ref, pdfImage;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n assertIs(jpg, 'jpg', ['string', Uint8Array, ArrayBuffer]);\n bytes = toUint8Array(jpg);\n return [4 /*yield*/, JpegEmbedder.for(bytes)];\n case 1:\n embedder = _a.sent();\n ref = this.context.nextRef();\n pdfImage = PDFImage.of(ref, this, embedder);\n this.images.push(pdfImage);\n return [2 /*return*/, pdfImage];\n }\n });\n });\n };\n /**\n * Embed a PNG image into this document. The input data can be provided in\n * multiple formats:\n *\n * | Type | Contents |\n * | ------------- | ------------------------------------------------------------ |\n * | `string` | A base64 encoded string (or data URI) containing a PNG image |\n * | `Uint8Array` | The raw bytes of a PNG image |\n * | `ArrayBuffer` | The raw bytes of a PNG image |\n *\n * For example:\n * ```js\n * // png=string\n * const image1 = await pdfDoc.embedPng('iVBORw0KGgoAAAANSUhEUgAAAlgAAAF3...')\n * const image2 = await pdfDoc.embedPng('data:image/png;base64,iVBORw0KGg...')\n *\n * // png=Uint8Array\n * import fs from 'fs'\n * const uint8Array = fs.readFileSync('small_mario.png')\n * const image3 = await pdfDoc.embedPng(uint8Array)\n *\n * // png=ArrayBuffer\n * const url = 'https://pdf-lib.js.org/assets/small_mario.png'\n * const arrayBuffer = await fetch(url).then(res => res.arrayBuffer())\n * const image4 = await pdfDoc.embedPng(arrayBuffer)\n * ```\n *\n * @param png The input data for a PNG image.\n * @returns Resolves with the embedded image.\n */\n PDFDocument.prototype.embedPng = function (png) {\n return __awaiter(this, void 0, void 0, function () {\n var bytes, embedder, ref, pdfImage;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n assertIs(png, 'png', ['string', Uint8Array, ArrayBuffer]);\n bytes = toUint8Array(png);\n return [4 /*yield*/, PngEmbedder.for(bytes)];\n case 1:\n embedder = _a.sent();\n ref = this.context.nextRef();\n pdfImage = PDFImage.of(ref, this, embedder);\n this.images.push(pdfImage);\n return [2 /*return*/, pdfImage];\n }\n });\n });\n };\n /**\n * Embed one or more PDF pages into this document.\n *\n * For example:\n * ```js\n * const pdfDoc = await PDFDocument.create()\n *\n * const sourcePdfUrl = 'https://pdf-lib.js.org/assets/with_large_page_count.pdf'\n * const sourcePdf = await fetch(sourcePdfUrl).then((res) => res.arrayBuffer())\n *\n * // Embed page 74 of `sourcePdf` into `pdfDoc`\n * const [embeddedPage] = await pdfDoc.embedPdf(sourcePdf, [73])\n * ```\n *\n * See [[PDFDocument.load]] for examples of the allowed input data formats.\n *\n * @param pdf The input data containing a PDF document.\n * @param indices The indices of the pages that should be embedded.\n * @returns Resolves with an array of the embedded pages.\n */\n PDFDocument.prototype.embedPdf = function (pdf, indices) {\n if (indices === void 0) { indices = [0]; }\n return __awaiter(this, void 0, void 0, function () {\n var srcDoc, _a, srcPages;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n assertIs(pdf, 'pdf', [\n 'string',\n Uint8Array,\n ArrayBuffer,\n [PDFDocument, 'PDFDocument'],\n ]);\n assertIs(indices, 'indices', [Array]);\n if (!(pdf instanceof PDFDocument)) return [3 /*break*/, 1];\n _a = pdf;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, PDFDocument.load(pdf)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n srcDoc = _a;\n srcPages = pluckIndices(srcDoc.getPages(), indices);\n return [2 /*return*/, this.embedPages(srcPages)];\n }\n });\n });\n };\n /**\n * Embed a single PDF page into this document.\n *\n * For example:\n * ```js\n * const pdfDoc = await PDFDocument.create()\n *\n * const sourcePdfUrl = 'https://pdf-lib.js.org/assets/with_large_page_count.pdf'\n * const sourceBuffer = await fetch(sourcePdfUrl).then((res) => res.arrayBuffer())\n * const sourcePdfDoc = await PDFDocument.load(sourceBuffer)\n * const sourcePdfPage = sourcePdfDoc.getPages()[73]\n *\n * const embeddedPage = await pdfDoc.embedPage(\n * sourcePdfPage,\n *\n * // Clip a section of the source page so that we only embed part of it\n * { left: 100, right: 450, bottom: 330, top: 570 },\n *\n * // Translate all drawings of the embedded page by (10, 200) units\n * [1, 0, 0, 1, 10, 200],\n * )\n * ```\n *\n * @param page The page to be embedded.\n * @param boundingBox\n * Optionally, an area of the source page that should be embedded\n * (defaults to entire page).\n * @param transformationMatrix\n * Optionally, a transformation matrix that is always applied to the embedded\n * page anywhere it is drawn.\n * @returns Resolves with the embedded pdf page.\n */\n PDFDocument.prototype.embedPage = function (page, boundingBox, transformationMatrix) {\n return __awaiter(this, void 0, void 0, function () {\n var embeddedPage;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n assertIs(page, 'page', [[PDFPage, 'PDFPage']]);\n return [4 /*yield*/, this.embedPages([page], [boundingBox], [transformationMatrix])];\n case 1:\n embeddedPage = (_a.sent())[0];\n return [2 /*return*/, embeddedPage];\n }\n });\n });\n };\n /**\n * Embed one or more PDF pages into this document.\n *\n * For example:\n * ```js\n * const pdfDoc = await PDFDocument.create()\n *\n * const sourcePdfUrl = 'https://pdf-lib.js.org/assets/with_large_page_count.pdf'\n * const sourceBuffer = await fetch(sourcePdfUrl).then((res) => res.arrayBuffer())\n * const sourcePdfDoc = await PDFDocument.load(sourceBuffer)\n *\n * const page1 = sourcePdfDoc.getPages()[0]\n * const page2 = sourcePdfDoc.getPages()[52]\n * const page3 = sourcePdfDoc.getPages()[73]\n *\n * const embeddedPages = await pdfDoc.embedPages([page1, page2, page3])\n * ```\n *\n * @param page\n * The pages to be embedded (they must all share the same context).\n * @param boundingBoxes\n * Optionally, an array of clipping boundaries - one for each page\n * (defaults to entirety of each page).\n * @param transformationMatrices\n * Optionally, an array of transformation matrices - one for each page\n * (each page's transformation will apply anywhere it is drawn).\n * @returns Resolves with an array of the embedded pdf pages.\n */\n PDFDocument.prototype.embedPages = function (pages, boundingBoxes, transformationMatrices) {\n if (boundingBoxes === void 0) { boundingBoxes = []; }\n if (transformationMatrices === void 0) { transformationMatrices = []; }\n return __awaiter(this, void 0, void 0, function () {\n var idx, len, currPage, nextPage, context, maybeCopyPage, embeddedPages, idx, len, page, box, matrix, embedder, ref;\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (pages.length === 0)\n return [2 /*return*/, []];\n // Assert all pages have the same context\n for (idx = 0, len = pages.length - 1; idx < len; idx++) {\n currPage = pages[idx];\n nextPage = pages[idx + 1];\n if (currPage.node.context !== nextPage.node.context) {\n throw new PageEmbeddingMismatchedContextError();\n }\n }\n context = pages[0].node.context;\n maybeCopyPage = context === this.context\n ? function (p) { return p; }\n : PDFObjectCopier.for(context, this.context).copy;\n embeddedPages = new Array(pages.length);\n idx = 0, len = pages.length;\n _b.label = 1;\n case 1:\n if (!(idx < len)) return [3 /*break*/, 4];\n page = maybeCopyPage(pages[idx].node);\n box = boundingBoxes[idx];\n matrix = transformationMatrices[idx];\n return [4 /*yield*/, PDFPageEmbedder.for(page, box, matrix)];\n case 2:\n embedder = _b.sent();\n ref = this.context.nextRef();\n embeddedPages[idx] = PDFEmbeddedPage.of(ref, this, embedder);\n _b.label = 3;\n case 3:\n idx++;\n return [3 /*break*/, 1];\n case 4:\n (_a = this.embeddedPages).push.apply(_a, embeddedPages);\n return [2 /*return*/, embeddedPages];\n }\n });\n });\n };\n /**\n * > **NOTE:** You shouldn't need to call this method directly. The [[save]]\n * > and [[saveAsBase64]] methods will automatically ensure that all embedded\n * > assets are flushed before serializing the document.\n *\n * Flush all embedded fonts, PDF pages, and images to this document's\n * [[context]].\n *\n * @returns Resolves when the flush is complete.\n */\n PDFDocument.prototype.flush = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.embedAll(this.fonts)];\n case 1:\n _a.sent();\n return [4 /*yield*/, this.embedAll(this.images)];\n case 2:\n _a.sent();\n return [4 /*yield*/, this.embedAll(this.embeddedPages)];\n case 3:\n _a.sent();\n return [4 /*yield*/, this.embedAll(this.embeddedFiles)];\n case 4:\n _a.sent();\n return [4 /*yield*/, this.embedAll(this.javaScripts)];\n case 5:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Serialize this document to an array of bytes making up a PDF file.\n * For example:\n * ```js\n * const pdfBytes = await pdfDoc.save()\n * ```\n *\n * There are a number of things you can do with the serialized document,\n * depending on the JavaScript environment you're running in:\n * * Write it to a file in Node or React Native\n * * Download it as a Blob in the browser\n * * Render it in an `iframe`\n *\n * @param options The options to be used when saving the document.\n * @returns Resolves with the bytes of the serialized document.\n */\n PDFDocument.prototype.save = function (options) {\n if (options === void 0) { options = {}; }\n return __awaiter(this, void 0, void 0, function () {\n var _a, useObjectStreams, _b, addDefaultPage, _c, objectsPerTick, _d, updateFieldAppearances, form, Writer;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n _a = options.useObjectStreams, useObjectStreams = _a === void 0 ? true : _a, _b = options.addDefaultPage, addDefaultPage = _b === void 0 ? true : _b, _c = options.objectsPerTick, objectsPerTick = _c === void 0 ? 50 : _c, _d = options.updateFieldAppearances, updateFieldAppearances = _d === void 0 ? true : _d;\n assertIs(useObjectStreams, 'useObjectStreams', ['boolean']);\n assertIs(addDefaultPage, 'addDefaultPage', ['boolean']);\n assertIs(objectsPerTick, 'objectsPerTick', ['number']);\n assertIs(updateFieldAppearances, 'updateFieldAppearances', ['boolean']);\n if (addDefaultPage && this.getPageCount() === 0)\n this.addPage();\n if (updateFieldAppearances) {\n form = this.formCache.getValue();\n if (form)\n form.updateFieldAppearances();\n }\n return [4 /*yield*/, this.flush()];\n case 1:\n _e.sent();\n Writer = useObjectStreams ? PDFStreamWriter : PDFWriter;\n return [2 /*return*/, Writer.forContext(this.context, objectsPerTick).serializeToBuffer()];\n }\n });\n });\n };\n /**\n * Serialize this document to a base64 encoded string or data URI making up a\n * PDF file. For example:\n * ```js\n * const base64String = await pdfDoc.saveAsBase64()\n * base64String // => 'JVBERi0xLjcKJYGBgYEKC...'\n *\n * const base64DataUri = await pdfDoc.saveAsBase64({ dataUri: true })\n * base64DataUri // => 'data:application/pdf;base64,JVBERi0xLjcKJYGBgYEKC...'\n * ```\n *\n * @param options The options to be used when saving the document.\n * @returns Resolves with a base64 encoded string or data URI of the\n * serialized document.\n */\n PDFDocument.prototype.saveAsBase64 = function (options) {\n if (options === void 0) { options = {}; }\n return __awaiter(this, void 0, void 0, function () {\n var _a, dataUri, otherOptions, bytes, base64;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = options.dataUri, dataUri = _a === void 0 ? false : _a, otherOptions = __rest(options, [\"dataUri\"]);\n assertIs(dataUri, 'dataUri', ['boolean']);\n return [4 /*yield*/, this.save(otherOptions)];\n case 1:\n bytes = _b.sent();\n base64 = encodeToBase64(bytes);\n return [2 /*return*/, dataUri ? \"data:application/pdf;base64,\" + base64 : base64];\n }\n });\n });\n };\n PDFDocument.prototype.findPageForAnnotationRef = function (ref) {\n var pages = this.getPages();\n for (var idx = 0, len = pages.length; idx < len; idx++) {\n var page = pages[idx];\n var annotations = page.node.Annots();\n if ((annotations === null || annotations === void 0 ? void 0 : annotations.indexOf(ref)) !== undefined) {\n return page;\n }\n }\n return undefined;\n };\n PDFDocument.prototype.embedAll = function (embeddables) {\n return __awaiter(this, void 0, void 0, function () {\n var idx, len;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n idx = 0, len = embeddables.length;\n _a.label = 1;\n case 1:\n if (!(idx < len)) return [3 /*break*/, 4];\n return [4 /*yield*/, embeddables[idx].embed()];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3:\n idx++;\n return [3 /*break*/, 1];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n PDFDocument.prototype.updateInfoDict = function () {\n var pdfLib = \"pdf-lib (https://github.com/Hopding/pdf-lib)\";\n var now = new Date();\n var info = this.getInfoDict();\n this.setProducer(pdfLib);\n this.setModificationDate(now);\n if (!info.get(PDFName.of('Creator')))\n this.setCreator(pdfLib);\n if (!info.get(PDFName.of('CreationDate')))\n this.setCreationDate(now);\n };\n PDFDocument.prototype.getInfoDict = function () {\n var existingInfo = this.context.lookup(this.context.trailerInfo.Info);\n if (existingInfo instanceof PDFDict)\n return existingInfo;\n var newInfo = this.context.obj({});\n this.context.trailerInfo.Info = this.context.register(newInfo);\n return newInfo;\n };\n PDFDocument.prototype.assertFontkit = function () {\n if (!this.fontkit)\n throw new FontkitNotRegisteredError();\n return this.fontkit;\n };\n return PDFDocument;\n}());\nexport default PDFDocument;\n/* tslint:disable-next-line only-arrow-functions */\nfunction assertIsLiteralOrHexString(pdfObject) {\n if (!(pdfObject instanceof PDFHexString) &&\n !(pdfObject instanceof PDFString)) {\n throw new UnexpectedObjectTypeError([PDFHexString, PDFString], pdfObject);\n }\n}\n//# sourceMappingURL=PDFDocument.js.map","export var BlendMode;\n(function (BlendMode) {\n BlendMode[\"Normal\"] = \"Normal\";\n BlendMode[\"Multiply\"] = \"Multiply\";\n BlendMode[\"Screen\"] = \"Screen\";\n BlendMode[\"Overlay\"] = \"Overlay\";\n BlendMode[\"Darken\"] = \"Darken\";\n BlendMode[\"Lighten\"] = \"Lighten\";\n BlendMode[\"ColorDodge\"] = \"ColorDodge\";\n BlendMode[\"ColorBurn\"] = \"ColorBurn\";\n BlendMode[\"HardLight\"] = \"HardLight\";\n BlendMode[\"SoftLight\"] = \"SoftLight\";\n BlendMode[\"Difference\"] = \"Difference\";\n BlendMode[\"Exclusion\"] = \"Exclusion\";\n})(BlendMode || (BlendMode = {}));\n//# sourceMappingURL=PDFPageOptions.js.map","import { __assign } from \"tslib\";\nimport { rgb } from \"./colors\";\nimport { drawImage, drawLine, drawLinesOfText, drawPage, drawRectangle, drawSvgPath, drawEllipse, } from \"./operations\";\nimport { popGraphicsState, pushGraphicsState, translate, LineCapStyle, scale, } from \"./operators\";\nimport PDFDocument from \"./PDFDocument\";\nimport PDFEmbeddedPage from \"./PDFEmbeddedPage\";\nimport PDFFont from \"./PDFFont\";\nimport PDFImage from \"./PDFImage\";\nimport { BlendMode, } from \"./PDFPageOptions\";\nimport { degrees, toDegrees } from \"./rotations\";\nimport { StandardFonts } from \"./StandardFonts\";\nimport { PDFContentStream, PDFName, PDFOperator, PDFPageLeaf, PDFRef, PDFDict, PDFArray, } from \"../core\";\nimport { assertEachIs, assertIs, assertMultiple, assertOrUndefined, breakTextIntoLines, cleanText, rectanglesAreEqual, lineSplit, assertRangeOrUndefined, assertIsOneOfOrUndefined, } from \"../utils\";\n/**\n * Represents a single page of a [[PDFDocument]].\n */\nvar PDFPage = /** @class */ (function () {\n function PDFPage(leafNode, ref, doc) {\n this.fontSize = 24;\n this.fontColor = rgb(0, 0, 0);\n this.lineHeight = 24;\n this.x = 0;\n this.y = 0;\n assertIs(leafNode, 'leafNode', [[PDFPageLeaf, 'PDFPageLeaf']]);\n assertIs(ref, 'ref', [[PDFRef, 'PDFRef']]);\n assertIs(doc, 'doc', [[PDFDocument, 'PDFDocument']]);\n this.node = leafNode;\n this.ref = ref;\n this.doc = doc;\n }\n /**\n * Rotate this page by a multiple of 90 degrees. For example:\n * ```js\n * import { degrees } from 'pdf-lib'\n *\n * page.setRotation(degrees(-90))\n * page.setRotation(degrees(0))\n * page.setRotation(degrees(90))\n * page.setRotation(degrees(180))\n * page.setRotation(degrees(270))\n * ```\n * @param angle The angle to rotate this page.\n */\n PDFPage.prototype.setRotation = function (angle) {\n var degreesAngle = toDegrees(angle);\n assertMultiple(degreesAngle, 'degreesAngle', 90);\n this.node.set(PDFName.of('Rotate'), this.doc.context.obj(degreesAngle));\n };\n /**\n * Get this page's rotation angle in degrees. For example:\n * ```js\n * const rotationAngle = page.getRotation().angle;\n * ```\n * @returns The rotation angle of the page in degrees (always a multiple of\n * 90 degrees).\n */\n PDFPage.prototype.getRotation = function () {\n var Rotate = this.node.Rotate();\n return degrees(Rotate ? Rotate.asNumber() : 0);\n };\n /**\n * Resize this page by increasing or decreasing its width and height. For\n * example:\n * ```js\n * page.setSize(250, 500)\n * page.setSize(page.getWidth() + 50, page.getHeight() + 100)\n * page.setSize(page.getWidth() - 50, page.getHeight() - 100)\n * ```\n *\n * Note that the PDF specification does not allow for pages to have explicit\n * widths and heights. Instead it defines the \"size\" of a page in terms of\n * five rectangles: the MediaBox, CropBox, BleedBox, TrimBox, and ArtBox. As a\n * result, this method cannot directly change the width and height of a page.\n * Instead, it works by adjusting these five boxes.\n *\n * This method performs the following steps:\n * 1. Set width & height of MediaBox.\n * 2. Set width & height of CropBox, if it has same dimensions as MediaBox.\n * 3. Set width & height of BleedBox, if it has same dimensions as MediaBox.\n * 4. Set width & height of TrimBox, if it has same dimensions as MediaBox.\n * 5. Set width & height of ArtBox, if it has same dimensions as MediaBox.\n *\n * This approach works well for most PDF documents as all PDF pages must\n * have a MediaBox, but relatively few have a CropBox, BleedBox, TrimBox, or\n * ArtBox. And when they do have these additional boxes, they often have the\n * same dimensions as the MediaBox. However, if you find this method does not\n * work for your document, consider setting the boxes directly:\n * * [[PDFPage.setMediaBox]]\n * * [[PDFPage.setCropBox]]\n * * [[PDFPage.setBleedBox]]\n * * [[PDFPage.setTrimBox]]\n * * [[PDFPage.setArtBox]]\n *\n * @param width The new width of the page.\n * @param height The new height of the page.\n */\n PDFPage.prototype.setSize = function (width, height) {\n assertIs(width, 'width', ['number']);\n assertIs(height, 'height', ['number']);\n var mediaBox = this.getMediaBox();\n this.setMediaBox(mediaBox.x, mediaBox.y, width, height);\n var cropBox = this.getCropBox();\n var bleedBox = this.getBleedBox();\n var trimBox = this.getTrimBox();\n var artBox = this.getArtBox();\n var hasCropBox = this.node.CropBox();\n var hasBleedBox = this.node.BleedBox();\n var hasTrimBox = this.node.TrimBox();\n var hasArtBox = this.node.ArtBox();\n if (hasCropBox && rectanglesAreEqual(cropBox, mediaBox)) {\n this.setCropBox(mediaBox.x, mediaBox.y, width, height);\n }\n if (hasBleedBox && rectanglesAreEqual(bleedBox, mediaBox)) {\n this.setBleedBox(mediaBox.x, mediaBox.y, width, height);\n }\n if (hasTrimBox && rectanglesAreEqual(trimBox, mediaBox)) {\n this.setTrimBox(mediaBox.x, mediaBox.y, width, height);\n }\n if (hasArtBox && rectanglesAreEqual(artBox, mediaBox)) {\n this.setArtBox(mediaBox.x, mediaBox.y, width, height);\n }\n };\n /**\n * Resize this page by increasing or decreasing its width. For example:\n * ```js\n * page.setWidth(250)\n * page.setWidth(page.getWidth() + 50)\n * page.setWidth(page.getWidth() - 50)\n * ```\n *\n * This method uses [[PDFPage.setSize]] to set the page's width.\n *\n * @param width The new width of the page.\n */\n PDFPage.prototype.setWidth = function (width) {\n assertIs(width, 'width', ['number']);\n this.setSize(width, this.getSize().height);\n };\n /**\n * Resize this page by increasing or decreasing its height. For example:\n * ```js\n * page.setHeight(500)\n * page.setHeight(page.getWidth() + 100)\n * page.setHeight(page.getWidth() - 100)\n * ```\n *\n * This method uses [[PDFPage.setSize]] to set the page's height.\n *\n * @param height The new height of the page.\n */\n PDFPage.prototype.setHeight = function (height) {\n assertIs(height, 'height', ['number']);\n this.setSize(this.getSize().width, height);\n };\n /**\n * Set the MediaBox of this page. For example:\n * ```js\n * const mediaBox = page.getMediaBox()\n *\n * page.setMediaBox(0, 0, 250, 500)\n * page.setMediaBox(mediaBox.x, mediaBox.y, 50, 100)\n * page.setMediaBox(15, 5, mediaBox.width - 50, mediaBox.height - 100)\n * ```\n *\n * See [[PDFPage.getMediaBox]] for details about what the MediaBox represents.\n *\n * @param x The x coordinate of the lower left corner of the new MediaBox.\n * @param y The y coordinate of the lower left corner of the new MediaBox.\n * @param width The width of the new MediaBox.\n * @param height The height of the new MediaBox.\n */\n PDFPage.prototype.setMediaBox = function (x, y, width, height) {\n assertIs(x, 'x', ['number']);\n assertIs(y, 'y', ['number']);\n assertIs(width, 'width', ['number']);\n assertIs(height, 'height', ['number']);\n var mediaBox = this.doc.context.obj([x, y, x + width, y + height]);\n this.node.set(PDFName.MediaBox, mediaBox);\n };\n /**\n * Set the CropBox of this page. For example:\n * ```js\n * const cropBox = page.getCropBox()\n *\n * page.setCropBox(0, 0, 250, 500)\n * page.setCropBox(cropBox.x, cropBox.y, 50, 100)\n * page.setCropBox(15, 5, cropBox.width - 50, cropBox.height - 100)\n * ```\n *\n * See [[PDFPage.getCropBox]] for details about what the CropBox represents.\n *\n * @param x The x coordinate of the lower left corner of the new CropBox.\n * @param y The y coordinate of the lower left corner of the new CropBox.\n * @param width The width of the new CropBox.\n * @param height The height of the new CropBox.\n */\n PDFPage.prototype.setCropBox = function (x, y, width, height) {\n assertIs(x, 'x', ['number']);\n assertIs(y, 'y', ['number']);\n assertIs(width, 'width', ['number']);\n assertIs(height, 'height', ['number']);\n var cropBox = this.doc.context.obj([x, y, x + width, y + height]);\n this.node.set(PDFName.CropBox, cropBox);\n };\n /**\n * Set the BleedBox of this page. For example:\n * ```js\n * const bleedBox = page.getBleedBox()\n *\n * page.setBleedBox(0, 0, 250, 500)\n * page.setBleedBox(bleedBox.x, bleedBox.y, 50, 100)\n * page.setBleedBox(15, 5, bleedBox.width - 50, bleedBox.height - 100)\n * ```\n *\n * See [[PDFPage.getBleedBox]] for details about what the BleedBox represents.\n *\n * @param x The x coordinate of the lower left corner of the new BleedBox.\n * @param y The y coordinate of the lower left corner of the new BleedBox.\n * @param width The width of the new BleedBox.\n * @param height The height of the new BleedBox.\n */\n PDFPage.prototype.setBleedBox = function (x, y, width, height) {\n assertIs(x, 'x', ['number']);\n assertIs(y, 'y', ['number']);\n assertIs(width, 'width', ['number']);\n assertIs(height, 'height', ['number']);\n var bleedBox = this.doc.context.obj([x, y, x + width, y + height]);\n this.node.set(PDFName.BleedBox, bleedBox);\n };\n /**\n * Set the TrimBox of this page. For example:\n * ```js\n * const trimBox = page.getTrimBox()\n *\n * page.setTrimBox(0, 0, 250, 500)\n * page.setTrimBox(trimBox.x, trimBox.y, 50, 100)\n * page.setTrimBox(15, 5, trimBox.width - 50, trimBox.height - 100)\n * ```\n *\n * See [[PDFPage.getTrimBox]] for details about what the TrimBox represents.\n *\n * @param x The x coordinate of the lower left corner of the new TrimBox.\n * @param y The y coordinate of the lower left corner of the new TrimBox.\n * @param width The width of the new TrimBox.\n * @param height The height of the new TrimBox.\n */\n PDFPage.prototype.setTrimBox = function (x, y, width, height) {\n assertIs(x, 'x', ['number']);\n assertIs(y, 'y', ['number']);\n assertIs(width, 'width', ['number']);\n assertIs(height, 'height', ['number']);\n var trimBox = this.doc.context.obj([x, y, x + width, y + height]);\n this.node.set(PDFName.TrimBox, trimBox);\n };\n /**\n * Set the ArtBox of this page. For example:\n * ```js\n * const artBox = page.getArtBox()\n *\n * page.setArtBox(0, 0, 250, 500)\n * page.setArtBox(artBox.x, artBox.y, 50, 100)\n * page.setArtBox(15, 5, artBox.width - 50, artBox.height - 100)\n * ```\n *\n * See [[PDFPage.getArtBox]] for details about what the ArtBox represents.\n *\n * @param x The x coordinate of the lower left corner of the new ArtBox.\n * @param y The y coordinate of the lower left corner of the new ArtBox.\n * @param width The width of the new ArtBox.\n * @param height The height of the new ArtBox.\n */\n PDFPage.prototype.setArtBox = function (x, y, width, height) {\n assertIs(x, 'x', ['number']);\n assertIs(y, 'y', ['number']);\n assertIs(width, 'width', ['number']);\n assertIs(height, 'height', ['number']);\n var artBox = this.doc.context.obj([x, y, x + width, y + height]);\n this.node.set(PDFName.ArtBox, artBox);\n };\n /**\n * Get this page's width and height. For example:\n * ```js\n * const { width, height } = page.getSize()\n * ```\n *\n * This method uses [[PDFPage.getMediaBox]] to obtain the page's\n * width and height.\n *\n * @returns The width and height of the page.\n */\n PDFPage.prototype.getSize = function () {\n var _a = this.getMediaBox(), width = _a.width, height = _a.height;\n return { width: width, height: height };\n };\n /**\n * Get this page's width. For example:\n * ```js\n * const width = page.getWidth()\n * ```\n *\n * This method uses [[PDFPage.getSize]] to obtain the page's size.\n *\n * @returns The width of the page.\n */\n PDFPage.prototype.getWidth = function () {\n return this.getSize().width;\n };\n /**\n * Get this page's height. For example:\n * ```js\n * const height = page.getHeight()\n * ```\n *\n * This method uses [[PDFPage.getSize]] to obtain the page's size.\n *\n * @returns The height of the page.\n */\n PDFPage.prototype.getHeight = function () {\n return this.getSize().height;\n };\n /**\n * Get the rectangle defining this page's MediaBox. For example:\n * ```js\n * const { x, y, width, height } = page.getMediaBox()\n * ```\n *\n * The MediaBox of a page defines the boundaries of the physical medium on\n * which the page is to be displayed/printed. It may include extended area\n * surrounding the page content for bleed marks, printing marks, etc...\n * It may also include areas close to the edges of the medium that cannot be\n * marked because of physical limitations of the output device. Content\n * falling outside this boundary may safely be discarded without affecting\n * the meaning of the PDF file.\n *\n * @returns An object defining the lower left corner of the MediaBox and its\n * width & height.\n */\n PDFPage.prototype.getMediaBox = function () {\n var mediaBox = this.node.MediaBox();\n return mediaBox.asRectangle();\n };\n /**\n * Get the rectangle defining this page's CropBox. For example:\n * ```js\n * const { x, y, width, height } = page.getCropBox()\n * ```\n *\n * The CropBox of a page defines the region to which the contents of the page\n * shall be clipped when displayed or printed. Unlike the other boxes, the\n * CropBox does not necessarily represent the physical page geometry. It\n * merely imposes clipping on the page contents.\n *\n * The CropBox's default value is the page's MediaBox.\n *\n * @returns An object defining the lower left corner of the CropBox and its\n * width & height.\n */\n PDFPage.prototype.getCropBox = function () {\n var _a;\n var cropBox = this.node.CropBox();\n return (_a = cropBox === null || cropBox === void 0 ? void 0 : cropBox.asRectangle()) !== null && _a !== void 0 ? _a : this.getMediaBox();\n };\n /**\n * Get the rectangle defining this page's BleedBox. For example:\n * ```js\n * const { x, y, width, height } = page.getBleedBox()\n * ```\n *\n * The BleedBox of a page defines the region to which the contents of the\n * page shall be clipped when output in a production environment. This may\n * include any extra bleed area needed to accommodate the physical\n * limitations of cutting, folding, and trimming equipment. The actual\n * printed page may include printing marks that fall outside the BleedBox.\n *\n * The BleedBox's default value is the page's CropBox.\n *\n * @returns An object defining the lower left corner of the BleedBox and its\n * width & height.\n */\n PDFPage.prototype.getBleedBox = function () {\n var _a;\n var bleedBox = this.node.BleedBox();\n return (_a = bleedBox === null || bleedBox === void 0 ? void 0 : bleedBox.asRectangle()) !== null && _a !== void 0 ? _a : this.getCropBox();\n };\n /**\n * Get the rectangle defining this page's TrimBox. For example:\n * ```js\n * const { x, y, width, height } = page.getTrimBox()\n * ```\n *\n * The TrimBox of a page defines the intended dimensions of the finished\n * page after trimming. It may be smaller than the MediaBox to allow for\n * production-related content, such as printing instructions, cut marks, or\n * color bars.\n *\n * The TrimBox's default value is the page's CropBox.\n *\n * @returns An object defining the lower left corner of the TrimBox and its\n * width & height.\n */\n PDFPage.prototype.getTrimBox = function () {\n var _a;\n var trimBox = this.node.TrimBox();\n return (_a = trimBox === null || trimBox === void 0 ? void 0 : trimBox.asRectangle()) !== null && _a !== void 0 ? _a : this.getCropBox();\n };\n /**\n * Get the rectangle defining this page's ArtBox. For example:\n * ```js\n * const { x, y, width, height } = page.getArtBox()\n * ```\n *\n * The ArtBox of a page defines the extent of the page's meaningful content\n * (including potential white space).\n *\n * The ArtBox's default value is the page's CropBox.\n *\n * @returns An object defining the lower left corner of the ArtBox and its\n * width & height.\n */\n PDFPage.prototype.getArtBox = function () {\n var _a;\n var artBox = this.node.ArtBox();\n return (_a = artBox === null || artBox === void 0 ? void 0 : artBox.asRectangle()) !== null && _a !== void 0 ? _a : this.getCropBox();\n };\n /**\n * Translate this page's content to a new location on the page. This operation\n * is often useful after resizing the page with [[setSize]]. For example:\n * ```js\n * // Add 50 units of whitespace to the top and right of the page\n * page.setSize(page.getWidth() + 50, page.getHeight() + 50)\n *\n * // Move the page's content from the lower-left corner of the page\n * // to the top-right corner.\n * page.translateContent(50, 50)\n *\n * // Now there are 50 units of whitespace to the left and bottom of the page\n * ```\n * See also: [[resetPosition]]\n * @param x The new position on the x-axis for this page's content.\n * @param y The new position on the y-axis for this page's content.\n */\n PDFPage.prototype.translateContent = function (x, y) {\n assertIs(x, 'x', ['number']);\n assertIs(y, 'y', ['number']);\n this.node.normalize();\n this.getContentStream();\n var start = this.createContentStream(pushGraphicsState(), translate(x, y));\n var startRef = this.doc.context.register(start);\n var end = this.createContentStream(popGraphicsState());\n var endRef = this.doc.context.register(end);\n this.node.wrapContentStreams(startRef, endRef);\n };\n /**\n * Scale the size, content, and annotations of a page.\n *\n * For example:\n * ```js\n * page.scale(0.5, 0.5);\n * ```\n *\n * @param x The factor by which the width for the page should be scaled\n * (e.g. `0.5` is 50%).\n * @param y The factor by which the height for the page should be scaled\n * (e.g. `2.0` is 200%).\n */\n PDFPage.prototype.scale = function (x, y) {\n assertIs(x, 'x', ['number']);\n assertIs(y, 'y', ['number']);\n this.setSize(this.getWidth() * x, this.getHeight() * y);\n this.scaleContent(x, y);\n this.scaleAnnotations(x, y);\n };\n /**\n * Scale the content of a page. This is useful after resizing an existing\n * page. This scales only the content, not the annotations.\n *\n * For example:\n * ```js\n * // Bisect the size of the page\n * page.setSize(page.getWidth() / 2, page.getHeight() / 2);\n *\n * // Scale the content of the page down by 50% in x and y\n * page.scaleContent(0.5, 0.5);\n * ```\n * See also: [[scaleAnnotations]]\n * @param x The factor by which the x-axis for the content should be scaled\n * (e.g. `0.5` is 50%).\n * @param y The factor by which the y-axis for the content should be scaled\n * (e.g. `2.0` is 200%).\n */\n PDFPage.prototype.scaleContent = function (x, y) {\n assertIs(x, 'x', ['number']);\n assertIs(y, 'y', ['number']);\n this.node.normalize();\n this.getContentStream();\n var start = this.createContentStream(pushGraphicsState(), scale(x, y));\n var startRef = this.doc.context.register(start);\n var end = this.createContentStream(popGraphicsState());\n var endRef = this.doc.context.register(end);\n this.node.wrapContentStreams(startRef, endRef);\n };\n /**\n * Scale the annotations of a page. This is useful if you want to scale a\n * page with comments or other annotations.\n * ```js\n * // Scale the content of the page down by 50% in x and y\n * page.scaleContent(0.5, 0.5);\n *\n * // Scale the content of the page down by 50% in x and y\n * page.scaleAnnotations(0.5, 0.5);\n * ```\n * See also: [[scaleContent]]\n * @param x The factor by which the x-axis for the annotations should be\n * scaled (e.g. `0.5` is 50%).\n * @param y The factor by which the y-axis for the annotations should be\n * scaled (e.g. `2.0` is 200%).\n */\n PDFPage.prototype.scaleAnnotations = function (x, y) {\n assertIs(x, 'x', ['number']);\n assertIs(y, 'y', ['number']);\n var annots = this.node.Annots();\n if (!annots)\n return;\n for (var idx = 0; idx < annots.size(); idx++) {\n var annot = annots.lookup(idx);\n if (annot instanceof PDFDict)\n this.scaleAnnot(annot, x, y);\n }\n };\n /**\n * Reset the x and y coordinates of this page to `(0, 0)`. This operation is\n * often useful after calling [[translateContent]]. For example:\n * ```js\n * // Shift the page's contents up and to the right by 50 units\n * page.translateContent(50, 50)\n *\n * // This text will shifted - it will be drawn at (50, 50)\n * page.drawText('I am shifted')\n *\n * // Move back to (0, 0)\n * page.resetPosition()\n *\n * // This text will not be shifted - it will be drawn at (0, 0)\n * page.drawText('I am not shifted')\n * ```\n */\n PDFPage.prototype.resetPosition = function () {\n this.getContentStream(false);\n this.x = 0;\n this.y = 0;\n };\n /**\n * Choose a default font for this page. The default font will be used whenever\n * text is drawn on this page and no font is specified. For example:\n * ```js\n * import { StandardFonts } from 'pdf-lib'\n *\n * const timesRomanFont = await pdfDoc.embedFont(StandardFonts.TimesRoman)\n * const helveticaFont = await pdfDoc.embedFont(StandardFonts.Helvetica)\n * const courierFont = await pdfDoc.embedFont(StandardFonts.Courier)\n *\n * const page = pdfDoc.addPage()\n *\n * page.setFont(helveticaFont)\n * page.drawText('I will be drawn in Helvetica')\n *\n * page.setFont(timesRomanFont)\n * page.drawText('I will be drawn in Courier', { font: courierFont })\n * ```\n * @param font The default font to be used when drawing text on this page.\n */\n PDFPage.prototype.setFont = function (font) {\n // TODO: Reuse image Font name if we've already added this image to Resources.Fonts\n assertIs(font, 'font', [[PDFFont, 'PDFFont']]);\n this.font = font;\n this.fontKey = this.node.newFontDictionary(this.font.name, this.font.ref);\n };\n /**\n * Choose a default font size for this page. The default font size will be\n * used whenever text is drawn on this page and no font size is specified.\n * For example:\n * ```js\n * page.setFontSize(12)\n * page.drawText('I will be drawn in size 12')\n *\n * page.setFontSize(36)\n * page.drawText('I will be drawn in size 24', { fontSize: 24 })\n * ```\n * @param fontSize The default font size to be used when drawing text on this\n * page.\n */\n PDFPage.prototype.setFontSize = function (fontSize) {\n assertIs(fontSize, 'fontSize', ['number']);\n this.fontSize = fontSize;\n };\n /**\n * Choose a default font color for this page. The default font color will be\n * used whenever text is drawn on this page and no font color is specified.\n * For example:\n * ```js\n * import { rgb, cmyk, grayscale } from 'pdf-lib'\n *\n * page.setFontColor(rgb(0.97, 0.02, 0.97))\n * page.drawText('I will be drawn in pink')\n *\n * page.setFontColor(cmyk(0.4, 0.7, 0.39, 0.15))\n * page.drawText('I will be drawn in gray', { color: grayscale(0.5) })\n * ```\n * @param fontColor The default font color to be used when drawing text on\n * this page.\n */\n PDFPage.prototype.setFontColor = function (fontColor) {\n assertIs(fontColor, 'fontColor', [[Object, 'Color']]);\n this.fontColor = fontColor;\n };\n /**\n * Choose a default line height for this page. The default line height will be\n * used whenever text is drawn on this page and no line height is specified.\n * For example:\n * ```js\n * page.setLineHeight(12);\n * page.drawText('These lines will be vertically \\n separated by 12 units')\n *\n * page.setLineHeight(36);\n * page.drawText('These lines will be vertically \\n separated by 24 units', {\n * lineHeight: 24\n * })\n * ```\n * @param lineHeight The default line height to be used when drawing text on\n * this page.\n */\n PDFPage.prototype.setLineHeight = function (lineHeight) {\n assertIs(lineHeight, 'lineHeight', ['number']);\n this.lineHeight = lineHeight;\n };\n /**\n * Get the default position of this page. For example:\n * ```js\n * const { x, y } = page.getPosition()\n * ```\n * @returns The default position of the page.\n */\n PDFPage.prototype.getPosition = function () {\n return { x: this.x, y: this.y };\n };\n /**\n * Get the default x coordinate of this page. For example:\n * ```js\n * const x = page.getX()\n * ```\n * @returns The default x coordinate of the page.\n */\n PDFPage.prototype.getX = function () {\n return this.x;\n };\n /**\n * Get the default y coordinate of this page. For example:\n * ```js\n * const y = page.getY()\n * ```\n * @returns The default y coordinate of the page.\n */\n PDFPage.prototype.getY = function () {\n return this.y;\n };\n /**\n * Change the default position of this page. For example:\n * ```js\n * page.moveTo(0, 0)\n * page.drawText('I will be drawn at the origin')\n *\n * page.moveTo(0, 25)\n * page.drawText('I will be drawn 25 units up')\n *\n * page.moveTo(25, 25)\n * page.drawText('I will be drawn 25 units up and 25 units to the right')\n * ```\n * @param x The new default position on the x-axis for this page.\n * @param y The new default position on the y-axis for this page.\n */\n PDFPage.prototype.moveTo = function (x, y) {\n assertIs(x, 'x', ['number']);\n assertIs(y, 'y', ['number']);\n this.x = x;\n this.y = y;\n };\n /**\n * Change the default position of this page to be further down the y-axis.\n * For example:\n * ```js\n * page.moveTo(50, 50)\n * page.drawText('I will be drawn at (50, 50)')\n *\n * page.moveDown(10)\n * page.drawText('I will be drawn at (50, 40)')\n * ```\n * @param yDecrease The amount by which the page's default position along the\n * y-axis should be decreased.\n */\n PDFPage.prototype.moveDown = function (yDecrease) {\n assertIs(yDecrease, 'yDecrease', ['number']);\n this.y -= yDecrease;\n };\n /**\n * Change the default position of this page to be further up the y-axis.\n * For example:\n * ```js\n * page.moveTo(50, 50)\n * page.drawText('I will be drawn at (50, 50)')\n *\n * page.moveUp(10)\n * page.drawText('I will be drawn at (50, 60)')\n * ```\n * @param yIncrease The amount by which the page's default position along the\n * y-axis should be increased.\n */\n PDFPage.prototype.moveUp = function (yIncrease) {\n assertIs(yIncrease, 'yIncrease', ['number']);\n this.y += yIncrease;\n };\n /**\n * Change the default position of this page to be further left on the x-axis.\n * For example:\n * ```js\n * page.moveTo(50, 50)\n * page.drawText('I will be drawn at (50, 50)')\n *\n * page.moveLeft(10)\n * page.drawText('I will be drawn at (40, 50)')\n * ```\n * @param xDecrease The amount by which the page's default position along the\n * x-axis should be decreased.\n */\n PDFPage.prototype.moveLeft = function (xDecrease) {\n assertIs(xDecrease, 'xDecrease', ['number']);\n this.x -= xDecrease;\n };\n /**\n * Change the default position of this page to be further right on the y-axis.\n * For example:\n * ```js\n * page.moveTo(50, 50)\n * page.drawText('I will be drawn at (50, 50)')\n *\n * page.moveRight(10)\n * page.drawText('I will be drawn at (60, 50)')\n * ```\n * @param xIncrease The amount by which the page's default position along the\n * x-axis should be increased.\n */\n PDFPage.prototype.moveRight = function (xIncrease) {\n assertIs(xIncrease, 'xIncrease', ['number']);\n this.x += xIncrease;\n };\n /**\n * Push one or more operators to the end of this page's current content\n * stream. For example:\n * ```js\n * import {\n * pushGraphicsState,\n * moveTo,\n * lineTo,\n * closePath,\n * setFillingColor,\n * rgb,\n * fill,\n * popGraphicsState,\n * } from 'pdf-lib'\n *\n * // Draw a green triangle in the lower-left corner of the page\n * page.pushOperators(\n * pushGraphicsState(),\n * moveTo(0, 0),\n * lineTo(100, 0),\n * lineTo(50, 100),\n * closePath(),\n * setFillingColor(rgb(0.0, 1.0, 0.0)),\n * fill(),\n * popGraphicsState(),\n * )\n * ```\n * @param operator The operators to be pushed.\n */\n PDFPage.prototype.pushOperators = function () {\n var operator = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operator[_i] = arguments[_i];\n }\n assertEachIs(operator, 'operator', [[PDFOperator, 'PDFOperator']]);\n var contentStream = this.getContentStream();\n contentStream.push.apply(contentStream, operator);\n };\n /**\n * Draw one or more lines of text on this page. For example:\n * ```js\n * import { StandardFonts, rgb } from 'pdf-lib'\n *\n * const helveticaFont = await pdfDoc.embedFont(StandardFonts.Helvetica)\n * const timesRomanFont = await pdfDoc.embedFont(StandardFonts.TimesRoman)\n *\n * const page = pdfDoc.addPage()\n *\n * page.setFont(helveticaFont)\n *\n * page.moveTo(5, 200)\n * page.drawText('The Life of an Egg', { size: 36 })\n *\n * page.moveDown(36)\n * page.drawText('An Epic Tale of Woe', { size: 30 })\n *\n * page.drawText(\n * `Humpty Dumpty sat on a wall \\n` +\n * `Humpty Dumpty had a great fall; \\n` +\n * `All the king's horses and all the king's men \\n` +\n * `Couldn't put Humpty together again. \\n`,\n * {\n * x: 25,\n * y: 100,\n * font: timesRomanFont,\n * size: 24,\n * color: rgb(1, 0, 0),\n * lineHeight: 24,\n * opacity: 0.75,\n * },\n * )\n * ```\n * @param text The text to be drawn.\n * @param options The options to be used when drawing the text.\n */\n PDFPage.prototype.drawText = function (text, options) {\n var _a, _b, _c, _d, _e, _f, _g;\n if (options === void 0) { options = {}; }\n assertIs(text, 'text', ['string']);\n assertOrUndefined(options.color, 'options.color', [[Object, 'Color']]);\n assertRangeOrUndefined(options.opacity, 'opacity.opacity', 0, 1);\n assertOrUndefined(options.font, 'options.font', [[PDFFont, 'PDFFont']]);\n assertOrUndefined(options.size, 'options.size', ['number']);\n assertOrUndefined(options.rotate, 'options.rotate', [[Object, 'Rotation']]);\n assertOrUndefined(options.xSkew, 'options.xSkew', [[Object, 'Rotation']]);\n assertOrUndefined(options.ySkew, 'options.ySkew', [[Object, 'Rotation']]);\n assertOrUndefined(options.x, 'options.x', ['number']);\n assertOrUndefined(options.y, 'options.y', ['number']);\n assertOrUndefined(options.lineHeight, 'options.lineHeight', ['number']);\n assertOrUndefined(options.maxWidth, 'options.maxWidth', ['number']);\n assertOrUndefined(options.wordBreaks, 'options.wordBreaks', [Array]);\n assertIsOneOfOrUndefined(options.blendMode, 'options.blendMode', BlendMode);\n var _h = this.setOrEmbedFont(options.font), oldFont = _h.oldFont, newFont = _h.newFont, newFontKey = _h.newFontKey;\n var fontSize = options.size || this.fontSize;\n var wordBreaks = options.wordBreaks || this.doc.defaultWordBreaks;\n var textWidth = function (t) { return newFont.widthOfTextAtSize(t, fontSize); };\n var lines = options.maxWidth === undefined\n ? lineSplit(cleanText(text))\n : breakTextIntoLines(text, wordBreaks, options.maxWidth, textWidth);\n var encodedLines = new Array(lines.length);\n for (var idx = 0, len = lines.length; idx < len; idx++) {\n encodedLines[idx] = newFont.encodeText(lines[idx]);\n }\n var graphicsStateKey = this.maybeEmbedGraphicsState({\n opacity: options.opacity,\n blendMode: options.blendMode,\n });\n var contentStream = this.getContentStream();\n contentStream.push.apply(contentStream, drawLinesOfText(encodedLines, {\n color: (_a = options.color) !== null && _a !== void 0 ? _a : this.fontColor,\n font: newFontKey,\n size: fontSize,\n rotate: (_b = options.rotate) !== null && _b !== void 0 ? _b : degrees(0),\n xSkew: (_c = options.xSkew) !== null && _c !== void 0 ? _c : degrees(0),\n ySkew: (_d = options.ySkew) !== null && _d !== void 0 ? _d : degrees(0),\n x: (_e = options.x) !== null && _e !== void 0 ? _e : this.x,\n y: (_f = options.y) !== null && _f !== void 0 ? _f : this.y,\n lineHeight: (_g = options.lineHeight) !== null && _g !== void 0 ? _g : this.lineHeight,\n graphicsState: graphicsStateKey,\n }));\n if (options.font) {\n if (oldFont)\n this.setFont(oldFont);\n else\n this.resetFont();\n }\n };\n /**\n * Draw an image on this page. For example:\n * ```js\n * import { degrees } from 'pdf-lib'\n *\n * const jpgUrl = 'https://pdf-lib.js.org/assets/cat_riding_unicorn.jpg'\n * const jpgImageBytes = await fetch(jpgUrl).then((res) => res.arrayBuffer())\n *\n * const jpgImage = await pdfDoc.embedJpg(jpgImageBytes)\n * const jpgDims = jpgImage.scale(0.5)\n *\n * const page = pdfDoc.addPage()\n *\n * page.drawImage(jpgImage, {\n * x: 25,\n * y: 25,\n * width: jpgDims.width,\n * height: jpgDims.height,\n * rotate: degrees(30),\n * opacity: 0.75,\n * })\n * ```\n * @param image The image to be drawn.\n * @param options The options to be used when drawing the image.\n */\n PDFPage.prototype.drawImage = function (image, options) {\n var _a, _b, _c, _d, _e, _f, _g;\n if (options === void 0) { options = {}; }\n // TODO: Reuse image XObject name if we've already added this image to Resources.XObjects\n assertIs(image, 'image', [[PDFImage, 'PDFImage']]);\n assertOrUndefined(options.x, 'options.x', ['number']);\n assertOrUndefined(options.y, 'options.y', ['number']);\n assertOrUndefined(options.width, 'options.width', ['number']);\n assertOrUndefined(options.height, 'options.height', ['number']);\n assertOrUndefined(options.rotate, 'options.rotate', [[Object, 'Rotation']]);\n assertOrUndefined(options.xSkew, 'options.xSkew', [[Object, 'Rotation']]);\n assertOrUndefined(options.ySkew, 'options.ySkew', [[Object, 'Rotation']]);\n assertRangeOrUndefined(options.opacity, 'opacity.opacity', 0, 1);\n assertIsOneOfOrUndefined(options.blendMode, 'options.blendMode', BlendMode);\n var xObjectKey = this.node.newXObject('Image', image.ref);\n var graphicsStateKey = this.maybeEmbedGraphicsState({\n opacity: options.opacity,\n blendMode: options.blendMode,\n });\n var contentStream = this.getContentStream();\n contentStream.push.apply(contentStream, drawImage(xObjectKey, {\n x: (_a = options.x) !== null && _a !== void 0 ? _a : this.x,\n y: (_b = options.y) !== null && _b !== void 0 ? _b : this.y,\n width: (_c = options.width) !== null && _c !== void 0 ? _c : image.size().width,\n height: (_d = options.height) !== null && _d !== void 0 ? _d : image.size().height,\n rotate: (_e = options.rotate) !== null && _e !== void 0 ? _e : degrees(0),\n xSkew: (_f = options.xSkew) !== null && _f !== void 0 ? _f : degrees(0),\n ySkew: (_g = options.ySkew) !== null && _g !== void 0 ? _g : degrees(0),\n graphicsState: graphicsStateKey,\n }));\n };\n /**\n * Draw an embedded PDF page on this page. For example:\n * ```js\n * import { degrees } from 'pdf-lib'\n *\n * const pdfDoc = await PDFDocument.create()\n * const page = pdfDoc.addPage()\n *\n * const sourcePdfUrl = 'https://pdf-lib.js.org/assets/with_large_page_count.pdf'\n * const sourcePdf = await fetch(sourcePdfUrl).then((res) => res.arrayBuffer())\n *\n * // Embed page 74 from the PDF\n * const [embeddedPage] = await pdfDoc.embedPdf(sourcePdf, 73)\n *\n * page.drawPage(embeddedPage, {\n * x: 250,\n * y: 200,\n * xScale: 0.5,\n * yScale: 0.5,\n * rotate: degrees(30),\n * opacity: 0.75,\n * })\n * ```\n *\n * The `options` argument accepts both `width`/`height` and `xScale`/`yScale`\n * as options. Since each of these options defines the size of the drawn page,\n * if both options are given, `width` and `height` take precedence and the\n * corresponding scale variants are ignored.\n *\n * @param embeddedPage The embedded page to be drawn.\n * @param options The options to be used when drawing the embedded page.\n */\n PDFPage.prototype.drawPage = function (embeddedPage, options) {\n var _a, _b, _c, _d, _e;\n if (options === void 0) { options = {}; }\n // TODO: Reuse embeddedPage XObject name if we've already added this embeddedPage to Resources.XObjects\n assertIs(embeddedPage, 'embeddedPage', [\n [PDFEmbeddedPage, 'PDFEmbeddedPage'],\n ]);\n assertOrUndefined(options.x, 'options.x', ['number']);\n assertOrUndefined(options.y, 'options.y', ['number']);\n assertOrUndefined(options.xScale, 'options.xScale', ['number']);\n assertOrUndefined(options.yScale, 'options.yScale', ['number']);\n assertOrUndefined(options.width, 'options.width', ['number']);\n assertOrUndefined(options.height, 'options.height', ['number']);\n assertOrUndefined(options.rotate, 'options.rotate', [[Object, 'Rotation']]);\n assertOrUndefined(options.xSkew, 'options.xSkew', [[Object, 'Rotation']]);\n assertOrUndefined(options.ySkew, 'options.ySkew', [[Object, 'Rotation']]);\n assertRangeOrUndefined(options.opacity, 'opacity.opacity', 0, 1);\n assertIsOneOfOrUndefined(options.blendMode, 'options.blendMode', BlendMode);\n var xObjectKey = this.node.newXObject('EmbeddedPdfPage', embeddedPage.ref);\n var graphicsStateKey = this.maybeEmbedGraphicsState({\n opacity: options.opacity,\n blendMode: options.blendMode,\n });\n // prettier-ignore\n var xScale = (options.width !== undefined ? options.width / embeddedPage.width\n : options.xScale !== undefined ? options.xScale\n : 1);\n // prettier-ignore\n var yScale = (options.height !== undefined ? options.height / embeddedPage.height\n : options.yScale !== undefined ? options.yScale\n : 1);\n var contentStream = this.getContentStream();\n contentStream.push.apply(contentStream, drawPage(xObjectKey, {\n x: (_a = options.x) !== null && _a !== void 0 ? _a : this.x,\n y: (_b = options.y) !== null && _b !== void 0 ? _b : this.y,\n xScale: xScale,\n yScale: yScale,\n rotate: (_c = options.rotate) !== null && _c !== void 0 ? _c : degrees(0),\n xSkew: (_d = options.xSkew) !== null && _d !== void 0 ? _d : degrees(0),\n ySkew: (_e = options.ySkew) !== null && _e !== void 0 ? _e : degrees(0),\n graphicsState: graphicsStateKey,\n }));\n };\n /**\n * Draw an SVG path on this page. For example:\n * ```js\n * import { rgb } from 'pdf-lib'\n *\n * const svgPath = 'M 0,20 L 100,160 Q 130,200 150,120 C 190,-40 200,200 300,150 L 400,90'\n *\n * // Draw path as black line\n * page.drawSvgPath(svgPath, { x: 25, y: 75 })\n *\n * // Change border style and opacity\n * page.drawSvgPath(svgPath, {\n * x: 25,\n * y: 275,\n * borderColor: rgb(0.5, 0.5, 0.5),\n * borderWidth: 2,\n * borderOpacity: 0.75,\n * })\n *\n * // Set fill color and opacity\n * page.drawSvgPath(svgPath, {\n * x: 25,\n * y: 475,\n * color: rgb(1.0, 0, 0),\n * opacity: 0.75,\n * })\n *\n * // Draw 50% of original size\n * page.drawSvgPath(svgPath, {\n * x: 25,\n * y: 675,\n * scale: 0.5,\n * })\n * ```\n * @param path The SVG path to be drawn.\n * @param options The options to be used when drawing the SVG path.\n */\n PDFPage.prototype.drawSvgPath = function (path, options) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n if (options === void 0) { options = {}; }\n assertIs(path, 'path', ['string']);\n assertOrUndefined(options.x, 'options.x', ['number']);\n assertOrUndefined(options.y, 'options.y', ['number']);\n assertOrUndefined(options.scale, 'options.scale', ['number']);\n assertOrUndefined(options.rotate, 'options.rotate', [[Object, 'Rotation']]);\n assertOrUndefined(options.borderWidth, 'options.borderWidth', ['number']);\n assertOrUndefined(options.color, 'options.color', [[Object, 'Color']]);\n assertRangeOrUndefined(options.opacity, 'opacity.opacity', 0, 1);\n assertOrUndefined(options.borderColor, 'options.borderColor', [\n [Object, 'Color'],\n ]);\n assertOrUndefined(options.borderDashArray, 'options.borderDashArray', [\n Array,\n ]);\n assertOrUndefined(options.borderDashPhase, 'options.borderDashPhase', [\n 'number',\n ]);\n assertIsOneOfOrUndefined(options.borderLineCap, 'options.borderLineCap', LineCapStyle);\n assertRangeOrUndefined(options.borderOpacity, 'options.borderOpacity', 0, 1);\n assertIsOneOfOrUndefined(options.blendMode, 'options.blendMode', BlendMode);\n var graphicsStateKey = this.maybeEmbedGraphicsState({\n opacity: options.opacity,\n borderOpacity: options.borderOpacity,\n blendMode: options.blendMode,\n });\n if (!('color' in options) && !('borderColor' in options)) {\n options.borderColor = rgb(0, 0, 0);\n }\n var contentStream = this.getContentStream();\n contentStream.push.apply(contentStream, drawSvgPath(path, {\n x: (_a = options.x) !== null && _a !== void 0 ? _a : this.x,\n y: (_b = options.y) !== null && _b !== void 0 ? _b : this.y,\n scale: options.scale,\n rotate: (_c = options.rotate) !== null && _c !== void 0 ? _c : degrees(0),\n color: (_d = options.color) !== null && _d !== void 0 ? _d : undefined,\n borderColor: (_e = options.borderColor) !== null && _e !== void 0 ? _e : undefined,\n borderWidth: (_f = options.borderWidth) !== null && _f !== void 0 ? _f : 0,\n borderDashArray: (_g = options.borderDashArray) !== null && _g !== void 0 ? _g : undefined,\n borderDashPhase: (_h = options.borderDashPhase) !== null && _h !== void 0 ? _h : undefined,\n borderLineCap: (_j = options.borderLineCap) !== null && _j !== void 0 ? _j : undefined,\n graphicsState: graphicsStateKey,\n }));\n };\n /**\n * Draw a line on this page. For example:\n * ```js\n * import { rgb } from 'pdf-lib'\n *\n * page.drawLine({\n * start: { x: 25, y: 75 },\n * end: { x: 125, y: 175 },\n * thickness: 2,\n * color: rgb(0.75, 0.2, 0.2),\n * opacity: 0.75,\n * })\n * ```\n * @param options The options to be used when drawing the line.\n */\n PDFPage.prototype.drawLine = function (options) {\n var _a, _b, _c, _d, _e;\n assertIs(options.start, 'options.start', [\n [Object, '{ x: number, y: number }'],\n ]);\n assertIs(options.end, 'options.end', [\n [Object, '{ x: number, y: number }'],\n ]);\n assertIs(options.start.x, 'options.start.x', ['number']);\n assertIs(options.start.y, 'options.start.y', ['number']);\n assertIs(options.end.x, 'options.end.x', ['number']);\n assertIs(options.end.y, 'options.end.y', ['number']);\n assertOrUndefined(options.thickness, 'options.thickness', ['number']);\n assertOrUndefined(options.color, 'options.color', [[Object, 'Color']]);\n assertOrUndefined(options.dashArray, 'options.dashArray', [Array]);\n assertOrUndefined(options.dashPhase, 'options.dashPhase', ['number']);\n assertIsOneOfOrUndefined(options.lineCap, 'options.lineCap', LineCapStyle);\n assertRangeOrUndefined(options.opacity, 'opacity.opacity', 0, 1);\n assertIsOneOfOrUndefined(options.blendMode, 'options.blendMode', BlendMode);\n var graphicsStateKey = this.maybeEmbedGraphicsState({\n borderOpacity: options.opacity,\n blendMode: options.blendMode,\n });\n if (!('color' in options)) {\n options.color = rgb(0, 0, 0);\n }\n var contentStream = this.getContentStream();\n contentStream.push.apply(contentStream, drawLine({\n start: options.start,\n end: options.end,\n thickness: (_a = options.thickness) !== null && _a !== void 0 ? _a : 1,\n color: (_b = options.color) !== null && _b !== void 0 ? _b : undefined,\n dashArray: (_c = options.dashArray) !== null && _c !== void 0 ? _c : undefined,\n dashPhase: (_d = options.dashPhase) !== null && _d !== void 0 ? _d : undefined,\n lineCap: (_e = options.lineCap) !== null && _e !== void 0 ? _e : undefined,\n graphicsState: graphicsStateKey,\n }));\n };\n /**\n * Draw a rectangle on this page. For example:\n * ```js\n * import { degrees, grayscale, rgb } from 'pdf-lib'\n *\n * page.drawRectangle({\n * x: 25,\n * y: 75,\n * width: 250,\n * height: 75,\n * rotate: degrees(-15),\n * borderWidth: 5,\n * borderColor: grayscale(0.5),\n * color: rgb(0.75, 0.2, 0.2),\n * opacity: 0.5,\n * borderOpacity: 0.75,\n * })\n * ```\n * @param options The options to be used when drawing the rectangle.\n */\n PDFPage.prototype.drawRectangle = function (options) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;\n if (options === void 0) { options = {}; }\n assertOrUndefined(options.x, 'options.x', ['number']);\n assertOrUndefined(options.y, 'options.y', ['number']);\n assertOrUndefined(options.width, 'options.width', ['number']);\n assertOrUndefined(options.height, 'options.height', ['number']);\n assertOrUndefined(options.rotate, 'options.rotate', [[Object, 'Rotation']]);\n assertOrUndefined(options.xSkew, 'options.xSkew', [[Object, 'Rotation']]);\n assertOrUndefined(options.ySkew, 'options.ySkew', [[Object, 'Rotation']]);\n assertOrUndefined(options.borderWidth, 'options.borderWidth', ['number']);\n assertOrUndefined(options.color, 'options.color', [[Object, 'Color']]);\n assertRangeOrUndefined(options.opacity, 'opacity.opacity', 0, 1);\n assertOrUndefined(options.borderColor, 'options.borderColor', [\n [Object, 'Color'],\n ]);\n assertOrUndefined(options.borderDashArray, 'options.borderDashArray', [\n Array,\n ]);\n assertOrUndefined(options.borderDashPhase, 'options.borderDashPhase', [\n 'number',\n ]);\n assertIsOneOfOrUndefined(options.borderLineCap, 'options.borderLineCap', LineCapStyle);\n assertRangeOrUndefined(options.borderOpacity, 'options.borderOpacity', 0, 1);\n assertIsOneOfOrUndefined(options.blendMode, 'options.blendMode', BlendMode);\n var graphicsStateKey = this.maybeEmbedGraphicsState({\n opacity: options.opacity,\n borderOpacity: options.borderOpacity,\n blendMode: options.blendMode,\n });\n if (!('color' in options) && !('borderColor' in options)) {\n options.color = rgb(0, 0, 0);\n }\n var contentStream = this.getContentStream();\n contentStream.push.apply(contentStream, drawRectangle({\n x: (_a = options.x) !== null && _a !== void 0 ? _a : this.x,\n y: (_b = options.y) !== null && _b !== void 0 ? _b : this.y,\n width: (_c = options.width) !== null && _c !== void 0 ? _c : 150,\n height: (_d = options.height) !== null && _d !== void 0 ? _d : 100,\n rotate: (_e = options.rotate) !== null && _e !== void 0 ? _e : degrees(0),\n xSkew: (_f = options.xSkew) !== null && _f !== void 0 ? _f : degrees(0),\n ySkew: (_g = options.ySkew) !== null && _g !== void 0 ? _g : degrees(0),\n borderWidth: (_h = options.borderWidth) !== null && _h !== void 0 ? _h : 0,\n color: (_j = options.color) !== null && _j !== void 0 ? _j : undefined,\n borderColor: (_k = options.borderColor) !== null && _k !== void 0 ? _k : undefined,\n borderDashArray: (_l = options.borderDashArray) !== null && _l !== void 0 ? _l : undefined,\n borderDashPhase: (_m = options.borderDashPhase) !== null && _m !== void 0 ? _m : undefined,\n graphicsState: graphicsStateKey,\n borderLineCap: (_o = options.borderLineCap) !== null && _o !== void 0 ? _o : undefined,\n }));\n };\n /**\n * Draw a square on this page. For example:\n * ```js\n * import { degrees, grayscale, rgb } from 'pdf-lib'\n *\n * page.drawSquare({\n * x: 25,\n * y: 75,\n * size: 100,\n * rotate: degrees(-15),\n * borderWidth: 5,\n * borderColor: grayscale(0.5),\n * color: rgb(0.75, 0.2, 0.2),\n * opacity: 0.5,\n * borderOpacity: 0.75,\n * })\n * ```\n * @param options The options to be used when drawing the square.\n */\n PDFPage.prototype.drawSquare = function (options) {\n if (options === void 0) { options = {}; }\n var size = options.size;\n assertOrUndefined(size, 'size', ['number']);\n this.drawRectangle(__assign(__assign({}, options), { width: size, height: size }));\n };\n /**\n * Draw an ellipse on this page. For example:\n * ```js\n * import { grayscale, rgb } from 'pdf-lib'\n *\n * page.drawEllipse({\n * x: 200,\n * y: 75,\n * xScale: 100,\n * yScale: 50,\n * borderWidth: 5,\n * borderColor: grayscale(0.5),\n * color: rgb(0.75, 0.2, 0.2),\n * opacity: 0.5,\n * borderOpacity: 0.75,\n * })\n * ```\n * @param options The options to be used when drawing the ellipse.\n */\n PDFPage.prototype.drawEllipse = function (options) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;\n if (options === void 0) { options = {}; }\n assertOrUndefined(options.x, 'options.x', ['number']);\n assertOrUndefined(options.y, 'options.y', ['number']);\n assertOrUndefined(options.xScale, 'options.xScale', ['number']);\n assertOrUndefined(options.yScale, 'options.yScale', ['number']);\n assertOrUndefined(options.rotate, 'options.rotate', [[Object, 'Rotation']]);\n assertOrUndefined(options.color, 'options.color', [[Object, 'Color']]);\n assertRangeOrUndefined(options.opacity, 'opacity.opacity', 0, 1);\n assertOrUndefined(options.borderColor, 'options.borderColor', [\n [Object, 'Color'],\n ]);\n assertRangeOrUndefined(options.borderOpacity, 'options.borderOpacity', 0, 1);\n assertOrUndefined(options.borderWidth, 'options.borderWidth', ['number']);\n assertOrUndefined(options.borderDashArray, 'options.borderDashArray', [\n Array,\n ]);\n assertOrUndefined(options.borderDashPhase, 'options.borderDashPhase', [\n 'number',\n ]);\n assertIsOneOfOrUndefined(options.borderLineCap, 'options.borderLineCap', LineCapStyle);\n assertIsOneOfOrUndefined(options.blendMode, 'options.blendMode', BlendMode);\n var graphicsStateKey = this.maybeEmbedGraphicsState({\n opacity: options.opacity,\n borderOpacity: options.borderOpacity,\n blendMode: options.blendMode,\n });\n if (!('color' in options) && !('borderColor' in options)) {\n options.color = rgb(0, 0, 0);\n }\n var contentStream = this.getContentStream();\n contentStream.push.apply(contentStream, drawEllipse({\n x: (_a = options.x) !== null && _a !== void 0 ? _a : this.x,\n y: (_b = options.y) !== null && _b !== void 0 ? _b : this.y,\n xScale: (_c = options.xScale) !== null && _c !== void 0 ? _c : 100,\n yScale: (_d = options.yScale) !== null && _d !== void 0 ? _d : 100,\n rotate: (_e = options.rotate) !== null && _e !== void 0 ? _e : undefined,\n color: (_f = options.color) !== null && _f !== void 0 ? _f : undefined,\n borderColor: (_g = options.borderColor) !== null && _g !== void 0 ? _g : undefined,\n borderWidth: (_h = options.borderWidth) !== null && _h !== void 0 ? _h : 0,\n borderDashArray: (_j = options.borderDashArray) !== null && _j !== void 0 ? _j : undefined,\n borderDashPhase: (_k = options.borderDashPhase) !== null && _k !== void 0 ? _k : undefined,\n borderLineCap: (_l = options.borderLineCap) !== null && _l !== void 0 ? _l : undefined,\n graphicsState: graphicsStateKey,\n }));\n };\n /**\n * Draw a circle on this page. For example:\n * ```js\n * import { grayscale, rgb } from 'pdf-lib'\n *\n * page.drawCircle({\n * x: 200,\n * y: 150,\n * size: 100,\n * borderWidth: 5,\n * borderColor: grayscale(0.5),\n * color: rgb(0.75, 0.2, 0.2),\n * opacity: 0.5,\n * borderOpacity: 0.75,\n * })\n * ```\n * @param options The options to be used when drawing the ellipse.\n */\n PDFPage.prototype.drawCircle = function (options) {\n if (options === void 0) { options = {}; }\n var _a = options.size, size = _a === void 0 ? 100 : _a;\n assertOrUndefined(size, 'size', ['number']);\n this.drawEllipse(__assign(__assign({}, options), { xScale: size, yScale: size }));\n };\n PDFPage.prototype.setOrEmbedFont = function (font) {\n var oldFont = this.font;\n var oldFontKey = this.fontKey;\n if (font)\n this.setFont(font);\n else\n this.getFont();\n var newFont = this.font;\n var newFontKey = this.fontKey;\n return { oldFont: oldFont, oldFontKey: oldFontKey, newFont: newFont, newFontKey: newFontKey };\n };\n PDFPage.prototype.getFont = function () {\n if (!this.font || !this.fontKey) {\n var font = this.doc.embedStandardFont(StandardFonts.Helvetica);\n this.setFont(font);\n }\n return [this.font, this.fontKey];\n };\n PDFPage.prototype.resetFont = function () {\n this.font = undefined;\n this.fontKey = undefined;\n };\n PDFPage.prototype.getContentStream = function (useExisting) {\n if (useExisting === void 0) { useExisting = true; }\n if (useExisting && this.contentStream)\n return this.contentStream;\n this.contentStream = this.createContentStream();\n this.contentStreamRef = this.doc.context.register(this.contentStream);\n this.node.addContentStream(this.contentStreamRef);\n return this.contentStream;\n };\n PDFPage.prototype.createContentStream = function () {\n var operators = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operators[_i] = arguments[_i];\n }\n var dict = this.doc.context.obj({});\n var contentStream = PDFContentStream.of(dict, operators);\n return contentStream;\n };\n PDFPage.prototype.maybeEmbedGraphicsState = function (options) {\n var opacity = options.opacity, borderOpacity = options.borderOpacity, blendMode = options.blendMode;\n if (opacity === undefined &&\n borderOpacity === undefined &&\n blendMode === undefined) {\n return undefined;\n }\n var graphicsState = this.doc.context.obj({\n Type: 'ExtGState',\n ca: opacity,\n CA: borderOpacity,\n BM: blendMode,\n });\n var key = this.node.newExtGState('GS', graphicsState);\n return key;\n };\n PDFPage.prototype.scaleAnnot = function (annot, x, y) {\n var selectors = ['RD', 'CL', 'Vertices', 'QuadPoints', 'L', 'Rect'];\n for (var idx = 0, len = selectors.length; idx < len; idx++) {\n var list = annot.lookup(PDFName.of(selectors[idx]));\n if (list instanceof PDFArray)\n list.scalePDFNumbers(x, y);\n }\n var inkLists = annot.lookup(PDFName.of('InkList'));\n if (inkLists instanceof PDFArray) {\n for (var idx = 0, len = inkLists.size(); idx < len; idx++) {\n var arr = inkLists.lookup(idx);\n if (arr instanceof PDFArray)\n arr.scalePDFNumbers(x, y);\n }\n }\n };\n /**\n * > **NOTE:** You probably don't want to call this method directly. Instead,\n * > consider using the [[PDFDocument.addPage]] and [[PDFDocument.insertPage]]\n * > methods, which can create instances of [[PDFPage]] for you.\n *\n * Create an instance of [[PDFPage]] from an existing leaf node.\n *\n * @param leafNode The leaf node to be wrapped.\n * @param ref The unique reference for the page.\n * @param doc The document to which the page will belong.\n */\n PDFPage.of = function (leafNode, ref, doc) {\n return new PDFPage(leafNode, ref, doc);\n };\n /**\n * > **NOTE:** You probably don't want to call this method directly. Instead,\n * > consider using the [[PDFDocument.addPage]] and [[PDFDocument.insertPage]]\n * > methods, which can create instances of [[PDFPage]] for you.\n *\n * Create an instance of [[PDFPage]].\n *\n * @param doc The document to which the page will belong.\n */\n PDFPage.create = function (doc) {\n assertIs(doc, 'doc', [[PDFDocument, 'PDFDocument']]);\n var dummyRef = PDFRef.of(-1);\n var pageLeaf = PDFPageLeaf.withContextAndParent(doc.context, dummyRef);\n var pageRef = doc.context.register(pageLeaf);\n return new PDFPage(pageLeaf, pageRef, doc);\n };\n return PDFPage;\n}());\nexport default PDFPage;\n//# sourceMappingURL=PDFPage.js.map","import { __extends } from \"tslib\";\nimport PDFPage from \"../PDFPage\";\nimport PDFFont from \"../PDFFont\";\nimport { ImageAlignment } from \"../image/alignment\";\nimport { normalizeAppearance, defaultButtonAppearanceProvider, } from \"./appearances\";\nimport PDFField, { assertFieldAppearanceOptions, } from \"./PDFField\";\nimport { rgb } from \"../colors\";\nimport { degrees } from \"../rotations\";\nimport { PDFStream, PDFAcroPushButton, } from \"../../core\";\nimport { assertIs, assertOrUndefined, assertPositive } from \"../../utils\";\n/**\n * Represents a button field of a [[PDFForm]].\n *\n * [[PDFButton]] fields are interactive controls that users can click with their\n * mouse. This type of [[PDFField]] is not stateful. The purpose of a button\n * is to perform an action when the user clicks on it, such as opening a print\n * modal or resetting the form. Buttons are typically rectangular in shape and\n * have a text label describing the action that they perform when clicked.\n */\nvar PDFButton = /** @class */ (function (_super) {\n __extends(PDFButton, _super);\n function PDFButton(acroPushButton, ref, doc) {\n var _this = _super.call(this, acroPushButton, ref, doc) || this;\n assertIs(acroPushButton, 'acroButton', [\n [PDFAcroPushButton, 'PDFAcroPushButton'],\n ]);\n _this.acroField = acroPushButton;\n return _this;\n }\n /**\n * Display an image inside the bounds of this button's widgets. For example:\n * ```js\n * const pngImage = await pdfDoc.embedPng(...)\n * const button = form.getButton('some.button.field')\n * button.setImage(pngImage, ImageAlignment.Center)\n * ```\n * This will update the appearances streams for each of this button's widgets.\n * @param image The image that should be displayed.\n * @param alignment The alignment of the image.\n */\n PDFButton.prototype.setImage = function (image, alignment) {\n if (alignment === void 0) { alignment = ImageAlignment.Center; }\n var widgets = this.acroField.getWidgets();\n for (var idx = 0, len = widgets.length; idx < len; idx++) {\n var widget = widgets[idx];\n var streamRef = this.createImageAppearanceStream(widget, image, alignment);\n this.updateWidgetAppearances(widget, { normal: streamRef });\n }\n this.markAsClean();\n };\n /**\n * Set the font size for this field. Larger font sizes will result in larger\n * text being displayed when PDF readers render this button. Font sizes may\n * be integer or floating point numbers. Supplying a negative font size will\n * cause this method to throw an error.\n *\n * For example:\n * ```js\n * const button = form.getButton('some.button.field')\n * button.setFontSize(4)\n * button.setFontSize(15.7)\n * ```\n *\n * > This method depends upon the existence of a default appearance\n * > (`/DA`) string. If this field does not have a default appearance string,\n * > or that string does not contain a font size (via the `Tf` operator),\n * > then this method will throw an error.\n *\n * @param fontSize The font size to be used when rendering text in this field.\n */\n PDFButton.prototype.setFontSize = function (fontSize) {\n assertPositive(fontSize, 'fontSize');\n this.acroField.setFontSize(fontSize);\n this.markAsDirty();\n };\n /**\n * Show this button on the specified page with the given text. For example:\n * ```js\n * const ubuntuFont = await pdfDoc.embedFont(ubuntuFontBytes)\n * const page = pdfDoc.addPage()\n *\n * const form = pdfDoc.getForm()\n * const button = form.createButton('some.button.field')\n *\n * button.addToPage('Do Stuff', page, {\n * x: 50,\n * y: 75,\n * width: 200,\n * height: 100,\n * textColor: rgb(1, 0, 0),\n * backgroundColor: rgb(0, 1, 0),\n * borderColor: rgb(0, 0, 1),\n * borderWidth: 2,\n * rotate: degrees(90),\n * font: ubuntuFont,\n * })\n * ```\n * This will create a new widget for this button field.\n * @param text The text to be displayed for this button widget.\n * @param page The page to which this button widget should be added.\n * @param options The options to be used when adding this button widget.\n */\n PDFButton.prototype.addToPage = function (\n // TODO: This needs to be optional, e.g. for image buttons\n text, page, options) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;\n assertOrUndefined(text, 'text', ['string']);\n assertOrUndefined(page, 'page', [[PDFPage, 'PDFPage']]);\n assertFieldAppearanceOptions(options);\n // Create a widget for this button\n var widget = this.createWidget({\n x: ((_a = options === null || options === void 0 ? void 0 : options.x) !== null && _a !== void 0 ? _a : 0) - ((_b = options === null || options === void 0 ? void 0 : options.borderWidth) !== null && _b !== void 0 ? _b : 0) / 2,\n y: ((_c = options === null || options === void 0 ? void 0 : options.y) !== null && _c !== void 0 ? _c : 0) - ((_d = options === null || options === void 0 ? void 0 : options.borderWidth) !== null && _d !== void 0 ? _d : 0) / 2,\n width: (_e = options === null || options === void 0 ? void 0 : options.width) !== null && _e !== void 0 ? _e : 100,\n height: (_f = options === null || options === void 0 ? void 0 : options.height) !== null && _f !== void 0 ? _f : 50,\n textColor: (_g = options === null || options === void 0 ? void 0 : options.textColor) !== null && _g !== void 0 ? _g : rgb(0, 0, 0),\n backgroundColor: (_h = options === null || options === void 0 ? void 0 : options.backgroundColor) !== null && _h !== void 0 ? _h : rgb(0.75, 0.75, 0.75),\n borderColor: options === null || options === void 0 ? void 0 : options.borderColor,\n borderWidth: (_j = options === null || options === void 0 ? void 0 : options.borderWidth) !== null && _j !== void 0 ? _j : 0,\n rotate: (_k = options === null || options === void 0 ? void 0 : options.rotate) !== null && _k !== void 0 ? _k : degrees(0),\n caption: text,\n hidden: options === null || options === void 0 ? void 0 : options.hidden,\n page: page.ref,\n });\n var widgetRef = this.doc.context.register(widget.dict);\n // Add widget to this field\n this.acroField.addWidget(widgetRef);\n // Set appearance streams for widget\n var font = (_l = options === null || options === void 0 ? void 0 : options.font) !== null && _l !== void 0 ? _l : this.doc.getForm().getDefaultFont();\n this.updateWidgetAppearance(widget, font);\n // Add widget to the given page\n page.node.addAnnot(widgetRef);\n };\n /**\n * Returns `true` if this button has been marked as dirty, or if any of this\n * button's widgets do not have an appearance stream. For example:\n * ```js\n * const button = form.getButton('some.button.field')\n * if (button.needsAppearancesUpdate()) console.log('Needs update')\n * ```\n * @returns Whether or not this button needs an appearance update.\n */\n PDFButton.prototype.needsAppearancesUpdate = function () {\n var _a;\n if (this.isDirty())\n return true;\n var widgets = this.acroField.getWidgets();\n for (var idx = 0, len = widgets.length; idx < len; idx++) {\n var widget = widgets[idx];\n var hasAppearances = ((_a = widget.getAppearances()) === null || _a === void 0 ? void 0 : _a.normal) instanceof PDFStream;\n if (!hasAppearances)\n return true;\n }\n return false;\n };\n /**\n * Update the appearance streams for each of this button's widgets using\n * the default appearance provider for buttons. For example:\n * ```js\n * const helvetica = await pdfDoc.embedFont(StandardFonts.Helvetica)\n * const button = form.getButton('some.button.field')\n * button.defaultUpdateAppearances(helvetica)\n * ```\n * @param font The font to be used for creating the appearance streams.\n */\n PDFButton.prototype.defaultUpdateAppearances = function (font) {\n assertIs(font, 'font', [[PDFFont, 'PDFFont']]);\n this.updateAppearances(font);\n };\n /**\n * Update the appearance streams for each of this button's widgets using\n * the given appearance provider. If no `provider` is passed, the default\n * appearance provider for buttons will be used. For example:\n * ```js\n * const helvetica = await pdfDoc.embedFont(StandardFonts.Helvetica)\n * const button = form.getButton('some.button.field')\n * button.updateAppearances(helvetica, (field, widget, font) => {\n * ...\n * return {\n * normal: drawButton(...),\n * down: drawButton(...),\n * }\n * })\n * ```\n * @param font The font to be used for creating the appearance streams.\n * @param provider Optionally, the appearance provider to be used for\n * generating the contents of the appearance streams.\n */\n PDFButton.prototype.updateAppearances = function (font, provider) {\n assertIs(font, 'font', [[PDFFont, 'PDFFont']]);\n assertOrUndefined(provider, 'provider', [Function]);\n var widgets = this.acroField.getWidgets();\n for (var idx = 0, len = widgets.length; idx < len; idx++) {\n var widget = widgets[idx];\n this.updateWidgetAppearance(widget, font, provider);\n }\n };\n PDFButton.prototype.updateWidgetAppearance = function (widget, font, provider) {\n var apProvider = provider !== null && provider !== void 0 ? provider : defaultButtonAppearanceProvider;\n var appearances = normalizeAppearance(apProvider(this, widget, font));\n this.updateWidgetAppearanceWithFont(widget, font, appearances);\n };\n /**\n * > **NOTE:** You probably don't want to call this method directly. Instead,\n * > consider using the [[PDFForm.getButton]] method, which will create an\n * > instance of [[PDFButton]] for you.\n *\n * Create an instance of [[PDFButton]] from an existing acroPushButton and ref\n *\n * @param acroPushButton The underlying `PDFAcroPushButton` for this button.\n * @param ref The unique reference for this button.\n * @param doc The document to which this button will belong.\n */\n PDFButton.of = function (acroPushButton, ref, doc) { return new PDFButton(acroPushButton, ref, doc); };\n return PDFButton;\n}(PDFField));\nexport default PDFButton;\n//# sourceMappingURL=PDFButton.js.map","/**\n * @licstart The following is the entire license notice for the\n * Javascript code in this page\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 * @licend The above is the entire license notice for the\n * Javascript code in this page\n */\n\n(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\"] = root.pdfjsWorker = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __w_pdfjs_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__w_pdfjs_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__w_pdfjs_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__w_pdfjs_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__w_pdfjs_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__w_pdfjs_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__w_pdfjs_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __w_pdfjs_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__w_pdfjs_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __w_pdfjs_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__w_pdfjs_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__w_pdfjs_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__w_pdfjs_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__w_pdfjs_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __w_pdfjs_require__(__w_pdfjs_require__.s = 0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"WorkerMessageHandler\", {\n enumerable: true,\n get: function get() {\n return _worker.WorkerMessageHandler;\n }\n});\n\nvar _worker = __w_pdfjs_require__(1);\n\nvar pdfjsVersion = '2.5.207';\nvar pdfjsBuild = '0974d605';\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.WorkerMessageHandler = exports.WorkerTask = void 0;\n\nvar _regenerator = _interopRequireDefault(__w_pdfjs_require__(2));\n\nvar _util = __w_pdfjs_require__(5);\n\nvar _primitives = __w_pdfjs_require__(198);\n\nvar _pdf_manager = __w_pdfjs_require__(199);\n\nvar _is_node = __w_pdfjs_require__(7);\n\nvar _message_handler = __w_pdfjs_require__(238);\n\nvar _worker_stream = __w_pdfjs_require__(239);\n\nvar _core_utils = __w_pdfjs_require__(201);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar WorkerTask = function WorkerTaskClosure() {\n function WorkerTask(name) {\n this.name = name;\n this.terminated = false;\n this._capability = (0, _util.createPromiseCapability)();\n }\n\n WorkerTask.prototype = {\n get finished() {\n return this._capability.promise;\n },\n\n finish: function finish() {\n this._capability.resolve();\n },\n terminate: function terminate() {\n this.terminated = true;\n },\n ensureNotTerminated: function ensureNotTerminated() {\n if (this.terminated) {\n throw new Error(\"Worker task was terminated\");\n }\n }\n };\n return WorkerTask;\n}();\n\nexports.WorkerTask = WorkerTask;\nvar WorkerMessageHandler = {\n setup: function setup(handler, port) {\n var testMessageProcessed = false;\n handler.on(\"test\", function wphSetupTest(data) {\n if (testMessageProcessed) {\n return;\n }\n\n testMessageProcessed = true;\n\n if (!(data instanceof Uint8Array)) {\n handler.send(\"test\", null);\n return;\n }\n\n var supportTransfers = data[0] === 255;\n handler.postMessageTransfers = supportTransfers;\n handler.send(\"test\", {\n supportTransfers: supportTransfers\n });\n });\n handler.on(\"configure\", function wphConfigure(data) {\n (0, _util.setVerbosityLevel)(data.verbosity);\n });\n handler.on(\"GetDocRequest\", function wphSetupDoc(data) {\n return WorkerMessageHandler.createDocumentHandler(data, port);\n });\n },\n createDocumentHandler: function createDocumentHandler(docParams, port) {\n var pdfManager;\n var terminated = false;\n var cancelXHRs = null;\n var WorkerTasks = [];\n var verbosity = (0, _util.getVerbosityLevel)();\n var apiVersion = docParams.apiVersion;\n var workerVersion = '2.5.207';\n\n if (apiVersion !== workerVersion) {\n throw new Error(\"The API version \\\"\".concat(apiVersion, \"\\\" does not match \") + \"the Worker version \\\"\".concat(workerVersion, \"\\\".\"));\n }\n\n var enumerableProperties = [];\n\n for (var property in []) {\n enumerableProperties.push(property);\n }\n\n if (enumerableProperties.length) {\n throw new Error(\"The `Array.prototype` contains unexpected enumerable properties: \" + enumerableProperties.join(\", \") + \"; thus breaking e.g. `for...in` iteration of `Array`s.\");\n }\n\n var docId = docParams.docId;\n var docBaseUrl = docParams.docBaseUrl;\n var workerHandlerName = docParams.docId + \"_worker\";\n var handler = new _message_handler.MessageHandler(workerHandlerName, docId, port);\n handler.postMessageTransfers = docParams.postMessageTransfers;\n\n function ensureNotTerminated() {\n if (terminated) {\n throw new Error(\"Worker was terminated\");\n }\n }\n\n function startWorkerTask(task) {\n WorkerTasks.push(task);\n }\n\n function finishWorkerTask(task) {\n task.finish();\n var i = WorkerTasks.indexOf(task);\n WorkerTasks.splice(i, 1);\n }\n\n function loadDocument(_x) {\n return _loadDocument.apply(this, arguments);\n }\n\n function _loadDocument() {\n _loadDocument = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee(recoveryMode) {\n var _yield$Promise$all, _yield$Promise$all2, numPages, fingerprint;\n\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return pdfManager.ensureDoc(\"checkHeader\");\n\n case 2:\n _context.next = 4;\n return pdfManager.ensureDoc(\"parseStartXRef\");\n\n case 4:\n _context.next = 6;\n return pdfManager.ensureDoc(\"parse\", [recoveryMode]);\n\n case 6:\n if (recoveryMode) {\n _context.next = 9;\n break;\n }\n\n _context.next = 9;\n return pdfManager.ensureDoc(\"checkFirstPage\");\n\n case 9:\n _context.next = 11;\n return Promise.all([pdfManager.ensureDoc(\"numPages\"), pdfManager.ensureDoc(\"fingerprint\")]);\n\n case 11:\n _yield$Promise$all = _context.sent;\n _yield$Promise$all2 = _slicedToArray(_yield$Promise$all, 2);\n numPages = _yield$Promise$all2[0];\n fingerprint = _yield$Promise$all2[1];\n return _context.abrupt(\"return\", {\n numPages: numPages,\n fingerprint: fingerprint\n });\n\n case 16:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n return _loadDocument.apply(this, arguments);\n }\n\n function getPdfManager(data, evaluatorOptions) {\n var pdfManagerCapability = (0, _util.createPromiseCapability)();\n var newPdfManager;\n var source = data.source;\n\n if (source.data) {\n try {\n newPdfManager = new _pdf_manager.LocalPdfManager(docId, source.data, source.password, evaluatorOptions, docBaseUrl);\n pdfManagerCapability.resolve(newPdfManager);\n } catch (ex) {\n pdfManagerCapability.reject(ex);\n }\n\n return pdfManagerCapability.promise;\n }\n\n var pdfStream,\n cachedChunks = [];\n\n try {\n pdfStream = new _worker_stream.PDFWorkerStream(handler);\n } catch (ex) {\n pdfManagerCapability.reject(ex);\n return pdfManagerCapability.promise;\n }\n\n var fullRequest = pdfStream.getFullReader();\n fullRequest.headersReady.then(function () {\n if (!fullRequest.isRangeSupported) {\n return;\n }\n\n var disableAutoFetch = source.disableAutoFetch || fullRequest.isStreamingSupported;\n newPdfManager = new _pdf_manager.NetworkPdfManager(docId, pdfStream, {\n msgHandler: handler,\n password: source.password,\n length: fullRequest.contentLength,\n disableAutoFetch: disableAutoFetch,\n rangeChunkSize: source.rangeChunkSize\n }, evaluatorOptions, docBaseUrl);\n\n for (var i = 0; i < cachedChunks.length; i++) {\n newPdfManager.sendProgressiveData(cachedChunks[i]);\n }\n\n cachedChunks = [];\n pdfManagerCapability.resolve(newPdfManager);\n cancelXHRs = null;\n })[\"catch\"](function (reason) {\n pdfManagerCapability.reject(reason);\n cancelXHRs = null;\n });\n var loaded = 0;\n\n var flushChunks = function flushChunks() {\n var pdfFile = (0, _util.arraysToBytes)(cachedChunks);\n\n if (source.length && pdfFile.length !== source.length) {\n (0, _util.warn)(\"reported HTTP length is different from actual\");\n }\n\n try {\n newPdfManager = new _pdf_manager.LocalPdfManager(docId, pdfFile, source.password, evaluatorOptions, docBaseUrl);\n pdfManagerCapability.resolve(newPdfManager);\n } catch (ex) {\n pdfManagerCapability.reject(ex);\n }\n\n cachedChunks = [];\n };\n\n var readPromise = new Promise(function (resolve, reject) {\n var readChunk = function readChunk(_ref) {\n var value = _ref.value,\n done = _ref.done;\n\n try {\n ensureNotTerminated();\n\n if (done) {\n if (!newPdfManager) {\n flushChunks();\n }\n\n cancelXHRs = null;\n return;\n }\n\n loaded += (0, _util.arrayByteLength)(value);\n\n if (!fullRequest.isStreamingSupported) {\n handler.send(\"DocProgress\", {\n loaded: 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\n fullRequest.read().then(readChunk, reject);\n });\n readPromise[\"catch\"](function (e) {\n pdfManagerCapability.reject(e);\n cancelXHRs = null;\n });\n\n cancelXHRs = function cancelXHRs(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\", {\n pdfInfo: doc\n });\n }\n\n function onFailure(ex) {\n ensureNotTerminated();\n\n if (ex instanceof _util.PasswordException) {\n var task = new WorkerTask(\"PasswordException: response \".concat(ex.code));\n startWorkerTask(task);\n handler.sendWithPromise(\"PasswordRequest\", ex).then(function (_ref2) {\n var password = _ref2.password;\n finishWorkerTask(task);\n pdfManager.updatePassword(password);\n pdfManagerReady();\n })[\"catch\"](function () {\n finishWorkerTask(task);\n handler.send(\"DocException\", ex);\n });\n } else if (ex instanceof _util.InvalidPDFException || ex instanceof _util.MissingPDFException || ex instanceof _util.UnexpectedResponseException || ex instanceof _util.UnknownErrorException) {\n handler.send(\"DocException\", ex);\n } else {\n handler.send(\"DocException\", new _util.UnknownErrorException(ex.message, ex.toString()));\n }\n }\n\n function pdfManagerReady() {\n ensureNotTerminated();\n loadDocument(false).then(onSuccess, function loadFailure(ex) {\n ensureNotTerminated();\n\n if (!(ex instanceof _core_utils.XRefParseException)) {\n onFailure(ex);\n return;\n }\n\n pdfManager.requestLoadedStream();\n pdfManager.onLoadedStream().then(function () {\n ensureNotTerminated();\n loadDocument(true).then(onSuccess, onFailure);\n });\n }, onFailure);\n }\n\n ensureNotTerminated();\n var evaluatorOptions = {\n maxImageSize: data.maxImageSize,\n disableFontFace: data.disableFontFace,\n ignoreErrors: data.ignoreErrors,\n isEvalSupported: data.isEvalSupported,\n fontExtraProperties: data.fontExtraProperties\n };\n getPdfManager(data, evaluatorOptions).then(function (newPdfManager) {\n if (terminated) {\n newPdfManager.terminate(new _util.AbortException(\"Worker was terminated.\"));\n throw new Error(\"Worker was terminated\");\n }\n\n pdfManager = newPdfManager;\n pdfManager.onLoadedStream().then(function (stream) {\n handler.send(\"DataLoaded\", {\n 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([pdfManager.ensure(page, \"rotate\"), pdfManager.ensure(page, \"ref\"), pdfManager.ensure(page, \"userUnit\"), pdfManager.ensure(page, \"view\")]).then(function (_ref3) {\n var _ref4 = _slicedToArray(_ref3, 4),\n rotate = _ref4[0],\n ref = _ref4[1],\n userUnit = _ref4[2],\n view = _ref4[3];\n\n return {\n rotate: rotate,\n ref: ref,\n userUnit: userUnit,\n view: view\n };\n });\n });\n });\n handler.on(\"GetPageIndex\", function wphSetupGetPageIndex(data) {\n var ref = _primitives.Ref.get(data.ref.num, data.ref.gen);\n\n var catalog = pdfManager.pdfDocument.catalog;\n return catalog.getPageIndex(ref);\n });\n handler.on(\"GetDestinations\", function wphSetupGetDestinations(data) {\n return pdfManager.ensureCatalog(\"destinations\");\n });\n handler.on(\"GetDestination\", function wphSetupGetDestination(data) {\n return pdfManager.ensureCatalog(\"getDestination\", [data.id]);\n });\n handler.on(\"GetPageLabels\", function wphSetupGetPageLabels(data) {\n return pdfManager.ensureCatalog(\"pageLabels\");\n });\n handler.on(\"GetPageLayout\", function wphSetupGetPageLayout(data) {\n return pdfManager.ensureCatalog(\"pageLayout\");\n });\n handler.on(\"GetPageMode\", function wphSetupGetPageMode(data) {\n return pdfManager.ensureCatalog(\"pageMode\");\n });\n handler.on(\"GetViewerPreferences\", function (data) {\n return pdfManager.ensureCatalog(\"viewerPreferences\");\n });\n handler.on(\"GetOpenAction\", function (data) {\n return pdfManager.ensureCatalog(\"openAction\");\n });\n handler.on(\"GetAttachments\", function wphSetupGetAttachments(data) {\n return pdfManager.ensureCatalog(\"attachments\");\n });\n handler.on(\"GetJavaScript\", function wphSetupGetJavaScript(data) {\n return pdfManager.ensureCatalog(\"javaScript\");\n });\n handler.on(\"GetOutline\", function wphSetupGetOutline(data) {\n return pdfManager.ensureCatalog(\"documentOutline\");\n });\n handler.on(\"GetPermissions\", function (data) {\n return pdfManager.ensureCatalog(\"permissions\");\n });\n handler.on(\"GetMetadata\", function wphSetupGetMetadata(data) {\n return Promise.all([pdfManager.ensureDoc(\"documentInfo\"), pdfManager.ensureCatalog(\"metadata\")]);\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 handler.on(\"GetStats\", function wphSetupGetStats(data) {\n return pdfManager.pdfDocument.xref.stats;\n });\n handler.on(\"GetAnnotations\", function (_ref5) {\n var pageIndex = _ref5.pageIndex,\n intent = _ref5.intent;\n return pdfManager.getPage(pageIndex).then(function (page) {\n return page.getAnnotationsData(intent);\n });\n });\n handler.on(\"GetOperatorList\", function wphSetupRenderPage(data, sink) {\n var pageIndex = data.pageIndex;\n pdfManager.getPage(pageIndex).then(function (page) {\n var task = new WorkerTask(\"GetOperatorList: page \".concat(pageIndex));\n startWorkerTask(task);\n var start = verbosity >= _util.VerbosityLevel.INFOS ? Date.now() : 0;\n page.getOperatorList({\n handler: handler,\n sink: sink,\n task: task,\n intent: data.intent,\n renderInteractiveForms: data.renderInteractiveForms\n }).then(function (operatorListInfo) {\n finishWorkerTask(task);\n\n if (start) {\n (0, _util.info)(\"page=\".concat(pageIndex + 1, \" - getOperatorList: time=\") + \"\".concat(Date.now() - start, \"ms, len=\").concat(operatorListInfo.length));\n }\n\n sink.close();\n }, function (reason) {\n finishWorkerTask(task);\n\n if (task.terminated) {\n return;\n }\n\n handler.send(\"UnsupportedFeature\", {\n featureId: _util.UNSUPPORTED_FEATURES.errorOperatorList\n });\n sink.error(reason);\n });\n });\n }, this);\n handler.on(\"GetTextContent\", function wphExtractText(data, sink) {\n var pageIndex = data.pageIndex;\n\n sink.onPull = function (desiredSize) {};\n\n sink.onCancel = function (reason) {};\n\n pdfManager.getPage(pageIndex).then(function (page) {\n var task = new WorkerTask(\"GetTextContent: page \" + pageIndex);\n startWorkerTask(task);\n var start = verbosity >= _util.VerbosityLevel.INFOS ? Date.now() : 0;\n page.extractTextContent({\n handler: handler,\n task: task,\n sink: sink,\n normalizeWhitespace: data.normalizeWhitespace,\n combineTextItems: data.combineTextItems\n }).then(function () {\n finishWorkerTask(task);\n\n if (start) {\n (0, _util.info)(\"page=\".concat(pageIndex + 1, \" - getTextContent: time=\") + \"\".concat(Date.now() - start, \"ms\"));\n }\n\n sink.close();\n }, function (reason) {\n finishWorkerTask(task);\n\n if (task.terminated) {\n return;\n }\n\n sink.error(reason);\n });\n });\n });\n handler.on(\"FontFallback\", function (data) {\n return pdfManager.fontFallback(data.id, handler);\n });\n handler.on(\"Cleanup\", function wphCleanup(data) {\n return pdfManager.cleanup(true);\n });\n handler.on(\"Terminate\", function wphTerminate(data) {\n terminated = true;\n var waitOn = [];\n\n if (pdfManager) {\n pdfManager.terminate(new _util.AbortException(\"Worker was terminated.\"));\n var cleanupPromise = pdfManager.cleanup();\n waitOn.push(cleanupPromise);\n pdfManager = null;\n } else {\n (0, _primitives.clearPrimitiveCaches)();\n }\n\n if (cancelXHRs) {\n cancelXHRs(new _util.AbortException(\"Worker was terminated.\"));\n }\n\n WorkerTasks.forEach(function (task) {\n waitOn.push(task.finished);\n task.terminate();\n });\n return Promise.all(waitOn).then(function () {\n handler.destroy();\n handler = null;\n });\n });\n handler.on(\"Ready\", function wphReady(data) {\n setupDoc(docParams);\n docParams = null;\n });\n return workerHandlerName;\n },\n initializeFromPort: function initializeFromPort(port) {\n var handler = new _message_handler.MessageHandler(\"worker\", \"main\", port);\n WorkerMessageHandler.setup(handler, port);\n handler.send(\"ready\", null);\n }\n};\nexports.WorkerMessageHandler = WorkerMessageHandler;\n\nfunction isMessagePort(maybePort) {\n return typeof maybePort.postMessage === \"function\" && \"onmessage\" in maybePort;\n}\n\nif (typeof window === \"undefined\" && !_is_node.isNodeJS && typeof self !== \"undefined\" && isMessagePort(self)) {\n WorkerMessageHandler.initializeFromPort(self);\n}\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nmodule.exports = __w_pdfjs_require__(3);\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(module) {\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar runtime = function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined;\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n return generator;\n }\n\n exports.wrap = wrap;\n\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n var ContinueSentinel = {};\n\n function Generator() {}\n\n function GeneratorFunction() {}\n\n function GeneratorFunctionPrototype() {}\n\n var IteratorPrototype = {};\n\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n\n if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] = GeneratorFunction.displayName = \"GeneratorFunction\";\n\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n prototype[method] = function (arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n exports.isGeneratorFunction = function (genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor ? ctor === GeneratorFunction || (ctor.displayName || ctor.name) === \"GeneratorFunction\" : false;\n };\n\n exports.mark = function (genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n exports.awrap = function (arg) {\n return {\n __await: arg\n };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n\n if (value && _typeof(value) === \"object\" && hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped;\n resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n\n exports.AsyncIterator = AsyncIterator;\n\n exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n context.sent = context._sent = context.arg;\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n var record = tryCatch(innerFn, self, context);\n\n if (record.type === \"normal\") {\n state = context.done ? GenStateCompleted : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n\n if (method === undefined) {\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator[\"return\"]) {\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (!info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n context[delegate.resultName] = info.value;\n context.next = delegate.nextLoc;\n\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n } else {\n return info;\n }\n\n context.delegate = null;\n return ContinueSentinel;\n }\n\n defineIteratorMethods(Gp);\n Gp[toStringTagSymbol] = \"Generator\";\n\n Gp[iteratorSymbol] = function () {\n return this;\n };\n\n Gp.toString = function () {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function (object) {\n var keys = [];\n\n for (var key in object) {\n keys.push(key);\n }\n\n keys.reverse();\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n return next;\n };\n\n return next.next = next;\n }\n }\n\n return {\n next: doneResult\n };\n }\n\n exports.values = values;\n\n function doneResult() {\n return {\n value: undefined,\n done: true\n };\n }\n\n Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n this.method = \"next\";\n this.arg = undefined;\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n if (name.charAt(0) === \"t\" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n stop: function stop() {\n this.done = true;\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !!caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry && (type === \"break\" || type === \"continue\") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) {\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" || record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n\n return thrown;\n }\n }\n\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n return exports;\n}(( false ? undefined : _typeof(module)) === \"object\" ? module.exports : {});\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n/* WEBPACK VAR INJECTION */}.call(this, __w_pdfjs_require__(4)(module)))\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function (module) {\n if (!module.webpackPolyfill) {\n module.deprecate = function () {};\n\n module.paths = [];\n if (!module.children) module.children = [];\n Object.defineProperty(module, \"loaded\", {\n enumerable: true,\n get: function get() {\n return module.l;\n }\n });\n Object.defineProperty(module, \"id\", {\n enumerable: true,\n get: function get() {\n return module.i;\n }\n });\n module.webpackPolyfill = 1;\n }\n\n return module;\n};\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.arrayByteLength = arrayByteLength;\nexports.arraysToBytes = arraysToBytes;\nexports.assert = assert;\nexports.bytesToString = bytesToString;\nexports.createPromiseCapability = createPromiseCapability;\nexports.getVerbosityLevel = getVerbosityLevel;\nexports.info = info;\nexports.isArrayBuffer = isArrayBuffer;\nexports.isArrayEqual = isArrayEqual;\nexports.isBool = isBool;\nexports.isEmptyObj = isEmptyObj;\nexports.isNum = isNum;\nexports.isString = isString;\nexports.isSameOrigin = isSameOrigin;\nexports.createValidAbsoluteUrl = createValidAbsoluteUrl;\nexports.removeNullCharacters = removeNullCharacters;\nexports.setVerbosityLevel = setVerbosityLevel;\nexports.shadow = shadow;\nexports.string32 = string32;\nexports.stringToBytes = stringToBytes;\nexports.stringToPDFString = stringToPDFString;\nexports.stringToUTF8String = stringToUTF8String;\nexports.utf8StringToString = utf8StringToString;\nexports.warn = warn;\nexports.unreachable = unreachable;\nexports.IsEvalSupportedCached = exports.IsLittleEndianCached = exports.createObjectURL = exports.FormatError = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.MissingPDFException = exports.InvalidPDFException = exports.AbortException = exports.CMapCompressionType = exports.ImageKind = exports.FontType = exports.AnnotationType = exports.AnnotationStateModelType = exports.AnnotationReviewState = exports.AnnotationReplyType = exports.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.UNSUPPORTED_FEATURES = exports.VerbosityLevel = exports.OPS = exports.IDENTITY_MATRIX = exports.FONT_IDENTITY_MATRIX = exports.BaseException = void 0;\n\n__w_pdfjs_require__(6);\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nexports.IDENTITY_MATRIX = IDENTITY_MATRIX;\nvar FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\nexports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX;\nvar 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};\nexports.PermissionFlag = PermissionFlag;\nvar 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};\nexports.TextRenderingMode = TextRenderingMode;\nvar ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3\n};\nexports.ImageKind = ImageKind;\nvar 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};\nexports.AnnotationType = AnnotationType;\nvar AnnotationStateModelType = {\n MARKED: \"Marked\",\n REVIEW: \"Review\"\n};\nexports.AnnotationStateModelType = AnnotationStateModelType;\nvar AnnotationMarkedState = {\n MARKED: \"Marked\",\n UNMARKED: \"Unmarked\"\n};\nexports.AnnotationMarkedState = AnnotationMarkedState;\nvar AnnotationReviewState = {\n ACCEPTED: \"Accepted\",\n REJECTED: \"Rejected\",\n CANCELLED: \"Cancelled\",\n COMPLETED: \"Completed\",\n NONE: \"None\"\n};\nexports.AnnotationReviewState = AnnotationReviewState;\nvar AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\"\n};\nexports.AnnotationReplyType = AnnotationReplyType;\nvar 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};\nexports.AnnotationFlag = AnnotationFlag;\nvar 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};\nexports.AnnotationFieldFlag = AnnotationFieldFlag;\nvar AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5\n};\nexports.AnnotationBorderStyleType = AnnotationBorderStyleType;\nvar 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\"\n};\nexports.StreamType = StreamType;\nvar FontType = {\n UNKNOWN: \"UNKNOWN\",\n TYPE1: \"TYPE1\",\n TYPE1C: \"TYPE1C\",\n CIDFONTTYPE0: \"CIDFONTTYPE0\",\n CIDFONTTYPE0C: \"CIDFONTTYPE0C\",\n TRUETYPE: \"TRUETYPE\",\n CIDFONTTYPE2: \"CIDFONTTYPE2\",\n TYPE3: \"TYPE3\",\n OPENTYPE: \"OPENTYPE\",\n TYPE0: \"TYPE0\",\n MMTYPE1: \"MMTYPE1\"\n};\nexports.FontType = FontType;\nvar VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5\n};\nexports.VerbosityLevel = VerbosityLevel;\nvar CMapCompressionType = {\n NONE: 0,\n BINARY: 1,\n STREAM: 2\n};\nexports.CMapCompressionType = CMapCompressionType;\nvar OPS = {\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotations: 78,\n endAnnotations: 79,\n beginAnnotation: 80,\n endAnnotation: 81,\n paintJpegXObject: 82,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91\n};\nexports.OPS = OPS;\nvar UNSUPPORTED_FEATURES = {\n unknown: \"unknown\",\n forms: \"forms\",\n javaScript: \"javaScript\",\n smask: \"smask\",\n shadingPattern: \"shadingPattern\",\n font: \"font\",\n errorTilingPattern: \"errorTilingPattern\",\n errorExtGState: \"errorExtGState\",\n errorXObject: \"errorXObject\",\n errorFontLoadType3: \"errorFontLoadType3\",\n errorFontState: \"errorFontState\",\n errorFontMissing: \"errorFontMissing\",\n errorFontTranslate: \"errorFontTranslate\",\n errorColorSpace: \"errorColorSpace\",\n errorOperatorList: \"errorOperatorList\",\n errorFontToUnicode: \"errorFontToUnicode\",\n errorFontLoadNative: \"errorFontLoadNative\",\n errorFontGetPath: \"errorFontGetPath\"\n};\nexports.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES;\nvar PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2\n};\nexports.PasswordResponses = PasswordResponses;\nvar 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\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(\"Info: \".concat(msg));\n }\n}\n\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(\"Warning: \".concat(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\nfunction isSameOrigin(baseUrl, otherUrl) {\n var base;\n\n try {\n base = new URL(baseUrl);\n\n if (!base.origin || base.origin === \"null\") {\n return false;\n }\n } catch (e) {\n return false;\n }\n\n var other = new URL(otherUrl, base);\n return base.origin === other.origin;\n}\n\nfunction _isValidProtocol(url) {\n if (!url) {\n return false;\n }\n\n switch (url.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n\n default:\n return false;\n }\n}\n\nfunction createValidAbsoluteUrl(url, baseUrl) {\n if (!url) {\n return null;\n }\n\n try {\n var absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch (ex) {}\n\n return null;\n}\n\nfunction shadow(obj, prop, value) {\n Object.defineProperty(obj, prop, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: false\n });\n return value;\n}\n\nvar BaseException = function BaseExceptionClosure() {\n function BaseException(message) {\n if (this.constructor === BaseException) {\n unreachable(\"Cannot initialize BaseException.\");\n }\n\n this.message = message;\n this.name = this.constructor.name;\n }\n\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n return BaseException;\n}();\n\nexports.BaseException = BaseException;\n\nvar PasswordException = /*#__PURE__*/function (_BaseException) {\n _inherits(PasswordException, _BaseException);\n\n var _super = _createSuper(PasswordException);\n\n function PasswordException(msg, code) {\n var _this;\n\n _classCallCheck(this, PasswordException);\n\n _this = _super.call(this, msg);\n _this.code = code;\n return _this;\n }\n\n return PasswordException;\n}(BaseException);\n\nexports.PasswordException = PasswordException;\n\nvar UnknownErrorException = /*#__PURE__*/function (_BaseException2) {\n _inherits(UnknownErrorException, _BaseException2);\n\n var _super2 = _createSuper(UnknownErrorException);\n\n function UnknownErrorException(msg, details) {\n var _this2;\n\n _classCallCheck(this, UnknownErrorException);\n\n _this2 = _super2.call(this, msg);\n _this2.details = details;\n return _this2;\n }\n\n return UnknownErrorException;\n}(BaseException);\n\nexports.UnknownErrorException = UnknownErrorException;\n\nvar InvalidPDFException = /*#__PURE__*/function (_BaseException3) {\n _inherits(InvalidPDFException, _BaseException3);\n\n var _super3 = _createSuper(InvalidPDFException);\n\n function InvalidPDFException() {\n _classCallCheck(this, InvalidPDFException);\n\n return _super3.apply(this, arguments);\n }\n\n return InvalidPDFException;\n}(BaseException);\n\nexports.InvalidPDFException = InvalidPDFException;\n\nvar MissingPDFException = /*#__PURE__*/function (_BaseException4) {\n _inherits(MissingPDFException, _BaseException4);\n\n var _super4 = _createSuper(MissingPDFException);\n\n function MissingPDFException() {\n _classCallCheck(this, MissingPDFException);\n\n return _super4.apply(this, arguments);\n }\n\n return MissingPDFException;\n}(BaseException);\n\nexports.MissingPDFException = MissingPDFException;\n\nvar UnexpectedResponseException = /*#__PURE__*/function (_BaseException5) {\n _inherits(UnexpectedResponseException, _BaseException5);\n\n var _super5 = _createSuper(UnexpectedResponseException);\n\n function UnexpectedResponseException(msg, status) {\n var _this3;\n\n _classCallCheck(this, UnexpectedResponseException);\n\n _this3 = _super5.call(this, msg);\n _this3.status = status;\n return _this3;\n }\n\n return UnexpectedResponseException;\n}(BaseException);\n\nexports.UnexpectedResponseException = UnexpectedResponseException;\n\nvar FormatError = /*#__PURE__*/function (_BaseException6) {\n _inherits(FormatError, _BaseException6);\n\n var _super6 = _createSuper(FormatError);\n\n function FormatError() {\n _classCallCheck(this, FormatError);\n\n return _super6.apply(this, arguments);\n }\n\n return FormatError;\n}(BaseException);\n\nexports.FormatError = FormatError;\n\nvar AbortException = /*#__PURE__*/function (_BaseException7) {\n _inherits(AbortException, _BaseException7);\n\n var _super7 = _createSuper(AbortException);\n\n function AbortException() {\n _classCallCheck(this, AbortException);\n\n return _super7.apply(this, arguments);\n }\n\n return AbortException;\n}(BaseException);\n\nexports.AbortException = AbortException;\nvar NullCharactersRegExp = /\\x00/g;\n\nfunction removeNullCharacters(str) {\n if (typeof str !== \"string\") {\n warn(\"The argument for removeNullCharacters must be a string.\");\n return str;\n }\n\n return str.replace(NullCharactersRegExp, \"\");\n}\n\nfunction bytesToString(bytes) {\n assert(bytes !== null && _typeof(bytes) === \"object\" && bytes.length !== undefined, \"Invalid argument for bytesToString\");\n var length = bytes.length;\n var MAX_ARGUMENT_COUNT = 8192;\n\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n\n var strBuf = [];\n\n for (var i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n var chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n var chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n\n return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n assert(typeof str === \"string\", \"Invalid argument for stringToBytes\");\n var length = str.length;\n var bytes = new Uint8Array(length);\n\n for (var i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n\n return bytes;\n}\n\nfunction arrayByteLength(arr) {\n if (arr.length !== undefined) {\n return arr.length;\n }\n\n assert(arr.byteLength !== undefined, \"arrayByteLength - invalid argument.\");\n return arr.byteLength;\n}\n\nfunction arraysToBytes(arr) {\n var length = arr.length;\n\n if (length === 1 && arr[0] instanceof Uint8Array) {\n return arr[0];\n }\n\n var resultLength = 0;\n\n for (var i = 0; i < length; i++) {\n resultLength += arrayByteLength(arr[i]);\n }\n\n var pos = 0;\n var data = new Uint8Array(resultLength);\n\n for (var _i = 0; _i < length; _i++) {\n var item = arr[_i];\n\n if (!(item instanceof Uint8Array)) {\n if (typeof item === \"string\") {\n item = stringToBytes(item);\n } else {\n item = new Uint8Array(item);\n }\n }\n\n var itemLength = item.byteLength;\n data.set(item, pos);\n pos += itemLength;\n }\n\n return data;\n}\n\nfunction string32(value) {\n return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n}\n\nfunction isLittleEndian() {\n var buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n var view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\n\nvar IsLittleEndianCached = {\n get value() {\n return shadow(this, \"value\", isLittleEndian());\n }\n\n};\nexports.IsLittleEndianCached = IsLittleEndianCached;\n\nfunction isEvalSupported() {\n try {\n new Function(\"\");\n return true;\n } catch (e) {\n return false;\n }\n}\n\nvar IsEvalSupportedCached = {\n get value() {\n return shadow(this, \"value\", isEvalSupported());\n }\n\n};\nexports.IsEvalSupportedCached = IsEvalSupportedCached;\nvar rgbBuf = [\"rgb(\", 0, \",\", 0, \",\", 0, \")\"];\n\nvar Util = /*#__PURE__*/function () {\n function Util() {\n _classCallCheck(this, Util);\n }\n\n _createClass(Util, null, [{\n key: \"makeCssRgb\",\n value: function makeCssRgb(r, g, b) {\n rgbBuf[1] = r;\n rgbBuf[3] = g;\n rgbBuf[5] = b;\n return rgbBuf.join(\"\");\n }\n }, {\n key: \"transform\",\n value: function transform(m1, m2) {\n return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];\n }\n }, {\n key: \"applyTransform\",\n value: function applyTransform(p, m) {\n var xt = p[0] * m[0] + p[1] * m[2] + m[4];\n var yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n }\n }, {\n key: \"applyInverseTransform\",\n value: function applyInverseTransform(p, m) {\n var d = m[0] * m[3] - m[1] * m[2];\n var xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n var 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 key: \"getAxialAlignedBoundingBox\",\n value: function getAxialAlignedBoundingBox(r, m) {\n var p1 = Util.applyTransform(r, m);\n var p2 = Util.applyTransform(r.slice(2, 4), m);\n var p3 = Util.applyTransform([r[0], r[3]], m);\n var p4 = Util.applyTransform([r[2], r[1]], m);\n return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])];\n }\n }, {\n key: \"inverseTransform\",\n value: function inverseTransform(m) {\n var d = m[0] * m[3] - m[1] * m[2];\n return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n }\n }, {\n key: \"apply3dTransform\",\n value: function apply3dTransform(m, v) {\n return [m[0] * v[0] + m[1] * v[1] + m[2] * v[2], m[3] * v[0] + m[4] * v[1] + m[5] * v[2], m[6] * v[0] + m[7] * v[1] + m[8] * v[2]];\n }\n }, {\n key: \"singularValueDecompose2dScale\",\n value: function singularValueDecompose2dScale(m) {\n var transpose = [m[0], m[2], m[1], m[3]];\n var a = m[0] * transpose[0] + m[1] * transpose[2];\n var b = m[0] * transpose[1] + m[1] * transpose[3];\n var c = m[2] * transpose[0] + m[3] * transpose[2];\n var d = m[2] * transpose[1] + m[3] * transpose[3];\n var first = (a + d) / 2;\n var second = Math.sqrt((a + d) * (a + d) - 4 * (a * d - c * b)) / 2;\n var sx = first + second || 1;\n var sy = first - second || 1;\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n }, {\n key: \"normalizeRect\",\n value: function normalizeRect(rect) {\n var r = rect.slice(0);\n\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n\n return r;\n }\n }, {\n key: \"intersect\",\n value: function intersect(rect1, rect2) {\n function compare(a, b) {\n return a - b;\n }\n\n var orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare);\n var orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare);\n var result = [];\n rect1 = Util.normalizeRect(rect1);\n rect2 = Util.normalizeRect(rect2);\n\n if (orderedX[0] === rect1[0] && orderedX[1] === rect2[0] || orderedX[0] === rect2[0] && orderedX[1] === rect1[0]) {\n result[0] = orderedX[1];\n result[2] = orderedX[2];\n } else {\n return null;\n }\n\n if (orderedY[0] === rect1[1] && orderedY[1] === rect2[1] || orderedY[0] === rect2[1] && orderedY[1] === rect1[1]) {\n result[1] = orderedY[1];\n result[3] = orderedY[2];\n } else {\n return null;\n }\n\n return result;\n }\n }]);\n\n return Util;\n}();\n\nexports.Util = Util;\nvar PDFStringTranslateTable = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2D8, 0x2C7, 0x2C6, 0x2D9, 0x2DD, 0x2DB, 0x2DA, 0x2DC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203A, 0x2212, 0x2030, 0x201E, 0x201C, 0x201D, 0x2018, 0x2019, 0x201A, 0x2122, 0xFB01, 0xFB02, 0x141, 0x152, 0x160, 0x178, 0x17D, 0x131, 0x142, 0x153, 0x161, 0x17E, 0, 0x20AC];\n\nfunction stringToPDFString(str) {\n var length = str.length,\n strBuf = [];\n\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n for (var i = 2; i < length; i += 2) {\n strBuf.push(String.fromCharCode(str.charCodeAt(i) << 8 | str.charCodeAt(i + 1)));\n }\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n for (var _i2 = 2; _i2 < length; _i2 += 2) {\n strBuf.push(String.fromCharCode(str.charCodeAt(_i2 + 1) << 8 | str.charCodeAt(_i2)));\n }\n } else {\n for (var _i3 = 0; _i3 < length; ++_i3) {\n var code = PDFStringTranslateTable[str.charCodeAt(_i3)];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(_i3));\n }\n }\n\n return strBuf.join(\"\");\n}\n\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\n\nfunction isEmptyObj(obj) {\n for (var key in obj) {\n return false;\n }\n\n return true;\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\n return arr1.every(function (element, index) {\n return element === arr2[index];\n });\n}\n\nfunction createPromiseCapability() {\n var capability = Object.create(null);\n var isSettled = false;\n Object.defineProperty(capability, \"settled\", {\n get: function 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\n capability.reject = function (reason) {\n isSettled = true;\n reject(reason);\n };\n });\n return capability;\n}\n\nvar createObjectURL = function createObjectURLClosure() {\n var digits = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n return function createObjectURL(data, contentType) {\n var forceDataSchema = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (!forceDataSchema && URL.createObjectURL) {\n var blob = new Blob([data], {\n type: contentType\n });\n return URL.createObjectURL(blob);\n }\n\n var buffer = \"data:\".concat(contentType, \";base64,\");\n\n for (var i = 0, ii = data.length; i < ii; i += 3) {\n var b1 = data[i] & 0xff;\n var b2 = data[i + 1] & 0xff;\n var b3 = data[i + 2] & 0xff;\n var d1 = b1 >> 2,\n d2 = (b1 & 3) << 4 | b2 >> 4;\n var d3 = i + 1 < ii ? (b2 & 0xf) << 2 | b3 >> 6 : 64;\n var d4 = i + 2 < ii ? b3 & 0x3f : 64;\n buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];\n }\n\n return buffer;\n };\n}();\n\nexports.createObjectURL = createObjectURL;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _is_node = __w_pdfjs_require__(7);\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nif (typeof globalThis === \"undefined\" || !globalThis._pdfjsCompatibilityChecked) {\n if (typeof globalThis === \"undefined\" || globalThis.Math !== Math) {\n globalThis = __w_pdfjs_require__(8);\n }\n\n globalThis._pdfjsCompatibilityChecked = true;\n var hasDOM = (typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\" && (typeof document === \"undefined\" ? \"undefined\" : _typeof(document)) === \"object\";\n var userAgent = typeof navigator !== \"undefined\" && navigator.userAgent || \"\";\n var isIE = /Trident/.test(userAgent);\n\n (function checkNodeBtoa() {\n if (globalThis.btoa || !_is_node.isNodeJS) {\n return;\n }\n\n globalThis.btoa = function (chars) {\n return Buffer.from(chars, \"binary\").toString(\"base64\");\n };\n })();\n\n (function checkNodeAtob() {\n if (globalThis.atob || !_is_node.isNodeJS) {\n return;\n }\n\n globalThis.atob = function (input) {\n return Buffer.from(input, \"base64\").toString(\"binary\");\n };\n })();\n\n (function checkChildNodeRemove() {\n if (!hasDOM) {\n return;\n }\n\n if (typeof Element.prototype.remove !== \"undefined\") {\n return;\n }\n\n Element.prototype.remove = function () {\n if (this.parentNode) {\n this.parentNode.removeChild(this);\n }\n };\n })();\n\n (function checkDOMTokenListAddRemove() {\n if (!hasDOM || _is_node.isNodeJS) {\n return;\n }\n\n var div = document.createElement(\"div\");\n div.classList.add(\"testOne\", \"testTwo\");\n\n if (div.classList.contains(\"testOne\") === true && div.classList.contains(\"testTwo\") === true) {\n return;\n }\n\n var OriginalDOMTokenListAdd = DOMTokenList.prototype.add;\n var OriginalDOMTokenListRemove = DOMTokenList.prototype.remove;\n\n DOMTokenList.prototype.add = function () {\n for (var _len = arguments.length, tokens = new Array(_len), _key = 0; _key < _len; _key++) {\n tokens[_key] = arguments[_key];\n }\n\n for (var _i = 0, _tokens = tokens; _i < _tokens.length; _i++) {\n var token = _tokens[_i];\n OriginalDOMTokenListAdd.call(this, token);\n }\n };\n\n DOMTokenList.prototype.remove = function () {\n for (var _len2 = arguments.length, tokens = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n tokens[_key2] = arguments[_key2];\n }\n\n for (var _i2 = 0, _tokens2 = tokens; _i2 < _tokens2.length; _i2++) {\n var token = _tokens2[_i2];\n OriginalDOMTokenListRemove.call(this, token);\n }\n };\n })();\n\n (function checkDOMTokenListToggle() {\n if (!hasDOM || _is_node.isNodeJS) {\n return;\n }\n\n var div = document.createElement(\"div\");\n\n if (div.classList.toggle(\"test\", 0) === false) {\n return;\n }\n\n DOMTokenList.prototype.toggle = function (token) {\n var force = arguments.length > 1 ? !!arguments[1] : !this.contains(token);\n return this[force ? \"add\" : \"remove\"](token), force;\n };\n })();\n\n (function checkWindowHistoryPushStateReplaceState() {\n if (!hasDOM || !isIE) {\n return;\n }\n\n var OriginalPushState = window.history.pushState;\n var OriginalReplaceState = window.history.replaceState;\n\n window.history.pushState = function (state, title, url) {\n var args = url === undefined ? [state, title] : [state, title, url];\n OriginalPushState.apply(this, args);\n };\n\n window.history.replaceState = function (state, title, url) {\n var args = url === undefined ? [state, title] : [state, title, url];\n OriginalReplaceState.apply(this, args);\n };\n })();\n\n (function checkStringStartsWith() {\n if (String.prototype.startsWith) {\n return;\n }\n\n __w_pdfjs_require__(53);\n })();\n\n (function checkStringEndsWith() {\n if (String.prototype.endsWith) {\n return;\n }\n\n __w_pdfjs_require__(64);\n })();\n\n (function checkStringIncludes() {\n if (String.prototype.includes) {\n return;\n }\n\n __w_pdfjs_require__(66);\n })();\n\n (function checkArrayIncludes() {\n if (Array.prototype.includes) {\n return;\n }\n\n __w_pdfjs_require__(68);\n })();\n\n (function checkArrayFrom() {\n if (Array.from) {\n return;\n }\n\n __w_pdfjs_require__(76);\n })();\n\n (function checkObjectAssign() {\n if (Object.assign) {\n return;\n }\n\n __w_pdfjs_require__(98);\n })();\n\n (function checkMathLog2() {\n if (Math.log2) {\n return;\n }\n\n Math.log2 = __w_pdfjs_require__(101);\n })();\n\n (function checkNumberIsNaN() {\n if (Number.isNaN) {\n return;\n }\n\n Number.isNaN = __w_pdfjs_require__(103);\n })();\n\n (function checkNumberIsInteger() {\n if (Number.isInteger) {\n return;\n }\n\n Number.isInteger = __w_pdfjs_require__(105);\n })();\n\n (function checkTypedArraySlice() {\n if (Uint8Array.prototype.slice) {\n return;\n }\n\n __w_pdfjs_require__(108);\n })();\n\n (function checkPromise() {\n if (globalThis.Promise && globalThis.Promise.allSettled) {\n return;\n }\n\n globalThis.Promise = __w_pdfjs_require__(113);\n })();\n\n (function checkURL() {\n globalThis.URL = __w_pdfjs_require__(136);\n })();\n\n (function checkReadableStream() {\n var isReadableStreamSupported = false;\n\n if (typeof ReadableStream !== \"undefined\") {\n try {\n new ReadableStream({\n start: function start(controller) {\n controller.close();\n }\n });\n isReadableStreamSupported = true;\n } catch (e) {}\n }\n\n if (isReadableStreamSupported) {\n return;\n }\n\n globalThis.ReadableStream = __w_pdfjs_require__(143).ReadableStream;\n })();\n\n (function checkMapEntries() {\n if (globalThis.Map && globalThis.Map.prototype.entries) {\n return;\n }\n\n globalThis.Map = __w_pdfjs_require__(144);\n })();\n\n (function checkSetEntries() {\n if (globalThis.Set && globalThis.Set.prototype.entries) {\n return;\n }\n\n globalThis.Set = __w_pdfjs_require__(151);\n })();\n\n (function checkWeakMap() {\n if (globalThis.WeakMap) {\n return;\n }\n\n globalThis.WeakMap = __w_pdfjs_require__(153);\n })();\n\n (function checkWeakSet() {\n if (globalThis.WeakSet) {\n return;\n }\n\n globalThis.WeakSet = __w_pdfjs_require__(159);\n })();\n\n (function checkStringCodePointAt() {\n if (String.prototype.codePointAt) {\n return;\n }\n\n __w_pdfjs_require__(161);\n })();\n\n (function checkStringFromCodePoint() {\n if (String.fromCodePoint) {\n return;\n }\n\n String.fromCodePoint = __w_pdfjs_require__(163);\n })();\n\n (function checkSymbol() {\n if (globalThis.Symbol) {\n return;\n }\n\n __w_pdfjs_require__(165);\n })();\n\n (function checkStringPadStart() {\n if (String.prototype.padStart) {\n return;\n }\n\n __w_pdfjs_require__(188);\n })();\n\n (function checkStringPadEnd() {\n if (String.prototype.padEnd) {\n return;\n }\n\n __w_pdfjs_require__(193);\n })();\n\n (function checkObjectValues() {\n if (Object.values) {\n return;\n }\n\n Object.values = __w_pdfjs_require__(195);\n })();\n}\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isNodeJS = void 0;\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar isNodeJS = (typeof process === \"undefined\" ? \"undefined\" : _typeof(process)) === \"object\" && process + \"\" === \"[object process]\" && !process.versions.nw && !process.versions.electron;\nexports.isNodeJS = isNodeJS;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(9);\nmodule.exports = __w_pdfjs_require__(11);\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar $ = __w_pdfjs_require__(10);\nvar global = __w_pdfjs_require__(11);\n$({ global: true }, { globalThis: global });\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar global = __w_pdfjs_require__(11);\nvar getOwnPropertyDescriptor = __w_pdfjs_require__(12).f;\nvar createNonEnumerableProperty = __w_pdfjs_require__(26);\nvar redefine = __w_pdfjs_require__(29);\nvar setGlobal = __w_pdfjs_require__(30);\nvar copyConstructorProperties = __w_pdfjs_require__(40);\nvar isForced = __w_pdfjs_require__(52);\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target)\n for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else\n targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty)\n continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n if (options.sham || targetProperty && targetProperty.sham) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n redefine(target, key, sourceProperty, options);\n }\n};\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports) {\n\nvar check = function (it) {\n return it && it.Math == Math && it;\n};\nmodule.exports = check(typeof globalThis == 'object' && globalThis) || check(typeof window == 'object' && window) || check(typeof self == 'object' && self) || check(typeof global == 'object' && global) || Function('return this')();\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar DESCRIPTORS = __w_pdfjs_require__(13);\nvar propertyIsEnumerableModule = __w_pdfjs_require__(15);\nvar createPropertyDescriptor = __w_pdfjs_require__(16);\nvar toIndexedObject = __w_pdfjs_require__(17);\nvar toPrimitive = __w_pdfjs_require__(21);\nvar has = __w_pdfjs_require__(23);\nvar IE8_DOM_DEFINE = __w_pdfjs_require__(24);\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE)\n try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) {\n }\n if (has(O, P))\n return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar fails = __w_pdfjs_require__(14);\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 1, {\n get: function () {\n return 7;\n }\n })[1] != 7;\n});\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar IndexedObject = __w_pdfjs_require__(18);\nvar requireObjectCoercible = __w_pdfjs_require__(20);\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar fails = __w_pdfjs_require__(14);\nvar classof = __w_pdfjs_require__(19);\nvar split = ''.split;\nmodule.exports = fails(function () {\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n if (it == undefined)\n throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar isObject = __w_pdfjs_require__(22);\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input))\n return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input)))\n return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input)))\n return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input)))\n return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports) {\n\nvar hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar DESCRIPTORS = __w_pdfjs_require__(13);\nvar fails = __w_pdfjs_require__(14);\nvar createElement = __w_pdfjs_require__(25);\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () {\n return 7;\n }\n }).a != 7;\n});\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar global = __w_pdfjs_require__(11);\nvar isObject = __w_pdfjs_require__(22);\nvar document = global.document;\nvar EXISTS = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar DESCRIPTORS = __w_pdfjs_require__(13);\nvar definePropertyModule = __w_pdfjs_require__(27);\nvar createPropertyDescriptor = __w_pdfjs_require__(16);\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar DESCRIPTORS = __w_pdfjs_require__(13);\nvar IE8_DOM_DEFINE = __w_pdfjs_require__(24);\nvar anObject = __w_pdfjs_require__(28);\nvar toPrimitive = __w_pdfjs_require__(21);\nvar nativeDefineProperty = Object.defineProperty;\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE)\n try {\n return nativeDefineProperty(O, P, Attributes);\n } catch (error) {\n }\n if ('get' in Attributes || 'set' in Attributes)\n throw TypeError('Accessors not supported');\n if ('value' in Attributes)\n O[P] = Attributes.value;\n return O;\n};\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar isObject = __w_pdfjs_require__(22);\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n }\n return it;\n};\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar global = __w_pdfjs_require__(11);\nvar createNonEnumerableProperty = __w_pdfjs_require__(26);\nvar has = __w_pdfjs_require__(23);\nvar setGlobal = __w_pdfjs_require__(30);\nvar inspectSource = __w_pdfjs_require__(31);\nvar InternalStateModule = __w_pdfjs_require__(33);\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name'))\n createNonEnumerableProperty(value, 'name', key);\n enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n if (O === global) {\n if (simple)\n O[key] = value;\n else\n setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple)\n O[key] = value;\n else\n createNonEnumerableProperty(O, key, value);\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar global = __w_pdfjs_require__(11);\nvar createNonEnumerableProperty = __w_pdfjs_require__(26);\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n }\n return value;\n};\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar store = __w_pdfjs_require__(32);\nvar functionToString = Function.toString;\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\nmodule.exports = store.inspectSource;\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar global = __w_pdfjs_require__(11);\nvar setGlobal = __w_pdfjs_require__(30);\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\nmodule.exports = store;\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar NATIVE_WEAK_MAP = __w_pdfjs_require__(34);\nvar global = __w_pdfjs_require__(11);\nvar isObject = __w_pdfjs_require__(22);\nvar createNonEnumerableProperty = __w_pdfjs_require__(26);\nvar objectHas = __w_pdfjs_require__(23);\nvar sharedKey = __w_pdfjs_require__(35);\nvar hiddenKeys = __w_pdfjs_require__(39);\nvar WeakMap = global.WeakMap;\nvar set, get, has;\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n }\n return state;\n };\n};\nif (NATIVE_WEAK_MAP) {\n var store = new WeakMap();\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar global = __w_pdfjs_require__(11);\nvar inspectSource = __w_pdfjs_require__(31);\nvar WeakMap = global.WeakMap;\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar shared = __w_pdfjs_require__(36);\nvar uid = __w_pdfjs_require__(38);\nvar keys = shared('keys');\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar IS_PURE = __w_pdfjs_require__(37);\nvar store = __w_pdfjs_require__(32);\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.6.5',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports) {\n\nmodule.exports = false;\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports) {\n\nvar id = 0;\nvar postfix = Math.random();\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar has = __w_pdfjs_require__(23);\nvar ownKeys = __w_pdfjs_require__(41);\nvar getOwnPropertyDescriptorModule = __w_pdfjs_require__(12);\nvar definePropertyModule = __w_pdfjs_require__(27);\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key))\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar getBuiltIn = __w_pdfjs_require__(42);\nvar getOwnPropertyNamesModule = __w_pdfjs_require__(44);\nvar getOwnPropertySymbolsModule = __w_pdfjs_require__(51);\nvar anObject = __w_pdfjs_require__(28);\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar path = __w_pdfjs_require__(43);\nvar global = __w_pdfjs_require__(11);\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace]) : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar global = __w_pdfjs_require__(11);\nmodule.exports = global;\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar internalObjectKeys = __w_pdfjs_require__(45);\nvar enumBugKeys = __w_pdfjs_require__(50);\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar has = __w_pdfjs_require__(23);\nvar toIndexedObject = __w_pdfjs_require__(17);\nvar indexOf = __w_pdfjs_require__(46).indexOf;\nvar hiddenKeys = __w_pdfjs_require__(39);\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O)\n !has(hiddenKeys, key) && has(O, key) && result.push(key);\n while (names.length > i)\n if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar toIndexedObject = __w_pdfjs_require__(17);\nvar toLength = __w_pdfjs_require__(47);\nvar toAbsoluteIndex = __w_pdfjs_require__(49);\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n if (IS_INCLUDES && el != el)\n while (length > index) {\n value = O[index++];\n if (value != value)\n return true;\n }\n else\n for (; length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el)\n return IS_INCLUDES || index || 0;\n }\n return !IS_INCLUDES && -1;\n };\n};\nmodule.exports = {\n includes: createMethod(true),\n indexOf: createMethod(false)\n};\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar toInteger = __w_pdfjs_require__(48);\nvar min = Math.min;\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0;\n};\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports) {\n\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar toInteger = __w_pdfjs_require__(48);\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports) {\n\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports) {\n\nexports.f = Object.getOwnPropertySymbols;\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar fails = __w_pdfjs_require__(14);\nvar replacement = /#|\\.prototype\\./;\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true : value == NATIVE ? false : typeof detection == 'function' ? fails(detection) : !!detection;\n};\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\nmodule.exports = isForced;\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(54);\nvar entryUnbind = __w_pdfjs_require__(61);\nmodule.exports = entryUnbind('String', 'startsWith');\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar $ = __w_pdfjs_require__(10);\nvar getOwnPropertyDescriptor = __w_pdfjs_require__(12).f;\nvar toLength = __w_pdfjs_require__(47);\nvar notARegExp = __w_pdfjs_require__(55);\nvar requireObjectCoercible = __w_pdfjs_require__(20);\nvar correctIsRegExpLogic = __w_pdfjs_require__(60);\nvar IS_PURE = __w_pdfjs_require__(37);\nvar nativeStartsWith = ''.startsWith;\nvar min = Math.min;\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\n return descriptor && !descriptor.writable;\n}();\n$({\n target: 'String',\n proto: true,\n forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC\n}, {\n startsWith: function startsWith(searchString) {\n var that = String(requireObjectCoercible(this));\n notARegExp(searchString);\n var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return nativeStartsWith ? nativeStartsWith.call(that, search, index) : that.slice(index, index + search.length) === search;\n }\n});\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar isRegExp = __w_pdfjs_require__(56);\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n }\n return it;\n};\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar isObject = __w_pdfjs_require__(22);\nvar classof = __w_pdfjs_require__(19);\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar MATCH = wellKnownSymbol('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar global = __w_pdfjs_require__(11);\nvar shared = __w_pdfjs_require__(36);\nvar has = __w_pdfjs_require__(23);\nvar uid = __w_pdfjs_require__(38);\nvar NATIVE_SYMBOL = __w_pdfjs_require__(58);\nvar USE_SYMBOL_AS_UID = __w_pdfjs_require__(59);\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name)) {\n if (NATIVE_SYMBOL && has(Symbol, name))\n WellKnownSymbolsStore[name] = Symbol[name];\n else\n WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n }\n return WellKnownSymbolsStore[name];\n};\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar fails = __w_pdfjs_require__(14);\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n return !String(Symbol());\n});\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar NATIVE_SYMBOL = __w_pdfjs_require__(58);\nmodule.exports = NATIVE_SYMBOL && !Symbol.sham && typeof Symbol.iterator == 'symbol';\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar MATCH = wellKnownSymbol('match');\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (e) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (f) {\n }\n }\n return false;\n};\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar global = __w_pdfjs_require__(11);\nvar bind = __w_pdfjs_require__(62);\nvar call = Function.call;\nmodule.exports = function (CONSTRUCTOR, METHOD, length) {\n return bind(call, global[CONSTRUCTOR].prototype[METHOD], length);\n};\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar aFunction = __w_pdfjs_require__(63);\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined)\n return fn;\n switch (length) {\n case 0:\n return function () {\n return fn.call(that);\n };\n case 1:\n return function (a) {\n return fn.call(that, a);\n };\n case 2:\n return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3:\n return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function () {\n return fn.apply(that, arguments);\n };\n};\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n }\n return it;\n};\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(65);\nvar entryUnbind = __w_pdfjs_require__(61);\nmodule.exports = entryUnbind('String', 'endsWith');\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar $ = __w_pdfjs_require__(10);\nvar getOwnPropertyDescriptor = __w_pdfjs_require__(12).f;\nvar toLength = __w_pdfjs_require__(47);\nvar notARegExp = __w_pdfjs_require__(55);\nvar requireObjectCoercible = __w_pdfjs_require__(20);\nvar correctIsRegExpLogic = __w_pdfjs_require__(60);\nvar IS_PURE = __w_pdfjs_require__(37);\nvar nativeEndsWith = ''.endsWith;\nvar min = Math.min;\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith');\n return descriptor && !descriptor.writable;\n}();\n$({\n target: 'String',\n proto: true,\n forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC\n}, {\n endsWith: function endsWith(searchString) {\n var that = String(requireObjectCoercible(this));\n notARegExp(searchString);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = toLength(that.length);\n var end = endPosition === undefined ? len : min(toLength(endPosition), len);\n var search = String(searchString);\n return nativeEndsWith ? nativeEndsWith.call(that, search, end) : that.slice(end - search.length, end) === search;\n }\n});\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(67);\nvar entryUnbind = __w_pdfjs_require__(61);\nmodule.exports = entryUnbind('String', 'includes');\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar $ = __w_pdfjs_require__(10);\nvar notARegExp = __w_pdfjs_require__(55);\nvar requireObjectCoercible = __w_pdfjs_require__(20);\nvar correctIsRegExpLogic = __w_pdfjs_require__(60);\n$({\n target: 'String',\n proto: true,\n forced: !correctIsRegExpLogic('includes')\n}, {\n includes: function includes(searchString) {\n return !!~String(requireObjectCoercible(this)).indexOf(notARegExp(searchString), arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(69);\nvar entryUnbind = __w_pdfjs_require__(61);\nmodule.exports = entryUnbind('Array', 'includes');\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar $ = __w_pdfjs_require__(10);\nvar $includes = __w_pdfjs_require__(46).includes;\nvar addToUnscopables = __w_pdfjs_require__(70);\nvar arrayMethodUsesToLength = __w_pdfjs_require__(75);\nvar USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', {\n ACCESSORS: true,\n 1: 0\n});\n$({\n target: 'Array',\n proto: true,\n forced: !USES_TO_LENGTH\n}, {\n includes: function includes(el) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\naddToUnscopables('includes');\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar create = __w_pdfjs_require__(71);\nvar definePropertyModule = __w_pdfjs_require__(27);\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar anObject = __w_pdfjs_require__(28);\nvar defineProperties = __w_pdfjs_require__(72);\nvar enumBugKeys = __w_pdfjs_require__(50);\nvar hiddenKeys = __w_pdfjs_require__(39);\nvar html = __w_pdfjs_require__(74);\nvar documentCreateElement = __w_pdfjs_require__(25);\nvar sharedKey = __w_pdfjs_require__(35);\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar EmptyConstructor = function () {\n};\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null;\n return temp;\n};\nvar NullProtoObjectViaIFrame = function () {\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = document.domain && new ActiveXObject('htmlfile');\n } catch (error) {\n }\n NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n var length = enumBugKeys.length;\n while (length--)\n delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\nhiddenKeys[IE_PROTO] = true;\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n result[IE_PROTO] = O;\n } else\n result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar DESCRIPTORS = __w_pdfjs_require__(13);\nvar definePropertyModule = __w_pdfjs_require__(27);\nvar anObject = __w_pdfjs_require__(28);\nvar objectKeys = __w_pdfjs_require__(73);\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index)\n definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar internalObjectKeys = __w_pdfjs_require__(45);\nvar enumBugKeys = __w_pdfjs_require__(50);\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar getBuiltIn = __w_pdfjs_require__(42);\nmodule.exports = getBuiltIn('document', 'documentElement');\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar DESCRIPTORS = __w_pdfjs_require__(13);\nvar fails = __w_pdfjs_require__(14);\nvar has = __w_pdfjs_require__(23);\nvar defineProperty = Object.defineProperty;\nvar cache = {};\nvar thrower = function (it) {\n throw it;\n};\nmodule.exports = function (METHOD_NAME, options) {\n if (has(cache, METHOD_NAME))\n return cache[METHOD_NAME];\n if (!options)\n options = {};\n var method = [][METHOD_NAME];\n var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false;\n var argument0 = has(options, 0) ? options[0] : thrower;\n var argument1 = has(options, 1) ? options[1] : undefined;\n return cache[METHOD_NAME] = !!method && !fails(function () {\n if (ACCESSORS && !DESCRIPTORS)\n return true;\n var O = { length: -1 };\n if (ACCESSORS)\n defineProperty(O, 1, {\n enumerable: true,\n get: thrower\n });\n else\n O[1] = 1;\n method.call(O, argument0, argument1);\n });\n};\n\n/***/ }),\n/* 76 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(77);\n__w_pdfjs_require__(89);\nvar path = __w_pdfjs_require__(43);\nmodule.exports = path.Array.from;\n\n/***/ }),\n/* 77 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar charAt = __w_pdfjs_require__(78).charAt;\nvar InternalStateModule = __w_pdfjs_require__(33);\nvar defineIterator = __w_pdfjs_require__(79);\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length)\n return {\n value: undefined,\n done: true\n };\n point = charAt(string, index);\n state.index += point.length;\n return {\n value: point,\n done: false\n };\n});\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar toInteger = __w_pdfjs_require__(48);\nvar requireObjectCoercible = __w_pdfjs_require__(20);\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = String(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size)\n return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF ? CONVERT_TO_STRING ? S.charAt(position) : first : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\nmodule.exports = {\n codeAt: createMethod(false),\n charAt: createMethod(true)\n};\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar $ = __w_pdfjs_require__(10);\nvar createIteratorConstructor = __w_pdfjs_require__(80);\nvar getPrototypeOf = __w_pdfjs_require__(82);\nvar setPrototypeOf = __w_pdfjs_require__(87);\nvar setToStringTag = __w_pdfjs_require__(85);\nvar createNonEnumerableProperty = __w_pdfjs_require__(26);\nvar redefine = __w_pdfjs_require__(29);\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar IS_PURE = __w_pdfjs_require__(37);\nvar Iterators = __w_pdfjs_require__(86);\nvar IteratorsCore = __w_pdfjs_require__(81);\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\nvar returnThis = function () {\n return this;\n};\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator)\n return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype)\n return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS:\n return function keys() {\n return new IteratorConstructor(this, KIND);\n };\n case VALUES:\n return function values() {\n return new IteratorConstructor(this, KIND);\n };\n case ENTRIES:\n return function entries() {\n return new IteratorConstructor(this, KIND);\n };\n }\n return function () {\n return new IteratorConstructor(this);\n };\n };\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR] || IterablePrototype['@@iterator'] || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE)\n Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() {\n return nativeIterator.call(this);\n };\n }\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED)\n for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n }\n else\n $({\n target: NAME,\n proto: true,\n forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME\n }, methods);\n }\n return methods;\n};\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar IteratorPrototype = __w_pdfjs_require__(81).IteratorPrototype;\nvar create = __w_pdfjs_require__(71);\nvar createPropertyDescriptor = __w_pdfjs_require__(16);\nvar setToStringTag = __w_pdfjs_require__(85);\nvar Iterators = __w_pdfjs_require__(86);\nvar returnThis = function () {\n return this;\n};\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar getPrototypeOf = __w_pdfjs_require__(82);\nvar createNonEnumerableProperty = __w_pdfjs_require__(26);\nvar has = __w_pdfjs_require__(23);\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar IS_PURE = __w_pdfjs_require__(37);\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\nvar returnThis = function () {\n return this;\n};\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\nif ([].keys) {\n arrayIterator = [].keys();\n if (!('next' in arrayIterator))\n BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype)\n IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\nif (IteratorPrototype == undefined)\n IteratorPrototype = {};\nif (!IS_PURE && !has(IteratorPrototype, ITERATOR)) {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar has = __w_pdfjs_require__(23);\nvar toObject = __w_pdfjs_require__(83);\nvar sharedKey = __w_pdfjs_require__(35);\nvar CORRECT_PROTOTYPE_GETTER = __w_pdfjs_require__(84);\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO))\n return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n }\n return O instanceof Object ? ObjectPrototype : null;\n};\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar requireObjectCoercible = __w_pdfjs_require__(20);\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar fails = __w_pdfjs_require__(14);\nmodule.exports = !fails(function () {\n function F() {\n }\n F.prototype.constructor = null;\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar defineProperty = __w_pdfjs_require__(27).f;\nvar has = __w_pdfjs_require__(23);\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, {\n configurable: true,\n value: TAG\n });\n }\n};\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n/***/ }),\n/* 87 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar anObject = __w_pdfjs_require__(28);\nvar aPossiblePrototype = __w_pdfjs_require__(88);\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) {\n }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER)\n setter.call(O, proto);\n else\n O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n\n/***/ }),\n/* 88 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar isObject = __w_pdfjs_require__(22);\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n }\n return it;\n};\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar $ = __w_pdfjs_require__(10);\nvar from = __w_pdfjs_require__(90);\nvar checkCorrectnessOfIteration = __w_pdfjs_require__(97);\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n Array.from(iterable);\n});\n$({\n target: 'Array',\n stat: true,\n forced: INCORRECT_ITERATION\n}, { from: from });\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar bind = __w_pdfjs_require__(62);\nvar toObject = __w_pdfjs_require__(83);\nvar callWithSafeIterationClosing = __w_pdfjs_require__(91);\nvar isArrayIteratorMethod = __w_pdfjs_require__(92);\nvar toLength = __w_pdfjs_require__(47);\nvar createProperty = __w_pdfjs_require__(93);\nvar getIteratorMethod = __w_pdfjs_require__(94);\nmodule.exports = function from(arrayLike) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n if (mapping)\n mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n result = new C();\n for (; !(step = next.call(iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [\n step.value,\n index\n ], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = toLength(O.length);\n result = new C(length);\n for (; length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar anObject = __w_pdfjs_require__(28);\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined)\n anObject(returnMethod.call(iterator));\n throw error;\n }\n};\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar Iterators = __w_pdfjs_require__(86);\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar toPrimitive = __w_pdfjs_require__(21);\nvar definePropertyModule = __w_pdfjs_require__(27);\nvar createPropertyDescriptor = __w_pdfjs_require__(16);\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object)\n definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else\n object[propertyKey] = value;\n};\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar classof = __w_pdfjs_require__(95);\nvar Iterators = __w_pdfjs_require__(86);\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar ITERATOR = wellKnownSymbol('iterator');\nmodule.exports = function (it) {\n if (it != undefined)\n return it[ITERATOR] || it['@@iterator'] || Iterators[classof(it)];\n};\n\n/***/ }),\n/* 95 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar TO_STRING_TAG_SUPPORT = __w_pdfjs_require__(96);\nvar classofRaw = __w_pdfjs_require__(19);\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar CORRECT_ARGUMENTS = classofRaw(function () {\n return arguments;\n}()) == 'Arguments';\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) {\n }\n};\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null' : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag : CORRECT_ARGUMENTS ? classofRaw(O) : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\ntest[TO_STRING_TAG] = 'z';\nmodule.exports = String(test) === '[object z]';\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n Array.from(iteratorWithReturn, function () {\n throw 2;\n });\n} catch (error) {\n}\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING)\n return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) {\n }\n return ITERATION_SUPPORT;\n};\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(99);\nvar path = __w_pdfjs_require__(43);\nmodule.exports = path.Object.assign;\n\n/***/ }),\n/* 99 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar $ = __w_pdfjs_require__(10);\nvar assign = __w_pdfjs_require__(100);\n$({\n target: 'Object',\n stat: true,\n forced: Object.assign !== assign\n}, { assign: assign });\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar DESCRIPTORS = __w_pdfjs_require__(13);\nvar fails = __w_pdfjs_require__(14);\nvar objectKeys = __w_pdfjs_require__(73);\nvar getOwnPropertySymbolsModule = __w_pdfjs_require__(51);\nvar propertyIsEnumerableModule = __w_pdfjs_require__(15);\nvar toObject = __w_pdfjs_require__(83);\nvar IndexedObject = __w_pdfjs_require__(18);\nvar nativeAssign = Object.assign;\nvar defineProperty = Object.defineProperty;\nmodule.exports = !nativeAssign || fails(function () {\n if (DESCRIPTORS && nativeAssign({ b: 1 }, nativeAssign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1)\n return true;\n var A = {};\n var B = {};\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) {\n B[chr] = chr;\n });\n return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) {\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(S, key))\n T[key] = S[key];\n }\n }\n return T;\n} : nativeAssign;\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(102);\nvar path = __w_pdfjs_require__(43);\nmodule.exports = path.Math.log2;\n\n/***/ }),\n/* 102 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar $ = __w_pdfjs_require__(10);\nvar log = Math.log;\nvar LN2 = Math.LN2;\n$({\n target: 'Math',\n stat: true\n}, {\n log2: function log2(x) {\n return log(x) / LN2;\n }\n});\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(104);\nvar path = __w_pdfjs_require__(43);\nmodule.exports = path.Number.isNaN;\n\n/***/ }),\n/* 104 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar $ = __w_pdfjs_require__(10);\n$({\n target: 'Number',\n stat: true\n}, {\n isNaN: function isNaN(number) {\n return number != number;\n }\n});\n\n/***/ }),\n/* 105 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(106);\nvar path = __w_pdfjs_require__(43);\nmodule.exports = path.Number.isInteger;\n\n/***/ }),\n/* 106 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar $ = __w_pdfjs_require__(10);\nvar isInteger = __w_pdfjs_require__(107);\n$({\n target: 'Number',\n stat: true\n}, { isInteger: isInteger });\n\n/***/ }),\n/* 107 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar isObject = __w_pdfjs_require__(22);\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n\n/***/ }),\n/* 108 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(109);\n\n/***/ }),\n/* 109 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __w_pdfjs_require__(110);\nvar speciesConstructor = __w_pdfjs_require__(112);\nvar fails = __w_pdfjs_require__(14);\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $slice = [].slice;\nvar FORCED = fails(function () {\n new Int8Array(1).slice();\n});\nexportTypedArrayMethod('slice', function slice(start, end) {\n var list = $slice.call(aTypedArray(this), start, end);\n var C = speciesConstructor(this, this.constructor);\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index)\n result[index] = list[index++];\n return result;\n}, FORCED);\n\n/***/ }),\n/* 110 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar NATIVE_ARRAY_BUFFER = __w_pdfjs_require__(111);\nvar DESCRIPTORS = __w_pdfjs_require__(13);\nvar global = __w_pdfjs_require__(11);\nvar isObject = __w_pdfjs_require__(22);\nvar has = __w_pdfjs_require__(23);\nvar classof = __w_pdfjs_require__(95);\nvar createNonEnumerableProperty = __w_pdfjs_require__(26);\nvar redefine = __w_pdfjs_require__(29);\nvar defineProperty = __w_pdfjs_require__(27).f;\nvar getPrototypeOf = __w_pdfjs_require__(82);\nvar setPrototypeOf = __w_pdfjs_require__(87);\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar uid = __w_pdfjs_require__(38);\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar isPrototypeOf = ObjectPrototype.isPrototypeOf;\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQIRED = false;\nvar NAME;\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\nvar isView = function isView(it) {\n var klass = classof(it);\n return klass === 'DataView' || has(TypedArrayConstructorsList, klass);\n};\nvar isTypedArray = function (it) {\n return isObject(it) && has(TypedArrayConstructorsList, classof(it));\n};\nvar aTypedArray = function (it) {\n if (isTypedArray(it))\n return it;\n throw TypeError('Target is not a typed array');\n};\nvar aTypedArrayConstructor = function (C) {\n if (setPrototypeOf) {\n if (isPrototypeOf.call(TypedArray, C))\n return C;\n } else\n for (var ARRAY in TypedArrayConstructorsList)\n if (has(TypedArrayConstructorsList, NAME)) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (C === TypedArrayConstructor || isPrototypeOf.call(TypedArrayConstructor, C))) {\n return C;\n }\n }\n throw TypeError('Target is not a typed array constructor');\n};\nvar exportTypedArrayMethod = function (KEY, property, forced) {\n if (!DESCRIPTORS)\n return;\n if (forced)\n for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor.prototype, KEY)) {\n delete TypedArrayConstructor.prototype[KEY];\n }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n redefine(TypedArrayPrototype, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property);\n }\n};\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS)\n return;\n if (setPrototypeOf) {\n if (forced)\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor, KEY)) {\n delete TypedArrayConstructor[KEY];\n }\n }\n if (!TypedArray[KEY] || forced) {\n try {\n return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && Int8Array[KEY] || property);\n } catch (error) {\n }\n } else\n return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n redefine(TypedArrayConstructor, KEY, property);\n }\n }\n};\nfor (NAME in TypedArrayConstructorsList) {\n if (!global[NAME])\n NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\nif (!NATIVE_ARRAY_BUFFER_VIEWS || typeof TypedArray != 'function' || TypedArray === Function.prototype) {\n TypedArray = function TypedArray() {\n throw TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS)\n for (NAME in TypedArrayConstructorsList) {\n if (global[NAME])\n setPrototypeOf(global[NAME], TypedArray);\n }\n}\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS)\n for (NAME in TypedArrayConstructorsList) {\n if (global[NAME])\n setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n }\n}\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\nif (DESCRIPTORS && !has(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQIRED = true;\n defineProperty(TypedArrayPrototype, TO_STRING_TAG, {\n get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n }\n });\n for (NAME in TypedArrayConstructorsList)\n if (global[NAME]) {\n createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\nmodule.exports = {\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportTypedArrayMethod: exportTypedArrayMethod,\n exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n\n/***/ }),\n/* 111 */\n/***/ (function(module, exports) {\n\nmodule.exports = typeof ArrayBuffer !== 'undefined' && typeof DataView !== 'undefined';\n\n/***/ }),\n/* 112 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar anObject = __w_pdfjs_require__(28);\nvar aFunction = __w_pdfjs_require__(63);\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar SPECIES = wellKnownSymbol('species');\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n\n/***/ }),\n/* 113 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(114);\n__w_pdfjs_require__(77);\n__w_pdfjs_require__(116);\n__w_pdfjs_require__(119);\n__w_pdfjs_require__(134);\n__w_pdfjs_require__(135);\nvar path = __w_pdfjs_require__(43);\nmodule.exports = path.Promise;\n\n/***/ }),\n/* 114 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar TO_STRING_TAG_SUPPORT = __w_pdfjs_require__(96);\nvar redefine = __w_pdfjs_require__(29);\nvar toString = __w_pdfjs_require__(115);\nif (!TO_STRING_TAG_SUPPORT) {\n redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n\n/***/ }),\n/* 115 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar TO_STRING_TAG_SUPPORT = __w_pdfjs_require__(96);\nvar classof = __w_pdfjs_require__(95);\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n\n/***/ }),\n/* 116 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar global = __w_pdfjs_require__(11);\nvar DOMIterables = __w_pdfjs_require__(117);\nvar ArrayIteratorMethods = __w_pdfjs_require__(118);\nvar createNonEnumerableProperty = __w_pdfjs_require__(26);\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype) {\n if (CollectionPrototype[ITERATOR] !== ArrayValues)\n try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME])\n for (var METHOD_NAME in ArrayIteratorMethods) {\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME])\n try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n}\n\n/***/ }),\n/* 117 */\n/***/ (function(module, exports) {\n\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n\n/***/ }),\n/* 118 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar toIndexedObject = __w_pdfjs_require__(17);\nvar addToUnscopables = __w_pdfjs_require__(70);\nvar Iterators = __w_pdfjs_require__(86);\nvar InternalStateModule = __w_pdfjs_require__(33);\nvar defineIterator = __w_pdfjs_require__(79);\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated),\n index: 0,\n kind: kind\n });\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return {\n value: undefined,\n done: true\n };\n }\n if (kind == 'keys')\n return {\n value: index,\n done: false\n };\n if (kind == 'values')\n return {\n value: target[index],\n done: false\n };\n return {\n value: [\n index,\n target[index]\n ],\n done: false\n };\n}, 'values');\nIterators.Arguments = Iterators.Array;\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n/***/ }),\n/* 119 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar $ = __w_pdfjs_require__(10);\nvar IS_PURE = __w_pdfjs_require__(37);\nvar global = __w_pdfjs_require__(11);\nvar getBuiltIn = __w_pdfjs_require__(42);\nvar NativePromise = __w_pdfjs_require__(120);\nvar redefine = __w_pdfjs_require__(29);\nvar redefineAll = __w_pdfjs_require__(121);\nvar setToStringTag = __w_pdfjs_require__(85);\nvar setSpecies = __w_pdfjs_require__(122);\nvar isObject = __w_pdfjs_require__(22);\nvar aFunction = __w_pdfjs_require__(63);\nvar anInstance = __w_pdfjs_require__(123);\nvar classof = __w_pdfjs_require__(19);\nvar inspectSource = __w_pdfjs_require__(31);\nvar iterate = __w_pdfjs_require__(124);\nvar checkCorrectnessOfIteration = __w_pdfjs_require__(97);\nvar speciesConstructor = __w_pdfjs_require__(112);\nvar task = __w_pdfjs_require__(125).set;\nvar microtask = __w_pdfjs_require__(128);\nvar promiseResolve = __w_pdfjs_require__(129);\nvar hostReportErrors = __w_pdfjs_require__(131);\nvar newPromiseCapabilityModule = __w_pdfjs_require__(130);\nvar perform = __w_pdfjs_require__(132);\nvar InternalStateModule = __w_pdfjs_require__(33);\nvar isForced = __w_pdfjs_require__(52);\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar V8_VERSION = __w_pdfjs_require__(133);\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar PromiseConstructor = NativePromise;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar $fetch = getBuiltIn('fetch');\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\nvar IS_NODE = classof(process) == 'process';\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\nvar FORCED = isForced(PROMISE, function () {\n var GLOBAL_CORE_JS_PROMISE = inspectSource(PromiseConstructor) !== String(PromiseConstructor);\n if (!GLOBAL_CORE_JS_PROMISE) {\n if (V8_VERSION === 66)\n return true;\n if (!IS_NODE && typeof PromiseRejectionEvent != 'function')\n return true;\n }\n if (IS_PURE && !PromiseConstructor.prototype['finally'])\n return true;\n if (V8_VERSION >= 51 && /native code/.test(PromiseConstructor))\n return false;\n var promise = PromiseConstructor.resolve(1);\n var FakePromise = function (exec) {\n exec(function () {\n }, function () {\n });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n return !(promise.then(function () {\n }) instanceof FakePromise);\n});\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n PromiseConstructor.all(iterable)['catch'](function () {\n });\n});\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, state, isReject) {\n if (state.notified)\n return;\n state.notified = true;\n var chain = state.reactions;\n microtask(function () {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var index = 0;\n while (chain.length > index) {\n var reaction = chain[index++];\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED)\n onHandleUnhandled(promise, state);\n state.rejection = HANDLED;\n }\n if (handler === true)\n result = value;\n else {\n if (domain)\n domain.enter();\n result = handler(value);\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else\n resolve(result);\n } else\n reject(value);\n } catch (error) {\n if (domain && !exited)\n domain.exit();\n reject(error);\n }\n }\n state.reactions = [];\n state.notified = false;\n if (isReject && !state.rejection)\n onUnhandled(promise, state);\n });\n};\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else\n event = {\n promise: promise,\n reason: reason\n };\n if (handler = global['on' + name])\n handler(event);\n else if (name === UNHANDLED_REJECTION)\n hostReportErrors('Unhandled promise rejection', reason);\n};\nvar onUnhandled = function (promise, state) {\n task.call(global, function () {\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else\n dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error)\n throw result.value;\n }\n });\n};\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\nvar onHandleUnhandled = function (promise, state) {\n task.call(global, function () {\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else\n dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\nvar bind = function (fn, promise, state, unwrap) {\n return function (value) {\n fn(promise, state, value, unwrap);\n };\n};\nvar internalReject = function (promise, state, value, unwrap) {\n if (state.done)\n return;\n state.done = true;\n if (unwrap)\n state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(promise, state, true);\n};\nvar internalResolve = function (promise, state, value, unwrap) {\n if (state.done)\n return;\n state.done = true;\n if (unwrap)\n state = unwrap;\n try {\n if (promise === value)\n throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n then.call(value, bind(internalResolve, promise, wrapper, state), bind(internalReject, promise, wrapper, state));\n } catch (error) {\n internalReject(promise, wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(promise, state, false);\n }\n } catch (error) {\n internalReject(promise, { done: false }, error, state);\n }\n};\nif (FORCED) {\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromiseConstructor, PROMISE);\n aFunction(executor);\n Internal.call(this);\n var state = getInternalState(this);\n try {\n executor(bind(internalResolve, this, state), bind(internalReject, this, state));\n } catch (error) {\n internalReject(this, state, error);\n }\n };\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: [],\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n Internal.prototype = redefineAll(PromiseConstructor.prototype, {\n then: function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n state.parent = true;\n state.reactions.push(reaction);\n if (state.state != PENDING)\n notify(this, state, false);\n return reaction.promise;\n },\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, promise, state);\n this.reject = bind(internalReject, promise, state);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper ? new OwnPromiseCapability(C) : newGenericPromiseCapability(C);\n };\n if (!IS_PURE && typeof NativePromise == 'function') {\n nativeThen = NativePromise.prototype.then;\n redefine(NativePromise.prototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n nativeThen.call(that, resolve, reject);\n }).then(onFulfilled, onRejected);\n }, { unsafe: true });\n if (typeof $fetch == 'function')\n $({\n global: true,\n enumerable: true,\n forced: true\n }, {\n fetch: function fetch(input) {\n return promiseResolve(PromiseConstructor, $fetch.apply(global, arguments));\n }\n });\n }\n}\n$({\n global: true,\n wrap: true,\n forced: FORCED\n}, { Promise: PromiseConstructor });\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\nPromiseWrapper = getBuiltIn(PROMISE);\n$({\n target: PROMISE,\n stat: true,\n forced: FORCED\n}, {\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n capability.reject.call(undefined, r);\n return capability.promise;\n }\n});\n$({\n target: PROMISE,\n stat: true,\n forced: IS_PURE || FORCED\n}, {\n resolve: function resolve(x) {\n return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n }\n});\n$({\n target: PROMISE,\n stat: true,\n forced: INCORRECT_ITERATION\n}, {\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n $promiseResolve.call(C, promise).then(function (value) {\n if (alreadyCalled)\n return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error)\n reject(result.value);\n return capability.promise;\n },\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n iterate(iterable, function (promise) {\n $promiseResolve.call(C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error)\n reject(result.value);\n return capability.promise;\n }\n});\n\n/***/ }),\n/* 120 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar global = __w_pdfjs_require__(11);\nmodule.exports = global.Promise;\n\n/***/ }),\n/* 121 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar redefine = __w_pdfjs_require__(29);\nmodule.exports = function (target, src, options) {\n for (var key in src)\n redefine(target, key, src[key], options);\n return target;\n};\n\n/***/ }),\n/* 122 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar getBuiltIn = __w_pdfjs_require__(42);\nvar definePropertyModule = __w_pdfjs_require__(27);\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar DESCRIPTORS = __w_pdfjs_require__(13);\nvar SPECIES = wellKnownSymbol('species');\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () {\n return this;\n }\n });\n }\n};\n\n/***/ }),\n/* 123 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n }\n return it;\n};\n\n/***/ }),\n/* 124 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar anObject = __w_pdfjs_require__(28);\nvar isArrayIteratorMethod = __w_pdfjs_require__(92);\nvar toLength = __w_pdfjs_require__(47);\nvar bind = __w_pdfjs_require__(62);\nvar getIteratorMethod = __w_pdfjs_require__(94);\nvar callWithSafeIterationClosing = __w_pdfjs_require__(91);\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\nvar iterate = module.exports = function (iterable, fn, that, AS_ENTRIES, IS_ITERATOR) {\n var boundFunction = bind(fn, that, AS_ENTRIES ? 2 : 1);\n var iterator, iterFn, index, length, result, next, step;\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (typeof iterFn != 'function')\n throw TypeError('Target is not iterable');\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = toLength(iterable.length); length > index; index++) {\n result = AS_ENTRIES ? boundFunction(anObject(step = iterable[index])[0], step[1]) : boundFunction(iterable[index]);\n if (result && result instanceof Result)\n return result;\n }\n return new Result(false);\n }\n iterator = iterFn.call(iterable);\n }\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n result = callWithSafeIterationClosing(iterator, boundFunction, step.value, AS_ENTRIES);\n if (typeof result == 'object' && result && result instanceof Result)\n return result;\n }\n return new Result(false);\n};\niterate.stop = function (result) {\n return new Result(true, result);\n};\n\n/***/ }),\n/* 125 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar global = __w_pdfjs_require__(11);\nvar fails = __w_pdfjs_require__(14);\nvar classof = __w_pdfjs_require__(19);\nvar bind = __w_pdfjs_require__(62);\nvar html = __w_pdfjs_require__(74);\nvar createElement = __w_pdfjs_require__(25);\nvar IS_IOS = __w_pdfjs_require__(126);\nvar location = global.location;\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function (id) {\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\nvar listener = function (event) {\n run(event.data);\n};\nvar post = function (id) {\n global.postMessage(id + '', location.protocol + '//' + location.host);\n};\nif (!set || !clear) {\n set = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i)\n args.push(arguments[i++]);\n queue[++counter] = function () {\n (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n if (classof(process) == 'process') {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port, 1);\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts && !fails(post) && location.protocol !== 'file:') {\n defer = post;\n global.addEventListener('message', listener, false);\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\nmodule.exports = {\n set: set,\n clear: clear\n};\n\n/***/ }),\n/* 126 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar userAgent = __w_pdfjs_require__(127);\nmodule.exports = /(iphone|ipod|ipad).*applewebkit/i.test(userAgent);\n\n/***/ }),\n/* 127 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar getBuiltIn = __w_pdfjs_require__(42);\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n\n/***/ }),\n/* 128 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar global = __w_pdfjs_require__(11);\nvar getOwnPropertyDescriptor = __w_pdfjs_require__(12).f;\nvar classof = __w_pdfjs_require__(19);\nvar macrotask = __w_pdfjs_require__(125).set;\nvar IS_IOS = __w_pdfjs_require__(126);\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar IS_NODE = classof(process) == 'process';\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\nvar flush, head, last, notify, toggle, node, promise, then;\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain))\n parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head)\n notify();\n else\n last = undefined;\n throw error;\n }\n }\n last = undefined;\n if (parent)\n parent.enter();\n };\n if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n } else if (MutationObserver && !IS_IOS) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n } else if (Promise && Promise.resolve) {\n promise = Promise.resolve(undefined);\n then = promise.then;\n notify = function () {\n then.call(promise, flush);\n };\n } else {\n notify = function () {\n macrotask.call(global, flush);\n };\n }\n}\nmodule.exports = queueMicrotask || function (fn) {\n var task = {\n fn: fn,\n next: undefined\n };\n if (last)\n last.next = task;\n if (!head) {\n head = task;\n notify();\n }\n last = task;\n};\n\n/***/ }),\n/* 129 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar anObject = __w_pdfjs_require__(28);\nvar isObject = __w_pdfjs_require__(22);\nvar newPromiseCapability = __w_pdfjs_require__(130);\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C)\n return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n\n/***/ }),\n/* 130 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar aFunction = __w_pdfjs_require__(63);\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined)\n throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n};\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n\n/***/ }),\n/* 131 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar global = __w_pdfjs_require__(11);\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length === 1 ? console.error(a) : console.error(a, b);\n }\n};\n\n/***/ }),\n/* 132 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n try {\n return {\n error: false,\n value: exec()\n };\n } catch (error) {\n return {\n error: true,\n value: error\n };\n }\n};\n\n/***/ }),\n/* 133 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar global = __w_pdfjs_require__(11);\nvar userAgent = __w_pdfjs_require__(127);\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\nif (v8) {\n match = v8.split('.');\n version = match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match)\n version = match[1];\n }\n}\nmodule.exports = version && +version;\n\n/***/ }),\n/* 134 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar $ = __w_pdfjs_require__(10);\nvar aFunction = __w_pdfjs_require__(63);\nvar newPromiseCapabilityModule = __w_pdfjs_require__(130);\nvar perform = __w_pdfjs_require__(132);\nvar iterate = __w_pdfjs_require__(124);\n$({\n target: 'Promise',\n stat: true\n}, {\n allSettled: function allSettled(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var promiseResolve = aFunction(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n promiseResolve.call(C, promise).then(function (value) {\n if (alreadyCalled)\n return;\n alreadyCalled = true;\n values[index] = {\n status: 'fulfilled',\n value: value\n };\n --remaining || resolve(values);\n }, function (e) {\n if (alreadyCalled)\n return;\n alreadyCalled = true;\n values[index] = {\n status: 'rejected',\n reason: e\n };\n --remaining || resolve(values);\n });\n });\n --remaining || resolve(values);\n });\n if (result.error)\n reject(result.value);\n return capability.promise;\n }\n});\n\n/***/ }),\n/* 135 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar $ = __w_pdfjs_require__(10);\nvar IS_PURE = __w_pdfjs_require__(37);\nvar NativePromise = __w_pdfjs_require__(120);\nvar fails = __w_pdfjs_require__(14);\nvar getBuiltIn = __w_pdfjs_require__(42);\nvar speciesConstructor = __w_pdfjs_require__(112);\nvar promiseResolve = __w_pdfjs_require__(129);\nvar redefine = __w_pdfjs_require__(29);\nvar NON_GENERIC = !!NativePromise && fails(function () {\n NativePromise.prototype['finally'].call({\n then: function () {\n }\n }, function () {\n });\n});\n$({\n target: 'Promise',\n proto: true,\n real: true,\n forced: NON_GENERIC\n}, {\n 'finally': function (onFinally) {\n var C = speciesConstructor(this, getBuiltIn('Promise'));\n var isFunction = typeof onFinally == 'function';\n return this.then(isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () {\n return x;\n });\n } : onFinally, isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () {\n throw e;\n });\n } : onFinally);\n }\n});\nif (!IS_PURE && typeof NativePromise == 'function' && !NativePromise.prototype['finally']) {\n redefine(NativePromise.prototype, 'finally', getBuiltIn('Promise').prototype['finally']);\n}\n\n/***/ }),\n/* 136 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(137);\n__w_pdfjs_require__(142);\n__w_pdfjs_require__(140);\nvar path = __w_pdfjs_require__(43);\nmodule.exports = path.URL;\n\n/***/ }),\n/* 137 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n__w_pdfjs_require__(77);\nvar $ = __w_pdfjs_require__(10);\nvar DESCRIPTORS = __w_pdfjs_require__(13);\nvar USE_NATIVE_URL = __w_pdfjs_require__(138);\nvar global = __w_pdfjs_require__(11);\nvar defineProperties = __w_pdfjs_require__(72);\nvar redefine = __w_pdfjs_require__(29);\nvar anInstance = __w_pdfjs_require__(123);\nvar has = __w_pdfjs_require__(23);\nvar assign = __w_pdfjs_require__(100);\nvar arrayFrom = __w_pdfjs_require__(90);\nvar codeAt = __w_pdfjs_require__(78).codeAt;\nvar toASCII = __w_pdfjs_require__(139);\nvar setToStringTag = __w_pdfjs_require__(85);\nvar URLSearchParamsModule = __w_pdfjs_require__(140);\nvar InternalStateModule = __w_pdfjs_require__(33);\nvar NativeURL = global.URL;\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar floor = Math.floor;\nvar pow = Math.pow;\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\nvar ALPHA = /[A-Za-z]/;\nvar ALPHANUMERIC = /[\\d+-.A-Za-z]/;\nvar DIGIT = /\\d/;\nvar HEX_START = /^(0x|0X)/;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\dA-Fa-f]+$/;\nvar FORBIDDEN_HOST_CODE_POINT = /[\\u0000\\u0009\\u000A\\u000D #%/:?@[\\\\]]/;\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\u0000\\u0009\\u000A\\u000D #/:?@[\\\\]]/;\nvar LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u001F ]+|[\\u0000-\\u001F ]+$/g;\nvar TAB_AND_NEW_LINE = /[\\u0009\\u000A\\u000D]/g;\nvar EOF;\nvar parseHost = function (url, input) {\n var result, codePoints, index;\n if (input.charAt(0) == '[') {\n if (input.charAt(input.length - 1) != ']')\n return INVALID_HOST;\n result = parseIPv6(input.slice(1, -1));\n if (!result)\n return INVALID_HOST;\n url.host = result;\n } else if (!isSpecial(url)) {\n if (FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT.test(input))\n return INVALID_HOST;\n result = '';\n codePoints = arrayFrom(input);\n for (index = 0; index < codePoints.length; index++) {\n result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n }\n url.host = result;\n } else {\n input = toASCII(input);\n if (FORBIDDEN_HOST_CODE_POINT.test(input))\n return INVALID_HOST;\n result = parseIPv4(input);\n if (result === null)\n return INVALID_HOST;\n url.host = result;\n }\n};\nvar parseIPv4 = function (input) {\n var parts = input.split('.');\n var partsLength, numbers, index, part, radix, number, ipv4;\n if (parts.length && parts[parts.length - 1] == '') {\n parts.pop();\n }\n partsLength = parts.length;\n if (partsLength > 4)\n return input;\n numbers = [];\n for (index = 0; index < partsLength; index++) {\n part = parts[index];\n if (part == '')\n return input;\n radix = 10;\n if (part.length > 1 && part.charAt(0) == '0') {\n radix = HEX_START.test(part) ? 16 : 8;\n part = part.slice(radix == 8 ? 1 : 2);\n }\n if (part === '') {\n number = 0;\n } else {\n if (!(radix == 10 ? DEC : radix == 8 ? OCT : HEX).test(part))\n return input;\n number = parseInt(part, radix);\n }\n numbers.push(number);\n }\n for (index = 0; index < partsLength; index++) {\n number = numbers[index];\n if (index == partsLength - 1) {\n if (number >= pow(256, 5 - partsLength))\n return null;\n } else if (number > 255)\n return null;\n }\n ipv4 = numbers.pop();\n for (index = 0; index < numbers.length; index++) {\n ipv4 += numbers[index] * pow(256, 3 - index);\n }\n return ipv4;\n};\nvar parseIPv6 = function (input) {\n var address = [\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0\n ];\n var pieceIndex = 0;\n var compress = null;\n var pointer = 0;\n var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n var char = function () {\n return input.charAt(pointer);\n };\n if (char() == ':') {\n if (input.charAt(1) != ':')\n return;\n pointer += 2;\n pieceIndex++;\n compress = pieceIndex;\n }\n while (char()) {\n if (pieceIndex == 8)\n return;\n if (char() == ':') {\n if (compress !== null)\n return;\n pointer++;\n pieceIndex++;\n compress = pieceIndex;\n continue;\n }\n value = length = 0;\n while (length < 4 && HEX.test(char())) {\n value = value * 16 + parseInt(char(), 16);\n pointer++;\n length++;\n }\n if (char() == '.') {\n if (length == 0)\n return;\n pointer -= length;\n if (pieceIndex > 6)\n return;\n numbersSeen = 0;\n while (char()) {\n ipv4Piece = null;\n if (numbersSeen > 0) {\n if (char() == '.' && numbersSeen < 4)\n pointer++;\n else\n return;\n }\n if (!DIGIT.test(char()))\n return;\n while (DIGIT.test(char())) {\n number = parseInt(char(), 10);\n if (ipv4Piece === null)\n ipv4Piece = number;\n else if (ipv4Piece == 0)\n return;\n else\n ipv4Piece = ipv4Piece * 10 + number;\n if (ipv4Piece > 255)\n return;\n pointer++;\n }\n address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n numbersSeen++;\n if (numbersSeen == 2 || numbersSeen == 4)\n pieceIndex++;\n }\n if (numbersSeen != 4)\n return;\n break;\n } else if (char() == ':') {\n pointer++;\n if (!char())\n return;\n } else if (char())\n return;\n address[pieceIndex++] = value;\n }\n if (compress !== null) {\n swaps = pieceIndex - compress;\n pieceIndex = 7;\n while (pieceIndex != 0 && swaps > 0) {\n swap = address[pieceIndex];\n address[pieceIndex--] = address[compress + swaps - 1];\n address[compress + --swaps] = swap;\n }\n } else if (pieceIndex != 8)\n return;\n return address;\n};\nvar findLongestZeroSequence = function (ipv6) {\n var maxIndex = null;\n var maxLength = 1;\n var currStart = null;\n var currLength = 0;\n var index = 0;\n for (; index < 8; index++) {\n if (ipv6[index] !== 0) {\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n currStart = null;\n currLength = 0;\n } else {\n if (currStart === null)\n currStart = index;\n ++currLength;\n }\n }\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n return maxIndex;\n};\nvar serializeHost = function (host) {\n var result, index, compress, ignore0;\n if (typeof host == 'number') {\n result = [];\n for (index = 0; index < 4; index++) {\n result.unshift(host % 256);\n host = floor(host / 256);\n }\n return result.join('.');\n } else if (typeof host == 'object') {\n result = '';\n compress = findLongestZeroSequence(host);\n for (index = 0; index < 8; index++) {\n if (ignore0 && host[index] === 0)\n continue;\n if (ignore0)\n ignore0 = false;\n if (compress === index) {\n result += index ? ':' : '::';\n ignore0 = true;\n } else {\n result += host[index].toString(16);\n if (index < 7)\n result += ':';\n }\n }\n return '[' + result + ']';\n }\n return host;\n};\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n ' ': 1,\n '\"': 1,\n '<': 1,\n '>': 1,\n '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n '#': 1,\n '?': 1,\n '{': 1,\n '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n '/': 1,\n ':': 1,\n ';': 1,\n '=': 1,\n '@': 1,\n '[': 1,\n '\\\\': 1,\n ']': 1,\n '^': 1,\n '|': 1\n});\nvar percentEncode = function (char, set) {\n var code = codeAt(char, 0);\n return code > 0x20 && code < 0x7F && !has(set, char) ? char : encodeURIComponent(char);\n};\nvar specialSchemes = {\n ftp: 21,\n file: null,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443\n};\nvar isSpecial = function (url) {\n return has(specialSchemes, url.scheme);\n};\nvar includesCredentials = function (url) {\n return url.username != '' || url.password != '';\n};\nvar cannotHaveUsernamePasswordPort = function (url) {\n return !url.host || url.cannotBeABaseURL || url.scheme == 'file';\n};\nvar isWindowsDriveLetter = function (string, normalized) {\n var second;\n return string.length == 2 && ALPHA.test(string.charAt(0)) && ((second = string.charAt(1)) == ':' || !normalized && second == '|');\n};\nvar startsWithWindowsDriveLetter = function (string) {\n var third;\n return string.length > 1 && isWindowsDriveLetter(string.slice(0, 2)) && (string.length == 2 || ((third = string.charAt(2)) === '/' || third === '\\\\' || third === '?' || third === '#'));\n};\nvar shortenURLsPath = function (url) {\n var path = url.path;\n var pathSize = path.length;\n if (pathSize && (url.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\n path.pop();\n }\n};\nvar isSingleDot = function (segment) {\n return segment === '.' || segment.toLowerCase() === '%2e';\n};\nvar isDoubleDot = function (segment) {\n segment = segment.toLowerCase();\n return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\nvar parseURL = function (url, input, stateOverride, base) {\n var state = stateOverride || SCHEME_START;\n var pointer = 0;\n var buffer = '';\n var seenAt = false;\n var seenBracket = false;\n var seenPasswordToken = false;\n var codePoints, char, bufferCodePoints, failure;\n if (!stateOverride) {\n url.scheme = '';\n url.username = '';\n url.password = '';\n url.host = null;\n url.port = null;\n url.path = [];\n url.query = null;\n url.fragment = null;\n url.cannotBeABaseURL = false;\n input = input.replace(LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');\n }\n input = input.replace(TAB_AND_NEW_LINE, '');\n codePoints = arrayFrom(input);\n while (pointer <= codePoints.length) {\n char = codePoints[pointer];\n switch (state) {\n case SCHEME_START:\n if (char && ALPHA.test(char)) {\n buffer += char.toLowerCase();\n state = SCHEME;\n } else if (!stateOverride) {\n state = NO_SCHEME;\n continue;\n } else\n return INVALID_SCHEME;\n break;\n case SCHEME:\n if (char && (ALPHANUMERIC.test(char) || char == '+' || char == '-' || char == '.')) {\n buffer += char.toLowerCase();\n } else if (char == ':') {\n if (stateOverride && (isSpecial(url) != has(specialSchemes, buffer) || buffer == 'file' && (includesCredentials(url) || url.port !== null) || url.scheme == 'file' && !url.host))\n return;\n url.scheme = buffer;\n if (stateOverride) {\n if (isSpecial(url) && specialSchemes[url.scheme] == url.port)\n url.port = null;\n return;\n }\n buffer = '';\n if (url.scheme == 'file') {\n state = FILE;\n } else if (isSpecial(url) && base && base.scheme == url.scheme) {\n state = SPECIAL_RELATIVE_OR_AUTHORITY;\n } else if (isSpecial(url)) {\n state = SPECIAL_AUTHORITY_SLASHES;\n } else if (codePoints[pointer + 1] == '/') {\n state = PATH_OR_AUTHORITY;\n pointer++;\n } else {\n url.cannotBeABaseURL = true;\n url.path.push('');\n state = CANNOT_BE_A_BASE_URL_PATH;\n }\n } else if (!stateOverride) {\n buffer = '';\n state = NO_SCHEME;\n pointer = 0;\n continue;\n } else\n return INVALID_SCHEME;\n break;\n case NO_SCHEME:\n if (!base || base.cannotBeABaseURL && char != '#')\n return INVALID_SCHEME;\n if (base.cannotBeABaseURL && char == '#') {\n url.scheme = base.scheme;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n url.cannotBeABaseURL = true;\n state = FRAGMENT;\n break;\n }\n state = base.scheme == 'file' ? FILE : RELATIVE;\n continue;\n case SPECIAL_RELATIVE_OR_AUTHORITY:\n if (char == '/' && codePoints[pointer + 1] == '/') {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n pointer++;\n } else {\n state = RELATIVE;\n continue;\n }\n break;\n case PATH_OR_AUTHORITY:\n if (char == '/') {\n state = AUTHORITY;\n break;\n } else {\n state = PATH;\n continue;\n }\n case RELATIVE:\n url.scheme = base.scheme;\n if (char == EOF) {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '/' || char == '\\\\' && isSpecial(url)) {\n state = RELATIVE_SLASH;\n } else if (char == '?') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.path.pop();\n state = PATH;\n continue;\n }\n break;\n case RELATIVE_SLASH:\n if (isSpecial(url) && (char == '/' || char == '\\\\')) {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n } else if (char == '/') {\n state = AUTHORITY;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n state = PATH;\n continue;\n }\n break;\n case SPECIAL_AUTHORITY_SLASHES:\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n if (char != '/' || buffer.charAt(pointer + 1) != '/')\n continue;\n pointer++;\n break;\n case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n if (char != '/' && char != '\\\\') {\n state = AUTHORITY;\n continue;\n }\n break;\n case AUTHORITY:\n if (char == '@') {\n if (seenAt)\n buffer = '%40' + buffer;\n seenAt = true;\n bufferCodePoints = arrayFrom(buffer);\n for (var i = 0; i < bufferCodePoints.length; i++) {\n var codePoint = bufferCodePoints[i];\n if (codePoint == ':' && !seenPasswordToken) {\n seenPasswordToken = true;\n continue;\n }\n var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n if (seenPasswordToken)\n url.password += encodedCodePoints;\n else\n url.username += encodedCodePoints;\n }\n buffer = '';\n } else if (char == EOF || char == '/' || char == '?' || char == '#' || char == '\\\\' && isSpecial(url)) {\n if (seenAt && buffer == '')\n return INVALID_AUTHORITY;\n pointer -= arrayFrom(buffer).length + 1;\n buffer = '';\n state = HOST;\n } else\n buffer += char;\n break;\n case HOST:\n case HOSTNAME:\n if (stateOverride && url.scheme == 'file') {\n state = FILE_HOST;\n continue;\n } else if (char == ':' && !seenBracket) {\n if (buffer == '')\n return INVALID_HOST;\n failure = parseHost(url, buffer);\n if (failure)\n return failure;\n buffer = '';\n state = PORT;\n if (stateOverride == HOSTNAME)\n return;\n } else if (char == EOF || char == '/' || char == '?' || char == '#' || char == '\\\\' && isSpecial(url)) {\n if (isSpecial(url) && buffer == '')\n return INVALID_HOST;\n if (stateOverride && buffer == '' && (includesCredentials(url) || url.port !== null))\n return;\n failure = parseHost(url, buffer);\n if (failure)\n return failure;\n buffer = '';\n state = PATH_START;\n if (stateOverride)\n return;\n continue;\n } else {\n if (char == '[')\n seenBracket = true;\n else if (char == ']')\n seenBracket = false;\n buffer += char;\n }\n break;\n case PORT:\n if (DIGIT.test(char)) {\n buffer += char;\n } else if (char == EOF || char == '/' || char == '?' || char == '#' || char == '\\\\' && isSpecial(url) || stateOverride) {\n if (buffer != '') {\n var port = parseInt(buffer, 10);\n if (port > 0xFFFF)\n return INVALID_PORT;\n url.port = isSpecial(url) && port === specialSchemes[url.scheme] ? null : port;\n buffer = '';\n }\n if (stateOverride)\n return;\n state = PATH_START;\n continue;\n } else\n return INVALID_PORT;\n break;\n case FILE:\n url.scheme = 'file';\n if (char == '/' || char == '\\\\')\n state = FILE_SLASH;\n else if (base && base.scheme == 'file') {\n if (char == EOF) {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '?') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n if (!startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n url.host = base.host;\n url.path = base.path.slice();\n shortenURLsPath(url);\n }\n state = PATH;\n continue;\n }\n } else {\n state = PATH;\n continue;\n }\n break;\n case FILE_SLASH:\n if (char == '/' || char == '\\\\') {\n state = FILE_HOST;\n break;\n }\n if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n if (isWindowsDriveLetter(base.path[0], true))\n url.path.push(base.path[0]);\n else\n url.host = base.host;\n }\n state = PATH;\n continue;\n case FILE_HOST:\n if (char == EOF || char == '/' || char == '\\\\' || char == '?' || char == '#') {\n if (!stateOverride && isWindowsDriveLetter(buffer)) {\n state = PATH;\n } else if (buffer == '') {\n url.host = '';\n if (stateOverride)\n return;\n state = PATH_START;\n } else {\n failure = parseHost(url, buffer);\n if (failure)\n return failure;\n if (url.host == 'localhost')\n url.host = '';\n if (stateOverride)\n return;\n buffer = '';\n state = PATH_START;\n }\n continue;\n } else\n buffer += char;\n break;\n case PATH_START:\n if (isSpecial(url)) {\n state = PATH;\n if (char != '/' && char != '\\\\')\n continue;\n } else if (!stateOverride && char == '?') {\n url.query = '';\n state = QUERY;\n } else if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n state = PATH;\n if (char != '/')\n continue;\n }\n break;\n case PATH:\n if (char == EOF || char == '/' || char == '\\\\' && isSpecial(url) || !stateOverride && (char == '?' || char == '#')) {\n if (isDoubleDot(buffer)) {\n shortenURLsPath(url);\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else if (isSingleDot(buffer)) {\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else {\n if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n if (url.host)\n url.host = '';\n buffer = buffer.charAt(0) + ':';\n }\n url.path.push(buffer);\n }\n buffer = '';\n if (url.scheme == 'file' && (char == EOF || char == '?' || char == '#')) {\n while (url.path.length > 1 && url.path[0] === '') {\n url.path.shift();\n }\n }\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n }\n } else {\n buffer += percentEncode(char, pathPercentEncodeSet);\n }\n break;\n case CANNOT_BE_A_BASE_URL_PATH:\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n url.path[0] += percentEncode(char, C0ControlPercentEncodeSet);\n }\n break;\n case QUERY:\n if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n if (char == \"'\" && isSpecial(url))\n url.query += '%27';\n else if (char == '#')\n url.query += '%23';\n else\n url.query += percentEncode(char, C0ControlPercentEncodeSet);\n }\n break;\n case FRAGMENT:\n if (char != EOF)\n url.fragment += percentEncode(char, fragmentPercentEncodeSet);\n break;\n }\n pointer++;\n }\n};\nvar URLConstructor = function URL(url) {\n var that = anInstance(this, URLConstructor, 'URL');\n var base = arguments.length > 1 ? arguments[1] : undefined;\n var urlString = String(url);\n var state = setInternalState(that, { type: 'URL' });\n var baseState, failure;\n if (base !== undefined) {\n if (base instanceof URLConstructor)\n baseState = getInternalURLState(base);\n else {\n failure = parseURL(baseState = {}, String(base));\n if (failure)\n throw TypeError(failure);\n }\n }\n failure = parseURL(state, urlString, null, baseState);\n if (failure)\n throw TypeError(failure);\n var searchParams = state.searchParams = new URLSearchParams();\n var searchParamsState = getInternalSearchParamsState(searchParams);\n searchParamsState.updateSearchParams(state.query);\n searchParamsState.updateURL = function () {\n state.query = String(searchParams) || null;\n };\n if (!DESCRIPTORS) {\n that.href = serializeURL.call(that);\n that.origin = getOrigin.call(that);\n that.protocol = getProtocol.call(that);\n that.username = getUsername.call(that);\n that.password = getPassword.call(that);\n that.host = getHost.call(that);\n that.hostname = getHostname.call(that);\n that.port = getPort.call(that);\n that.pathname = getPathname.call(that);\n that.search = getSearch.call(that);\n that.searchParams = getSearchParams.call(that);\n that.hash = getHash.call(that);\n }\n};\nvar URLPrototype = URLConstructor.prototype;\nvar serializeURL = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var username = url.username;\n var password = url.password;\n var host = url.host;\n var port = url.port;\n var path = url.path;\n var query = url.query;\n var fragment = url.fragment;\n var output = scheme + ':';\n if (host !== null) {\n output += '//';\n if (includesCredentials(url)) {\n output += username + (password ? ':' + password : '') + '@';\n }\n output += serializeHost(host);\n if (port !== null)\n output += ':' + port;\n } else if (scheme == 'file')\n output += '//';\n output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n if (query !== null)\n output += '?' + query;\n if (fragment !== null)\n output += '#' + fragment;\n return output;\n};\nvar getOrigin = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var port = url.port;\n if (scheme == 'blob')\n try {\n return new URL(scheme.path[0]).origin;\n } catch (error) {\n return 'null';\n }\n if (scheme == 'file' || !isSpecial(url))\n return 'null';\n return scheme + '://' + serializeHost(url.host) + (port !== null ? ':' + port : '');\n};\nvar getProtocol = function () {\n return getInternalURLState(this).scheme + ':';\n};\nvar getUsername = function () {\n return getInternalURLState(this).username;\n};\nvar getPassword = function () {\n return getInternalURLState(this).password;\n};\nvar getHost = function () {\n var url = getInternalURLState(this);\n var host = url.host;\n var port = url.port;\n return host === null ? '' : port === null ? serializeHost(host) : serializeHost(host) + ':' + port;\n};\nvar getHostname = function () {\n var host = getInternalURLState(this).host;\n return host === null ? '' : serializeHost(host);\n};\nvar getPort = function () {\n var port = getInternalURLState(this).port;\n return port === null ? '' : String(port);\n};\nvar getPathname = function () {\n var url = getInternalURLState(this);\n var path = url.path;\n return url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n};\nvar getSearch = function () {\n var query = getInternalURLState(this).query;\n return query ? '?' + query : '';\n};\nvar getSearchParams = function () {\n return getInternalURLState(this).searchParams;\n};\nvar getHash = function () {\n var fragment = getInternalURLState(this).fragment;\n return fragment ? '#' + fragment : '';\n};\nvar accessorDescriptor = function (getter, setter) {\n return {\n get: getter,\n set: setter,\n configurable: true,\n enumerable: true\n };\n};\nif (DESCRIPTORS) {\n defineProperties(URLPrototype, {\n href: accessorDescriptor(serializeURL, function (href) {\n var url = getInternalURLState(this);\n var urlString = String(href);\n var failure = parseURL(url, urlString);\n if (failure)\n throw TypeError(failure);\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n origin: accessorDescriptor(getOrigin),\n protocol: accessorDescriptor(getProtocol, function (protocol) {\n var url = getInternalURLState(this);\n parseURL(url, String(protocol) + ':', SCHEME_START);\n }),\n username: accessorDescriptor(getUsername, function (username) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(username));\n if (cannotHaveUsernamePasswordPort(url))\n return;\n url.username = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n password: accessorDescriptor(getPassword, function (password) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(password));\n if (cannotHaveUsernamePasswordPort(url))\n return;\n url.password = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n host: accessorDescriptor(getHost, function (host) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL)\n return;\n parseURL(url, String(host), HOST);\n }),\n hostname: accessorDescriptor(getHostname, function (hostname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL)\n return;\n parseURL(url, String(hostname), HOSTNAME);\n }),\n port: accessorDescriptor(getPort, function (port) {\n var url = getInternalURLState(this);\n if (cannotHaveUsernamePasswordPort(url))\n return;\n port = String(port);\n if (port == '')\n url.port = null;\n else\n parseURL(url, port, PORT);\n }),\n pathname: accessorDescriptor(getPathname, function (pathname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL)\n return;\n url.path = [];\n parseURL(url, pathname + '', PATH_START);\n }),\n search: accessorDescriptor(getSearch, function (search) {\n var url = getInternalURLState(this);\n search = String(search);\n if (search == '') {\n url.query = null;\n } else {\n if ('?' == search.charAt(0))\n search = search.slice(1);\n url.query = '';\n parseURL(url, search, QUERY);\n }\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n searchParams: accessorDescriptor(getSearchParams),\n hash: accessorDescriptor(getHash, function (hash) {\n var url = getInternalURLState(this);\n hash = String(hash);\n if (hash == '') {\n url.fragment = null;\n return;\n }\n if ('#' == hash.charAt(0))\n hash = hash.slice(1);\n url.fragment = '';\n parseURL(url, hash, FRAGMENT);\n })\n });\n}\nredefine(URLPrototype, 'toJSON', function toJSON() {\n return serializeURL.call(this);\n}, { enumerable: true });\nredefine(URLPrototype, 'toString', function toString() {\n return serializeURL.call(this);\n}, { enumerable: true });\nif (NativeURL) {\n var nativeCreateObjectURL = NativeURL.createObjectURL;\n var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n if (nativeCreateObjectURL)\n redefine(URLConstructor, 'createObjectURL', function createObjectURL(blob) {\n return nativeCreateObjectURL.apply(NativeURL, arguments);\n });\n if (nativeRevokeObjectURL)\n redefine(URLConstructor, 'revokeObjectURL', function revokeObjectURL(url) {\n return nativeRevokeObjectURL.apply(NativeURL, arguments);\n });\n}\nsetToStringTag(URLConstructor, 'URL');\n$({\n global: true,\n forced: !USE_NATIVE_URL,\n sham: !DESCRIPTORS\n}, { URL: URLConstructor });\n\n/***/ }),\n/* 138 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar fails = __w_pdfjs_require__(14);\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar IS_PURE = __w_pdfjs_require__(37);\nvar ITERATOR = wellKnownSymbol('iterator');\nmodule.exports = !fails(function () {\n var url = new URL('b?a=1&b=2&c=3', 'http://a');\n var searchParams = url.searchParams;\n var result = '';\n url.pathname = 'c%20d';\n searchParams.forEach(function (value, key) {\n searchParams['delete']('b');\n result += key + value;\n });\n return IS_PURE && !url.toJSON || !searchParams.sort || url.href !== 'http://a/c%20d?a=1&c=3' || searchParams.get('c') !== '3' || String(new URLSearchParams('?a=1')) !== 'a=1' || !searchParams[ITERATOR] || new URL('https://a@b').username !== 'a' || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b' || new URL('http://тест').host !== 'xn--e1aybc' || new URL('http://a#б').hash !== '#%D0%B1' || result !== 'a1c3' || new URL('http://x', undefined).host !== 'x';\n});\n\n/***/ }),\n/* 139 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar maxInt = 2147483647;\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128;\nvar delimiter = '-';\nvar regexNonASCII = /[^\\0-\\u007E]/;\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g;\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\nvar floor = Math.floor;\nvar stringFromCharCode = String.fromCharCode;\nvar ucs2decode = function (string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n while (counter < length) {\n var value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n var extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) {\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n};\nvar digitToBasic = function (digit) {\n return digit + 22 + 75 * (digit < 26);\n};\nvar adapt = function (delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n for (; delta > baseMinusTMin * tMax >> 1; k += base) {\n delta = floor(delta / baseMinusTMin);\n }\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\nvar encode = function (input) {\n var output = [];\n input = ucs2decode(input);\n var inputLength = input.length;\n var n = initialN;\n var delta = 0;\n var bias = initialBias;\n var i, currentValue;\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < 0x80) {\n output.push(stringFromCharCode(currentValue));\n }\n }\n var basicLength = output.length;\n var handledCPCount = basicLength;\n if (basicLength) {\n output.push(delimiter);\n }\n while (handledCPCount < inputLength) {\n var m = maxInt;\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n }\n var handledCPCountPlusOne = handledCPCount + 1;\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n throw RangeError(OVERFLOW_ERROR);\n }\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < n && ++delta > maxInt) {\n throw RangeError(OVERFLOW_ERROR);\n }\n if (currentValue == n) {\n var q = delta;\n for (var k = base;; k += base) {\n var t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n if (q < t)\n break;\n var qMinusT = q - t;\n var baseMinusT = base - t;\n output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n q = floor(qMinusT / baseMinusT);\n }\n output.push(stringFromCharCode(digitToBasic(q)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n delta = 0;\n ++handledCPCount;\n }\n }\n ++delta;\n ++n;\n }\n return output.join('');\n};\nmodule.exports = function (input) {\n var encoded = [];\n var labels = input.toLowerCase().replace(regexSeparators, '\\u002E').split('.');\n var i, label;\n for (i = 0; i < labels.length; i++) {\n label = labels[i];\n encoded.push(regexNonASCII.test(label) ? 'xn--' + encode(label) : label);\n }\n return encoded.join('.');\n};\n\n/***/ }),\n/* 140 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n__w_pdfjs_require__(118);\nvar $ = __w_pdfjs_require__(10);\nvar getBuiltIn = __w_pdfjs_require__(42);\nvar USE_NATIVE_URL = __w_pdfjs_require__(138);\nvar redefine = __w_pdfjs_require__(29);\nvar redefineAll = __w_pdfjs_require__(121);\nvar setToStringTag = __w_pdfjs_require__(85);\nvar createIteratorConstructor = __w_pdfjs_require__(80);\nvar InternalStateModule = __w_pdfjs_require__(33);\nvar anInstance = __w_pdfjs_require__(123);\nvar hasOwn = __w_pdfjs_require__(23);\nvar bind = __w_pdfjs_require__(62);\nvar classof = __w_pdfjs_require__(95);\nvar anObject = __w_pdfjs_require__(28);\nvar isObject = __w_pdfjs_require__(22);\nvar create = __w_pdfjs_require__(71);\nvar createPropertyDescriptor = __w_pdfjs_require__(16);\nvar getIterator = __w_pdfjs_require__(141);\nvar getIteratorMethod = __w_pdfjs_require__(94);\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar $fetch = getBuiltIn('fetch');\nvar Headers = getBuiltIn('Headers');\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\nvar plus = /\\+/g;\nvar sequences = Array(4);\nvar percentSequence = function (bytes) {\n return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\nvar percentDecode = function (sequence) {\n try {\n return decodeURIComponent(sequence);\n } catch (error) {\n return sequence;\n }\n};\nvar deserialize = function (it) {\n var result = it.replace(plus, ' ');\n var bytes = 4;\n try {\n return decodeURIComponent(result);\n } catch (error) {\n while (bytes) {\n result = result.replace(percentSequence(bytes--), percentDecode);\n }\n return result;\n }\n};\nvar find = /[!'()~]|%20/g;\nvar replace = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+'\n};\nvar replacer = function (match) {\n return replace[match];\n};\nvar serialize = function (it) {\n return encodeURIComponent(it).replace(find, replacer);\n};\nvar parseSearchParams = function (result, query) {\n if (query) {\n var attributes = query.split('&');\n var index = 0;\n var attribute, entry;\n while (index < attributes.length) {\n attribute = attributes[index++];\n if (attribute.length) {\n entry = attribute.split('=');\n result.push({\n key: deserialize(entry.shift()),\n value: deserialize(entry.join('='))\n });\n }\n }\n }\n};\nvar updateSearchParams = function (query) {\n this.entries.length = 0;\n parseSearchParams(this.entries, query);\n};\nvar validateArgumentsLength = function (passed, required) {\n if (passed < required)\n throw TypeError('Not enough arguments');\n};\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n setInternalState(this, {\n type: URL_SEARCH_PARAMS_ITERATOR,\n iterator: getIterator(getInternalParamsState(params).entries),\n kind: kind\n });\n}, 'Iterator', function next() {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var step = state.iterator.next();\n var entry = step.value;\n if (!step.done) {\n step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [\n entry.key,\n entry.value\n ];\n }\n return step;\n});\nvar URLSearchParamsConstructor = function URLSearchParams() {\n anInstance(this, URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n var init = arguments.length > 0 ? arguments[0] : undefined;\n var that = this;\n var entries = [];\n var iteratorMethod, iterator, next, step, entryIterator, entryNext, first, second, key;\n setInternalState(that, {\n type: URL_SEARCH_PARAMS,\n entries: entries,\n updateURL: function () {\n },\n updateSearchParams: updateSearchParams\n });\n if (init !== undefined) {\n if (isObject(init)) {\n iteratorMethod = getIteratorMethod(init);\n if (typeof iteratorMethod === 'function') {\n iterator = iteratorMethod.call(init);\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n entryIterator = getIterator(anObject(step.value));\n entryNext = entryIterator.next;\n if ((first = entryNext.call(entryIterator)).done || (second = entryNext.call(entryIterator)).done || !entryNext.call(entryIterator).done)\n throw TypeError('Expected sequence with length 2');\n entries.push({\n key: first.value + '',\n value: second.value + ''\n });\n }\n } else\n for (key in init)\n if (hasOwn(init, key))\n entries.push({\n key: key,\n value: init[key] + ''\n });\n } else {\n parseSearchParams(entries, typeof init === 'string' ? init.charAt(0) === '?' ? init.slice(1) : init : init + '');\n }\n }\n};\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\nredefineAll(URLSearchParamsPrototype, {\n append: function append(name, value) {\n validateArgumentsLength(arguments.length, 2);\n var state = getInternalParamsState(this);\n state.entries.push({\n key: name + '',\n value: value + ''\n });\n state.updateURL();\n },\n 'delete': function (name) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index].key === key)\n entries.splice(index, 1);\n else\n index++;\n }\n state.updateURL();\n },\n get: function get(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key)\n return entries[index].value;\n }\n return null;\n },\n getAll: function getAll(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var result = [];\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key)\n result.push(entries[index].value);\n }\n return result;\n },\n has: function has(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index++].key === key)\n return true;\n }\n return false;\n },\n set: function set(name, value) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var found = false;\n var key = name + '';\n var val = value + '';\n var index = 0;\n var entry;\n for (; index < entries.length; index++) {\n entry = entries[index];\n if (entry.key === key) {\n if (found)\n entries.splice(index--, 1);\n else {\n found = true;\n entry.value = val;\n }\n }\n }\n if (!found)\n entries.push({\n key: key,\n value: val\n });\n state.updateURL();\n },\n sort: function sort() {\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var slice = entries.slice();\n var entry, entriesIndex, sliceIndex;\n entries.length = 0;\n for (sliceIndex = 0; sliceIndex < slice.length; sliceIndex++) {\n entry = slice[sliceIndex];\n for (entriesIndex = 0; entriesIndex < sliceIndex; entriesIndex++) {\n if (entries[entriesIndex].key > entry.key) {\n entries.splice(entriesIndex, 0, entry);\n break;\n }\n }\n if (entriesIndex === sliceIndex)\n entries.push(entry);\n }\n state.updateURL();\n },\n forEach: function forEach(callback) {\n var entries = getInternalParamsState(this).entries;\n var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined, 3);\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n boundFunction(entry.value, entry.key, this);\n }\n },\n keys: function keys() {\n return new URLSearchParamsIterator(this, 'keys');\n },\n values: function values() {\n return new URLSearchParamsIterator(this, 'values');\n },\n entries: function entries() {\n return new URLSearchParamsIterator(this, 'entries');\n }\n}, { enumerable: true });\nredefine(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries);\nredefine(URLSearchParamsPrototype, 'toString', function toString() {\n var entries = getInternalParamsState(this).entries;\n var result = [];\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n result.push(serialize(entry.key) + '=' + serialize(entry.value));\n }\n return result.join('&');\n}, { enumerable: true });\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n$({\n global: true,\n forced: !USE_NATIVE_URL\n}, { URLSearchParams: URLSearchParamsConstructor });\nif (!USE_NATIVE_URL && typeof $fetch == 'function' && typeof Headers == 'function') {\n $({\n global: true,\n enumerable: true,\n forced: true\n }, {\n fetch: function fetch(input) {\n var args = [input];\n var init, body, headers;\n if (arguments.length > 1) {\n init = arguments[1];\n if (isObject(init)) {\n body = init.body;\n if (classof(body) === URL_SEARCH_PARAMS) {\n headers = init.headers ? new Headers(init.headers) : new Headers();\n if (!headers.has('content-type')) {\n headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n init = create(init, {\n body: createPropertyDescriptor(0, String(body)),\n headers: createPropertyDescriptor(0, headers)\n });\n }\n }\n args.push(init);\n }\n return $fetch.apply(this, args);\n }\n });\n}\nmodule.exports = {\n URLSearchParams: URLSearchParamsConstructor,\n getState: getInternalParamsState\n};\n\n/***/ }),\n/* 141 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar anObject = __w_pdfjs_require__(28);\nvar getIteratorMethod = __w_pdfjs_require__(94);\nmodule.exports = function (it) {\n var iteratorMethod = getIteratorMethod(it);\n if (typeof iteratorMethod != 'function') {\n throw TypeError(String(it) + ' is not iterable');\n }\n return anObject(iteratorMethod.call(it));\n};\n\n/***/ }),\n/* 142 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar $ = __w_pdfjs_require__(10);\n$({\n target: 'URL',\n proto: true,\n enumerable: true\n}, {\n toJSON: function toJSON() {\n return URL.prototype.toString.call(this);\n }\n});\n\n/***/ }),\n/* 143 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n(function (global, factory) {\n true ? factory(exports) : undefined;\n}(this, function (exports) {\n 'use strict';\n var SymbolPolyfill = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol : function (description) {\n return \"Symbol(\" + description + \")\";\n };\n function noop() {\n }\n var NumberIsNaN = Number.isNaN || function (x) {\n return x !== x;\n };\n var rethrowAssertionErrorRejection = noop;\n function typeIsObject(x) {\n return typeof x === 'object' && x !== null || typeof x === 'function';\n }\n function createArrayFromList(elements) {\n return elements.slice();\n }\n function ArrayBufferCopy(dest, destOffset, src, srcOffset, n) {\n new Uint8Array(dest).set(new Uint8Array(src, srcOffset, n), destOffset);\n }\n function IsFiniteNonNegativeNumber(v) {\n if (IsNonNegativeNumber(v) === false) {\n return false;\n }\n if (v === Infinity) {\n return false;\n }\n return true;\n }\n function IsNonNegativeNumber(v) {\n if (typeof v !== 'number') {\n return false;\n }\n if (NumberIsNaN(v)) {\n return false;\n }\n if (v < 0) {\n return false;\n }\n return true;\n }\n function Call(F, V, args) {\n if (typeof F !== 'function') {\n throw new TypeError('Argument is not a function');\n }\n return Function.prototype.apply.call(F, V, args);\n }\n function CreateAlgorithmFromUnderlyingMethod(underlyingObject, methodName, algoArgCount, extraArgs) {\n var method = underlyingObject[methodName];\n if (method !== undefined) {\n if (typeof method !== 'function') {\n throw new TypeError(method + \" is not a method\");\n }\n switch (algoArgCount) {\n case 0: {\n return function () {\n return PromiseCall(method, underlyingObject, extraArgs);\n };\n }\n case 1: {\n return function (arg) {\n var fullArgs = [arg].concat(extraArgs);\n return PromiseCall(method, underlyingObject, fullArgs);\n };\n }\n }\n }\n return function () {\n return promiseResolvedWith(undefined);\n };\n }\n function InvokeOrNoop(O, P, args) {\n var method = O[P];\n if (method === undefined) {\n return undefined;\n }\n return Call(method, O, args);\n }\n function PromiseCall(F, V, args) {\n try {\n return promiseResolvedWith(Call(F, V, args));\n } catch (value) {\n return promiseRejectedWith(value);\n }\n }\n function TransferArrayBuffer(O) {\n return O;\n }\n function IsDetachedBuffer(O) {\n return false;\n }\n function ValidateAndNormalizeHighWaterMark(highWaterMark) {\n highWaterMark = Number(highWaterMark);\n if (NumberIsNaN(highWaterMark) || highWaterMark < 0) {\n throw new RangeError('highWaterMark property of a queuing strategy must be non-negative and non-NaN');\n }\n return highWaterMark;\n }\n function MakeSizeAlgorithmFromSizeFunction(size) {\n if (size === undefined) {\n return function () {\n return 1;\n };\n }\n if (typeof size !== 'function') {\n throw new TypeError('size property of a queuing strategy must be a function');\n }\n return function (chunk) {\n return size(chunk);\n };\n }\n var originalPromise = Promise;\n var originalPromiseThen = Promise.prototype.then;\n var originalPromiseResolve = Promise.resolve.bind(originalPromise);\n var originalPromiseReject = Promise.reject.bind(originalPromise);\n function newPromise(executor) {\n return new originalPromise(executor);\n }\n function promiseResolvedWith(value) {\n return originalPromiseResolve(value);\n }\n function promiseRejectedWith(reason) {\n return originalPromiseReject(reason);\n }\n function PerformPromiseThen(promise, onFulfilled, onRejected) {\n return originalPromiseThen.call(promise, onFulfilled, onRejected);\n }\n function uponPromise(promise, onFulfilled, onRejected) {\n PerformPromiseThen(PerformPromiseThen(promise, onFulfilled, onRejected), undefined, rethrowAssertionErrorRejection);\n }\n function uponFulfillment(promise, onFulfilled) {\n uponPromise(promise, onFulfilled);\n }\n function uponRejection(promise, onRejected) {\n uponPromise(promise, undefined, onRejected);\n }\n function transformPromiseWith(promise, fulfillmentHandler, rejectionHandler) {\n return PerformPromiseThen(promise, fulfillmentHandler, rejectionHandler);\n }\n function setPromiseIsHandledToTrue(promise) {\n PerformPromiseThen(promise, undefined, rethrowAssertionErrorRejection);\n }\n var QUEUE_MAX_ARRAY_SIZE = 16384;\n var SimpleQueue = function () {\n function SimpleQueue() {\n this._cursor = 0;\n this._size = 0;\n this._front = {\n _elements: [],\n _next: undefined\n };\n this._back = this._front;\n this._cursor = 0;\n this._size = 0;\n }\n Object.defineProperty(SimpleQueue.prototype, \"length\", {\n get: function () {\n return this._size;\n },\n enumerable: true,\n configurable: true\n });\n SimpleQueue.prototype.push = function (element) {\n var oldBack = this._back;\n var newBack = oldBack;\n if (oldBack._elements.length === QUEUE_MAX_ARRAY_SIZE - 1) {\n newBack = {\n _elements: [],\n _next: undefined\n };\n }\n oldBack._elements.push(element);\n if (newBack !== oldBack) {\n this._back = newBack;\n oldBack._next = newBack;\n }\n ++this._size;\n };\n SimpleQueue.prototype.shift = function () {\n var oldFront = this._front;\n var newFront = oldFront;\n var oldCursor = this._cursor;\n var newCursor = oldCursor + 1;\n var elements = oldFront._elements;\n var element = elements[oldCursor];\n if (newCursor === QUEUE_MAX_ARRAY_SIZE) {\n newFront = oldFront._next;\n newCursor = 0;\n }\n --this._size;\n this._cursor = newCursor;\n if (oldFront !== newFront) {\n this._front = newFront;\n }\n elements[oldCursor] = undefined;\n return element;\n };\n SimpleQueue.prototype.forEach = function (callback) {\n var i = this._cursor;\n var node = this._front;\n var elements = node._elements;\n while (i !== elements.length || node._next !== undefined) {\n if (i === elements.length) {\n node = node._next;\n elements = node._elements;\n i = 0;\n if (elements.length === 0) {\n break;\n }\n }\n callback(elements[i]);\n ++i;\n }\n };\n SimpleQueue.prototype.peek = function () {\n var front = this._front;\n var cursor = this._cursor;\n return front._elements[cursor];\n };\n return SimpleQueue;\n }();\n function ReadableStreamCreateReadResult(value, done, forAuthorCode) {\n var prototype = null;\n if (forAuthorCode === true) {\n prototype = Object.prototype;\n }\n var obj = Object.create(prototype);\n obj.value = value;\n obj.done = done;\n return obj;\n }\n function ReadableStreamReaderGenericInitialize(reader, stream) {\n reader._forAuthorCode = true;\n reader._ownerReadableStream = stream;\n stream._reader = reader;\n if (stream._state === 'readable') {\n defaultReaderClosedPromiseInitialize(reader);\n } else if (stream._state === 'closed') {\n defaultReaderClosedPromiseInitializeAsResolved(reader);\n } else {\n defaultReaderClosedPromiseInitializeAsRejected(reader, stream._storedError);\n }\n }\n function ReadableStreamReaderGenericCancel(reader, reason) {\n var stream = reader._ownerReadableStream;\n return ReadableStreamCancel(stream, reason);\n }\n function ReadableStreamReaderGenericRelease(reader) {\n if (reader._ownerReadableStream._state === 'readable') {\n defaultReaderClosedPromiseReject(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\\'s closedness'));\n } else {\n defaultReaderClosedPromiseResetToRejected(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\\'s closedness'));\n }\n reader._ownerReadableStream._reader = undefined;\n reader._ownerReadableStream = undefined;\n }\n function readerLockException(name) {\n return new TypeError('Cannot ' + name + ' a stream using a released reader');\n }\n function defaultReaderClosedPromiseInitialize(reader) {\n reader._closedPromise = newPromise(function (resolve, reject) {\n reader._closedPromise_resolve = resolve;\n reader._closedPromise_reject = reject;\n });\n }\n function defaultReaderClosedPromiseInitializeAsRejected(reader, reason) {\n defaultReaderClosedPromiseInitialize(reader);\n defaultReaderClosedPromiseReject(reader, reason);\n }\n function defaultReaderClosedPromiseInitializeAsResolved(reader) {\n defaultReaderClosedPromiseInitialize(reader);\n defaultReaderClosedPromiseResolve(reader);\n }\n function defaultReaderClosedPromiseReject(reader, reason) {\n setPromiseIsHandledToTrue(reader._closedPromise);\n reader._closedPromise_reject(reason);\n reader._closedPromise_resolve = undefined;\n reader._closedPromise_reject = undefined;\n }\n function defaultReaderClosedPromiseResetToRejected(reader, reason) {\n defaultReaderClosedPromiseInitializeAsRejected(reader, reason);\n }\n function defaultReaderClosedPromiseResolve(reader) {\n reader._closedPromise_resolve(undefined);\n reader._closedPromise_resolve = undefined;\n reader._closedPromise_reject = undefined;\n }\n var CancelSteps = SymbolPolyfill('[[CancelSteps]]');\n var PullSteps = SymbolPolyfill('[[PullSteps]]');\n function AcquireReadableStreamDefaultReader(stream, forAuthorCode) {\n if (forAuthorCode === void 0) {\n forAuthorCode = false;\n }\n var reader = new ReadableStreamDefaultReader(stream);\n reader._forAuthorCode = forAuthorCode;\n return reader;\n }\n function ReadableStreamAddReadRequest(stream) {\n var promise = newPromise(function (resolve, reject) {\n var readRequest = {\n _resolve: resolve,\n _reject: reject\n };\n stream._reader._readRequests.push(readRequest);\n });\n return promise;\n }\n function ReadableStreamFulfillReadRequest(stream, chunk, done) {\n var reader = stream._reader;\n var readRequest = reader._readRequests.shift();\n readRequest._resolve(ReadableStreamCreateReadResult(chunk, done, reader._forAuthorCode));\n }\n function ReadableStreamGetNumReadRequests(stream) {\n return stream._reader._readRequests.length;\n }\n function ReadableStreamHasDefaultReader(stream) {\n var reader = stream._reader;\n if (reader === undefined) {\n return false;\n }\n if (!IsReadableStreamDefaultReader(reader)) {\n return false;\n }\n return true;\n }\n var ReadableStreamDefaultReader = function () {\n function ReadableStreamDefaultReader(stream) {\n if (IsReadableStream(stream) === false) {\n throw new TypeError('ReadableStreamDefaultReader can only be constructed with a ReadableStream instance');\n }\n if (IsReadableStreamLocked(stream) === true) {\n throw new TypeError('This stream has already been locked for exclusive reading by another reader');\n }\n ReadableStreamReaderGenericInitialize(this, stream);\n this._readRequests = new SimpleQueue();\n }\n Object.defineProperty(ReadableStreamDefaultReader.prototype, \"closed\", {\n get: function () {\n if (!IsReadableStreamDefaultReader(this)) {\n return promiseRejectedWith(defaultReaderBrandCheckException('closed'));\n }\n return this._closedPromise;\n },\n enumerable: true,\n configurable: true\n });\n ReadableStreamDefaultReader.prototype.cancel = function (reason) {\n if (!IsReadableStreamDefaultReader(this)) {\n return promiseRejectedWith(defaultReaderBrandCheckException('cancel'));\n }\n if (this._ownerReadableStream === undefined) {\n return promiseRejectedWith(readerLockException('cancel'));\n }\n return ReadableStreamReaderGenericCancel(this, reason);\n };\n ReadableStreamDefaultReader.prototype.read = function () {\n if (!IsReadableStreamDefaultReader(this)) {\n return promiseRejectedWith(defaultReaderBrandCheckException('read'));\n }\n if (this._ownerReadableStream === undefined) {\n return promiseRejectedWith(readerLockException('read from'));\n }\n return ReadableStreamDefaultReaderRead(this);\n };\n ReadableStreamDefaultReader.prototype.releaseLock = function () {\n if (!IsReadableStreamDefaultReader(this)) {\n throw defaultReaderBrandCheckException('releaseLock');\n }\n if (this._ownerReadableStream === undefined) {\n return;\n }\n if (this._readRequests.length > 0) {\n throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled');\n }\n ReadableStreamReaderGenericRelease(this);\n };\n return ReadableStreamDefaultReader;\n }();\n function IsReadableStreamDefaultReader(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_readRequests')) {\n return false;\n }\n return true;\n }\n function ReadableStreamDefaultReaderRead(reader) {\n var stream = reader._ownerReadableStream;\n stream._disturbed = true;\n if (stream._state === 'closed') {\n return promiseResolvedWith(ReadableStreamCreateReadResult(undefined, true, reader._forAuthorCode));\n }\n if (stream._state === 'errored') {\n return promiseRejectedWith(stream._storedError);\n }\n return stream._readableStreamController[PullSteps]();\n }\n function defaultReaderBrandCheckException(name) {\n return new TypeError(\"ReadableStreamDefaultReader.prototype.\" + name + \" can only be used on a ReadableStreamDefaultReader\");\n }\n var _a;\n var AsyncIteratorPrototype;\n if (typeof SymbolPolyfill.asyncIterator === 'symbol') {\n AsyncIteratorPrototype = (_a = {}, _a[SymbolPolyfill.asyncIterator] = function () {\n return this;\n }, _a);\n Object.defineProperty(AsyncIteratorPrototype, SymbolPolyfill.asyncIterator, { enumerable: false });\n }\n var ReadableStreamAsyncIteratorPrototype = {\n next: function () {\n if (IsReadableStreamAsyncIterator(this) === false) {\n return promiseRejectedWith(streamAsyncIteratorBrandCheckException('next'));\n }\n var reader = this._asyncIteratorReader;\n if (reader._ownerReadableStream === undefined) {\n return promiseRejectedWith(readerLockException('iterate'));\n }\n return transformPromiseWith(ReadableStreamDefaultReaderRead(reader), function (result) {\n var done = result.done;\n if (done) {\n ReadableStreamReaderGenericRelease(reader);\n }\n var value = result.value;\n return ReadableStreamCreateReadResult(value, done, true);\n });\n },\n return: function (value) {\n if (IsReadableStreamAsyncIterator(this) === false) {\n return promiseRejectedWith(streamAsyncIteratorBrandCheckException('next'));\n }\n var reader = this._asyncIteratorReader;\n if (reader._ownerReadableStream === undefined) {\n return promiseRejectedWith(readerLockException('finish iterating'));\n }\n if (reader._readRequests.length > 0) {\n return promiseRejectedWith(new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled'));\n }\n if (this._preventCancel === false) {\n var result = ReadableStreamReaderGenericCancel(reader, value);\n ReadableStreamReaderGenericRelease(reader);\n return transformPromiseWith(result, function () {\n return ReadableStreamCreateReadResult(value, true, true);\n });\n }\n ReadableStreamReaderGenericRelease(reader);\n return promiseResolvedWith(ReadableStreamCreateReadResult(value, true, true));\n }\n };\n if (AsyncIteratorPrototype !== undefined) {\n Object.setPrototypeOf(ReadableStreamAsyncIteratorPrototype, AsyncIteratorPrototype);\n }\n Object.defineProperty(ReadableStreamAsyncIteratorPrototype, 'next', { enumerable: false });\n Object.defineProperty(ReadableStreamAsyncIteratorPrototype, 'return', { enumerable: false });\n function AcquireReadableStreamAsyncIterator(stream, preventCancel) {\n if (preventCancel === void 0) {\n preventCancel = false;\n }\n var reader = AcquireReadableStreamDefaultReader(stream);\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype);\n iterator._asyncIteratorReader = reader;\n iterator._preventCancel = Boolean(preventCancel);\n return iterator;\n }\n function IsReadableStreamAsyncIterator(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_asyncIteratorReader')) {\n return false;\n }\n return true;\n }\n function streamAsyncIteratorBrandCheckException(name) {\n return new TypeError(\"ReadableStreamAsyncIterator.\" + name + \" can only be used on a ReadableSteamAsyncIterator\");\n }\n function DequeueValue(container) {\n var pair = container._queue.shift();\n container._queueTotalSize -= pair.size;\n if (container._queueTotalSize < 0) {\n container._queueTotalSize = 0;\n }\n return pair.value;\n }\n function EnqueueValueWithSize(container, value, size) {\n size = Number(size);\n if (!IsFiniteNonNegativeNumber(size)) {\n throw new RangeError('Size must be a finite, non-NaN, non-negative number.');\n }\n container._queue.push({\n value: value,\n size: size\n });\n container._queueTotalSize += size;\n }\n function PeekQueueValue(container) {\n var pair = container._queue.peek();\n return pair.value;\n }\n function ResetQueue(container) {\n container._queue = new SimpleQueue();\n container._queueTotalSize = 0;\n }\n var AbortSteps = SymbolPolyfill('[[AbortSteps]]');\n var ErrorSteps = SymbolPolyfill('[[ErrorSteps]]');\n var WritableStream = function () {\n function WritableStream(underlyingSink, strategy) {\n if (underlyingSink === void 0) {\n underlyingSink = {};\n }\n if (strategy === void 0) {\n strategy = {};\n }\n InitializeWritableStream(this);\n var size = strategy.size;\n var highWaterMark = strategy.highWaterMark;\n var type = underlyingSink.type;\n if (type !== undefined) {\n throw new RangeError('Invalid type is specified');\n }\n var sizeAlgorithm = MakeSizeAlgorithmFromSizeFunction(size);\n if (highWaterMark === undefined) {\n highWaterMark = 1;\n }\n highWaterMark = ValidateAndNormalizeHighWaterMark(highWaterMark);\n SetUpWritableStreamDefaultControllerFromUnderlyingSink(this, underlyingSink, highWaterMark, sizeAlgorithm);\n }\n Object.defineProperty(WritableStream.prototype, \"locked\", {\n get: function () {\n if (IsWritableStream(this) === false) {\n throw streamBrandCheckException('locked');\n }\n return IsWritableStreamLocked(this);\n },\n enumerable: true,\n configurable: true\n });\n WritableStream.prototype.abort = function (reason) {\n if (IsWritableStream(this) === false) {\n return promiseRejectedWith(streamBrandCheckException('abort'));\n }\n if (IsWritableStreamLocked(this) === true) {\n return promiseRejectedWith(new TypeError('Cannot abort a stream that already has a writer'));\n }\n return WritableStreamAbort(this, reason);\n };\n WritableStream.prototype.close = function () {\n if (IsWritableStream(this) === false) {\n return promiseRejectedWith(streamBrandCheckException('close'));\n }\n if (IsWritableStreamLocked(this) === true) {\n return promiseRejectedWith(new TypeError('Cannot close a stream that already has a writer'));\n }\n if (WritableStreamCloseQueuedOrInFlight(this) === true) {\n return promiseRejectedWith(new TypeError('Cannot close an already-closing stream'));\n }\n return WritableStreamClose(this);\n };\n WritableStream.prototype.getWriter = function () {\n if (IsWritableStream(this) === false) {\n throw streamBrandCheckException('getWriter');\n }\n return AcquireWritableStreamDefaultWriter(this);\n };\n return WritableStream;\n }();\n function AcquireWritableStreamDefaultWriter(stream) {\n return new WritableStreamDefaultWriter(stream);\n }\n function CreateWritableStream(startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm) {\n if (highWaterMark === void 0) {\n highWaterMark = 1;\n }\n if (sizeAlgorithm === void 0) {\n sizeAlgorithm = function () {\n return 1;\n };\n }\n var stream = Object.create(WritableStream.prototype);\n InitializeWritableStream(stream);\n var controller = Object.create(WritableStreamDefaultController.prototype);\n SetUpWritableStreamDefaultController(stream, controller, startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm);\n return stream;\n }\n function InitializeWritableStream(stream) {\n stream._state = 'writable';\n stream._storedError = undefined;\n stream._writer = undefined;\n stream._writableStreamController = undefined;\n stream._writeRequests = new SimpleQueue();\n stream._inFlightWriteRequest = undefined;\n stream._closeRequest = undefined;\n stream._inFlightCloseRequest = undefined;\n stream._pendingAbortRequest = undefined;\n stream._backpressure = false;\n }\n function IsWritableStream(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_writableStreamController')) {\n return false;\n }\n return true;\n }\n function IsWritableStreamLocked(stream) {\n if (stream._writer === undefined) {\n return false;\n }\n return true;\n }\n function WritableStreamAbort(stream, reason) {\n var state = stream._state;\n if (state === 'closed' || state === 'errored') {\n return promiseResolvedWith(undefined);\n }\n if (stream._pendingAbortRequest !== undefined) {\n return stream._pendingAbortRequest._promise;\n }\n var wasAlreadyErroring = false;\n if (state === 'erroring') {\n wasAlreadyErroring = true;\n reason = undefined;\n }\n var promise = newPromise(function (resolve, reject) {\n stream._pendingAbortRequest = {\n _promise: undefined,\n _resolve: resolve,\n _reject: reject,\n _reason: reason,\n _wasAlreadyErroring: wasAlreadyErroring\n };\n });\n stream._pendingAbortRequest._promise = promise;\n if (wasAlreadyErroring === false) {\n WritableStreamStartErroring(stream, reason);\n }\n return promise;\n }\n function WritableStreamClose(stream) {\n var state = stream._state;\n if (state === 'closed' || state === 'errored') {\n return promiseRejectedWith(new TypeError(\"The stream (in \" + state + \" state) is not in the writable state and cannot be closed\"));\n }\n var promise = newPromise(function (resolve, reject) {\n var closeRequest = {\n _resolve: resolve,\n _reject: reject\n };\n stream._closeRequest = closeRequest;\n });\n var writer = stream._writer;\n if (writer !== undefined && stream._backpressure === true && state === 'writable') {\n defaultWriterReadyPromiseResolve(writer);\n }\n WritableStreamDefaultControllerClose(stream._writableStreamController);\n return promise;\n }\n function WritableStreamAddWriteRequest(stream) {\n var promise = newPromise(function (resolve, reject) {\n var writeRequest = {\n _resolve: resolve,\n _reject: reject\n };\n stream._writeRequests.push(writeRequest);\n });\n return promise;\n }\n function WritableStreamDealWithRejection(stream, error) {\n var state = stream._state;\n if (state === 'writable') {\n WritableStreamStartErroring(stream, error);\n return;\n }\n WritableStreamFinishErroring(stream);\n }\n function WritableStreamStartErroring(stream, reason) {\n var controller = stream._writableStreamController;\n stream._state = 'erroring';\n stream._storedError = reason;\n var writer = stream._writer;\n if (writer !== undefined) {\n WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, reason);\n }\n if (WritableStreamHasOperationMarkedInFlight(stream) === false && controller._started === true) {\n WritableStreamFinishErroring(stream);\n }\n }\n function WritableStreamFinishErroring(stream) {\n stream._state = 'errored';\n stream._writableStreamController[ErrorSteps]();\n var storedError = stream._storedError;\n stream._writeRequests.forEach(function (writeRequest) {\n writeRequest._reject(storedError);\n });\n stream._writeRequests = new SimpleQueue();\n if (stream._pendingAbortRequest === undefined) {\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n return;\n }\n var abortRequest = stream._pendingAbortRequest;\n stream._pendingAbortRequest = undefined;\n if (abortRequest._wasAlreadyErroring === true) {\n abortRequest._reject(storedError);\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n return;\n }\n var promise = stream._writableStreamController[AbortSteps](abortRequest._reason);\n uponPromise(promise, function () {\n abortRequest._resolve();\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n }, function (reason) {\n abortRequest._reject(reason);\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n });\n }\n function WritableStreamFinishInFlightWrite(stream) {\n stream._inFlightWriteRequest._resolve(undefined);\n stream._inFlightWriteRequest = undefined;\n }\n function WritableStreamFinishInFlightWriteWithError(stream, error) {\n stream._inFlightWriteRequest._reject(error);\n stream._inFlightWriteRequest = undefined;\n WritableStreamDealWithRejection(stream, error);\n }\n function WritableStreamFinishInFlightClose(stream) {\n stream._inFlightCloseRequest._resolve(undefined);\n stream._inFlightCloseRequest = undefined;\n var state = stream._state;\n if (state === 'erroring') {\n stream._storedError = undefined;\n if (stream._pendingAbortRequest !== undefined) {\n stream._pendingAbortRequest._resolve();\n stream._pendingAbortRequest = undefined;\n }\n }\n stream._state = 'closed';\n var writer = stream._writer;\n if (writer !== undefined) {\n defaultWriterClosedPromiseResolve(writer);\n }\n }\n function WritableStreamFinishInFlightCloseWithError(stream, error) {\n stream._inFlightCloseRequest._reject(error);\n stream._inFlightCloseRequest = undefined;\n if (stream._pendingAbortRequest !== undefined) {\n stream._pendingAbortRequest._reject(error);\n stream._pendingAbortRequest = undefined;\n }\n WritableStreamDealWithRejection(stream, error);\n }\n function WritableStreamCloseQueuedOrInFlight(stream) {\n if (stream._closeRequest === undefined && stream._inFlightCloseRequest === undefined) {\n return false;\n }\n return true;\n }\n function WritableStreamHasOperationMarkedInFlight(stream) {\n if (stream._inFlightWriteRequest === undefined && stream._inFlightCloseRequest === undefined) {\n return false;\n }\n return true;\n }\n function WritableStreamMarkCloseRequestInFlight(stream) {\n stream._inFlightCloseRequest = stream._closeRequest;\n stream._closeRequest = undefined;\n }\n function WritableStreamMarkFirstWriteRequestInFlight(stream) {\n stream._inFlightWriteRequest = stream._writeRequests.shift();\n }\n function WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream) {\n if (stream._closeRequest !== undefined) {\n stream._closeRequest._reject(stream._storedError);\n stream._closeRequest = undefined;\n }\n var writer = stream._writer;\n if (writer !== undefined) {\n defaultWriterClosedPromiseReject(writer, stream._storedError);\n }\n }\n function WritableStreamUpdateBackpressure(stream, backpressure) {\n var writer = stream._writer;\n if (writer !== undefined && backpressure !== stream._backpressure) {\n if (backpressure === true) {\n defaultWriterReadyPromiseReset(writer);\n } else {\n defaultWriterReadyPromiseResolve(writer);\n }\n }\n stream._backpressure = backpressure;\n }\n var WritableStreamDefaultWriter = function () {\n function WritableStreamDefaultWriter(stream) {\n if (IsWritableStream(stream) === false) {\n throw new TypeError('WritableStreamDefaultWriter can only be constructed with a WritableStream instance');\n }\n if (IsWritableStreamLocked(stream) === true) {\n throw new TypeError('This stream has already been locked for exclusive writing by another writer');\n }\n this._ownerWritableStream = stream;\n stream._writer = this;\n var state = stream._state;\n if (state === 'writable') {\n if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._backpressure === true) {\n defaultWriterReadyPromiseInitialize(this);\n } else {\n defaultWriterReadyPromiseInitializeAsResolved(this);\n }\n defaultWriterClosedPromiseInitialize(this);\n } else if (state === 'erroring') {\n defaultWriterReadyPromiseInitializeAsRejected(this, stream._storedError);\n defaultWriterClosedPromiseInitialize(this);\n } else if (state === 'closed') {\n defaultWriterReadyPromiseInitializeAsResolved(this);\n defaultWriterClosedPromiseInitializeAsResolved(this);\n } else {\n var storedError = stream._storedError;\n defaultWriterReadyPromiseInitializeAsRejected(this, storedError);\n defaultWriterClosedPromiseInitializeAsRejected(this, storedError);\n }\n }\n Object.defineProperty(WritableStreamDefaultWriter.prototype, \"closed\", {\n get: function () {\n if (IsWritableStreamDefaultWriter(this) === false) {\n return promiseRejectedWith(defaultWriterBrandCheckException('closed'));\n }\n return this._closedPromise;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(WritableStreamDefaultWriter.prototype, \"desiredSize\", {\n get: function () {\n if (IsWritableStreamDefaultWriter(this) === false) {\n throw defaultWriterBrandCheckException('desiredSize');\n }\n if (this._ownerWritableStream === undefined) {\n throw defaultWriterLockException('desiredSize');\n }\n return WritableStreamDefaultWriterGetDesiredSize(this);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(WritableStreamDefaultWriter.prototype, \"ready\", {\n get: function () {\n if (IsWritableStreamDefaultWriter(this) === false) {\n return promiseRejectedWith(defaultWriterBrandCheckException('ready'));\n }\n return this._readyPromise;\n },\n enumerable: true,\n configurable: true\n });\n WritableStreamDefaultWriter.prototype.abort = function (reason) {\n if (IsWritableStreamDefaultWriter(this) === false) {\n return promiseRejectedWith(defaultWriterBrandCheckException('abort'));\n }\n if (this._ownerWritableStream === undefined) {\n return promiseRejectedWith(defaultWriterLockException('abort'));\n }\n return WritableStreamDefaultWriterAbort(this, reason);\n };\n WritableStreamDefaultWriter.prototype.close = function () {\n if (IsWritableStreamDefaultWriter(this) === false) {\n return promiseRejectedWith(defaultWriterBrandCheckException('close'));\n }\n var stream = this._ownerWritableStream;\n if (stream === undefined) {\n return promiseRejectedWith(defaultWriterLockException('close'));\n }\n if (WritableStreamCloseQueuedOrInFlight(stream) === true) {\n return promiseRejectedWith(new TypeError('Cannot close an already-closing stream'));\n }\n return WritableStreamDefaultWriterClose(this);\n };\n WritableStreamDefaultWriter.prototype.releaseLock = function () {\n if (IsWritableStreamDefaultWriter(this) === false) {\n throw defaultWriterBrandCheckException('releaseLock');\n }\n var stream = this._ownerWritableStream;\n if (stream === undefined) {\n return;\n }\n WritableStreamDefaultWriterRelease(this);\n };\n WritableStreamDefaultWriter.prototype.write = function (chunk) {\n if (IsWritableStreamDefaultWriter(this) === false) {\n return promiseRejectedWith(defaultWriterBrandCheckException('write'));\n }\n if (this._ownerWritableStream === undefined) {\n return promiseRejectedWith(defaultWriterLockException('write to'));\n }\n return WritableStreamDefaultWriterWrite(this, chunk);\n };\n return WritableStreamDefaultWriter;\n }();\n function IsWritableStreamDefaultWriter(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_ownerWritableStream')) {\n return false;\n }\n return true;\n }\n function WritableStreamDefaultWriterAbort(writer, reason) {\n var stream = writer._ownerWritableStream;\n return WritableStreamAbort(stream, reason);\n }\n function WritableStreamDefaultWriterClose(writer) {\n var stream = writer._ownerWritableStream;\n return WritableStreamClose(stream);\n }\n function WritableStreamDefaultWriterCloseWithErrorPropagation(writer) {\n var stream = writer._ownerWritableStream;\n var state = stream._state;\n if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') {\n return promiseResolvedWith(undefined);\n }\n if (state === 'errored') {\n return promiseRejectedWith(stream._storedError);\n }\n return WritableStreamDefaultWriterClose(writer);\n }\n function WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, error) {\n if (writer._closedPromiseState === 'pending') {\n defaultWriterClosedPromiseReject(writer, error);\n } else {\n defaultWriterClosedPromiseResetToRejected(writer, error);\n }\n }\n function WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, error) {\n if (writer._readyPromiseState === 'pending') {\n defaultWriterReadyPromiseReject(writer, error);\n } else {\n defaultWriterReadyPromiseResetToRejected(writer, error);\n }\n }\n function WritableStreamDefaultWriterGetDesiredSize(writer) {\n var stream = writer._ownerWritableStream;\n var state = stream._state;\n if (state === 'errored' || state === 'erroring') {\n return null;\n }\n if (state === 'closed') {\n return 0;\n }\n return WritableStreamDefaultControllerGetDesiredSize(stream._writableStreamController);\n }\n function WritableStreamDefaultWriterRelease(writer) {\n var stream = writer._ownerWritableStream;\n var releasedError = new TypeError('Writer was released and can no longer be used to monitor the stream\\'s closedness');\n WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, releasedError);\n WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, releasedError);\n stream._writer = undefined;\n writer._ownerWritableStream = undefined;\n }\n function WritableStreamDefaultWriterWrite(writer, chunk) {\n var stream = writer._ownerWritableStream;\n var controller = stream._writableStreamController;\n var chunkSize = WritableStreamDefaultControllerGetChunkSize(controller, chunk);\n if (stream !== writer._ownerWritableStream) {\n return promiseRejectedWith(defaultWriterLockException('write to'));\n }\n var state = stream._state;\n if (state === 'errored') {\n return promiseRejectedWith(stream._storedError);\n }\n if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') {\n return promiseRejectedWith(new TypeError('The stream is closing or closed and cannot be written to'));\n }\n if (state === 'erroring') {\n return promiseRejectedWith(stream._storedError);\n }\n var promise = WritableStreamAddWriteRequest(stream);\n WritableStreamDefaultControllerWrite(controller, chunk, chunkSize);\n return promise;\n }\n var WritableStreamDefaultController = function () {\n function WritableStreamDefaultController() {\n throw new TypeError('WritableStreamDefaultController cannot be constructed explicitly');\n }\n WritableStreamDefaultController.prototype.error = function (e) {\n if (IsWritableStreamDefaultController(this) === false) {\n throw new TypeError('WritableStreamDefaultController.prototype.error can only be used on a WritableStreamDefaultController');\n }\n var state = this._controlledWritableStream._state;\n if (state !== 'writable') {\n return;\n }\n WritableStreamDefaultControllerError(this, e);\n };\n WritableStreamDefaultController.prototype[AbortSteps] = function (reason) {\n var result = this._abortAlgorithm(reason);\n WritableStreamDefaultControllerClearAlgorithms(this);\n return result;\n };\n WritableStreamDefaultController.prototype[ErrorSteps] = function () {\n ResetQueue(this);\n };\n return WritableStreamDefaultController;\n }();\n function IsWritableStreamDefaultController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_controlledWritableStream')) {\n return false;\n }\n return true;\n }\n function SetUpWritableStreamDefaultController(stream, controller, startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm) {\n controller._controlledWritableStream = stream;\n stream._writableStreamController = controller;\n controller._queue = undefined;\n controller._queueTotalSize = undefined;\n ResetQueue(controller);\n controller._started = false;\n controller._strategySizeAlgorithm = sizeAlgorithm;\n controller._strategyHWM = highWaterMark;\n controller._writeAlgorithm = writeAlgorithm;\n controller._closeAlgorithm = closeAlgorithm;\n controller._abortAlgorithm = abortAlgorithm;\n var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n WritableStreamUpdateBackpressure(stream, backpressure);\n var startResult = startAlgorithm();\n var startPromise = promiseResolvedWith(startResult);\n uponPromise(startPromise, function () {\n controller._started = true;\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n }, function (r) {\n controller._started = true;\n WritableStreamDealWithRejection(stream, r);\n });\n }\n function SetUpWritableStreamDefaultControllerFromUnderlyingSink(stream, underlyingSink, highWaterMark, sizeAlgorithm) {\n var controller = Object.create(WritableStreamDefaultController.prototype);\n function startAlgorithm() {\n return InvokeOrNoop(underlyingSink, 'start', [controller]);\n }\n var writeAlgorithm = CreateAlgorithmFromUnderlyingMethod(underlyingSink, 'write', 1, [controller]);\n var closeAlgorithm = CreateAlgorithmFromUnderlyingMethod(underlyingSink, 'close', 0, []);\n var abortAlgorithm = CreateAlgorithmFromUnderlyingMethod(underlyingSink, 'abort', 1, []);\n SetUpWritableStreamDefaultController(stream, controller, startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm);\n }\n function WritableStreamDefaultControllerClearAlgorithms(controller) {\n controller._writeAlgorithm = undefined;\n controller._closeAlgorithm = undefined;\n controller._abortAlgorithm = undefined;\n controller._strategySizeAlgorithm = undefined;\n }\n function WritableStreamDefaultControllerClose(controller) {\n EnqueueValueWithSize(controller, 'close', 0);\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n }\n function WritableStreamDefaultControllerGetChunkSize(controller, chunk) {\n try {\n return controller._strategySizeAlgorithm(chunk);\n } catch (chunkSizeE) {\n WritableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE);\n return 1;\n }\n }\n function WritableStreamDefaultControllerGetDesiredSize(controller) {\n return controller._strategyHWM - controller._queueTotalSize;\n }\n function WritableStreamDefaultControllerWrite(controller, chunk, chunkSize) {\n var writeRecord = { chunk: chunk };\n try {\n EnqueueValueWithSize(controller, writeRecord, chunkSize);\n } catch (enqueueE) {\n WritableStreamDefaultControllerErrorIfNeeded(controller, enqueueE);\n return;\n }\n var stream = controller._controlledWritableStream;\n if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._state === 'writable') {\n var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n WritableStreamUpdateBackpressure(stream, backpressure);\n }\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n }\n function WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller) {\n var stream = controller._controlledWritableStream;\n if (controller._started === false) {\n return;\n }\n if (stream._inFlightWriteRequest !== undefined) {\n return;\n }\n var state = stream._state;\n if (state === 'erroring') {\n WritableStreamFinishErroring(stream);\n return;\n }\n if (controller._queue.length === 0) {\n return;\n }\n var writeRecord = PeekQueueValue(controller);\n if (writeRecord === 'close') {\n WritableStreamDefaultControllerProcessClose(controller);\n } else {\n WritableStreamDefaultControllerProcessWrite(controller, writeRecord.chunk);\n }\n }\n function WritableStreamDefaultControllerErrorIfNeeded(controller, error) {\n if (controller._controlledWritableStream._state === 'writable') {\n WritableStreamDefaultControllerError(controller, error);\n }\n }\n function WritableStreamDefaultControllerProcessClose(controller) {\n var stream = controller._controlledWritableStream;\n WritableStreamMarkCloseRequestInFlight(stream);\n DequeueValue(controller);\n var sinkClosePromise = controller._closeAlgorithm();\n WritableStreamDefaultControllerClearAlgorithms(controller);\n uponPromise(sinkClosePromise, function () {\n WritableStreamFinishInFlightClose(stream);\n }, function (reason) {\n WritableStreamFinishInFlightCloseWithError(stream, reason);\n });\n }\n function WritableStreamDefaultControllerProcessWrite(controller, chunk) {\n var stream = controller._controlledWritableStream;\n WritableStreamMarkFirstWriteRequestInFlight(stream);\n var sinkWritePromise = controller._writeAlgorithm(chunk);\n uponPromise(sinkWritePromise, function () {\n WritableStreamFinishInFlightWrite(stream);\n var state = stream._state;\n DequeueValue(controller);\n if (WritableStreamCloseQueuedOrInFlight(stream) === false && state === 'writable') {\n var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n WritableStreamUpdateBackpressure(stream, backpressure);\n }\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n }, function (reason) {\n if (stream._state === 'writable') {\n WritableStreamDefaultControllerClearAlgorithms(controller);\n }\n WritableStreamFinishInFlightWriteWithError(stream, reason);\n });\n }\n function WritableStreamDefaultControllerGetBackpressure(controller) {\n var desiredSize = WritableStreamDefaultControllerGetDesiredSize(controller);\n return desiredSize <= 0;\n }\n function WritableStreamDefaultControllerError(controller, error) {\n var stream = controller._controlledWritableStream;\n WritableStreamDefaultControllerClearAlgorithms(controller);\n WritableStreamStartErroring(stream, error);\n }\n function streamBrandCheckException(name) {\n return new TypeError(\"WritableStream.prototype.\" + name + \" can only be used on a WritableStream\");\n }\n function defaultWriterBrandCheckException(name) {\n return new TypeError(\"WritableStreamDefaultWriter.prototype.\" + name + \" can only be used on a WritableStreamDefaultWriter\");\n }\n function defaultWriterLockException(name) {\n return new TypeError('Cannot ' + name + ' a stream using a released writer');\n }\n function defaultWriterClosedPromiseInitialize(writer) {\n writer._closedPromise = newPromise(function (resolve, reject) {\n writer._closedPromise_resolve = resolve;\n writer._closedPromise_reject = reject;\n writer._closedPromiseState = 'pending';\n });\n }\n function defaultWriterClosedPromiseInitializeAsRejected(writer, reason) {\n defaultWriterClosedPromiseInitialize(writer);\n defaultWriterClosedPromiseReject(writer, reason);\n }\n function defaultWriterClosedPromiseInitializeAsResolved(writer) {\n defaultWriterClosedPromiseInitialize(writer);\n defaultWriterClosedPromiseResolve(writer);\n }\n function defaultWriterClosedPromiseReject(writer, reason) {\n setPromiseIsHandledToTrue(writer._closedPromise);\n writer._closedPromise_reject(reason);\n writer._closedPromise_resolve = undefined;\n writer._closedPromise_reject = undefined;\n writer._closedPromiseState = 'rejected';\n }\n function defaultWriterClosedPromiseResetToRejected(writer, reason) {\n defaultWriterClosedPromiseInitializeAsRejected(writer, reason);\n }\n function defaultWriterClosedPromiseResolve(writer) {\n writer._closedPromise_resolve(undefined);\n writer._closedPromise_resolve = undefined;\n writer._closedPromise_reject = undefined;\n writer._closedPromiseState = 'resolved';\n }\n function defaultWriterReadyPromiseInitialize(writer) {\n writer._readyPromise = newPromise(function (resolve, reject) {\n writer._readyPromise_resolve = resolve;\n writer._readyPromise_reject = reject;\n });\n writer._readyPromiseState = 'pending';\n }\n function defaultWriterReadyPromiseInitializeAsRejected(writer, reason) {\n defaultWriterReadyPromiseInitialize(writer);\n defaultWriterReadyPromiseReject(writer, reason);\n }\n function defaultWriterReadyPromiseInitializeAsResolved(writer) {\n defaultWriterReadyPromiseInitialize(writer);\n defaultWriterReadyPromiseResolve(writer);\n }\n function defaultWriterReadyPromiseReject(writer, reason) {\n setPromiseIsHandledToTrue(writer._readyPromise);\n writer._readyPromise_reject(reason);\n writer._readyPromise_resolve = undefined;\n writer._readyPromise_reject = undefined;\n writer._readyPromiseState = 'rejected';\n }\n function defaultWriterReadyPromiseReset(writer) {\n defaultWriterReadyPromiseInitialize(writer);\n }\n function defaultWriterReadyPromiseResetToRejected(writer, reason) {\n defaultWriterReadyPromiseInitializeAsRejected(writer, reason);\n }\n function defaultWriterReadyPromiseResolve(writer) {\n writer._readyPromise_resolve(undefined);\n writer._readyPromise_resolve = undefined;\n writer._readyPromise_reject = undefined;\n writer._readyPromiseState = 'fulfilled';\n }\n function isAbortSignal(value) {\n if (typeof value !== 'object' || value === null) {\n return false;\n }\n try {\n return typeof value.aborted === 'boolean';\n } catch (_a) {\n return false;\n }\n }\n var NativeDOMException = typeof DOMException !== 'undefined' ? DOMException : undefined;\n function isDOMExceptionConstructor(ctor) {\n if (!(typeof ctor === 'function' || typeof ctor === 'object')) {\n return false;\n }\n try {\n new ctor();\n return true;\n } catch (_a) {\n return false;\n }\n }\n function createDOMExceptionPolyfill() {\n var ctor = function DOMException(message, name) {\n this.message = message || '';\n this.name = name || 'Error';\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n };\n ctor.prototype = Object.create(Error.prototype);\n Object.defineProperty(ctor.prototype, 'constructor', {\n value: ctor,\n writable: true,\n configurable: true\n });\n return ctor;\n }\n var DOMException$1 = isDOMExceptionConstructor(NativeDOMException) ? NativeDOMException : createDOMExceptionPolyfill();\n function ReadableStreamPipeTo(source, dest, preventClose, preventAbort, preventCancel, signal) {\n var reader = AcquireReadableStreamDefaultReader(source);\n var writer = AcquireWritableStreamDefaultWriter(dest);\n source._disturbed = true;\n var shuttingDown = false;\n var currentWrite = promiseResolvedWith(undefined);\n return newPromise(function (resolve, reject) {\n var abortAlgorithm;\n if (signal !== undefined) {\n abortAlgorithm = function () {\n var error = new DOMException$1('Aborted', 'AbortError');\n var actions = [];\n if (preventAbort === false) {\n actions.push(function () {\n if (dest._state === 'writable') {\n return WritableStreamAbort(dest, error);\n }\n return promiseResolvedWith(undefined);\n });\n }\n if (preventCancel === false) {\n actions.push(function () {\n if (source._state === 'readable') {\n return ReadableStreamCancel(source, error);\n }\n return promiseResolvedWith(undefined);\n });\n }\n shutdownWithAction(function () {\n return Promise.all(actions.map(function (action) {\n return action();\n }));\n }, true, error);\n };\n if (signal.aborted === true) {\n abortAlgorithm();\n return;\n }\n signal.addEventListener('abort', abortAlgorithm);\n }\n function pipeLoop() {\n return newPromise(function (resolveLoop, rejectLoop) {\n function next(done) {\n if (done) {\n resolveLoop();\n } else {\n PerformPromiseThen(pipeStep(), next, rejectLoop);\n }\n }\n next(false);\n });\n }\n function pipeStep() {\n if (shuttingDown === true) {\n return promiseResolvedWith(true);\n }\n return PerformPromiseThen(writer._readyPromise, function () {\n return PerformPromiseThen(ReadableStreamDefaultReaderRead(reader), function (result) {\n if (result.done === true) {\n return true;\n }\n currentWrite = PerformPromiseThen(WritableStreamDefaultWriterWrite(writer, result.value), undefined, noop);\n return false;\n });\n });\n }\n isOrBecomesErrored(source, reader._closedPromise, function (storedError) {\n if (preventAbort === false) {\n shutdownWithAction(function () {\n return WritableStreamAbort(dest, storedError);\n }, true, storedError);\n } else {\n shutdown(true, storedError);\n }\n });\n isOrBecomesErrored(dest, writer._closedPromise, function (storedError) {\n if (preventCancel === false) {\n shutdownWithAction(function () {\n return ReadableStreamCancel(source, storedError);\n }, true, storedError);\n } else {\n shutdown(true, storedError);\n }\n });\n isOrBecomesClosed(source, reader._closedPromise, function () {\n if (preventClose === false) {\n shutdownWithAction(function () {\n return WritableStreamDefaultWriterCloseWithErrorPropagation(writer);\n });\n } else {\n shutdown();\n }\n });\n if (WritableStreamCloseQueuedOrInFlight(dest) === true || dest._state === 'closed') {\n var destClosed_1 = new TypeError('the destination writable stream closed before all data could be piped to it');\n if (preventCancel === false) {\n shutdownWithAction(function () {\n return ReadableStreamCancel(source, destClosed_1);\n }, true, destClosed_1);\n } else {\n shutdown(true, destClosed_1);\n }\n }\n setPromiseIsHandledToTrue(pipeLoop());\n function waitForWritesToFinish() {\n var oldCurrentWrite = currentWrite;\n return PerformPromiseThen(currentWrite, function () {\n return oldCurrentWrite !== currentWrite ? waitForWritesToFinish() : undefined;\n });\n }\n function isOrBecomesErrored(stream, promise, action) {\n if (stream._state === 'errored') {\n action(stream._storedError);\n } else {\n uponRejection(promise, action);\n }\n }\n function isOrBecomesClosed(stream, promise, action) {\n if (stream._state === 'closed') {\n action();\n } else {\n uponFulfillment(promise, action);\n }\n }\n function shutdownWithAction(action, originalIsError, originalError) {\n if (shuttingDown === true) {\n return;\n }\n shuttingDown = true;\n if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) {\n uponFulfillment(waitForWritesToFinish(), doTheRest);\n } else {\n doTheRest();\n }\n function doTheRest() {\n uponPromise(action(), function () {\n return finalize(originalIsError, originalError);\n }, function (newError) {\n return finalize(true, newError);\n });\n }\n }\n function shutdown(isError, error) {\n if (shuttingDown === true) {\n return;\n }\n shuttingDown = true;\n if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) {\n uponFulfillment(waitForWritesToFinish(), function () {\n return finalize(isError, error);\n });\n } else {\n finalize(isError, error);\n }\n }\n function finalize(isError, error) {\n WritableStreamDefaultWriterRelease(writer);\n ReadableStreamReaderGenericRelease(reader);\n if (signal !== undefined) {\n signal.removeEventListener('abort', abortAlgorithm);\n }\n if (isError) {\n reject(error);\n } else {\n resolve(undefined);\n }\n }\n });\n }\n var ReadableStreamDefaultController = function () {\n function ReadableStreamDefaultController() {\n throw new TypeError();\n }\n Object.defineProperty(ReadableStreamDefaultController.prototype, \"desiredSize\", {\n get: function () {\n if (IsReadableStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('desiredSize');\n }\n return ReadableStreamDefaultControllerGetDesiredSize(this);\n },\n enumerable: true,\n configurable: true\n });\n ReadableStreamDefaultController.prototype.close = function () {\n if (IsReadableStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('close');\n }\n if (ReadableStreamDefaultControllerCanCloseOrEnqueue(this) === false) {\n throw new TypeError('The stream is not in a state that permits close');\n }\n ReadableStreamDefaultControllerClose(this);\n };\n ReadableStreamDefaultController.prototype.enqueue = function (chunk) {\n if (IsReadableStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('enqueue');\n }\n if (ReadableStreamDefaultControllerCanCloseOrEnqueue(this) === false) {\n throw new TypeError('The stream is not in a state that permits enqueue');\n }\n return ReadableStreamDefaultControllerEnqueue(this, chunk);\n };\n ReadableStreamDefaultController.prototype.error = function (e) {\n if (IsReadableStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('error');\n }\n ReadableStreamDefaultControllerError(this, e);\n };\n ReadableStreamDefaultController.prototype[CancelSteps] = function (reason) {\n ResetQueue(this);\n var result = this._cancelAlgorithm(reason);\n ReadableStreamDefaultControllerClearAlgorithms(this);\n return result;\n };\n ReadableStreamDefaultController.prototype[PullSteps] = function () {\n var stream = this._controlledReadableStream;\n if (this._queue.length > 0) {\n var chunk = DequeueValue(this);\n if (this._closeRequested === true && this._queue.length === 0) {\n ReadableStreamDefaultControllerClearAlgorithms(this);\n ReadableStreamClose(stream);\n } else {\n ReadableStreamDefaultControllerCallPullIfNeeded(this);\n }\n return promiseResolvedWith(ReadableStreamCreateReadResult(chunk, false, stream._reader._forAuthorCode));\n }\n var pendingPromise = ReadableStreamAddReadRequest(stream);\n ReadableStreamDefaultControllerCallPullIfNeeded(this);\n return pendingPromise;\n };\n return ReadableStreamDefaultController;\n }();\n function IsReadableStreamDefaultController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_controlledReadableStream')) {\n return false;\n }\n return true;\n }\n function ReadableStreamDefaultControllerCallPullIfNeeded(controller) {\n var shouldPull = ReadableStreamDefaultControllerShouldCallPull(controller);\n if (shouldPull === false) {\n return;\n }\n if (controller._pulling === true) {\n controller._pullAgain = true;\n return;\n }\n controller._pulling = true;\n var pullPromise = controller._pullAlgorithm();\n uponPromise(pullPromise, function () {\n controller._pulling = false;\n if (controller._pullAgain === true) {\n controller._pullAgain = false;\n ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n }\n }, function (e) {\n ReadableStreamDefaultControllerError(controller, e);\n });\n }\n function ReadableStreamDefaultControllerShouldCallPull(controller) {\n var stream = controller._controlledReadableStream;\n if (ReadableStreamDefaultControllerCanCloseOrEnqueue(controller) === false) {\n return false;\n }\n if (controller._started === false) {\n return false;\n }\n if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {\n return true;\n }\n var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller);\n if (desiredSize > 0) {\n return true;\n }\n return false;\n }\n function ReadableStreamDefaultControllerClearAlgorithms(controller) {\n controller._pullAlgorithm = undefined;\n controller._cancelAlgorithm = undefined;\n controller._strategySizeAlgorithm = undefined;\n }\n function ReadableStreamDefaultControllerClose(controller) {\n var stream = controller._controlledReadableStream;\n controller._closeRequested = true;\n if (controller._queue.length === 0) {\n ReadableStreamDefaultControllerClearAlgorithms(controller);\n ReadableStreamClose(stream);\n }\n }\n function ReadableStreamDefaultControllerEnqueue(controller, chunk) {\n var stream = controller._controlledReadableStream;\n if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {\n ReadableStreamFulfillReadRequest(stream, chunk, false);\n } else {\n var chunkSize = void 0;\n try {\n chunkSize = controller._strategySizeAlgorithm(chunk);\n } catch (chunkSizeE) {\n ReadableStreamDefaultControllerError(controller, chunkSizeE);\n throw chunkSizeE;\n }\n try {\n EnqueueValueWithSize(controller, chunk, chunkSize);\n } catch (enqueueE) {\n ReadableStreamDefaultControllerError(controller, enqueueE);\n throw enqueueE;\n }\n }\n ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n }\n function ReadableStreamDefaultControllerError(controller, e) {\n var stream = controller._controlledReadableStream;\n if (stream._state !== 'readable') {\n return;\n }\n ResetQueue(controller);\n ReadableStreamDefaultControllerClearAlgorithms(controller);\n ReadableStreamError(stream, e);\n }\n function ReadableStreamDefaultControllerGetDesiredSize(controller) {\n var stream = controller._controlledReadableStream;\n var state = stream._state;\n if (state === 'errored') {\n return null;\n }\n if (state === 'closed') {\n return 0;\n }\n return controller._strategyHWM - controller._queueTotalSize;\n }\n function ReadableStreamDefaultControllerHasBackpressure(controller) {\n if (ReadableStreamDefaultControllerShouldCallPull(controller) === true) {\n return false;\n }\n return true;\n }\n function ReadableStreamDefaultControllerCanCloseOrEnqueue(controller) {\n var state = controller._controlledReadableStream._state;\n if (controller._closeRequested === false && state === 'readable') {\n return true;\n }\n return false;\n }\n function SetUpReadableStreamDefaultController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm) {\n controller._controlledReadableStream = stream;\n controller._queue = undefined;\n controller._queueTotalSize = undefined;\n ResetQueue(controller);\n controller._started = false;\n controller._closeRequested = false;\n controller._pullAgain = false;\n controller._pulling = false;\n controller._strategySizeAlgorithm = sizeAlgorithm;\n controller._strategyHWM = highWaterMark;\n controller._pullAlgorithm = pullAlgorithm;\n controller._cancelAlgorithm = cancelAlgorithm;\n stream._readableStreamController = controller;\n var startResult = startAlgorithm();\n uponPromise(promiseResolvedWith(startResult), function () {\n controller._started = true;\n ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n }, function (r) {\n ReadableStreamDefaultControllerError(controller, r);\n });\n }\n function SetUpReadableStreamDefaultControllerFromUnderlyingSource(stream, underlyingSource, highWaterMark, sizeAlgorithm) {\n var controller = Object.create(ReadableStreamDefaultController.prototype);\n function startAlgorithm() {\n return InvokeOrNoop(underlyingSource, 'start', [controller]);\n }\n var pullAlgorithm = CreateAlgorithmFromUnderlyingMethod(underlyingSource, 'pull', 0, [controller]);\n var cancelAlgorithm = CreateAlgorithmFromUnderlyingMethod(underlyingSource, 'cancel', 1, []);\n SetUpReadableStreamDefaultController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm);\n }\n function defaultControllerBrandCheckException(name) {\n return new TypeError(\"ReadableStreamDefaultController.prototype.\" + name + \" can only be used on a ReadableStreamDefaultController\");\n }\n function ReadableStreamTee(stream, cloneForBranch2) {\n var reader = AcquireReadableStreamDefaultReader(stream);\n var reading = false;\n var canceled1 = false;\n var canceled2 = false;\n var reason1;\n var reason2;\n var branch1;\n var branch2;\n var resolveCancelPromise;\n var cancelPromise = newPromise(function (resolve) {\n resolveCancelPromise = resolve;\n });\n function pullAlgorithm() {\n if (reading === true) {\n return promiseResolvedWith(undefined);\n }\n reading = true;\n var readPromise = transformPromiseWith(ReadableStreamDefaultReaderRead(reader), function (result) {\n reading = false;\n var done = result.done;\n if (done === true) {\n if (canceled1 === false) {\n ReadableStreamDefaultControllerClose(branch1._readableStreamController);\n }\n if (canceled2 === false) {\n ReadableStreamDefaultControllerClose(branch2._readableStreamController);\n }\n return;\n }\n var value = result.value;\n var value1 = value;\n var value2 = value;\n if (canceled1 === false) {\n ReadableStreamDefaultControllerEnqueue(branch1._readableStreamController, value1);\n }\n if (canceled2 === false) {\n ReadableStreamDefaultControllerEnqueue(branch2._readableStreamController, value2);\n }\n });\n setPromiseIsHandledToTrue(readPromise);\n return promiseResolvedWith(undefined);\n }\n function cancel1Algorithm(reason) {\n canceled1 = true;\n reason1 = reason;\n if (canceled2 === true) {\n var compositeReason = createArrayFromList([\n reason1,\n reason2\n ]);\n var cancelResult = ReadableStreamCancel(stream, compositeReason);\n resolveCancelPromise(cancelResult);\n }\n return cancelPromise;\n }\n function cancel2Algorithm(reason) {\n canceled2 = true;\n reason2 = reason;\n if (canceled1 === true) {\n var compositeReason = createArrayFromList([\n reason1,\n reason2\n ]);\n var cancelResult = ReadableStreamCancel(stream, compositeReason);\n resolveCancelPromise(cancelResult);\n }\n return cancelPromise;\n }\n function startAlgorithm() {\n }\n branch1 = CreateReadableStream(startAlgorithm, pullAlgorithm, cancel1Algorithm);\n branch2 = CreateReadableStream(startAlgorithm, pullAlgorithm, cancel2Algorithm);\n uponRejection(reader._closedPromise, function (r) {\n ReadableStreamDefaultControllerError(branch1._readableStreamController, r);\n ReadableStreamDefaultControllerError(branch2._readableStreamController, r);\n });\n return [\n branch1,\n branch2\n ];\n }\n var NumberIsInteger = Number.isInteger || function (value) {\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n };\n var ReadableStreamBYOBRequest = function () {\n function ReadableStreamBYOBRequest() {\n throw new TypeError('ReadableStreamBYOBRequest cannot be used directly');\n }\n Object.defineProperty(ReadableStreamBYOBRequest.prototype, \"view\", {\n get: function () {\n if (IsReadableStreamBYOBRequest(this) === false) {\n throw byobRequestBrandCheckException('view');\n }\n return this._view;\n },\n enumerable: true,\n configurable: true\n });\n ReadableStreamBYOBRequest.prototype.respond = function (bytesWritten) {\n if (IsReadableStreamBYOBRequest(this) === false) {\n throw byobRequestBrandCheckException('respond');\n }\n if (this._associatedReadableByteStreamController === undefined) {\n throw new TypeError('This BYOB request has been invalidated');\n }\n if (IsDetachedBuffer(this._view.buffer) === true);\n ReadableByteStreamControllerRespond(this._associatedReadableByteStreamController, bytesWritten);\n };\n ReadableStreamBYOBRequest.prototype.respondWithNewView = function (view) {\n if (IsReadableStreamBYOBRequest(this) === false) {\n throw byobRequestBrandCheckException('respond');\n }\n if (this._associatedReadableByteStreamController === undefined) {\n throw new TypeError('This BYOB request has been invalidated');\n }\n if (!ArrayBuffer.isView(view)) {\n throw new TypeError('You can only respond with array buffer views');\n }\n if (IsDetachedBuffer(view.buffer) === true);\n ReadableByteStreamControllerRespondWithNewView(this._associatedReadableByteStreamController, view);\n };\n return ReadableStreamBYOBRequest;\n }();\n var ReadableByteStreamController = function () {\n function ReadableByteStreamController() {\n throw new TypeError('ReadableByteStreamController constructor cannot be used directly');\n }\n Object.defineProperty(ReadableByteStreamController.prototype, \"byobRequest\", {\n get: function () {\n if (IsReadableByteStreamController(this) === false) {\n throw byteStreamControllerBrandCheckException('byobRequest');\n }\n if (this._byobRequest === undefined && this._pendingPullIntos.length > 0) {\n var firstDescriptor = this._pendingPullIntos.peek();\n var view = new Uint8Array(firstDescriptor.buffer, firstDescriptor.byteOffset + firstDescriptor.bytesFilled, firstDescriptor.byteLength - firstDescriptor.bytesFilled);\n var byobRequest = Object.create(ReadableStreamBYOBRequest.prototype);\n SetUpReadableStreamBYOBRequest(byobRequest, this, view);\n this._byobRequest = byobRequest;\n }\n return this._byobRequest;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ReadableByteStreamController.prototype, \"desiredSize\", {\n get: function () {\n if (IsReadableByteStreamController(this) === false) {\n throw byteStreamControllerBrandCheckException('desiredSize');\n }\n return ReadableByteStreamControllerGetDesiredSize(this);\n },\n enumerable: true,\n configurable: true\n });\n ReadableByteStreamController.prototype.close = function () {\n if (IsReadableByteStreamController(this) === false) {\n throw byteStreamControllerBrandCheckException('close');\n }\n if (this._closeRequested === true) {\n throw new TypeError('The stream has already been closed; do not close it again!');\n }\n var state = this._controlledReadableByteStream._state;\n if (state !== 'readable') {\n throw new TypeError(\"The stream (in \" + state + \" state) is not in the readable state and cannot be closed\");\n }\n ReadableByteStreamControllerClose(this);\n };\n ReadableByteStreamController.prototype.enqueue = function (chunk) {\n if (IsReadableByteStreamController(this) === false) {\n throw byteStreamControllerBrandCheckException('enqueue');\n }\n if (this._closeRequested === true) {\n throw new TypeError('stream is closed or draining');\n }\n var state = this._controlledReadableByteStream._state;\n if (state !== 'readable') {\n throw new TypeError(\"The stream (in \" + state + \" state) is not in the readable state and cannot be enqueued to\");\n }\n if (!ArrayBuffer.isView(chunk)) {\n throw new TypeError('You can only enqueue array buffer views when using a ReadableByteStreamController');\n }\n if (IsDetachedBuffer(chunk.buffer) === true);\n ReadableByteStreamControllerEnqueue(this, chunk);\n };\n ReadableByteStreamController.prototype.error = function (e) {\n if (IsReadableByteStreamController(this) === false) {\n throw byteStreamControllerBrandCheckException('error');\n }\n ReadableByteStreamControllerError(this, e);\n };\n ReadableByteStreamController.prototype[CancelSteps] = function (reason) {\n if (this._pendingPullIntos.length > 0) {\n var firstDescriptor = this._pendingPullIntos.peek();\n firstDescriptor.bytesFilled = 0;\n }\n ResetQueue(this);\n var result = this._cancelAlgorithm(reason);\n ReadableByteStreamControllerClearAlgorithms(this);\n return result;\n };\n ReadableByteStreamController.prototype[PullSteps] = function () {\n var stream = this._controlledReadableByteStream;\n if (this._queueTotalSize > 0) {\n var entry = this._queue.shift();\n this._queueTotalSize -= entry.byteLength;\n ReadableByteStreamControllerHandleQueueDrain(this);\n var view = void 0;\n try {\n view = new Uint8Array(entry.buffer, entry.byteOffset, entry.byteLength);\n } catch (viewE) {\n return promiseRejectedWith(viewE);\n }\n return promiseResolvedWith(ReadableStreamCreateReadResult(view, false, stream._reader._forAuthorCode));\n }\n var autoAllocateChunkSize = this._autoAllocateChunkSize;\n if (autoAllocateChunkSize !== undefined) {\n var buffer = void 0;\n try {\n buffer = new ArrayBuffer(autoAllocateChunkSize);\n } catch (bufferE) {\n return promiseRejectedWith(bufferE);\n }\n var pullIntoDescriptor = {\n buffer: buffer,\n byteOffset: 0,\n byteLength: autoAllocateChunkSize,\n bytesFilled: 0,\n elementSize: 1,\n ctor: Uint8Array,\n readerType: 'default'\n };\n this._pendingPullIntos.push(pullIntoDescriptor);\n }\n var promise = ReadableStreamAddReadRequest(stream);\n ReadableByteStreamControllerCallPullIfNeeded(this);\n return promise;\n };\n return ReadableByteStreamController;\n }();\n function IsReadableByteStreamController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_controlledReadableByteStream')) {\n return false;\n }\n return true;\n }\n function IsReadableStreamBYOBRequest(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_associatedReadableByteStreamController')) {\n return false;\n }\n return true;\n }\n function ReadableByteStreamControllerCallPullIfNeeded(controller) {\n var shouldPull = ReadableByteStreamControllerShouldCallPull(controller);\n if (shouldPull === false) {\n return;\n }\n if (controller._pulling === true) {\n controller._pullAgain = true;\n return;\n }\n controller._pulling = true;\n var pullPromise = controller._pullAlgorithm();\n uponPromise(pullPromise, function () {\n controller._pulling = false;\n if (controller._pullAgain === true) {\n controller._pullAgain = false;\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }\n }, function (e) {\n ReadableByteStreamControllerError(controller, e);\n });\n }\n function ReadableByteStreamControllerClearPendingPullIntos(controller) {\n ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n controller._pendingPullIntos = new SimpleQueue();\n }\n function ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor) {\n var done = false;\n if (stream._state === 'closed') {\n done = true;\n }\n var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);\n if (pullIntoDescriptor.readerType === 'default') {\n ReadableStreamFulfillReadRequest(stream, filledView, done);\n } else {\n ReadableStreamFulfillReadIntoRequest(stream, filledView, done);\n }\n }\n function ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor) {\n var bytesFilled = pullIntoDescriptor.bytesFilled;\n var elementSize = pullIntoDescriptor.elementSize;\n return new pullIntoDescriptor.ctor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, bytesFilled / elementSize);\n }\n function ReadableByteStreamControllerEnqueueChunkToQueue(controller, buffer, byteOffset, byteLength) {\n controller._queue.push({\n buffer: buffer,\n byteOffset: byteOffset,\n byteLength: byteLength\n });\n controller._queueTotalSize += byteLength;\n }\n function ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) {\n var elementSize = pullIntoDescriptor.elementSize;\n var currentAlignedBytes = pullIntoDescriptor.bytesFilled - pullIntoDescriptor.bytesFilled % elementSize;\n var maxBytesToCopy = Math.min(controller._queueTotalSize, pullIntoDescriptor.byteLength - pullIntoDescriptor.bytesFilled);\n var maxBytesFilled = pullIntoDescriptor.bytesFilled + maxBytesToCopy;\n var maxAlignedBytes = maxBytesFilled - maxBytesFilled % elementSize;\n var totalBytesToCopyRemaining = maxBytesToCopy;\n var ready = false;\n if (maxAlignedBytes > currentAlignedBytes) {\n totalBytesToCopyRemaining = maxAlignedBytes - pullIntoDescriptor.bytesFilled;\n ready = true;\n }\n var queue = controller._queue;\n while (totalBytesToCopyRemaining > 0) {\n var headOfQueue = queue.peek();\n var bytesToCopy = Math.min(totalBytesToCopyRemaining, headOfQueue.byteLength);\n var destStart = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;\n ArrayBufferCopy(pullIntoDescriptor.buffer, destStart, headOfQueue.buffer, headOfQueue.byteOffset, bytesToCopy);\n if (headOfQueue.byteLength === bytesToCopy) {\n queue.shift();\n } else {\n headOfQueue.byteOffset += bytesToCopy;\n headOfQueue.byteLength -= bytesToCopy;\n }\n controller._queueTotalSize -= bytesToCopy;\n ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesToCopy, pullIntoDescriptor);\n totalBytesToCopyRemaining -= bytesToCopy;\n }\n return ready;\n }\n function ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, size, pullIntoDescriptor) {\n ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n pullIntoDescriptor.bytesFilled += size;\n }\n function ReadableByteStreamControllerHandleQueueDrain(controller) {\n if (controller._queueTotalSize === 0 && controller._closeRequested === true) {\n ReadableByteStreamControllerClearAlgorithms(controller);\n ReadableStreamClose(controller._controlledReadableByteStream);\n } else {\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }\n }\n function ReadableByteStreamControllerInvalidateBYOBRequest(controller) {\n if (controller._byobRequest === undefined) {\n return;\n }\n controller._byobRequest._associatedReadableByteStreamController = undefined;\n controller._byobRequest._view = undefined;\n controller._byobRequest = undefined;\n }\n function ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller) {\n while (controller._pendingPullIntos.length > 0) {\n if (controller._queueTotalSize === 0) {\n return;\n }\n var pullIntoDescriptor = controller._pendingPullIntos.peek();\n if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) {\n ReadableByteStreamControllerShiftPendingPullInto(controller);\n ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableByteStream, pullIntoDescriptor);\n }\n }\n }\n function ReadableByteStreamControllerPullInto(controller, view) {\n var stream = controller._controlledReadableByteStream;\n var elementSize = 1;\n if (view.constructor !== DataView) {\n elementSize = view.constructor.BYTES_PER_ELEMENT;\n }\n var ctor = view.constructor;\n var buffer = TransferArrayBuffer(view.buffer);\n var pullIntoDescriptor = {\n buffer: buffer,\n byteOffset: view.byteOffset,\n byteLength: view.byteLength,\n bytesFilled: 0,\n elementSize: elementSize,\n ctor: ctor,\n readerType: 'byob'\n };\n if (controller._pendingPullIntos.length > 0) {\n controller._pendingPullIntos.push(pullIntoDescriptor);\n return ReadableStreamAddReadIntoRequest(stream);\n }\n if (stream._state === 'closed') {\n var emptyView = new ctor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, 0);\n return promiseResolvedWith(ReadableStreamCreateReadResult(emptyView, true, stream._reader._forAuthorCode));\n }\n if (controller._queueTotalSize > 0) {\n if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) {\n var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);\n ReadableByteStreamControllerHandleQueueDrain(controller);\n return promiseResolvedWith(ReadableStreamCreateReadResult(filledView, false, stream._reader._forAuthorCode));\n }\n if (controller._closeRequested === true) {\n var e = new TypeError('Insufficient bytes to fill elements in the given buffer');\n ReadableByteStreamControllerError(controller, e);\n return promiseRejectedWith(e);\n }\n }\n controller._pendingPullIntos.push(pullIntoDescriptor);\n var promise = ReadableStreamAddReadIntoRequest(stream);\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n return promise;\n }\n function ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor) {\n firstDescriptor.buffer = TransferArrayBuffer(firstDescriptor.buffer);\n var stream = controller._controlledReadableByteStream;\n if (ReadableStreamHasBYOBReader(stream) === true) {\n while (ReadableStreamGetNumReadIntoRequests(stream) > 0) {\n var pullIntoDescriptor = ReadableByteStreamControllerShiftPendingPullInto(controller);\n ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor);\n }\n }\n }\n function ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, pullIntoDescriptor) {\n if (pullIntoDescriptor.bytesFilled + bytesWritten > pullIntoDescriptor.byteLength) {\n throw new RangeError('bytesWritten out of range');\n }\n ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesWritten, pullIntoDescriptor);\n if (pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize) {\n return;\n }\n ReadableByteStreamControllerShiftPendingPullInto(controller);\n var remainderSize = pullIntoDescriptor.bytesFilled % pullIntoDescriptor.elementSize;\n if (remainderSize > 0) {\n var end = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;\n var remainder = pullIntoDescriptor.buffer.slice(end - remainderSize, end);\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, remainder, 0, remainder.byteLength);\n }\n pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);\n pullIntoDescriptor.bytesFilled -= remainderSize;\n ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableByteStream, pullIntoDescriptor);\n ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);\n }\n function ReadableByteStreamControllerRespondInternal(controller, bytesWritten) {\n var firstDescriptor = controller._pendingPullIntos.peek();\n var stream = controller._controlledReadableByteStream;\n if (stream._state === 'closed') {\n if (bytesWritten !== 0) {\n throw new TypeError('bytesWritten must be 0 when calling respond() on a closed stream');\n }\n ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor);\n } else {\n ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, firstDescriptor);\n }\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }\n function ReadableByteStreamControllerShiftPendingPullInto(controller) {\n var descriptor = controller._pendingPullIntos.shift();\n ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n return descriptor;\n }\n function ReadableByteStreamControllerShouldCallPull(controller) {\n var stream = controller._controlledReadableByteStream;\n if (stream._state !== 'readable') {\n return false;\n }\n if (controller._closeRequested === true) {\n return false;\n }\n if (controller._started === false) {\n return false;\n }\n if (ReadableStreamHasDefaultReader(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {\n return true;\n }\n if (ReadableStreamHasBYOBReader(stream) === true && ReadableStreamGetNumReadIntoRequests(stream) > 0) {\n return true;\n }\n var desiredSize = ReadableByteStreamControllerGetDesiredSize(controller);\n if (desiredSize > 0) {\n return true;\n }\n return false;\n }\n function ReadableByteStreamControllerClearAlgorithms(controller) {\n controller._pullAlgorithm = undefined;\n controller._cancelAlgorithm = undefined;\n }\n function ReadableByteStreamControllerClose(controller) {\n var stream = controller._controlledReadableByteStream;\n if (controller._queueTotalSize > 0) {\n controller._closeRequested = true;\n return;\n }\n if (controller._pendingPullIntos.length > 0) {\n var firstPendingPullInto = controller._pendingPullIntos.peek();\n if (firstPendingPullInto.bytesFilled > 0) {\n var e = new TypeError('Insufficient bytes to fill elements in the given buffer');\n ReadableByteStreamControllerError(controller, e);\n throw e;\n }\n }\n ReadableByteStreamControllerClearAlgorithms(controller);\n ReadableStreamClose(stream);\n }\n function ReadableByteStreamControllerEnqueue(controller, chunk) {\n var stream = controller._controlledReadableByteStream;\n var buffer = chunk.buffer;\n var byteOffset = chunk.byteOffset;\n var byteLength = chunk.byteLength;\n var transferredBuffer = TransferArrayBuffer(buffer);\n if (ReadableStreamHasDefaultReader(stream) === true) {\n if (ReadableStreamGetNumReadRequests(stream) === 0) {\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n } else {\n var transferredView = new Uint8Array(transferredBuffer, byteOffset, byteLength);\n ReadableStreamFulfillReadRequest(stream, transferredView, false);\n }\n } else if (ReadableStreamHasBYOBReader(stream) === true) {\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);\n } else {\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n }\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }\n function ReadableByteStreamControllerError(controller, e) {\n var stream = controller._controlledReadableByteStream;\n if (stream._state !== 'readable') {\n return;\n }\n ReadableByteStreamControllerClearPendingPullIntos(controller);\n ResetQueue(controller);\n ReadableByteStreamControllerClearAlgorithms(controller);\n ReadableStreamError(stream, e);\n }\n function ReadableByteStreamControllerGetDesiredSize(controller) {\n var stream = controller._controlledReadableByteStream;\n var state = stream._state;\n if (state === 'errored') {\n return null;\n }\n if (state === 'closed') {\n return 0;\n }\n return controller._strategyHWM - controller._queueTotalSize;\n }\n function ReadableByteStreamControllerRespond(controller, bytesWritten) {\n bytesWritten = Number(bytesWritten);\n if (IsFiniteNonNegativeNumber(bytesWritten) === false) {\n throw new RangeError('bytesWritten must be a finite');\n }\n ReadableByteStreamControllerRespondInternal(controller, bytesWritten);\n }\n function ReadableByteStreamControllerRespondWithNewView(controller, view) {\n var firstDescriptor = controller._pendingPullIntos.peek();\n if (firstDescriptor.byteOffset + firstDescriptor.bytesFilled !== view.byteOffset) {\n throw new RangeError('The region specified by view does not match byobRequest');\n }\n if (firstDescriptor.byteLength !== view.byteLength) {\n throw new RangeError('The buffer of view has different capacity than byobRequest');\n }\n firstDescriptor.buffer = view.buffer;\n ReadableByteStreamControllerRespondInternal(controller, view.byteLength);\n }\n function SetUpReadableByteStreamController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, autoAllocateChunkSize) {\n controller._controlledReadableByteStream = stream;\n controller._pullAgain = false;\n controller._pulling = false;\n controller._byobRequest = undefined;\n controller._queue = controller._queueTotalSize = undefined;\n ResetQueue(controller);\n controller._closeRequested = false;\n controller._started = false;\n controller._strategyHWM = ValidateAndNormalizeHighWaterMark(highWaterMark);\n controller._pullAlgorithm = pullAlgorithm;\n controller._cancelAlgorithm = cancelAlgorithm;\n controller._autoAllocateChunkSize = autoAllocateChunkSize;\n controller._pendingPullIntos = new SimpleQueue();\n stream._readableStreamController = controller;\n var startResult = startAlgorithm();\n uponPromise(promiseResolvedWith(startResult), function () {\n controller._started = true;\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }, function (r) {\n ReadableByteStreamControllerError(controller, r);\n });\n }\n function SetUpReadableByteStreamControllerFromUnderlyingSource(stream, underlyingByteSource, highWaterMark) {\n var controller = Object.create(ReadableByteStreamController.prototype);\n function startAlgorithm() {\n return InvokeOrNoop(underlyingByteSource, 'start', [controller]);\n }\n var pullAlgorithm = CreateAlgorithmFromUnderlyingMethod(underlyingByteSource, 'pull', 0, [controller]);\n var cancelAlgorithm = CreateAlgorithmFromUnderlyingMethod(underlyingByteSource, 'cancel', 1, []);\n var autoAllocateChunkSize = underlyingByteSource.autoAllocateChunkSize;\n if (autoAllocateChunkSize !== undefined) {\n autoAllocateChunkSize = Number(autoAllocateChunkSize);\n if (NumberIsInteger(autoAllocateChunkSize) === false || autoAllocateChunkSize <= 0) {\n throw new RangeError('autoAllocateChunkSize must be a positive integer');\n }\n }\n SetUpReadableByteStreamController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, autoAllocateChunkSize);\n }\n function SetUpReadableStreamBYOBRequest(request, controller, view) {\n request._associatedReadableByteStreamController = controller;\n request._view = view;\n }\n function byobRequestBrandCheckException(name) {\n return new TypeError(\"ReadableStreamBYOBRequest.prototype.\" + name + \" can only be used on a ReadableStreamBYOBRequest\");\n }\n function byteStreamControllerBrandCheckException(name) {\n return new TypeError(\"ReadableByteStreamController.prototype.\" + name + \" can only be used on a ReadableByteStreamController\");\n }\n function AcquireReadableStreamBYOBReader(stream, forAuthorCode) {\n if (forAuthorCode === void 0) {\n forAuthorCode = false;\n }\n var reader = new ReadableStreamBYOBReader(stream);\n reader._forAuthorCode = forAuthorCode;\n return reader;\n }\n function ReadableStreamAddReadIntoRequest(stream) {\n var promise = newPromise(function (resolve, reject) {\n var readIntoRequest = {\n _resolve: resolve,\n _reject: reject\n };\n stream._reader._readIntoRequests.push(readIntoRequest);\n });\n return promise;\n }\n function ReadableStreamFulfillReadIntoRequest(stream, chunk, done) {\n var reader = stream._reader;\n var readIntoRequest = reader._readIntoRequests.shift();\n readIntoRequest._resolve(ReadableStreamCreateReadResult(chunk, done, reader._forAuthorCode));\n }\n function ReadableStreamGetNumReadIntoRequests(stream) {\n return stream._reader._readIntoRequests.length;\n }\n function ReadableStreamHasBYOBReader(stream) {\n var reader = stream._reader;\n if (reader === undefined) {\n return false;\n }\n if (!IsReadableStreamBYOBReader(reader)) {\n return false;\n }\n return true;\n }\n var ReadableStreamBYOBReader = function () {\n function ReadableStreamBYOBReader(stream) {\n if (!IsReadableStream(stream)) {\n throw new TypeError('ReadableStreamBYOBReader can only be constructed with a ReadableStream instance given a ' + 'byte source');\n }\n if (IsReadableByteStreamController(stream._readableStreamController) === false) {\n throw new TypeError('Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte ' + 'source');\n }\n if (IsReadableStreamLocked(stream)) {\n throw new TypeError('This stream has already been locked for exclusive reading by another reader');\n }\n ReadableStreamReaderGenericInitialize(this, stream);\n this._readIntoRequests = new SimpleQueue();\n }\n Object.defineProperty(ReadableStreamBYOBReader.prototype, \"closed\", {\n get: function () {\n if (!IsReadableStreamBYOBReader(this)) {\n return promiseRejectedWith(byobReaderBrandCheckException('closed'));\n }\n return this._closedPromise;\n },\n enumerable: true,\n configurable: true\n });\n ReadableStreamBYOBReader.prototype.cancel = function (reason) {\n if (!IsReadableStreamBYOBReader(this)) {\n return promiseRejectedWith(byobReaderBrandCheckException('cancel'));\n }\n if (this._ownerReadableStream === undefined) {\n return promiseRejectedWith(readerLockException('cancel'));\n }\n return ReadableStreamReaderGenericCancel(this, reason);\n };\n ReadableStreamBYOBReader.prototype.read = function (view) {\n if (!IsReadableStreamBYOBReader(this)) {\n return promiseRejectedWith(byobReaderBrandCheckException('read'));\n }\n if (this._ownerReadableStream === undefined) {\n return promiseRejectedWith(readerLockException('read from'));\n }\n if (!ArrayBuffer.isView(view)) {\n return promiseRejectedWith(new TypeError('view must be an array buffer view'));\n }\n if (IsDetachedBuffer(view.buffer) === true);\n if (view.byteLength === 0) {\n return promiseRejectedWith(new TypeError('view must have non-zero byteLength'));\n }\n return ReadableStreamBYOBReaderRead(this, view);\n };\n ReadableStreamBYOBReader.prototype.releaseLock = function () {\n if (!IsReadableStreamBYOBReader(this)) {\n throw byobReaderBrandCheckException('releaseLock');\n }\n if (this._ownerReadableStream === undefined) {\n return;\n }\n if (this._readIntoRequests.length > 0) {\n throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled');\n }\n ReadableStreamReaderGenericRelease(this);\n };\n return ReadableStreamBYOBReader;\n }();\n function IsReadableStreamBYOBReader(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_readIntoRequests')) {\n return false;\n }\n return true;\n }\n function ReadableStreamBYOBReaderRead(reader, view) {\n var stream = reader._ownerReadableStream;\n stream._disturbed = true;\n if (stream._state === 'errored') {\n return promiseRejectedWith(stream._storedError);\n }\n return ReadableByteStreamControllerPullInto(stream._readableStreamController, view);\n }\n function byobReaderBrandCheckException(name) {\n return new TypeError(\"ReadableStreamBYOBReader.prototype.\" + name + \" can only be used on a ReadableStreamBYOBReader\");\n }\n var ReadableStream = function () {\n function ReadableStream(underlyingSource, strategy) {\n if (underlyingSource === void 0) {\n underlyingSource = {};\n }\n if (strategy === void 0) {\n strategy = {};\n }\n InitializeReadableStream(this);\n var size = strategy.size;\n var highWaterMark = strategy.highWaterMark;\n var type = underlyingSource.type;\n var typeString = String(type);\n if (typeString === 'bytes') {\n if (size !== undefined) {\n throw new RangeError('The strategy for a byte stream cannot have a size function');\n }\n if (highWaterMark === undefined) {\n highWaterMark = 0;\n }\n highWaterMark = ValidateAndNormalizeHighWaterMark(highWaterMark);\n SetUpReadableByteStreamControllerFromUnderlyingSource(this, underlyingSource, highWaterMark);\n } else if (type === undefined) {\n var sizeAlgorithm = MakeSizeAlgorithmFromSizeFunction(size);\n if (highWaterMark === undefined) {\n highWaterMark = 1;\n }\n highWaterMark = ValidateAndNormalizeHighWaterMark(highWaterMark);\n SetUpReadableStreamDefaultControllerFromUnderlyingSource(this, underlyingSource, highWaterMark, sizeAlgorithm);\n } else {\n throw new RangeError('Invalid type is specified');\n }\n }\n Object.defineProperty(ReadableStream.prototype, \"locked\", {\n get: function () {\n if (IsReadableStream(this) === false) {\n throw streamBrandCheckException$1('locked');\n }\n return IsReadableStreamLocked(this);\n },\n enumerable: true,\n configurable: true\n });\n ReadableStream.prototype.cancel = function (reason) {\n if (IsReadableStream(this) === false) {\n return promiseRejectedWith(streamBrandCheckException$1('cancel'));\n }\n if (IsReadableStreamLocked(this) === true) {\n return promiseRejectedWith(new TypeError('Cannot cancel a stream that already has a reader'));\n }\n return ReadableStreamCancel(this, reason);\n };\n ReadableStream.prototype.getReader = function (_a) {\n var mode = (_a === void 0 ? {} : _a).mode;\n if (IsReadableStream(this) === false) {\n throw streamBrandCheckException$1('getReader');\n }\n if (mode === undefined) {\n return AcquireReadableStreamDefaultReader(this, true);\n }\n mode = String(mode);\n if (mode === 'byob') {\n return AcquireReadableStreamBYOBReader(this, true);\n }\n throw new RangeError('Invalid mode is specified');\n };\n ReadableStream.prototype.pipeThrough = function (_a, _b) {\n var writable = _a.writable, readable = _a.readable;\n var _c = _b === void 0 ? {} : _b, preventClose = _c.preventClose, preventAbort = _c.preventAbort, preventCancel = _c.preventCancel, signal = _c.signal;\n if (IsReadableStream(this) === false) {\n throw streamBrandCheckException$1('pipeThrough');\n }\n if (IsWritableStream(writable) === false) {\n throw new TypeError('writable argument to pipeThrough must be a WritableStream');\n }\n if (IsReadableStream(readable) === false) {\n throw new TypeError('readable argument to pipeThrough must be a ReadableStream');\n }\n preventClose = Boolean(preventClose);\n preventAbort = Boolean(preventAbort);\n preventCancel = Boolean(preventCancel);\n if (signal !== undefined && !isAbortSignal(signal)) {\n throw new TypeError('ReadableStream.prototype.pipeThrough\\'s signal option must be an AbortSignal');\n }\n if (IsReadableStreamLocked(this) === true) {\n throw new TypeError('ReadableStream.prototype.pipeThrough cannot be used on a locked ReadableStream');\n }\n if (IsWritableStreamLocked(writable) === true) {\n throw new TypeError('ReadableStream.prototype.pipeThrough cannot be used on a locked WritableStream');\n }\n var promise = ReadableStreamPipeTo(this, writable, preventClose, preventAbort, preventCancel, signal);\n setPromiseIsHandledToTrue(promise);\n return readable;\n };\n ReadableStream.prototype.pipeTo = function (dest, _a) {\n var _b = _a === void 0 ? {} : _a, preventClose = _b.preventClose, preventAbort = _b.preventAbort, preventCancel = _b.preventCancel, signal = _b.signal;\n if (IsReadableStream(this) === false) {\n return promiseRejectedWith(streamBrandCheckException$1('pipeTo'));\n }\n if (IsWritableStream(dest) === false) {\n return promiseRejectedWith(new TypeError('ReadableStream.prototype.pipeTo\\'s first argument must be a WritableStream'));\n }\n preventClose = Boolean(preventClose);\n preventAbort = Boolean(preventAbort);\n preventCancel = Boolean(preventCancel);\n if (signal !== undefined && !isAbortSignal(signal)) {\n return promiseRejectedWith(new TypeError('ReadableStream.prototype.pipeTo\\'s signal option must be an AbortSignal'));\n }\n if (IsReadableStreamLocked(this) === true) {\n return promiseRejectedWith(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream'));\n }\n if (IsWritableStreamLocked(dest) === true) {\n return promiseRejectedWith(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream'));\n }\n return ReadableStreamPipeTo(this, dest, preventClose, preventAbort, preventCancel, signal);\n };\n ReadableStream.prototype.tee = function () {\n if (IsReadableStream(this) === false) {\n throw streamBrandCheckException$1('tee');\n }\n var branches = ReadableStreamTee(this);\n return createArrayFromList(branches);\n };\n ReadableStream.prototype.getIterator = function (_a) {\n var _b = (_a === void 0 ? {} : _a).preventCancel, preventCancel = _b === void 0 ? false : _b;\n if (IsReadableStream(this) === false) {\n throw streamBrandCheckException$1('getIterator');\n }\n return AcquireReadableStreamAsyncIterator(this, preventCancel);\n };\n return ReadableStream;\n }();\n if (typeof SymbolPolyfill.asyncIterator === 'symbol') {\n Object.defineProperty(ReadableStream.prototype, SymbolPolyfill.asyncIterator, {\n value: ReadableStream.prototype.getIterator,\n enumerable: false,\n writable: true,\n configurable: true\n });\n }\n function CreateReadableStream(startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm) {\n if (highWaterMark === void 0) {\n highWaterMark = 1;\n }\n if (sizeAlgorithm === void 0) {\n sizeAlgorithm = function () {\n return 1;\n };\n }\n var stream = Object.create(ReadableStream.prototype);\n InitializeReadableStream(stream);\n var controller = Object.create(ReadableStreamDefaultController.prototype);\n SetUpReadableStreamDefaultController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm);\n return stream;\n }\n function InitializeReadableStream(stream) {\n stream._state = 'readable';\n stream._reader = undefined;\n stream._storedError = undefined;\n stream._disturbed = false;\n }\n function IsReadableStream(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_readableStreamController')) {\n return false;\n }\n return true;\n }\n function IsReadableStreamLocked(stream) {\n if (stream._reader === undefined) {\n return false;\n }\n return true;\n }\n function ReadableStreamCancel(stream, reason) {\n stream._disturbed = true;\n if (stream._state === 'closed') {\n return promiseResolvedWith(undefined);\n }\n if (stream._state === 'errored') {\n return promiseRejectedWith(stream._storedError);\n }\n ReadableStreamClose(stream);\n var sourceCancelPromise = stream._readableStreamController[CancelSteps](reason);\n return transformPromiseWith(sourceCancelPromise, noop);\n }\n function ReadableStreamClose(stream) {\n stream._state = 'closed';\n var reader = stream._reader;\n if (reader === undefined) {\n return;\n }\n if (IsReadableStreamDefaultReader(reader)) {\n reader._readRequests.forEach(function (readRequest) {\n readRequest._resolve(ReadableStreamCreateReadResult(undefined, true, reader._forAuthorCode));\n });\n reader._readRequests = new SimpleQueue();\n }\n defaultReaderClosedPromiseResolve(reader);\n }\n function ReadableStreamError(stream, e) {\n stream._state = 'errored';\n stream._storedError = e;\n var reader = stream._reader;\n if (reader === undefined) {\n return;\n }\n if (IsReadableStreamDefaultReader(reader)) {\n reader._readRequests.forEach(function (readRequest) {\n readRequest._reject(e);\n });\n reader._readRequests = new SimpleQueue();\n } else {\n reader._readIntoRequests.forEach(function (readIntoRequest) {\n readIntoRequest._reject(e);\n });\n reader._readIntoRequests = new SimpleQueue();\n }\n defaultReaderClosedPromiseReject(reader, e);\n }\n function streamBrandCheckException$1(name) {\n return new TypeError(\"ReadableStream.prototype.\" + name + \" can only be used on a ReadableStream\");\n }\n var ByteLengthQueuingStrategy = function () {\n function ByteLengthQueuingStrategy(_a) {\n var highWaterMark = _a.highWaterMark;\n this.highWaterMark = highWaterMark;\n }\n ByteLengthQueuingStrategy.prototype.size = function (chunk) {\n return chunk.byteLength;\n };\n return ByteLengthQueuingStrategy;\n }();\n var CountQueuingStrategy = function () {\n function CountQueuingStrategy(_a) {\n var highWaterMark = _a.highWaterMark;\n this.highWaterMark = highWaterMark;\n }\n CountQueuingStrategy.prototype.size = function () {\n return 1;\n };\n return CountQueuingStrategy;\n }();\n var TransformStream = function () {\n function TransformStream(transformer, writableStrategy, readableStrategy) {\n if (transformer === void 0) {\n transformer = {};\n }\n if (writableStrategy === void 0) {\n writableStrategy = {};\n }\n if (readableStrategy === void 0) {\n readableStrategy = {};\n }\n var writableSizeFunction = writableStrategy.size;\n var writableHighWaterMark = writableStrategy.highWaterMark;\n var readableSizeFunction = readableStrategy.size;\n var readableHighWaterMark = readableStrategy.highWaterMark;\n var writableType = transformer.writableType;\n if (writableType !== undefined) {\n throw new RangeError('Invalid writable type specified');\n }\n var writableSizeAlgorithm = MakeSizeAlgorithmFromSizeFunction(writableSizeFunction);\n if (writableHighWaterMark === undefined) {\n writableHighWaterMark = 1;\n }\n writableHighWaterMark = ValidateAndNormalizeHighWaterMark(writableHighWaterMark);\n var readableType = transformer.readableType;\n if (readableType !== undefined) {\n throw new RangeError('Invalid readable type specified');\n }\n var readableSizeAlgorithm = MakeSizeAlgorithmFromSizeFunction(readableSizeFunction);\n if (readableHighWaterMark === undefined) {\n readableHighWaterMark = 0;\n }\n readableHighWaterMark = ValidateAndNormalizeHighWaterMark(readableHighWaterMark);\n var startPromise_resolve;\n var startPromise = newPromise(function (resolve) {\n startPromise_resolve = resolve;\n });\n InitializeTransformStream(this, startPromise, writableHighWaterMark, writableSizeAlgorithm, readableHighWaterMark, readableSizeAlgorithm);\n SetUpTransformStreamDefaultControllerFromTransformer(this, transformer);\n var startResult = InvokeOrNoop(transformer, 'start', [this._transformStreamController]);\n startPromise_resolve(startResult);\n }\n Object.defineProperty(TransformStream.prototype, \"readable\", {\n get: function () {\n if (IsTransformStream(this) === false) {\n throw streamBrandCheckException$2('readable');\n }\n return this._readable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TransformStream.prototype, \"writable\", {\n get: function () {\n if (IsTransformStream(this) === false) {\n throw streamBrandCheckException$2('writable');\n }\n return this._writable;\n },\n enumerable: true,\n configurable: true\n });\n return TransformStream;\n }();\n function InitializeTransformStream(stream, startPromise, writableHighWaterMark, writableSizeAlgorithm, readableHighWaterMark, readableSizeAlgorithm) {\n function startAlgorithm() {\n return startPromise;\n }\n function writeAlgorithm(chunk) {\n return TransformStreamDefaultSinkWriteAlgorithm(stream, chunk);\n }\n function abortAlgorithm(reason) {\n return TransformStreamDefaultSinkAbortAlgorithm(stream, reason);\n }\n function closeAlgorithm() {\n return TransformStreamDefaultSinkCloseAlgorithm(stream);\n }\n stream._writable = CreateWritableStream(startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, writableHighWaterMark, writableSizeAlgorithm);\n function pullAlgorithm() {\n return TransformStreamDefaultSourcePullAlgorithm(stream);\n }\n function cancelAlgorithm(reason) {\n TransformStreamErrorWritableAndUnblockWrite(stream, reason);\n return promiseResolvedWith(undefined);\n }\n stream._readable = CreateReadableStream(startAlgorithm, pullAlgorithm, cancelAlgorithm, readableHighWaterMark, readableSizeAlgorithm);\n stream._backpressure = undefined;\n stream._backpressureChangePromise = undefined;\n stream._backpressureChangePromise_resolve = undefined;\n TransformStreamSetBackpressure(stream, true);\n stream._transformStreamController = undefined;\n }\n function IsTransformStream(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_transformStreamController')) {\n return false;\n }\n return true;\n }\n function TransformStreamError(stream, e) {\n ReadableStreamDefaultControllerError(stream._readable._readableStreamController, e);\n TransformStreamErrorWritableAndUnblockWrite(stream, e);\n }\n function TransformStreamErrorWritableAndUnblockWrite(stream, e) {\n TransformStreamDefaultControllerClearAlgorithms(stream._transformStreamController);\n WritableStreamDefaultControllerErrorIfNeeded(stream._writable._writableStreamController, e);\n if (stream._backpressure === true) {\n TransformStreamSetBackpressure(stream, false);\n }\n }\n function TransformStreamSetBackpressure(stream, backpressure) {\n if (stream._backpressureChangePromise !== undefined) {\n stream._backpressureChangePromise_resolve();\n }\n stream._backpressureChangePromise = newPromise(function (resolve) {\n stream._backpressureChangePromise_resolve = resolve;\n });\n stream._backpressure = backpressure;\n }\n var TransformStreamDefaultController = function () {\n function TransformStreamDefaultController() {\n throw new TypeError('TransformStreamDefaultController instances cannot be created directly');\n }\n Object.defineProperty(TransformStreamDefaultController.prototype, \"desiredSize\", {\n get: function () {\n if (IsTransformStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException$1('desiredSize');\n }\n var readableController = this._controlledTransformStream._readable._readableStreamController;\n return ReadableStreamDefaultControllerGetDesiredSize(readableController);\n },\n enumerable: true,\n configurable: true\n });\n TransformStreamDefaultController.prototype.enqueue = function (chunk) {\n if (IsTransformStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException$1('enqueue');\n }\n TransformStreamDefaultControllerEnqueue(this, chunk);\n };\n TransformStreamDefaultController.prototype.error = function (reason) {\n if (IsTransformStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException$1('error');\n }\n TransformStreamDefaultControllerError(this, reason);\n };\n TransformStreamDefaultController.prototype.terminate = function () {\n if (IsTransformStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException$1('terminate');\n }\n TransformStreamDefaultControllerTerminate(this);\n };\n return TransformStreamDefaultController;\n }();\n function IsTransformStreamDefaultController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_controlledTransformStream')) {\n return false;\n }\n return true;\n }\n function SetUpTransformStreamDefaultController(stream, controller, transformAlgorithm, flushAlgorithm) {\n controller._controlledTransformStream = stream;\n stream._transformStreamController = controller;\n controller._transformAlgorithm = transformAlgorithm;\n controller._flushAlgorithm = flushAlgorithm;\n }\n function SetUpTransformStreamDefaultControllerFromTransformer(stream, transformer) {\n var controller = Object.create(TransformStreamDefaultController.prototype);\n var transformAlgorithm = function (chunk) {\n try {\n TransformStreamDefaultControllerEnqueue(controller, chunk);\n return promiseResolvedWith(undefined);\n } catch (transformResultE) {\n return promiseRejectedWith(transformResultE);\n }\n };\n var transformMethod = transformer.transform;\n if (transformMethod !== undefined) {\n if (typeof transformMethod !== 'function') {\n throw new TypeError('transform is not a method');\n }\n transformAlgorithm = function (chunk) {\n return PromiseCall(transformMethod, transformer, [\n chunk,\n controller\n ]);\n };\n }\n var flushAlgorithm = CreateAlgorithmFromUnderlyingMethod(transformer, 'flush', 0, [controller]);\n SetUpTransformStreamDefaultController(stream, controller, transformAlgorithm, flushAlgorithm);\n }\n function TransformStreamDefaultControllerClearAlgorithms(controller) {\n controller._transformAlgorithm = undefined;\n controller._flushAlgorithm = undefined;\n }\n function TransformStreamDefaultControllerEnqueue(controller, chunk) {\n var stream = controller._controlledTransformStream;\n var readableController = stream._readable._readableStreamController;\n if (ReadableStreamDefaultControllerCanCloseOrEnqueue(readableController) === false) {\n throw new TypeError('Readable side is not in a state that permits enqueue');\n }\n try {\n ReadableStreamDefaultControllerEnqueue(readableController, chunk);\n } catch (e) {\n TransformStreamErrorWritableAndUnblockWrite(stream, e);\n throw stream._readable._storedError;\n }\n var backpressure = ReadableStreamDefaultControllerHasBackpressure(readableController);\n if (backpressure !== stream._backpressure) {\n TransformStreamSetBackpressure(stream, true);\n }\n }\n function TransformStreamDefaultControllerError(controller, e) {\n TransformStreamError(controller._controlledTransformStream, e);\n }\n function TransformStreamDefaultControllerPerformTransform(controller, chunk) {\n var transformPromise = controller._transformAlgorithm(chunk);\n return transformPromiseWith(transformPromise, undefined, function (r) {\n TransformStreamError(controller._controlledTransformStream, r);\n throw r;\n });\n }\n function TransformStreamDefaultControllerTerminate(controller) {\n var stream = controller._controlledTransformStream;\n var readableController = stream._readable._readableStreamController;\n if (ReadableStreamDefaultControllerCanCloseOrEnqueue(readableController) === true) {\n ReadableStreamDefaultControllerClose(readableController);\n }\n var error = new TypeError('TransformStream terminated');\n TransformStreamErrorWritableAndUnblockWrite(stream, error);\n }\n function TransformStreamDefaultSinkWriteAlgorithm(stream, chunk) {\n var controller = stream._transformStreamController;\n if (stream._backpressure === true) {\n var backpressureChangePromise = stream._backpressureChangePromise;\n return transformPromiseWith(backpressureChangePromise, function () {\n var writable = stream._writable;\n var state = writable._state;\n if (state === 'erroring') {\n throw writable._storedError;\n }\n return TransformStreamDefaultControllerPerformTransform(controller, chunk);\n });\n }\n return TransformStreamDefaultControllerPerformTransform(controller, chunk);\n }\n function TransformStreamDefaultSinkAbortAlgorithm(stream, reason) {\n TransformStreamError(stream, reason);\n return promiseResolvedWith(undefined);\n }\n function TransformStreamDefaultSinkCloseAlgorithm(stream) {\n var readable = stream._readable;\n var controller = stream._transformStreamController;\n var flushPromise = controller._flushAlgorithm();\n TransformStreamDefaultControllerClearAlgorithms(controller);\n return transformPromiseWith(flushPromise, function () {\n if (readable._state === 'errored') {\n throw readable._storedError;\n }\n var readableController = readable._readableStreamController;\n if (ReadableStreamDefaultControllerCanCloseOrEnqueue(readableController) === true) {\n ReadableStreamDefaultControllerClose(readableController);\n }\n }, function (r) {\n TransformStreamError(stream, r);\n throw readable._storedError;\n });\n }\n function TransformStreamDefaultSourcePullAlgorithm(stream) {\n TransformStreamSetBackpressure(stream, false);\n return stream._backpressureChangePromise;\n }\n function defaultControllerBrandCheckException$1(name) {\n return new TypeError(\"TransformStreamDefaultController.prototype.\" + name + \" can only be used on a TransformStreamDefaultController\");\n }\n function streamBrandCheckException$2(name) {\n return new TypeError(\"TransformStream.prototype.\" + name + \" can only be used on a TransformStream\");\n }\n exports.ByteLengthQueuingStrategy = ByteLengthQueuingStrategy;\n exports.CountQueuingStrategy = CountQueuingStrategy;\n exports.ReadableStream = ReadableStream;\n exports.TransformStream = TransformStream;\n exports.WritableStream = WritableStream;\n Object.defineProperty(exports, '__esModule', { value: true });\n}));\n\n/***/ }),\n/* 144 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(145);\n__w_pdfjs_require__(114);\n__w_pdfjs_require__(77);\n__w_pdfjs_require__(116);\nvar path = __w_pdfjs_require__(43);\nmodule.exports = path.Map;\n\n/***/ }),\n/* 145 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar collection = __w_pdfjs_require__(146);\nvar collectionStrong = __w_pdfjs_require__(150);\nmodule.exports = collection('Map', function (init) {\n return function Map() {\n return init(this, arguments.length ? arguments[0] : undefined);\n };\n}, collectionStrong);\n\n/***/ }),\n/* 146 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar $ = __w_pdfjs_require__(10);\nvar global = __w_pdfjs_require__(11);\nvar isForced = __w_pdfjs_require__(52);\nvar redefine = __w_pdfjs_require__(29);\nvar InternalMetadataModule = __w_pdfjs_require__(147);\nvar iterate = __w_pdfjs_require__(124);\nvar anInstance = __w_pdfjs_require__(123);\nvar isObject = __w_pdfjs_require__(22);\nvar fails = __w_pdfjs_require__(14);\nvar checkCorrectnessOfIteration = __w_pdfjs_require__(97);\nvar setToStringTag = __w_pdfjs_require__(85);\nvar inheritIfRequired = __w_pdfjs_require__(149);\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n var ADDER = IS_MAP ? 'set' : 'add';\n var NativeConstructor = global[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var Constructor = NativeConstructor;\n var exported = {};\n var fixMethod = function (KEY) {\n var nativeMethod = NativePrototype[KEY];\n redefine(NativePrototype, KEY, KEY == 'add' ? function add(value) {\n nativeMethod.call(this, value === 0 ? 0 : value);\n return this;\n } : KEY == 'delete' ? function (key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'get' ? function get(key) {\n return IS_WEAK && !isObject(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'has' ? function has(key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : function set(key, value) {\n nativeMethod.call(this, key === 0 ? 0 : key, value);\n return this;\n });\n };\n if (isForced(CONSTRUCTOR_NAME, typeof NativeConstructor != 'function' || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n new NativeConstructor().entries().next();\n })))) {\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.REQUIRED = true;\n } else if (isForced(CONSTRUCTOR_NAME, true)) {\n var instance = new Constructor();\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n var THROWS_ON_PRIMITIVES = fails(function () {\n instance.has(1);\n });\n var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) {\n new NativeConstructor(iterable);\n });\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n var $instance = new NativeConstructor();\n var index = 5;\n while (index--)\n $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n if (!ACCEPT_ITERABLES) {\n Constructor = wrapper(function (dummy, iterable) {\n anInstance(dummy, Constructor, CONSTRUCTOR_NAME);\n var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n if (iterable != undefined)\n iterate(iterable, that[ADDER], that, IS_MAP);\n return that;\n });\n Constructor.prototype = NativePrototype;\n NativePrototype.constructor = Constructor;\n }\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n if (BUGGY_ZERO || HASNT_CHAINING)\n fixMethod(ADDER);\n if (IS_WEAK && NativePrototype.clear)\n delete NativePrototype.clear;\n }\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({\n global: true,\n forced: Constructor != NativeConstructor\n }, exported);\n setToStringTag(Constructor, CONSTRUCTOR_NAME);\n if (!IS_WEAK)\n common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n return Constructor;\n};\n\n/***/ }),\n/* 147 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar hiddenKeys = __w_pdfjs_require__(39);\nvar isObject = __w_pdfjs_require__(22);\nvar has = __w_pdfjs_require__(23);\nvar defineProperty = __w_pdfjs_require__(27).f;\nvar uid = __w_pdfjs_require__(38);\nvar FREEZING = __w_pdfjs_require__(148);\nvar METADATA = uid('meta');\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar setMetadata = function (it) {\n defineProperty(it, METADATA, {\n value: {\n objectID: 'O' + ++id,\n weakData: {}\n }\n });\n};\nvar fastKey = function (it, create) {\n if (!isObject(it))\n return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, METADATA)) {\n if (!isExtensible(it))\n return 'F';\n if (!create)\n return 'E';\n setMetadata(it);\n }\n return it[METADATA].objectID;\n};\nvar getWeakData = function (it, create) {\n if (!has(it, METADATA)) {\n if (!isExtensible(it))\n return true;\n if (!create)\n return false;\n setMetadata(it);\n }\n return it[METADATA].weakData;\n};\nvar onFreeze = function (it) {\n if (FREEZING && meta.REQUIRED && isExtensible(it) && !has(it, METADATA))\n setMetadata(it);\n return it;\n};\nvar meta = module.exports = {\n REQUIRED: false,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\nhiddenKeys[METADATA] = true;\n\n/***/ }),\n/* 148 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar fails = __w_pdfjs_require__(14);\nmodule.exports = !fails(function () {\n return Object.isExtensible(Object.preventExtensions({}));\n});\n\n/***/ }),\n/* 149 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar isObject = __w_pdfjs_require__(22);\nvar setPrototypeOf = __w_pdfjs_require__(87);\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (setPrototypeOf && typeof (NewTarget = dummy.constructor) == 'function' && NewTarget !== Wrapper && isObject(NewTargetPrototype = NewTarget.prototype) && NewTargetPrototype !== Wrapper.prototype)\n setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n\n/***/ }),\n/* 150 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar defineProperty = __w_pdfjs_require__(27).f;\nvar create = __w_pdfjs_require__(71);\nvar redefineAll = __w_pdfjs_require__(121);\nvar bind = __w_pdfjs_require__(62);\nvar anInstance = __w_pdfjs_require__(123);\nvar iterate = __w_pdfjs_require__(124);\nvar defineIterator = __w_pdfjs_require__(79);\nvar setSpecies = __w_pdfjs_require__(122);\nvar DESCRIPTORS = __w_pdfjs_require__(13);\nvar fastKey = __w_pdfjs_require__(147).fastKey;\nvar InternalStateModule = __w_pdfjs_require__(33);\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, CONSTRUCTOR_NAME);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n index: create(null),\n first: undefined,\n last: undefined,\n size: 0\n });\n if (!DESCRIPTORS)\n that.size = 0;\n if (iterable != undefined)\n iterate(iterable, that[ADDER], that, IS_MAP);\n });\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n var previous, index;\n if (entry) {\n entry.value = value;\n } else {\n state.last = entry = {\n index: index = fastKey(key, true),\n key: key,\n value: value,\n previous: previous = state.last,\n next: undefined,\n removed: false\n };\n if (!state.first)\n state.first = entry;\n if (previous)\n previous.next = entry;\n if (DESCRIPTORS)\n state.size++;\n else\n that.size++;\n if (index !== 'F')\n state.index[index] = entry;\n }\n return that;\n };\n var getEntry = function (that, key) {\n var state = getInternalState(that);\n var index = fastKey(key);\n var entry;\n if (index !== 'F')\n return state.index[index];\n for (entry = state.first; entry; entry = entry.next) {\n if (entry.key == key)\n return entry;\n }\n };\n redefineAll(C.prototype, {\n clear: function clear() {\n var that = this;\n var state = getInternalState(that);\n var data = state.index;\n var entry = state.first;\n while (entry) {\n entry.removed = true;\n if (entry.previous)\n entry.previous = entry.previous.next = undefined;\n delete data[entry.index];\n entry = entry.next;\n }\n state.first = state.last = undefined;\n if (DESCRIPTORS)\n state.size = 0;\n else\n that.size = 0;\n },\n 'delete': function (key) {\n var that = this;\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.next;\n var prev = entry.previous;\n delete state.index[entry.index];\n entry.removed = true;\n if (prev)\n prev.next = next;\n if (next)\n next.previous = prev;\n if (state.first == entry)\n state.first = next;\n if (state.last == entry)\n state.last = prev;\n if (DESCRIPTORS)\n state.size--;\n else\n that.size--;\n }\n return !!entry;\n },\n forEach: function forEach(callbackfn) {\n var state = getInternalState(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.next : state.first) {\n boundFunction(entry.value, entry.key, this);\n while (entry && entry.removed)\n entry = entry.previous;\n }\n },\n has: function has(key) {\n return !!getEntry(this, key);\n }\n });\n redefineAll(C.prototype, IS_MAP ? {\n get: function get(key) {\n var entry = getEntry(this, key);\n return entry && entry.value;\n },\n set: function set(key, value) {\n return define(this, key === 0 ? 0 : key, value);\n }\n } : {\n add: function add(value) {\n return define(this, value = value === 0 ? 0 : value, value);\n }\n });\n if (DESCRIPTORS)\n defineProperty(C.prototype, 'size', {\n get: function () {\n return getInternalState(this).size;\n }\n });\n return C;\n },\n setStrong: function (C, CONSTRUCTOR_NAME, IS_MAP) {\n var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n defineIterator(C, CONSTRUCTOR_NAME, function (iterated, kind) {\n setInternalState(this, {\n type: ITERATOR_NAME,\n target: iterated,\n state: getInternalCollectionState(iterated),\n kind: kind,\n last: undefined\n });\n }, function () {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var entry = state.last;\n while (entry && entry.removed)\n entry = entry.previous;\n if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n state.target = undefined;\n return {\n value: undefined,\n done: true\n };\n }\n if (kind == 'keys')\n return {\n value: entry.key,\n done: false\n };\n if (kind == 'values')\n return {\n value: entry.value,\n done: false\n };\n return {\n value: [\n entry.key,\n entry.value\n ],\n done: false\n };\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n setSpecies(CONSTRUCTOR_NAME);\n }\n};\n\n/***/ }),\n/* 151 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(152);\n__w_pdfjs_require__(114);\n__w_pdfjs_require__(77);\n__w_pdfjs_require__(116);\nvar path = __w_pdfjs_require__(43);\nmodule.exports = path.Set;\n\n/***/ }),\n/* 152 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar collection = __w_pdfjs_require__(146);\nvar collectionStrong = __w_pdfjs_require__(150);\nmodule.exports = collection('Set', function (init) {\n return function Set() {\n return init(this, arguments.length ? arguments[0] : undefined);\n };\n}, collectionStrong);\n\n/***/ }),\n/* 153 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(114);\n__w_pdfjs_require__(154);\n__w_pdfjs_require__(116);\nvar path = __w_pdfjs_require__(43);\nmodule.exports = path.WeakMap;\n\n/***/ }),\n/* 154 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar global = __w_pdfjs_require__(11);\nvar redefineAll = __w_pdfjs_require__(121);\nvar InternalMetadataModule = __w_pdfjs_require__(147);\nvar collection = __w_pdfjs_require__(146);\nvar collectionWeak = __w_pdfjs_require__(155);\nvar isObject = __w_pdfjs_require__(22);\nvar enforceIternalState = __w_pdfjs_require__(33).enforce;\nvar NATIVE_WEAK_MAP = __w_pdfjs_require__(34);\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\nvar isExtensible = Object.isExtensible;\nvar InternalWeakMap;\nvar wrapper = function (init) {\n return function WeakMap() {\n return init(this, arguments.length ? arguments[0] : undefined);\n };\n};\nvar $WeakMap = module.exports = collection('WeakMap', wrapper, collectionWeak);\nif (NATIVE_WEAK_MAP && IS_IE11) {\n InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true);\n InternalMetadataModule.REQUIRED = true;\n var WeakMapPrototype = $WeakMap.prototype;\n var nativeDelete = WeakMapPrototype['delete'];\n var nativeHas = WeakMapPrototype.has;\n var nativeGet = WeakMapPrototype.get;\n var nativeSet = WeakMapPrototype.set;\n redefineAll(WeakMapPrototype, {\n 'delete': function (key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceIternalState(this);\n if (!state.frozen)\n state.frozen = new InternalWeakMap();\n return nativeDelete.call(this, key) || state.frozen['delete'](key);\n }\n return nativeDelete.call(this, key);\n },\n has: function has(key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceIternalState(this);\n if (!state.frozen)\n state.frozen = new InternalWeakMap();\n return nativeHas.call(this, key) || state.frozen.has(key);\n }\n return nativeHas.call(this, key);\n },\n get: function get(key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceIternalState(this);\n if (!state.frozen)\n state.frozen = new InternalWeakMap();\n return nativeHas.call(this, key) ? nativeGet.call(this, key) : state.frozen.get(key);\n }\n return nativeGet.call(this, key);\n },\n set: function set(key, value) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceIternalState(this);\n if (!state.frozen)\n state.frozen = new InternalWeakMap();\n nativeHas.call(this, key) ? nativeSet.call(this, key, value) : state.frozen.set(key, value);\n } else\n nativeSet.call(this, key, value);\n return this;\n }\n });\n}\n\n/***/ }),\n/* 155 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar redefineAll = __w_pdfjs_require__(121);\nvar getWeakData = __w_pdfjs_require__(147).getWeakData;\nvar anObject = __w_pdfjs_require__(28);\nvar isObject = __w_pdfjs_require__(22);\nvar anInstance = __w_pdfjs_require__(123);\nvar iterate = __w_pdfjs_require__(124);\nvar ArrayIterationModule = __w_pdfjs_require__(156);\nvar $has = __w_pdfjs_require__(23);\nvar InternalStateModule = __w_pdfjs_require__(33);\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\nvar find = ArrayIterationModule.find;\nvar findIndex = ArrayIterationModule.findIndex;\nvar id = 0;\nvar uncaughtFrozenStore = function (store) {\n return store.frozen || (store.frozen = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n this.entries = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n return find(store.entries, function (it) {\n return it[0] === key;\n });\n};\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry)\n return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry)\n entry[1] = value;\n else\n this.entries.push([\n key,\n value\n ]);\n },\n 'delete': function (key) {\n var index = findIndex(this.entries, function (it) {\n return it[0] === key;\n });\n if (~index)\n this.entries.splice(index, 1);\n return !!~index;\n }\n};\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, CONSTRUCTOR_NAME);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n id: id++,\n frozen: undefined\n });\n if (iterable != undefined)\n iterate(iterable, that[ADDER], that, IS_MAP);\n });\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var data = getWeakData(anObject(key), true);\n if (data === true)\n uncaughtFrozenStore(state).set(key, value);\n else\n data[state.id] = value;\n return that;\n };\n redefineAll(C.prototype, {\n 'delete': function (key) {\n var state = getInternalState(this);\n if (!isObject(key))\n return false;\n var data = getWeakData(key);\n if (data === true)\n return uncaughtFrozenStore(state)['delete'](key);\n return data && $has(data, state.id) && delete data[state.id];\n },\n has: function has(key) {\n var state = getInternalState(this);\n if (!isObject(key))\n return false;\n var data = getWeakData(key);\n if (data === true)\n return uncaughtFrozenStore(state).has(key);\n return data && $has(data, state.id);\n }\n });\n redefineAll(C.prototype, IS_MAP ? {\n get: function get(key) {\n var state = getInternalState(this);\n if (isObject(key)) {\n var data = getWeakData(key);\n if (data === true)\n return uncaughtFrozenStore(state).get(key);\n return data ? data[state.id] : undefined;\n }\n },\n set: function set(key, value) {\n return define(this, key, value);\n }\n } : {\n add: function add(value) {\n return define(this, value, true);\n }\n });\n return C;\n }\n};\n\n/***/ }),\n/* 156 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar bind = __w_pdfjs_require__(62);\nvar IndexedObject = __w_pdfjs_require__(18);\nvar toObject = __w_pdfjs_require__(83);\nvar toLength = __w_pdfjs_require__(47);\nvar arraySpeciesCreate = __w_pdfjs_require__(157);\nvar push = [].push;\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var value, result;\n for (; length > index; index++)\n if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP)\n target[index] = result;\n else if (result)\n switch (TYPE) {\n case 3:\n return true;\n case 5:\n return value;\n case 6:\n return index;\n case 2:\n push.call(target, value);\n }\n else if (IS_EVERY)\n return false;\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\nmodule.exports = {\n forEach: createMethod(0),\n map: createMethod(1),\n filter: createMethod(2),\n some: createMethod(3),\n every: createMethod(4),\n find: createMethod(5),\n findIndex: createMethod(6)\n};\n\n/***/ }),\n/* 157 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar isObject = __w_pdfjs_require__(22);\nvar isArray = __w_pdfjs_require__(158);\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar SPECIES = wellKnownSymbol('species');\nmodule.exports = function (originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n if (typeof C == 'function' && (C === Array || isArray(C.prototype)))\n C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null)\n C = undefined;\n }\n }\n return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n\n/***/ }),\n/* 158 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar classof = __w_pdfjs_require__(19);\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n\n/***/ }),\n/* 159 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(114);\n__w_pdfjs_require__(160);\n__w_pdfjs_require__(116);\nvar path = __w_pdfjs_require__(43);\nmodule.exports = path.WeakSet;\n\n/***/ }),\n/* 160 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar collection = __w_pdfjs_require__(146);\nvar collectionWeak = __w_pdfjs_require__(155);\ncollection('WeakSet', function (init) {\n return function WeakSet() {\n return init(this, arguments.length ? arguments[0] : undefined);\n };\n}, collectionWeak);\n\n/***/ }),\n/* 161 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(162);\nvar entryUnbind = __w_pdfjs_require__(61);\nmodule.exports = entryUnbind('String', 'codePointAt');\n\n/***/ }),\n/* 162 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar $ = __w_pdfjs_require__(10);\nvar codeAt = __w_pdfjs_require__(78).codeAt;\n$({\n target: 'String',\n proto: true\n}, {\n codePointAt: function codePointAt(pos) {\n return codeAt(this, pos);\n }\n});\n\n/***/ }),\n/* 163 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(164);\nvar path = __w_pdfjs_require__(43);\nmodule.exports = path.String.fromCodePoint;\n\n/***/ }),\n/* 164 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar $ = __w_pdfjs_require__(10);\nvar toAbsoluteIndex = __w_pdfjs_require__(49);\nvar fromCharCode = String.fromCharCode;\nvar nativeFromCodePoint = String.fromCodePoint;\nvar INCORRECT_LENGTH = !!nativeFromCodePoint && nativeFromCodePoint.length != 1;\n$({\n target: 'String',\n stat: true,\n forced: INCORRECT_LENGTH\n}, {\n fromCodePoint: function fromCodePoint(x) {\n var elements = [];\n var length = arguments.length;\n var i = 0;\n var code;\n while (length > i) {\n code = +arguments[i++];\n if (toAbsoluteIndex(code, 0x10FFFF) !== code)\n throw RangeError(code + ' is not a valid code point');\n elements.push(code < 0x10000 ? fromCharCode(code) : fromCharCode(((code -= 0x10000) >> 10) + 0xD800, code % 0x400 + 0xDC00));\n }\n return elements.join('');\n }\n});\n\n/***/ }),\n/* 165 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(166);\n__w_pdfjs_require__(114);\n__w_pdfjs_require__(168);\n__w_pdfjs_require__(172);\n__w_pdfjs_require__(173);\n__w_pdfjs_require__(174);\n__w_pdfjs_require__(175);\n__w_pdfjs_require__(176);\n__w_pdfjs_require__(177);\n__w_pdfjs_require__(178);\n__w_pdfjs_require__(179);\n__w_pdfjs_require__(180);\n__w_pdfjs_require__(181);\n__w_pdfjs_require__(182);\n__w_pdfjs_require__(183);\n__w_pdfjs_require__(184);\n__w_pdfjs_require__(185);\n__w_pdfjs_require__(186);\n__w_pdfjs_require__(187);\nvar path = __w_pdfjs_require__(43);\nmodule.exports = path.Symbol;\n\n/***/ }),\n/* 166 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar $ = __w_pdfjs_require__(10);\nvar fails = __w_pdfjs_require__(14);\nvar isArray = __w_pdfjs_require__(158);\nvar isObject = __w_pdfjs_require__(22);\nvar toObject = __w_pdfjs_require__(83);\nvar toLength = __w_pdfjs_require__(47);\nvar createProperty = __w_pdfjs_require__(93);\nvar arraySpeciesCreate = __w_pdfjs_require__(157);\nvar arrayMethodHasSpeciesSupport = __w_pdfjs_require__(167);\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar V8_VERSION = __w_pdfjs_require__(133);\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\nvar isConcatSpreadable = function (O) {\n if (!isObject(O))\n return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n$({\n target: 'Array',\n proto: true,\n forced: FORCED\n}, {\n concat: function concat(arg) {\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = toLength(E.length);\n if (n + len > MAX_SAFE_INTEGER)\n throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++)\n if (k in E)\n createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER)\n throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n\n/***/ }),\n/* 167 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar fails = __w_pdfjs_require__(14);\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar V8_VERSION = __w_pdfjs_require__(133);\nvar SPECIES = wellKnownSymbol('species');\nmodule.exports = function (METHOD_NAME) {\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n\n/***/ }),\n/* 168 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar $ = __w_pdfjs_require__(10);\nvar global = __w_pdfjs_require__(11);\nvar getBuiltIn = __w_pdfjs_require__(42);\nvar IS_PURE = __w_pdfjs_require__(37);\nvar DESCRIPTORS = __w_pdfjs_require__(13);\nvar NATIVE_SYMBOL = __w_pdfjs_require__(58);\nvar USE_SYMBOL_AS_UID = __w_pdfjs_require__(59);\nvar fails = __w_pdfjs_require__(14);\nvar has = __w_pdfjs_require__(23);\nvar isArray = __w_pdfjs_require__(158);\nvar isObject = __w_pdfjs_require__(22);\nvar anObject = __w_pdfjs_require__(28);\nvar toObject = __w_pdfjs_require__(83);\nvar toIndexedObject = __w_pdfjs_require__(17);\nvar toPrimitive = __w_pdfjs_require__(21);\nvar createPropertyDescriptor = __w_pdfjs_require__(16);\nvar nativeObjectCreate = __w_pdfjs_require__(71);\nvar objectKeys = __w_pdfjs_require__(73);\nvar getOwnPropertyNamesModule = __w_pdfjs_require__(44);\nvar getOwnPropertyNamesExternal = __w_pdfjs_require__(169);\nvar getOwnPropertySymbolsModule = __w_pdfjs_require__(51);\nvar getOwnPropertyDescriptorModule = __w_pdfjs_require__(12);\nvar definePropertyModule = __w_pdfjs_require__(27);\nvar propertyIsEnumerableModule = __w_pdfjs_require__(15);\nvar createNonEnumerableProperty = __w_pdfjs_require__(26);\nvar redefine = __w_pdfjs_require__(29);\nvar shared = __w_pdfjs_require__(36);\nvar sharedKey = __w_pdfjs_require__(35);\nvar hiddenKeys = __w_pdfjs_require__(39);\nvar uid = __w_pdfjs_require__(38);\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar wrappedWellKnownSymbolModule = __w_pdfjs_require__(170);\nvar defineWellKnownSymbol = __w_pdfjs_require__(171);\nvar setToStringTag = __w_pdfjs_require__(85);\nvar InternalStateModule = __w_pdfjs_require__(33);\nvar $forEach = __w_pdfjs_require__(156).forEach;\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\nvar QObject = global.QObject;\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () {\n return nativeDefineProperty(this, 'a', { value: 7 }).a;\n }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor)\n delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS)\n symbol.description = description;\n return symbol;\n};\nvar isSymbol = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return Object(it) instanceof $Symbol;\n};\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype)\n $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPrimitive(P, true);\n anObject(Attributes);\n if (has(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!has(O, HIDDEN))\n nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (has(O, HIDDEN) && O[HIDDEN][key])\n O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n }\n return setSymbolDescriptor(O, key, Attributes);\n }\n return nativeDefineProperty(O, key, Attributes);\n};\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key))\n $defineProperty(O, key, properties[key]);\n });\n return O;\n};\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPrimitive(V, true);\n var enumerable = nativePropertyIsEnumerable.call(this, P);\n if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P))\n return false;\n return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPrimitive(P, true);\n if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key))\n return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!has(AllSymbols, key) && !has(hiddenKeys, key))\n result.push(key);\n });\n return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {\n result.push(AllSymbols[key]);\n }\n });\n return result;\n};\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol)\n throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype)\n setter.call(ObjectPrototypeSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag))\n this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER)\n setSymbolDescriptor(ObjectPrototype, tag, {\n configurable: true,\n set: setter\n });\n return wrap(tag, description);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return getInternalState(this).tag;\n });\n redefine($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n if (DESCRIPTORS) {\n nativeDefineProperty($Symbol[PROTOTYPE], 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n$({\n global: true,\n wrap: true,\n forced: !NATIVE_SYMBOL,\n sham: !NATIVE_SYMBOL\n}, { Symbol: $Symbol });\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n$({\n target: SYMBOL,\n stat: true,\n forced: !NATIVE_SYMBOL\n}, {\n 'for': function (key) {\n var string = String(key);\n if (has(StringToSymbolRegistry, string))\n return StringToSymbolRegistry[string];\n var symbol = $Symbol(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n },\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym))\n throw TypeError(sym + ' is not a symbol');\n if (has(SymbolToStringRegistry, sym))\n return SymbolToStringRegistry[sym];\n },\n useSetter: function () {\n USE_SETTER = true;\n },\n useSimple: function () {\n USE_SETTER = false;\n }\n});\n$({\n target: 'Object',\n stat: true,\n forced: !NATIVE_SYMBOL,\n sham: !DESCRIPTORS\n}, {\n create: $create,\n defineProperty: $defineProperty,\n defineProperties: $defineProperties,\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n$({\n target: 'Object',\n stat: true,\n forced: !NATIVE_SYMBOL\n}, {\n getOwnPropertyNames: $getOwnPropertyNames,\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n$({\n target: 'Object',\n stat: true,\n forced: fails(function () {\n getOwnPropertySymbolsModule.f(1);\n })\n}, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return getOwnPropertySymbolsModule.f(toObject(it));\n }\n});\nif ($stringify) {\n var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {\n var symbol = $Symbol();\n return $stringify([symbol]) != '[null]' || $stringify({ a: symbol }) != '{}' || $stringify(Object(symbol)) != '{}';\n });\n $({\n target: 'JSON',\n stat: true,\n forced: FORCED_JSON_STRINGIFY\n }, {\n stringify: function stringify(it, replacer, space) {\n var args = [it];\n var index = 1;\n var $replacer;\n while (arguments.length > index)\n args.push(arguments[index++]);\n $replacer = replacer;\n if (!isObject(replacer) && it === undefined || isSymbol(it))\n return;\n if (!isArray(replacer))\n replacer = function (key, value) {\n if (typeof $replacer == 'function')\n value = $replacer.call(this, key, value);\n if (!isSymbol(value))\n return value;\n };\n args[1] = replacer;\n return $stringify.apply(null, args);\n }\n });\n}\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {\n createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n}\nsetToStringTag($Symbol, SYMBOL);\nhiddenKeys[HIDDEN] = true;\n\n/***/ }),\n/* 169 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar toIndexedObject = __w_pdfjs_require__(17);\nvar nativeGetOwnPropertyNames = __w_pdfjs_require__(44).f;\nvar toString = {}.toString;\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [];\nvar getWindowNames = function (it) {\n try {\n return nativeGetOwnPropertyNames(it);\n } catch (error) {\n return windowNames.slice();\n }\n};\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : nativeGetOwnPropertyNames(toIndexedObject(it));\n};\n\n/***/ }),\n/* 170 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nexports.f = wellKnownSymbol;\n\n/***/ }),\n/* 171 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar path = __w_pdfjs_require__(43);\nvar has = __w_pdfjs_require__(23);\nvar wrappedWellKnownSymbolModule = __w_pdfjs_require__(170);\nvar defineProperty = __w_pdfjs_require__(27).f;\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!has(Symbol, NAME))\n defineProperty(Symbol, NAME, { value: wrappedWellKnownSymbolModule.f(NAME) });\n};\n\n/***/ }),\n/* 172 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar defineWellKnownSymbol = __w_pdfjs_require__(171);\ndefineWellKnownSymbol('asyncIterator');\n\n/***/ }),\n/* 173 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar $ = __w_pdfjs_require__(10);\nvar DESCRIPTORS = __w_pdfjs_require__(13);\nvar global = __w_pdfjs_require__(11);\nvar has = __w_pdfjs_require__(23);\nvar isObject = __w_pdfjs_require__(22);\nvar defineProperty = __w_pdfjs_require__(27).f;\nvar copyConstructorProperties = __w_pdfjs_require__(40);\nvar NativeSymbol = global.Symbol;\nif (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) || NativeSymbol().description !== undefined)) {\n var EmptyStringDescriptionStore = {};\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);\n var result = this instanceof SymbolWrapper ? new NativeSymbol(description) : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '')\n EmptyStringDescriptionStore[result] = true;\n return result;\n };\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;\n symbolPrototype.constructor = SymbolWrapper;\n var symbolToString = symbolPrototype.toString;\n var native = String(NativeSymbol('test')) == 'Symbol(test)';\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n defineProperty(symbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = isObject(this) ? this.valueOf() : this;\n var string = symbolToString.call(symbol);\n if (has(EmptyStringDescriptionStore, symbol))\n return '';\n var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n $({\n global: true,\n forced: true\n }, { Symbol: SymbolWrapper });\n}\n\n/***/ }),\n/* 174 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar defineWellKnownSymbol = __w_pdfjs_require__(171);\ndefineWellKnownSymbol('hasInstance');\n\n/***/ }),\n/* 175 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar defineWellKnownSymbol = __w_pdfjs_require__(171);\ndefineWellKnownSymbol('isConcatSpreadable');\n\n/***/ }),\n/* 176 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar defineWellKnownSymbol = __w_pdfjs_require__(171);\ndefineWellKnownSymbol('iterator');\n\n/***/ }),\n/* 177 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar defineWellKnownSymbol = __w_pdfjs_require__(171);\ndefineWellKnownSymbol('match');\n\n/***/ }),\n/* 178 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar defineWellKnownSymbol = __w_pdfjs_require__(171);\ndefineWellKnownSymbol('matchAll');\n\n/***/ }),\n/* 179 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar defineWellKnownSymbol = __w_pdfjs_require__(171);\ndefineWellKnownSymbol('replace');\n\n/***/ }),\n/* 180 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar defineWellKnownSymbol = __w_pdfjs_require__(171);\ndefineWellKnownSymbol('search');\n\n/***/ }),\n/* 181 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar defineWellKnownSymbol = __w_pdfjs_require__(171);\ndefineWellKnownSymbol('species');\n\n/***/ }),\n/* 182 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar defineWellKnownSymbol = __w_pdfjs_require__(171);\ndefineWellKnownSymbol('split');\n\n/***/ }),\n/* 183 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar defineWellKnownSymbol = __w_pdfjs_require__(171);\ndefineWellKnownSymbol('toPrimitive');\n\n/***/ }),\n/* 184 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar defineWellKnownSymbol = __w_pdfjs_require__(171);\ndefineWellKnownSymbol('toStringTag');\n\n/***/ }),\n/* 185 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar defineWellKnownSymbol = __w_pdfjs_require__(171);\ndefineWellKnownSymbol('unscopables');\n\n/***/ }),\n/* 186 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar setToStringTag = __w_pdfjs_require__(85);\nsetToStringTag(Math, 'Math', true);\n\n/***/ }),\n/* 187 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar global = __w_pdfjs_require__(11);\nvar setToStringTag = __w_pdfjs_require__(85);\nsetToStringTag(global.JSON, 'JSON', true);\n\n/***/ }),\n/* 188 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(189);\nvar entryUnbind = __w_pdfjs_require__(61);\nmodule.exports = entryUnbind('String', 'padStart');\n\n/***/ }),\n/* 189 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar $ = __w_pdfjs_require__(10);\nvar $padStart = __w_pdfjs_require__(190).start;\nvar WEBKIT_BUG = __w_pdfjs_require__(192);\n$({\n target: 'String',\n proto: true,\n forced: WEBKIT_BUG\n}, {\n padStart: function padStart(maxLength) {\n return $padStart(this, maxLength, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n/***/ }),\n/* 190 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar toLength = __w_pdfjs_require__(47);\nvar repeat = __w_pdfjs_require__(191);\nvar requireObjectCoercible = __w_pdfjs_require__(20);\nvar ceil = Math.ceil;\nvar createMethod = function (IS_END) {\n return function ($this, maxLength, fillString) {\n var S = String(requireObjectCoercible($this));\n var stringLength = S.length;\n var fillStr = fillString === undefined ? ' ' : String(fillString);\n var intMaxLength = toLength(maxLength);\n var fillLen, stringFiller;\n if (intMaxLength <= stringLength || fillStr == '')\n return S;\n fillLen = intMaxLength - stringLength;\n stringFiller = repeat.call(fillStr, ceil(fillLen / fillStr.length));\n if (stringFiller.length > fillLen)\n stringFiller = stringFiller.slice(0, fillLen);\n return IS_END ? S + stringFiller : stringFiller + S;\n };\n};\nmodule.exports = {\n start: createMethod(false),\n end: createMethod(true)\n};\n\n/***/ }),\n/* 191 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar toInteger = __w_pdfjs_require__(48);\nvar requireObjectCoercible = __w_pdfjs_require__(20);\nmodule.exports = ''.repeat || function repeat(count) {\n var str = String(requireObjectCoercible(this));\n var result = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity)\n throw RangeError('Wrong number of repetitions');\n for (; n > 0; (n >>>= 1) && (str += str))\n if (n & 1)\n result += str;\n return result;\n};\n\n/***/ }),\n/* 192 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar userAgent = __w_pdfjs_require__(127);\nmodule.exports = /Version\\/10\\.\\d+(\\.\\d+)?( Mobile\\/\\w+)? Safari\\//.test(userAgent);\n\n/***/ }),\n/* 193 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(194);\nvar entryUnbind = __w_pdfjs_require__(61);\nmodule.exports = entryUnbind('String', 'padEnd');\n\n/***/ }),\n/* 194 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar $ = __w_pdfjs_require__(10);\nvar $padEnd = __w_pdfjs_require__(190).end;\nvar WEBKIT_BUG = __w_pdfjs_require__(192);\n$({\n target: 'String',\n proto: true,\n forced: WEBKIT_BUG\n}, {\n padEnd: function padEnd(maxLength) {\n return $padEnd(this, maxLength, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n/***/ }),\n/* 195 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(196);\nvar path = __w_pdfjs_require__(43);\nmodule.exports = path.Object.values;\n\n/***/ }),\n/* 196 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar $ = __w_pdfjs_require__(10);\nvar $values = __w_pdfjs_require__(197).values;\n$({\n target: 'Object',\n stat: true\n}, {\n values: function values(O) {\n return $values(O);\n }\n});\n\n/***/ }),\n/* 197 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar DESCRIPTORS = __w_pdfjs_require__(13);\nvar objectKeys = __w_pdfjs_require__(73);\nvar toIndexedObject = __w_pdfjs_require__(17);\nvar propertyIsEnumerable = __w_pdfjs_require__(15).f;\nvar createMethod = function (TO_ENTRIES) {\n return function (it) {\n var O = toIndexedObject(it);\n var keys = objectKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(O, key)) {\n result.push(TO_ENTRIES ? [\n key,\n O[key]\n ] : O[key]);\n }\n }\n return result;\n };\n};\nmodule.exports = {\n entries: createMethod(true),\n values: createMethod(false)\n};\n\n/***/ }),\n/* 198 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.clearPrimitiveCaches = clearPrimitiveCaches;\nexports.isEOF = isEOF;\nexports.isCmd = isCmd;\nexports.isDict = isDict;\nexports.isName = isName;\nexports.isRef = isRef;\nexports.isRefsEqual = isRefsEqual;\nexports.isStream = isStream;\nexports.RefSetCache = exports.RefSet = exports.Ref = exports.Name = exports.Dict = exports.Cmd = exports.EOF = void 0;\n\nvar _regenerator = _interopRequireDefault(__w_pdfjs_require__(2));\n\nvar _util = __w_pdfjs_require__(5);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar EOF = {};\nexports.EOF = EOF;\n\nvar Name = function NameClosure() {\n var nameCache = Object.create(null);\n\n function Name(name) {\n this.name = name;\n }\n\n Name.prototype = {};\n\n Name.get = function Name_get(name) {\n var nameValue = nameCache[name];\n return nameValue ? nameValue : nameCache[name] = new Name(name);\n };\n\n Name._clearCache = function () {\n nameCache = Object.create(null);\n };\n\n return Name;\n}();\n\nexports.Name = Name;\n\nvar Cmd = function CmdClosure() {\n var cmdCache = Object.create(null);\n\n function Cmd(cmd) {\n this.cmd = cmd;\n }\n\n Cmd.prototype = {};\n\n Cmd.get = function Cmd_get(cmd) {\n var cmdValue = cmdCache[cmd];\n return cmdValue ? cmdValue : cmdCache[cmd] = new Cmd(cmd);\n };\n\n Cmd._clearCache = function () {\n cmdCache = Object.create(null);\n };\n\n return Cmd;\n}();\n\nexports.Cmd = Cmd;\n\nvar Dict = function DictClosure() {\n var nonSerializable = function nonSerializableClosure() {\n return nonSerializable;\n };\n\n function Dict(xref) {\n this._map = Object.create(null);\n this.xref = xref;\n this.objId = null;\n this.suppressEncryption = false;\n this.__nonSerializable__ = nonSerializable;\n }\n\n Dict.prototype = {\n assignXref: function Dict_assignXref(newXref) {\n this.xref = newXref;\n },\n get: function get(key1, key2, key3) {\n var value = this._map[key1];\n\n if (value === undefined && key2 !== undefined) {\n value = this._map[key2];\n\n if (value === undefined && key3 !== undefined) {\n value = this._map[key3];\n }\n }\n\n if (value instanceof Ref && this.xref) {\n return this.xref.fetch(value, this.suppressEncryption);\n }\n\n return value;\n },\n getAsync: function getAsync(key1, key2, key3) {\n var _this = this;\n\n return _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee() {\n var value;\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n value = _this._map[key1];\n\n if (value === undefined && key2 !== undefined) {\n value = _this._map[key2];\n\n if (value === undefined && key3 !== undefined) {\n value = _this._map[key3];\n }\n }\n\n if (!(value instanceof Ref && _this.xref)) {\n _context.next = 4;\n break;\n }\n\n return _context.abrupt(\"return\", _this.xref.fetchAsync(value, _this.suppressEncryption));\n\n case 4:\n return _context.abrupt(\"return\", value);\n\n case 5:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }))();\n },\n getArray: function getArray(key1, key2, key3) {\n var value = this.get(key1, key2, key3);\n\n if (!Array.isArray(value) || !this.xref) {\n return value;\n }\n\n value = value.slice();\n\n for (var i = 0, ii = value.length; i < ii; i++) {\n if (!(value[i] instanceof Ref)) {\n continue;\n }\n\n value[i] = this.xref.fetch(value[i], this.suppressEncryption);\n }\n\n return value;\n },\n getRaw: function Dict_getRaw(key) {\n return this._map[key];\n },\n getKeys: function Dict_getKeys() {\n return Object.keys(this._map);\n },\n set: function Dict_set(key, value) {\n this._map[key] = value;\n },\n has: function Dict_has(key) {\n return this._map[key] !== undefined;\n },\n forEach: function Dict_forEach(callback) {\n for (var key in this._map) {\n callback(key, this.get(key));\n }\n }\n };\n Dict.empty = new Dict(null);\n\n Dict.merge = function (xref, dictArray) {\n var mergedDict = new Dict(xref);\n\n for (var i = 0, ii = dictArray.length; i < ii; i++) {\n var dict = dictArray[i];\n\n if (!isDict(dict)) {\n continue;\n }\n\n for (var keyName in dict._map) {\n if (mergedDict._map[keyName] !== undefined) {\n continue;\n }\n\n mergedDict._map[keyName] = dict._map[keyName];\n }\n }\n\n return mergedDict;\n };\n\n return Dict;\n}();\n\nexports.Dict = Dict;\n\nvar Ref = function RefClosure() {\n var refCache = Object.create(null);\n\n function Ref(num, gen) {\n this.num = num;\n this.gen = gen;\n }\n\n Ref.prototype = {\n toString: function Ref_toString() {\n if (this.gen === 0) {\n return \"\".concat(this.num, \"R\");\n }\n\n return \"\".concat(this.num, \"R\").concat(this.gen);\n }\n };\n\n Ref.get = function (num, gen) {\n var key = gen === 0 ? \"\".concat(num, \"R\") : \"\".concat(num, \"R\").concat(gen);\n var refValue = refCache[key];\n return refValue ? refValue : refCache[key] = new Ref(num, gen);\n };\n\n Ref._clearCache = function () {\n refCache = Object.create(null);\n };\n\n return Ref;\n}();\n\nexports.Ref = Ref;\n\nvar RefSet = function RefSetClosure() {\n function RefSet() {\n this.dict = Object.create(null);\n }\n\n RefSet.prototype = {\n has: function RefSet_has(ref) {\n return ref.toString() in this.dict;\n },\n put: function RefSet_put(ref) {\n this.dict[ref.toString()] = true;\n },\n remove: function RefSet_remove(ref) {\n delete this.dict[ref.toString()];\n }\n };\n return RefSet;\n}();\n\nexports.RefSet = RefSet;\n\nvar RefSetCache = function RefSetCacheClosure() {\n function RefSetCache() {\n this.dict = Object.create(null);\n }\n\n RefSetCache.prototype = {\n get size() {\n return Object.keys(this.dict).length;\n },\n\n get: function RefSetCache_get(ref) {\n return this.dict[ref.toString()];\n },\n has: function RefSetCache_has(ref) {\n return ref.toString() in this.dict;\n },\n put: function RefSetCache_put(ref, obj) {\n this.dict[ref.toString()] = obj;\n },\n putAlias: function RefSetCache_putAlias(ref, aliasRef) {\n this.dict[ref.toString()] = this.get(aliasRef);\n },\n forEach: function RefSetCache_forEach(callback) {\n for (var i in this.dict) {\n callback(this.dict[i]);\n }\n },\n clear: function RefSetCache_clear() {\n this.dict = Object.create(null);\n }\n };\n return RefSetCache;\n}();\n\nexports.RefSetCache = RefSetCache;\n\nfunction isEOF(v) {\n return v === EOF;\n}\n\nfunction isName(v, name) {\n return v instanceof Name && (name === undefined || v.name === name);\n}\n\nfunction isCmd(v, cmd) {\n return v instanceof Cmd && (cmd === undefined || v.cmd === cmd);\n}\n\nfunction isDict(v, type) {\n return v instanceof Dict && (type === undefined || isName(v.get(\"Type\"), type));\n}\n\nfunction isRef(v) {\n return v instanceof Ref;\n}\n\nfunction isRefsEqual(v1, v2) {\n return v1.num === v2.num && v1.gen === v2.gen;\n}\n\nfunction isStream(v) {\n return _typeof(v) === \"object\" && v !== null && v.getBytes !== undefined;\n}\n\nfunction clearPrimitiveCaches() {\n Cmd._clearCache();\n\n Name._clearCache();\n\n Ref._clearCache();\n}\n\n/***/ }),\n/* 199 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.NetworkPdfManager = exports.LocalPdfManager = void 0;\n\nvar _regenerator = _interopRequireDefault(__w_pdfjs_require__(2));\n\nvar _util = __w_pdfjs_require__(5);\n\nvar _chunked_stream = __w_pdfjs_require__(200);\n\nvar _core_utils = __w_pdfjs_require__(201);\n\nvar _document = __w_pdfjs_require__(202);\n\nvar _stream = __w_pdfjs_require__(205);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar BasePdfManager = /*#__PURE__*/function () {\n function BasePdfManager() {\n _classCallCheck(this, BasePdfManager);\n\n if (this.constructor === BasePdfManager) {\n (0, _util.unreachable)(\"Cannot initialize BasePdfManager.\");\n }\n }\n\n _createClass(BasePdfManager, [{\n key: \"onLoadedStream\",\n value: function onLoadedStream() {\n (0, _util.unreachable)(\"Abstract method `onLoadedStream` called\");\n }\n }, {\n key: \"ensureDoc\",\n value: function ensureDoc(prop, args) {\n return this.ensure(this.pdfDocument, prop, args);\n }\n }, {\n key: \"ensureXRef\",\n value: function ensureXRef(prop, args) {\n return this.ensure(this.pdfDocument.xref, prop, args);\n }\n }, {\n key: \"ensureCatalog\",\n value: function ensureCatalog(prop, args) {\n return this.ensure(this.pdfDocument.catalog, prop, args);\n }\n }, {\n key: \"getPage\",\n value: function getPage(pageIndex) {\n return this.pdfDocument.getPage(pageIndex);\n }\n }, {\n key: \"fontFallback\",\n value: function fontFallback(id, handler) {\n return this.pdfDocument.fontFallback(id, handler);\n }\n }, {\n key: \"cleanup\",\n value: function cleanup() {\n var manuallyTriggered = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n return this.pdfDocument.cleanup(manuallyTriggered);\n }\n }, {\n key: \"ensure\",\n value: function () {\n var _ensure = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee(obj, prop, args) {\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n (0, _util.unreachable)(\"Abstract method `ensure` called\");\n\n case 1:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n function ensure(_x, _x2, _x3) {\n return _ensure.apply(this, arguments);\n }\n\n return ensure;\n }()\n }, {\n key: \"requestRange\",\n value: function requestRange(begin, end) {\n (0, _util.unreachable)(\"Abstract method `requestRange` called\");\n }\n }, {\n key: \"requestLoadedStream\",\n value: function requestLoadedStream() {\n (0, _util.unreachable)(\"Abstract method `requestLoadedStream` called\");\n }\n }, {\n key: \"sendProgressiveData\",\n value: function sendProgressiveData(chunk) {\n (0, _util.unreachable)(\"Abstract method `sendProgressiveData` called\");\n }\n }, {\n key: \"updatePassword\",\n value: function updatePassword(password) {\n this._password = password;\n }\n }, {\n key: \"terminate\",\n value: function terminate(reason) {\n (0, _util.unreachable)(\"Abstract method `terminate` called\");\n }\n }, {\n key: \"docId\",\n get: function get() {\n return this._docId;\n }\n }, {\n key: \"password\",\n get: function get() {\n return this._password;\n }\n }, {\n key: \"docBaseUrl\",\n get: function get() {\n var docBaseUrl = null;\n\n if (this._docBaseUrl) {\n var absoluteUrl = (0, _util.createValidAbsoluteUrl)(this._docBaseUrl);\n\n if (absoluteUrl) {\n docBaseUrl = absoluteUrl.href;\n } else {\n (0, _util.warn)(\"Invalid absolute docBaseUrl: \\\"\".concat(this._docBaseUrl, \"\\\".\"));\n }\n }\n\n return (0, _util.shadow)(this, \"docBaseUrl\", docBaseUrl);\n }\n }]);\n\n return BasePdfManager;\n}();\n\nvar LocalPdfManager = /*#__PURE__*/function (_BasePdfManager) {\n _inherits(LocalPdfManager, _BasePdfManager);\n\n var _super = _createSuper(LocalPdfManager);\n\n function LocalPdfManager(docId, data, password, evaluatorOptions, docBaseUrl) {\n var _this;\n\n _classCallCheck(this, LocalPdfManager);\n\n _this = _super.call(this);\n _this._docId = docId;\n _this._password = password;\n _this._docBaseUrl = docBaseUrl;\n _this.evaluatorOptions = evaluatorOptions;\n var stream = new _stream.Stream(data);\n _this.pdfDocument = new _document.PDFDocument(_assertThisInitialized(_this), stream);\n _this._loadedStreamPromise = Promise.resolve(stream);\n return _this;\n }\n\n _createClass(LocalPdfManager, [{\n key: \"ensure\",\n value: function () {\n var _ensure2 = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee2(obj, prop, args) {\n var value;\n return _regenerator[\"default\"].wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n value = obj[prop];\n\n if (!(typeof value === \"function\")) {\n _context2.next = 3;\n break;\n }\n\n return _context2.abrupt(\"return\", value.apply(obj, args));\n\n case 3:\n return _context2.abrupt(\"return\", value);\n\n case 4:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n\n function ensure(_x4, _x5, _x6) {\n return _ensure2.apply(this, arguments);\n }\n\n return ensure;\n }()\n }, {\n key: \"requestRange\",\n value: function requestRange(begin, end) {\n return Promise.resolve();\n }\n }, {\n key: \"requestLoadedStream\",\n value: function requestLoadedStream() {}\n }, {\n key: \"onLoadedStream\",\n value: function onLoadedStream() {\n return this._loadedStreamPromise;\n }\n }, {\n key: \"terminate\",\n value: function terminate(reason) {}\n }]);\n\n return LocalPdfManager;\n}(BasePdfManager);\n\nexports.LocalPdfManager = LocalPdfManager;\n\nvar NetworkPdfManager = /*#__PURE__*/function (_BasePdfManager2) {\n _inherits(NetworkPdfManager, _BasePdfManager2);\n\n var _super2 = _createSuper(NetworkPdfManager);\n\n function NetworkPdfManager(docId, pdfNetworkStream, args, evaluatorOptions, docBaseUrl) {\n var _this2;\n\n _classCallCheck(this, NetworkPdfManager);\n\n _this2 = _super2.call(this);\n _this2._docId = docId;\n _this2._password = args.password;\n _this2._docBaseUrl = docBaseUrl;\n _this2.msgHandler = args.msgHandler;\n _this2.evaluatorOptions = evaluatorOptions;\n _this2.streamManager = new _chunked_stream.ChunkedStreamManager(pdfNetworkStream, {\n msgHandler: args.msgHandler,\n length: args.length,\n disableAutoFetch: args.disableAutoFetch,\n rangeChunkSize: args.rangeChunkSize\n });\n _this2.pdfDocument = new _document.PDFDocument(_assertThisInitialized(_this2), _this2.streamManager.getStream());\n return _this2;\n }\n\n _createClass(NetworkPdfManager, [{\n key: \"ensure\",\n value: function () {\n var _ensure3 = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee3(obj, prop, args) {\n var value;\n return _regenerator[\"default\"].wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.prev = 0;\n value = obj[prop];\n\n if (!(typeof value === \"function\")) {\n _context3.next = 4;\n break;\n }\n\n return _context3.abrupt(\"return\", value.apply(obj, args));\n\n case 4:\n return _context3.abrupt(\"return\", value);\n\n case 7:\n _context3.prev = 7;\n _context3.t0 = _context3[\"catch\"](0);\n\n if (_context3.t0 instanceof _core_utils.MissingDataException) {\n _context3.next = 11;\n break;\n }\n\n throw _context3.t0;\n\n case 11:\n _context3.next = 13;\n return this.requestRange(_context3.t0.begin, _context3.t0.end);\n\n case 13:\n return _context3.abrupt(\"return\", this.ensure(obj, prop, args));\n\n case 14:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this, [[0, 7]]);\n }));\n\n function ensure(_x7, _x8, _x9) {\n return _ensure3.apply(this, arguments);\n }\n\n return ensure;\n }()\n }, {\n key: \"requestRange\",\n value: function requestRange(begin, end) {\n return this.streamManager.requestRange(begin, end);\n }\n }, {\n key: \"requestLoadedStream\",\n value: function requestLoadedStream() {\n this.streamManager.requestAllChunks();\n }\n }, {\n key: \"sendProgressiveData\",\n value: function sendProgressiveData(chunk) {\n this.streamManager.onReceiveData({\n chunk: chunk\n });\n }\n }, {\n key: \"onLoadedStream\",\n value: function onLoadedStream() {\n return this.streamManager.onLoadedStream();\n }\n }, {\n key: \"terminate\",\n value: function terminate(reason) {\n this.streamManager.abort(reason);\n }\n }]);\n\n return NetworkPdfManager;\n}(BasePdfManager);\n\nexports.NetworkPdfManager = NetworkPdfManager;\n\n/***/ }),\n/* 200 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ChunkedStreamManager = exports.ChunkedStream = void 0;\n\nvar _util = __w_pdfjs_require__(5);\n\nvar _core_utils = __w_pdfjs_require__(201);\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar ChunkedStream = /*#__PURE__*/function () {\n function ChunkedStream(length, chunkSize, manager) {\n _classCallCheck(this, ChunkedStream);\n\n this.bytes = new Uint8Array(length);\n this.start = 0;\n this.pos = 0;\n this.end = length;\n this.chunkSize = chunkSize;\n this.loadedChunks = [];\n this.numChunksLoaded = 0;\n this.numChunks = Math.ceil(length / chunkSize);\n this.manager = manager;\n this.progressiveDataLength = 0;\n this.lastSuccessfulEnsureByteChunk = -1;\n }\n\n _createClass(ChunkedStream, [{\n key: \"getMissingChunks\",\n value: function getMissingChunks() {\n var chunks = [];\n\n for (var chunk = 0, n = this.numChunks; chunk < n; ++chunk) {\n if (!this.loadedChunks[chunk]) {\n chunks.push(chunk);\n }\n }\n\n return chunks;\n }\n }, {\n key: \"getBaseStreams\",\n value: function getBaseStreams() {\n return [this];\n }\n }, {\n key: \"allChunksLoaded\",\n value: function allChunksLoaded() {\n return this.numChunksLoaded === this.numChunks;\n }\n }, {\n key: \"onReceiveData\",\n value: function onReceiveData(begin, chunk) {\n var chunkSize = this.chunkSize;\n\n if (begin % chunkSize !== 0) {\n throw new Error(\"Bad begin offset: \".concat(begin));\n }\n\n var end = begin + chunk.byteLength;\n\n if (end % chunkSize !== 0 && end !== this.bytes.length) {\n throw new Error(\"Bad end offset: \".concat(end));\n }\n\n this.bytes.set(new Uint8Array(chunk), begin);\n var beginChunk = Math.floor(begin / chunkSize);\n var endChunk = Math.floor((end - 1) / chunkSize) + 1;\n\n for (var curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n if (!this.loadedChunks[curChunk]) {\n this.loadedChunks[curChunk] = true;\n ++this.numChunksLoaded;\n }\n }\n }\n }, {\n key: \"onReceiveProgressiveData\",\n value: function onReceiveProgressiveData(data) {\n var position = this.progressiveDataLength;\n var beginChunk = Math.floor(position / this.chunkSize);\n this.bytes.set(new Uint8Array(data), position);\n position += data.byteLength;\n this.progressiveDataLength = position;\n var endChunk = position >= this.end ? this.numChunks : Math.floor(position / this.chunkSize);\n\n for (var curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n if (!this.loadedChunks[curChunk]) {\n this.loadedChunks[curChunk] = true;\n ++this.numChunksLoaded;\n }\n }\n }\n }, {\n key: \"ensureByte\",\n value: function ensureByte(pos) {\n if (pos < this.progressiveDataLength) {\n return;\n }\n\n var chunk = Math.floor(pos / this.chunkSize);\n\n if (chunk === this.lastSuccessfulEnsureByteChunk) {\n return;\n }\n\n if (!this.loadedChunks[chunk]) {\n throw new _core_utils.MissingDataException(pos, pos + 1);\n }\n\n this.lastSuccessfulEnsureByteChunk = chunk;\n }\n }, {\n key: \"ensureRange\",\n value: function ensureRange(begin, end) {\n if (begin >= end) {\n return;\n }\n\n if (end <= this.progressiveDataLength) {\n return;\n }\n\n var chunkSize = this.chunkSize;\n var beginChunk = Math.floor(begin / chunkSize);\n var endChunk = Math.floor((end - 1) / chunkSize) + 1;\n\n for (var chunk = beginChunk; chunk < endChunk; ++chunk) {\n if (!this.loadedChunks[chunk]) {\n throw new _core_utils.MissingDataException(begin, end);\n }\n }\n }\n }, {\n key: \"nextEmptyChunk\",\n value: function nextEmptyChunk(beginChunk) {\n var numChunks = this.numChunks;\n\n for (var i = 0; i < numChunks; ++i) {\n var chunk = (beginChunk + i) % numChunks;\n\n if (!this.loadedChunks[chunk]) {\n return chunk;\n }\n }\n\n return null;\n }\n }, {\n key: \"hasChunk\",\n value: function hasChunk(chunk) {\n return !!this.loadedChunks[chunk];\n }\n }, {\n key: \"getByte\",\n value: function getByte() {\n var pos = this.pos;\n\n if (pos >= this.end) {\n return -1;\n }\n\n if (pos >= this.progressiveDataLength) {\n this.ensureByte(pos);\n }\n\n return this.bytes[this.pos++];\n }\n }, {\n key: \"getUint16\",\n value: function getUint16() {\n var b0 = this.getByte();\n var b1 = this.getByte();\n\n if (b0 === -1 || b1 === -1) {\n return -1;\n }\n\n return (b0 << 8) + b1;\n }\n }, {\n key: \"getInt32\",\n value: function getInt32() {\n var b0 = this.getByte();\n var b1 = this.getByte();\n var b2 = this.getByte();\n var b3 = this.getByte();\n return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n }\n }, {\n key: \"getBytes\",\n value: function getBytes(length) {\n var forceClamped = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var bytes = this.bytes;\n var pos = this.pos;\n var strEnd = this.end;\n\n if (!length) {\n if (strEnd > this.progressiveDataLength) {\n this.ensureRange(pos, strEnd);\n }\n\n var _subarray = bytes.subarray(pos, strEnd);\n\n return forceClamped ? new Uint8ClampedArray(_subarray) : _subarray;\n }\n\n var end = pos + length;\n\n if (end > strEnd) {\n end = strEnd;\n }\n\n if (end > this.progressiveDataLength) {\n this.ensureRange(pos, end);\n }\n\n this.pos = end;\n var subarray = bytes.subarray(pos, end);\n return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n }\n }, {\n key: \"peekByte\",\n value: function peekByte() {\n var peekedByte = this.getByte();\n\n if (peekedByte !== -1) {\n this.pos--;\n }\n\n return peekedByte;\n }\n }, {\n key: \"peekBytes\",\n value: function peekBytes(length) {\n var forceClamped = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var bytes = this.getBytes(length, forceClamped);\n this.pos -= bytes.length;\n return bytes;\n }\n }, {\n key: \"getByteRange\",\n value: function getByteRange(begin, end) {\n if (begin < 0) {\n begin = 0;\n }\n\n if (end > this.end) {\n end = this.end;\n }\n\n if (end > this.progressiveDataLength) {\n this.ensureRange(begin, end);\n }\n\n return this.bytes.subarray(begin, end);\n }\n }, {\n key: \"skip\",\n value: function skip(n) {\n if (!n) {\n n = 1;\n }\n\n this.pos += n;\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.pos = this.start;\n }\n }, {\n key: \"moveStart\",\n value: function moveStart() {\n this.start = this.pos;\n }\n }, {\n key: \"makeSubStream\",\n value: function makeSubStream(start, length, dict) {\n if (length) {\n if (start + length > this.progressiveDataLength) {\n this.ensureRange(start, start + length);\n }\n } else {\n if (start >= this.progressiveDataLength) {\n this.ensureByte(start);\n }\n }\n\n function ChunkedStreamSubstream() {}\n\n ChunkedStreamSubstream.prototype = Object.create(this);\n\n ChunkedStreamSubstream.prototype.getMissingChunks = function () {\n var chunkSize = this.chunkSize;\n var beginChunk = Math.floor(this.start / chunkSize);\n var endChunk = Math.floor((this.end - 1) / chunkSize) + 1;\n var missingChunks = [];\n\n for (var chunk = beginChunk; chunk < endChunk; ++chunk) {\n if (!this.loadedChunks[chunk]) {\n missingChunks.push(chunk);\n }\n }\n\n return missingChunks;\n };\n\n ChunkedStreamSubstream.prototype.allChunksLoaded = function () {\n if (this.numChunksLoaded === this.numChunks) {\n return true;\n }\n\n return this.getMissingChunks().length === 0;\n };\n\n var 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 key: \"length\",\n get: function get() {\n return this.end - this.start;\n }\n }, {\n key: \"isEmpty\",\n get: function get() {\n return this.length === 0;\n }\n }]);\n\n return ChunkedStream;\n}();\n\nexports.ChunkedStream = ChunkedStream;\n\nvar ChunkedStreamManager = /*#__PURE__*/function () {\n function ChunkedStreamManager(pdfNetworkStream, args) {\n _classCallCheck(this, ChunkedStreamManager);\n\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 this.currRequestId = 0;\n this.chunksNeededByRequest = Object.create(null);\n this.requestsByChunk = Object.create(null);\n this.promisesByRequest = Object.create(null);\n this.progressiveDataLength = 0;\n this.aborted = false;\n this._loadedStreamCapability = (0, _util.createPromiseCapability)();\n }\n\n _createClass(ChunkedStreamManager, [{\n key: \"onLoadedStream\",\n value: function onLoadedStream() {\n return this._loadedStreamCapability.promise;\n }\n }, {\n key: \"sendRequest\",\n value: function sendRequest(begin, end) {\n var _this = this;\n\n var rangeReader = this.pdfNetworkStream.getRangeReader(begin, end);\n\n if (!rangeReader.isStreamingSupported) {\n rangeReader.onProgress = this.onProgress.bind(this);\n }\n\n var chunks = [],\n loaded = 0;\n var promise = new Promise(function (resolve, reject) {\n var readChunk = function readChunk(chunk) {\n try {\n if (!chunk.done) {\n var data = chunk.value;\n chunks.push(data);\n loaded += (0, _util.arrayByteLength)(data);\n\n if (rangeReader.isStreamingSupported) {\n _this.onProgress({\n loaded: loaded\n });\n }\n\n rangeReader.read().then(readChunk, reject);\n return;\n }\n\n var chunkData = (0, _util.arraysToBytes)(chunks);\n chunks = null;\n resolve(chunkData);\n } catch (e) {\n reject(e);\n }\n };\n\n rangeReader.read().then(readChunk, reject);\n });\n promise.then(function (data) {\n if (_this.aborted) {\n return;\n }\n\n _this.onReceiveData({\n chunk: data,\n begin: begin\n });\n });\n }\n }, {\n key: \"requestAllChunks\",\n value: function requestAllChunks() {\n var missingChunks = this.stream.getMissingChunks();\n\n this._requestChunks(missingChunks);\n\n return this._loadedStreamCapability.promise;\n }\n }, {\n key: \"_requestChunks\",\n value: function _requestChunks(chunks) {\n var requestId = this.currRequestId++;\n var chunksNeeded = Object.create(null);\n this.chunksNeededByRequest[requestId] = chunksNeeded;\n\n var _iterator = _createForOfIteratorHelper(chunks),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _chunk = _step.value;\n\n if (!this.stream.hasChunk(_chunk)) {\n chunksNeeded[_chunk] = true;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n if ((0, _util.isEmptyObj)(chunksNeeded)) {\n return Promise.resolve();\n }\n\n var capability = (0, _util.createPromiseCapability)();\n this.promisesByRequest[requestId] = capability;\n var chunksToRequest = [];\n\n for (var chunk in chunksNeeded) {\n chunk = chunk | 0;\n\n if (!(chunk in this.requestsByChunk)) {\n this.requestsByChunk[chunk] = [];\n chunksToRequest.push(chunk);\n }\n\n this.requestsByChunk[chunk].push(requestId);\n }\n\n if (!chunksToRequest.length) {\n return capability.promise;\n }\n\n var groupedChunksToRequest = this.groupChunks(chunksToRequest);\n\n var _iterator2 = _createForOfIteratorHelper(groupedChunksToRequest),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var groupedChunk = _step2.value;\n var begin = groupedChunk.beginChunk * this.chunkSize;\n var end = Math.min(groupedChunk.endChunk * this.chunkSize, this.length);\n this.sendRequest(begin, end);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n return capability.promise;\n }\n }, {\n key: \"getStream\",\n value: function getStream() {\n return this.stream;\n }\n }, {\n key: \"requestRange\",\n value: function requestRange(begin, end) {\n end = Math.min(end, this.length);\n var beginChunk = this.getBeginChunk(begin);\n var endChunk = this.getEndChunk(end);\n var chunks = [];\n\n for (var chunk = beginChunk; chunk < endChunk; ++chunk) {\n chunks.push(chunk);\n }\n\n return this._requestChunks(chunks);\n }\n }, {\n key: \"requestRanges\",\n value: function requestRanges() {\n var ranges = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var chunksToRequest = [];\n\n var _iterator3 = _createForOfIteratorHelper(ranges),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var range = _step3.value;\n var beginChunk = this.getBeginChunk(range.begin);\n var endChunk = this.getEndChunk(range.end);\n\n for (var chunk = beginChunk; chunk < endChunk; ++chunk) {\n if (!chunksToRequest.includes(chunk)) {\n chunksToRequest.push(chunk);\n }\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n\n chunksToRequest.sort(function (a, b) {\n return a - b;\n });\n return this._requestChunks(chunksToRequest);\n }\n }, {\n key: \"groupChunks\",\n value: function groupChunks(chunks) {\n var groupedChunks = [];\n var beginChunk = -1;\n var prevChunk = -1;\n\n for (var i = 0, ii = chunks.length; i < ii; ++i) {\n var chunk = chunks[i];\n\n if (beginChunk < 0) {\n beginChunk = chunk;\n }\n\n if (prevChunk >= 0 && prevChunk + 1 !== chunk) {\n groupedChunks.push({\n beginChunk: beginChunk,\n endChunk: prevChunk + 1\n });\n beginChunk = chunk;\n }\n\n if (i + 1 === chunks.length) {\n groupedChunks.push({\n beginChunk: beginChunk,\n endChunk: chunk + 1\n });\n }\n\n prevChunk = chunk;\n }\n\n return groupedChunks;\n }\n }, {\n key: \"onProgress\",\n value: function onProgress(args) {\n this.msgHandler.send(\"DocProgress\", {\n loaded: this.stream.numChunksLoaded * this.chunkSize + args.loaded,\n total: this.length\n });\n }\n }, {\n key: \"onReceiveData\",\n value: function onReceiveData(args) {\n var chunk = args.chunk;\n var isProgressive = args.begin === undefined;\n var begin = isProgressive ? this.progressiveDataLength : args.begin;\n var end = begin + chunk.byteLength;\n var beginChunk = Math.floor(begin / this.chunkSize);\n var endChunk = end < this.length ? Math.floor(end / this.chunkSize) : Math.ceil(end / this.chunkSize);\n\n if (isProgressive) {\n this.stream.onReceiveProgressiveData(chunk);\n this.progressiveDataLength = end;\n } else {\n this.stream.onReceiveData(begin, chunk);\n }\n\n if (this.stream.allChunksLoaded()) {\n this._loadedStreamCapability.resolve(this.stream);\n }\n\n var loadedRequests = [];\n\n for (var curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n var requestIds = this.requestsByChunk[curChunk] || [];\n delete this.requestsByChunk[curChunk];\n\n var _iterator4 = _createForOfIteratorHelper(requestIds),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var requestId = _step4.value;\n var chunksNeeded = this.chunksNeededByRequest[requestId];\n\n if (curChunk in chunksNeeded) {\n delete chunksNeeded[curChunk];\n }\n\n if (!(0, _util.isEmptyObj)(chunksNeeded)) {\n continue;\n }\n\n loadedRequests.push(requestId);\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n }\n\n if (!this.disableAutoFetch && (0, _util.isEmptyObj)(this.requestsByChunk)) {\n var nextEmptyChunk;\n\n if (this.stream.numChunksLoaded === 1) {\n var lastChunk = this.stream.numChunks - 1;\n\n if (!this.stream.hasChunk(lastChunk)) {\n nextEmptyChunk = lastChunk;\n }\n } else {\n nextEmptyChunk = this.stream.nextEmptyChunk(endChunk);\n }\n\n if (Number.isInteger(nextEmptyChunk)) {\n this._requestChunks([nextEmptyChunk]);\n }\n }\n\n for (var _i = 0, _loadedRequests = loadedRequests; _i < _loadedRequests.length; _i++) {\n var _requestId = _loadedRequests[_i];\n var capability = this.promisesByRequest[_requestId];\n delete this.promisesByRequest[_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 key: \"onError\",\n value: function onError(err) {\n this._loadedStreamCapability.reject(err);\n }\n }, {\n key: \"getBeginChunk\",\n value: function getBeginChunk(begin) {\n return Math.floor(begin / this.chunkSize);\n }\n }, {\n key: \"getEndChunk\",\n value: function getEndChunk(end) {\n return Math.floor((end - 1) / this.chunkSize) + 1;\n }\n }, {\n key: \"abort\",\n value: function abort(reason) {\n this.aborted = true;\n\n if (this.pdfNetworkStream) {\n this.pdfNetworkStream.cancelAllRequests(reason);\n }\n\n for (var requestId in this.promisesByRequest) {\n this.promisesByRequest[requestId].reject(reason);\n }\n }\n }]);\n\n return ChunkedStreamManager;\n}();\n\nexports.ChunkedStreamManager = ChunkedStreamManager;\n\n/***/ }),\n/* 201 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getLookupTableFactory = getLookupTableFactory;\nexports.getInheritableProperty = getInheritableProperty;\nexports.toRomanNumerals = toRomanNumerals;\nexports.log2 = log2;\nexports.readInt8 = readInt8;\nexports.readUint16 = readUint16;\nexports.readUint32 = readUint32;\nexports.isWhiteSpace = isWhiteSpace;\nexports.XRefParseException = exports.XRefEntryException = exports.MissingDataException = void 0;\n\nvar _util = __w_pdfjs_require__(5);\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction getLookupTableFactory(initializer) {\n var lookup;\n return function () {\n if (initializer) {\n lookup = Object.create(null);\n initializer(lookup);\n initializer = null;\n }\n\n return lookup;\n };\n}\n\nvar MissingDataException = /*#__PURE__*/function (_BaseException) {\n _inherits(MissingDataException, _BaseException);\n\n var _super = _createSuper(MissingDataException);\n\n function MissingDataException(begin, end) {\n var _this;\n\n _classCallCheck(this, MissingDataException);\n\n _this = _super.call(this, \"Missing data [\".concat(begin, \", \").concat(end, \")\"));\n _this.begin = begin;\n _this.end = end;\n return _this;\n }\n\n return MissingDataException;\n}(_util.BaseException);\n\nexports.MissingDataException = MissingDataException;\n\nvar XRefEntryException = /*#__PURE__*/function (_BaseException2) {\n _inherits(XRefEntryException, _BaseException2);\n\n var _super2 = _createSuper(XRefEntryException);\n\n function XRefEntryException() {\n _classCallCheck(this, XRefEntryException);\n\n return _super2.apply(this, arguments);\n }\n\n return XRefEntryException;\n}(_util.BaseException);\n\nexports.XRefEntryException = XRefEntryException;\n\nvar XRefParseException = /*#__PURE__*/function (_BaseException3) {\n _inherits(XRefParseException, _BaseException3);\n\n var _super3 = _createSuper(XRefParseException);\n\n function XRefParseException() {\n _classCallCheck(this, XRefParseException);\n\n return _super3.apply(this, arguments);\n }\n\n return XRefParseException;\n}(_util.BaseException);\n\nexports.XRefParseException = XRefParseException;\n\nfunction getInheritableProperty(_ref) {\n var dict = _ref.dict,\n key = _ref.key,\n _ref$getArray = _ref.getArray,\n getArray = _ref$getArray === void 0 ? false : _ref$getArray,\n _ref$stopWhenFound = _ref.stopWhenFound,\n stopWhenFound = _ref$stopWhenFound === void 0 ? true : _ref$stopWhenFound;\n var LOOP_LIMIT = 100;\n var loopCount = 0;\n var values;\n\n while (dict) {\n var value = getArray ? dict.getArray(key) : dict.get(key);\n\n if (value !== undefined) {\n if (stopWhenFound) {\n return value;\n }\n\n if (!values) {\n values = [];\n }\n\n values.push(value);\n }\n\n if (++loopCount > LOOP_LIMIT) {\n (0, _util.warn)(\"getInheritableProperty: maximum loop count exceeded for \\\"\".concat(key, \"\\\"\"));\n break;\n }\n\n dict = dict.get(\"Parent\");\n }\n\n return values;\n}\n\nvar ROMAN_NUMBER_MAP = [\"\", \"C\", \"CC\", \"CCC\", \"CD\", \"D\", \"DC\", \"DCC\", \"DCCC\", \"CM\", \"\", \"X\", \"XX\", \"XXX\", \"XL\", \"L\", \"LX\", \"LXX\", \"LXXX\", \"XC\", \"\", \"I\", \"II\", \"III\", \"IV\", \"V\", \"VI\", \"VII\", \"VIII\", \"IX\"];\n\nfunction toRomanNumerals(number) {\n var lowerCase = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n (0, _util.assert)(Number.isInteger(number) && number > 0, \"The number should be a positive integer.\");\n var romanBuf = [];\n var pos;\n\n while (number >= 1000) {\n number -= 1000;\n romanBuf.push(\"M\");\n }\n\n pos = number / 100 | 0;\n number %= 100;\n romanBuf.push(ROMAN_NUMBER_MAP[pos]);\n pos = number / 10 | 0;\n number %= 10;\n romanBuf.push(ROMAN_NUMBER_MAP[10 + pos]);\n romanBuf.push(ROMAN_NUMBER_MAP[20 + number]);\n var romanStr = romanBuf.join(\"\");\n return lowerCase ? romanStr.toLowerCase() : romanStr;\n}\n\nfunction log2(x) {\n if (x <= 0) {\n return 0;\n }\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 (data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3]) >>> 0;\n}\n\nfunction isWhiteSpace(ch) {\n return ch === 0x20 || ch === 0x09 || ch === 0x0d || ch === 0x0a;\n}\n\n/***/ }),\n/* 202 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PDFDocument = exports.Page = void 0;\n\nvar _regenerator = _interopRequireDefault(__w_pdfjs_require__(2));\n\nvar _util = __w_pdfjs_require__(5);\n\nvar _obj = __w_pdfjs_require__(203);\n\nvar _primitives = __w_pdfjs_require__(198);\n\nvar _core_utils = __w_pdfjs_require__(201);\n\nvar _stream = __w_pdfjs_require__(205);\n\nvar _annotation = __w_pdfjs_require__(218);\n\nvar _crypto = __w_pdfjs_require__(215);\n\nvar _parser = __w_pdfjs_require__(204);\n\nvar _operator_list = __w_pdfjs_require__(219);\n\nvar _evaluator = __w_pdfjs_require__(220);\n\nvar _function = __w_pdfjs_require__(234);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar DEFAULT_USER_UNIT = 1.0;\nvar LETTER_SIZE_MEDIABOX = [0, 0, 612, 792];\n\nfunction isAnnotationRenderable(annotation, intent) {\n return intent === \"display\" && annotation.viewable || intent === \"print\" && annotation.printable;\n}\n\nvar Page = /*#__PURE__*/function () {\n function Page(_ref) {\n var pdfManager = _ref.pdfManager,\n xref = _ref.xref,\n pageIndex = _ref.pageIndex,\n pageDict = _ref.pageDict,\n ref = _ref.ref,\n fontCache = _ref.fontCache,\n builtInCMapCache = _ref.builtInCMapCache,\n globalImageCache = _ref.globalImageCache,\n pdfFunctionFactory = _ref.pdfFunctionFactory;\n\n _classCallCheck(this, Page);\n\n this.pdfManager = pdfManager;\n this.pageIndex = pageIndex;\n this.pageDict = pageDict;\n this.xref = xref;\n this.ref = ref;\n this.fontCache = fontCache;\n this.builtInCMapCache = builtInCMapCache;\n this.globalImageCache = globalImageCache;\n this.pdfFunctionFactory = pdfFunctionFactory;\n this.evaluatorOptions = pdfManager.evaluatorOptions;\n this.resourcesPromise = null;\n var idCounters = {\n obj: 0\n };\n this.idFactory = {\n createObjId: function createObjId() {\n return \"p\".concat(pageIndex, \"_\").concat(++idCounters.obj);\n },\n getDocId: function getDocId() {\n return \"g_\".concat(pdfManager.docId);\n }\n };\n }\n\n _createClass(Page, [{\n key: \"_getInheritableProperty\",\n value: function _getInheritableProperty(key) {\n var getArray = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var value = (0, _core_utils.getInheritableProperty)({\n dict: this.pageDict,\n key: key,\n getArray: getArray,\n stopWhenFound: false\n });\n\n if (!Array.isArray(value)) {\n return value;\n }\n\n if (value.length === 1 || !(0, _primitives.isDict)(value[0])) {\n return value[0];\n }\n\n return _primitives.Dict.merge(this.xref, value);\n }\n }, {\n key: \"_getBoundingBox\",\n value: function _getBoundingBox(name) {\n var box = this._getInheritableProperty(name, 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\n (0, _util.warn)(\"Empty /\".concat(name, \" entry.\"));\n }\n\n return null;\n }\n }, {\n key: \"getContentStream\",\n value: function getContentStream() {\n var content = this.content;\n var stream;\n\n if (Array.isArray(content)) {\n var xref = this.xref;\n var streams = [];\n\n var _iterator = _createForOfIteratorHelper(content),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var subStream = _step.value;\n streams.push(xref.fetchIfRef(subStream));\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n stream = new _stream.StreamsSequenceStream(streams);\n } else if ((0, _primitives.isStream)(content)) {\n stream = content;\n } else {\n stream = new _stream.NullStream();\n }\n\n return stream;\n }\n }, {\n key: \"loadResources\",\n value: function loadResources(keys) {\n var _this = this;\n\n if (!this.resourcesPromise) {\n this.resourcesPromise = this.pdfManager.ensure(this, \"resources\");\n }\n\n return this.resourcesPromise.then(function () {\n var objectLoader = new _obj.ObjectLoader(_this.resources, keys, _this.xref);\n return objectLoader.load();\n });\n }\n }, {\n key: \"getOperatorList\",\n value: function getOperatorList(_ref2) {\n var _this2 = this;\n\n var handler = _ref2.handler,\n sink = _ref2.sink,\n task = _ref2.task,\n intent = _ref2.intent,\n renderInteractiveForms = _ref2.renderInteractiveForms;\n var contentStreamPromise = this.pdfManager.ensure(this, \"getContentStream\");\n var resourcesPromise = this.loadResources([\"ExtGState\", \"ColorSpace\", \"Pattern\", \"Shading\", \"XObject\", \"Font\"]);\n var partialEvaluator = new _evaluator.PartialEvaluator({\n xref: this.xref,\n handler: handler,\n pageIndex: this.pageIndex,\n idFactory: this.idFactory,\n fontCache: this.fontCache,\n builtInCMapCache: this.builtInCMapCache,\n globalImageCache: this.globalImageCache,\n options: this.evaluatorOptions,\n pdfFunctionFactory: this.pdfFunctionFactory\n });\n var dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);\n var pageListPromise = dataPromises.then(function (_ref3) {\n var _ref4 = _slicedToArray(_ref3, 1),\n contentStream = _ref4[0];\n\n var opList = new _operator_list.OperatorList(intent, sink, _this2.pageIndex);\n handler.send(\"StartRenderPage\", {\n transparency: partialEvaluator.hasBlendModes(_this2.resources),\n pageIndex: _this2.pageIndex,\n intent: intent\n });\n return partialEvaluator.getOperatorList({\n stream: contentStream,\n task: task,\n resources: _this2.resources,\n operatorList: opList\n }).then(function () {\n return opList;\n });\n });\n return Promise.all([pageListPromise, this._parsedAnnotations]).then(function (_ref5) {\n var _ref6 = _slicedToArray(_ref5, 2),\n pageOpList = _ref6[0],\n annotations = _ref6[1];\n\n if (annotations.length === 0) {\n pageOpList.flush(true);\n return {\n length: pageOpList.totalLength\n };\n }\n\n var opListPromises = [];\n\n var _iterator2 = _createForOfIteratorHelper(annotations),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var annotation = _step2.value;\n\n if (isAnnotationRenderable(annotation, intent)) {\n opListPromises.push(annotation.getOperatorList(partialEvaluator, task, renderInteractiveForms)[\"catch\"](function (reason) {\n (0, _util.warn)(\"getOperatorList - ignoring annotation data during \" + \"\\\"\".concat(task.name, \"\\\" task: \\\"\").concat(reason, \"\\\".\"));\n return null;\n }));\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n return Promise.all(opListPromises).then(function (opLists) {\n pageOpList.addOp(_util.OPS.beginAnnotations, []);\n\n var _iterator3 = _createForOfIteratorHelper(opLists),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var opList = _step3.value;\n pageOpList.addOpList(opList);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n\n pageOpList.addOp(_util.OPS.endAnnotations, []);\n pageOpList.flush(true);\n return {\n length: pageOpList.totalLength\n };\n });\n });\n }\n }, {\n key: \"extractTextContent\",\n value: function extractTextContent(_ref7) {\n var _this3 = this;\n\n var handler = _ref7.handler,\n task = _ref7.task,\n normalizeWhitespace = _ref7.normalizeWhitespace,\n sink = _ref7.sink,\n combineTextItems = _ref7.combineTextItems;\n var contentStreamPromise = this.pdfManager.ensure(this, \"getContentStream\");\n var resourcesPromise = this.loadResources([\"ExtGState\", \"XObject\", \"Font\"]);\n var dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);\n return dataPromises.then(function (_ref8) {\n var _ref9 = _slicedToArray(_ref8, 1),\n contentStream = _ref9[0];\n\n var partialEvaluator = new _evaluator.PartialEvaluator({\n xref: _this3.xref,\n handler: handler,\n pageIndex: _this3.pageIndex,\n idFactory: _this3.idFactory,\n fontCache: _this3.fontCache,\n builtInCMapCache: _this3.builtInCMapCache,\n globalImageCache: _this3.globalImageCache,\n options: _this3.evaluatorOptions,\n pdfFunctionFactory: _this3.pdfFunctionFactory\n });\n return partialEvaluator.getTextContent({\n stream: contentStream,\n task: task,\n resources: _this3.resources,\n normalizeWhitespace: normalizeWhitespace,\n combineTextItems: combineTextItems,\n sink: sink\n });\n });\n }\n }, {\n key: \"getAnnotationsData\",\n value: function getAnnotationsData(intent) {\n return this._parsedAnnotations.then(function (annotations) {\n var annotationsData = [];\n\n for (var i = 0, ii = annotations.length; i < ii; i++) {\n if (!intent || isAnnotationRenderable(annotations[i], intent)) {\n annotationsData.push(annotations[i].data);\n }\n }\n\n return annotationsData;\n });\n }\n }, {\n key: \"content\",\n get: function get() {\n return this.pageDict.get(\"Contents\");\n }\n }, {\n key: \"resources\",\n get: function get() {\n return (0, _util.shadow)(this, \"resources\", this._getInheritableProperty(\"Resources\") || _primitives.Dict.empty);\n }\n }, {\n key: \"mediaBox\",\n get: function get() {\n return (0, _util.shadow)(this, \"mediaBox\", this._getBoundingBox(\"MediaBox\") || LETTER_SIZE_MEDIABOX);\n }\n }, {\n key: \"cropBox\",\n get: function get() {\n return (0, _util.shadow)(this, \"cropBox\", this._getBoundingBox(\"CropBox\") || this.mediaBox);\n }\n }, {\n key: \"userUnit\",\n get: function get() {\n var obj = this.pageDict.get(\"UserUnit\");\n\n if (!(0, _util.isNum)(obj) || obj <= 0) {\n obj = DEFAULT_USER_UNIT;\n }\n\n return (0, _util.shadow)(this, \"userUnit\", obj);\n }\n }, {\n key: \"view\",\n get: function get() {\n var cropBox = this.cropBox,\n mediaBox = this.mediaBox;\n var view;\n\n if (cropBox === mediaBox || (0, _util.isArrayEqual)(cropBox, mediaBox)) {\n view = mediaBox;\n } else {\n var box = _util.Util.intersect(cropBox, mediaBox);\n\n if (box && box[2] - box[0] !== 0 && box[3] - box[1] !== 0) {\n view = box;\n } else {\n (0, _util.warn)(\"Empty /CropBox and /MediaBox intersection.\");\n }\n }\n\n return (0, _util.shadow)(this, \"view\", view || mediaBox);\n }\n }, {\n key: \"rotate\",\n get: function get() {\n var rotate = this._getInheritableProperty(\"Rotate\") || 0;\n\n if (rotate % 90 !== 0) {\n rotate = 0;\n } else if (rotate >= 360) {\n rotate = rotate % 360;\n } else if (rotate < 0) {\n rotate = (rotate % 360 + 360) % 360;\n }\n\n return (0, _util.shadow)(this, \"rotate\", rotate);\n }\n }, {\n key: \"annotations\",\n get: function get() {\n return (0, _util.shadow)(this, \"annotations\", this._getInheritableProperty(\"Annots\") || []);\n }\n }, {\n key: \"_parsedAnnotations\",\n get: function get() {\n var _this4 = this;\n\n var parsedAnnotations = this.pdfManager.ensure(this, \"annotations\").then(function () {\n var annotationPromises = [];\n\n var _iterator4 = _createForOfIteratorHelper(_this4.annotations),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var annotationRef = _step4.value;\n annotationPromises.push(_annotation.AnnotationFactory.create(_this4.xref, annotationRef, _this4.pdfManager, _this4.idFactory)[\"catch\"](function (reason) {\n (0, _util.warn)(\"_parsedAnnotations: \\\"\".concat(reason, \"\\\".\"));\n return null;\n }));\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n\n return Promise.all(annotationPromises).then(function (annotations) {\n return annotations.filter(function (annotation) {\n return !!annotation;\n });\n });\n });\n return (0, _util.shadow)(this, \"_parsedAnnotations\", parsedAnnotations);\n }\n }]);\n\n return Page;\n}();\n\nexports.Page = Page;\nvar PDF_HEADER_SIGNATURE = new Uint8Array([0x25, 0x50, 0x44, 0x46, 0x2d]);\nvar STARTXREF_SIGNATURE = new Uint8Array([0x73, 0x74, 0x61, 0x72, 0x74, 0x78, 0x72, 0x65, 0x66]);\nvar ENDOBJ_SIGNATURE = new Uint8Array([0x65, 0x6e, 0x64, 0x6f, 0x62, 0x6a]);\nvar FINGERPRINT_FIRST_BYTES = 1024;\nvar EMPTY_FINGERPRINT = \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar PDF_HEADER_VERSION_REGEXP = /^[1-9]\\.[0-9]$/;\n\nfunction find(stream, signature) {\n var limit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1024;\n var backwards = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n var signatureLength = signature.length;\n var scanBytes = stream.peekBytes(limit);\n var scanLength = scanBytes.length - signatureLength;\n\n if (scanLength <= 0) {\n return false;\n }\n\n if (backwards) {\n var signatureEnd = signatureLength - 1;\n var pos = scanBytes.length - 1;\n\n while (pos >= signatureEnd) {\n var j = 0;\n\n while (j < signatureLength && scanBytes[pos - j] === signature[signatureEnd - j]) {\n j++;\n }\n\n if (j >= signatureLength) {\n stream.pos += pos - signatureEnd;\n return true;\n }\n\n pos--;\n }\n } else {\n var _pos = 0;\n\n while (_pos <= scanLength) {\n var _j = 0;\n\n while (_j < signatureLength && scanBytes[_pos + _j] === signature[_j]) {\n _j++;\n }\n\n if (_j >= signatureLength) {\n stream.pos += _pos;\n return true;\n }\n\n _pos++;\n }\n }\n\n return false;\n}\n\nvar PDFDocument = /*#__PURE__*/function () {\n function PDFDocument(pdfManager, arg) {\n _classCallCheck(this, PDFDocument);\n\n var stream;\n\n if ((0, _primitives.isStream)(arg)) {\n stream = arg;\n } else if ((0, _util.isArrayBuffer)(arg)) {\n stream = new _stream.Stream(arg);\n } else {\n throw new Error(\"PDFDocument: Unknown argument type\");\n }\n\n if (stream.length <= 0) {\n throw new _util.InvalidPDFException(\"The PDF file is empty, i.e. its size is zero bytes.\");\n }\n\n this.pdfManager = pdfManager;\n this.stream = stream;\n this.xref = new _obj.XRef(stream, pdfManager);\n this.pdfFunctionFactory = new _function.PDFFunctionFactory({\n xref: this.xref,\n isEvalSupported: pdfManager.evaluatorOptions.isEvalSupported\n });\n this._pagePromises = [];\n }\n\n _createClass(PDFDocument, [{\n key: \"parse\",\n value: function parse(recoveryMode) {\n this.setup(recoveryMode);\n var version = this.catalog.catDict.get(\"Version\");\n\n if ((0, _primitives.isName)(version)) {\n this.pdfFormatVersion = version.name;\n }\n\n try {\n this.acroForm = this.catalog.catDict.get(\"AcroForm\");\n\n if (this.acroForm) {\n this.xfa = this.acroForm.get(\"XFA\");\n var fields = this.acroForm.get(\"Fields\");\n\n if ((!Array.isArray(fields) || fields.length === 0) && !this.xfa) {\n this.acroForm = null;\n }\n }\n } catch (ex) {\n if (ex instanceof _core_utils.MissingDataException) {\n throw ex;\n }\n\n (0, _util.info)(\"Cannot fetch AcroForm entry; assuming no AcroForms are present\");\n this.acroForm = null;\n }\n\n try {\n var collection = this.catalog.catDict.get(\"Collection\");\n\n if ((0, _primitives.isDict)(collection) && collection.getKeys().length > 0) {\n this.collection = collection;\n }\n } catch (ex) {\n if (ex instanceof _core_utils.MissingDataException) {\n throw ex;\n }\n\n (0, _util.info)(\"Cannot fetch Collection dictionary.\");\n }\n }\n }, {\n key: \"checkHeader\",\n value: function checkHeader() {\n var stream = this.stream;\n stream.reset();\n\n if (!find(stream, PDF_HEADER_SIGNATURE)) {\n return;\n }\n\n stream.moveStart();\n var MAX_PDF_VERSION_LENGTH = 12;\n var version = \"\",\n ch;\n\n while ((ch = stream.getByte()) > 0x20) {\n if (version.length >= MAX_PDF_VERSION_LENGTH) {\n break;\n }\n\n version += String.fromCharCode(ch);\n }\n\n if (!this.pdfFormatVersion) {\n this.pdfFormatVersion = version.substring(5);\n }\n }\n }, {\n key: \"parseStartXRef\",\n value: function parseStartXRef() {\n this.xref.setStartXRef(this.startXRef);\n }\n }, {\n key: \"setup\",\n value: function setup(recoveryMode) {\n this.xref.parse(recoveryMode);\n this.catalog = new _obj.Catalog(this.pdfManager, this.xref);\n }\n }, {\n key: \"_getLinearizationPage\",\n value: function _getLinearizationPage(pageIndex) {\n var catalog = this.catalog,\n linearization = this.linearization;\n\n var ref = _primitives.Ref.get(linearization.objectNumberFirst, 0);\n\n return this.xref.fetchAsync(ref).then(function (obj) {\n if ((0, _primitives.isDict)(obj, \"Page\") || (0, _primitives.isDict)(obj) && !obj.has(\"Type\") && obj.has(\"Contents\")) {\n if (ref && !catalog.pageKidsCountCache.has(ref)) {\n catalog.pageKidsCountCache.put(ref, 1);\n }\n\n return [obj, ref];\n }\n\n throw new _util.FormatError(\"The Linearization dictionary doesn't point \" + \"to a valid Page dictionary.\");\n })[\"catch\"](function (reason) {\n (0, _util.info)(reason);\n return catalog.getPageDict(pageIndex);\n });\n }\n }, {\n key: \"getPage\",\n value: function getPage(pageIndex) {\n var _this5 = this;\n\n if (this._pagePromises[pageIndex] !== undefined) {\n return this._pagePromises[pageIndex];\n }\n\n var catalog = this.catalog,\n linearization = this.linearization;\n var promise = linearization && linearization.pageFirst === pageIndex ? this._getLinearizationPage(pageIndex) : catalog.getPageDict(pageIndex);\n return this._pagePromises[pageIndex] = promise.then(function (_ref10) {\n var _ref11 = _slicedToArray(_ref10, 2),\n pageDict = _ref11[0],\n ref = _ref11[1];\n\n return new Page({\n pdfManager: _this5.pdfManager,\n xref: _this5.xref,\n pageIndex: pageIndex,\n pageDict: pageDict,\n ref: ref,\n fontCache: catalog.fontCache,\n builtInCMapCache: catalog.builtInCMapCache,\n globalImageCache: catalog.globalImageCache,\n pdfFunctionFactory: _this5.pdfFunctionFactory\n });\n });\n }\n }, {\n key: \"checkFirstPage\",\n value: function checkFirstPage() {\n var _this6 = this;\n\n return this.getPage(0)[\"catch\"]( /*#__PURE__*/function () {\n var _ref12 = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee(reason) {\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!(reason instanceof _core_utils.XRefEntryException)) {\n _context.next = 5;\n break;\n }\n\n _this6._pagePromises.length = 0;\n _context.next = 4;\n return _this6.cleanup();\n\n case 4:\n throw new _core_utils.XRefParseException();\n\n case 5:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function (_x) {\n return _ref12.apply(this, arguments);\n };\n }());\n }\n }, {\n key: \"fontFallback\",\n value: function fontFallback(id, handler) {\n return this.catalog.fontFallback(id, handler);\n }\n }, {\n key: \"cleanup\",\n value: function () {\n var _cleanup = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee2() {\n var manuallyTriggered,\n _args2 = arguments;\n return _regenerator[\"default\"].wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n manuallyTriggered = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : false;\n return _context2.abrupt(\"return\", this.catalog ? this.catalog.cleanup(manuallyTriggered) : (0, _primitives.clearPrimitiveCaches)());\n\n case 2:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function cleanup() {\n return _cleanup.apply(this, arguments);\n }\n\n return cleanup;\n }()\n }, {\n key: \"linearization\",\n get: function get() {\n var linearization = null;\n\n try {\n linearization = _parser.Linearization.create(this.stream);\n } catch (err) {\n if (err instanceof _core_utils.MissingDataException) {\n throw err;\n }\n\n (0, _util.info)(err);\n }\n\n return (0, _util.shadow)(this, \"linearization\", linearization);\n }\n }, {\n key: \"startXRef\",\n get: function get() {\n var stream = this.stream;\n var startXRef = 0;\n\n if (this.linearization) {\n stream.reset();\n\n if (find(stream, ENDOBJ_SIGNATURE)) {\n startXRef = stream.pos + 6 - stream.start;\n }\n } else {\n var step = 1024;\n var startXRefLength = STARTXREF_SIGNATURE.length;\n var found = false,\n pos = stream.end;\n\n while (!found && pos > 0) {\n pos -= step - startXRefLength;\n\n if (pos < 0) {\n pos = 0;\n }\n\n stream.pos = pos;\n found = find(stream, STARTXREF_SIGNATURE, step, true);\n }\n\n if (found) {\n stream.skip(9);\n var ch;\n\n do {\n ch = stream.getByte();\n } while ((0, _core_utils.isWhiteSpace)(ch));\n\n var str = \"\";\n\n while (ch >= 0x20 && ch <= 0x39) {\n str += String.fromCharCode(ch);\n ch = stream.getByte();\n }\n\n startXRef = parseInt(str, 10);\n\n if (isNaN(startXRef)) {\n startXRef = 0;\n }\n }\n }\n\n return (0, _util.shadow)(this, \"startXRef\", startXRef);\n }\n }, {\n key: \"numPages\",\n get: function get() {\n var linearization = this.linearization;\n var num = linearization ? linearization.numPages : this.catalog.numPages;\n return (0, _util.shadow)(this, \"numPages\", num);\n }\n }, {\n key: \"documentInfo\",\n get: function get() {\n var DocumentInfoValidators = {\n Title: _util.isString,\n Author: _util.isString,\n Subject: _util.isString,\n Keywords: _util.isString,\n Creator: _util.isString,\n Producer: _util.isString,\n CreationDate: _util.isString,\n ModDate: _util.isString,\n Trapped: _primitives.isName\n };\n var version = this.pdfFormatVersion;\n\n if (typeof version !== \"string\" || !PDF_HEADER_VERSION_REGEXP.test(version)) {\n (0, _util.warn)(\"Invalid PDF header version number: \".concat(version));\n version = null;\n }\n\n var docInfo = {\n PDFFormatVersion: version,\n IsLinearized: !!this.linearization,\n IsAcroFormPresent: !!this.acroForm,\n IsXFAPresent: !!this.xfa,\n IsCollectionPresent: !!this.collection\n };\n var infoDict;\n\n try {\n infoDict = this.xref.trailer.get(\"Info\");\n } catch (err) {\n if (err instanceof _core_utils.MissingDataException) {\n throw err;\n }\n\n (0, _util.info)(\"The document information dictionary is invalid.\");\n }\n\n if ((0, _primitives.isDict)(infoDict)) {\n var _iterator5 = _createForOfIteratorHelper(infoDict.getKeys()),\n _step5;\n\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var key = _step5.value;\n var value = infoDict.get(key);\n\n if (DocumentInfoValidators[key]) {\n if (DocumentInfoValidators[key](value)) {\n docInfo[key] = typeof value !== \"string\" ? value : (0, _util.stringToPDFString)(value);\n } else {\n (0, _util.info)(\"Bad value in document info for \\\"\".concat(key, \"\\\".\"));\n }\n } else if (typeof key === \"string\") {\n var customValue = void 0;\n\n if ((0, _util.isString)(value)) {\n customValue = (0, _util.stringToPDFString)(value);\n } else if ((0, _primitives.isName)(value) || (0, _util.isNum)(value) || (0, _util.isBool)(value)) {\n customValue = value;\n } else {\n (0, _util.info)(\"Unsupported value in document info for (custom) \\\"\".concat(key, \"\\\".\"));\n continue;\n }\n\n if (!docInfo.Custom) {\n docInfo.Custom = Object.create(null);\n }\n\n docInfo.Custom[key] = customValue;\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n }\n\n return (0, _util.shadow)(this, \"documentInfo\", docInfo);\n }\n }, {\n key: \"fingerprint\",\n get: function get() {\n var hash;\n var idArray = this.xref.trailer.get(\"ID\");\n\n if (Array.isArray(idArray) && idArray[0] && (0, _util.isString)(idArray[0]) && idArray[0] !== EMPTY_FINGERPRINT) {\n hash = (0, _util.stringToBytes)(idArray[0]);\n } else {\n hash = (0, _crypto.calculateMD5)(this.stream.getByteRange(0, FINGERPRINT_FIRST_BYTES), 0, FINGERPRINT_FIRST_BYTES);\n }\n\n var fingerprintBuf = [];\n\n for (var i = 0, ii = hash.length; i < ii; i++) {\n var hex = hash[i].toString(16);\n fingerprintBuf.push(hex.padStart(2, \"0\"));\n }\n\n return (0, _util.shadow)(this, \"fingerprint\", fingerprintBuf.join(\"\"));\n }\n }]);\n\n return PDFDocument;\n}();\n\nexports.PDFDocument = PDFDocument;\n\n/***/ }),\n/* 203 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FileSpec = exports.XRef = exports.ObjectLoader = exports.Catalog = void 0;\n\nvar _regenerator = _interopRequireDefault(__w_pdfjs_require__(2));\n\nvar _util = __w_pdfjs_require__(5);\n\nvar _primitives = __w_pdfjs_require__(198);\n\nvar _parser = __w_pdfjs_require__(204);\n\nvar _core_utils = __w_pdfjs_require__(201);\n\nvar _crypto = __w_pdfjs_require__(215);\n\nvar _colorspace = __w_pdfjs_require__(216);\n\nvar _image_utils = __w_pdfjs_require__(217);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction fetchDestination(dest) {\n return (0, _primitives.isDict)(dest) ? dest.get(\"D\") : dest;\n}\n\nvar Catalog = /*#__PURE__*/function () {\n function Catalog(pdfManager, xref) {\n _classCallCheck(this, Catalog);\n\n this.pdfManager = pdfManager;\n this.xref = xref;\n this.catDict = xref.getCatalogObj();\n\n if (!(0, _primitives.isDict)(this.catDict)) {\n throw new _util.FormatError(\"Catalog object is not a dictionary.\");\n }\n\n this.fontCache = new _primitives.RefSetCache();\n this.builtInCMapCache = new Map();\n this.globalImageCache = new _image_utils.GlobalImageCache();\n this.pageKidsCountCache = new _primitives.RefSetCache();\n }\n\n _createClass(Catalog, [{\n key: \"_readDocumentOutline\",\n value: function _readDocumentOutline() {\n var obj = this.catDict.get(\"Outlines\");\n\n if (!(0, _primitives.isDict)(obj)) {\n return null;\n }\n\n obj = obj.getRaw(\"First\");\n\n if (!(0, _primitives.isRef)(obj)) {\n return null;\n }\n\n var root = {\n items: []\n };\n var queue = [{\n obj: obj,\n parent: root\n }];\n var processed = new _primitives.RefSet();\n processed.put(obj);\n var xref = this.xref,\n blackColor = new Uint8ClampedArray(3);\n\n while (queue.length > 0) {\n var i = queue.shift();\n var outlineDict = xref.fetchIfRef(i.obj);\n\n if (outlineDict === null) {\n continue;\n }\n\n if (!outlineDict.has(\"Title\")) {\n throw new _util.FormatError(\"Invalid outline item encountered.\");\n }\n\n var data = {\n url: null,\n dest: null\n };\n Catalog.parseDestDictionary({\n destDict: outlineDict,\n resultObj: data,\n docBaseUrl: this.pdfManager.docBaseUrl\n });\n var title = outlineDict.get(\"Title\");\n var flags = outlineDict.get(\"F\") || 0;\n var color = outlineDict.getArray(\"C\");\n var count = outlineDict.get(\"Count\");\n var rgbColor = blackColor;\n\n if (Array.isArray(color) && color.length === 3 && (color[0] !== 0 || color[1] !== 0 || color[2] !== 0)) {\n rgbColor = _colorspace.ColorSpace.singletons.rgb.getRgb(color, 0);\n }\n\n var outlineItem = {\n dest: data.dest,\n url: data.url,\n unsafeUrl: data.unsafeUrl,\n newWindow: data.newWindow,\n title: (0, _util.stringToPDFString)(title),\n color: rgbColor,\n count: Number.isInteger(count) ? count : undefined,\n bold: !!(flags & 2),\n italic: !!(flags & 1),\n items: []\n };\n i.parent.items.push(outlineItem);\n obj = outlineDict.getRaw(\"First\");\n\n if ((0, _primitives.isRef)(obj) && !processed.has(obj)) {\n queue.push({\n obj: obj,\n parent: outlineItem\n });\n processed.put(obj);\n }\n\n obj = outlineDict.getRaw(\"Next\");\n\n if ((0, _primitives.isRef)(obj) && !processed.has(obj)) {\n queue.push({\n obj: obj,\n parent: i.parent\n });\n processed.put(obj);\n }\n }\n\n return root.items.length > 0 ? root.items : null;\n }\n }, {\n key: \"_readPermissions\",\n value: function _readPermissions() {\n var encrypt = this.xref.trailer.get(\"Encrypt\");\n\n if (!(0, _primitives.isDict)(encrypt)) {\n return null;\n }\n\n var flags = encrypt.get(\"P\");\n\n if (!(0, _util.isNum)(flags)) {\n return null;\n }\n\n flags += Math.pow(2, 32);\n var permissions = [];\n\n for (var key in _util.PermissionFlag) {\n var value = _util.PermissionFlag[key];\n\n if (flags & value) {\n permissions.push(value);\n }\n }\n\n return permissions;\n }\n }, {\n key: \"getDestination\",\n value: function getDestination(destinationId) {\n var obj = this._readDests();\n\n if (obj instanceof NameTree || obj instanceof _primitives.Dict) {\n return fetchDestination(obj.get(destinationId) || null);\n }\n\n return null;\n }\n }, {\n key: \"_readDests\",\n value: function _readDests() {\n var obj = this.catDict.get(\"Names\");\n\n if (obj && obj.has(\"Dests\")) {\n return new NameTree(obj.getRaw(\"Dests\"), this.xref);\n } else if (this.catDict.has(\"Dests\")) {\n return this.catDict.get(\"Dests\");\n }\n\n return undefined;\n }\n }, {\n key: \"_readPageLabels\",\n value: function _readPageLabels() {\n var obj = this.catDict.getRaw(\"PageLabels\");\n\n if (!obj) {\n return null;\n }\n\n var pageLabels = new Array(this.numPages);\n var style = null,\n prefix = \"\";\n var numberTree = new NumberTree(obj, this.xref);\n var nums = numberTree.getAll();\n var currentLabel = \"\",\n currentIndex = 1;\n\n for (var i = 0, ii = this.numPages; i < ii; i++) {\n if (i in nums) {\n var labelDict = nums[i];\n\n if (!(0, _primitives.isDict)(labelDict)) {\n throw new _util.FormatError(\"PageLabel is not a dictionary.\");\n }\n\n if (labelDict.has(\"Type\") && !(0, _primitives.isName)(labelDict.get(\"Type\"), \"PageLabel\")) {\n throw new _util.FormatError(\"Invalid type in PageLabel dictionary.\");\n }\n\n if (labelDict.has(\"S\")) {\n var s = labelDict.get(\"S\");\n\n if (!(0, _primitives.isName)(s)) {\n throw new _util.FormatError(\"Invalid style in PageLabel dictionary.\");\n }\n\n style = s.name;\n } else {\n style = null;\n }\n\n if (labelDict.has(\"P\")) {\n var p = labelDict.get(\"P\");\n\n if (!(0, _util.isString)(p)) {\n throw new _util.FormatError(\"Invalid prefix in PageLabel dictionary.\");\n }\n\n prefix = (0, _util.stringToPDFString)(p);\n } else {\n prefix = \"\";\n }\n\n if (labelDict.has(\"St\")) {\n var st = labelDict.get(\"St\");\n\n if (!(Number.isInteger(st) && st >= 1)) {\n throw new _util.FormatError(\"Invalid start in PageLabel dictionary.\");\n }\n\n currentIndex = st;\n } else {\n currentIndex = 1;\n }\n }\n\n switch (style) {\n case \"D\":\n currentLabel = currentIndex;\n break;\n\n case \"R\":\n case \"r\":\n currentLabel = (0, _core_utils.toRomanNumerals)(currentIndex, style === \"r\");\n break;\n\n case \"A\":\n case \"a\":\n var LIMIT = 26;\n var A_UPPER_CASE = 0x41,\n A_LOWER_CASE = 0x61;\n var baseCharCode = style === \"a\" ? A_LOWER_CASE : A_UPPER_CASE;\n var letterIndex = currentIndex - 1;\n var character = String.fromCharCode(baseCharCode + letterIndex % LIMIT);\n var charBuf = [];\n\n for (var j = 0, jj = letterIndex / LIMIT | 0; j <= jj; j++) {\n charBuf.push(character);\n }\n\n currentLabel = charBuf.join(\"\");\n break;\n\n default:\n if (style) {\n throw new _util.FormatError(\"Invalid style \\\"\".concat(style, \"\\\" in PageLabel dictionary.\"));\n }\n\n currentLabel = \"\";\n }\n\n pageLabels[i] = prefix + currentLabel;\n currentIndex++;\n }\n\n return pageLabels;\n }\n }, {\n key: \"fontFallback\",\n value: function fontFallback(id, handler) {\n var promises = [];\n this.fontCache.forEach(function (promise) {\n promises.push(promise);\n });\n return Promise.all(promises).then(function (translatedFonts) {\n var _iterator = _createForOfIteratorHelper(translatedFonts),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var translatedFont = _step.value;\n\n if (translatedFont.loadedName === id) {\n translatedFont.fallback(handler);\n return;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n });\n }\n }, {\n key: \"cleanup\",\n value: function cleanup() {\n var _this = this;\n\n var manuallyTriggered = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n (0, _primitives.clearPrimitiveCaches)();\n this.globalImageCache.clear(manuallyTriggered);\n this.pageKidsCountCache.clear();\n var promises = [];\n this.fontCache.forEach(function (promise) {\n promises.push(promise);\n });\n return Promise.all(promises).then(function (translatedFonts) {\n var _iterator2 = _createForOfIteratorHelper(translatedFonts),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var dict = _step2.value.dict;\n delete dict.translated;\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n _this.fontCache.clear();\n\n _this.builtInCMapCache.clear();\n });\n }\n }, {\n key: \"getPageDict\",\n value: function getPageDict(pageIndex) {\n var capability = (0, _util.createPromiseCapability)();\n var nodesToVisit = [this.catDict.getRaw(\"Pages\")];\n var visitedNodes = new _primitives.RefSet();\n var xref = this.xref,\n pageKidsCountCache = this.pageKidsCountCache;\n var count,\n currentPageIndex = 0;\n\n function next() {\n var _loop = function _loop() {\n var currentNode = nodesToVisit.pop();\n\n if ((0, _primitives.isRef)(currentNode)) {\n count = pageKidsCountCache.get(currentNode);\n\n if (count > 0 && currentPageIndex + count < pageIndex) {\n currentPageIndex += count;\n return \"continue\";\n }\n\n if (visitedNodes.has(currentNode)) {\n capability.reject(new _util.FormatError(\"Pages tree contains circular reference.\"));\n return {\n v: void 0\n };\n }\n\n visitedNodes.put(currentNode);\n xref.fetchAsync(currentNode).then(function (obj) {\n if ((0, _primitives.isDict)(obj, \"Page\") || (0, _primitives.isDict)(obj) && !obj.has(\"Kids\")) {\n if (pageIndex === currentPageIndex) {\n if (currentNode && !pageKidsCountCache.has(currentNode)) {\n pageKidsCountCache.put(currentNode, 1);\n }\n\n capability.resolve([obj, currentNode]);\n } else {\n currentPageIndex++;\n next();\n }\n\n return;\n }\n\n nodesToVisit.push(obj);\n next();\n }, capability.reject);\n return {\n v: void 0\n };\n }\n\n if (!(0, _primitives.isDict)(currentNode)) {\n capability.reject(new _util.FormatError(\"Page dictionary kid reference points to wrong type of object.\"));\n return {\n v: void 0\n };\n }\n\n count = currentNode.get(\"Count\");\n\n if (Number.isInteger(count) && count >= 0) {\n var objId = currentNode.objId;\n\n if (objId && !pageKidsCountCache.has(objId)) {\n pageKidsCountCache.put(objId, count);\n }\n\n if (currentPageIndex + count <= pageIndex) {\n currentPageIndex += count;\n return \"continue\";\n }\n }\n\n var kids = currentNode.get(\"Kids\");\n\n if (!Array.isArray(kids)) {\n if ((0, _primitives.isName)(currentNode.get(\"Type\"), \"Page\") || !currentNode.has(\"Type\") && currentNode.has(\"Contents\")) {\n if (currentPageIndex === pageIndex) {\n capability.resolve([currentNode, null]);\n return {\n v: void 0\n };\n }\n\n currentPageIndex++;\n return \"continue\";\n }\n\n capability.reject(new _util.FormatError(\"Page dictionary kids object is not an array.\"));\n return {\n v: void 0\n };\n }\n\n for (var last = kids.length - 1; last >= 0; last--) {\n nodesToVisit.push(kids[last]);\n }\n };\n\n while (nodesToVisit.length) {\n var _ret = _loop();\n\n switch (_ret) {\n case \"continue\":\n continue;\n\n default:\n if (_typeof(_ret) === \"object\") return _ret.v;\n }\n }\n\n capability.reject(new Error(\"Page index \".concat(pageIndex, \" not found.\")));\n }\n\n next();\n return capability.promise;\n }\n }, {\n key: \"getPageIndex\",\n value: function getPageIndex(pageRef) {\n var xref = this.xref;\n\n function pagesBeforeRef(kidRef) {\n var total = 0,\n parentRef;\n return xref.fetchAsync(kidRef).then(function (node) {\n if ((0, _primitives.isRefsEqual)(kidRef, pageRef) && !(0, _primitives.isDict)(node, \"Page\") && !((0, _primitives.isDict)(node) && !node.has(\"Type\") && node.has(\"Contents\"))) {\n throw new _util.FormatError(\"The reference does not point to a /Page dictionary.\");\n }\n\n if (!node) {\n return null;\n }\n\n if (!(0, _primitives.isDict)(node)) {\n throw new _util.FormatError(\"Node must be a dictionary.\");\n }\n\n parentRef = node.getRaw(\"Parent\");\n return node.getAsync(\"Parent\");\n }).then(function (parent) {\n if (!parent) {\n return null;\n }\n\n if (!(0, _primitives.isDict)(parent)) {\n throw new _util.FormatError(\"Parent must be a dictionary.\");\n }\n\n return parent.getAsync(\"Kids\");\n }).then(function (kids) {\n if (!kids) {\n return null;\n }\n\n var kidPromises = [];\n var found = false;\n\n for (var i = 0, ii = kids.length; i < ii; i++) {\n var kid = kids[i];\n\n if (!(0, _primitives.isRef)(kid)) {\n throw new _util.FormatError(\"Kid must be a reference.\");\n }\n\n if ((0, _primitives.isRefsEqual)(kid, kidRef)) {\n found = true;\n break;\n }\n\n kidPromises.push(xref.fetchAsync(kid).then(function (obj) {\n if (!(0, _primitives.isDict)(obj)) {\n throw new _util.FormatError(\"Kid node must be a dictionary.\");\n }\n\n if (obj.has(\"Count\")) {\n total += obj.get(\"Count\");\n } else {\n total++;\n }\n }));\n }\n\n if (!found) {\n throw new _util.FormatError(\"Kid reference not found in parent's kids.\");\n }\n\n return Promise.all(kidPromises).then(function () {\n return [total, parentRef];\n });\n });\n }\n\n var total = 0;\n\n function next(ref) {\n return pagesBeforeRef(ref).then(function (args) {\n if (!args) {\n return total;\n }\n\n var _args = _slicedToArray(args, 2),\n count = _args[0],\n parentRef = _args[1];\n\n total += count;\n return next(parentRef);\n });\n }\n\n return next(pageRef);\n }\n }, {\n key: \"metadata\",\n get: function get() {\n var streamRef = this.catDict.getRaw(\"Metadata\");\n\n if (!(0, _primitives.isRef)(streamRef)) {\n return (0, _util.shadow)(this, \"metadata\", null);\n }\n\n var suppressEncryption = !(this.xref.encrypt && this.xref.encrypt.encryptMetadata);\n var stream = this.xref.fetch(streamRef, suppressEncryption);\n var metadata;\n\n if (stream && (0, _primitives.isDict)(stream.dict)) {\n var type = stream.dict.get(\"Type\");\n var subtype = stream.dict.get(\"Subtype\");\n\n if ((0, _primitives.isName)(type, \"Metadata\") && (0, _primitives.isName)(subtype, \"XML\")) {\n try {\n metadata = (0, _util.stringToUTF8String)((0, _util.bytesToString)(stream.getBytes()));\n } catch (e) {\n if (e instanceof _core_utils.MissingDataException) {\n throw e;\n }\n\n (0, _util.info)(\"Skipping invalid metadata.\");\n }\n }\n }\n\n return (0, _util.shadow)(this, \"metadata\", metadata);\n }\n }, {\n key: \"toplevelPagesDict\",\n get: function get() {\n var pagesObj = this.catDict.get(\"Pages\");\n\n if (!(0, _primitives.isDict)(pagesObj)) {\n throw new _util.FormatError(\"Invalid top-level pages dictionary.\");\n }\n\n return (0, _util.shadow)(this, \"toplevelPagesDict\", pagesObj);\n }\n }, {\n key: \"documentOutline\",\n get: function get() {\n var obj = null;\n\n try {\n obj = this._readDocumentOutline();\n } catch (ex) {\n if (ex instanceof _core_utils.MissingDataException) {\n throw ex;\n }\n\n (0, _util.warn)(\"Unable to read document outline.\");\n }\n\n return (0, _util.shadow)(this, \"documentOutline\", obj);\n }\n }, {\n key: \"permissions\",\n get: function get() {\n var permissions = null;\n\n try {\n permissions = this._readPermissions();\n } catch (ex) {\n if (ex instanceof _core_utils.MissingDataException) {\n throw ex;\n }\n\n (0, _util.warn)(\"Unable to read permissions.\");\n }\n\n return (0, _util.shadow)(this, \"permissions\", permissions);\n }\n }, {\n key: \"numPages\",\n get: function get() {\n var obj = this.toplevelPagesDict.get(\"Count\");\n\n if (!Number.isInteger(obj)) {\n throw new _util.FormatError(\"Page count in top-level pages dictionary is not an integer.\");\n }\n\n return (0, _util.shadow)(this, \"numPages\", obj);\n }\n }, {\n key: \"destinations\",\n get: function get() {\n var obj = this._readDests(),\n dests = Object.create(null);\n\n if (obj instanceof NameTree) {\n var names = obj.getAll();\n\n for (var name in names) {\n dests[name] = fetchDestination(names[name]);\n }\n } else if (obj instanceof _primitives.Dict) {\n obj.forEach(function (key, value) {\n if (value) {\n dests[key] = fetchDestination(value);\n }\n });\n }\n\n return (0, _util.shadow)(this, \"destinations\", dests);\n }\n }, {\n key: \"pageLabels\",\n get: function get() {\n var obj = null;\n\n try {\n obj = this._readPageLabels();\n } catch (ex) {\n if (ex instanceof _core_utils.MissingDataException) {\n throw ex;\n }\n\n (0, _util.warn)(\"Unable to read page labels.\");\n }\n\n return (0, _util.shadow)(this, \"pageLabels\", obj);\n }\n }, {\n key: \"pageLayout\",\n get: function get() {\n var obj = this.catDict.get(\"PageLayout\");\n var pageLayout = \"\";\n\n if ((0, _primitives.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\n return (0, _util.shadow)(this, \"pageLayout\", pageLayout);\n }\n }, {\n key: \"pageMode\",\n get: function get() {\n var obj = this.catDict.get(\"PageMode\");\n var pageMode = \"UseNone\";\n\n if ((0, _primitives.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\n return (0, _util.shadow)(this, \"pageMode\", pageMode);\n }\n }, {\n key: \"viewerPreferences\",\n get: function get() {\n var _this2 = this;\n\n var ViewerPreferencesValidators = {\n HideToolbar: _util.isBool,\n HideMenubar: _util.isBool,\n HideWindowUI: _util.isBool,\n FitWindow: _util.isBool,\n CenterWindow: _util.isBool,\n DisplayDocTitle: _util.isBool,\n NonFullScreenPageMode: _primitives.isName,\n Direction: _primitives.isName,\n ViewArea: _primitives.isName,\n ViewClip: _primitives.isName,\n PrintArea: _primitives.isName,\n PrintClip: _primitives.isName,\n PrintScaling: _primitives.isName,\n Duplex: _primitives.isName,\n PickTrayByPDFSize: _util.isBool,\n PrintPageRange: Array.isArray,\n NumCopies: Number.isInteger\n };\n var obj = this.catDict.get(\"ViewerPreferences\");\n var prefs = null;\n\n if ((0, _primitives.isDict)(obj)) {\n for (var key in ViewerPreferencesValidators) {\n if (!obj.has(key)) {\n continue;\n }\n\n var value = obj.get(key);\n\n if (!ViewerPreferencesValidators[key](value)) {\n (0, _util.info)(\"Bad value in ViewerPreferences for \\\"\".concat(key, \"\\\".\"));\n continue;\n }\n\n var prefValue = void 0;\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\n default:\n prefValue = \"UseNone\";\n }\n\n break;\n\n case \"Direction\":\n switch (value.name) {\n case \"L2R\":\n case \"R2L\":\n prefValue = value.name;\n break;\n\n default:\n prefValue = \"L2R\";\n }\n\n break;\n\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\n default:\n prefValue = \"CropBox\";\n }\n\n break;\n\n case \"PrintScaling\":\n switch (value.name) {\n case \"None\":\n case \"AppDefault\":\n prefValue = value.name;\n break;\n\n default:\n prefValue = \"AppDefault\";\n }\n\n break;\n\n case \"Duplex\":\n switch (value.name) {\n case \"Simplex\":\n case \"DuplexFlipShortEdge\":\n case \"DuplexFlipLongEdge\":\n prefValue = value.name;\n break;\n\n default:\n prefValue = \"None\";\n }\n\n break;\n\n case \"PrintPageRange\":\n var length = value.length;\n\n if (length % 2 !== 0) {\n break;\n }\n\n var isValid = value.every(function (page, i, arr) {\n return Number.isInteger(page) && page > 0 && (i === 0 || page >= arr[i - 1]) && page <= _this2.numPages;\n });\n\n if (isValid) {\n prefValue = value;\n }\n\n break;\n\n case \"NumCopies\":\n if (value > 0) {\n prefValue = value;\n }\n\n break;\n\n default:\n if (typeof value !== \"boolean\") {\n throw new _util.FormatError(\"viewerPreferences - expected a boolean value for: \".concat(key));\n }\n\n prefValue = value;\n }\n\n if (prefValue !== undefined) {\n if (!prefs) {\n prefs = Object.create(null);\n }\n\n prefs[key] = prefValue;\n } else {\n (0, _util.info)(\"Bad value in ViewerPreferences for \\\"\".concat(key, \"\\\".\"));\n }\n }\n }\n\n return (0, _util.shadow)(this, \"viewerPreferences\", prefs);\n }\n }, {\n key: \"openAction\",\n get: function get() {\n var obj = this.catDict.get(\"OpenAction\");\n var openAction = null;\n\n if ((0, _primitives.isDict)(obj)) {\n var destDict = new _primitives.Dict(this.xref);\n destDict.set(\"A\", obj);\n var resultObj = {\n url: null,\n dest: null,\n action: null\n };\n Catalog.parseDestDictionary({\n destDict: destDict,\n resultObj: resultObj\n });\n\n if (Array.isArray(resultObj.dest)) {\n if (!openAction) {\n openAction = Object.create(null);\n }\n\n openAction.dest = resultObj.dest;\n } else if (resultObj.action) {\n if (!openAction) {\n openAction = Object.create(null);\n }\n\n openAction.action = resultObj.action;\n }\n } else if (Array.isArray(obj)) {\n if (!openAction) {\n openAction = Object.create(null);\n }\n\n openAction.dest = obj;\n }\n\n return (0, _util.shadow)(this, \"openAction\", openAction);\n }\n }, {\n key: \"attachments\",\n get: function get() {\n var obj = this.catDict.get(\"Names\");\n var attachments = null;\n\n if (obj && obj.has(\"EmbeddedFiles\")) {\n var nameTree = new NameTree(obj.getRaw(\"EmbeddedFiles\"), this.xref);\n var names = nameTree.getAll();\n\n for (var name in names) {\n var fs = new FileSpec(names[name], this.xref);\n\n if (!attachments) {\n attachments = Object.create(null);\n }\n\n attachments[(0, _util.stringToPDFString)(name)] = fs.serializable;\n }\n }\n\n return (0, _util.shadow)(this, \"attachments\", attachments);\n }\n }, {\n key: \"javaScript\",\n get: function get() {\n var obj = this.catDict.get(\"Names\");\n var javaScript = null;\n\n function appendIfJavaScriptDict(jsDict) {\n var type = jsDict.get(\"S\");\n\n if (!(0, _primitives.isName)(type, \"JavaScript\")) {\n return;\n }\n\n var js = jsDict.get(\"JS\");\n\n if ((0, _primitives.isStream)(js)) {\n js = (0, _util.bytesToString)(js.getBytes());\n } else if (!(0, _util.isString)(js)) {\n return;\n }\n\n if (!javaScript) {\n javaScript = [];\n }\n\n javaScript.push((0, _util.stringToPDFString)(js));\n }\n\n if (obj && obj.has(\"JavaScript\")) {\n var nameTree = new NameTree(obj.getRaw(\"JavaScript\"), this.xref);\n var names = nameTree.getAll();\n\n for (var name in names) {\n var jsDict = names[name];\n\n if ((0, _primitives.isDict)(jsDict)) {\n appendIfJavaScriptDict(jsDict);\n }\n }\n }\n\n var openAction = this.catDict.get(\"OpenAction\");\n\n if ((0, _primitives.isDict)(openAction) && (0, _primitives.isName)(openAction.get(\"S\"), \"JavaScript\")) {\n appendIfJavaScriptDict(openAction);\n }\n\n return (0, _util.shadow)(this, \"javaScript\", javaScript);\n }\n }], [{\n key: \"parseDestDictionary\",\n value: function parseDestDictionary(params) {\n function addDefaultProtocolToUrl(url) {\n return url.startsWith(\"www.\") ? \"http://\".concat(url) : url;\n }\n\n function tryConvertUrlEncoding(url) {\n try {\n return (0, _util.stringToUTF8String)(url);\n } catch (e) {\n return url;\n }\n }\n\n var destDict = params.destDict;\n\n if (!(0, _primitives.isDict)(destDict)) {\n (0, _util.warn)(\"parseDestDictionary: `destDict` must be a dictionary.\");\n return;\n }\n\n var resultObj = params.resultObj;\n\n if (_typeof(resultObj) !== \"object\") {\n (0, _util.warn)(\"parseDestDictionary: `resultObj` must be an object.\");\n return;\n }\n\n var docBaseUrl = params.docBaseUrl || null;\n var action = destDict.get(\"A\"),\n url,\n dest;\n\n if (!(0, _primitives.isDict)(action) && destDict.has(\"Dest\")) {\n action = destDict.get(\"Dest\");\n }\n\n if ((0, _primitives.isDict)(action)) {\n var actionType = action.get(\"S\");\n\n if (!(0, _primitives.isName)(actionType)) {\n (0, _util.warn)(\"parseDestDictionary: Invalid type in Action dictionary.\");\n return;\n }\n\n var actionName = actionType.name;\n\n switch (actionName) {\n case \"URI\":\n url = action.get(\"URI\");\n\n if ((0, _primitives.isName)(url)) {\n url = \"/\" + url.name;\n } else if ((0, _util.isString)(url)) {\n url = addDefaultProtocolToUrl(url);\n }\n\n break;\n\n case \"GoTo\":\n dest = action.get(\"D\");\n break;\n\n case \"Launch\":\n case \"GoToR\":\n var urlDict = action.get(\"F\");\n\n if ((0, _primitives.isDict)(urlDict)) {\n url = urlDict.get(\"F\") || null;\n } else if ((0, _util.isString)(urlDict)) {\n url = urlDict;\n }\n\n var remoteDest = action.get(\"D\");\n\n if (remoteDest) {\n if ((0, _primitives.isName)(remoteDest)) {\n remoteDest = remoteDest.name;\n }\n\n if ((0, _util.isString)(url)) {\n var baseUrl = url.split(\"#\")[0];\n\n if ((0, _util.isString)(remoteDest)) {\n url = baseUrl + \"#\" + remoteDest;\n } else if (Array.isArray(remoteDest)) {\n url = baseUrl + \"#\" + JSON.stringify(remoteDest);\n }\n }\n }\n\n var newWindow = action.get(\"NewWindow\");\n\n if ((0, _util.isBool)(newWindow)) {\n resultObj.newWindow = newWindow;\n }\n\n break;\n\n case \"Named\":\n var namedAction = action.get(\"N\");\n\n if ((0, _primitives.isName)(namedAction)) {\n resultObj.action = namedAction.name;\n }\n\n break;\n\n case \"JavaScript\":\n var jsAction = action.get(\"JS\");\n var js;\n\n if ((0, _primitives.isStream)(jsAction)) {\n js = (0, _util.bytesToString)(jsAction.getBytes());\n } else if ((0, _util.isString)(jsAction)) {\n js = jsAction;\n }\n\n if (js) {\n var URL_OPEN_METHODS = [\"app.launchURL\", \"window.open\"];\n var regex = new RegExp(\"^\\\\s*(\" + URL_OPEN_METHODS.join(\"|\").split(\".\").join(\"\\\\.\") + \")\\\\((?:'|\\\")([^'\\\"]*)(?:'|\\\")(?:,\\\\s*(\\\\w+)\\\\)|\\\\))\", \"i\");\n var jsUrl = regex.exec((0, _util.stringToPDFString)(js));\n\n if (jsUrl && jsUrl[2]) {\n url = jsUrl[2];\n\n if (jsUrl[3] === \"true\" && jsUrl[1] === \"app.launchURL\") {\n resultObj.newWindow = true;\n }\n\n break;\n }\n }\n\n default:\n (0, _util.warn)(\"parseDestDictionary: unsupported action type \\\"\".concat(actionName, \"\\\".\"));\n break;\n }\n } else if (destDict.has(\"Dest\")) {\n dest = destDict.get(\"Dest\");\n }\n\n if ((0, _util.isString)(url)) {\n url = tryConvertUrlEncoding(url);\n var absoluteUrl = (0, _util.createValidAbsoluteUrl)(url, docBaseUrl);\n\n if (absoluteUrl) {\n resultObj.url = absoluteUrl.href;\n }\n\n resultObj.unsafeUrl = url;\n }\n\n if (dest) {\n if ((0, _primitives.isName)(dest)) {\n dest = dest.name;\n }\n\n if ((0, _util.isString)(dest) || Array.isArray(dest)) {\n resultObj.dest = dest;\n }\n }\n }\n }]);\n\n return Catalog;\n}();\n\nexports.Catalog = Catalog;\n\nvar XRef = function XRefClosure() {\n function XRef(stream, pdfManager) {\n this.stream = stream;\n this.pdfManager = pdfManager;\n this.entries = [];\n this.xrefstms = Object.create(null);\n this._cacheMap = new Map();\n this.stats = {\n streamTypes: Object.create(null),\n fontTypes: Object.create(null)\n };\n }\n\n XRef.prototype = {\n setStartXRef: function XRef_setStartXRef(startXRef) {\n this.startXRefQueue = [startXRef];\n },\n parse: function XRef_parse(recoveryMode) {\n var trailerDict;\n\n if (!recoveryMode) {\n trailerDict = this.readXRef();\n } else {\n (0, _util.warn)(\"Indexing all PDF objects\");\n trailerDict = this.indexObjects();\n }\n\n trailerDict.assignXref(this);\n this.trailer = trailerDict;\n var encrypt;\n\n try {\n encrypt = trailerDict.get(\"Encrypt\");\n } catch (ex) {\n if (ex instanceof _core_utils.MissingDataException) {\n throw ex;\n }\n\n (0, _util.warn)(\"XRef.parse - Invalid \\\"Encrypt\\\" reference: \\\"\".concat(ex, \"\\\".\"));\n }\n\n if ((0, _primitives.isDict)(encrypt)) {\n var ids = trailerDict.get(\"ID\");\n var fileId = ids && ids.length ? ids[0] : \"\";\n encrypt.suppressEncryption = true;\n this.encrypt = new _crypto.CipherTransformFactory(encrypt, fileId, this.pdfManager.password);\n }\n\n var root;\n\n try {\n root = trailerDict.get(\"Root\");\n } catch (ex) {\n if (ex instanceof _core_utils.MissingDataException) {\n throw ex;\n }\n\n (0, _util.warn)(\"XRef.parse - Invalid \\\"Root\\\" reference: \\\"\".concat(ex, \"\\\".\"));\n }\n\n if ((0, _primitives.isDict)(root) && root.has(\"Pages\")) {\n this.root = root;\n } else {\n if (!recoveryMode) {\n throw new _core_utils.XRefParseException();\n }\n\n throw new _util.FormatError(\"Invalid root reference\");\n }\n },\n processXRefTable: function XRef_processXRefTable(parser) {\n if (!(\"tableState\" in this)) {\n this.tableState = {\n entryNum: 0,\n streamPos: parser.lexer.stream.pos,\n parserBuf1: parser.buf1,\n parserBuf2: parser.buf2\n };\n }\n\n var obj = this.readXRefTable(parser);\n\n if (!(0, _primitives.isCmd)(obj, \"trailer\")) {\n throw new _util.FormatError(\"Invalid XRef table: could not find trailer dictionary\");\n }\n\n var dict = parser.getObj();\n\n if (!(0, _primitives.isDict)(dict) && dict.dict) {\n dict = dict.dict;\n }\n\n if (!(0, _primitives.isDict)(dict)) {\n throw new _util.FormatError(\"Invalid XRef table: could not parse trailer dictionary\");\n }\n\n delete this.tableState;\n return dict;\n },\n readXRefTable: function XRef_readXRefTable(parser) {\n var stream = parser.lexer.stream;\n var tableState = this.tableState;\n stream.pos = tableState.streamPos;\n parser.buf1 = tableState.parserBuf1;\n parser.buf2 = tableState.parserBuf2;\n var obj;\n\n while (true) {\n if (!(\"firstEntryNum\" in tableState) || !(\"entryCount\" in tableState)) {\n if ((0, _primitives.isCmd)(obj = parser.getObj(), \"trailer\")) {\n break;\n }\n\n tableState.firstEntryNum = obj;\n tableState.entryCount = parser.getObj();\n }\n\n var first = tableState.firstEntryNum;\n var count = tableState.entryCount;\n\n if (!Number.isInteger(first) || !Number.isInteger(count)) {\n throw new _util.FormatError(\"Invalid XRef table: wrong types in subsection header\");\n }\n\n for (var i = tableState.entryNum; i < count; i++) {\n tableState.streamPos = stream.pos;\n tableState.entryNum = i;\n tableState.parserBuf1 = parser.buf1;\n tableState.parserBuf2 = parser.buf2;\n var entry = {};\n entry.offset = parser.getObj();\n entry.gen = parser.getObj();\n var type = parser.getObj();\n\n if (type instanceof _primitives.Cmd) {\n switch (type.cmd) {\n case \"f\":\n entry.free = true;\n break;\n\n case \"n\":\n entry.uncompressed = true;\n break;\n }\n }\n\n if (!Number.isInteger(entry.offset) || !Number.isInteger(entry.gen) || !(entry.free || entry.uncompressed)) {\n throw new _util.FormatError(\"Invalid entry in XRef subsection: \".concat(first, \", \").concat(count));\n }\n\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 if (this.entries[0] && !this.entries[0].free) {\n throw new _util.FormatError(\"Invalid XRef table: unexpected first object\");\n }\n\n return obj;\n },\n processXRefStream: function XRef_processXRefStream(stream) {\n if (!(\"streamState\" in this)) {\n var streamParameters = stream.dict;\n var byteWidths = streamParameters.get(\"W\");\n var range = streamParameters.get(\"Index\");\n\n if (!range) {\n range = [0, streamParameters.get(\"Size\")];\n }\n\n this.streamState = {\n entryRanges: range,\n byteWidths: byteWidths,\n entryNum: 0,\n streamPos: stream.pos\n };\n }\n\n this.readXRefStream(stream);\n delete this.streamState;\n return stream.dict;\n },\n readXRefStream: function XRef_readXRefStream(stream) {\n var i, j;\n var streamState = this.streamState;\n stream.pos = streamState.streamPos;\n var byteWidths = streamState.byteWidths;\n var typeFieldWidth = byteWidths[0];\n var offsetFieldWidth = byteWidths[1];\n var generationFieldWidth = byteWidths[2];\n var entryRanges = streamState.entryRanges;\n\n while (entryRanges.length > 0) {\n var first = entryRanges[0];\n var n = entryRanges[1];\n\n if (!Number.isInteger(first) || !Number.isInteger(n)) {\n throw new _util.FormatError(\"Invalid XRef range fields: \".concat(first, \", \").concat(n));\n }\n\n if (!Number.isInteger(typeFieldWidth) || !Number.isInteger(offsetFieldWidth) || !Number.isInteger(generationFieldWidth)) {\n throw new _util.FormatError(\"Invalid XRef entry fields length: \".concat(first, \", \").concat(n));\n }\n\n for (i = streamState.entryNum; i < n; ++i) {\n streamState.entryNum = i;\n streamState.streamPos = stream.pos;\n var type = 0,\n offset = 0,\n generation = 0;\n\n for (j = 0; j < typeFieldWidth; ++j) {\n type = type << 8 | stream.getByte();\n }\n\n if (typeFieldWidth === 0) {\n type = 1;\n }\n\n for (j = 0; j < offsetFieldWidth; ++j) {\n offset = offset << 8 | stream.getByte();\n }\n\n for (j = 0; j < generationFieldWidth; ++j) {\n generation = generation << 8 | stream.getByte();\n }\n\n var entry = {};\n entry.offset = offset;\n entry.gen = generation;\n\n switch (type) {\n case 0:\n entry.free = true;\n break;\n\n case 1:\n entry.uncompressed = true;\n break;\n\n case 2:\n break;\n\n default:\n throw new _util.FormatError(\"Invalid XRef entry type: \".concat(type));\n }\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 indexObjects: function XRef_indexObjects() {\n var TAB = 0x9,\n LF = 0xa,\n CR = 0xd,\n SPACE = 0x20;\n var PERCENT = 0x25,\n LT = 0x3c;\n\n function readToken(data, offset) {\n var token = \"\",\n ch = data[offset];\n\n while (ch !== LF && ch !== CR && ch !== LT) {\n if (++offset >= data.length) {\n break;\n }\n\n token += String.fromCharCode(ch);\n ch = data[offset];\n }\n\n return token;\n }\n\n function skipUntil(data, offset, what) {\n var length = what.length,\n dataLength = data.length;\n var skipped = 0;\n\n while (offset < dataLength) {\n var i = 0;\n\n while (i < length && data[offset + i] === what[i]) {\n ++i;\n }\n\n if (i >= length) {\n break;\n }\n\n offset++;\n skipped++;\n }\n\n return skipped;\n }\n\n var objRegExp = /^(\\d+)\\s+(\\d+)\\s+obj\\b/;\n var endobjRegExp = /\\bendobj[\\b\\s]$/;\n var nestedObjRegExp = /\\s+(\\d+\\s+\\d+\\s+obj[\\b\\s<])$/;\n var CHECK_CONTENT_LENGTH = 25;\n var trailerBytes = new Uint8Array([116, 114, 97, 105, 108, 101, 114]);\n var startxrefBytes = new Uint8Array([115, 116, 97, 114, 116, 120, 114, 101, 102]);\n var objBytes = new Uint8Array([111, 98, 106]);\n var xrefBytes = new Uint8Array([47, 88, 82, 101, 102]);\n this.entries.length = 0;\n var stream = this.stream;\n stream.pos = 0;\n var buffer = stream.getBytes();\n var position = stream.start,\n length = buffer.length;\n var trailers = [],\n xrefStms = [];\n\n while (position < length) {\n var ch = buffer[position];\n\n if (ch === TAB || ch === LF || ch === CR || ch === SPACE) {\n ++position;\n continue;\n }\n\n if (ch === PERCENT) {\n do {\n ++position;\n\n if (position >= length) {\n break;\n }\n\n ch = buffer[position];\n } while (ch !== LF && ch !== CR);\n\n continue;\n }\n\n var token = readToken(buffer, position);\n var m;\n\n if (token.startsWith(\"xref\") && (token.length === 4 || /\\s/.test(token[4]))) {\n position += skipUntil(buffer, position, trailerBytes);\n trailers.push(position);\n position += skipUntil(buffer, position, startxrefBytes);\n } else if (m = objRegExp.exec(token)) {\n var num = m[1] | 0,\n gen = m[2] | 0;\n\n if (!this.entries[num] || this.entries[num].gen === gen) {\n this.entries[num] = {\n offset: position - stream.start,\n gen: gen,\n uncompressed: true\n };\n }\n\n var contentLength = void 0,\n startPos = position + token.length;\n\n while (startPos < buffer.length) {\n var endPos = startPos + skipUntil(buffer, startPos, objBytes) + 4;\n contentLength = endPos - position;\n var checkPos = Math.max(endPos - CHECK_CONTENT_LENGTH, startPos);\n var tokenStr = (0, _util.bytesToString)(buffer.subarray(checkPos, endPos));\n\n if (endobjRegExp.test(tokenStr)) {\n break;\n } else {\n var objToken = nestedObjRegExp.exec(tokenStr);\n\n if (objToken && objToken[1]) {\n (0, _util.warn)('indexObjects: Found new \"obj\" inside of another \"obj\", ' + 'caused by missing \"endobj\" -- trying to recover.');\n contentLength -= objToken[1].length;\n break;\n }\n }\n\n startPos = endPos;\n }\n\n var content = buffer.subarray(position, position + contentLength);\n var xrefTagOffset = skipUntil(content, 0, xrefBytes);\n\n if (xrefTagOffset < contentLength && content[xrefTagOffset + 5] < 64) {\n xrefStms.push(position - stream.start);\n this.xrefstms[position - stream.start] = 1;\n }\n\n position += contentLength;\n } else if (token.startsWith(\"trailer\") && (token.length === 7 || /\\s/.test(token[7]))) {\n trailers.push(position);\n position += skipUntil(buffer, position, startxrefBytes);\n } else {\n position += token.length + 1;\n }\n }\n\n var i, ii;\n\n for (i = 0, ii = xrefStms.length; i < ii; ++i) {\n this.startXRefQueue.push(xrefStms[i]);\n this.readXRef(true);\n }\n\n var trailerDict;\n\n for (i = 0, ii = trailers.length; i < ii; ++i) {\n stream.pos = trailers[i];\n var parser = new _parser.Parser({\n lexer: new _parser.Lexer(stream),\n xref: this,\n allowStreams: true,\n recoveryMode: true\n });\n var obj = parser.getObj();\n\n if (!(0, _primitives.isCmd)(obj, \"trailer\")) {\n continue;\n }\n\n var dict = parser.getObj();\n\n if (!(0, _primitives.isDict)(dict)) {\n continue;\n }\n\n var rootDict = void 0;\n\n try {\n rootDict = dict.get(\"Root\");\n } catch (ex) {\n if (ex instanceof _core_utils.MissingDataException) {\n throw ex;\n }\n\n continue;\n }\n\n if (!(0, _primitives.isDict)(rootDict) || !rootDict.has(\"Pages\")) {\n continue;\n }\n\n if (dict.has(\"ID\")) {\n return dict;\n }\n\n trailerDict = dict;\n }\n\n if (trailerDict) {\n return trailerDict;\n }\n\n throw new _util.InvalidPDFException(\"Invalid PDF structure.\");\n },\n readXRef: function XRef_readXRef(recoveryMode) {\n var stream = this.stream;\n var startXRefParsedCache = Object.create(null);\n\n try {\n while (this.startXRefQueue.length) {\n var startXRef = this.startXRefQueue[0];\n\n if (startXRefParsedCache[startXRef]) {\n (0, _util.warn)(\"readXRef - skipping XRef table since it was already parsed.\");\n this.startXRefQueue.shift();\n continue;\n }\n\n startXRefParsedCache[startXRef] = true;\n stream.pos = startXRef + stream.start;\n var parser = new _parser.Parser({\n lexer: new _parser.Lexer(stream),\n xref: this,\n allowStreams: true\n });\n var obj = parser.getObj();\n var dict;\n\n if ((0, _primitives.isCmd)(obj, \"xref\")) {\n dict = this.processXRefTable(parser);\n\n if (!this.topDict) {\n this.topDict = dict;\n }\n\n obj = dict.get(\"XRefStm\");\n\n if (Number.isInteger(obj)) {\n var pos = obj;\n\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 if (!Number.isInteger(parser.getObj()) || !(0, _primitives.isCmd)(parser.getObj(), \"obj\") || !(0, _primitives.isStream)(obj = parser.getObj())) {\n throw new _util.FormatError(\"Invalid XRef stream\");\n }\n\n dict = this.processXRefStream(obj);\n\n if (!this.topDict) {\n this.topDict = dict;\n }\n\n if (!dict) {\n throw new _util.FormatError(\"Failed to read XRef stream\");\n }\n } else {\n throw new _util.FormatError(\"Invalid XRef stream header\");\n }\n\n obj = dict.get(\"Prev\");\n\n if (Number.isInteger(obj)) {\n this.startXRefQueue.push(obj);\n } else if ((0, _primitives.isRef)(obj)) {\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 _core_utils.MissingDataException) {\n throw e;\n }\n\n (0, _util.info)(\"(while reading XRef): \" + e);\n }\n\n if (recoveryMode) {\n return undefined;\n }\n\n throw new _core_utils.XRefParseException();\n },\n getEntry: function XRef_getEntry(i) {\n var xrefEntry = this.entries[i];\n\n if (xrefEntry && !xrefEntry.free && xrefEntry.offset) {\n return xrefEntry;\n }\n\n return null;\n },\n fetchIfRef: function XRef_fetchIfRef(obj, suppressEncryption) {\n if (obj instanceof _primitives.Ref) {\n return this.fetch(obj, suppressEncryption);\n }\n\n return obj;\n },\n fetch: function XRef_fetch(ref, suppressEncryption) {\n if (!(ref instanceof _primitives.Ref)) {\n throw new Error(\"ref object is not a reference\");\n }\n\n var num = ref.num;\n\n var cacheEntry = this._cacheMap.get(num);\n\n if (cacheEntry !== undefined) {\n if (cacheEntry instanceof _primitives.Dict && !cacheEntry.objId) {\n cacheEntry.objId = ref.toString();\n }\n\n return cacheEntry;\n }\n\n var xrefEntry = this.getEntry(num);\n\n if (xrefEntry === null) {\n this._cacheMap.set(num, xrefEntry);\n\n return xrefEntry;\n }\n\n if (xrefEntry.uncompressed) {\n xrefEntry = this.fetchUncompressed(ref, xrefEntry, suppressEncryption);\n } else {\n xrefEntry = this.fetchCompressed(ref, xrefEntry, suppressEncryption);\n }\n\n if ((0, _primitives.isDict)(xrefEntry)) {\n xrefEntry.objId = ref.toString();\n } else if ((0, _primitives.isStream)(xrefEntry)) {\n xrefEntry.dict.objId = ref.toString();\n }\n\n return xrefEntry;\n },\n fetchUncompressed: function fetchUncompressed(ref, xrefEntry) {\n var suppressEncryption = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var gen = ref.gen;\n var num = ref.num;\n\n if (xrefEntry.gen !== gen) {\n throw new _core_utils.XRefEntryException(\"Inconsistent generation in XRef: \".concat(ref));\n }\n\n var stream = this.stream.makeSubStream(xrefEntry.offset + this.stream.start);\n var parser = new _parser.Parser({\n lexer: new _parser.Lexer(stream),\n xref: this,\n allowStreams: true\n });\n var obj1 = parser.getObj();\n var obj2 = parser.getObj();\n var obj3 = parser.getObj();\n\n if (obj1 !== num || obj2 !== gen || !(obj3 instanceof _primitives.Cmd)) {\n throw new _core_utils.XRefEntryException(\"Bad (uncompressed) XRef entry: \".concat(ref));\n }\n\n if (obj3.cmd !== \"obj\") {\n if (obj3.cmd.startsWith(\"obj\")) {\n num = parseInt(obj3.cmd.substring(3), 10);\n\n if (!Number.isNaN(num)) {\n return num;\n }\n }\n\n throw new _core_utils.XRefEntryException(\"Bad (uncompressed) XRef entry: \".concat(ref));\n }\n\n if (this.encrypt && !suppressEncryption) {\n xrefEntry = parser.getObj(this.encrypt.createCipherTransform(num, gen));\n } else {\n xrefEntry = parser.getObj();\n }\n\n if (!(0, _primitives.isStream)(xrefEntry)) {\n this._cacheMap.set(num, xrefEntry);\n }\n\n return xrefEntry;\n },\n fetchCompressed: function fetchCompressed(ref, xrefEntry) {\n var suppressEncryption = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var tableOffset = xrefEntry.offset;\n var stream = this.fetch(_primitives.Ref.get(tableOffset, 0));\n\n if (!(0, _primitives.isStream)(stream)) {\n throw new _util.FormatError(\"bad ObjStm stream\");\n }\n\n var first = stream.dict.get(\"First\");\n var n = stream.dict.get(\"N\");\n\n if (!Number.isInteger(first) || !Number.isInteger(n)) {\n throw new _util.FormatError(\"invalid first and n parameters for ObjStm stream\");\n }\n\n var parser = new _parser.Parser({\n lexer: new _parser.Lexer(stream),\n xref: this,\n allowStreams: true\n });\n var nums = new Array(n);\n\n for (var i = 0; i < n; ++i) {\n var num = parser.getObj();\n\n if (!Number.isInteger(num)) {\n throw new _util.FormatError(\"invalid object number in the ObjStm stream: \".concat(num));\n }\n\n var offset = parser.getObj();\n\n if (!Number.isInteger(offset)) {\n throw new _util.FormatError(\"invalid object offset in the ObjStm stream: \".concat(offset));\n }\n\n nums[i] = num;\n }\n\n var entries = new Array(n);\n\n for (var _i2 = 0; _i2 < n; ++_i2) {\n var obj = parser.getObj();\n entries[_i2] = obj;\n\n if (parser.buf1 instanceof _primitives.Cmd && parser.buf1.cmd === \"endobj\") {\n parser.shift();\n }\n\n if ((0, _primitives.isStream)(obj)) {\n continue;\n }\n\n var _num = nums[_i2],\n entry = this.entries[_num];\n\n if (entry && entry.offset === tableOffset && entry.gen === _i2) {\n this._cacheMap.set(_num, obj);\n }\n }\n\n xrefEntry = entries[xrefEntry.gen];\n\n if (xrefEntry === undefined) {\n throw new _core_utils.XRefEntryException(\"Bad (compressed) XRef entry: \".concat(ref));\n }\n\n return xrefEntry;\n },\n fetchIfRefAsync: function fetchIfRefAsync(obj, suppressEncryption) {\n var _this3 = this;\n\n return _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee() {\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!(obj instanceof _primitives.Ref)) {\n _context.next = 2;\n break;\n }\n\n return _context.abrupt(\"return\", _this3.fetchAsync(obj, suppressEncryption));\n\n case 2:\n return _context.abrupt(\"return\", obj);\n\n case 3:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }))();\n },\n fetchAsync: function fetchAsync(ref, suppressEncryption) {\n var _this4 = this;\n\n return _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee2() {\n return _regenerator[\"default\"].wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.prev = 0;\n return _context2.abrupt(\"return\", _this4.fetch(ref, suppressEncryption));\n\n case 4:\n _context2.prev = 4;\n _context2.t0 = _context2[\"catch\"](0);\n\n if (_context2.t0 instanceof _core_utils.MissingDataException) {\n _context2.next = 8;\n break;\n }\n\n throw _context2.t0;\n\n case 8:\n _context2.next = 10;\n return _this4.pdfManager.requestRange(_context2.t0.begin, _context2.t0.end);\n\n case 10:\n return _context2.abrupt(\"return\", _this4.fetchAsync(ref, suppressEncryption));\n\n case 11:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, null, [[0, 4]]);\n }))();\n },\n getCatalogObj: function XRef_getCatalogObj() {\n return this.root;\n }\n };\n return XRef;\n}();\n\nexports.XRef = XRef;\n\nvar NameOrNumberTree = /*#__PURE__*/function () {\n function NameOrNumberTree(root, xref, type) {\n _classCallCheck(this, NameOrNumberTree);\n\n if (this.constructor === NameOrNumberTree) {\n (0, _util.unreachable)(\"Cannot initialize NameOrNumberTree.\");\n }\n\n this.root = root;\n this.xref = xref;\n this._type = type;\n }\n\n _createClass(NameOrNumberTree, [{\n key: \"getAll\",\n value: function getAll() {\n var dict = Object.create(null);\n\n if (!this.root) {\n return dict;\n }\n\n var xref = this.xref;\n var processed = new _primitives.RefSet();\n processed.put(this.root);\n var queue = [this.root];\n\n while (queue.length > 0) {\n var obj = xref.fetchIfRef(queue.shift());\n\n if (!(0, _primitives.isDict)(obj)) {\n continue;\n }\n\n if (obj.has(\"Kids\")) {\n var kids = obj.get(\"Kids\");\n\n for (var i = 0, ii = kids.length; i < ii; i++) {\n var kid = kids[i];\n\n if (processed.has(kid)) {\n throw new _util.FormatError(\"Duplicate entry in \\\"\".concat(this._type, \"\\\" tree.\"));\n }\n\n queue.push(kid);\n processed.put(kid);\n }\n\n continue;\n }\n\n var entries = obj.get(this._type);\n\n if (Array.isArray(entries)) {\n for (var _i3 = 0, _ii = entries.length; _i3 < _ii; _i3 += 2) {\n dict[xref.fetchIfRef(entries[_i3])] = xref.fetchIfRef(entries[_i3 + 1]);\n }\n }\n }\n\n return dict;\n }\n }, {\n key: \"get\",\n value: function get(key) {\n if (!this.root) {\n return null;\n }\n\n var xref = this.xref;\n var kidsOrEntries = xref.fetchIfRef(this.root);\n var loopCount = 0;\n var MAX_LEVELS = 10;\n\n while (kidsOrEntries.has(\"Kids\")) {\n if (++loopCount > MAX_LEVELS) {\n (0, _util.warn)(\"Search depth limit reached for \\\"\".concat(this._type, \"\\\" tree.\"));\n return null;\n }\n\n var kids = kidsOrEntries.get(\"Kids\");\n\n if (!Array.isArray(kids)) {\n return null;\n }\n\n var l = 0,\n r = kids.length - 1;\n\n while (l <= r) {\n var m = l + r >> 1;\n var kid = xref.fetchIfRef(kids[m]);\n var 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\n if (l > r) {\n return null;\n }\n }\n\n var entries = kidsOrEntries.get(this._type);\n\n if (Array.isArray(entries)) {\n var _l = 0,\n _r = entries.length - 2;\n\n while (_l <= _r) {\n var tmp = _l + _r >> 1,\n _m = tmp + (tmp & 1);\n\n var currentKey = xref.fetchIfRef(entries[_m]);\n\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 (0, _util.info)(\"Falling back to an exhaustive search, for key \\\"\".concat(key, \"\\\", \") + \"in \\\"\".concat(this._type, \"\\\" tree.\"));\n\n for (var _m2 = 0, mm = entries.length; _m2 < mm; _m2 += 2) {\n var _currentKey = xref.fetchIfRef(entries[_m2]);\n\n if (_currentKey === key) {\n (0, _util.warn)(\"The \\\"\".concat(key, \"\\\" key was found at an incorrect, \") + \"i.e. out-of-order, position in \\\"\".concat(this._type, \"\\\" tree.\"));\n return xref.fetchIfRef(entries[_m2 + 1]);\n }\n }\n }\n\n return null;\n }\n }]);\n\n return NameOrNumberTree;\n}();\n\nvar NameTree = /*#__PURE__*/function (_NameOrNumberTree) {\n _inherits(NameTree, _NameOrNumberTree);\n\n var _super = _createSuper(NameTree);\n\n function NameTree(root, xref) {\n _classCallCheck(this, NameTree);\n\n return _super.call(this, root, xref, \"Names\");\n }\n\n return NameTree;\n}(NameOrNumberTree);\n\nvar NumberTree = /*#__PURE__*/function (_NameOrNumberTree2) {\n _inherits(NumberTree, _NameOrNumberTree2);\n\n var _super2 = _createSuper(NumberTree);\n\n function NumberTree(root, xref) {\n _classCallCheck(this, NumberTree);\n\n return _super2.call(this, root, xref, \"Nums\");\n }\n\n return NumberTree;\n}(NameOrNumberTree);\n\nvar FileSpec = function FileSpecClosure() {\n function FileSpec(root, xref) {\n if (!root || !(0, _primitives.isDict)(root)) {\n return;\n }\n\n this.xref = xref;\n this.root = root;\n\n if (root.has(\"FS\")) {\n this.fs = root.get(\"FS\");\n }\n\n this.description = root.has(\"Desc\") ? (0, _util.stringToPDFString)(root.get(\"Desc\")) : \"\";\n\n if (root.has(\"RF\")) {\n (0, _util.warn)(\"Related file specifications are not supported\");\n }\n\n this.contentAvailable = true;\n\n if (!root.has(\"EF\")) {\n this.contentAvailable = false;\n (0, _util.warn)(\"Non-embedded file specifications are not supported\");\n }\n }\n\n function pickPlatformItem(dict) {\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\n return null;\n }\n\n FileSpec.prototype = {\n get filename() {\n if (!this._filename && this.root) {\n var filename = pickPlatformItem(this.root) || \"unnamed\";\n this._filename = (0, _util.stringToPDFString)(filename).replace(/\\\\\\\\/g, \"\\\\\").replace(/\\\\\\//g, \"/\").replace(/\\\\/g, \"/\");\n }\n\n return this._filename;\n },\n\n get content() {\n if (!this.contentAvailable) {\n return null;\n }\n\n if (!this.contentRef && this.root) {\n this.contentRef = pickPlatformItem(this.root.get(\"EF\"));\n }\n\n var content = null;\n\n if (this.contentRef) {\n var xref = this.xref;\n var fileObj = xref.fetchIfRef(this.contentRef);\n\n if (fileObj && (0, _primitives.isStream)(fileObj)) {\n content = fileObj.getBytes();\n } else {\n (0, _util.warn)(\"Embedded file specification points to non-existing/invalid \" + \"content\");\n }\n } else {\n (0, _util.warn)(\"Embedded file specification does not have a content\");\n }\n\n return content;\n },\n\n get serializable() {\n return {\n filename: this.filename,\n content: this.content\n };\n }\n\n };\n return FileSpec;\n}();\n\nexports.FileSpec = FileSpec;\n\nvar ObjectLoader = function () {\n function mayHaveChildren(value) {\n return value instanceof _primitives.Ref || value instanceof _primitives.Dict || Array.isArray(value) || (0, _primitives.isStream)(value);\n }\n\n function addChildren(node, nodesToVisit) {\n if (node instanceof _primitives.Dict || (0, _primitives.isStream)(node)) {\n var dict = node instanceof _primitives.Dict ? node : node.dict;\n var dictKeys = dict.getKeys();\n\n for (var i = 0, ii = dictKeys.length; i < ii; i++) {\n var rawValue = dict.getRaw(dictKeys[i]);\n\n if (mayHaveChildren(rawValue)) {\n nodesToVisit.push(rawValue);\n }\n }\n } else if (Array.isArray(node)) {\n for (var _i4 = 0, _ii2 = node.length; _i4 < _ii2; _i4++) {\n var value = node[_i4];\n\n if (mayHaveChildren(value)) {\n nodesToVisit.push(value);\n }\n }\n }\n }\n\n function ObjectLoader(dict, keys, xref) {\n this.dict = dict;\n this.keys = keys;\n this.xref = xref;\n this.refSet = null;\n }\n\n ObjectLoader.prototype = {\n load: function load() {\n var _this5 = this;\n\n return _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee3() {\n var keys, dict, nodesToVisit, i, ii, rawValue;\n return _regenerator[\"default\"].wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n if (!(!_this5.xref.stream.allChunksLoaded || _this5.xref.stream.allChunksLoaded())) {\n _context3.next = 2;\n break;\n }\n\n return _context3.abrupt(\"return\", undefined);\n\n case 2:\n keys = _this5.keys, dict = _this5.dict;\n _this5.refSet = new _primitives.RefSet();\n nodesToVisit = [];\n\n for (i = 0, ii = keys.length; i < ii; i++) {\n rawValue = dict.getRaw(keys[i]);\n\n if (rawValue !== undefined) {\n nodesToVisit.push(rawValue);\n }\n }\n\n return _context3.abrupt(\"return\", _this5._walk(nodesToVisit));\n\n case 7:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }))();\n },\n _walk: function _walk(nodesToVisit) {\n var _this6 = this;\n\n return _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee4() {\n var nodesToRevisit, pendingRequests, currentNode, baseStreams, foundMissingData, i, ii, stream, _i5, _ii3, node;\n\n return _regenerator[\"default\"].wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n nodesToRevisit = [];\n pendingRequests = [];\n\n case 2:\n if (!nodesToVisit.length) {\n _context4.next = 22;\n break;\n }\n\n currentNode = nodesToVisit.pop();\n\n if (!(currentNode instanceof _primitives.Ref)) {\n _context4.next = 18;\n break;\n }\n\n if (!_this6.refSet.has(currentNode)) {\n _context4.next = 7;\n break;\n }\n\n return _context4.abrupt(\"continue\", 2);\n\n case 7:\n _context4.prev = 7;\n\n _this6.refSet.put(currentNode);\n\n currentNode = _this6.xref.fetch(currentNode);\n _context4.next = 18;\n break;\n\n case 12:\n _context4.prev = 12;\n _context4.t0 = _context4[\"catch\"](7);\n\n if (_context4.t0 instanceof _core_utils.MissingDataException) {\n _context4.next = 16;\n break;\n }\n\n throw _context4.t0;\n\n case 16:\n nodesToRevisit.push(currentNode);\n pendingRequests.push({\n begin: _context4.t0.begin,\n end: _context4.t0.end\n });\n\n case 18:\n if (currentNode && currentNode.getBaseStreams) {\n baseStreams = currentNode.getBaseStreams();\n foundMissingData = false;\n\n for (i = 0, ii = baseStreams.length; i < ii; i++) {\n stream = baseStreams[i];\n\n if (stream.allChunksLoaded && !stream.allChunksLoaded()) {\n foundMissingData = true;\n pendingRequests.push({\n begin: stream.start,\n end: stream.end\n });\n }\n }\n\n if (foundMissingData) {\n nodesToRevisit.push(currentNode);\n }\n }\n\n addChildren(currentNode, nodesToVisit);\n _context4.next = 2;\n break;\n\n case 22:\n if (!pendingRequests.length) {\n _context4.next = 27;\n break;\n }\n\n _context4.next = 25;\n return _this6.xref.stream.manager.requestRanges(pendingRequests);\n\n case 25:\n for (_i5 = 0, _ii3 = nodesToRevisit.length; _i5 < _ii3; _i5++) {\n node = nodesToRevisit[_i5];\n\n if (node instanceof _primitives.Ref) {\n _this6.refSet.remove(node);\n }\n }\n\n return _context4.abrupt(\"return\", _this6._walk(nodesToRevisit));\n\n case 27:\n _this6.refSet = null;\n return _context4.abrupt(\"return\", undefined);\n\n case 29:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, null, [[7, 12]]);\n }))();\n }\n };\n return ObjectLoader;\n}();\n\nexports.ObjectLoader = ObjectLoader;\n\n/***/ }),\n/* 204 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Parser = exports.Linearization = exports.Lexer = void 0;\n\nvar _stream = __w_pdfjs_require__(205);\n\nvar _util = __w_pdfjs_require__(5);\n\nvar _primitives = __w_pdfjs_require__(198);\n\nvar _core_utils = __w_pdfjs_require__(201);\n\nvar _ccitt_stream = __w_pdfjs_require__(206);\n\nvar _jbig2_stream = __w_pdfjs_require__(208);\n\nvar _jpeg_stream = __w_pdfjs_require__(211);\n\nvar _jpx_stream = __w_pdfjs_require__(213);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar MAX_LENGTH_TO_CACHE = 1000;\nvar MAX_ADLER32_LENGTH = 5552;\n\nfunction computeAdler32(bytes) {\n var bytesLength = bytes.length;\n var a = 1,\n b = 0;\n\n for (var i = 0; i < bytesLength; ++i) {\n a += bytes[i] & 0xff;\n b += a;\n }\n\n return b % 65521 << 16 | a % 65521;\n}\n\nvar Parser = /*#__PURE__*/function () {\n function Parser(_ref) {\n var lexer = _ref.lexer,\n xref = _ref.xref,\n _ref$allowStreams = _ref.allowStreams,\n allowStreams = _ref$allowStreams === void 0 ? false : _ref$allowStreams,\n _ref$recoveryMode = _ref.recoveryMode,\n recoveryMode = _ref$recoveryMode === void 0 ? false : _ref$recoveryMode;\n\n _classCallCheck(this, Parser);\n\n this.lexer = lexer;\n this.xref = xref;\n this.allowStreams = allowStreams;\n this.recoveryMode = recoveryMode;\n this.imageCache = Object.create(null);\n this.refill();\n }\n\n _createClass(Parser, [{\n key: \"refill\",\n value: function refill() {\n this.buf1 = this.lexer.getObj();\n this.buf2 = this.lexer.getObj();\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.buf2 instanceof _primitives.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 key: \"tryShift\",\n value: function tryShift() {\n try {\n this.shift();\n return true;\n } catch (e) {\n if (e instanceof _core_utils.MissingDataException) {\n throw e;\n }\n\n return false;\n }\n }\n }, {\n key: \"getObj\",\n value: function getObj() {\n var cipherTransform = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n var buf1 = this.buf1;\n this.shift();\n\n if (buf1 instanceof _primitives.Cmd) {\n switch (buf1.cmd) {\n case \"BI\":\n return this.makeInlineImage(cipherTransform);\n\n case \"[\":\n var array = [];\n\n while (!(0, _primitives.isCmd)(this.buf1, \"]\") && !(0, _primitives.isEOF)(this.buf1)) {\n array.push(this.getObj(cipherTransform));\n }\n\n if ((0, _primitives.isEOF)(this.buf1)) {\n if (!this.recoveryMode) {\n throw new _util.FormatError(\"End of file inside array\");\n }\n\n return array;\n }\n\n this.shift();\n return array;\n\n case \"<<\":\n var dict = new _primitives.Dict(this.xref);\n\n while (!(0, _primitives.isCmd)(this.buf1, \">>\") && !(0, _primitives.isEOF)(this.buf1)) {\n if (!(0, _primitives.isName)(this.buf1)) {\n (0, _util.info)(\"Malformed dictionary: key must be a name object\");\n this.shift();\n continue;\n }\n\n var key = this.buf1.name;\n this.shift();\n\n if ((0, _primitives.isEOF)(this.buf1)) {\n break;\n }\n\n dict.set(key, this.getObj(cipherTransform));\n }\n\n if ((0, _primitives.isEOF)(this.buf1)) {\n if (!this.recoveryMode) {\n throw new _util.FormatError(\"End of file inside dictionary\");\n }\n\n return dict;\n }\n\n if ((0, _primitives.isCmd)(this.buf2, \"stream\")) {\n return this.allowStreams ? this.makeStream(dict, cipherTransform) : dict;\n }\n\n this.shift();\n return dict;\n\n default:\n return buf1;\n }\n }\n\n if (Number.isInteger(buf1)) {\n if (Number.isInteger(this.buf1) && (0, _primitives.isCmd)(this.buf2, \"R\")) {\n var ref = _primitives.Ref.get(buf1, this.buf1);\n\n this.shift();\n this.shift();\n return ref;\n }\n\n return buf1;\n }\n\n if (typeof buf1 === \"string\") {\n if (cipherTransform) {\n return cipherTransform.decryptString(buf1);\n }\n\n return buf1;\n }\n\n return buf1;\n }\n }, {\n key: \"findDefaultInlineStreamEnd\",\n value: function findDefaultInlineStreamEnd(stream) {\n var E = 0x45,\n I = 0x49,\n SPACE = 0x20,\n LF = 0xa,\n CR = 0xd;\n var n = 10,\n NUL = 0x0;\n var startPos = stream.pos;\n var state = 0,\n ch,\n maybeEIPos;\n\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 (0, _util.assert)(state === 2, \"findDefaultInlineStreamEnd - invalid state.\");\n\n if (ch === SPACE || ch === LF || ch === CR) {\n maybeEIPos = stream.pos;\n var followingBytes = stream.peekBytes(n);\n\n for (var i = 0, ii = followingBytes.length; i < ii; i++) {\n ch = followingBytes[i];\n\n if (ch === NUL && followingBytes[i + 1] !== NUL) {\n continue;\n }\n\n if (ch !== LF && ch !== CR && (ch < SPACE || ch > 0x7f)) {\n state = 0;\n break;\n }\n }\n\n if (state === 2) {\n break;\n }\n } else {\n state = 0;\n }\n }\n }\n\n if (ch === -1) {\n (0, _util.warn)(\"findDefaultInlineStreamEnd: \" + \"Reached the end of the stream without finding a valid EI marker\");\n\n if (maybeEIPos) {\n (0, _util.warn)('... trying to recover by using the last \"EI\" occurrence.');\n stream.skip(-(stream.pos - maybeEIPos));\n }\n }\n\n var endOffset = 4;\n stream.skip(-endOffset);\n ch = stream.peekByte();\n stream.skip(endOffset);\n\n if (!(0, _core_utils.isWhiteSpace)(ch)) {\n endOffset--;\n }\n\n return stream.pos - endOffset - startPos;\n }\n }, {\n key: \"findDCTDecodeInlineStreamEnd\",\n value: function findDCTDecodeInlineStreamEnd(stream) {\n var startPos = stream.pos;\n var foundEOI = false,\n b,\n markerLength;\n\n while ((b = stream.getByte()) !== -1) {\n if (b !== 0xff) {\n continue;\n }\n\n switch (stream.getByte()) {\n case 0x00:\n break;\n\n case 0xff:\n stream.skip(-1);\n break;\n\n case 0xd9:\n foundEOI = true;\n break;\n\n case 0xc0:\n case 0xc1:\n case 0xc2:\n case 0xc3:\n case 0xc5:\n case 0xc6:\n case 0xc7:\n case 0xc9:\n case 0xca:\n case 0xcb:\n case 0xcd:\n case 0xce:\n case 0xcf:\n case 0xc4:\n case 0xcc:\n case 0xda:\n case 0xdb:\n case 0xdc:\n case 0xdd:\n case 0xde:\n case 0xdf:\n case 0xe0:\n case 0xe1:\n case 0xe2:\n case 0xe3:\n case 0xe4:\n case 0xe5:\n case 0xe6:\n case 0xe7:\n case 0xe8:\n case 0xe9:\n case 0xea:\n case 0xeb:\n case 0xec:\n case 0xed:\n case 0xee:\n case 0xef:\n case 0xfe:\n markerLength = stream.getUint16();\n\n if (markerLength > 2) {\n stream.skip(markerLength - 2);\n } else {\n stream.skip(-2);\n }\n\n break;\n }\n\n if (foundEOI) {\n break;\n }\n }\n\n var length = stream.pos - startPos;\n\n if (b === -1) {\n (0, _util.warn)(\"Inline DCTDecode image stream: \" + \"EOI marker not found, searching for /EI/ instead.\");\n stream.skip(-length);\n return this.findDefaultInlineStreamEnd(stream);\n }\n\n this.inlineStreamSkipEI(stream);\n return length;\n }\n }, {\n key: \"findASCII85DecodeInlineStreamEnd\",\n value: function findASCII85DecodeInlineStreamEnd(stream) {\n var TILDE = 0x7e,\n GT = 0x3e;\n var startPos = stream.pos;\n var ch;\n\n while ((ch = stream.getByte()) !== -1) {\n if (ch === TILDE) {\n var tildePos = stream.pos;\n ch = stream.peekByte();\n\n while ((0, _core_utils.isWhiteSpace)(ch)) {\n stream.skip();\n ch = stream.peekByte();\n }\n\n if (ch === GT) {\n stream.skip();\n break;\n }\n\n if (stream.pos > tildePos) {\n var maybeEI = stream.peekBytes(2);\n\n if (maybeEI[0] === 0x45 && maybeEI[1] === 0x49) {\n break;\n }\n }\n }\n }\n\n var length = stream.pos - startPos;\n\n if (ch === -1) {\n (0, _util.warn)(\"Inline ASCII85Decode image stream: \" + \"EOD marker not found, searching for /EI/ instead.\");\n stream.skip(-length);\n return this.findDefaultInlineStreamEnd(stream);\n }\n\n this.inlineStreamSkipEI(stream);\n return length;\n }\n }, {\n key: \"findASCIIHexDecodeInlineStreamEnd\",\n value: function findASCIIHexDecodeInlineStreamEnd(stream) {\n var GT = 0x3e;\n var startPos = stream.pos;\n var ch;\n\n while ((ch = stream.getByte()) !== -1) {\n if (ch === GT) {\n break;\n }\n }\n\n var length = stream.pos - startPos;\n\n if (ch === -1) {\n (0, _util.warn)(\"Inline ASCIIHexDecode image stream: \" + \"EOD marker not found, searching for /EI/ instead.\");\n stream.skip(-length);\n return this.findDefaultInlineStreamEnd(stream);\n }\n\n this.inlineStreamSkipEI(stream);\n return length;\n }\n }, {\n key: \"inlineStreamSkipEI\",\n value: function inlineStreamSkipEI(stream) {\n var E = 0x45,\n I = 0x49;\n var state = 0,\n ch;\n\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 key: \"makeInlineImage\",\n value: function makeInlineImage(cipherTransform) {\n var lexer = this.lexer;\n var stream = lexer.stream;\n var dict = new _primitives.Dict(this.xref);\n var dictLength;\n\n while (!(0, _primitives.isCmd)(this.buf1, \"ID\") && !(0, _primitives.isEOF)(this.buf1)) {\n if (!(0, _primitives.isName)(this.buf1)) {\n throw new _util.FormatError(\"Dictionary key must be a name object\");\n }\n\n var key = this.buf1.name;\n this.shift();\n\n if ((0, _primitives.isEOF)(this.buf1)) {\n break;\n }\n\n dict.set(key, this.getObj(cipherTransform));\n }\n\n if (lexer.beginInlineImagePos !== -1) {\n dictLength = stream.pos - lexer.beginInlineImagePos;\n }\n\n var filter = dict.get(\"Filter\", \"F\");\n var filterName;\n\n if ((0, _primitives.isName)(filter)) {\n filterName = filter.name;\n } else if (Array.isArray(filter)) {\n var filterZero = this.xref.fetchIfRef(filter[0]);\n\n if ((0, _primitives.isName)(filterZero)) {\n filterName = filterZero.name;\n }\n }\n\n var startPos = stream.pos;\n var length;\n\n if (filterName === \"DCTDecode\" || filterName === \"DCT\") {\n length = this.findDCTDecodeInlineStreamEnd(stream);\n } else if (filterName === \"ASCII85Decode\" || filterName === \"A85\") {\n length = this.findASCII85DecodeInlineStreamEnd(stream);\n } else if (filterName === \"ASCIIHexDecode\" || filterName === \"AHx\") {\n length = this.findASCIIHexDecodeInlineStreamEnd(stream);\n } else {\n length = this.findDefaultInlineStreamEnd(stream);\n }\n\n var imageStream = stream.makeSubStream(startPos, length, dict);\n var cacheKey;\n\n if (length < MAX_LENGTH_TO_CACHE && dictLength < MAX_ADLER32_LENGTH) {\n var imageBytes = imageStream.getBytes();\n imageStream.reset();\n var initialStreamPos = stream.pos;\n stream.pos = lexer.beginInlineImagePos;\n var dictBytes = stream.getBytes(dictLength);\n stream.pos = initialStreamPos;\n cacheKey = computeAdler32(imageBytes) + \"_\" + computeAdler32(dictBytes);\n var cacheEntry = this.imageCache[cacheKey];\n\n if (cacheEntry !== undefined) {\n this.buf2 = _primitives.Cmd.get(\"EI\");\n this.shift();\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\n if (cacheKey !== undefined) {\n imageStream.cacheKey = \"inline_\".concat(length, \"_\").concat(cacheKey);\n this.imageCache[cacheKey] = imageStream;\n }\n\n this.buf2 = _primitives.Cmd.get(\"EI\");\n this.shift();\n return imageStream;\n }\n }, {\n key: \"_findStreamLength\",\n value: function _findStreamLength(startPos, signature) {\n var stream = this.lexer.stream;\n stream.pos = startPos;\n var SCAN_BLOCK_LENGTH = 2048;\n var signatureLength = signature.length;\n\n while (stream.pos < stream.end) {\n var scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\n var scanLength = scanBytes.length - signatureLength;\n\n if (scanLength <= 0) {\n break;\n }\n\n var pos = 0;\n\n while (pos < scanLength) {\n var j = 0;\n\n while (j < signatureLength && scanBytes[pos + j] === signature[j]) {\n j++;\n }\n\n if (j >= signatureLength) {\n stream.pos += pos;\n return stream.pos - startPos;\n }\n\n pos++;\n }\n\n stream.pos += scanLength;\n }\n\n return -1;\n }\n }, {\n key: \"makeStream\",\n value: function makeStream(dict, cipherTransform) {\n var lexer = this.lexer;\n var stream = lexer.stream;\n lexer.skipToNextLine();\n var startPos = stream.pos - 1;\n var length = dict.get(\"Length\");\n\n if (!Number.isInteger(length)) {\n (0, _util.info)(\"Bad length \\\"\".concat(length, \"\\\" in stream\"));\n length = 0;\n }\n\n stream.pos = startPos + length;\n lexer.nextChar();\n\n if (this.tryShift() && (0, _primitives.isCmd)(this.buf2, \"endstream\")) {\n this.shift();\n } else {\n var ENDSTREAM_SIGNATURE = new Uint8Array([0x65, 0x6E, 0x64, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D]);\n\n var actualLength = this._findStreamLength(startPos, ENDSTREAM_SIGNATURE);\n\n if (actualLength < 0) {\n var MAX_TRUNCATION = 1;\n\n for (var i = 1; i <= MAX_TRUNCATION; i++) {\n var end = ENDSTREAM_SIGNATURE.length - i;\n var TRUNCATED_SIGNATURE = ENDSTREAM_SIGNATURE.slice(0, end);\n\n var maybeLength = this._findStreamLength(startPos, TRUNCATED_SIGNATURE);\n\n if (maybeLength >= 0) {\n var lastByte = stream.peekBytes(end + 1)[end];\n\n if (!(0, _core_utils.isWhiteSpace)(lastByte)) {\n break;\n }\n\n (0, _util.info)(\"Found \\\"\".concat((0, _util.bytesToString)(TRUNCATED_SIGNATURE), \"\\\" when \") + \"searching for endstream command.\");\n actualLength = maybeLength;\n break;\n }\n }\n\n if (actualLength < 0) {\n throw new _util.FormatError(\"Missing endstream command.\");\n }\n }\n\n length = actualLength;\n lexer.nextChar();\n this.shift();\n this.shift();\n }\n\n this.shift();\n stream = stream.makeSubStream(startPos, length, dict);\n\n if (cipherTransform) {\n stream = cipherTransform.createStream(stream, length);\n }\n\n stream = this.filter(stream, dict, length);\n stream.dict = dict;\n return stream;\n }\n }, {\n key: \"filter\",\n value: function filter(stream, dict, length) {\n var filter = dict.get(\"Filter\", \"F\");\n var params = dict.get(\"DecodeParms\", \"DP\");\n\n if ((0, _primitives.isName)(filter)) {\n if (Array.isArray(params)) {\n (0, _util.warn)(\"/DecodeParms should not contain an Array, \" + \"when /Filter contains a Name.\");\n }\n\n return this.makeFilter(stream, filter.name, length, params);\n }\n\n var maybeLength = length;\n\n if (Array.isArray(filter)) {\n var filterArray = filter;\n var paramsArray = params;\n\n for (var i = 0, ii = filterArray.length; i < ii; ++i) {\n filter = this.xref.fetchIfRef(filterArray[i]);\n\n if (!(0, _primitives.isName)(filter)) {\n throw new _util.FormatError(\"Bad filter name \\\"\".concat(filter, \"\\\"\"));\n }\n\n params = null;\n\n if (Array.isArray(paramsArray) && i in paramsArray) {\n params = this.xref.fetchIfRef(paramsArray[i]);\n }\n\n stream = this.makeFilter(stream, filter.name, maybeLength, params);\n maybeLength = null;\n }\n }\n\n return stream;\n }\n }, {\n key: \"makeFilter\",\n value: function makeFilter(stream, name, maybeLength, params) {\n if (maybeLength === 0) {\n (0, _util.warn)(\"Empty \\\"\".concat(name, \"\\\" stream.\"));\n return new _stream.NullStream();\n }\n\n try {\n var xrefStreamStats = this.xref.stats.streamTypes;\n\n if (name === \"FlateDecode\" || name === \"Fl\") {\n xrefStreamStats[_util.StreamType.FLATE] = true;\n\n if (params) {\n return new _stream.PredictorStream(new _stream.FlateStream(stream, maybeLength), maybeLength, params);\n }\n\n return new _stream.FlateStream(stream, maybeLength);\n }\n\n if (name === \"LZWDecode\" || name === \"LZW\") {\n xrefStreamStats[_util.StreamType.LZW] = true;\n var earlyChange = 1;\n\n if (params) {\n if (params.has(\"EarlyChange\")) {\n earlyChange = params.get(\"EarlyChange\");\n }\n\n return new _stream.PredictorStream(new _stream.LZWStream(stream, maybeLength, earlyChange), maybeLength, params);\n }\n\n return new _stream.LZWStream(stream, maybeLength, earlyChange);\n }\n\n if (name === \"DCTDecode\" || name === \"DCT\") {\n xrefStreamStats[_util.StreamType.DCT] = true;\n return new _jpeg_stream.JpegStream(stream, maybeLength, stream.dict, params);\n }\n\n if (name === \"JPXDecode\" || name === \"JPX\") {\n xrefStreamStats[_util.StreamType.JPX] = true;\n return new _jpx_stream.JpxStream(stream, maybeLength, stream.dict, params);\n }\n\n if (name === \"ASCII85Decode\" || name === \"A85\") {\n xrefStreamStats[_util.StreamType.A85] = true;\n return new _stream.Ascii85Stream(stream, maybeLength);\n }\n\n if (name === \"ASCIIHexDecode\" || name === \"AHx\") {\n xrefStreamStats[_util.StreamType.AHX] = true;\n return new _stream.AsciiHexStream(stream, maybeLength);\n }\n\n if (name === \"CCITTFaxDecode\" || name === \"CCF\") {\n xrefStreamStats[_util.StreamType.CCF] = true;\n return new _ccitt_stream.CCITTFaxStream(stream, maybeLength, params);\n }\n\n if (name === \"RunLengthDecode\" || name === \"RL\") {\n xrefStreamStats[_util.StreamType.RLX] = true;\n return new _stream.RunLengthStream(stream, maybeLength);\n }\n\n if (name === \"JBIG2Decode\") {\n xrefStreamStats[_util.StreamType.JBIG] = true;\n return new _jbig2_stream.Jbig2Stream(stream, maybeLength, stream.dict, params);\n }\n\n (0, _util.warn)(\"Filter \\\"\".concat(name, \"\\\" is not supported.\"));\n return stream;\n } catch (ex) {\n if (ex instanceof _core_utils.MissingDataException) {\n throw ex;\n }\n\n (0, _util.warn)(\"Invalid stream: \\\"\".concat(ex, \"\\\"\"));\n return new _stream.NullStream();\n }\n }\n }]);\n\n return Parser;\n}();\n\nexports.Parser = Parser;\nvar specialChars = [1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n\nfunction toHexDigit(ch) {\n if (ch >= 0x30 && ch <= 0x39) {\n return ch & 0x0f;\n }\n\n if (ch >= 0x41 && ch <= 0x46 || ch >= 0x61 && ch <= 0x66) {\n return (ch & 0x0f) + 9;\n }\n\n return -1;\n}\n\nvar Lexer = /*#__PURE__*/function () {\n function Lexer(stream) {\n var knownCommands = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n _classCallCheck(this, Lexer);\n\n this.stream = stream;\n this.nextChar();\n this.strBuf = [];\n this.knownCommands = knownCommands;\n this._hexStringNumWarn = 0;\n this.beginInlineImagePos = -1;\n }\n\n _createClass(Lexer, [{\n key: \"nextChar\",\n value: function nextChar() {\n return this.currentChar = this.stream.getByte();\n }\n }, {\n key: \"peekChar\",\n value: function peekChar() {\n return this.stream.peekByte();\n }\n }, {\n key: \"getNumber\",\n value: function getNumber() {\n var ch = this.currentChar;\n var eNotation = false;\n var divideBy = 0;\n var sign = 0;\n\n if (ch === 0x2d) {\n sign = -1;\n ch = this.nextChar();\n\n if (ch === 0x2d) {\n ch = this.nextChar();\n }\n } else if (ch === 0x2b) {\n sign = 1;\n ch = this.nextChar();\n }\n\n if (ch === 0x0a || ch === 0x0d) {\n do {\n ch = this.nextChar();\n } while (ch === 0x0a || ch === 0x0d);\n }\n\n if (ch === 0x2e) {\n divideBy = 10;\n ch = this.nextChar();\n }\n\n if (ch < 0x30 || ch > 0x39) {\n if (divideBy === 10 && sign === 0 && ((0, _core_utils.isWhiteSpace)(ch) || ch === -1)) {\n (0, _util.warn)(\"Lexer.getNumber - treating a single decimal point as zero.\");\n return 0;\n }\n\n throw new _util.FormatError(\"Invalid number: \".concat(String.fromCharCode(ch), \" (charCode \").concat(ch, \")\"));\n }\n\n sign = sign || 1;\n var baseValue = ch - 0x30;\n var powerValue = 0;\n var powerValueSign = 1;\n\n while ((ch = this.nextChar()) >= 0) {\n if (ch >= 0x30 && ch <= 0x39) {\n var currentDigit = ch - 0x30;\n\n if (eNotation) {\n powerValue = powerValue * 10 + currentDigit;\n } else {\n if (divideBy !== 0) {\n divideBy *= 10;\n }\n\n baseValue = baseValue * 10 + currentDigit;\n }\n } else if (ch === 0x2e) {\n if (divideBy === 0) {\n divideBy = 1;\n } else {\n break;\n }\n } else if (ch === 0x2d) {\n (0, _util.warn)(\"Badly formatted number: minus sign in the middle\");\n } else if (ch === 0x45 || ch === 0x65) {\n ch = this.peekChar();\n\n if (ch === 0x2b || ch === 0x2d) {\n powerValueSign = ch === 0x2d ? -1 : 1;\n this.nextChar();\n } else if (ch < 0x30 || ch > 0x39) {\n break;\n }\n\n eNotation = true;\n } else {\n break;\n }\n }\n\n if (divideBy !== 0) {\n baseValue /= divideBy;\n }\n\n if (eNotation) {\n baseValue *= Math.pow(10, powerValueSign * powerValue);\n }\n\n return sign * baseValue;\n }\n }, {\n key: \"getString\",\n value: function getString() {\n var numParen = 1;\n var done = false;\n var strBuf = this.strBuf;\n strBuf.length = 0;\n var ch = this.nextChar();\n\n while (true) {\n var charBuffered = false;\n\n switch (ch | 0) {\n case -1:\n (0, _util.warn)(\"Unterminated string\");\n done = true;\n break;\n\n case 0x28:\n ++numParen;\n strBuf.push(\"(\");\n break;\n\n case 0x29:\n if (--numParen === 0) {\n this.nextChar();\n done = true;\n } else {\n strBuf.push(\")\");\n }\n\n break;\n\n case 0x5c:\n ch = this.nextChar();\n\n switch (ch) {\n case -1:\n (0, _util.warn)(\"Unterminated string\");\n done = true;\n break;\n\n case 0x6e:\n strBuf.push(\"\\n\");\n break;\n\n case 0x72:\n strBuf.push(\"\\r\");\n break;\n\n case 0x74:\n strBuf.push(\"\\t\");\n break;\n\n case 0x62:\n strBuf.push(\"\\b\");\n break;\n\n case 0x66:\n strBuf.push(\"\\f\");\n break;\n\n case 0x5c:\n case 0x28:\n case 0x29:\n strBuf.push(String.fromCharCode(ch));\n break;\n\n case 0x30:\n case 0x31:\n case 0x32:\n case 0x33:\n case 0x34:\n case 0x35:\n case 0x36:\n case 0x37:\n var x = ch & 0x0f;\n ch = this.nextChar();\n charBuffered = true;\n\n if (ch >= 0x30 && ch <= 0x37) {\n x = (x << 3) + (ch & 0x0f);\n ch = this.nextChar();\n\n if (ch >= 0x30 && ch <= 0x37) {\n charBuffered = false;\n x = (x << 3) + (ch & 0x0f);\n }\n }\n\n strBuf.push(String.fromCharCode(x));\n break;\n\n case 0x0d:\n if (this.peekChar() === 0x0a) {\n this.nextChar();\n }\n\n break;\n\n case 0x0a:\n break;\n\n default:\n strBuf.push(String.fromCharCode(ch));\n break;\n }\n\n break;\n\n default:\n strBuf.push(String.fromCharCode(ch));\n break;\n }\n\n if (done) {\n break;\n }\n\n if (!charBuffered) {\n ch = this.nextChar();\n }\n }\n\n return strBuf.join(\"\");\n }\n }, {\n key: \"getName\",\n value: function getName() {\n var ch, previousCh;\n var 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\n if (specialChars[ch]) {\n (0, _util.warn)(\"Lexer_getName: \" + \"NUMBER SIGN (#) should be followed by a hexadecimal number.\");\n strBuf.push(\"#\");\n break;\n }\n\n var x = toHexDigit(ch);\n\n if (x !== -1) {\n previousCh = ch;\n ch = this.nextChar();\n var x2 = toHexDigit(ch);\n\n if (x2 === -1) {\n (0, _util.warn)(\"Lexer_getName: Illegal digit (\".concat(String.fromCharCode(ch), \") \") + \"in hexadecimal number.\");\n strBuf.push(\"#\", String.fromCharCode(previousCh));\n\n if (specialChars[ch]) {\n break;\n }\n\n strBuf.push(String.fromCharCode(ch));\n continue;\n }\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\n if (strBuf.length > 127) {\n (0, _util.warn)(\"Name token is longer than allowed by the spec: \".concat(strBuf.length));\n }\n\n return _primitives.Name.get(strBuf.join(\"\"));\n }\n }, {\n key: \"_hexStringWarn\",\n value: function _hexStringWarn(ch) {\n var MAX_HEX_STRING_NUM_WARN = 5;\n\n if (this._hexStringNumWarn++ === MAX_HEX_STRING_NUM_WARN) {\n (0, _util.warn)(\"getHexString - ignoring additional invalid characters.\");\n return;\n }\n\n if (this._hexStringNumWarn > MAX_HEX_STRING_NUM_WARN) {\n return;\n }\n\n (0, _util.warn)(\"getHexString - ignoring invalid character: \".concat(ch));\n }\n }, {\n key: \"getHexString\",\n value: function getHexString() {\n var strBuf = this.strBuf;\n strBuf.length = 0;\n var ch = this.currentChar;\n var isFirstHex = true;\n var firstDigit, secondDigit;\n this._hexStringNumWarn = 0;\n\n while (true) {\n if (ch < 0) {\n (0, _util.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\n if (firstDigit === -1) {\n this._hexStringWarn(ch);\n\n ch = this.nextChar();\n continue;\n }\n } else {\n secondDigit = toHexDigit(ch);\n\n if (secondDigit === -1) {\n this._hexStringWarn(ch);\n\n ch = this.nextChar();\n continue;\n }\n\n strBuf.push(String.fromCharCode(firstDigit << 4 | secondDigit));\n }\n\n isFirstHex = !isFirstHex;\n ch = this.nextChar();\n }\n }\n\n return strBuf.join(\"\");\n }\n }, {\n key: \"getObj\",\n value: function getObj() {\n var comment = false;\n var ch = this.currentChar;\n\n while (true) {\n if (ch < 0) {\n return _primitives.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 (specialChars[ch] !== 1) {\n break;\n }\n\n ch = this.nextChar();\n }\n\n switch (ch | 0) {\n case 0x30:\n case 0x31:\n case 0x32:\n case 0x33:\n case 0x34:\n case 0x35:\n case 0x36:\n case 0x37:\n case 0x38:\n case 0x39:\n case 0x2b:\n case 0x2d:\n case 0x2e:\n return this.getNumber();\n\n case 0x28:\n return this.getString();\n\n case 0x2f:\n return this.getName();\n\n case 0x5b:\n this.nextChar();\n return _primitives.Cmd.get(\"[\");\n\n case 0x5d:\n this.nextChar();\n return _primitives.Cmd.get(\"]\");\n\n case 0x3c:\n ch = this.nextChar();\n\n if (ch === 0x3c) {\n this.nextChar();\n return _primitives.Cmd.get(\"<<\");\n }\n\n return this.getHexString();\n\n case 0x3e:\n ch = this.nextChar();\n\n if (ch === 0x3e) {\n this.nextChar();\n return _primitives.Cmd.get(\">>\");\n }\n\n return _primitives.Cmd.get(\">\");\n\n case 0x7b:\n this.nextChar();\n return _primitives.Cmd.get(\"{\");\n\n case 0x7d:\n this.nextChar();\n return _primitives.Cmd.get(\"}\");\n\n case 0x29:\n this.nextChar();\n throw new _util.FormatError(\"Illegal character: \".concat(ch));\n }\n\n var str = String.fromCharCode(ch);\n var knownCommands = this.knownCommands;\n var knownCommandFound = knownCommands && knownCommands[str] !== undefined;\n\n while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\n var possibleCommand = str + String.fromCharCode(ch);\n\n if (knownCommandFound && knownCommands[possibleCommand] === undefined) {\n break;\n }\n\n if (str.length === 128) {\n throw new _util.FormatError(\"Command token too long: \".concat(str.length));\n }\n\n str = possibleCommand;\n knownCommandFound = knownCommands && knownCommands[str] !== undefined;\n }\n\n if (str === \"true\") {\n return true;\n }\n\n if (str === \"false\") {\n return false;\n }\n\n if (str === \"null\") {\n return null;\n }\n\n if (str === \"BI\") {\n this.beginInlineImagePos = this.stream.pos;\n }\n\n return _primitives.Cmd.get(str);\n }\n }, {\n key: \"skipToNextLine\",\n value: function skipToNextLine() {\n var ch = this.currentChar;\n\n while (ch >= 0) {\n if (ch === 0x0d) {\n ch = this.nextChar();\n\n if (ch === 0x0a) {\n this.nextChar();\n }\n\n break;\n } else if (ch === 0x0a) {\n this.nextChar();\n break;\n }\n\n ch = this.nextChar();\n }\n }\n }]);\n\n return Lexer;\n}();\n\nexports.Lexer = Lexer;\n\nvar Linearization = /*#__PURE__*/function () {\n function Linearization() {\n _classCallCheck(this, Linearization);\n }\n\n _createClass(Linearization, null, [{\n key: \"create\",\n value: function create(stream) {\n function getInt(linDict, name) {\n var allowZeroValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var obj = linDict.get(name);\n\n if (Number.isInteger(obj) && (allowZeroValue ? obj >= 0 : obj > 0)) {\n return obj;\n }\n\n throw new Error(\"The \\\"\".concat(name, \"\\\" parameter in the linearization \") + \"dictionary is invalid.\");\n }\n\n function getHints(linDict) {\n var hints = linDict.get(\"H\");\n var hintsLength;\n\n if (Array.isArray(hints) && ((hintsLength = hints.length) === 2 || hintsLength === 4)) {\n for (var index = 0; index < hintsLength; index++) {\n var hint = hints[index];\n\n if (!(Number.isInteger(hint) && hint > 0)) {\n throw new Error(\"Hint (\".concat(index, \") in the linearization dictionary is invalid.\"));\n }\n }\n\n return hints;\n }\n\n throw new Error(\"Hint array in the linearization dictionary is invalid.\");\n }\n\n var parser = new Parser({\n lexer: new Lexer(stream),\n xref: null\n });\n var obj1 = parser.getObj();\n var obj2 = parser.getObj();\n var obj3 = parser.getObj();\n var linDict = parser.getObj();\n var obj, length;\n\n if (!(Number.isInteger(obj1) && Number.isInteger(obj2) && (0, _primitives.isCmd)(obj3, \"obj\") && (0, _primitives.isDict)(linDict) && (0, _util.isNum)(obj = linDict.get(\"Linearized\")) && obj > 0)) {\n return null;\n } else if ((length = getInt(linDict, \"L\")) !== stream.length) {\n throw new Error('The \"L\" parameter in the linearization dictionary ' + \"does not equal the stream length.\");\n }\n\n return {\n length: 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\") ? getInt(linDict, \"P\", true) : 0\n };\n }\n }]);\n\n return Linearization;\n}();\n\nexports.Linearization = Linearization;\n\n/***/ }),\n/* 205 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.LZWStream = exports.StringStream = exports.StreamsSequenceStream = exports.Stream = exports.RunLengthStream = exports.PredictorStream = exports.NullStream = exports.FlateStream = exports.DecodeStream = exports.DecryptStream = exports.AsciiHexStream = exports.Ascii85Stream = void 0;\n\nvar _util = __w_pdfjs_require__(5);\n\nvar _primitives = __w_pdfjs_require__(198);\n\nvar _core_utils = __w_pdfjs_require__(201);\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nvar Stream = function StreamClosure() {\n function Stream(arrayBuffer, start, length, dict) {\n this.bytes = arrayBuffer instanceof Uint8Array ? arrayBuffer : 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 Stream.prototype = {\n get length() {\n return this.end - this.start;\n },\n\n get isEmpty() {\n return this.length === 0;\n },\n\n getByte: function Stream_getByte() {\n if (this.pos >= this.end) {\n return -1;\n }\n\n return this.bytes[this.pos++];\n },\n getUint16: function Stream_getUint16() {\n var b0 = this.getByte();\n var b1 = this.getByte();\n\n if (b0 === -1 || b1 === -1) {\n return -1;\n }\n\n return (b0 << 8) + b1;\n },\n getInt32: function Stream_getInt32() {\n var b0 = this.getByte();\n var b1 = this.getByte();\n var b2 = this.getByte();\n var b3 = this.getByte();\n return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n },\n getBytes: function getBytes(length) {\n var forceClamped = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var bytes = this.bytes;\n var pos = this.pos;\n var strEnd = this.end;\n\n if (!length) {\n var _subarray = bytes.subarray(pos, strEnd);\n\n return forceClamped ? new Uint8ClampedArray(_subarray) : _subarray;\n }\n\n var end = pos + length;\n\n if (end > strEnd) {\n end = strEnd;\n }\n\n this.pos = end;\n var subarray = bytes.subarray(pos, end);\n return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n },\n peekByte: function Stream_peekByte() {\n var peekedByte = this.getByte();\n\n if (peekedByte !== -1) {\n this.pos--;\n }\n\n return peekedByte;\n },\n peekBytes: function peekBytes(length) {\n var forceClamped = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var bytes = this.getBytes(length, forceClamped);\n this.pos -= bytes.length;\n return bytes;\n },\n getByteRange: function getByteRange(begin, end) {\n if (begin < 0) {\n begin = 0;\n }\n\n if (end > this.end) {\n end = this.end;\n }\n\n return this.bytes.subarray(begin, end);\n },\n skip: function Stream_skip(n) {\n if (!n) {\n n = 1;\n }\n\n this.pos += n;\n },\n reset: function Stream_reset() {\n this.pos = this.start;\n },\n moveStart: function Stream_moveStart() {\n this.start = this.pos;\n },\n makeSubStream: function Stream_makeSubStream(start, length, dict) {\n return new Stream(this.bytes.buffer, start, length, dict);\n }\n };\n return Stream;\n}();\n\nexports.Stream = Stream;\n\nvar StringStream = function StringStreamClosure() {\n function StringStream(str) {\n var bytes = (0, _util.stringToBytes)(str);\n Stream.call(this, bytes);\n }\n\n StringStream.prototype = Stream.prototype;\n return StringStream;\n}();\n\nexports.StringStream = StringStream;\n\nvar DecodeStream = function DecodeStreamClosure() {\n var emptyBuffer = new Uint8Array(0);\n\n function DecodeStream(maybeMinBufferLength) {\n this._rawMinBufferLength = maybeMinBufferLength || 0;\n this.pos = 0;\n this.bufferLength = 0;\n this.eof = false;\n this.buffer = emptyBuffer;\n this.minBufferLength = 512;\n\n if (maybeMinBufferLength) {\n while (this.minBufferLength < maybeMinBufferLength) {\n this.minBufferLength *= 2;\n }\n }\n }\n\n DecodeStream.prototype = {\n get isEmpty() {\n while (!this.eof && this.bufferLength === 0) {\n this.readBlock();\n }\n\n return this.bufferLength === 0;\n },\n\n ensureBuffer: function DecodeStream_ensureBuffer(requested) {\n var buffer = this.buffer;\n\n if (requested <= buffer.byteLength) {\n return buffer;\n }\n\n var size = this.minBufferLength;\n\n while (size < requested) {\n size *= 2;\n }\n\n var buffer2 = new Uint8Array(size);\n buffer2.set(buffer);\n return this.buffer = buffer2;\n },\n getByte: function DecodeStream_getByte() {\n var pos = this.pos;\n\n while (this.bufferLength <= pos) {\n if (this.eof) {\n return -1;\n }\n\n this.readBlock();\n }\n\n return this.buffer[this.pos++];\n },\n getUint16: function DecodeStream_getUint16() {\n var b0 = this.getByte();\n var b1 = this.getByte();\n\n if (b0 === -1 || b1 === -1) {\n return -1;\n }\n\n return (b0 << 8) + b1;\n },\n getInt32: function DecodeStream_getInt32() {\n var b0 = this.getByte();\n var b1 = this.getByte();\n var b2 = this.getByte();\n var b3 = this.getByte();\n return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n },\n getBytes: function getBytes(length) {\n var forceClamped = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var end,\n pos = this.pos;\n\n if (length) {\n this.ensureBuffer(pos + length);\n end = pos + length;\n\n while (!this.eof && this.bufferLength < end) {\n this.readBlock();\n }\n\n var bufEnd = this.bufferLength;\n\n if (end > bufEnd) {\n end = bufEnd;\n }\n } else {\n while (!this.eof) {\n this.readBlock();\n }\n\n end = this.bufferLength;\n }\n\n this.pos = end;\n var subarray = this.buffer.subarray(pos, end);\n return forceClamped && !(subarray instanceof Uint8ClampedArray) ? new Uint8ClampedArray(subarray) : subarray;\n },\n peekByte: function DecodeStream_peekByte() {\n var peekedByte = this.getByte();\n\n if (peekedByte !== -1) {\n this.pos--;\n }\n\n return peekedByte;\n },\n peekBytes: function peekBytes(length) {\n var forceClamped = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var bytes = this.getBytes(length, forceClamped);\n this.pos -= bytes.length;\n return bytes;\n },\n makeSubStream: function DecodeStream_makeSubStream(start, length, dict) {\n var end = start + length;\n\n while (this.bufferLength <= end && !this.eof) {\n this.readBlock();\n }\n\n return new Stream(this.buffer, start, length, dict);\n },\n getByteRange: function getByteRange(begin, end) {\n (0, _util.unreachable)(\"Should not call DecodeStream.getByteRange\");\n },\n skip: function DecodeStream_skip(n) {\n if (!n) {\n n = 1;\n }\n\n this.pos += n;\n },\n reset: function DecodeStream_reset() {\n this.pos = 0;\n },\n getBaseStreams: function DecodeStream_getBaseStreams() {\n if (this.str && this.str.getBaseStreams) {\n return this.str.getBaseStreams();\n }\n\n return [];\n }\n };\n return DecodeStream;\n}();\n\nexports.DecodeStream = DecodeStream;\n\nvar StreamsSequenceStream = function StreamsSequenceStreamClosure() {\n function StreamsSequenceStream(streams) {\n this.streams = streams;\n var maybeLength = 0;\n\n for (var i = 0, ii = streams.length; i < ii; i++) {\n var stream = streams[i];\n\n if (stream instanceof DecodeStream) {\n maybeLength += stream._rawMinBufferLength;\n } else {\n maybeLength += stream.length;\n }\n }\n\n DecodeStream.call(this, maybeLength);\n }\n\n StreamsSequenceStream.prototype = Object.create(DecodeStream.prototype);\n\n StreamsSequenceStream.prototype.readBlock = function streamSequenceStreamReadBlock() {\n var streams = this.streams;\n\n if (streams.length === 0) {\n this.eof = true;\n return;\n }\n\n var stream = streams.shift();\n var chunk = stream.getBytes();\n var bufferLength = this.bufferLength;\n var newLength = bufferLength + chunk.length;\n var buffer = this.ensureBuffer(newLength);\n buffer.set(chunk, bufferLength);\n this.bufferLength = newLength;\n };\n\n StreamsSequenceStream.prototype.getBaseStreams = function StreamsSequenceStream_getBaseStreams() {\n var baseStreams = [];\n\n for (var i = 0, ii = this.streams.length; i < ii; i++) {\n var stream = this.streams[i];\n\n if (stream.getBaseStreams) {\n baseStreams.push.apply(baseStreams, _toConsumableArray(stream.getBaseStreams()));\n }\n }\n\n return baseStreams;\n };\n\n return StreamsSequenceStream;\n}();\n\nexports.StreamsSequenceStream = StreamsSequenceStream;\n\nvar FlateStream = function FlateStreamClosure() {\n var codeLenCodeMap = new Int32Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n var lengthDecode = new Int32Array([0x00003, 0x00004, 0x00005, 0x00006, 0x00007, 0x00008, 0x00009, 0x0000a, 0x1000b, 0x1000d, 0x1000f, 0x10011, 0x20013, 0x20017, 0x2001b, 0x2001f, 0x30023, 0x3002b, 0x30033, 0x3003b, 0x40043, 0x40053, 0x40063, 0x40073, 0x50083, 0x500a3, 0x500c3, 0x500e3, 0x00102, 0x00102, 0x00102]);\n var distDecode = new Int32Array([0x00001, 0x00002, 0x00003, 0x00004, 0x10005, 0x10007, 0x20009, 0x2000d, 0x30011, 0x30019, 0x40021, 0x40031, 0x50041, 0x50061, 0x60081, 0x600c1, 0x70101, 0x70181, 0x80201, 0x80301, 0x90401, 0x90601, 0xa0801, 0xa0c01, 0xb1001, 0xb1801, 0xc2001, 0xc3001, 0xd4001, 0xd6001]);\n var fixedLitCodeTab = [new Int32Array([0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c0, 0x70108, 0x80060, 0x80020, 0x900a0, 0x80000, 0x80080, 0x80040, 0x900e0, 0x70104, 0x80058, 0x80018, 0x90090, 0x70114, 0x80078, 0x80038, 0x900d0, 0x7010c, 0x80068, 0x80028, 0x900b0, 0x80008, 0x80088, 0x80048, 0x900f0, 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c8, 0x7010a, 0x80064, 0x80024, 0x900a8, 0x80004, 0x80084, 0x80044, 0x900e8, 0x70106, 0x8005c, 0x8001c, 0x90098, 0x70116, 0x8007c, 0x8003c, 0x900d8, 0x7010e, 0x8006c, 0x8002c, 0x900b8, 0x8000c, 0x8008c, 0x8004c, 0x900f8, 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c4, 0x70109, 0x80062, 0x80022, 0x900a4, 0x80002, 0x80082, 0x80042, 0x900e4, 0x70105, 0x8005a, 0x8001a, 0x90094, 0x70115, 0x8007a, 0x8003a, 0x900d4, 0x7010d, 0x8006a, 0x8002a, 0x900b4, 0x8000a, 0x8008a, 0x8004a, 0x900f4, 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cc, 0x7010b, 0x80066, 0x80026, 0x900ac, 0x80006, 0x80086, 0x80046, 0x900ec, 0x70107, 0x8005e, 0x8001e, 0x9009c, 0x70117, 0x8007e, 0x8003e, 0x900dc, 0x7010f, 0x8006e, 0x8002e, 0x900bc, 0x8000e, 0x8008e, 0x8004e, 0x900fc, 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c2, 0x70108, 0x80061, 0x80021, 0x900a2, 0x80001, 0x80081, 0x80041, 0x900e2, 0x70104, 0x80059, 0x80019, 0x90092, 0x70114, 0x80079, 0x80039, 0x900d2, 0x7010c, 0x80069, 0x80029, 0x900b2, 0x80009, 0x80089, 0x80049, 0x900f2, 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900ca, 0x7010a, 0x80065, 0x80025, 0x900aa, 0x80005, 0x80085, 0x80045, 0x900ea, 0x70106, 0x8005d, 0x8001d, 0x9009a, 0x70116, 0x8007d, 0x8003d, 0x900da, 0x7010e, 0x8006d, 0x8002d, 0x900ba, 0x8000d, 0x8008d, 0x8004d, 0x900fa, 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c6, 0x70109, 0x80063, 0x80023, 0x900a6, 0x80003, 0x80083, 0x80043, 0x900e6, 0x70105, 0x8005b, 0x8001b, 0x90096, 0x70115, 0x8007b, 0x8003b, 0x900d6, 0x7010d, 0x8006b, 0x8002b, 0x900b6, 0x8000b, 0x8008b, 0x8004b, 0x900f6, 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900ce, 0x7010b, 0x80067, 0x80027, 0x900ae, 0x80007, 0x80087, 0x80047, 0x900ee, 0x70107, 0x8005f, 0x8001f, 0x9009e, 0x70117, 0x8007f, 0x8003f, 0x900de, 0x7010f, 0x8006f, 0x8002f, 0x900be, 0x8000f, 0x8008f, 0x8004f, 0x900fe, 0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c1, 0x70108, 0x80060, 0x80020, 0x900a1, 0x80000, 0x80080, 0x80040, 0x900e1, 0x70104, 0x80058, 0x80018, 0x90091, 0x70114, 0x80078, 0x80038, 0x900d1, 0x7010c, 0x80068, 0x80028, 0x900b1, 0x80008, 0x80088, 0x80048, 0x900f1, 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c9, 0x7010a, 0x80064, 0x80024, 0x900a9, 0x80004, 0x80084, 0x80044, 0x900e9, 0x70106, 0x8005c, 0x8001c, 0x90099, 0x70116, 0x8007c, 0x8003c, 0x900d9, 0x7010e, 0x8006c, 0x8002c, 0x900b9, 0x8000c, 0x8008c, 0x8004c, 0x900f9, 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c5, 0x70109, 0x80062, 0x80022, 0x900a5, 0x80002, 0x80082, 0x80042, 0x900e5, 0x70105, 0x8005a, 0x8001a, 0x90095, 0x70115, 0x8007a, 0x8003a, 0x900d5, 0x7010d, 0x8006a, 0x8002a, 0x900b5, 0x8000a, 0x8008a, 0x8004a, 0x900f5, 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cd, 0x7010b, 0x80066, 0x80026, 0x900ad, 0x80006, 0x80086, 0x80046, 0x900ed, 0x70107, 0x8005e, 0x8001e, 0x9009d, 0x70117, 0x8007e, 0x8003e, 0x900dd, 0x7010f, 0x8006e, 0x8002e, 0x900bd, 0x8000e, 0x8008e, 0x8004e, 0x900fd, 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c3, 0x70108, 0x80061, 0x80021, 0x900a3, 0x80001, 0x80081, 0x80041, 0x900e3, 0x70104, 0x80059, 0x80019, 0x90093, 0x70114, 0x80079, 0x80039, 0x900d3, 0x7010c, 0x80069, 0x80029, 0x900b3, 0x80009, 0x80089, 0x80049, 0x900f3, 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900cb, 0x7010a, 0x80065, 0x80025, 0x900ab, 0x80005, 0x80085, 0x80045, 0x900eb, 0x70106, 0x8005d, 0x8001d, 0x9009b, 0x70116, 0x8007d, 0x8003d, 0x900db, 0x7010e, 0x8006d, 0x8002d, 0x900bb, 0x8000d, 0x8008d, 0x8004d, 0x900fb, 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c7, 0x70109, 0x80063, 0x80023, 0x900a7, 0x80003, 0x80083, 0x80043, 0x900e7, 0x70105, 0x8005b, 0x8001b, 0x90097, 0x70115, 0x8007b, 0x8003b, 0x900d7, 0x7010d, 0x8006b, 0x8002b, 0x900b7, 0x8000b, 0x8008b, 0x8004b, 0x900f7, 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900cf, 0x7010b, 0x80067, 0x80027, 0x900af, 0x80007, 0x80087, 0x80047, 0x900ef, 0x70107, 0x8005f, 0x8001f, 0x9009f, 0x70117, 0x8007f, 0x8003f, 0x900df, 0x7010f, 0x8006f, 0x8002f, 0x900bf, 0x8000f, 0x8008f, 0x8004f, 0x900ff]), 9];\n var fixedDistCodeTab = [new Int32Array([0x50000, 0x50010, 0x50008, 0x50018, 0x50004, 0x50014, 0x5000c, 0x5001c, 0x50002, 0x50012, 0x5000a, 0x5001a, 0x50006, 0x50016, 0x5000e, 0x00000, 0x50001, 0x50011, 0x50009, 0x50019, 0x50005, 0x50015, 0x5000d, 0x5001d, 0x50003, 0x50013, 0x5000b, 0x5001b, 0x50007, 0x50017, 0x5000f, 0x00000]), 5];\n\n function FlateStream(str, maybeLength) {\n this.str = str;\n this.dict = str.dict;\n var cmf = str.getByte();\n var flg = str.getByte();\n\n if (cmf === -1 || flg === -1) {\n throw new _util.FormatError(\"Invalid header in flate stream: \".concat(cmf, \", \").concat(flg));\n }\n\n if ((cmf & 0x0f) !== 0x08) {\n throw new _util.FormatError(\"Unknown compression method in flate stream: \".concat(cmf, \", \").concat(flg));\n }\n\n if (((cmf << 8) + flg) % 31 !== 0) {\n throw new _util.FormatError(\"Bad FCHECK in flate stream: \".concat(cmf, \", \").concat(flg));\n }\n\n if (flg & 0x20) {\n throw new _util.FormatError(\"FDICT bit set in flate stream: \".concat(cmf, \", \").concat(flg));\n }\n\n this.codeSize = 0;\n this.codeBuf = 0;\n DecodeStream.call(this, maybeLength);\n }\n\n FlateStream.prototype = Object.create(DecodeStream.prototype);\n\n FlateStream.prototype.getBits = function FlateStream_getBits(bits) {\n var str = this.str;\n var codeSize = this.codeSize;\n var codeBuf = this.codeBuf;\n var b;\n\n while (codeSize < bits) {\n if ((b = str.getByte()) === -1) {\n throw new _util.FormatError(\"Bad encoding in flate stream\");\n }\n\n codeBuf |= b << codeSize;\n codeSize += 8;\n }\n\n b = codeBuf & (1 << bits) - 1;\n this.codeBuf = codeBuf >> bits;\n this.codeSize = codeSize -= bits;\n return b;\n };\n\n FlateStream.prototype.getCode = function FlateStream_getCode(table) {\n var str = this.str;\n var codes = table[0];\n var maxLen = table[1];\n var codeSize = this.codeSize;\n var codeBuf = this.codeBuf;\n var b;\n\n while (codeSize < maxLen) {\n if ((b = str.getByte()) === -1) {\n break;\n }\n\n codeBuf |= b << codeSize;\n codeSize += 8;\n }\n\n var code = codes[codeBuf & (1 << maxLen) - 1];\n var codeLen = code >> 16;\n var codeVal = code & 0xffff;\n\n if (codeLen < 1 || codeSize < codeLen) {\n throw new _util.FormatError(\"Bad encoding in flate stream\");\n }\n\n this.codeBuf = codeBuf >> codeLen;\n this.codeSize = codeSize - codeLen;\n return codeVal;\n };\n\n FlateStream.prototype.generateHuffmanTable = function flateStreamGenerateHuffmanTable(lengths) {\n var n = lengths.length;\n var maxLen = 0;\n var i;\n\n for (i = 0; i < n; ++i) {\n if (lengths[i] > maxLen) {\n maxLen = lengths[i];\n }\n }\n\n var size = 1 << maxLen;\n var codes = new Int32Array(size);\n\n for (var len = 1, code = 0, skip = 2; len <= maxLen; ++len, code <<= 1, skip <<= 1) {\n for (var val = 0; val < n; ++val) {\n if (lengths[val] === len) {\n var code2 = 0;\n var t = code;\n\n for (i = 0; i < len; ++i) {\n code2 = code2 << 1 | t & 1;\n t >>= 1;\n }\n\n for (i = code2; i < size; i += skip) {\n codes[i] = len << 16 | val;\n }\n\n ++code;\n }\n }\n }\n\n return [codes, maxLen];\n };\n\n FlateStream.prototype.readBlock = function FlateStream_readBlock() {\n var buffer, len;\n var str = this.str;\n var hdr = this.getBits(3);\n\n if (hdr & 1) {\n this.eof = true;\n }\n\n hdr >>= 1;\n\n if (hdr === 0) {\n var b;\n\n if ((b = str.getByte()) === -1) {\n throw new _util.FormatError(\"Bad block header in flate stream\");\n }\n\n var blockLen = b;\n\n if ((b = str.getByte()) === -1) {\n throw new _util.FormatError(\"Bad block header in flate stream\");\n }\n\n blockLen |= b << 8;\n\n if ((b = str.getByte()) === -1) {\n throw new _util.FormatError(\"Bad block header in flate stream\");\n }\n\n var check = b;\n\n if ((b = str.getByte()) === -1) {\n throw new _util.FormatError(\"Bad block header in flate stream\");\n }\n\n check |= b << 8;\n\n if (check !== (~blockLen & 0xffff) && (blockLen !== 0 || check !== 0)) {\n throw new _util.FormatError(\"Bad uncompressed block length in flate stream\");\n }\n\n this.codeBuf = 0;\n this.codeSize = 0;\n var 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 var block = str.getBytes(blockLen);\n buffer.set(block, bufferLength);\n\n if (block.length < blockLen) {\n this.eof = true;\n }\n }\n\n return;\n }\n\n var litCodeTable;\n var distCodeTable;\n\n if (hdr === 1) {\n litCodeTable = fixedLitCodeTab;\n distCodeTable = fixedDistCodeTab;\n } else if (hdr === 2) {\n var numLitCodes = this.getBits(5) + 257;\n var numDistCodes = this.getBits(5) + 1;\n var numCodeLenCodes = this.getBits(4) + 4;\n var codeLenCodeLengths = new Uint8Array(codeLenCodeMap.length);\n var i;\n\n for (i = 0; i < numCodeLenCodes; ++i) {\n codeLenCodeLengths[codeLenCodeMap[i]] = this.getBits(3);\n }\n\n var codeLenCodeTab = this.generateHuffmanTable(codeLenCodeLengths);\n len = 0;\n i = 0;\n var codes = numLitCodes + numDistCodes;\n var codeLengths = new Uint8Array(codes);\n var bitsLength, bitsOffset, what;\n\n while (i < codes) {\n var code = this.getCode(codeLenCodeTab);\n\n if (code === 16) {\n bitsLength = 2;\n bitsOffset = 3;\n what = len;\n } else if (code === 17) {\n bitsLength = 3;\n bitsOffset = 3;\n what = len = 0;\n } else if (code === 18) {\n bitsLength = 7;\n bitsOffset = 11;\n what = len = 0;\n } else {\n codeLengths[i++] = len = code;\n continue;\n }\n\n var repeatLength = this.getBits(bitsLength) + bitsOffset;\n\n while (repeatLength-- > 0) {\n codeLengths[i++] = what;\n }\n }\n\n litCodeTable = this.generateHuffmanTable(codeLengths.subarray(0, numLitCodes));\n distCodeTable = this.generateHuffmanTable(codeLengths.subarray(numLitCodes, codes));\n } else {\n throw new _util.FormatError(\"Unknown block type in flate stream\");\n }\n\n buffer = this.buffer;\n var limit = buffer ? buffer.length : 0;\n var pos = this.bufferLength;\n\n while (true) {\n var code1 = this.getCode(litCodeTable);\n\n if (code1 < 256) {\n if (pos + 1 >= limit) {\n buffer = this.ensureBuffer(pos + 1);\n limit = buffer.length;\n }\n\n buffer[pos++] = code1;\n continue;\n }\n\n if (code1 === 256) {\n this.bufferLength = pos;\n return;\n }\n\n code1 -= 257;\n code1 = lengthDecode[code1];\n var code2 = code1 >> 16;\n\n if (code2 > 0) {\n code2 = this.getBits(code2);\n }\n\n len = (code1 & 0xffff) + code2;\n code1 = this.getCode(distCodeTable);\n code1 = distDecode[code1];\n code2 = code1 >> 16;\n\n if (code2 > 0) {\n code2 = this.getBits(code2);\n }\n\n var dist = (code1 & 0xffff) + code2;\n\n if (pos + len >= limit) {\n buffer = this.ensureBuffer(pos + len);\n limit = buffer.length;\n }\n\n for (var k = 0; k < len; ++k, ++pos) {\n buffer[pos] = buffer[pos - dist];\n }\n }\n };\n\n return FlateStream;\n}();\n\nexports.FlateStream = FlateStream;\n\nvar PredictorStream = function PredictorStreamClosure() {\n function PredictorStream(str, maybeLength, params) {\n if (!(0, _primitives.isDict)(params)) {\n return str;\n }\n\n var predictor = this.predictor = params.get(\"Predictor\") || 1;\n\n if (predictor <= 1) {\n return str;\n }\n\n if (predictor !== 2 && (predictor < 10 || predictor > 15)) {\n throw new _util.FormatError(\"Unsupported predictor: \".concat(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 var colors = this.colors = params.get(\"Colors\") || 1;\n var bits = this.bits = params.get(\"BitsPerComponent\") || 8;\n var columns = this.columns = params.get(\"Columns\") || 1;\n this.pixBytes = colors * bits + 7 >> 3;\n this.rowBytes = columns * colors * bits + 7 >> 3;\n DecodeStream.call(this, maybeLength);\n return this;\n }\n\n PredictorStream.prototype = Object.create(DecodeStream.prototype);\n\n PredictorStream.prototype.readBlockTiff = function predictorStreamReadBlockTiff() {\n var rowBytes = this.rowBytes;\n var bufferLength = this.bufferLength;\n var buffer = this.ensureBuffer(bufferLength + rowBytes);\n var bits = this.bits;\n var colors = this.colors;\n var rawBytes = this.str.getBytes(rowBytes);\n this.eof = !rawBytes.length;\n\n if (this.eof) {\n return;\n }\n\n var inbuf = 0,\n outbuf = 0;\n var inbits = 0,\n outbits = 0;\n var pos = bufferLength;\n var i;\n\n if (bits === 1 && colors === 1) {\n for (i = 0; i < rowBytes; ++i) {\n var c = rawBytes[i] ^ inbuf;\n c ^= c >> 1;\n c ^= c >> 2;\n c ^= c >> 4;\n inbuf = (c & 1) << 7;\n buffer[pos++] = c;\n }\n } else if (bits === 8) {\n for (i = 0; i < colors; ++i) {\n buffer[pos++] = rawBytes[i];\n }\n\n for (; i < rowBytes; ++i) {\n buffer[pos] = buffer[pos - colors] + rawBytes[i];\n pos++;\n }\n } else if (bits === 16) {\n var bytesPerPixel = colors * 2;\n\n for (i = 0; i < bytesPerPixel; ++i) {\n buffer[pos++] = rawBytes[i];\n }\n\n for (; i < rowBytes; i += 2) {\n var sum = ((rawBytes[i] & 0xff) << 8) + (rawBytes[i + 1] & 0xff) + ((buffer[pos - bytesPerPixel] & 0xff) << 8) + (buffer[pos - bytesPerPixel + 1] & 0xff);\n buffer[pos++] = sum >> 8 & 0xff;\n buffer[pos++] = sum & 0xff;\n }\n } else {\n var compArray = new Uint8Array(colors + 1);\n var bitMask = (1 << bits) - 1;\n var j = 0,\n k = bufferLength;\n var columns = this.columns;\n\n for (i = 0; i < columns; ++i) {\n for (var kk = 0; kk < colors; ++kk) {\n if (inbits < bits) {\n inbuf = inbuf << 8 | rawBytes[j++] & 0xff;\n inbits += 8;\n }\n\n compArray[kk] = compArray[kk] + (inbuf >> inbits - bits) & bitMask;\n inbits -= bits;\n outbuf = outbuf << bits | compArray[kk];\n outbits += bits;\n\n if (outbits >= 8) {\n buffer[k++] = outbuf >> outbits - 8 & 0xff;\n outbits -= 8;\n }\n }\n }\n\n if (outbits > 0) {\n buffer[k++] = (outbuf << 8 - outbits) + (inbuf & (1 << 8 - outbits) - 1);\n }\n }\n\n this.bufferLength += rowBytes;\n };\n\n PredictorStream.prototype.readBlockPng = function predictorStreamReadBlockPng() {\n var rowBytes = this.rowBytes;\n var pixBytes = this.pixBytes;\n var predictor = this.str.getByte();\n var rawBytes = this.str.getBytes(rowBytes);\n this.eof = !rawBytes.length;\n\n if (this.eof) {\n return;\n }\n\n var bufferLength = this.bufferLength;\n var buffer = this.ensureBuffer(bufferLength + rowBytes);\n var prevRow = buffer.subarray(bufferLength - rowBytes, bufferLength);\n\n if (prevRow.length === 0) {\n prevRow = new Uint8Array(rowBytes);\n }\n\n var i,\n j = bufferLength,\n up,\n c;\n\n switch (predictor) {\n case 0:\n for (i = 0; i < rowBytes; ++i) {\n buffer[j++] = rawBytes[i];\n }\n\n break;\n\n case 1:\n for (i = 0; i < pixBytes; ++i) {\n buffer[j++] = rawBytes[i];\n }\n\n for (; i < rowBytes; ++i) {\n buffer[j] = buffer[j - pixBytes] + rawBytes[i] & 0xff;\n j++;\n }\n\n break;\n\n case 2:\n for (i = 0; i < rowBytes; ++i) {\n buffer[j++] = prevRow[i] + rawBytes[i] & 0xff;\n }\n\n break;\n\n case 3:\n for (i = 0; i < pixBytes; ++i) {\n buffer[j++] = (prevRow[i] >> 1) + rawBytes[i];\n }\n\n for (; i < rowBytes; ++i) {\n buffer[j] = (prevRow[i] + buffer[j - pixBytes] >> 1) + rawBytes[i] & 0xff;\n j++;\n }\n\n break;\n\n case 4:\n for (i = 0; i < pixBytes; ++i) {\n up = prevRow[i];\n c = rawBytes[i];\n buffer[j++] = up + c;\n }\n\n for (; i < rowBytes; ++i) {\n up = prevRow[i];\n var upLeft = prevRow[i - pixBytes];\n var left = buffer[j - pixBytes];\n var p = left + up - upLeft;\n var pa = p - left;\n\n if (pa < 0) {\n pa = -pa;\n }\n\n var pb = p - up;\n\n if (pb < 0) {\n pb = -pb;\n }\n\n var pc = p - upLeft;\n\n if (pc < 0) {\n pc = -pc;\n }\n\n c = rawBytes[i];\n\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\n break;\n\n default:\n throw new _util.FormatError(\"Unsupported predictor: \".concat(predictor));\n }\n\n this.bufferLength += rowBytes;\n };\n\n return PredictorStream;\n}();\n\nexports.PredictorStream = PredictorStream;\n\nvar DecryptStream = function DecryptStreamClosure() {\n function DecryptStream(str, maybeLength, decrypt) {\n this.str = str;\n this.dict = str.dict;\n this.decrypt = decrypt;\n this.nextChunk = null;\n this.initialized = false;\n DecodeStream.call(this, maybeLength);\n }\n\n var chunkSize = 512;\n DecryptStream.prototype = Object.create(DecodeStream.prototype);\n\n DecryptStream.prototype.readBlock = function DecryptStream_readBlock() {\n var chunk;\n\n if (this.initialized) {\n chunk = this.nextChunk;\n } else {\n chunk = this.str.getBytes(chunkSize);\n this.initialized = true;\n }\n\n if (!chunk || chunk.length === 0) {\n this.eof = true;\n return;\n }\n\n this.nextChunk = this.str.getBytes(chunkSize);\n var hasMoreData = this.nextChunk && this.nextChunk.length > 0;\n var decrypt = this.decrypt;\n chunk = decrypt(chunk, !hasMoreData);\n var bufferLength = this.bufferLength;\n var i,\n n = chunk.length;\n var buffer = this.ensureBuffer(bufferLength + n);\n\n for (i = 0; i < n; i++) {\n buffer[bufferLength++] = chunk[i];\n }\n\n this.bufferLength = bufferLength;\n };\n\n return DecryptStream;\n}();\n\nexports.DecryptStream = DecryptStream;\n\nvar Ascii85Stream = function Ascii85StreamClosure() {\n function Ascii85Stream(str, maybeLength) {\n this.str = str;\n this.dict = str.dict;\n this.input = new Uint8Array(5);\n\n if (maybeLength) {\n maybeLength = 0.8 * maybeLength;\n }\n\n DecodeStream.call(this, maybeLength);\n }\n\n Ascii85Stream.prototype = Object.create(DecodeStream.prototype);\n\n Ascii85Stream.prototype.readBlock = function Ascii85Stream_readBlock() {\n var TILDA_CHAR = 0x7e;\n var Z_LOWER_CHAR = 0x7a;\n var EOF = -1;\n var str = this.str;\n var c = str.getByte();\n\n while ((0, _core_utils.isWhiteSpace)(c)) {\n c = str.getByte();\n }\n\n if (c === EOF || c === TILDA_CHAR) {\n this.eof = true;\n return;\n }\n\n var bufferLength = this.bufferLength,\n buffer;\n var i;\n\n if (c === Z_LOWER_CHAR) {\n buffer = this.ensureBuffer(bufferLength + 4);\n\n for (i = 0; i < 4; ++i) {\n buffer[bufferLength + i] = 0;\n }\n\n this.bufferLength += 4;\n } else {\n var input = this.input;\n input[0] = c;\n\n for (i = 1; i < 5; ++i) {\n c = str.getByte();\n\n while ((0, _core_utils.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\n buffer = this.ensureBuffer(bufferLength + i - 1);\n this.bufferLength += i - 1;\n\n if (i < 5) {\n for (; i < 5; ++i) {\n input[i] = 0x21 + 84;\n }\n\n this.eof = true;\n }\n\n var t = 0;\n\n for (i = 0; i < 5; ++i) {\n t = t * 85 + (input[i] - 0x21);\n }\n\n for (i = 3; i >= 0; --i) {\n buffer[bufferLength + i] = t & 0xff;\n t >>= 8;\n }\n }\n };\n\n return Ascii85Stream;\n}();\n\nexports.Ascii85Stream = Ascii85Stream;\n\nvar AsciiHexStream = function AsciiHexStreamClosure() {\n function AsciiHexStream(str, maybeLength) {\n this.str = str;\n this.dict = str.dict;\n this.firstDigit = -1;\n\n if (maybeLength) {\n maybeLength = 0.5 * maybeLength;\n }\n\n DecodeStream.call(this, maybeLength);\n }\n\n AsciiHexStream.prototype = Object.create(DecodeStream.prototype);\n\n AsciiHexStream.prototype.readBlock = function AsciiHexStream_readBlock() {\n var UPSTREAM_BLOCK_SIZE = 8000;\n var bytes = this.str.getBytes(UPSTREAM_BLOCK_SIZE);\n\n if (!bytes.length) {\n this.eof = true;\n return;\n }\n\n var maxDecodeLength = bytes.length + 1 >> 1;\n var buffer = this.ensureBuffer(this.bufferLength + maxDecodeLength);\n var bufferLength = this.bufferLength;\n var firstDigit = this.firstDigit;\n\n for (var i = 0, ii = bytes.length; i < ii; i++) {\n var ch = bytes[i],\n digit;\n\n if (ch >= 0x30 && ch <= 0x39) {\n digit = ch & 0x0f;\n } else if (ch >= 0x41 && ch <= 0x46 || ch >= 0x61 && ch <= 0x66) {\n digit = (ch & 0x0f) + 9;\n } else if (ch === 0x3e) {\n this.eof = true;\n break;\n } else {\n continue;\n }\n\n if (firstDigit < 0) {\n firstDigit = digit;\n } else {\n buffer[bufferLength++] = firstDigit << 4 | digit;\n firstDigit = -1;\n }\n }\n\n if (firstDigit >= 0 && this.eof) {\n buffer[bufferLength++] = firstDigit << 4;\n firstDigit = -1;\n }\n\n this.firstDigit = firstDigit;\n this.bufferLength = bufferLength;\n };\n\n return AsciiHexStream;\n}();\n\nexports.AsciiHexStream = AsciiHexStream;\n\nvar RunLengthStream = function RunLengthStreamClosure() {\n function RunLengthStream(str, maybeLength) {\n this.str = str;\n this.dict = str.dict;\n DecodeStream.call(this, maybeLength);\n }\n\n RunLengthStream.prototype = Object.create(DecodeStream.prototype);\n\n RunLengthStream.prototype.readBlock = function RunLengthStream_readBlock() {\n var repeatHeader = this.str.getBytes(2);\n\n if (!repeatHeader || repeatHeader.length < 2 || repeatHeader[0] === 128) {\n this.eof = true;\n return;\n }\n\n var buffer;\n var bufferLength = this.bufferLength;\n var n = repeatHeader[0];\n\n if (n < 128) {\n buffer = this.ensureBuffer(bufferLength + n + 1);\n buffer[bufferLength++] = repeatHeader[1];\n\n if (n > 0) {\n var source = this.str.getBytes(n);\n buffer.set(source, bufferLength);\n bufferLength += n;\n }\n } else {\n n = 257 - n;\n var b = repeatHeader[1];\n buffer = this.ensureBuffer(bufferLength + n + 1);\n\n for (var i = 0; i < n; i++) {\n buffer[bufferLength++] = b;\n }\n }\n\n this.bufferLength = bufferLength;\n };\n\n return RunLengthStream;\n}();\n\nexports.RunLengthStream = RunLengthStream;\n\nvar LZWStream = function LZWStreamClosure() {\n function LZWStream(str, maybeLength, earlyChange) {\n this.str = str;\n this.dict = str.dict;\n this.cachedData = 0;\n this.bitsCached = 0;\n var maxLzwDictionarySize = 4096;\n var lzwState = {\n earlyChange: 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\n for (var i = 0; i < 256; ++i) {\n lzwState.dictionaryValues[i] = i;\n lzwState.dictionaryLengths[i] = 1;\n }\n\n this.lzwState = lzwState;\n DecodeStream.call(this, maybeLength);\n }\n\n LZWStream.prototype = Object.create(DecodeStream.prototype);\n\n LZWStream.prototype.readBits = function LZWStream_readBits(n) {\n var bitsCached = this.bitsCached;\n var cachedData = this.cachedData;\n\n while (bitsCached < n) {\n var c = this.str.getByte();\n\n if (c === -1) {\n this.eof = true;\n return null;\n }\n\n cachedData = cachedData << 8 | c;\n bitsCached += 8;\n }\n\n this.bitsCached = bitsCached -= n;\n this.cachedData = cachedData;\n this.lastCode = null;\n return cachedData >>> bitsCached & (1 << n) - 1;\n };\n\n LZWStream.prototype.readBlock = function LZWStream_readBlock() {\n var blockSize = 512;\n var estimatedDecodedSize = blockSize * 2,\n decodedSizeDelta = blockSize;\n var i, j, q;\n var lzwState = this.lzwState;\n\n if (!lzwState) {\n return;\n }\n\n var earlyChange = lzwState.earlyChange;\n var nextCode = lzwState.nextCode;\n var dictionaryValues = lzwState.dictionaryValues;\n var dictionaryLengths = lzwState.dictionaryLengths;\n var dictionaryPrevCodes = lzwState.dictionaryPrevCodes;\n var codeLength = lzwState.codeLength;\n var prevCode = lzwState.prevCode;\n var currentSequence = lzwState.currentSequence;\n var currentSequenceLength = lzwState.currentSequenceLength;\n var decodedLength = 0;\n var currentBufferLength = this.bufferLength;\n var buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n\n for (i = 0; i < blockSize; i++) {\n var code = this.readBits(codeLength);\n var hasPrev = currentSequenceLength > 0;\n\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\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 = nextCode + earlyChange & nextCode + earlyChange - 1 ? codeLength : Math.min(Math.log(nextCode + earlyChange) / 0.6931471805599453 + 1, 12) | 0;\n }\n\n prevCode = code;\n decodedLength += currentSequenceLength;\n\n if (estimatedDecodedSize < decodedLength) {\n do {\n estimatedDecodedSize += decodedSizeDelta;\n } while (estimatedDecodedSize < decodedLength);\n\n buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n }\n\n for (j = 0; j < currentSequenceLength; j++) {\n buffer[currentBufferLength++] = currentSequence[j];\n }\n }\n\n lzwState.nextCode = nextCode;\n lzwState.codeLength = codeLength;\n lzwState.prevCode = prevCode;\n lzwState.currentSequenceLength = currentSequenceLength;\n this.bufferLength = currentBufferLength;\n };\n\n return LZWStream;\n}();\n\nexports.LZWStream = LZWStream;\n\nvar NullStream = function NullStreamClosure() {\n function NullStream() {\n Stream.call(this, new Uint8Array(0));\n }\n\n NullStream.prototype = Stream.prototype;\n return NullStream;\n}();\n\nexports.NullStream = NullStream;\n\n/***/ }),\n/* 206 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CCITTFaxStream = void 0;\n\nvar _primitives = __w_pdfjs_require__(198);\n\nvar _ccitt = __w_pdfjs_require__(207);\n\nvar _stream = __w_pdfjs_require__(205);\n\nvar CCITTFaxStream = function CCITTFaxStreamClosure() {\n function CCITTFaxStream(str, maybeLength, params) {\n this.str = str;\n this.dict = str.dict;\n\n if (!(0, _primitives.isDict)(params)) {\n params = _primitives.Dict.empty;\n }\n\n var source = {\n next: function next() {\n return str.getByte();\n }\n };\n this.ccittFaxDecoder = new _ccitt.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 _stream.DecodeStream.call(this, maybeLength);\n }\n\n CCITTFaxStream.prototype = Object.create(_stream.DecodeStream.prototype);\n\n CCITTFaxStream.prototype.readBlock = function () {\n while (!this.eof) {\n var c = this.ccittFaxDecoder.readNextChar();\n\n if (c === -1) {\n this.eof = true;\n return;\n }\n\n this.ensureBuffer(this.bufferLength + 1);\n this.buffer[this.bufferLength++] = c;\n }\n };\n\n return CCITTFaxStream;\n}();\n\nexports.CCITTFaxStream = CCITTFaxStream;\n\n/***/ }),\n/* 207 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CCITTFaxDecoder = void 0;\n\nvar _util = __w_pdfjs_require__(5);\n\nvar CCITTFaxDecoder = function CCITTFaxDecoder() {\n var ccittEOL = -2;\n var ccittEOF = -1;\n var twoDimPass = 0;\n var twoDimHoriz = 1;\n var twoDimVert0 = 2;\n var twoDimVertR1 = 3;\n var twoDimVertL1 = 4;\n var twoDimVertR2 = 5;\n var twoDimVertL2 = 6;\n var twoDimVertR3 = 7;\n var twoDimVertL3 = 8;\n var twoDimTable = [[-1, -1], [-1, -1], [7, twoDimVertL3], [7, twoDimVertR3], [6, twoDimVertL2], [6, twoDimVertL2], [6, twoDimVertR2], [6, twoDimVertR2], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0]];\n var whiteTable1 = [[-1, -1], [12, ccittEOL], [-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], [-1, -1], [11, 1792], [11, 1792], [12, 1984], [12, 2048], [12, 2112], [12, 2176], [12, 2240], [12, 2304], [11, 1856], [11, 1856], [11, 1920], [11, 1920], [12, 2368], [12, 2432], [12, 2496], [12, 2560]];\n var whiteTable2 = [[-1, -1], [-1, -1], [-1, -1], [-1, -1], [8, 29], [8, 29], [8, 30], [8, 30], [8, 45], [8, 45], [8, 46], [8, 46], [7, 22], [7, 22], [7, 22], [7, 22], [7, 23], [7, 23], [7, 23], [7, 23], [8, 47], [8, 47], [8, 48], [8, 48], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [7, 20], [7, 20], [7, 20], [7, 20], [8, 33], [8, 33], [8, 34], [8, 34], [8, 35], [8, 35], [8, 36], [8, 36], [8, 37], [8, 37], [8, 38], [8, 38], [7, 19], [7, 19], [7, 19], [7, 19], [8, 31], [8, 31], [8, 32], [8, 32], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [8, 53], [8, 53], [8, 54], [8, 54], [7, 26], [7, 26], [7, 26], [7, 26], [8, 39], [8, 39], [8, 40], [8, 40], [8, 41], [8, 41], [8, 42], [8, 42], [8, 43], [8, 43], [8, 44], [8, 44], [7, 21], [7, 21], [7, 21], [7, 21], [7, 28], [7, 28], [7, 28], [7, 28], [8, 61], [8, 61], [8, 62], [8, 62], [8, 63], [8, 63], [8, 0], [8, 0], [8, 320], [8, 320], [8, 384], [8, 384], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [7, 27], [7, 27], [7, 27], [7, 27], [8, 59], [8, 59], [8, 60], [8, 60], [9, 1472], [9, 1536], [9, 1600], [9, 1728], [7, 18], [7, 18], [7, 18], [7, 18], [7, 24], [7, 24], [7, 24], [7, 24], [8, 49], [8, 49], [8, 50], [8, 50], [8, 51], [8, 51], [8, 52], [8, 52], [7, 25], [7, 25], [7, 25], [7, 25], [8, 55], [8, 55], [8, 56], [8, 56], [8, 57], [8, 57], [8, 58], [8, 58], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [8, 448], [8, 448], [8, 512], [8, 512], [9, 704], [9, 768], [8, 640], [8, 640], [8, 576], [8, 576], [9, 832], [9, 896], [9, 960], [9, 1024], [9, 1088], [9, 1152], [9, 1216], [9, 1280], [9, 1344], [9, 1408], [7, 256], [7, 256], [7, 256], [7, 256], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7]];\n var blackTable1 = [[-1, -1], [-1, -1], [12, ccittEOL], [12, ccittEOL], [-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], [-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], [-1, -1], [-1, -1], [11, 1792], [11, 1792], [11, 1792], [11, 1792], [12, 1984], [12, 1984], [12, 2048], [12, 2048], [12, 2112], [12, 2112], [12, 2176], [12, 2176], [12, 2240], [12, 2240], [12, 2304], [12, 2304], [11, 1856], [11, 1856], [11, 1856], [11, 1856], [11, 1920], [11, 1920], [11, 1920], [11, 1920], [12, 2368], [12, 2368], [12, 2432], [12, 2432], [12, 2496], [12, 2496], [12, 2560], [12, 2560], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [12, 52], [12, 52], [13, 640], [13, 704], [13, 768], [13, 832], [12, 55], [12, 55], [12, 56], [12, 56], [13, 1280], [13, 1344], [13, 1408], [13, 1472], [12, 59], [12, 59], [12, 60], [12, 60], [13, 1536], [13, 1600], [11, 24], [11, 24], [11, 24], [11, 24], [11, 25], [11, 25], [11, 25], [11, 25], [13, 1664], [13, 1728], [12, 320], [12, 320], [12, 384], [12, 384], [12, 448], [12, 448], [13, 512], [13, 576], [12, 53], [12, 53], [12, 54], [12, 54], [13, 896], [13, 960], [13, 1024], [13, 1088], [13, 1152], [13, 1216], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64]];\n var blackTable2 = [[8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [11, 23], [11, 23], [12, 50], [12, 51], [12, 44], [12, 45], [12, 46], [12, 47], [12, 57], [12, 58], [12, 61], [12, 256], [10, 16], [10, 16], [10, 16], [10, 16], [10, 17], [10, 17], [10, 17], [10, 17], [12, 48], [12, 49], [12, 62], [12, 63], [12, 30], [12, 31], [12, 32], [12, 33], [12, 40], [12, 41], [11, 22], [11, 22], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [12, 128], [12, 192], [12, 26], [12, 27], [12, 28], [12, 29], [11, 19], [11, 19], [11, 20], [11, 20], [12, 34], [12, 35], [12, 36], [12, 37], [12, 38], [12, 39], [11, 21], [11, 21], [12, 42], [12, 43], [10, 0], [10, 0], [10, 0], [10, 0], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12]];\n var blackTable3 = [[-1, -1], [-1, -1], [-1, -1], [-1, -1], [6, 9], [6, 8], [5, 7], [5, 7], [4, 6], [4, 6], [4, 6], [4, 6], [4, 5], [4, 5], [4, 5], [4, 5], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2]];\n\n function CCITTFaxDecoder(source) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!source || typeof source.next !== \"function\") {\n throw new Error('CCITTFaxDecoder - invalid \"source\" parameter.');\n }\n\n this.source = source;\n this.eof = false;\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 var eoblock = options.EndOfBlock;\n\n if (eoblock === null || eoblock === undefined) {\n eoblock = true;\n }\n\n this.eoblock = eoblock;\n this.black = options.BlackIs1 || false;\n this.codingLine = new Uint32Array(this.columns + 1);\n this.refLine = new Uint32Array(this.columns + 2);\n this.codingLine[0] = this.columns;\n this.codingPos = 0;\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 var code1;\n\n while ((code1 = this._lookBits(12)) === 0) {\n this._eatBits(1);\n }\n\n if (code1 === 1) {\n this._eatBits(12);\n }\n\n if (this.encoding > 0) {\n this.nextLine2D = !this._lookBits(1);\n\n this._eatBits(1);\n }\n }\n\n CCITTFaxDecoder.prototype = {\n readNextChar: function readNextChar() {\n if (this.eof) {\n return -1;\n }\n\n var refLine = this.refLine;\n var codingLine = this.codingLine;\n var columns = this.columns;\n var refPos, blackPixels, bits, i;\n\n if (this.outputBits === 0) {\n if (this.rowsDone) {\n this.eof = true;\n }\n\n if (this.eof) {\n return -1;\n }\n\n this.err = false;\n var code1, code2, code3;\n\n if (this.nextLine2D) {\n for (i = 0; codingLine[i] < columns; ++i) {\n refLine[i] = codingLine[i];\n }\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\n switch (code1) {\n case twoDimPass:\n this._addPixels(refLine[refPos + 1], blackPixels);\n\n if (refLine[refPos + 1] < columns) {\n refPos += 2;\n }\n\n break;\n\n case twoDimHoriz:\n code1 = code2 = 0;\n\n if (blackPixels) {\n do {\n code1 += code3 = this._getBlackCode();\n } while (code3 >= 64);\n\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\n do {\n code2 += code3 = this._getBlackCode();\n } while (code3 >= 64);\n }\n\n this._addPixels(codingLine[this.codingPos] + code1, blackPixels);\n\n if (codingLine[this.codingPos] < columns) {\n this._addPixels(codingLine[this.codingPos] + code2, blackPixels ^ 1);\n }\n\n while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\n refPos += 2;\n }\n\n break;\n\n case twoDimVertR3:\n this._addPixels(refLine[refPos] + 3, blackPixels);\n\n blackPixels ^= 1;\n\n if (codingLine[this.codingPos] < columns) {\n ++refPos;\n\n while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\n refPos += 2;\n }\n }\n\n break;\n\n case twoDimVertR2:\n this._addPixels(refLine[refPos] + 2, blackPixels);\n\n blackPixels ^= 1;\n\n if (codingLine[this.codingPos] < columns) {\n ++refPos;\n\n while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\n refPos += 2;\n }\n }\n\n break;\n\n case twoDimVertR1:\n this._addPixels(refLine[refPos] + 1, blackPixels);\n\n blackPixels ^= 1;\n\n if (codingLine[this.codingPos] < columns) {\n ++refPos;\n\n while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\n refPos += 2;\n }\n }\n\n break;\n\n case twoDimVert0:\n this._addPixels(refLine[refPos], blackPixels);\n\n blackPixels ^= 1;\n\n if (codingLine[this.codingPos] < columns) {\n ++refPos;\n\n while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\n refPos += 2;\n }\n }\n\n break;\n\n case twoDimVertL3:\n this._addPixelsNeg(refLine[refPos] - 3, blackPixels);\n\n blackPixels ^= 1;\n\n if (codingLine[this.codingPos] < columns) {\n if (refPos > 0) {\n --refPos;\n } else {\n ++refPos;\n }\n\n while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\n refPos += 2;\n }\n }\n\n break;\n\n case twoDimVertL2:\n this._addPixelsNeg(refLine[refPos] - 2, blackPixels);\n\n blackPixels ^= 1;\n\n if (codingLine[this.codingPos] < columns) {\n if (refPos > 0) {\n --refPos;\n } else {\n ++refPos;\n }\n\n while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\n refPos += 2;\n }\n }\n\n break;\n\n case twoDimVertL1:\n this._addPixelsNeg(refLine[refPos] - 1, blackPixels);\n\n blackPixels ^= 1;\n\n if (codingLine[this.codingPos] < columns) {\n if (refPos > 0) {\n --refPos;\n } else {\n ++refPos;\n }\n\n while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\n refPos += 2;\n }\n }\n\n break;\n\n case ccittEOF:\n this._addPixels(columns, 0);\n\n this.eof = true;\n break;\n\n default:\n (0, _util.info)(\"bad 2d code\");\n\n this._addPixels(columns, 0);\n\n this.err = true;\n }\n }\n } else {\n codingLine[0] = 0;\n this.codingPos = 0;\n blackPixels = 0;\n\n while (codingLine[this.codingPos] < columns) {\n code1 = 0;\n\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\n this._addPixels(codingLine[this.codingPos] + code1, blackPixels);\n\n blackPixels ^= 1;\n }\n }\n\n var 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\n if (this.eoline) {\n while (code1 !== ccittEOF && code1 !== 1) {\n this._eatBits(1);\n\n code1 = this._lookBits(12);\n }\n } else {\n while (code1 === 0) {\n this._eatBits(1);\n\n code1 = this._lookBits(12);\n }\n }\n\n if (code1 === 1) {\n this._eatBits(12);\n\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\n this._eatBits(1);\n }\n\n if (this.eoblock && gotEOL && this.byteAlign) {\n code1 = this._lookBits(12);\n\n if (code1 === 1) {\n this._eatBits(12);\n\n if (this.encoding > 0) {\n this._lookBits(1);\n\n this._eatBits(1);\n }\n\n if (this.encoding >= 0) {\n for (i = 0; i < 4; ++i) {\n code1 = this._lookBits(12);\n\n if (code1 !== 1) {\n (0, _util.info)(\"bad rtc code: \" + code1);\n }\n\n this._eatBits(12);\n\n if (this.encoding > 0) {\n this._lookBits(1);\n\n this._eatBits(1);\n }\n }\n }\n\n this.eof = true;\n }\n } else if (this.err && this.eoline) {\n while (true) {\n code1 = this._lookBits(13);\n\n if (code1 === ccittEOF) {\n this.eof = true;\n return -1;\n }\n\n if (code1 >> 1 === 1) {\n break;\n }\n\n this._eatBits(1);\n }\n\n this._eatBits(12);\n\n if (this.encoding > 0) {\n this._eatBits(1);\n\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\n this.row++;\n }\n\n var c;\n\n if (this.outputBits >= 8) {\n c = this.codingPos & 1 ? 0 : 0xff;\n this.outputBits -= 8;\n\n if (this.outputBits === 0 && codingLine[this.codingPos] < columns) {\n this.codingPos++;\n this.outputBits = codingLine[this.codingPos] - codingLine[this.codingPos - 1];\n }\n } else {\n bits = 8;\n c = 0;\n\n do {\n if (this.outputBits > bits) {\n c <<= bits;\n\n if (!(this.codingPos & 1)) {\n c |= 0xff >> 8 - bits;\n }\n\n this.outputBits -= bits;\n bits = 0;\n } else {\n c <<= this.outputBits;\n\n if (!(this.codingPos & 1)) {\n c |= 0xff >> 8 - this.outputBits;\n }\n\n bits -= this.outputBits;\n this.outputBits = 0;\n\n if (codingLine[this.codingPos] < columns) {\n this.codingPos++;\n this.outputBits = 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\n if (this.black) {\n c ^= 0xff;\n }\n\n return c;\n },\n _addPixels: function _addPixels(a1, blackPixels) {\n var codingLine = this.codingLine;\n var codingPos = this.codingPos;\n\n if (a1 > codingLine[codingPos]) {\n if (a1 > this.columns) {\n (0, _util.info)(\"row is wrong length\");\n this.err = true;\n a1 = this.columns;\n }\n\n if (codingPos & 1 ^ blackPixels) {\n ++codingPos;\n }\n\n codingLine[codingPos] = a1;\n }\n\n this.codingPos = codingPos;\n },\n _addPixelsNeg: function _addPixelsNeg(a1, blackPixels) {\n var codingLine = this.codingLine;\n var codingPos = this.codingPos;\n\n if (a1 > codingLine[codingPos]) {\n if (a1 > this.columns) {\n (0, _util.info)(\"row is wrong length\");\n this.err = true;\n a1 = this.columns;\n }\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 (0, _util.info)(\"invalid code\");\n this.err = true;\n a1 = 0;\n }\n\n while (codingPos > 0 && a1 < codingLine[codingPos - 1]) {\n --codingPos;\n }\n\n codingLine[codingPos] = a1;\n }\n\n this.codingPos = codingPos;\n },\n _findTableCode: function _findTableCode(start, end, table, limit) {\n var limitValue = limit || 0;\n\n for (var i = start; i <= end; ++i) {\n var code = this._lookBits(i);\n\n if (code === ccittEOF) {\n return [true, 1, false];\n }\n\n if (i < end) {\n code <<= end - i;\n }\n\n if (!limitValue || code >= limitValue) {\n var p = table[code - limitValue];\n\n if (p[0] === i) {\n this._eatBits(i);\n\n return [true, p[1], true];\n }\n }\n }\n\n return [false, 0, false];\n },\n _getTwoDimCode: function _getTwoDimCode() {\n var code = 0;\n var p;\n\n if (this.eoblock) {\n code = this._lookBits(7);\n p = twoDimTable[code];\n\n if (p && p[0] > 0) {\n this._eatBits(p[0]);\n\n return p[1];\n }\n } else {\n var result = this._findTableCode(1, 7, twoDimTable);\n\n if (result[0] && result[2]) {\n return result[1];\n }\n }\n\n (0, _util.info)(\"Bad two dim code\");\n return ccittEOF;\n },\n _getWhiteCode: function _getWhiteCode() {\n var code = 0;\n var p;\n\n if (this.eoblock) {\n code = this._lookBits(12);\n\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\n return p[1];\n }\n } else {\n var result = this._findTableCode(1, 9, whiteTable2);\n\n if (result[0]) {\n return result[1];\n }\n\n result = this._findTableCode(11, 12, whiteTable1);\n\n if (result[0]) {\n return result[1];\n }\n }\n\n (0, _util.info)(\"bad white code\");\n\n this._eatBits(1);\n\n return 1;\n },\n _getBlackCode: function _getBlackCode() {\n var code, p;\n\n if (this.eoblock) {\n code = this._lookBits(13);\n\n if (code === ccittEOF) {\n return 1;\n }\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\n return p[1];\n }\n } else {\n var result = this._findTableCode(2, 6, blackTable3);\n\n if (result[0]) {\n return result[1];\n }\n\n result = this._findTableCode(7, 12, blackTable2, 64);\n\n if (result[0]) {\n return result[1];\n }\n\n result = this._findTableCode(10, 13, blackTable1);\n\n if (result[0]) {\n return result[1];\n }\n }\n\n (0, _util.info)(\"bad black code\");\n\n this._eatBits(1);\n\n return 1;\n },\n _lookBits: function _lookBits(n) {\n var c;\n\n while (this.inputBits < n) {\n if ((c = this.source.next()) === -1) {\n if (this.inputBits === 0) {\n return ccittEOF;\n }\n\n return this.inputBuf << n - this.inputBits & 0xffff >> 16 - n;\n }\n\n this.inputBuf = this.inputBuf << 8 | c;\n this.inputBits += 8;\n }\n\n return this.inputBuf >> this.inputBits - n & 0xffff >> 16 - n;\n },\n _eatBits: function _eatBits(n) {\n if ((this.inputBits -= n) < 0) {\n this.inputBits = 0;\n }\n }\n };\n return CCITTFaxDecoder;\n}();\n\nexports.CCITTFaxDecoder = CCITTFaxDecoder;\n\n/***/ }),\n/* 208 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Jbig2Stream = void 0;\n\nvar _primitives = __w_pdfjs_require__(198);\n\nvar _stream = __w_pdfjs_require__(205);\n\nvar _jbig = __w_pdfjs_require__(209);\n\nvar _util = __w_pdfjs_require__(5);\n\nvar Jbig2Stream = function Jbig2StreamClosure() {\n function Jbig2Stream(stream, maybeLength, dict, params) {\n this.stream = stream;\n this.maybeLength = maybeLength;\n this.dict = dict;\n this.params = params;\n\n _stream.DecodeStream.call(this, maybeLength);\n }\n\n Jbig2Stream.prototype = Object.create(_stream.DecodeStream.prototype);\n Object.defineProperty(Jbig2Stream.prototype, \"bytes\", {\n get: function get() {\n return (0, _util.shadow)(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n },\n configurable: true\n });\n\n Jbig2Stream.prototype.ensureBuffer = function (requested) {};\n\n Jbig2Stream.prototype.readBlock = function () {\n if (this.eof) {\n return;\n }\n\n var jbig2Image = new _jbig.Jbig2Image();\n var chunks = [];\n\n if ((0, _primitives.isDict)(this.params)) {\n var globalsStream = this.params.get(\"JBIG2Globals\");\n\n if ((0, _primitives.isStream)(globalsStream)) {\n var globals = globalsStream.getBytes();\n chunks.push({\n data: globals,\n start: 0,\n end: globals.length\n });\n }\n }\n\n chunks.push({\n data: this.bytes,\n start: 0,\n end: this.bytes.length\n });\n var data = jbig2Image.parseChunks(chunks);\n var dataLength = data.length;\n\n for (var i = 0; i < dataLength; i++) {\n data[i] ^= 0xff;\n }\n\n this.buffer = data;\n this.bufferLength = dataLength;\n this.eof = true;\n };\n\n return Jbig2Stream;\n}();\n\nexports.Jbig2Stream = Jbig2Stream;\n\n/***/ }),\n/* 209 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Jbig2Image = void 0;\n\nvar _util = __w_pdfjs_require__(5);\n\nvar _core_utils = __w_pdfjs_require__(201);\n\nvar _arithmetic_decoder = __w_pdfjs_require__(210);\n\nvar _ccitt = __w_pdfjs_require__(207);\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar Jbig2Error = /*#__PURE__*/function (_BaseException) {\n _inherits(Jbig2Error, _BaseException);\n\n var _super = _createSuper(Jbig2Error);\n\n function Jbig2Error(msg) {\n _classCallCheck(this, Jbig2Error);\n\n return _super.call(this, \"JBIG2 error: \".concat(msg));\n }\n\n return Jbig2Error;\n}(_util.BaseException);\n\nvar Jbig2Image = function Jbig2ImageClosure() {\n function ContextCache() {}\n\n ContextCache.prototype = {\n getContexts: function getContexts(id) {\n if (id in this) {\n return this[id];\n }\n\n return this[id] = new Int8Array(1 << 16);\n }\n };\n\n function DecodingContext(data, start, end) {\n this.data = data;\n this.start = start;\n this.end = end;\n }\n\n DecodingContext.prototype = {\n get decoder() {\n var decoder = new _arithmetic_decoder.ArithmeticDecoder(this.data, this.start, this.end);\n return (0, _util.shadow)(this, \"decoder\", decoder);\n },\n\n get contextCache() {\n var cache = new ContextCache();\n return (0, _util.shadow)(this, \"contextCache\", cache);\n }\n\n };\n\n function decodeInteger(contextCache, procedure, decoder) {\n var contexts = contextCache.getContexts(procedure);\n var prev = 1;\n\n function readBits(length) {\n var v = 0;\n\n for (var i = 0; i < length; i++) {\n var bit = decoder.readBit(contexts, prev);\n prev = prev < 256 ? prev << 1 | bit : (prev << 1 | bit) & 511 | 256;\n v = v << 1 | bit;\n }\n\n return v >>> 0;\n }\n\n var sign = readBits(1);\n var value = readBits(1) ? readBits(1) ? readBits(1) ? readBits(1) ? readBits(1) ? readBits(32) + 4436 : readBits(12) + 340 : readBits(8) + 84 : readBits(6) + 20 : readBits(4) + 4 : readBits(2);\n\n if (sign === 0) {\n return value;\n } else if (value > 0) {\n return -value;\n }\n\n return null;\n }\n\n function decodeIAID(contextCache, decoder, codeLength) {\n var contexts = contextCache.getContexts(\"IAID\");\n var prev = 1;\n\n for (var i = 0; i < codeLength; i++) {\n var bit = decoder.readBit(contexts, prev);\n prev = prev << 1 | bit;\n }\n\n if (codeLength < 31) {\n return prev & (1 << codeLength) - 1;\n }\n\n return prev & 0x7fffffff;\n }\n\n var SegmentTypes = [\"SymbolDictionary\", null, null, null, \"IntermediateTextRegion\", null, \"ImmediateTextRegion\", \"ImmediateLosslessTextRegion\", null, null, null, null, null, null, null, null, \"PatternDictionary\", null, null, null, \"IntermediateHalftoneRegion\", null, \"ImmediateHalftoneRegion\", \"ImmediateLosslessHalftoneRegion\", null, null, null, null, null, null, null, null, null, null, null, null, \"IntermediateGenericRegion\", null, \"ImmediateGenericRegion\", \"ImmediateLosslessGenericRegion\", \"IntermediateGenericRefinementRegion\", null, \"ImmediateGenericRefinementRegion\", \"ImmediateLosslessGenericRefinementRegion\", null, null, null, null, \"PageInformation\", \"EndOfPage\", \"EndOfStripe\", \"EndOfFile\", \"Profiles\", \"Tables\", null, null, null, null, null, null, null, null, \"Extension\"];\n var CodingTemplates = [[{\n x: -1,\n y: -2\n }, {\n x: 0,\n y: -2\n }, {\n x: 1,\n y: -2\n }, {\n x: -2,\n y: -1\n }, {\n x: -1,\n y: -1\n }, {\n x: 0,\n y: -1\n }, {\n x: 1,\n y: -1\n }, {\n x: 2,\n y: -1\n }, {\n x: -4,\n y: 0\n }, {\n x: -3,\n y: 0\n }, {\n x: -2,\n y: 0\n }, {\n x: -1,\n y: 0\n }], [{\n x: -1,\n y: -2\n }, {\n x: 0,\n y: -2\n }, {\n x: 1,\n y: -2\n }, {\n x: 2,\n y: -2\n }, {\n x: -2,\n y: -1\n }, {\n x: -1,\n y: -1\n }, {\n x: 0,\n y: -1\n }, {\n x: 1,\n y: -1\n }, {\n x: 2,\n y: -1\n }, {\n x: -3,\n y: 0\n }, {\n x: -2,\n y: 0\n }, {\n x: -1,\n y: 0\n }], [{\n x: -1,\n y: -2\n }, {\n x: 0,\n y: -2\n }, {\n x: 1,\n y: -2\n }, {\n x: -2,\n y: -1\n }, {\n x: -1,\n y: -1\n }, {\n x: 0,\n y: -1\n }, {\n x: 1,\n y: -1\n }, {\n x: -2,\n y: 0\n }, {\n x: -1,\n y: 0\n }], [{\n x: -3,\n y: -1\n }, {\n x: -2,\n y: -1\n }, {\n x: -1,\n y: -1\n }, {\n x: 0,\n y: -1\n }, {\n x: 1,\n y: -1\n }, {\n x: -4,\n y: 0\n }, {\n x: -3,\n y: 0\n }, {\n x: -2,\n y: 0\n }, {\n x: -1,\n y: 0\n }]];\n var RefinementTemplates = [{\n coding: [{\n x: 0,\n y: -1\n }, {\n x: 1,\n y: -1\n }, {\n x: -1,\n y: 0\n }],\n reference: [{\n x: 0,\n y: -1\n }, {\n x: 1,\n y: -1\n }, {\n x: -1,\n y: 0\n }, {\n x: 0,\n y: 0\n }, {\n x: 1,\n y: 0\n }, {\n x: -1,\n y: 1\n }, {\n x: 0,\n y: 1\n }, {\n x: 1,\n y: 1\n }]\n }, {\n coding: [{\n x: -1,\n y: -1\n }, {\n x: 0,\n y: -1\n }, {\n x: 1,\n y: -1\n }, {\n x: -1,\n y: 0\n }],\n reference: [{\n x: 0,\n y: -1\n }, {\n x: -1,\n y: 0\n }, {\n x: 0,\n y: 0\n }, {\n x: 1,\n y: 0\n }, {\n x: 0,\n y: 1\n }, {\n x: 1,\n y: 1\n }]\n }];\n var ReusedContexts = [0x9b25, 0x0795, 0x00e5, 0x0195];\n var RefinementReusedContexts = [0x0020, 0x0008];\n\n function decodeBitmapTemplate0(width, height, decodingContext) {\n var decoder = decodingContext.decoder;\n var contexts = decodingContext.contextCache.getContexts(\"GB\");\n var contextLabel,\n i,\n j,\n pixel,\n row,\n row1,\n row2,\n bitmap = [];\n var OLD_PIXEL_MASK = 0x7bf7;\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 contextLabel = row2[0] << 13 | row2[1] << 12 | row2[2] << 11 | row1[0] << 7 | row1[1] << 6 | row1[2] << 5 | row1[3] << 4;\n\n for (j = 0; j < width; j++) {\n row[j] = pixel = decoder.readBit(contexts, contextLabel);\n contextLabel = (contextLabel & OLD_PIXEL_MASK) << 1 | (j + 3 < width ? row2[j + 3] << 11 : 0) | (j + 4 < width ? row1[j + 4] << 4 : 0) | pixel;\n }\n }\n\n return bitmap;\n }\n\n function decodeBitmap(mmr, width, height, templateIndex, prediction, skip, at, decodingContext) {\n if (mmr) {\n var input = new Reader(decodingContext.data, decodingContext.start, decodingContext.end);\n return decodeMMRBitmap(input, width, height, false);\n }\n\n if (templateIndex === 0 && !skip && !prediction && at.length === 4 && at[0].x === 3 && at[0].y === -1 && at[1].x === -3 && at[1].y === -1 && at[2].x === 2 && at[2].y === -2 && at[3].x === -2 && at[3].y === -2) {\n return decodeBitmapTemplate0(width, height, decodingContext);\n }\n\n var useskip = !!skip;\n var template = CodingTemplates[templateIndex].concat(at);\n template.sort(function (a, b) {\n return a.y - b.y || a.x - b.x;\n });\n var templateLength = template.length;\n var templateX = new Int8Array(templateLength);\n var templateY = new Int8Array(templateLength);\n var changingTemplateEntries = [];\n var reuseMask = 0,\n minX = 0,\n maxX = 0,\n minY = 0;\n var c, k;\n\n for (k = 0; k < templateLength; k++) {\n templateX[k] = template[k].x;\n templateY[k] = template[k].y;\n minX = Math.min(minX, template[k].x);\n maxX = Math.max(maxX, template[k].x);\n minY = Math.min(minY, template[k].y);\n\n if (k < templateLength - 1 && template[k].y === template[k + 1].y && template[k].x === template[k + 1].x - 1) {\n reuseMask |= 1 << templateLength - 1 - k;\n } else {\n changingTemplateEntries.push(k);\n }\n }\n\n var changingEntriesLength = changingTemplateEntries.length;\n var changingTemplateX = new Int8Array(changingEntriesLength);\n var changingTemplateY = new Int8Array(changingEntriesLength);\n var changingTemplateBit = new Uint16Array(changingEntriesLength);\n\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 var sbb_left = -minX;\n var sbb_top = -minY;\n var sbb_right = width - maxX;\n var pseudoPixelContext = ReusedContexts[templateIndex];\n var row = new Uint8Array(width);\n var bitmap = [];\n var decoder = decodingContext.decoder;\n var contexts = decodingContext.contextCache.getContexts(\"GB\");\n var ltp = 0,\n j,\n i0,\n j0,\n contextLabel = 0,\n bit,\n shift;\n\n for (var i = 0; i < height; i++) {\n if (prediction) {\n var sltp = decoder.readBit(contexts, pseudoPixelContext);\n ltp ^= sltp;\n\n if (ltp) {\n bitmap.push(row);\n continue;\n }\n }\n\n row = new Uint8Array(row);\n bitmap.push(row);\n\n for (j = 0; j < width; j++) {\n if (useskip && skip[i][j]) {\n row[j] = 0;\n continue;\n }\n\n if (j >= sbb_left && j < sbb_right && i >= sbb_top) {\n contextLabel = contextLabel << 1 & reuseMask;\n\n for (k = 0; k < changingEntriesLength; k++) {\n i0 = i + changingTemplateY[k];\n j0 = j + changingTemplateX[k];\n bit = bitmap[i0][j0];\n\n if (bit) {\n bit = changingTemplateBit[k];\n contextLabel |= bit;\n }\n }\n } else {\n contextLabel = 0;\n shift = templateLength - 1;\n\n for (k = 0; k < templateLength; k++, shift--) {\n j0 = j + templateX[k];\n\n if (j0 >= 0 && j0 < width) {\n i0 = i + templateY[k];\n\n if (i0 >= 0) {\n bit = bitmap[i0][j0];\n\n if (bit) {\n contextLabel |= bit << shift;\n }\n }\n }\n }\n }\n\n var pixel = decoder.readBit(contexts, contextLabel);\n row[j] = pixel;\n }\n }\n\n return bitmap;\n }\n\n function decodeRefinement(width, height, templateIndex, referenceBitmap, offsetX, offsetY, prediction, at, decodingContext) {\n var codingTemplate = RefinementTemplates[templateIndex].coding;\n\n if (templateIndex === 0) {\n codingTemplate = codingTemplate.concat([at[0]]);\n }\n\n var codingTemplateLength = codingTemplate.length;\n var codingTemplateX = new Int32Array(codingTemplateLength);\n var codingTemplateY = new Int32Array(codingTemplateLength);\n var k;\n\n for (k = 0; k < codingTemplateLength; k++) {\n codingTemplateX[k] = codingTemplate[k].x;\n codingTemplateY[k] = codingTemplate[k].y;\n }\n\n var referenceTemplate = RefinementTemplates[templateIndex].reference;\n\n if (templateIndex === 0) {\n referenceTemplate = referenceTemplate.concat([at[1]]);\n }\n\n var referenceTemplateLength = referenceTemplate.length;\n var referenceTemplateX = new Int32Array(referenceTemplateLength);\n var referenceTemplateY = new Int32Array(referenceTemplateLength);\n\n for (k = 0; k < referenceTemplateLength; k++) {\n referenceTemplateX[k] = referenceTemplate[k].x;\n referenceTemplateY[k] = referenceTemplate[k].y;\n }\n\n var referenceWidth = referenceBitmap[0].length;\n var referenceHeight = referenceBitmap.length;\n var pseudoPixelContext = RefinementReusedContexts[templateIndex];\n var bitmap = [];\n var decoder = decodingContext.decoder;\n var contexts = decodingContext.contextCache.getContexts(\"GR\");\n var ltp = 0;\n\n for (var i = 0; i < height; i++) {\n if (prediction) {\n var sltp = decoder.readBit(contexts, pseudoPixelContext);\n ltp ^= sltp;\n\n if (ltp) {\n throw new Jbig2Error(\"prediction is not supported\");\n }\n }\n\n var row = new Uint8Array(width);\n bitmap.push(row);\n\n for (var j = 0; j < width; j++) {\n var i0, j0;\n var contextLabel = 0;\n\n for (k = 0; k < codingTemplateLength; k++) {\n i0 = i + codingTemplateY[k];\n j0 = j + codingTemplateX[k];\n\n if (i0 < 0 || j0 < 0 || j0 >= width) {\n contextLabel <<= 1;\n } else {\n contextLabel = contextLabel << 1 | bitmap[i0][j0];\n }\n }\n\n for (k = 0; k < referenceTemplateLength; k++) {\n i0 = i + referenceTemplateY[k] - offsetY;\n j0 = j + referenceTemplateX[k] - offsetX;\n\n if (i0 < 0 || i0 >= referenceHeight || j0 < 0 || j0 >= referenceWidth) {\n contextLabel <<= 1;\n } else {\n contextLabel = contextLabel << 1 | referenceBitmap[i0][j0];\n }\n }\n\n var pixel = decoder.readBit(contexts, contextLabel);\n row[j] = pixel;\n }\n }\n\n return bitmap;\n }\n\n function decodeSymbolDictionary(huffman, refinement, symbols, numberOfNewSymbols, numberOfExportedSymbols, huffmanTables, templateIndex, at, refinementTemplateIndex, refinementAt, decodingContext, huffmanInput) {\n if (huffman && refinement) {\n throw new Jbig2Error(\"symbol refinement with Huffman is not supported\");\n }\n\n var newSymbols = [];\n var currentHeight = 0;\n var symbolCodeLength = (0, _core_utils.log2)(symbols.length + numberOfNewSymbols);\n var decoder = decodingContext.decoder;\n var contextCache = decodingContext.contextCache;\n var tableB1, symbolWidths;\n\n if (huffman) {\n tableB1 = getStandardTable(1);\n symbolWidths = [];\n symbolCodeLength = Math.max(symbolCodeLength, 1);\n }\n\n while (newSymbols.length < numberOfNewSymbols) {\n var deltaHeight = huffman ? huffmanTables.tableDeltaHeight.decode(huffmanInput) : decodeInteger(contextCache, \"IADH\", decoder);\n currentHeight += deltaHeight;\n var currentWidth = 0,\n totalWidth = 0;\n var firstSymbol = huffman ? symbolWidths.length : 0;\n\n while (true) {\n var deltaWidth = huffman ? huffmanTables.tableDeltaWidth.decode(huffmanInput) : decodeInteger(contextCache, \"IADW\", decoder);\n\n if (deltaWidth === null) {\n break;\n }\n\n currentWidth += deltaWidth;\n totalWidth += currentWidth;\n var bitmap;\n\n if (refinement) {\n var numberOfInstances = decodeInteger(contextCache, \"IAAI\", decoder);\n\n if (numberOfInstances > 1) {\n bitmap = decodeTextRegion(huffman, refinement, currentWidth, currentHeight, 0, numberOfInstances, 1, symbols.concat(newSymbols), symbolCodeLength, 0, 0, 1, 0, huffmanTables, refinementTemplateIndex, refinementAt, decodingContext, 0, huffmanInput);\n } else {\n var symbolId = decodeIAID(contextCache, decoder, symbolCodeLength);\n var rdx = decodeInteger(contextCache, \"IARDX\", decoder);\n var rdy = decodeInteger(contextCache, \"IARDY\", decoder);\n var symbol = symbolId < symbols.length ? symbols[symbolId] : newSymbols[symbolId - symbols.length];\n bitmap = decodeRefinement(currentWidth, currentHeight, refinementTemplateIndex, symbol, rdx, rdy, false, refinementAt, decodingContext);\n }\n\n newSymbols.push(bitmap);\n } else if (huffman) {\n symbolWidths.push(currentWidth);\n } else {\n bitmap = decodeBitmap(false, currentWidth, currentHeight, templateIndex, false, null, at, decodingContext);\n newSymbols.push(bitmap);\n }\n }\n\n if (huffman && !refinement) {\n var bitmapSize = huffmanTables.tableBitmapSize.decode(huffmanInput);\n huffmanInput.byteAlign();\n var collectiveBitmap = void 0;\n\n if (bitmapSize === 0) {\n collectiveBitmap = readUncompressedBitmap(huffmanInput, totalWidth, currentHeight);\n } else {\n var originalEnd = huffmanInput.end;\n var bitmapEnd = huffmanInput.position + bitmapSize;\n huffmanInput.end = bitmapEnd;\n collectiveBitmap = decodeMMRBitmap(huffmanInput, totalWidth, currentHeight, false);\n huffmanInput.end = originalEnd;\n huffmanInput.position = bitmapEnd;\n }\n\n var numberOfSymbolsDecoded = symbolWidths.length;\n\n if (firstSymbol === numberOfSymbolsDecoded - 1) {\n newSymbols.push(collectiveBitmap);\n } else {\n var _i = void 0,\n y = void 0,\n xMin = 0,\n xMax = void 0,\n bitmapWidth = void 0,\n symbolBitmap = void 0;\n\n for (_i = firstSymbol; _i < numberOfSymbolsDecoded; _i++) {\n bitmapWidth = symbolWidths[_i];\n xMax = xMin + bitmapWidth;\n symbolBitmap = [];\n\n for (y = 0; y < currentHeight; y++) {\n symbolBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));\n }\n\n newSymbols.push(symbolBitmap);\n xMin = xMax;\n }\n }\n }\n }\n\n var exportedSymbols = [];\n var flags = [],\n currentFlag = false;\n var totalSymbolsLength = symbols.length + numberOfNewSymbols;\n\n while (flags.length < totalSymbolsLength) {\n var runLength = huffman ? tableB1.decode(huffmanInput) : decodeInteger(contextCache, \"IAEX\", decoder);\n\n while (runLength--) {\n flags.push(currentFlag);\n }\n\n currentFlag = !currentFlag;\n }\n\n for (var i = 0, ii = symbols.length; i < ii; i++) {\n if (flags[i]) {\n exportedSymbols.push(symbols[i]);\n }\n }\n\n for (var j = 0; j < numberOfNewSymbols; i++, j++) {\n if (flags[i]) {\n exportedSymbols.push(newSymbols[j]);\n }\n }\n\n return exportedSymbols;\n }\n\n function decodeTextRegion(huffman, refinement, width, height, defaultPixelValue, numberOfSymbolInstances, stripSize, inputSymbols, symbolCodeLength, transposed, dsOffset, referenceCorner, combinationOperator, huffmanTables, refinementTemplateIndex, refinementAt, decodingContext, logStripSize, huffmanInput) {\n if (huffman && refinement) {\n throw new Jbig2Error(\"refinement with Huffman is not supported\");\n }\n\n var bitmap = [];\n var i, row;\n\n for (i = 0; i < height; i++) {\n row = new Uint8Array(width);\n\n if (defaultPixelValue) {\n for (var j = 0; j < width; j++) {\n row[j] = defaultPixelValue;\n }\n }\n\n bitmap.push(row);\n }\n\n var decoder = decodingContext.decoder;\n var contextCache = decodingContext.contextCache;\n var stripT = huffman ? -huffmanTables.tableDeltaT.decode(huffmanInput) : -decodeInteger(contextCache, \"IADT\", decoder);\n var firstS = 0;\n i = 0;\n\n while (i < numberOfSymbolInstances) {\n var deltaT = huffman ? huffmanTables.tableDeltaT.decode(huffmanInput) : decodeInteger(contextCache, \"IADT\", decoder);\n stripT += deltaT;\n var deltaFirstS = huffman ? huffmanTables.tableFirstS.decode(huffmanInput) : decodeInteger(contextCache, \"IAFS\", decoder);\n firstS += deltaFirstS;\n var currentS = firstS;\n\n do {\n var currentT = 0;\n\n if (stripSize > 1) {\n currentT = huffman ? huffmanInput.readBits(logStripSize) : decodeInteger(contextCache, \"IAIT\", decoder);\n }\n\n var t = stripSize * stripT + currentT;\n var symbolId = huffman ? huffmanTables.symbolIDTable.decode(huffmanInput) : decodeIAID(contextCache, decoder, symbolCodeLength);\n var applyRefinement = refinement && (huffman ? huffmanInput.readBit() : decodeInteger(contextCache, \"IARI\", decoder));\n var symbolBitmap = inputSymbols[symbolId];\n var symbolWidth = symbolBitmap[0].length;\n var symbolHeight = symbolBitmap.length;\n\n if (applyRefinement) {\n var rdw = decodeInteger(contextCache, \"IARDW\", decoder);\n var rdh = decodeInteger(contextCache, \"IARDH\", decoder);\n var rdx = decodeInteger(contextCache, \"IARDX\", decoder);\n var rdy = decodeInteger(contextCache, \"IARDY\", decoder);\n symbolWidth += rdw;\n symbolHeight += rdh;\n symbolBitmap = decodeRefinement(symbolWidth, symbolHeight, refinementTemplateIndex, symbolBitmap, (rdw >> 1) + rdx, (rdh >> 1) + rdy, false, refinementAt, decodingContext);\n }\n\n var offsetT = t - (referenceCorner & 1 ? 0 : symbolHeight - 1);\n var offsetS = currentS - (referenceCorner & 2 ? symbolWidth - 1 : 0);\n var s2, t2, symbolRow;\n\n if (transposed) {\n for (s2 = 0; s2 < symbolHeight; s2++) {\n row = bitmap[offsetS + s2];\n\n if (!row) {\n continue;\n }\n\n symbolRow = symbolBitmap[s2];\n var maxWidth = Math.min(width - offsetT, symbolWidth);\n\n switch (combinationOperator) {\n case 0:\n for (t2 = 0; t2 < maxWidth; t2++) {\n row[offsetT + t2] |= symbolRow[t2];\n }\n\n break;\n\n case 2:\n for (t2 = 0; t2 < maxWidth; t2++) {\n row[offsetT + t2] ^= symbolRow[t2];\n }\n\n break;\n\n default:\n throw new Jbig2Error(\"operator \".concat(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\n if (!row) {\n continue;\n }\n\n symbolRow = symbolBitmap[t2];\n\n switch (combinationOperator) {\n case 0:\n for (s2 = 0; s2 < symbolWidth; s2++) {\n row[offsetS + s2] |= symbolRow[s2];\n }\n\n break;\n\n case 2:\n for (s2 = 0; s2 < symbolWidth; s2++) {\n row[offsetS + s2] ^= symbolRow[s2];\n }\n\n break;\n\n default:\n throw new Jbig2Error(\"operator \".concat(combinationOperator, \" is not supported\"));\n }\n }\n\n currentS += symbolWidth - 1;\n }\n\n i++;\n var deltaS = huffman ? huffmanTables.tableDeltaS.decode(huffmanInput) : decodeInteger(contextCache, \"IADS\", decoder);\n\n if (deltaS === null) {\n break;\n }\n\n currentS += deltaS + dsOffset;\n } while (true);\n }\n\n return bitmap;\n }\n\n function decodePatternDictionary(mmr, patternWidth, patternHeight, maxPatternIndex, template, decodingContext) {\n var at = [];\n\n if (!mmr) {\n at.push({\n x: -patternWidth,\n y: 0\n });\n\n if (template === 0) {\n at.push({\n x: -3,\n y: -1\n });\n at.push({\n x: 2,\n y: -2\n });\n at.push({\n x: -2,\n y: -2\n });\n }\n }\n\n var collectiveWidth = (maxPatternIndex + 1) * patternWidth;\n var collectiveBitmap = decodeBitmap(mmr, collectiveWidth, patternHeight, template, false, null, at, decodingContext);\n var patterns = [];\n\n for (var i = 0; i <= maxPatternIndex; i++) {\n var patternBitmap = [];\n var xMin = patternWidth * i;\n var xMax = xMin + patternWidth;\n\n for (var y = 0; y < patternHeight; y++) {\n patternBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));\n }\n\n patterns.push(patternBitmap);\n }\n\n return patterns;\n }\n\n function decodeHalftoneRegion(mmr, patterns, template, regionWidth, regionHeight, defaultPixelValue, enableSkip, combinationOperator, gridWidth, gridHeight, gridOffsetX, gridOffsetY, gridVectorX, gridVectorY, decodingContext) {\n var skip = null;\n\n if (enableSkip) {\n throw new Jbig2Error(\"skip is not supported\");\n }\n\n if (combinationOperator !== 0) {\n throw new Jbig2Error(\"operator \" + combinationOperator + \" is not supported in halftone region\");\n }\n\n var regionBitmap = [];\n var i, j, row;\n\n for (i = 0; i < regionHeight; i++) {\n row = new Uint8Array(regionWidth);\n\n if (defaultPixelValue) {\n for (j = 0; j < regionWidth; j++) {\n row[j] = defaultPixelValue;\n }\n }\n\n regionBitmap.push(row);\n }\n\n var numberOfPatterns = patterns.length;\n var pattern0 = patterns[0];\n var patternWidth = pattern0[0].length,\n patternHeight = pattern0.length;\n var bitsPerValue = (0, _core_utils.log2)(numberOfPatterns);\n var at = [];\n\n if (!mmr) {\n at.push({\n x: template <= 1 ? 3 : 2,\n y: -1\n });\n\n if (template === 0) {\n at.push({\n x: -3,\n y: -1\n });\n at.push({\n x: 2,\n y: -2\n });\n at.push({\n x: -2,\n y: -2\n });\n }\n }\n\n var grayScaleBitPlanes = [];\n var mmrInput, bitmap;\n\n if (mmr) {\n mmrInput = new Reader(decodingContext.data, decodingContext.start, 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(false, gridWidth, gridHeight, template, false, skip, at, decodingContext);\n }\n\n grayScaleBitPlanes[i] = bitmap;\n }\n\n var mg, ng, bit, patternIndex, patternBitmap, x, y, patternRow, regionRow;\n\n for (mg = 0; mg < gridHeight; mg++) {\n for (ng = 0; ng < gridWidth; ng++) {\n bit = 0;\n patternIndex = 0;\n\n for (j = bitsPerValue - 1; j >= 0; j--) {\n bit = grayScaleBitPlanes[j][mg][ng] ^ bit;\n patternIndex |= bit << j;\n }\n\n patternBitmap = patterns[patternIndex];\n x = gridOffsetX + mg * gridVectorY + ng * gridVectorX >> 8;\n y = gridOffsetY + mg * gridVectorX - ng * gridVectorY >> 8;\n\n if (x >= 0 && x + patternWidth <= regionWidth && y >= 0 && y + patternHeight <= regionHeight) {\n for (i = 0; i < patternHeight; i++) {\n regionRow = regionBitmap[y + i];\n patternRow = patternBitmap[i];\n\n for (j = 0; j < patternWidth; j++) {\n regionRow[x + j] |= patternRow[j];\n }\n }\n } else {\n var regionX = void 0,\n regionY = void 0;\n\n for (i = 0; i < patternHeight; i++) {\n regionY = y + i;\n\n if (regionY < 0 || regionY >= regionHeight) {\n continue;\n }\n\n regionRow = regionBitmap[regionY];\n patternRow = patternBitmap[i];\n\n for (j = 0; j < patternWidth; j++) {\n regionX = x + j;\n\n if (regionX >= 0 && regionX < regionWidth) {\n regionRow[regionX] |= patternRow[j];\n }\n }\n }\n }\n }\n }\n\n return regionBitmap;\n }\n\n function readSegmentHeader(data, start) {\n var segmentHeader = {};\n segmentHeader.number = (0, _core_utils.readUint32)(data, start);\n var flags = data[start + 4];\n var segmentType = flags & 0x3f;\n\n if (!SegmentTypes[segmentType]) {\n throw new Jbig2Error(\"invalid segment type: \" + segmentType);\n }\n\n segmentHeader.type = segmentType;\n segmentHeader.typeName = SegmentTypes[segmentType];\n segmentHeader.deferredNonRetain = !!(flags & 0x80);\n var pageAssociationFieldSize = !!(flags & 0x40);\n var referredFlags = data[start + 5];\n var referredToCount = referredFlags >> 5 & 7;\n var retainBits = [referredFlags & 31];\n var position = start + 6;\n\n if (referredFlags === 7) {\n referredToCount = (0, _core_utils.readUint32)(data, position - 1) & 0x1fffffff;\n position += 3;\n var bytes = referredToCount + 7 >> 3;\n retainBits[0] = data[position++];\n\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 var referredToSegmentNumberSize = 4;\n\n if (segmentHeader.number <= 256) {\n referredToSegmentNumberSize = 1;\n } else if (segmentHeader.number <= 65536) {\n referredToSegmentNumberSize = 2;\n }\n\n var referredTo = [];\n var i, ii;\n\n for (i = 0; i < referredToCount; i++) {\n var number = void 0;\n\n if (referredToSegmentNumberSize === 1) {\n number = data[position];\n } else if (referredToSegmentNumberSize === 2) {\n number = (0, _core_utils.readUint16)(data, position);\n } else {\n number = (0, _core_utils.readUint32)(data, position);\n }\n\n referredTo.push(number);\n position += referredToSegmentNumberSize;\n }\n\n segmentHeader.referredTo = referredTo;\n\n if (!pageAssociationFieldSize) {\n segmentHeader.pageAssociation = data[position++];\n } else {\n segmentHeader.pageAssociation = (0, _core_utils.readUint32)(data, position);\n position += 4;\n }\n\n segmentHeader.length = (0, _core_utils.readUint32)(data, position);\n position += 4;\n\n if (segmentHeader.length === 0xffffffff) {\n if (segmentType === 38) {\n var genericRegionInfo = readRegionSegmentInformation(data, position);\n var genericRegionSegmentFlags = data[position + RegionSegmentInformationFieldLength];\n var genericRegionMmr = !!(genericRegionSegmentFlags & 1);\n var searchPatternLength = 6;\n var searchPattern = new Uint8Array(searchPatternLength);\n\n if (!genericRegionMmr) {\n searchPattern[0] = 0xff;\n searchPattern[1] = 0xac;\n }\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\n for (i = position, ii = data.length; i < ii; i++) {\n var j = 0;\n\n while (j < searchPatternLength && searchPattern[j] === data[i + j]) {\n j++;\n }\n\n if (j === searchPatternLength) {\n segmentHeader.length = i + searchPatternLength;\n break;\n }\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\n segmentHeader.headerEnd = position;\n return segmentHeader;\n }\n\n function readSegments(header, data, start, end) {\n var segments = [];\n var position = start;\n\n while (position < end) {\n var segmentHeader = readSegmentHeader(data, position);\n position = segmentHeader.headerEnd;\n var segment = {\n header: segmentHeader,\n data: data\n };\n\n if (!header.randomAccess) {\n segment.start = position;\n position += segmentHeader.length;\n segment.end = position;\n }\n\n segments.push(segment);\n\n if (segmentHeader.type === 51) {\n break;\n }\n }\n\n if (header.randomAccess) {\n for (var i = 0, ii = segments.length; i < ii; i++) {\n segments[i].start = position;\n position += segments[i].header.length;\n segments[i].end = position;\n }\n }\n\n return segments;\n }\n\n function readRegionSegmentInformation(data, start) {\n return {\n width: (0, _core_utils.readUint32)(data, start),\n height: (0, _core_utils.readUint32)(data, start + 4),\n x: (0, _core_utils.readUint32)(data, start + 8),\n y: (0, _core_utils.readUint32)(data, start + 12),\n combinationOperator: data[start + 16] & 7\n };\n }\n\n var RegionSegmentInformationFieldLength = 17;\n\n function processSegment(segment, visitor) {\n var header = segment.header;\n var data = segment.data,\n position = segment.start,\n end = segment.end;\n var args, at, i, atLength;\n\n switch (header.type) {\n case 0:\n var dictionary = {};\n var dictionaryFlags = (0, _core_utils.readUint16)(data, position);\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\n if (!dictionary.huffman) {\n atLength = dictionary.template === 0 ? 4 : 1;\n at = [];\n\n for (i = 0; i < atLength; i++) {\n at.push({\n x: (0, _core_utils.readInt8)(data, position),\n y: (0, _core_utils.readInt8)(data, position + 1)\n });\n position += 2;\n }\n\n dictionary.at = at;\n }\n\n if (dictionary.refinement && !dictionary.refinementTemplate) {\n at = [];\n\n for (i = 0; i < 2; i++) {\n at.push({\n x: (0, _core_utils.readInt8)(data, position),\n y: (0, _core_utils.readInt8)(data, position + 1)\n });\n position += 2;\n }\n\n dictionary.refinementAt = at;\n }\n\n dictionary.numberOfExportedSymbols = (0, _core_utils.readUint32)(data, position);\n position += 4;\n dictionary.numberOfNewSymbols = (0, _core_utils.readUint32)(data, position);\n position += 4;\n args = [dictionary, header.number, header.referredTo, data, position, end];\n break;\n\n case 6:\n case 7:\n var textRegion = {};\n textRegion.info = readRegionSegmentInformation(data, position);\n position += RegionSegmentInformationFieldLength;\n var textRegionSegmentFlags = (0, _core_utils.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\n if (textRegion.huffman) {\n var textRegionHuffmanFlags = (0, _core_utils.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 = !!(textRegionHuffmanFlags & 0x4000);\n }\n\n if (textRegion.refinement && !textRegion.refinementTemplate) {\n at = [];\n\n for (i = 0; i < 2; i++) {\n at.push({\n x: (0, _core_utils.readInt8)(data, position),\n y: (0, _core_utils.readInt8)(data, position + 1)\n });\n position += 2;\n }\n\n textRegion.refinementAt = at;\n }\n\n textRegion.numberOfSymbolInstances = (0, _core_utils.readUint32)(data, position);\n position += 4;\n args = [textRegion, header.referredTo, data, position, end];\n break;\n\n case 16:\n var patternDictionary = {};\n var 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 = (0, _core_utils.readUint32)(data, position);\n position += 4;\n args = [patternDictionary, header.number, data, position, end];\n break;\n\n case 22:\n case 23:\n var halftoneRegion = {};\n halftoneRegion.info = readRegionSegmentInformation(data, position);\n position += RegionSegmentInformationFieldLength;\n var 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 = (0, _core_utils.readUint32)(data, position);\n position += 4;\n halftoneRegion.gridHeight = (0, _core_utils.readUint32)(data, position);\n position += 4;\n halftoneRegion.gridOffsetX = (0, _core_utils.readUint32)(data, position) & 0xffffffff;\n position += 4;\n halftoneRegion.gridOffsetY = (0, _core_utils.readUint32)(data, position) & 0xffffffff;\n position += 4;\n halftoneRegion.gridVectorX = (0, _core_utils.readUint16)(data, position);\n position += 2;\n halftoneRegion.gridVectorY = (0, _core_utils.readUint16)(data, position);\n position += 2;\n args = [halftoneRegion, header.referredTo, data, position, end];\n break;\n\n case 38:\n case 39:\n var genericRegion = {};\n genericRegion.info = readRegionSegmentInformation(data, position);\n position += RegionSegmentInformationFieldLength;\n var genericRegionSegmentFlags = data[position++];\n genericRegion.mmr = !!(genericRegionSegmentFlags & 1);\n genericRegion.template = genericRegionSegmentFlags >> 1 & 3;\n genericRegion.prediction = !!(genericRegionSegmentFlags & 8);\n\n if (!genericRegion.mmr) {\n atLength = genericRegion.template === 0 ? 4 : 1;\n at = [];\n\n for (i = 0; i < atLength; i++) {\n at.push({\n x: (0, _core_utils.readInt8)(data, position),\n y: (0, _core_utils.readInt8)(data, position + 1)\n });\n position += 2;\n }\n\n genericRegion.at = at;\n }\n\n args = [genericRegion, data, position, end];\n break;\n\n case 48:\n var pageInfo = {\n width: (0, _core_utils.readUint32)(data, position),\n height: (0, _core_utils.readUint32)(data, position + 4),\n resolutionX: (0, _core_utils.readUint32)(data, position + 8),\n resolutionY: (0, _core_utils.readUint32)(data, position + 12)\n };\n\n if (pageInfo.height === 0xffffffff) {\n delete pageInfo.height;\n }\n\n var pageSegmentFlags = data[position + 16];\n (0, _core_utils.readUint16)(data, position + 17);\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\n case 49:\n break;\n\n case 50:\n break;\n\n case 51:\n break;\n\n case 53:\n args = [header.number, data, position, end];\n break;\n\n case 62:\n break;\n\n default:\n throw new Jbig2Error(\"segment type \".concat(header.typeName, \"(\").concat(header.type, \")\") + \" is not implemented\");\n }\n\n var callbackName = \"on\" + header.typeName;\n\n if (callbackName in visitor) {\n visitor[callbackName].apply(visitor, args);\n }\n }\n\n function processSegments(segments, visitor) {\n for (var i = 0, ii = segments.length; i < ii; i++) {\n processSegment(segments[i], visitor);\n }\n }\n\n function parseJbig2Chunks(chunks) {\n var visitor = new SimpleSegmentVisitor();\n\n for (var i = 0, ii = chunks.length; i < ii; i++) {\n var chunk = chunks[i];\n var segments = readSegments({}, chunk.data, chunk.start, chunk.end);\n processSegments(segments, visitor);\n }\n\n return visitor.buffer;\n }\n\n function parseJbig2(data) {\n var end = data.length;\n var position = 0;\n\n if (data[position] !== 0x97 || data[position + 1] !== 0x4a || data[position + 2] !== 0x42 || data[position + 3] !== 0x32 || data[position + 4] !== 0x0d || data[position + 5] !== 0x0a || data[position + 6] !== 0x1a || data[position + 7] !== 0x0a) {\n throw new Jbig2Error(\"parseJbig2 - invalid header.\");\n }\n\n var header = Object.create(null);\n position += 8;\n var flags = data[position++];\n header.randomAccess = !(flags & 1);\n\n if (!(flags & 2)) {\n header.numberOfPages = (0, _core_utils.readUint32)(data, position);\n position += 4;\n }\n\n var segments = readSegments(header, data, position, end);\n var visitor = new SimpleSegmentVisitor();\n processSegments(segments, visitor);\n var _visitor$currentPageI = visitor.currentPageInfo,\n width = _visitor$currentPageI.width,\n height = _visitor$currentPageI.height;\n var bitPacked = visitor.buffer;\n var imgData = new Uint8ClampedArray(width * height);\n var q = 0,\n k = 0;\n\n for (var i = 0; i < height; i++) {\n var mask = 0,\n buffer = void 0;\n\n for (var j = 0; j < width; j++) {\n if (!mask) {\n mask = 128;\n buffer = bitPacked[k++];\n }\n\n imgData[q++] = buffer & mask ? 0 : 255;\n mask >>= 1;\n }\n }\n\n return {\n imgData: imgData,\n width: width,\n height: height\n };\n }\n\n function SimpleSegmentVisitor() {}\n\n SimpleSegmentVisitor.prototype = {\n onPageInformation: function SimpleSegmentVisitor_onPageInformation(info) {\n this.currentPageInfo = info;\n var rowSize = info.width + 7 >> 3;\n var buffer = new Uint8ClampedArray(rowSize * info.height);\n\n if (info.defaultPixelValue) {\n for (var i = 0, ii = buffer.length; i < ii; i++) {\n buffer[i] = 0xff;\n }\n }\n\n this.buffer = buffer;\n },\n drawBitmap: function SimpleSegmentVisitor_drawBitmap(regionInfo, bitmap) {\n var pageInfo = this.currentPageInfo;\n var width = regionInfo.width,\n height = regionInfo.height;\n var rowSize = pageInfo.width + 7 >> 3;\n var combinationOperator = pageInfo.combinationOperatorOverride ? regionInfo.combinationOperator : pageInfo.combinationOperator;\n var buffer = this.buffer;\n var mask0 = 128 >> (regionInfo.x & 7);\n var offset0 = regionInfo.y * rowSize + (regionInfo.x >> 3);\n var i, j, mask, offset;\n\n switch (combinationOperator) {\n case 0:\n for (i = 0; i < height; i++) {\n mask = mask0;\n offset = offset0;\n\n for (j = 0; j < width; j++) {\n if (bitmap[i][j]) {\n buffer[offset] |= mask;\n }\n\n mask >>= 1;\n\n if (!mask) {\n mask = 128;\n offset++;\n }\n }\n\n offset0 += rowSize;\n }\n\n break;\n\n case 2:\n for (i = 0; i < height; i++) {\n mask = mask0;\n offset = offset0;\n\n for (j = 0; j < width; j++) {\n if (bitmap[i][j]) {\n buffer[offset] ^= mask;\n }\n\n mask >>= 1;\n\n if (!mask) {\n mask = 128;\n offset++;\n }\n }\n\n offset0 += rowSize;\n }\n\n break;\n\n default:\n throw new Jbig2Error(\"operator \".concat(combinationOperator, \" is not supported\"));\n }\n },\n onImmediateGenericRegion: function SimpleSegmentVisitor_onImmediateGenericRegion(region, data, start, end) {\n var regionInfo = region.info;\n var decodingContext = new DecodingContext(data, start, end);\n var bitmap = decodeBitmap(region.mmr, regionInfo.width, regionInfo.height, region.template, region.prediction, null, region.at, decodingContext);\n this.drawBitmap(regionInfo, bitmap);\n },\n onImmediateLosslessGenericRegion: function SimpleSegmentVisitor_onImmediateLosslessGenericRegion() {\n this.onImmediateGenericRegion.apply(this, arguments);\n },\n onSymbolDictionary: function SimpleSegmentVisitor_onSymbolDictionary(dictionary, currentSegment, referredSegments, data, start, end) {\n var huffmanTables, huffmanInput;\n\n if (dictionary.huffman) {\n huffmanTables = getSymbolDictionaryHuffmanTables(dictionary, referredSegments, this.customTables);\n huffmanInput = new Reader(data, start, end);\n }\n\n var symbols = this.symbols;\n\n if (!symbols) {\n this.symbols = symbols = {};\n }\n\n var inputSymbols = [];\n\n for (var i = 0, ii = referredSegments.length; i < ii; i++) {\n var referredSymbols = symbols[referredSegments[i]];\n\n if (referredSymbols) {\n inputSymbols = inputSymbols.concat(referredSymbols);\n }\n }\n\n var decodingContext = new DecodingContext(data, start, end);\n symbols[currentSegment] = decodeSymbolDictionary(dictionary.huffman, dictionary.refinement, inputSymbols, dictionary.numberOfNewSymbols, dictionary.numberOfExportedSymbols, huffmanTables, dictionary.template, dictionary.at, dictionary.refinementTemplate, dictionary.refinementAt, decodingContext, huffmanInput);\n },\n onImmediateTextRegion: function SimpleSegmentVisitor_onImmediateTextRegion(region, referredSegments, data, start, end) {\n var regionInfo = region.info;\n var huffmanTables, huffmanInput;\n var symbols = this.symbols;\n var inputSymbols = [];\n\n for (var i = 0, ii = referredSegments.length; i < ii; i++) {\n var referredSymbols = symbols[referredSegments[i]];\n\n if (referredSymbols) {\n inputSymbols = inputSymbols.concat(referredSymbols);\n }\n }\n\n var symbolCodeLength = (0, _core_utils.log2)(inputSymbols.length);\n\n if (region.huffman) {\n huffmanInput = new Reader(data, start, end);\n huffmanTables = getTextRegionHuffmanTables(region, referredSegments, this.customTables, inputSymbols.length, huffmanInput);\n }\n\n var decodingContext = new DecodingContext(data, start, end);\n var bitmap = decodeTextRegion(region.huffman, region.refinement, regionInfo.width, regionInfo.height, region.defaultPixelValue, region.numberOfSymbolInstances, region.stripSize, inputSymbols, symbolCodeLength, region.transposed, region.dsOffset, region.referenceCorner, region.combinationOperator, huffmanTables, region.refinementTemplate, region.refinementAt, decodingContext, region.logStripSize, huffmanInput);\n this.drawBitmap(regionInfo, bitmap);\n },\n onImmediateLosslessTextRegion: function SimpleSegmentVisitor_onImmediateLosslessTextRegion() {\n this.onImmediateTextRegion.apply(this, arguments);\n },\n onPatternDictionary: function onPatternDictionary(dictionary, currentSegment, data, start, end) {\n var patterns = this.patterns;\n\n if (!patterns) {\n this.patterns = patterns = {};\n }\n\n var decodingContext = new DecodingContext(data, start, end);\n patterns[currentSegment] = decodePatternDictionary(dictionary.mmr, dictionary.patternWidth, dictionary.patternHeight, dictionary.maxPatternIndex, dictionary.template, decodingContext);\n },\n onImmediateHalftoneRegion: function onImmediateHalftoneRegion(region, referredSegments, data, start, end) {\n var patterns = this.patterns[referredSegments[0]];\n var regionInfo = region.info;\n var decodingContext = new DecodingContext(data, start, end);\n var bitmap = decodeHalftoneRegion(region.mmr, patterns, region.template, regionInfo.width, regionInfo.height, region.defaultPixelValue, region.enableSkip, region.combinationOperator, region.gridWidth, region.gridHeight, region.gridOffsetX, region.gridOffsetY, region.gridVectorX, region.gridVectorY, decodingContext);\n this.drawBitmap(regionInfo, bitmap);\n },\n onImmediateLosslessHalftoneRegion: function onImmediateLosslessHalftoneRegion() {\n this.onImmediateHalftoneRegion.apply(this, arguments);\n },\n onTables: function onTables(currentSegment, data, start, end) {\n var customTables = this.customTables;\n\n if (!customTables) {\n this.customTables = customTables = {};\n }\n\n customTables[currentSegment] = decodeTablesSegment(data, start, end);\n }\n };\n\n function HuffmanLine(lineData) {\n if (lineData.length === 2) {\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 this.isOOB = false;\n this.rangeLow = lineData[0];\n this.prefixLength = lineData[1];\n this.rangeLength = lineData[2];\n this.prefixCode = lineData[3];\n this.isLowerRange = lineData[4] === \"lower\";\n }\n }\n\n function HuffmanTreeNode(line) {\n this.children = [];\n\n if (line) {\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 this.isLeaf = false;\n }\n }\n\n HuffmanTreeNode.prototype = {\n buildTree: function buildTree(line, shift) {\n var bit = line.prefixCode >> shift & 1;\n\n if (shift <= 0) {\n this.children[bit] = new HuffmanTreeNode(line);\n } else {\n var node = this.children[bit];\n\n if (!node) {\n this.children[bit] = node = new HuffmanTreeNode(null);\n }\n\n node.buildTree(line, shift - 1);\n }\n },\n decodeNode: function decodeNode(reader) {\n if (this.isLeaf) {\n if (this.isOOB) {\n return null;\n }\n\n var htOffset = reader.readBits(this.rangeLength);\n return this.rangeLow + (this.isLowerRange ? -htOffset : htOffset);\n }\n\n var node = this.children[reader.readBit()];\n\n if (!node) {\n throw new Jbig2Error(\"invalid Huffman data\");\n }\n\n return node.decodeNode(reader);\n }\n };\n\n function HuffmanTable(lines, prefixCodesDone) {\n if (!prefixCodesDone) {\n this.assignPrefixCodes(lines);\n }\n\n this.rootNode = new HuffmanTreeNode(null);\n\n for (var i = 0, ii = lines.length; i < ii; i++) {\n var line = lines[i];\n\n if (line.prefixLength > 0) {\n this.rootNode.buildTree(line, line.prefixLength - 1);\n }\n }\n }\n\n HuffmanTable.prototype = {\n decode: function decode(reader) {\n return this.rootNode.decodeNode(reader);\n },\n assignPrefixCodes: function assignPrefixCodes(lines) {\n var linesLength = lines.length;\n var prefixLengthMax = 0;\n\n for (var i = 0; i < linesLength; i++) {\n prefixLengthMax = Math.max(prefixLengthMax, lines[i].prefixLength);\n }\n\n var histogram = new Uint32Array(prefixLengthMax + 1);\n\n for (var _i2 = 0; _i2 < linesLength; _i2++) {\n histogram[lines[_i2].prefixLength]++;\n }\n\n var 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\n while (currentTemp < linesLength) {\n line = lines[currentTemp];\n\n if (line.prefixLength === currentLength) {\n line.prefixCode = currentCode;\n currentCode++;\n }\n\n currentTemp++;\n }\n\n currentLength++;\n }\n }\n };\n\n function decodeTablesSegment(data, start, end) {\n var flags = data[start];\n var lowestValue = (0, _core_utils.readUint32)(data, start + 1) & 0xffffffff;\n var highestValue = (0, _core_utils.readUint32)(data, start + 5) & 0xffffffff;\n var reader = new Reader(data, start + 9, end);\n var prefixSizeBits = (flags >> 1 & 7) + 1;\n var rangeSizeBits = (flags >> 4 & 7) + 1;\n var lines = [];\n var prefixLength,\n rangeLength,\n currentRangeLow = lowestValue;\n\n do {\n prefixLength = reader.readBits(prefixSizeBits);\n rangeLength = reader.readBits(rangeSizeBits);\n lines.push(new HuffmanLine([currentRangeLow, prefixLength, rangeLength, 0]));\n currentRangeLow += 1 << rangeLength;\n } while (currentRangeLow < highestValue);\n\n prefixLength = reader.readBits(prefixSizeBits);\n lines.push(new HuffmanLine([lowestValue - 1, prefixLength, 32, 0, \"lower\"]));\n prefixLength = reader.readBits(prefixSizeBits);\n lines.push(new HuffmanLine([highestValue, prefixLength, 32, 0]));\n\n if (flags & 1) {\n prefixLength = reader.readBits(prefixSizeBits);\n lines.push(new HuffmanLine([prefixLength, 0]));\n }\n\n return new HuffmanTable(lines, false);\n }\n\n var standardTablesCache = {};\n\n function getStandardTable(number) {\n var table = standardTablesCache[number];\n\n if (table) {\n return table;\n }\n\n var lines;\n\n switch (number) {\n case 1:\n lines = [[0, 1, 4, 0x0], [16, 2, 8, 0x2], [272, 3, 16, 0x6], [65808, 3, 32, 0x7]];\n break;\n\n case 2:\n lines = [[0, 1, 0, 0x0], [1, 2, 0, 0x2], [2, 3, 0, 0x6], [3, 4, 3, 0xe], [11, 5, 6, 0x1e], [75, 6, 32, 0x3e], [6, 0x3f]];\n break;\n\n case 3:\n lines = [[-256, 8, 8, 0xfe], [0, 1, 0, 0x0], [1, 2, 0, 0x2], [2, 3, 0, 0x6], [3, 4, 3, 0xe], [11, 5, 6, 0x1e], [-257, 8, 32, 0xff, \"lower\"], [75, 7, 32, 0x7e], [6, 0x3e]];\n break;\n\n case 4:\n lines = [[1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 0, 0x6], [4, 4, 3, 0xe], [12, 5, 6, 0x1e], [76, 5, 32, 0x1f]];\n break;\n\n case 5:\n lines = [[-255, 7, 8, 0x7e], [1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 0, 0x6], [4, 4, 3, 0xe], [12, 5, 6, 0x1e], [-256, 7, 32, 0x7f, \"lower\"], [76, 6, 32, 0x3e]];\n break;\n\n case 6:\n lines = [[-2048, 5, 10, 0x1c], [-1024, 4, 9, 0x8], [-512, 4, 8, 0x9], [-256, 4, 7, 0xa], [-128, 5, 6, 0x1d], [-64, 5, 5, 0x1e], [-32, 4, 5, 0xb], [0, 2, 7, 0x0], [128, 3, 7, 0x2], [256, 3, 8, 0x3], [512, 4, 9, 0xc], [1024, 4, 10, 0xd], [-2049, 6, 32, 0x3e, \"lower\"], [2048, 6, 32, 0x3f]];\n break;\n\n case 7:\n lines = [[-1024, 4, 9, 0x8], [-512, 3, 8, 0x0], [-256, 4, 7, 0x9], [-128, 5, 6, 0x1a], [-64, 5, 5, 0x1b], [-32, 4, 5, 0xa], [0, 4, 5, 0xb], [32, 5, 5, 0x1c], [64, 5, 6, 0x1d], [128, 4, 7, 0xc], [256, 3, 8, 0x1], [512, 3, 9, 0x2], [1024, 3, 10, 0x3], [-1025, 5, 32, 0x1e, \"lower\"], [2048, 5, 32, 0x1f]];\n break;\n\n case 8:\n lines = [[-15, 8, 3, 0xfc], [-7, 9, 1, 0x1fc], [-5, 8, 1, 0xfd], [-3, 9, 0, 0x1fd], [-2, 7, 0, 0x7c], [-1, 4, 0, 0xa], [0, 2, 1, 0x0], [2, 5, 0, 0x1a], [3, 6, 0, 0x3a], [4, 3, 4, 0x4], [20, 6, 1, 0x3b], [22, 4, 4, 0xb], [38, 4, 5, 0xc], [70, 5, 6, 0x1b], [134, 5, 7, 0x1c], [262, 6, 7, 0x3c], [390, 7, 8, 0x7d], [646, 6, 10, 0x3d], [-16, 9, 32, 0x1fe, \"lower\"], [1670, 9, 32, 0x1ff], [2, 0x1]];\n break;\n\n case 9:\n lines = [[-31, 8, 4, 0xfc], [-15, 9, 2, 0x1fc], [-11, 8, 2, 0xfd], [-7, 9, 1, 0x1fd], [-5, 7, 1, 0x7c], [-3, 4, 1, 0xa], [-1, 3, 1, 0x2], [1, 3, 1, 0x3], [3, 5, 1, 0x1a], [5, 6, 1, 0x3a], [7, 3, 5, 0x4], [39, 6, 2, 0x3b], [43, 4, 5, 0xb], [75, 4, 6, 0xc], [139, 5, 7, 0x1b], [267, 5, 8, 0x1c], [523, 6, 8, 0x3c], [779, 7, 9, 0x7d], [1291, 6, 11, 0x3d], [-32, 9, 32, 0x1fe, \"lower\"], [3339, 9, 32, 0x1ff], [2, 0x0]];\n break;\n\n case 10:\n lines = [[-21, 7, 4, 0x7a], [-5, 8, 0, 0xfc], [-4, 7, 0, 0x7b], [-3, 5, 0, 0x18], [-2, 2, 2, 0x0], [2, 5, 0, 0x19], [3, 6, 0, 0x36], [4, 7, 0, 0x7c], [5, 8, 0, 0xfd], [6, 2, 6, 0x1], [70, 5, 5, 0x1a], [102, 6, 5, 0x37], [134, 6, 6, 0x38], [198, 6, 7, 0x39], [326, 6, 8, 0x3a], [582, 6, 9, 0x3b], [1094, 6, 10, 0x3c], [2118, 7, 11, 0x7d], [-22, 8, 32, 0xfe, \"lower\"], [4166, 8, 32, 0xff], [2, 0x2]];\n break;\n\n case 11:\n lines = [[1, 1, 0, 0x0], [2, 2, 1, 0x2], [4, 4, 0, 0xc], [5, 4, 1, 0xd], [7, 5, 1, 0x1c], [9, 5, 2, 0x1d], [13, 6, 2, 0x3c], [17, 7, 2, 0x7a], [21, 7, 3, 0x7b], [29, 7, 4, 0x7c], [45, 7, 5, 0x7d], [77, 7, 6, 0x7e], [141, 7, 32, 0x7f]];\n break;\n\n case 12:\n lines = [[1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 1, 0x6], [5, 5, 0, 0x1c], [6, 5, 1, 0x1d], [8, 6, 1, 0x3c], [10, 7, 0, 0x7a], [11, 7, 1, 0x7b], [13, 7, 2, 0x7c], [17, 7, 3, 0x7d], [25, 7, 4, 0x7e], [41, 8, 5, 0xfe], [73, 8, 32, 0xff]];\n break;\n\n case 13:\n lines = [[1, 1, 0, 0x0], [2, 3, 0, 0x4], [3, 4, 0, 0xc], [4, 5, 0, 0x1c], [5, 4, 1, 0xd], [7, 3, 3, 0x5], [15, 6, 1, 0x3a], [17, 6, 2, 0x3b], [21, 6, 3, 0x3c], [29, 6, 4, 0x3d], [45, 6, 5, 0x3e], [77, 7, 6, 0x7e], [141, 7, 32, 0x7f]];\n break;\n\n case 14:\n lines = [[-2, 3, 0, 0x4], [-1, 3, 0, 0x5], [0, 1, 0, 0x0], [1, 3, 0, 0x6], [2, 3, 0, 0x7]];\n break;\n\n case 15:\n lines = [[-24, 7, 4, 0x7c], [-8, 6, 2, 0x3c], [-4, 5, 1, 0x1c], [-2, 4, 0, 0xc], [-1, 3, 0, 0x4], [0, 1, 0, 0x0], [1, 3, 0, 0x5], [2, 4, 0, 0xd], [3, 5, 1, 0x1d], [5, 6, 2, 0x3d], [9, 7, 4, 0x7d], [-25, 7, 32, 0x7e, \"lower\"], [25, 7, 32, 0x7f]];\n break;\n\n default:\n throw new Jbig2Error(\"standard table B.\".concat(number, \" does not exist\"));\n }\n\n for (var i = 0, ii = lines.length; i < ii; i++) {\n lines[i] = new HuffmanLine(lines[i]);\n }\n\n table = new HuffmanTable(lines, true);\n standardTablesCache[number] = table;\n return table;\n }\n\n function Reader(data, start, end) {\n this.data = data;\n this.start = start;\n this.end = end;\n this.position = start;\n this.shift = -1;\n this.currentByte = 0;\n }\n\n Reader.prototype = {\n readBit: function readBit() {\n if (this.shift < 0) {\n if (this.position >= this.end) {\n throw new Jbig2Error(\"end of data while reading bit\");\n }\n\n this.currentByte = this.data[this.position++];\n this.shift = 7;\n }\n\n var bit = this.currentByte >> this.shift & 1;\n this.shift--;\n return bit;\n },\n readBits: function readBits(numBits) {\n var result = 0,\n i;\n\n for (i = numBits - 1; i >= 0; i--) {\n result |= this.readBit() << i;\n }\n\n return result;\n },\n byteAlign: function byteAlign() {\n this.shift = -1;\n },\n next: function next() {\n if (this.position >= this.end) {\n return -1;\n }\n\n return this.data[this.position++];\n }\n };\n\n function getCustomHuffmanTable(index, referredTo, customTables) {\n var currentIndex = 0;\n\n for (var i = 0, ii = referredTo.length; i < ii; i++) {\n var table = customTables[referredTo[i]];\n\n if (table) {\n if (index === currentIndex) {\n return table;\n }\n\n currentIndex++;\n }\n }\n\n throw new Jbig2Error(\"can't find custom Huffman table\");\n }\n\n function getTextRegionHuffmanTables(textRegion, referredTo, customTables, numberOfSymbols, reader) {\n var codes = [];\n\n for (var i = 0; i <= 34; i++) {\n var codeLength = reader.readBits(4);\n codes.push(new HuffmanLine([i, codeLength, 0, 0]));\n }\n\n var runCodesTable = new HuffmanTable(codes, false);\n codes.length = 0;\n\n for (var _i3 = 0; _i3 < numberOfSymbols;) {\n var _codeLength = runCodesTable.decode(reader);\n\n if (_codeLength >= 32) {\n var repeatedLength = void 0,\n numberOfRepeats = void 0,\n j = void 0;\n\n switch (_codeLength) {\n case 32:\n if (_i3 === 0) {\n throw new Jbig2Error(\"no previous value in symbol ID table\");\n }\n\n numberOfRepeats = reader.readBits(2) + 3;\n repeatedLength = codes[_i3 - 1].prefixLength;\n break;\n\n case 33:\n numberOfRepeats = reader.readBits(3) + 3;\n repeatedLength = 0;\n break;\n\n case 34:\n numberOfRepeats = reader.readBits(7) + 11;\n repeatedLength = 0;\n break;\n\n default:\n throw new Jbig2Error(\"invalid code length in symbol ID table\");\n }\n\n for (j = 0; j < numberOfRepeats; j++) {\n codes.push(new HuffmanLine([_i3, repeatedLength, 0, 0]));\n _i3++;\n }\n } else {\n codes.push(new HuffmanLine([_i3, _codeLength, 0, 0]));\n _i3++;\n }\n }\n\n reader.byteAlign();\n var symbolIDTable = new HuffmanTable(codes, false);\n var 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\n case 3:\n tableFirstS = getCustomHuffmanTable(customIndex, referredTo, customTables);\n customIndex++;\n break;\n\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\n case 3:\n tableDeltaS = getCustomHuffmanTable(customIndex, referredTo, customTables);\n customIndex++;\n break;\n\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\n case 3:\n tableDeltaT = getCustomHuffmanTable(customIndex, referredTo, customTables);\n customIndex++;\n break;\n\n default:\n throw new Jbig2Error(\"invalid Huffman DT selector\");\n }\n\n if (textRegion.refinement) {\n throw new Jbig2Error(\"refinement with Huffman is not supported\");\n }\n\n return {\n symbolIDTable: symbolIDTable,\n tableFirstS: tableFirstS,\n tableDeltaS: tableDeltaS,\n tableDeltaT: tableDeltaT\n };\n }\n\n function getSymbolDictionaryHuffmanTables(dictionary, referredTo, customTables) {\n var customIndex = 0,\n tableDeltaHeight,\n tableDeltaWidth;\n\n switch (dictionary.huffmanDHSelector) {\n case 0:\n case 1:\n tableDeltaHeight = getStandardTable(dictionary.huffmanDHSelector + 4);\n break;\n\n case 3:\n tableDeltaHeight = getCustomHuffmanTable(customIndex, referredTo, customTables);\n customIndex++;\n break;\n\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\n case 3:\n tableDeltaWidth = getCustomHuffmanTable(customIndex, referredTo, customTables);\n customIndex++;\n break;\n\n default:\n throw new Jbig2Error(\"invalid Huffman DW selector\");\n }\n\n var tableBitmapSize, tableAggregateInstances;\n\n if (dictionary.bitmapSizeSelector) {\n tableBitmapSize = getCustomHuffmanTable(customIndex, referredTo, customTables);\n customIndex++;\n } else {\n tableBitmapSize = getStandardTable(1);\n }\n\n if (dictionary.aggregationInstancesSelector) {\n tableAggregateInstances = getCustomHuffmanTable(customIndex, referredTo, customTables);\n } else {\n tableAggregateInstances = getStandardTable(1);\n }\n\n return {\n tableDeltaHeight: tableDeltaHeight,\n tableDeltaWidth: tableDeltaWidth,\n tableBitmapSize: tableBitmapSize,\n tableAggregateInstances: tableAggregateInstances\n };\n }\n\n function readUncompressedBitmap(reader, width, height) {\n var bitmap = [];\n\n for (var y = 0; y < height; y++) {\n var row = new Uint8Array(width);\n bitmap.push(row);\n\n for (var x = 0; x < width; x++) {\n row[x] = reader.readBit();\n }\n\n reader.byteAlign();\n }\n\n return bitmap;\n }\n\n function decodeMMRBitmap(input, width, height, endOfBlock) {\n var params = {\n K: -1,\n Columns: width,\n Rows: height,\n BlackIs1: true,\n EndOfBlock: endOfBlock\n };\n var decoder = new _ccitt.CCITTFaxDecoder(input, params);\n var bitmap = [];\n var currentByte,\n eof = false;\n\n for (var y = 0; y < height; y++) {\n var row = new Uint8Array(width);\n bitmap.push(row);\n var shift = -1;\n\n for (var x = 0; x < width; x++) {\n if (shift < 0) {\n currentByte = decoder.readNextChar();\n\n if (currentByte === -1) {\n currentByte = 0;\n eof = true;\n }\n\n shift = 7;\n }\n\n row[x] = currentByte >> shift & 1;\n shift--;\n }\n }\n\n if (endOfBlock && !eof) {\n var lookForEOFLimit = 5;\n\n for (var i = 0; i < lookForEOFLimit; i++) {\n if (decoder.readNextChar() === -1) {\n break;\n }\n }\n }\n\n return bitmap;\n }\n\n function Jbig2Image() {}\n\n Jbig2Image.prototype = {\n parseChunks: function parseChunks(chunks) {\n return parseJbig2Chunks(chunks);\n },\n parse: function parse(data) {\n var _parseJbig = parseJbig2(data),\n imgData = _parseJbig.imgData,\n width = _parseJbig.width,\n height = _parseJbig.height;\n\n this.width = width;\n this.height = height;\n return imgData;\n }\n };\n return Jbig2Image;\n}();\n\nexports.Jbig2Image = Jbig2Image;\n\n/***/ }),\n/* 210 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ArithmeticDecoder = void 0;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar QeTable = [{\n qe: 0x5601,\n nmps: 1,\n nlps: 1,\n switchFlag: 1\n}, {\n qe: 0x3401,\n nmps: 2,\n nlps: 6,\n switchFlag: 0\n}, {\n qe: 0x1801,\n nmps: 3,\n nlps: 9,\n switchFlag: 0\n}, {\n qe: 0x0ac1,\n nmps: 4,\n nlps: 12,\n switchFlag: 0\n}, {\n qe: 0x0521,\n nmps: 5,\n nlps: 29,\n switchFlag: 0\n}, {\n qe: 0x0221,\n nmps: 38,\n nlps: 33,\n switchFlag: 0\n}, {\n qe: 0x5601,\n nmps: 7,\n nlps: 6,\n switchFlag: 1\n}, {\n qe: 0x5401,\n nmps: 8,\n nlps: 14,\n switchFlag: 0\n}, {\n qe: 0x4801,\n nmps: 9,\n nlps: 14,\n switchFlag: 0\n}, {\n qe: 0x3801,\n nmps: 10,\n nlps: 14,\n switchFlag: 0\n}, {\n qe: 0x3001,\n nmps: 11,\n nlps: 17,\n switchFlag: 0\n}, {\n qe: 0x2401,\n nmps: 12,\n nlps: 18,\n switchFlag: 0\n}, {\n qe: 0x1c01,\n nmps: 13,\n nlps: 20,\n switchFlag: 0\n}, {\n qe: 0x1601,\n nmps: 29,\n nlps: 21,\n switchFlag: 0\n}, {\n qe: 0x5601,\n nmps: 15,\n nlps: 14,\n switchFlag: 1\n}, {\n qe: 0x5401,\n nmps: 16,\n nlps: 14,\n switchFlag: 0\n}, {\n qe: 0x5101,\n nmps: 17,\n nlps: 15,\n switchFlag: 0\n}, {\n qe: 0x4801,\n nmps: 18,\n nlps: 16,\n switchFlag: 0\n}, {\n qe: 0x3801,\n nmps: 19,\n nlps: 17,\n switchFlag: 0\n}, {\n qe: 0x3401,\n nmps: 20,\n nlps: 18,\n switchFlag: 0\n}, {\n qe: 0x3001,\n nmps: 21,\n nlps: 19,\n switchFlag: 0\n}, {\n qe: 0x2801,\n nmps: 22,\n nlps: 19,\n switchFlag: 0\n}, {\n qe: 0x2401,\n nmps: 23,\n nlps: 20,\n switchFlag: 0\n}, {\n qe: 0x2201,\n nmps: 24,\n nlps: 21,\n switchFlag: 0\n}, {\n qe: 0x1c01,\n nmps: 25,\n nlps: 22,\n switchFlag: 0\n}, {\n qe: 0x1801,\n nmps: 26,\n nlps: 23,\n switchFlag: 0\n}, {\n qe: 0x1601,\n nmps: 27,\n nlps: 24,\n switchFlag: 0\n}, {\n qe: 0x1401,\n nmps: 28,\n nlps: 25,\n switchFlag: 0\n}, {\n qe: 0x1201,\n nmps: 29,\n nlps: 26,\n switchFlag: 0\n}, {\n qe: 0x1101,\n nmps: 30,\n nlps: 27,\n switchFlag: 0\n}, {\n qe: 0x0ac1,\n nmps: 31,\n nlps: 28,\n switchFlag: 0\n}, {\n qe: 0x09c1,\n nmps: 32,\n nlps: 29,\n switchFlag: 0\n}, {\n qe: 0x08a1,\n nmps: 33,\n nlps: 30,\n switchFlag: 0\n}, {\n qe: 0x0521,\n nmps: 34,\n nlps: 31,\n switchFlag: 0\n}, {\n qe: 0x0441,\n nmps: 35,\n nlps: 32,\n switchFlag: 0\n}, {\n qe: 0x02a1,\n nmps: 36,\n nlps: 33,\n switchFlag: 0\n}, {\n qe: 0x0221,\n nmps: 37,\n nlps: 34,\n switchFlag: 0\n}, {\n qe: 0x0141,\n nmps: 38,\n nlps: 35,\n switchFlag: 0\n}, {\n qe: 0x0111,\n nmps: 39,\n nlps: 36,\n switchFlag: 0\n}, {\n qe: 0x0085,\n nmps: 40,\n nlps: 37,\n switchFlag: 0\n}, {\n qe: 0x0049,\n nmps: 41,\n nlps: 38,\n switchFlag: 0\n}, {\n qe: 0x0025,\n nmps: 42,\n nlps: 39,\n switchFlag: 0\n}, {\n qe: 0x0015,\n nmps: 43,\n nlps: 40,\n switchFlag: 0\n}, {\n qe: 0x0009,\n nmps: 44,\n nlps: 41,\n switchFlag: 0\n}, {\n qe: 0x0005,\n nmps: 45,\n nlps: 42,\n switchFlag: 0\n}, {\n qe: 0x0001,\n nmps: 45,\n nlps: 43,\n switchFlag: 0\n}, {\n qe: 0x5601,\n nmps: 46,\n nlps: 46,\n switchFlag: 0\n}];\n\nvar ArithmeticDecoder = /*#__PURE__*/function () {\n function ArithmeticDecoder(data, start, end) {\n _classCallCheck(this, ArithmeticDecoder);\n\n this.data = data;\n this.bp = start;\n this.dataEnd = end;\n this.chigh = data[start];\n this.clow = 0;\n this.byteIn();\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 _createClass(ArithmeticDecoder, [{\n key: \"byteIn\",\n value: function byteIn() {\n var data = this.data;\n var 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\n if (this.clow > 0xffff) {\n this.chigh += this.clow >> 16;\n this.clow &= 0xffff;\n }\n }\n }, {\n key: \"readBit\",\n value: function readBit(contexts, pos) {\n var cx_index = contexts[pos] >> 1,\n cx_mps = contexts[pos] & 1;\n var qeTableIcx = QeTable[cx_index];\n var qeIcx = qeTableIcx.qe;\n var d;\n var a = this.a - qeIcx;\n\n if (this.chigh < qeIcx) {\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\n if (qeTableIcx.switchFlag === 1) {\n cx_mps = d;\n }\n\n cx_index = qeTableIcx.nlps;\n }\n } else {\n this.chigh -= qeIcx;\n\n if ((a & 0x8000) !== 0) {\n this.a = a;\n return cx_mps;\n }\n\n if (a < qeIcx) {\n d = 1 ^ cx_mps;\n\n if (qeTableIcx.switchFlag === 1) {\n cx_mps = d;\n }\n\n cx_index = qeTableIcx.nlps;\n } else {\n d = cx_mps;\n cx_index = qeTableIcx.nmps;\n }\n }\n\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\n this.a = a;\n contexts[pos] = cx_index << 1 | cx_mps;\n return d;\n }\n }]);\n\n return ArithmeticDecoder;\n}();\n\nexports.ArithmeticDecoder = ArithmeticDecoder;\n\n/***/ }),\n/* 211 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.JpegStream = void 0;\n\nvar _stream = __w_pdfjs_require__(205);\n\nvar _primitives = __w_pdfjs_require__(198);\n\nvar _jpg = __w_pdfjs_require__(212);\n\nvar _util = __w_pdfjs_require__(5);\n\nvar JpegStream = function JpegStreamClosure() {\n function JpegStream(stream, maybeLength, dict, params) {\n var ch;\n\n while ((ch = stream.getByte()) !== -1) {\n if (ch === 0xff) {\n stream.skip(-1);\n break;\n }\n }\n\n this.stream = stream;\n this.maybeLength = maybeLength;\n this.dict = dict;\n this.params = params;\n\n _stream.DecodeStream.call(this, maybeLength);\n }\n\n JpegStream.prototype = Object.create(_stream.DecodeStream.prototype);\n Object.defineProperty(JpegStream.prototype, \"bytes\", {\n get: function JpegStream_bytes() {\n return (0, _util.shadow)(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n },\n configurable: true\n });\n\n JpegStream.prototype.ensureBuffer = function (requested) {};\n\n JpegStream.prototype.readBlock = function () {\n if (this.eof) {\n return;\n }\n\n var jpegOptions = {\n decodeTransform: undefined,\n colorTransform: undefined\n };\n var decodeArr = this.dict.getArray(\"Decode\", \"D\");\n\n if (this.forceRGB && Array.isArray(decodeArr)) {\n var bitsPerComponent = this.dict.get(\"BitsPerComponent\") || 8;\n var decodeArrLength = decodeArr.length;\n var transform = new Int32Array(decodeArrLength);\n var transformNeeded = false;\n var maxValue = (1 << bitsPerComponent) - 1;\n\n for (var 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\n if (transform[i] !== 256 || transform[i + 1] !== 0) {\n transformNeeded = true;\n }\n }\n\n if (transformNeeded) {\n jpegOptions.decodeTransform = transform;\n }\n }\n\n if ((0, _primitives.isDict)(this.params)) {\n var colorTransform = this.params.get(\"ColorTransform\");\n\n if (Number.isInteger(colorTransform)) {\n jpegOptions.colorTransform = colorTransform;\n }\n }\n\n var jpegImage = new _jpg.JpegImage(jpegOptions);\n jpegImage.parse(this.bytes);\n var data = jpegImage.getData({\n width: this.drawWidth,\n height: this.drawHeight,\n forceRGB: this.forceRGB,\n isSourcePDF: true\n });\n this.buffer = data;\n this.bufferLength = data.length;\n this.eof = true;\n };\n\n return JpegStream;\n}();\n\nexports.JpegStream = JpegStream;\n\n/***/ }),\n/* 212 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.JpegImage = void 0;\n\nvar _util = __w_pdfjs_require__(5);\n\nvar _core_utils = __w_pdfjs_require__(201);\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar JpegError = /*#__PURE__*/function (_BaseException) {\n _inherits(JpegError, _BaseException);\n\n var _super = _createSuper(JpegError);\n\n function JpegError(msg) {\n _classCallCheck(this, JpegError);\n\n return _super.call(this, \"JPEG error: \".concat(msg));\n }\n\n return JpegError;\n}(_util.BaseException);\n\nvar DNLMarkerError = /*#__PURE__*/function (_BaseException2) {\n _inherits(DNLMarkerError, _BaseException2);\n\n var _super2 = _createSuper(DNLMarkerError);\n\n function DNLMarkerError(message, scanLines) {\n var _this;\n\n _classCallCheck(this, DNLMarkerError);\n\n _this = _super2.call(this, message);\n _this.scanLines = scanLines;\n return _this;\n }\n\n return DNLMarkerError;\n}(_util.BaseException);\n\nvar EOIMarkerError = /*#__PURE__*/function (_BaseException3) {\n _inherits(EOIMarkerError, _BaseException3);\n\n var _super3 = _createSuper(EOIMarkerError);\n\n function EOIMarkerError() {\n _classCallCheck(this, EOIMarkerError);\n\n return _super3.apply(this, arguments);\n }\n\n return EOIMarkerError;\n}(_util.BaseException);\n\nvar JpegImage = function JpegImageClosure() {\n var dctZigZag = new Uint8Array([0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5, 12, 19, 26, 33, 40, 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28, 35, 42, 49, 56, 57, 50, 43, 36, 29, 22, 15, 23, 30, 37, 44, 51, 58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63]);\n var dctCos1 = 4017;\n var dctSin1 = 799;\n var dctCos3 = 3406;\n var dctSin3 = 2276;\n var dctCos6 = 1567;\n var dctSin6 = 3784;\n var dctSqrt2 = 5793;\n var dctSqrt1d2 = 2896;\n\n function JpegImage() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$decodeTransform = _ref.decodeTransform,\n decodeTransform = _ref$decodeTransform === void 0 ? null : _ref$decodeTransform,\n _ref$colorTransform = _ref.colorTransform,\n colorTransform = _ref$colorTransform === void 0 ? -1 : _ref$colorTransform;\n\n this._decodeTransform = decodeTransform;\n this._colorTransform = colorTransform;\n }\n\n function buildHuffmanTable(codeLengths, values) {\n var k = 0,\n code = [],\n i,\n j,\n length = 16;\n\n while (length > 0 && !codeLengths[length - 1]) {\n length--;\n }\n\n code.push({\n children: [],\n index: 0\n });\n var p = code[0],\n q;\n\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\n while (p.index > 0) {\n p = code.pop();\n }\n\n p.index++;\n code.push(p);\n\n while (code.length <= i) {\n code.push(q = {\n children: [],\n index: 0\n });\n p.children[p.index] = q.children;\n p = q;\n }\n\n k++;\n }\n\n if (i + 1 < length) {\n code.push(q = {\n children: [],\n index: 0\n });\n p.children[p.index] = q.children;\n p = q;\n }\n }\n\n return code[0].children;\n }\n\n function getBlockBufferOffset(component, row, col) {\n return 64 * ((component.blocksPerLine + 1) * row + col);\n }\n\n function decodeScan(data, offset, frame, components, resetInterval, spectralStart, spectralEnd, successivePrev, successive) {\n var parseDNLMarker = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : false;\n var mcusPerLine = frame.mcusPerLine;\n var progressive = frame.progressive;\n var startOffset = offset;\n var bitsData = 0,\n bitsCount = 0;\n\n function readBit() {\n if (bitsCount > 0) {\n bitsCount--;\n return bitsData >> bitsCount & 1;\n }\n\n bitsData = data[offset++];\n\n if (bitsData === 0xff) {\n var nextByte = data[offset++];\n\n if (nextByte) {\n if (nextByte === 0xdc && parseDNLMarker) {\n offset += 2;\n var scanLines = (0, _core_utils.readUint16)(data, offset);\n offset += 2;\n\n if (scanLines > 0 && scanLines !== frame.scanLines) {\n throw new DNLMarkerError(\"Found DNL marker (0xFFDC) while parsing scan data\", scanLines);\n }\n } else if (nextByte === 0xd9) {\n if (parseDNLMarker) {\n var maybeScanLines = blockRow * 8;\n\n if (maybeScanLines > 0 && maybeScanLines < frame.scanLines / 10) {\n throw new DNLMarkerError(\"Found EOI marker (0xFFD9) while parsing scan data, \" + \"possibly caused by incorrect `scanLines` parameter\", maybeScanLines);\n }\n }\n\n throw new EOIMarkerError(\"Found EOI marker (0xFFD9) while parsing scan data\");\n }\n\n throw new JpegError(\"unexpected marker \".concat((bitsData << 8 | nextByte).toString(16)));\n }\n }\n\n bitsCount = 7;\n return bitsData >>> 7;\n }\n\n function decodeHuffman(tree) {\n var node = tree;\n\n while (true) {\n node = node[readBit()];\n\n switch (_typeof(node)) {\n case \"number\":\n return node;\n\n case \"object\":\n continue;\n }\n\n throw new JpegError(\"invalid huffman sequence\");\n }\n }\n\n function receive(length) {\n var n = 0;\n\n while (length > 0) {\n n = n << 1 | readBit();\n length--;\n }\n\n return n;\n }\n\n function receiveAndExtend(length) {\n if (length === 1) {\n return readBit() === 1 ? 1 : -1;\n }\n\n var n = receive(length);\n\n if (n >= 1 << length - 1) {\n return n;\n }\n\n return n + (-1 << length) + 1;\n }\n\n function decodeBaseline(component, blockOffset) {\n var t = decodeHuffman(component.huffmanTableDC);\n var diff = t === 0 ? 0 : receiveAndExtend(t);\n component.blockData[blockOffset] = component.pred += diff;\n var k = 1;\n\n while (k < 64) {\n var rs = decodeHuffman(component.huffmanTableAC);\n var s = rs & 15,\n r = rs >> 4;\n\n if (s === 0) {\n if (r < 15) {\n break;\n }\n\n k += 16;\n continue;\n }\n\n k += r;\n var z = dctZigZag[k];\n component.blockData[blockOffset + z] = receiveAndExtend(s);\n k++;\n }\n }\n\n function decodeDCFirst(component, blockOffset) {\n var t = decodeHuffman(component.huffmanTableDC);\n var diff = t === 0 ? 0 : receiveAndExtend(t) << successive;\n component.blockData[blockOffset] = component.pred += diff;\n }\n\n function decodeDCSuccessive(component, blockOffset) {\n component.blockData[blockOffset] |= readBit() << successive;\n }\n\n var eobrun = 0;\n\n function decodeACFirst(component, blockOffset) {\n if (eobrun > 0) {\n eobrun--;\n return;\n }\n\n var k = spectralStart,\n e = spectralEnd;\n\n while (k <= e) {\n var rs = decodeHuffman(component.huffmanTableAC);\n var s = rs & 15,\n r = rs >> 4;\n\n if (s === 0) {\n if (r < 15) {\n eobrun = receive(r) + (1 << r) - 1;\n break;\n }\n\n k += 16;\n continue;\n }\n\n k += r;\n var z = dctZigZag[k];\n component.blockData[blockOffset + z] = receiveAndExtend(s) * (1 << successive);\n k++;\n }\n }\n\n var successiveACState = 0,\n successiveACNextValue;\n\n function decodeACSuccessive(component, blockOffset) {\n var k = spectralStart;\n var e = spectralEnd;\n var r = 0;\n var s;\n var rs;\n\n while (k <= e) {\n var offsetZ = blockOffset + dctZigZag[k];\n var sign = component.blockData[offsetZ] < 0 ? -1 : 1;\n\n switch (successiveACState) {\n case 0:\n rs = decodeHuffman(component.huffmanTableAC);\n s = rs & 15;\n r = rs >> 4;\n\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\n successiveACNextValue = receiveAndExtend(s);\n successiveACState = r ? 2 : 3;\n }\n\n continue;\n\n case 1:\n case 2:\n if (component.blockData[offsetZ]) {\n component.blockData[offsetZ] += sign * (readBit() << successive);\n } else {\n r--;\n\n if (r === 0) {\n successiveACState = successiveACState === 2 ? 3 : 0;\n }\n }\n\n break;\n\n case 3:\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\n break;\n\n case 4:\n if (component.blockData[offsetZ]) {\n component.blockData[offsetZ] += sign * (readBit() << successive);\n }\n\n break;\n }\n\n k++;\n }\n\n if (successiveACState === 4) {\n eobrun--;\n\n if (eobrun === 0) {\n successiveACState = 0;\n }\n }\n }\n\n var blockRow = 0;\n\n function decodeMcu(component, decode, mcu, row, col) {\n var mcuRow = mcu / mcusPerLine | 0;\n var mcuCol = mcu % mcusPerLine;\n blockRow = mcuRow * component.v + row;\n var blockCol = mcuCol * component.h + col;\n var blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n decode(component, blockOffset);\n }\n\n function decodeBlock(component, decode, mcu) {\n blockRow = mcu / component.blocksPerLine | 0;\n var blockCol = mcu % component.blocksPerLine;\n var blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n decode(component, blockOffset);\n }\n\n var componentsLength = components.length;\n var component, i, j, k, n;\n var decodeFn;\n\n if (progressive) {\n if (spectralStart === 0) {\n decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive;\n } else {\n decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive;\n }\n } else {\n decodeFn = decodeBaseline;\n }\n\n var mcu = 0,\n fileMarker;\n var mcuExpected;\n\n if (componentsLength === 1) {\n mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn;\n } else {\n mcuExpected = mcusPerLine * frame.mcusPerColumn;\n }\n\n var h, v;\n\n while (mcu <= mcuExpected) {\n var mcuToRead = resetInterval ? Math.min(mcuExpected - mcu, resetInterval) : mcuExpected;\n\n if (mcuToRead > 0) {\n for (i = 0; i < componentsLength; i++) {\n components[i].pred = 0;\n }\n\n eobrun = 0;\n\n if (componentsLength === 1) {\n component = components[0];\n\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\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\n mcu++;\n }\n }\n }\n\n bitsCount = 0;\n fileMarker = findNextFileMarker(data, offset);\n\n if (!fileMarker) {\n break;\n }\n\n if (fileMarker.invalid) {\n var partialMsg = mcuToRead > 0 ? \"unexpected\" : \"excessive\";\n (0, _util.warn)(\"decodeScan - \".concat(partialMsg, \" MCU data, current marker is: \").concat(fileMarker.invalid));\n offset = fileMarker.offset;\n }\n\n if (fileMarker.marker >= 0xffd0 && fileMarker.marker <= 0xffd7) {\n offset += 2;\n } else {\n break;\n }\n }\n\n return offset - startOffset;\n }\n\n function quantizeAndInverse(component, blockBufferOffset, p) {\n var qt = component.quantizationTable,\n blockData = component.blockData;\n var v0, v1, v2, v3, v4, v5, v6, v7;\n var p0, p1, p2, p3, p4, p5, p6, p7;\n var t;\n\n if (!qt) {\n throw new JpegError(\"missing required Quantization Table.\");\n }\n\n for (var row = 0; row < 64; row += 8) {\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 p0 *= qt[row];\n\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\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 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 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 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 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 for (var col = 0; col < 8; ++col) {\n p0 = p[col];\n p1 = p[col + 8];\n p2 = p[col + 16];\n p3 = p[col + 24];\n p4 = p[col + 32];\n p5 = p[col + 40];\n p6 = p[col + 48];\n p7 = p[col + 56];\n\n if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n t = dctSqrt2 * p0 + 8192 >> 14;\n\n if (t < -2040) {\n t = 0;\n } else if (t >= 2024) {\n t = 255;\n } else {\n t = t + 2056 >> 4;\n }\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 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 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 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 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 if (p0 < 16) {\n p0 = 0;\n } else if (p0 >= 4080) {\n p0 = 255;\n } else {\n p0 >>= 4;\n }\n\n if (p1 < 16) {\n p1 = 0;\n } else if (p1 >= 4080) {\n p1 = 255;\n } else {\n p1 >>= 4;\n }\n\n if (p2 < 16) {\n p2 = 0;\n } else if (p2 >= 4080) {\n p2 = 255;\n } else {\n p2 >>= 4;\n }\n\n if (p3 < 16) {\n p3 = 0;\n } else if (p3 >= 4080) {\n p3 = 255;\n } else {\n p3 >>= 4;\n }\n\n if (p4 < 16) {\n p4 = 0;\n } else if (p4 >= 4080) {\n p4 = 255;\n } else {\n p4 >>= 4;\n }\n\n if (p5 < 16) {\n p5 = 0;\n } else if (p5 >= 4080) {\n p5 = 255;\n } else {\n p5 >>= 4;\n }\n\n if (p6 < 16) {\n p6 = 0;\n } else if (p6 >= 4080) {\n p6 = 255;\n } else {\n p6 >>= 4;\n }\n\n if (p7 < 16) {\n p7 = 0;\n } else if (p7 >= 4080) {\n p7 = 255;\n } else {\n p7 >>= 4;\n }\n\n blockData[blockBufferOffset + col] = p0;\n blockData[blockBufferOffset + col + 8] = p1;\n blockData[blockBufferOffset + col + 16] = p2;\n blockData[blockBufferOffset + col + 24] = p3;\n blockData[blockBufferOffset + col + 32] = p4;\n blockData[blockBufferOffset + col + 40] = p5;\n blockData[blockBufferOffset + col + 48] = p6;\n blockData[blockBufferOffset + col + 56] = p7;\n }\n }\n\n function buildComponentData(frame, component) {\n var blocksPerLine = component.blocksPerLine;\n var blocksPerColumn = component.blocksPerColumn;\n var computationBuffer = new Int16Array(64);\n\n for (var blockRow = 0; blockRow < blocksPerColumn; blockRow++) {\n for (var blockCol = 0; blockCol < blocksPerLine; blockCol++) {\n var offset = getBlockBufferOffset(component, blockRow, blockCol);\n quantizeAndInverse(component, offset, computationBuffer);\n }\n }\n\n return component.blockData;\n }\n\n function findNextFileMarker(data, currentPos) {\n var startPos = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : currentPos;\n var maxPos = data.length - 1;\n var newPos = startPos < currentPos ? startPos : currentPos;\n\n if (currentPos >= maxPos) {\n return null;\n }\n\n var currentMarker = (0, _core_utils.readUint16)(data, currentPos);\n\n if (currentMarker >= 0xffc0 && currentMarker <= 0xfffe) {\n return {\n invalid: null,\n marker: currentMarker,\n offset: currentPos\n };\n }\n\n var newMarker = (0, _core_utils.readUint16)(data, newPos);\n\n while (!(newMarker >= 0xffc0 && newMarker <= 0xfffe)) {\n if (++newPos >= maxPos) {\n return null;\n }\n\n newMarker = (0, _core_utils.readUint16)(data, newPos);\n }\n\n return {\n invalid: currentMarker.toString(16),\n marker: newMarker,\n offset: newPos\n };\n }\n\n JpegImage.prototype = {\n parse: function parse(data) {\n var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref2$dnlScanLines = _ref2.dnlScanLines,\n dnlScanLines = _ref2$dnlScanLines === void 0 ? null : _ref2$dnlScanLines;\n\n function readDataBlock() {\n var length = (0, _core_utils.readUint16)(data, offset);\n offset += 2;\n var endOffset = offset + length - 2;\n var fileMarker = findNextFileMarker(data, endOffset, offset);\n\n if (fileMarker && fileMarker.invalid) {\n (0, _util.warn)(\"readDataBlock - incorrect length, current marker is: \" + fileMarker.invalid);\n endOffset = fileMarker.offset;\n }\n\n var array = data.subarray(offset, endOffset);\n offset += array.length;\n return array;\n }\n\n function prepareComponents(frame) {\n var mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH);\n var mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV);\n\n for (var i = 0; i < frame.components.length; i++) {\n component = frame.components[i];\n var blocksPerLine = Math.ceil(Math.ceil(frame.samplesPerLine / 8) * component.h / frame.maxH);\n var blocksPerColumn = Math.ceil(Math.ceil(frame.scanLines / 8) * component.v / frame.maxV);\n var blocksPerLineForMcu = mcusPerLine * component.h;\n var blocksPerColumnForMcu = mcusPerColumn * component.v;\n var blocksBufferSize = 64 * blocksPerColumnForMcu * (blocksPerLineForMcu + 1);\n component.blockData = new Int16Array(blocksBufferSize);\n component.blocksPerLine = blocksPerLine;\n component.blocksPerColumn = blocksPerColumn;\n }\n\n frame.mcusPerLine = mcusPerLine;\n frame.mcusPerColumn = mcusPerColumn;\n }\n\n var offset = 0;\n var jfif = null;\n var adobe = null;\n var frame, resetInterval;\n var numSOSMarkers = 0;\n var quantizationTables = [];\n var huffmanTablesAC = [],\n huffmanTablesDC = [];\n var fileMarker = (0, _core_utils.readUint16)(data, offset);\n offset += 2;\n\n if (fileMarker !== 0xffd8) {\n throw new JpegError(\"SOI not found\");\n }\n\n fileMarker = (0, _core_utils.readUint16)(data, offset);\n offset += 2;\n\n markerLoop: while (fileMarker !== 0xffd9) {\n var i, j, l;\n\n switch (fileMarker) {\n case 0xffe0:\n case 0xffe1:\n case 0xffe2:\n case 0xffe3:\n case 0xffe4:\n case 0xffe5:\n case 0xffe6:\n case 0xffe7:\n case 0xffe8:\n case 0xffe9:\n case 0xffea:\n case 0xffeb:\n case 0xffec:\n case 0xffed:\n case 0xffee:\n case 0xffef:\n case 0xfffe:\n var appData = readDataBlock();\n\n if (fileMarker === 0xffe0) {\n if (appData[0] === 0x4a && appData[1] === 0x46 && appData[2] === 0x49 && appData[3] === 0x46 && appData[4] === 0) {\n jfif = {\n version: {\n major: appData[5],\n minor: appData[6]\n },\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(14, 14 + 3 * appData[12] * appData[13])\n };\n }\n }\n\n if (fileMarker === 0xffee) {\n if (appData[0] === 0x41 && appData[1] === 0x64 && appData[2] === 0x6f && appData[3] === 0x62 && appData[4] === 0x65) {\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\n break;\n\n case 0xffdb:\n var quantizationTablesLength = (0, _core_utils.readUint16)(data, offset);\n offset += 2;\n var quantizationTablesEnd = quantizationTablesLength + offset - 2;\n var z;\n\n while (offset < quantizationTablesEnd) {\n var quantizationTableSpec = data[offset++];\n var tableData = new Uint16Array(64);\n\n if (quantizationTableSpec >> 4 === 0) {\n for (j = 0; j < 64; j++) {\n z = dctZigZag[j];\n tableData[z] = data[offset++];\n }\n } else if (quantizationTableSpec >> 4 === 1) {\n for (j = 0; j < 64; j++) {\n z = dctZigZag[j];\n tableData[z] = (0, _core_utils.readUint16)(data, offset);\n offset += 2;\n }\n } else {\n throw new JpegError(\"DQT - invalid table spec\");\n }\n\n quantizationTables[quantizationTableSpec & 15] = tableData;\n }\n\n break;\n\n case 0xffc0:\n case 0xffc1:\n case 0xffc2:\n if (frame) {\n throw new JpegError(\"Only single frame JPEGs supported\");\n }\n\n offset += 2;\n frame = {};\n frame.extended = fileMarker === 0xffc1;\n frame.progressive = fileMarker === 0xffc2;\n frame.precision = data[offset++];\n var sofScanLines = (0, _core_utils.readUint16)(data, offset);\n offset += 2;\n frame.scanLines = dnlScanLines || sofScanLines;\n frame.samplesPerLine = (0, _core_utils.readUint16)(data, offset);\n offset += 2;\n frame.components = [];\n frame.componentIds = {};\n var componentsCount = data[offset++],\n componentId;\n var maxH = 0,\n maxV = 0;\n\n for (i = 0; i < componentsCount; i++) {\n componentId = data[offset];\n var h = data[offset + 1] >> 4;\n var v = data[offset + 1] & 15;\n\n if (maxH < h) {\n maxH = h;\n }\n\n if (maxV < v) {\n maxV = v;\n }\n\n var qId = data[offset + 2];\n l = frame.components.push({\n h: h,\n v: v,\n quantizationId: qId,\n quantizationTable: null\n });\n frame.componentIds[componentId] = l - 1;\n offset += 3;\n }\n\n frame.maxH = maxH;\n frame.maxV = maxV;\n prepareComponents(frame);\n break;\n\n case 0xffc4:\n var huffmanLength = (0, _core_utils.readUint16)(data, offset);\n offset += 2;\n\n for (i = 2; i < huffmanLength;) {\n var huffmanTableSpec = data[offset++];\n var codeLengths = new Uint8Array(16);\n var codeLengthSum = 0;\n\n for (j = 0; j < 16; j++, offset++) {\n codeLengthSum += codeLengths[j] = data[offset];\n }\n\n var huffmanValues = new Uint8Array(codeLengthSum);\n\n for (j = 0; j < codeLengthSum; j++, offset++) {\n huffmanValues[j] = data[offset];\n }\n\n i += 17 + codeLengthSum;\n (huffmanTableSpec >> 4 === 0 ? huffmanTablesDC : huffmanTablesAC)[huffmanTableSpec & 15] = buildHuffmanTable(codeLengths, huffmanValues);\n }\n\n break;\n\n case 0xffdd:\n offset += 2;\n resetInterval = (0, _core_utils.readUint16)(data, offset);\n offset += 2;\n break;\n\n case 0xffda:\n var parseDNLMarker = ++numSOSMarkers === 1 && !dnlScanLines;\n offset += 2;\n var selectorsCount = data[offset++];\n var components = [],\n component;\n\n for (i = 0; i < selectorsCount; i++) {\n var componentIndex = frame.componentIds[data[offset++]];\n component = frame.components[componentIndex];\n var tableSpec = data[offset++];\n component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4];\n component.huffmanTableAC = huffmanTablesAC[tableSpec & 15];\n components.push(component);\n }\n\n var spectralStart = data[offset++];\n var spectralEnd = data[offset++];\n var successiveApproximation = data[offset++];\n\n try {\n var processed = decodeScan(data, offset, frame, components, resetInterval, spectralStart, spectralEnd, successiveApproximation >> 4, successiveApproximation & 15, parseDNLMarker);\n offset += processed;\n } catch (ex) {\n if (ex instanceof DNLMarkerError) {\n (0, _util.warn)(\"\".concat(ex.message, \" -- attempting to re-parse the JPEG image.\"));\n return this.parse(data, {\n dnlScanLines: ex.scanLines\n });\n } else if (ex instanceof EOIMarkerError) {\n (0, _util.warn)(\"\".concat(ex.message, \" -- ignoring the rest of the image data.\"));\n break markerLoop;\n }\n\n throw ex;\n }\n\n break;\n\n case 0xffdc:\n offset += 4;\n break;\n\n case 0xffff:\n if (data[offset] !== 0xff) {\n offset--;\n }\n\n break;\n\n default:\n var nextFileMarker = findNextFileMarker(data, offset - 2, offset - 3);\n\n if (nextFileMarker && nextFileMarker.invalid) {\n (0, _util.warn)(\"JpegImage.parse - unexpected data, current marker is: \" + nextFileMarker.invalid);\n offset = nextFileMarker.offset;\n break;\n }\n\n if (offset >= data.length - 1) {\n (0, _util.warn)(\"JpegImage.parse - reached the end of the image data \" + \"without finding an EOI marker (0xFFD9).\");\n break markerLoop;\n }\n\n throw new JpegError(\"JpegImage.parse - unknown marker: \" + fileMarker.toString(16));\n }\n\n fileMarker = (0, _core_utils.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\n for (i = 0; i < frame.components.length; i++) {\n component = frame.components[i];\n var quantizationTable = quantizationTables[component.quantizationId];\n\n if (quantizationTable) {\n component.quantizationTable = quantizationTable;\n }\n\n this.components.push({\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\n this.numComponents = this.components.length;\n return undefined;\n },\n _getLinearizedBlockData: function _getLinearizedBlockData(width, height) {\n var isSourcePDF = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var scaleX = this.width / width,\n scaleY = this.height / height;\n var component, componentScaleX, componentScaleY, blocksPerScanline;\n var x, y, i, j, k;\n var index;\n var offset = 0;\n var output;\n var numComponents = this.components.length;\n var dataLength = width * height * numComponents;\n var data = new Uint8ClampedArray(dataLength);\n var xScaleBlockOffset = new Uint32Array(width);\n var mask3LSB = 0xfffffff8;\n var 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\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\n lastComponentScaleX = componentScaleX;\n }\n\n for (y = 0; y < height; y++) {\n j = 0 | y * componentScaleY;\n index = blocksPerScanline * (j & mask3LSB) | (j & 7) << 3;\n\n for (x = 0; x < width; x++) {\n data[offset] = output[index + xScaleBlockOffset[x]];\n offset += numComponents;\n }\n }\n }\n\n var transform = this._decodeTransform;\n\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\n return data;\n },\n\n get _isColorConversionNeeded() {\n if (this.adobe) {\n return !!this.adobe.transformCode;\n }\n\n if (this.numComponents === 3) {\n if (this._colorTransform === 0) {\n return false;\n }\n\n return true;\n }\n\n if (this._colorTransform === 1) {\n return true;\n }\n\n return false;\n },\n\n _convertYccToRgb: function convertYccToRgb(data) {\n var Y, Cb, Cr;\n\n for (var i = 0, length = data.length; i < length; i += 3) {\n Y = data[i];\n Cb = data[i + 1];\n Cr = data[i + 2];\n data[i] = Y - 179.456 + 1.402 * Cr;\n data[i + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr;\n data[i + 2] = Y - 226.816 + 1.772 * Cb;\n }\n\n return data;\n },\n _convertYcckToRgb: function convertYcckToRgb(data) {\n var Y, Cb, Cr, k;\n var offset = 0;\n\n for (var i = 0, length = data.length; i < length; i += 4) {\n Y = data[i];\n Cb = data[i + 1];\n Cr = data[i + 2];\n k = data[i + 3];\n data[offset++] = -122.67195406894 + Cb * (-6.60635669420364e-5 * Cb + 0.000437130475926232 * Cr - 5.4080610064599e-5 * Y + 0.00048449797120281 * k - 0.154362151871126) + Cr * (-0.000957964378445773 * Cr + 0.000817076911346625 * Y - 0.00477271405408747 * k + 1.53380253221734) + Y * (0.000961250184130688 * Y - 0.00266257332283933 * k + 0.48357088451265) + k * (-0.000336197177618394 * k + 0.484791561490776);\n data[offset++] = 107.268039397724 + Cb * (2.19927104525741e-5 * Cb - 0.000640992018297945 * Cr + 0.000659397001245577 * Y + 0.000426105652938837 * k - 0.176491792462875) + Cr * (-0.000778269941513683 * Cr + 0.00130872261408275 * Y + 0.000770482631801132 * k - 0.151051492775562) + Y * (0.00126935368114843 * Y - 0.00265090189010898 * k + 0.25802910206845) + k * (-0.000318913117588328 * k - 0.213742400323665);\n data[offset++] = -20.810012546947 + Cb * (-0.000570115196973677 * Cb - 2.63409051004589e-5 * Cr + 0.0020741088115012 * Y - 0.00288260236853442 * k + 0.814272968359295) + Cr * (-1.53496057440975e-5 * Cr - 0.000132689043961446 * Y + 0.000560833691242812 * k - 0.195152027534049) + Y * (0.00174418132927582 * Y - 0.00255243321439347 * k + 0.116935020465145) + k * (-0.000343531996510555 * k + 0.24165260232407);\n }\n\n return data.subarray(0, offset);\n },\n _convertYcckToCmyk: function convertYcckToCmyk(data) {\n var Y, Cb, Cr;\n\n for (var i = 0, length = data.length; i < length; i += 4) {\n Y = data[i];\n Cb = data[i + 1];\n Cr = data[i + 2];\n data[i] = 434.456 - Y - 1.402 * Cr;\n data[i + 1] = 119.541 - Y + 0.344 * Cb + 0.714 * Cr;\n data[i + 2] = 481.816 - Y - 1.772 * Cb;\n }\n\n return data;\n },\n _convertCmykToRgb: function convertCmykToRgb(data) {\n var c, m, y, k;\n var offset = 0;\n\n for (var i = 0, length = data.length; i < length; i += 4) {\n c = data[i];\n m = data[i + 1];\n y = data[i + 2];\n k = data[i + 3];\n data[offset++] = 255 + c * (-0.00006747147073602441 * c + 0.0008379262121013727 * m + 0.0002894718188643294 * y + 0.003264231057537806 * k - 1.1185611867203937) + m * (0.000026374107616089405 * m - 0.00008626949158638572 * y - 0.0002748769067499491 * k - 0.02155688794978967) + y * (-0.00003878099212869363 * y - 0.0003267808279485286 * k + 0.0686742238595345) - k * (0.0003361971776183937 * k + 0.7430659151342254);\n data[offset++] = 255 + c * (0.00013596372813588848 * c + 0.000924537132573585 * m + 0.00010567359618683593 * y + 0.0004791864687436512 * k - 0.3109689587515875) + m * (-0.00023545346108370344 * m + 0.0002702845253534714 * y + 0.0020200308977307156 * k - 0.7488052167015494) + y * (0.00006834815998235662 * y + 0.00015168452363460973 * k - 0.09751927774728933) - k * (0.00031891311758832814 * k + 0.7364883807733168);\n data[offset++] = 255 + c * (0.000013598650411385307 * c + 0.00012423956175490851 * m + 0.0004751985097583589 * y - 0.0000036729317476630422 * k - 0.05562186980264034) + m * (0.00016141380598724676 * m + 0.0009692239130725186 * y + 0.0007782692450036253 * k - 0.44015232367526463) + y * (5.068882914068769e-7 * y + 0.0017778369011375071 * k - 0.7591454649749609) - k * (0.0003435319965105553 * k + 0.7063770186160144);\n }\n\n return data.subarray(0, offset);\n },\n getData: function getData(_ref3) {\n var width = _ref3.width,\n height = _ref3.height,\n _ref3$forceRGB = _ref3.forceRGB,\n forceRGB = _ref3$forceRGB === void 0 ? false : _ref3$forceRGB,\n _ref3$isSourcePDF = _ref3.isSourcePDF,\n isSourcePDF = _ref3$isSourcePDF === void 0 ? false : _ref3$isSourcePDF;\n\n if (this.numComponents > 4) {\n throw new JpegError(\"Unsupported color mode\");\n }\n\n var data = this._getLinearizedBlockData(width, height, isSourcePDF);\n\n if (this.numComponents === 1 && forceRGB) {\n var dataLength = data.length;\n var rgbData = new Uint8ClampedArray(dataLength * 3);\n var offset = 0;\n\n for (var i = 0; i < dataLength; i++) {\n var grayColor = data[i];\n rgbData[offset++] = grayColor;\n rgbData[offset++] = grayColor;\n rgbData[offset++] = grayColor;\n }\n\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\n return this._convertYcckToCmyk(data);\n } else if (forceRGB) {\n return this._convertCmykToRgb(data);\n }\n }\n\n return data;\n }\n };\n return JpegImage;\n}();\n\nexports.JpegImage = JpegImage;\n\n/***/ }),\n/* 213 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.JpxStream = void 0;\n\nvar _stream = __w_pdfjs_require__(205);\n\nvar _jpx = __w_pdfjs_require__(214);\n\nvar _util = __w_pdfjs_require__(5);\n\nvar JpxStream = function JpxStreamClosure() {\n function JpxStream(stream, maybeLength, dict, params) {\n this.stream = stream;\n this.maybeLength = maybeLength;\n this.dict = dict;\n this.params = params;\n\n _stream.DecodeStream.call(this, maybeLength);\n }\n\n JpxStream.prototype = Object.create(_stream.DecodeStream.prototype);\n Object.defineProperty(JpxStream.prototype, \"bytes\", {\n get: function JpxStream_bytes() {\n return (0, _util.shadow)(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n },\n configurable: true\n });\n\n JpxStream.prototype.ensureBuffer = function (requested) {};\n\n JpxStream.prototype.readBlock = function () {\n if (this.eof) {\n return;\n }\n\n var jpxImage = new _jpx.JpxImage();\n jpxImage.parse(this.bytes);\n var width = jpxImage.width;\n var height = jpxImage.height;\n var componentsCount = jpxImage.componentsCount;\n var tileCount = jpxImage.tiles.length;\n\n if (tileCount === 1) {\n this.buffer = jpxImage.tiles[0].items;\n } else {\n var data = new Uint8ClampedArray(width * height * componentsCount);\n\n for (var k = 0; k < tileCount; k++) {\n var tileComponents = jpxImage.tiles[k];\n var tileWidth = tileComponents.width;\n var tileHeight = tileComponents.height;\n var tileLeft = tileComponents.left;\n var tileTop = tileComponents.top;\n var src = tileComponents.items;\n var srcPosition = 0;\n var dataPosition = (width * tileTop + tileLeft) * componentsCount;\n var imgRowSize = width * componentsCount;\n var tileRowSize = tileWidth * componentsCount;\n\n for (var j = 0; j < tileHeight; j++) {\n var rowBytes = src.subarray(srcPosition, srcPosition + tileRowSize);\n data.set(rowBytes, dataPosition);\n srcPosition += tileRowSize;\n dataPosition += imgRowSize;\n }\n }\n\n this.buffer = data;\n }\n\n this.bufferLength = this.buffer.length;\n this.eof = true;\n };\n\n return JpxStream;\n}();\n\nexports.JpxStream = JpxStream;\n\n/***/ }),\n/* 214 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.JpxImage = void 0;\n\nvar _util = __w_pdfjs_require__(5);\n\nvar _core_utils = __w_pdfjs_require__(201);\n\nvar _arithmetic_decoder = __w_pdfjs_require__(210);\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar JpxError = /*#__PURE__*/function (_BaseException) {\n _inherits(JpxError, _BaseException);\n\n var _super = _createSuper(JpxError);\n\n function JpxError(msg) {\n _classCallCheck(this, JpxError);\n\n return _super.call(this, \"JPX error: \".concat(msg));\n }\n\n return JpxError;\n}(_util.BaseException);\n\nvar JpxImage = function JpxImageClosure() {\n var SubbandsGainLog2 = {\n LL: 0,\n LH: 1,\n HL: 1,\n HH: 2\n };\n\n function JpxImage() {\n this.failOnCorruptedImage = false;\n }\n\n JpxImage.prototype = {\n parse: function JpxImage_parse(data) {\n var head = (0, _core_utils.readUint16)(data, 0);\n\n if (head === 0xff4f) {\n this.parseCodestream(data, 0, data.length);\n return;\n }\n\n var position = 0,\n length = data.length;\n\n while (position < length) {\n var headerSize = 8;\n var lbox = (0, _core_utils.readUint32)(data, position);\n var tbox = (0, _core_utils.readUint32)(data, position + 4);\n position += headerSize;\n\n if (lbox === 1) {\n lbox = (0, _core_utils.readUint32)(data, position) * 4294967296 + (0, _core_utils.readUint32)(data, position + 4);\n position += 8;\n headerSize += 8;\n }\n\n if (lbox === 0) {\n lbox = length - position + headerSize;\n }\n\n if (lbox < headerSize) {\n throw new JpxError(\"Invalid box field size\");\n }\n\n var dataLength = lbox - headerSize;\n var jumpDataLength = true;\n\n switch (tbox) {\n case 0x6a703268:\n jumpDataLength = false;\n break;\n\n case 0x636f6c72:\n var method = data[position];\n\n if (method === 1) {\n var colorspace = (0, _core_utils.readUint32)(data, position + 3);\n\n switch (colorspace) {\n case 16:\n case 17:\n case 18:\n break;\n\n default:\n (0, _util.warn)(\"Unknown colorspace \" + colorspace);\n break;\n }\n } else if (method === 2) {\n (0, _util.info)(\"ICC profile not supported\");\n }\n\n break;\n\n case 0x6a703263:\n this.parseCodestream(data, position, position + dataLength);\n break;\n\n case 0x6a502020:\n if ((0, _core_utils.readUint32)(data, position) !== 0x0d0a870a) {\n (0, _util.warn)(\"Invalid JP2 signature\");\n }\n\n break;\n\n case 0x6a501a1a:\n case 0x66747970:\n case 0x72726571:\n case 0x72657320:\n case 0x69686472:\n break;\n\n default:\n var headerType = String.fromCharCode(tbox >> 24 & 0xff, tbox >> 16 & 0xff, tbox >> 8 & 0xff, tbox & 0xff);\n (0, _util.warn)(\"Unsupported header type \" + tbox + \" (\" + headerType + \")\");\n break;\n }\n\n if (jumpDataLength) {\n position += dataLength;\n }\n }\n },\n parseImageProperties: function JpxImage_parseImageProperties(stream) {\n var newByte = stream.getByte();\n\n while (newByte >= 0) {\n var oldByte = newByte;\n newByte = stream.getByte();\n var code = oldByte << 8 | newByte;\n\n if (code === 0xff51) {\n stream.skip(4);\n var Xsiz = stream.getInt32() >>> 0;\n var Ysiz = stream.getInt32() >>> 0;\n var XOsiz = stream.getInt32() >>> 0;\n var YOsiz = stream.getInt32() >>> 0;\n stream.skip(16);\n var Csiz = stream.getUint16();\n this.width = Xsiz - XOsiz;\n this.height = Ysiz - YOsiz;\n this.componentsCount = Csiz;\n this.bitsPerComponent = 8;\n return;\n }\n }\n\n throw new JpxError(\"No size marker found in JPX stream\");\n },\n parseCodestream: function JpxImage_parseCodestream(data, start, end) {\n var context = {};\n var doNotRecover = false;\n\n try {\n var position = start;\n\n while (position + 1 < end) {\n var code = (0, _core_utils.readUint16)(data, position);\n position += 2;\n var length = 0,\n j,\n sqcd,\n spqcds,\n spqcdSize,\n scalarExpounded,\n tile;\n\n switch (code) {\n case 0xff4f:\n context.mainHeader = true;\n break;\n\n case 0xffd9:\n break;\n\n case 0xff51:\n length = (0, _core_utils.readUint16)(data, position);\n var siz = {};\n siz.Xsiz = (0, _core_utils.readUint32)(data, position + 4);\n siz.Ysiz = (0, _core_utils.readUint32)(data, position + 8);\n siz.XOsiz = (0, _core_utils.readUint32)(data, position + 12);\n siz.YOsiz = (0, _core_utils.readUint32)(data, position + 16);\n siz.XTsiz = (0, _core_utils.readUint32)(data, position + 20);\n siz.YTsiz = (0, _core_utils.readUint32)(data, position + 24);\n siz.XTOsiz = (0, _core_utils.readUint32)(data, position + 28);\n siz.YTOsiz = (0, _core_utils.readUint32)(data, position + 32);\n var componentsCount = (0, _core_utils.readUint16)(data, position + 36);\n siz.Csiz = componentsCount;\n var components = [];\n j = position + 38;\n\n for (var i = 0; i < componentsCount; i++) {\n var component = {\n precision: (data[j] & 0x7f) + 1,\n isSigned: !!(data[j] & 0x80),\n XRsiz: data[j + 1],\n YRsiz: data[j + 2]\n };\n j += 3;\n calculateComponentDimensions(component, siz);\n components.push(component);\n }\n\n context.SIZ = siz;\n context.components = components;\n calculateTileGrids(context, components);\n context.QCC = [];\n context.COC = [];\n break;\n\n case 0xff5c:\n length = (0, _core_utils.readUint16)(data, position);\n var qcd = {};\n j = position + 2;\n sqcd = data[j++];\n\n switch (sqcd & 0x1f) {\n case 0:\n spqcdSize = 8;\n scalarExpounded = true;\n break;\n\n case 1:\n spqcdSize = 16;\n scalarExpounded = false;\n break;\n\n case 2:\n spqcdSize = 16;\n scalarExpounded = true;\n break;\n\n default:\n throw new Error(\"Invalid SQcd value \" + sqcd);\n }\n\n qcd.noQuantization = spqcdSize === 8;\n qcd.scalarExpounded = scalarExpounded;\n qcd.guardBits = sqcd >> 5;\n spqcds = [];\n\n while (j < length + position) {\n var spqcd = {};\n\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\n spqcds.push(spqcd);\n }\n\n qcd.SPqcds = spqcds;\n\n if (context.mainHeader) {\n context.QCD = qcd;\n } else {\n context.currentTile.QCD = qcd;\n context.currentTile.QCC = [];\n }\n\n break;\n\n case 0xff5d:\n length = (0, _core_utils.readUint16)(data, position);\n var qcc = {};\n j = position + 2;\n var cqcc;\n\n if (context.SIZ.Csiz < 257) {\n cqcc = data[j++];\n } else {\n cqcc = (0, _core_utils.readUint16)(data, j);\n j += 2;\n }\n\n sqcd = data[j++];\n\n switch (sqcd & 0x1f) {\n case 0:\n spqcdSize = 8;\n scalarExpounded = true;\n break;\n\n case 1:\n spqcdSize = 16;\n scalarExpounded = false;\n break;\n\n case 2:\n spqcdSize = 16;\n scalarExpounded = true;\n break;\n\n default:\n throw new Error(\"Invalid SQcd value \" + sqcd);\n }\n\n qcc.noQuantization = spqcdSize === 8;\n qcc.scalarExpounded = scalarExpounded;\n qcc.guardBits = sqcd >> 5;\n spqcds = [];\n\n while (j < length + position) {\n spqcd = {};\n\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\n spqcds.push(spqcd);\n }\n\n qcc.SPqcds = spqcds;\n\n if (context.mainHeader) {\n context.QCC[cqcc] = qcc;\n } else {\n context.currentTile.QCC[cqcc] = qcc;\n }\n\n break;\n\n case 0xff52:\n length = (0, _core_utils.readUint16)(data, position);\n var cod = {};\n j = position + 2;\n var scod = data[j++];\n cod.entropyCoderWithCustomPrecincts = !!(scod & 1);\n cod.sopMarkerUsed = !!(scod & 2);\n cod.ephMarkerUsed = !!(scod & 4);\n cod.progressionOrder = data[j++];\n cod.layersCount = (0, _core_utils.readUint16)(data, j);\n j += 2;\n cod.multipleComponentTransform = data[j++];\n cod.decompositionLevelsCount = data[j++];\n cod.xcb = (data[j++] & 0xf) + 2;\n cod.ycb = (data[j++] & 0xf) + 2;\n var blockStyle = data[j++];\n cod.selectiveArithmeticCodingBypass = !!(blockStyle & 1);\n cod.resetContextProbabilities = !!(blockStyle & 2);\n cod.terminationOnEachCodingPass = !!(blockStyle & 4);\n cod.verticallyStripe = !!(blockStyle & 8);\n cod.predictableTermination = !!(blockStyle & 16);\n cod.segmentationSymbolUsed = !!(blockStyle & 32);\n cod.reversibleTransformation = data[j++];\n\n if (cod.entropyCoderWithCustomPrecincts) {\n var precinctsSizes = [];\n\n while (j < length + position) {\n var precinctsSize = data[j++];\n precinctsSizes.push({\n PPx: precinctsSize & 0xf,\n PPy: precinctsSize >> 4\n });\n }\n\n cod.precinctsSizes = precinctsSizes;\n }\n\n var unsupported = [];\n\n if (cod.selectiveArithmeticCodingBypass) {\n unsupported.push(\"selectiveArithmeticCodingBypass\");\n }\n\n if (cod.resetContextProbabilities) {\n unsupported.push(\"resetContextProbabilities\");\n }\n\n if (cod.terminationOnEachCodingPass) {\n unsupported.push(\"terminationOnEachCodingPass\");\n }\n\n if (cod.verticallyStripe) {\n unsupported.push(\"verticallyStripe\");\n }\n\n if (cod.predictableTermination) {\n unsupported.push(\"predictableTermination\");\n }\n\n if (unsupported.length > 0) {\n doNotRecover = true;\n throw new Error(\"Unsupported COD options (\" + unsupported.join(\", \") + \")\");\n }\n\n if (context.mainHeader) {\n context.COD = cod;\n } else {\n context.currentTile.COD = cod;\n context.currentTile.COC = [];\n }\n\n break;\n\n case 0xff90:\n length = (0, _core_utils.readUint16)(data, position);\n tile = {};\n tile.index = (0, _core_utils.readUint16)(data, position + 2);\n tile.length = (0, _core_utils.readUint32)(data, position + 4);\n tile.dataEnd = tile.length + position - 2;\n tile.partIndex = data[position + 8];\n tile.partsCount = data[position + 9];\n context.mainHeader = false;\n\n if (tile.partIndex === 0) {\n tile.COD = context.COD;\n tile.COC = context.COC.slice(0);\n tile.QCD = context.QCD;\n tile.QCC = context.QCC.slice(0);\n }\n\n context.currentTile = tile;\n break;\n\n case 0xff93:\n tile = context.currentTile;\n\n if (tile.partIndex === 0) {\n initializeTile(context, tile.index);\n buildPackets(context);\n }\n\n length = tile.dataEnd - position;\n parseTilePackets(context, data, position, length);\n break;\n\n case 0xff55:\n case 0xff57:\n case 0xff58:\n case 0xff64:\n length = (0, _core_utils.readUint16)(data, position);\n break;\n\n case 0xff53:\n throw new Error(\"Codestream code 0xFF53 (COC) is not implemented\");\n\n default:\n throw new Error(\"Unknown codestream code: \" + code.toString(16));\n }\n\n position += length;\n }\n } catch (e) {\n if (doNotRecover || this.failOnCorruptedImage) {\n throw new JpxError(e.message);\n } else {\n (0, _util.warn)(\"JPX: Trying to recover from: \" + e.message);\n }\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\n function calculateComponentDimensions(component, siz) {\n component.x0 = Math.ceil(siz.XOsiz / component.XRsiz);\n component.x1 = Math.ceil(siz.Xsiz / component.XRsiz);\n component.y0 = Math.ceil(siz.YOsiz / component.YRsiz);\n component.y1 = Math.ceil(siz.Ysiz / component.YRsiz);\n component.width = component.x1 - component.x0;\n component.height = component.y1 - component.y0;\n }\n\n function calculateTileGrids(context, components) {\n var siz = context.SIZ;\n var tile,\n tiles = [];\n var numXtiles = Math.ceil((siz.Xsiz - siz.XTOsiz) / siz.XTsiz);\n var numYtiles = Math.ceil((siz.Ysiz - siz.YTOsiz) / siz.YTsiz);\n\n for (var q = 0; q < numYtiles; q++) {\n for (var p = 0; p < numXtiles; p++) {\n tile = {};\n tile.tx0 = Math.max(siz.XTOsiz + p * siz.XTsiz, siz.XOsiz);\n tile.ty0 = Math.max(siz.YTOsiz + q * siz.YTsiz, siz.YOsiz);\n tile.tx1 = Math.min(siz.XTOsiz + (p + 1) * siz.XTsiz, siz.Xsiz);\n tile.ty1 = Math.min(siz.YTOsiz + (q + 1) * siz.YTsiz, siz.Ysiz);\n tile.width = tile.tx1 - tile.tx0;\n tile.height = tile.ty1 - tile.ty0;\n tile.components = [];\n tiles.push(tile);\n }\n }\n\n context.tiles = tiles;\n var componentsCount = siz.Csiz;\n\n for (var i = 0, ii = componentsCount; i < ii; i++) {\n var component = components[i];\n\n for (var j = 0, jj = tiles.length; j < jj; j++) {\n var tileComponent = {};\n tile = tiles[j];\n tileComponent.tcx0 = Math.ceil(tile.tx0 / component.XRsiz);\n tileComponent.tcy0 = Math.ceil(tile.ty0 / component.YRsiz);\n tileComponent.tcx1 = Math.ceil(tile.tx1 / component.XRsiz);\n tileComponent.tcy1 = Math.ceil(tile.ty1 / component.YRsiz);\n tileComponent.width = tileComponent.tcx1 - tileComponent.tcx0;\n tileComponent.height = tileComponent.tcy1 - tileComponent.tcy0;\n tile.components[i] = tileComponent;\n }\n }\n }\n\n function getBlocksDimensions(context, component, r) {\n var codOrCoc = component.codingStyleParameters;\n var result = {};\n\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\n result.xcb_ = r > 0 ? Math.min(codOrCoc.xcb, result.PPx - 1) : Math.min(codOrCoc.xcb, result.PPx);\n result.ycb_ = r > 0 ? Math.min(codOrCoc.ycb, result.PPy - 1) : Math.min(codOrCoc.ycb, result.PPy);\n return result;\n }\n\n function buildPrecincts(context, resolution, dimensions) {\n var precinctWidth = 1 << dimensions.PPx;\n var precinctHeight = 1 << dimensions.PPy;\n var isZeroRes = resolution.resLevel === 0;\n var precinctWidthInSubband = 1 << dimensions.PPx + (isZeroRes ? 0 : -1);\n var precinctHeightInSubband = 1 << dimensions.PPy + (isZeroRes ? 0 : -1);\n var numprecinctswide = resolution.trx1 > resolution.trx0 ? Math.ceil(resolution.trx1 / precinctWidth) - Math.floor(resolution.trx0 / precinctWidth) : 0;\n var numprecinctshigh = resolution.try1 > resolution.try0 ? Math.ceil(resolution.try1 / precinctHeight) - Math.floor(resolution.try0 / precinctHeight) : 0;\n var numprecincts = numprecinctswide * numprecinctshigh;\n resolution.precinctParameters = {\n precinctWidth: precinctWidth,\n precinctHeight: precinctHeight,\n numprecinctswide: numprecinctswide,\n numprecinctshigh: numprecinctshigh,\n numprecincts: numprecincts,\n precinctWidthInSubband: precinctWidthInSubband,\n precinctHeightInSubband: precinctHeightInSubband\n };\n }\n\n function buildCodeblocks(context, subband, dimensions) {\n var xcb_ = dimensions.xcb_;\n var ycb_ = dimensions.ycb_;\n var codeblockWidth = 1 << xcb_;\n var codeblockHeight = 1 << ycb_;\n var cbx0 = subband.tbx0 >> xcb_;\n var cby0 = subband.tby0 >> ycb_;\n var cbx1 = subband.tbx1 + codeblockWidth - 1 >> xcb_;\n var cby1 = subband.tby1 + codeblockHeight - 1 >> ycb_;\n var precinctParameters = subband.resolution.precinctParameters;\n var codeblocks = [];\n var precincts = [];\n var i, j, codeblock, precinctNumber;\n\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 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 var pi = Math.floor((codeblock.tbx0_ - subband.tbx0) / precinctParameters.precinctWidthInSubband);\n var pj = Math.floor((codeblock.tby0_ - subband.tby0) / precinctParameters.precinctHeightInSubband);\n precinctNumber = pi + pj * precinctParameters.numprecinctswide;\n codeblock.precinctNumber = precinctNumber;\n codeblock.subbandType = subband.type;\n codeblock.Lblock = 3;\n\n if (codeblock.tbx1_ <= codeblock.tbx0_ || codeblock.tby1_ <= codeblock.tby0_) {\n continue;\n }\n\n codeblocks.push(codeblock);\n var precinct = precincts[precinctNumber];\n\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\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\n codeblock.precinct = precinct;\n }\n }\n\n subband.codeblockParameters = {\n codeblockWidth: xcb_,\n codeblockHeight: ycb_,\n numcodeblockwide: cbx1 - cbx0 + 1,\n numcodeblockhigh: cby1 - cby0 + 1\n };\n subband.codeblocks = codeblocks;\n subband.precincts = precincts;\n }\n\n function createPacket(resolution, precinctNumber, layerNumber) {\n var precinctCodeblocks = [];\n var subbands = resolution.subbands;\n\n for (var i = 0, ii = subbands.length; i < ii; i++) {\n var subband = subbands[i];\n var codeblocks = subband.codeblocks;\n\n for (var j = 0, jj = codeblocks.length; j < jj; j++) {\n var codeblock = codeblocks[j];\n\n if (codeblock.precinctNumber !== precinctNumber) {\n continue;\n }\n\n precinctCodeblocks.push(codeblock);\n }\n }\n\n return {\n layerNumber: layerNumber,\n codeblocks: precinctCodeblocks\n };\n }\n\n function LayerResolutionComponentPositionIterator(context) {\n var siz = context.SIZ;\n var tileIndex = context.currentTile.index;\n var tile = context.tiles[tileIndex];\n var layersCount = tile.codingStyleDefaultParameters.layersCount;\n var componentsCount = siz.Csiz;\n var maxDecompositionLevelsCount = 0;\n\n for (var q = 0; q < componentsCount; q++) {\n maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, tile.components[q].codingStyleParameters.decompositionLevelsCount);\n }\n\n var l = 0,\n r = 0,\n i = 0,\n k = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n for (; l < layersCount; l++) {\n for (; r <= maxDecompositionLevelsCount; r++) {\n for (; i < componentsCount; i++) {\n var component = tile.components[i];\n\n if (r > component.codingStyleParameters.decompositionLevelsCount) {\n continue;\n }\n\n var resolution = component.resolutions[r];\n var numprecincts = resolution.precinctParameters.numprecincts;\n\n for (; k < numprecincts;) {\n var packet = createPacket(resolution, k, l);\n k++;\n return packet;\n }\n\n k = 0;\n }\n\n i = 0;\n }\n\n r = 0;\n }\n\n throw new JpxError(\"Out of packets\");\n };\n }\n\n function ResolutionLayerComponentPositionIterator(context) {\n var siz = context.SIZ;\n var tileIndex = context.currentTile.index;\n var tile = context.tiles[tileIndex];\n var layersCount = tile.codingStyleDefaultParameters.layersCount;\n var componentsCount = siz.Csiz;\n var maxDecompositionLevelsCount = 0;\n\n for (var q = 0; q < componentsCount; q++) {\n maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, tile.components[q].codingStyleParameters.decompositionLevelsCount);\n }\n\n var r = 0,\n l = 0,\n i = 0,\n k = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n for (; r <= maxDecompositionLevelsCount; r++) {\n for (; l < layersCount; l++) {\n for (; i < componentsCount; i++) {\n var component = tile.components[i];\n\n if (r > component.codingStyleParameters.decompositionLevelsCount) {\n continue;\n }\n\n var resolution = component.resolutions[r];\n var numprecincts = resolution.precinctParameters.numprecincts;\n\n for (; k < numprecincts;) {\n var packet = createPacket(resolution, k, l);\n k++;\n return packet;\n }\n\n k = 0;\n }\n\n i = 0;\n }\n\n l = 0;\n }\n\n throw new JpxError(\"Out of packets\");\n };\n }\n\n function ResolutionPositionComponentLayerIterator(context) {\n var siz = context.SIZ;\n var tileIndex = context.currentTile.index;\n var tile = context.tiles[tileIndex];\n var layersCount = tile.codingStyleDefaultParameters.layersCount;\n var componentsCount = siz.Csiz;\n var l, r, c, p;\n var maxDecompositionLevelsCount = 0;\n\n for (c = 0; c < componentsCount; c++) {\n var component = tile.components[c];\n maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, component.codingStyleParameters.decompositionLevelsCount);\n }\n\n var maxNumPrecinctsInLevel = new Int32Array(maxDecompositionLevelsCount + 1);\n\n for (r = 0; r <= maxDecompositionLevelsCount; ++r) {\n var maxNumPrecincts = 0;\n\n for (c = 0; c < componentsCount; ++c) {\n var resolutions = tile.components[c].resolutions;\n\n if (r < resolutions.length) {\n maxNumPrecincts = Math.max(maxNumPrecincts, resolutions[r].precinctParameters.numprecincts);\n }\n }\n\n maxNumPrecinctsInLevel[r] = maxNumPrecincts;\n }\n\n l = 0;\n r = 0;\n c = 0;\n p = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n for (; r <= maxDecompositionLevelsCount; r++) {\n for (; p < maxNumPrecinctsInLevel[r]; p++) {\n for (; c < componentsCount; c++) {\n var _component = tile.components[c];\n\n if (r > _component.codingStyleParameters.decompositionLevelsCount) {\n continue;\n }\n\n var resolution = _component.resolutions[r];\n var numprecincts = resolution.precinctParameters.numprecincts;\n\n if (p >= numprecincts) {\n continue;\n }\n\n for (; l < layersCount;) {\n var packet = createPacket(resolution, p, l);\n l++;\n return packet;\n }\n\n l = 0;\n }\n\n c = 0;\n }\n\n p = 0;\n }\n\n throw new JpxError(\"Out of packets\");\n };\n }\n\n function PositionComponentResolutionLayerIterator(context) {\n var siz = context.SIZ;\n var tileIndex = context.currentTile.index;\n var tile = context.tiles[tileIndex];\n var layersCount = tile.codingStyleDefaultParameters.layersCount;\n var componentsCount = siz.Csiz;\n var precinctsSizes = getPrecinctSizesInImageScale(tile);\n var precinctsIterationSizes = precinctsSizes;\n var l = 0,\n r = 0,\n c = 0,\n px = 0,\n py = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n for (; px < precinctsIterationSizes.maxNumWide; px++) {\n for (; c < componentsCount; c++) {\n var component = tile.components[c];\n var decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount;\n\n for (; r <= decompositionLevelsCount; r++) {\n var resolution = component.resolutions[r];\n var sizeInImageScale = precinctsSizes.components[c].resolutions[r];\n var k = getPrecinctIndexIfExist(px, py, sizeInImageScale, precinctsIterationSizes, resolution);\n\n if (k === null) {\n continue;\n }\n\n for (; l < layersCount;) {\n var packet = createPacket(resolution, k, l);\n l++;\n return packet;\n }\n\n l = 0;\n }\n\n r = 0;\n }\n\n c = 0;\n }\n\n px = 0;\n }\n\n throw new JpxError(\"Out of packets\");\n };\n }\n\n function ComponentPositionResolutionLayerIterator(context) {\n var siz = context.SIZ;\n var tileIndex = context.currentTile.index;\n var tile = context.tiles[tileIndex];\n var layersCount = tile.codingStyleDefaultParameters.layersCount;\n var componentsCount = siz.Csiz;\n var precinctsSizes = getPrecinctSizesInImageScale(tile);\n var l = 0,\n r = 0,\n c = 0,\n px = 0,\n py = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n for (; c < componentsCount; ++c) {\n var component = tile.components[c];\n var precinctsIterationSizes = precinctsSizes.components[c];\n var decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount;\n\n for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n for (; px < precinctsIterationSizes.maxNumWide; px++) {\n for (; r <= decompositionLevelsCount; r++) {\n var resolution = component.resolutions[r];\n var sizeInImageScale = precinctsIterationSizes.resolutions[r];\n var k = getPrecinctIndexIfExist(px, py, sizeInImageScale, precinctsIterationSizes, resolution);\n\n if (k === null) {\n continue;\n }\n\n for (; l < layersCount;) {\n var packet = createPacket(resolution, k, l);\n l++;\n return packet;\n }\n\n l = 0;\n }\n\n r = 0;\n }\n\n px = 0;\n }\n\n py = 0;\n }\n\n throw new JpxError(\"Out of packets\");\n };\n }\n\n function getPrecinctIndexIfExist(pxIndex, pyIndex, sizeInImageScale, precinctIterationSizes, resolution) {\n var posX = pxIndex * precinctIterationSizes.minWidth;\n var posY = pyIndex * precinctIterationSizes.minHeight;\n\n if (posX % sizeInImageScale.width !== 0 || posY % sizeInImageScale.height !== 0) {\n return null;\n }\n\n var startPrecinctRowIndex = posY / sizeInImageScale.width * resolution.precinctParameters.numprecinctswide;\n return posX / sizeInImageScale.height + startPrecinctRowIndex;\n }\n\n function getPrecinctSizesInImageScale(tile) {\n var componentsCount = tile.components.length;\n var minWidth = Number.MAX_VALUE;\n var minHeight = Number.MAX_VALUE;\n var maxNumWide = 0;\n var maxNumHigh = 0;\n var sizePerComponent = new Array(componentsCount);\n\n for (var c = 0; c < componentsCount; c++) {\n var component = tile.components[c];\n var decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount;\n var sizePerResolution = new Array(decompositionLevelsCount + 1);\n var minWidthCurrentComponent = Number.MAX_VALUE;\n var minHeightCurrentComponent = Number.MAX_VALUE;\n var maxNumWideCurrentComponent = 0;\n var maxNumHighCurrentComponent = 0;\n var scale = 1;\n\n for (var r = decompositionLevelsCount; r >= 0; --r) {\n var resolution = component.resolutions[r];\n var widthCurrentResolution = scale * resolution.precinctParameters.precinctWidth;\n var heightCurrentResolution = scale * resolution.precinctParameters.precinctHeight;\n minWidthCurrentComponent = Math.min(minWidthCurrentComponent, widthCurrentResolution);\n minHeightCurrentComponent = Math.min(minHeightCurrentComponent, heightCurrentResolution);\n maxNumWideCurrentComponent = Math.max(maxNumWideCurrentComponent, resolution.precinctParameters.numprecinctswide);\n maxNumHighCurrentComponent = Math.max(maxNumHighCurrentComponent, resolution.precinctParameters.numprecinctshigh);\n sizePerResolution[r] = {\n width: widthCurrentResolution,\n height: heightCurrentResolution\n };\n scale <<= 1;\n }\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\n return {\n components: sizePerComponent,\n minWidth: minWidth,\n minHeight: minHeight,\n maxNumWide: maxNumWide,\n maxNumHigh: maxNumHigh\n };\n }\n\n function buildPackets(context) {\n var siz = context.SIZ;\n var tileIndex = context.currentTile.index;\n var tile = context.tiles[tileIndex];\n var componentsCount = siz.Csiz;\n\n for (var c = 0; c < componentsCount; c++) {\n var component = tile.components[c];\n var decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount;\n var resolutions = [];\n var subbands = [];\n\n for (var r = 0; r <= decompositionLevelsCount; r++) {\n var blocksDimensions = getBlocksDimensions(context, component, r);\n var resolution = {};\n var scale = 1 << decompositionLevelsCount - r;\n resolution.trx0 = Math.ceil(component.tcx0 / scale);\n resolution.try0 = Math.ceil(component.tcy0 / scale);\n resolution.trx1 = Math.ceil(component.tcx1 / scale);\n resolution.try1 = Math.ceil(component.tcy1 / scale);\n resolution.resLevel = r;\n buildPrecincts(context, resolution, blocksDimensions);\n resolutions.push(resolution);\n var subband;\n\n if (r === 0) {\n subband = {};\n subband.type = \"LL\";\n subband.tbx0 = Math.ceil(component.tcx0 / scale);\n subband.tby0 = Math.ceil(component.tcy0 / scale);\n subband.tbx1 = Math.ceil(component.tcx1 / scale);\n subband.tby1 = Math.ceil(component.tcy1 / scale);\n subband.resolution = resolution;\n buildCodeblocks(context, subband, blocksDimensions);\n subbands.push(subband);\n resolution.subbands = [subband];\n } else {\n var bscale = 1 << decompositionLevelsCount - r + 1;\n var resolutionSubbands = [];\n 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 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 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 resolution.subbands = resolutionSubbands;\n }\n }\n\n component.resolutions = resolutions;\n component.subbands = subbands;\n }\n\n var progressionOrder = tile.codingStyleDefaultParameters.progressionOrder;\n\n switch (progressionOrder) {\n case 0:\n tile.packetsIterator = new LayerResolutionComponentPositionIterator(context);\n break;\n\n case 1:\n tile.packetsIterator = new ResolutionLayerComponentPositionIterator(context);\n break;\n\n case 2:\n tile.packetsIterator = new ResolutionPositionComponentLayerIterator(context);\n break;\n\n case 3:\n tile.packetsIterator = new PositionComponentResolutionLayerIterator(context);\n break;\n\n case 4:\n tile.packetsIterator = new ComponentPositionResolutionLayerIterator(context);\n break;\n\n default:\n throw new JpxError(\"Unsupported progression order \".concat(progressionOrder));\n }\n }\n\n function parseTilePackets(context, data, offset, dataLength) {\n var position = 0;\n var buffer,\n bufferSize = 0,\n skipNextBit = false;\n\n function readBits(count) {\n while (bufferSize < count) {\n var b = data[offset + position];\n position++;\n\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\n if (b === 0xff) {\n skipNextBit = true;\n }\n }\n\n bufferSize -= count;\n return buffer >>> bufferSize & (1 << count) - 1;\n }\n\n function skipMarkerIfEqual(value) {\n if (data[offset + position - 1] === 0xff && data[offset + position] === value) {\n skipBytes(1);\n return true;\n } else if (data[offset + position] === 0xff && data[offset + position + 1] === value) {\n skipBytes(2);\n return true;\n }\n\n return false;\n }\n\n function skipBytes(count) {\n position += count;\n }\n\n function alignToByte() {\n bufferSize = 0;\n\n if (skipNextBit) {\n position++;\n skipNextBit = false;\n }\n }\n\n function readCodingpasses() {\n if (readBits(1) === 0) {\n return 1;\n }\n\n if (readBits(1) === 0) {\n return 2;\n }\n\n var value = readBits(2);\n\n if (value < 3) {\n return value + 3;\n }\n\n value = readBits(5);\n\n if (value < 31) {\n return value + 6;\n }\n\n value = readBits(7);\n return value + 37;\n }\n\n var tileIndex = context.currentTile.index;\n var tile = context.tiles[tileIndex];\n var sopMarkerUsed = context.COD.sopMarkerUsed;\n var ephMarkerUsed = context.COD.ephMarkerUsed;\n var packetsIterator = tile.packetsIterator;\n\n while (position < dataLength) {\n alignToByte();\n\n if (sopMarkerUsed && skipMarkerIfEqual(0x91)) {\n skipBytes(4);\n }\n\n var packet = packetsIterator.nextPacket();\n\n if (!readBits(1)) {\n continue;\n }\n\n var layerNumber = packet.layerNumber;\n var queue = [],\n codeblock;\n\n for (var i = 0, ii = packet.codeblocks.length; i < ii; i++) {\n codeblock = packet.codeblocks[i];\n var precinct = codeblock.precinct;\n var codeblockColumn = codeblock.cbx - precinct.cbxMin;\n var codeblockRow = codeblock.cby - precinct.cbyMin;\n var codeblockIncluded = false;\n var firstTimeInclusion = false;\n var valueReady;\n\n if (codeblock.included !== undefined) {\n codeblockIncluded = !!readBits(1);\n } else {\n precinct = codeblock.precinct;\n var inclusionTree, zeroBitPlanesTree;\n\n if (precinct.inclusionTree !== undefined) {\n inclusionTree = precinct.inclusionTree;\n } else {\n var width = precinct.cbxMax - precinct.cbxMin + 1;\n var height = precinct.cbyMax - precinct.cbyMin + 1;\n inclusionTree = new InclusionTree(width, height, layerNumber);\n zeroBitPlanesTree = new TagTree(width, height);\n precinct.inclusionTree = inclusionTree;\n precinct.zeroBitPlanesTree = zeroBitPlanesTree;\n }\n\n if (inclusionTree.reset(codeblockColumn, codeblockRow, layerNumber)) {\n while (true) {\n if (readBits(1)) {\n valueReady = !inclusionTree.nextLevel();\n\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\n if (!codeblockIncluded) {\n continue;\n }\n\n if (firstTimeInclusion) {\n zeroBitPlanesTree = precinct.zeroBitPlanesTree;\n zeroBitPlanesTree.reset(codeblockColumn, codeblockRow);\n\n while (true) {\n if (readBits(1)) {\n valueReady = !zeroBitPlanesTree.nextLevel();\n\n if (valueReady) {\n break;\n }\n } else {\n zeroBitPlanesTree.incrementValue();\n }\n }\n\n codeblock.zeroBitPlanes = zeroBitPlanesTree.value;\n }\n\n var codingpasses = readCodingpasses();\n\n while (readBits(1)) {\n codeblock.Lblock++;\n }\n\n var codingpassesLog2 = (0, _core_utils.log2)(codingpasses);\n var bits = (codingpasses < 1 << codingpassesLog2 ? codingpassesLog2 - 1 : codingpassesLog2) + codeblock.Lblock;\n var codedDataLength = readBits(bits);\n queue.push({\n codeblock: codeblock,\n codingpasses: codingpasses,\n dataLength: codedDataLength\n });\n }\n\n alignToByte();\n\n if (ephMarkerUsed) {\n skipMarkerIfEqual(0x92);\n }\n\n while (queue.length > 0) {\n var packetItem = queue.shift();\n codeblock = packetItem.codeblock;\n\n if (codeblock.data === undefined) {\n codeblock.data = [];\n }\n\n codeblock.data.push({\n data: data,\n start: offset + position,\n end: offset + position + packetItem.dataLength,\n codingpasses: packetItem.codingpasses\n });\n position += packetItem.dataLength;\n }\n }\n\n return position;\n }\n\n function copyCoefficients(coefficients, levelWidth, levelHeight, subband, delta, mb, reversible, segmentationSymbolUsed) {\n var x0 = subband.tbx0;\n var y0 = subband.tby0;\n var width = subband.tbx1 - subband.tbx0;\n var codeblocks = subband.codeblocks;\n var right = subband.type.charAt(0) === \"H\" ? 1 : 0;\n var bottom = subband.type.charAt(1) === \"H\" ? levelWidth : 0;\n\n for (var i = 0, ii = codeblocks.length; i < ii; ++i) {\n var codeblock = codeblocks[i];\n var blockWidth = codeblock.tbx1_ - codeblock.tbx0_;\n var blockHeight = codeblock.tby1_ - codeblock.tby0_;\n\n if (blockWidth === 0 || blockHeight === 0) {\n continue;\n }\n\n if (codeblock.data === undefined) {\n continue;\n }\n\n var bitModel, currentCodingpassType;\n bitModel = new BitModel(blockWidth, blockHeight, codeblock.subbandType, codeblock.zeroBitPlanes, mb);\n currentCodingpassType = 2;\n var data = codeblock.data,\n totalLength = 0,\n codingpasses = 0;\n var j, jj, dataItem;\n\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\n var encodedData = new Uint8Array(totalLength);\n var position = 0;\n\n for (j = 0, jj = data.length; j < jj; j++) {\n dataItem = data[j];\n var chunk = dataItem.data.subarray(dataItem.start, dataItem.end);\n encodedData.set(chunk, position);\n position += chunk.length;\n }\n\n var decoder = new _arithmetic_decoder.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\n case 1:\n bitModel.runMagnitudeRefinementPass();\n break;\n\n case 2:\n bitModel.runCleanupPass();\n\n if (segmentationSymbolUsed) {\n bitModel.checkSegmentationSymbol();\n }\n\n break;\n }\n\n currentCodingpassType = (currentCodingpassType + 1) % 3;\n }\n\n var offset = codeblock.tbx0_ - x0 + (codeblock.tby0_ - y0) * width;\n var sign = bitModel.coefficentsSign;\n var magnitude = bitModel.coefficentsMagnitude;\n var bitsDecoded = bitModel.bitsDecoded;\n var magnitudeCorrection = reversible ? 0 : 0.5;\n var k, n, nb;\n position = 0;\n var interleave = subband.type !== \"LL\";\n\n for (j = 0; j < blockHeight; j++) {\n var row = offset / width | 0;\n var levelOffset = 2 * row * (levelWidth - width) + right + bottom;\n\n for (k = 0; k < blockWidth; k++) {\n n = magnitude[position];\n\n if (n !== 0) {\n n = (n + magnitudeCorrection) * delta;\n\n if (sign[position] !== 0) {\n n = -n;\n }\n\n nb = bitsDecoded[position];\n var pos = interleave ? levelOffset + (offset << 1) : offset;\n\n if (reversible && nb >= mb) {\n coefficients[pos] = n;\n } else {\n coefficients[pos] = n * (1 << mb - nb);\n }\n }\n\n offset++;\n position++;\n }\n\n offset += width - blockWidth;\n }\n }\n }\n\n function transformTile(context, tile, c) {\n var component = tile.components[c];\n var codingStyleParameters = component.codingStyleParameters;\n var quantizationParameters = component.quantizationParameters;\n var decompositionLevelsCount = codingStyleParameters.decompositionLevelsCount;\n var spqcds = quantizationParameters.SPqcds;\n var scalarExpounded = quantizationParameters.scalarExpounded;\n var guardBits = quantizationParameters.guardBits;\n var segmentationSymbolUsed = codingStyleParameters.segmentationSymbolUsed;\n var precision = context.components[c].precision;\n var reversible = codingStyleParameters.reversibleTransformation;\n var transform = reversible ? new ReversibleTransform() : new IrreversibleTransform();\n var subbandCoefficients = [];\n var b = 0;\n\n for (var i = 0; i <= decompositionLevelsCount; i++) {\n var resolution = component.resolutions[i];\n var width = resolution.trx1 - resolution.trx0;\n var height = resolution.try1 - resolution.try0;\n var coefficients = new Float32Array(width * height);\n\n for (var j = 0, jj = resolution.subbands.length; j < jj; j++) {\n var mu, epsilon;\n\n if (!scalarExpounded) {\n mu = spqcds[0].mu;\n epsilon = spqcds[0].epsilon + (i > 0 ? 1 - i : 0);\n } else {\n mu = spqcds[b].mu;\n epsilon = spqcds[b].epsilon;\n b++;\n }\n\n var subband = resolution.subbands[j];\n var gainLog2 = SubbandsGainLog2[subband.type];\n var delta = reversible ? 1 : Math.pow(2, precision + gainLog2 - epsilon) * (1 + mu / 2048);\n var mb = guardBits + epsilon - 1;\n copyCoefficients(coefficients, width, height, subband, delta, mb, reversible, segmentationSymbolUsed);\n }\n\n subbandCoefficients.push({\n width: width,\n height: height,\n items: coefficients\n });\n }\n\n var result = transform.calculate(subbandCoefficients, component.tcx0, component.tcy0);\n return {\n left: component.tcx0,\n top: component.tcy0,\n width: result.width,\n height: result.height,\n items: result.items\n };\n }\n\n function transformComponents(context) {\n var siz = context.SIZ;\n var components = context.components;\n var componentsCount = siz.Csiz;\n var resultImages = [];\n\n for (var i = 0, ii = context.tiles.length; i < ii; i++) {\n var tile = context.tiles[i];\n var transformedTiles = [];\n var c;\n\n for (c = 0; c < componentsCount; c++) {\n transformedTiles[c] = transformTile(context, tile, c);\n }\n\n var tile0 = transformedTiles[0];\n var out = new Uint8ClampedArray(tile0.items.length * componentsCount);\n var result = {\n left: tile0.left,\n top: tile0.top,\n width: tile0.width,\n height: tile0.height,\n items: out\n };\n var shift, offset;\n var pos = 0,\n j,\n jj,\n y0,\n y1,\n y2;\n\n if (tile.codingStyleDefaultParameters.multipleComponentTransform) {\n var fourComponents = componentsCount === 4;\n var y0items = transformedTiles[0].items;\n var y1items = transformedTiles[1].items;\n var y2items = transformedTiles[2].items;\n var y3items = fourComponents ? transformedTiles[3].items : null;\n shift = components[0].precision - 8;\n offset = (128 << shift) + 0.5;\n var component0 = tile.components[0];\n var alpha01 = componentsCount - 3;\n jj = y0items.length;\n\n if (!component0.codingStyleParameters.reversibleTransformation) {\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 for (j = 0; j < jj; j++, pos += alpha01) {\n y0 = y0items[j] + offset;\n y1 = y1items[j];\n y2 = y2items[j];\n var g = y0 - (y2 + y1 >> 2);\n out[pos++] = g + y2 >> shift;\n out[pos++] = g >> shift;\n out[pos++] = g + y1 >> shift;\n }\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 for (c = 0; c < componentsCount; c++) {\n var items = transformedTiles[c].items;\n shift = components[c].precision - 8;\n offset = (128 << shift) + 0.5;\n\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\n resultImages.push(result);\n }\n\n return resultImages;\n }\n\n function initializeTile(context, tileIndex) {\n var siz = context.SIZ;\n var componentsCount = siz.Csiz;\n var tile = context.tiles[tileIndex];\n\n for (var c = 0; c < componentsCount; c++) {\n var component = tile.components[c];\n var qcdOrQcc = context.currentTile.QCC[c] !== undefined ? context.currentTile.QCC[c] : context.currentTile.QCD;\n component.quantizationParameters = qcdOrQcc;\n var codOrCoc = context.currentTile.COC[c] !== undefined ? context.currentTile.COC[c] : context.currentTile.COD;\n component.codingStyleParameters = codOrCoc;\n }\n\n tile.codingStyleDefaultParameters = context.currentTile.COD;\n }\n\n var TagTree = function TagTreeClosure() {\n function TagTree(width, height) {\n var levelsLength = (0, _core_utils.log2)(Math.max(width, height)) + 1;\n this.levels = [];\n\n for (var i = 0; i < levelsLength; i++) {\n var level = {\n width: width,\n height: 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 TagTree.prototype = {\n reset: function TagTree_reset(i, j) {\n var currentLevel = 0,\n value = 0,\n level;\n\n while (currentLevel < this.levels.length) {\n level = this.levels[currentLevel];\n var index = i + j * level.width;\n\n if (level.items[index] !== undefined) {\n value = level.items[index];\n break;\n }\n\n level.index = index;\n i >>= 1;\n j >>= 1;\n currentLevel++;\n }\n\n currentLevel--;\n level = this.levels[currentLevel];\n level.items[level.index] = value;\n this.currentLevel = currentLevel;\n delete this.value;\n },\n incrementValue: function TagTree_incrementValue() {\n var level = this.levels[this.currentLevel];\n level.items[level.index]++;\n },\n nextLevel: function TagTree_nextLevel() {\n var currentLevel = this.currentLevel;\n var level = this.levels[currentLevel];\n var value = level.items[level.index];\n currentLevel--;\n\n if (currentLevel < 0) {\n this.value = value;\n return false;\n }\n\n this.currentLevel = currentLevel;\n level = this.levels[currentLevel];\n level.items[level.index] = value;\n return true;\n }\n };\n return TagTree;\n }();\n\n var InclusionTree = function InclusionTreeClosure() {\n function InclusionTree(width, height, defaultValue) {\n var levelsLength = (0, _core_utils.log2)(Math.max(width, height)) + 1;\n this.levels = [];\n\n for (var i = 0; i < levelsLength; i++) {\n var items = new Uint8Array(width * height);\n\n for (var j = 0, jj = items.length; j < jj; j++) {\n items[j] = defaultValue;\n }\n\n var level = {\n width: width,\n height: height,\n items: items\n };\n this.levels.push(level);\n width = Math.ceil(width / 2);\n height = Math.ceil(height / 2);\n }\n }\n\n InclusionTree.prototype = {\n reset: function InclusionTree_reset(i, j, stopValue) {\n var currentLevel = 0;\n\n while (currentLevel < this.levels.length) {\n var level = this.levels[currentLevel];\n var index = i + j * level.width;\n level.index = index;\n var value = level.items[index];\n\n if (value === 0xff) {\n break;\n }\n\n if (value > stopValue) {\n this.currentLevel = currentLevel;\n this.propagateValues();\n return false;\n }\n\n i >>= 1;\n j >>= 1;\n currentLevel++;\n }\n\n this.currentLevel = currentLevel - 1;\n return true;\n },\n incrementValue: function InclusionTree_incrementValue(stopValue) {\n var level = this.levels[this.currentLevel];\n level.items[level.index] = stopValue + 1;\n this.propagateValues();\n },\n propagateValues: function InclusionTree_propagateValues() {\n var levelIndex = this.currentLevel;\n var level = this.levels[levelIndex];\n var currentValue = level.items[level.index];\n\n while (--levelIndex >= 0) {\n level = this.levels[levelIndex];\n level.items[level.index] = currentValue;\n }\n },\n nextLevel: function InclusionTree_nextLevel() {\n var currentLevel = this.currentLevel;\n var level = this.levels[currentLevel];\n var value = level.items[level.index];\n level.items[level.index] = 0xff;\n currentLevel--;\n\n if (currentLevel < 0) {\n return false;\n }\n\n this.currentLevel = currentLevel;\n level = this.levels[currentLevel];\n level.items[level.index] = value;\n return true;\n }\n };\n return InclusionTree;\n }();\n\n var BitModel = function BitModelClosure() {\n var UNIFORM_CONTEXT = 17;\n var RUNLENGTH_CONTEXT = 18;\n var LLAndLHContextsLabel = new Uint8Array([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, 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, 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 var HLContextLabel = new Uint8Array([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, 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, 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 var HHContextLabel = new Uint8Array([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, 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, 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 function BitModel(width, height, subband, zeroBitPlanes, mb) {\n this.width = width;\n this.height = height;\n var contextLabelTable;\n\n if (subband === \"HH\") {\n contextLabelTable = HHContextLabel;\n } else if (subband === \"HL\") {\n contextLabelTable = HLContextLabel;\n } else {\n contextLabelTable = LLAndLHContextsLabel;\n }\n\n this.contextLabelTable = contextLabelTable;\n var coefficientCount = width * height;\n this.neighborsSignificance = new Uint8Array(coefficientCount);\n this.coefficentsSign = new Uint8Array(coefficientCount);\n var coefficentsMagnitude;\n\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\n this.coefficentsMagnitude = coefficentsMagnitude;\n this.processingFlags = new Uint8Array(coefficientCount);\n var bitsDecoded = new Uint8Array(coefficientCount);\n\n if (zeroBitPlanes !== 0) {\n for (var i = 0; i < coefficientCount; i++) {\n bitsDecoded[i] = zeroBitPlanes;\n }\n }\n\n this.bitsDecoded = bitsDecoded;\n this.reset();\n }\n\n BitModel.prototype = {\n setDecoder: function BitModel_setDecoder(decoder) {\n this.decoder = decoder;\n },\n reset: function BitModel_reset() {\n this.contexts = new Int8Array(19);\n this.contexts[0] = 4 << 1 | 0;\n this.contexts[UNIFORM_CONTEXT] = 46 << 1 | 0;\n this.contexts[RUNLENGTH_CONTEXT] = 3 << 1 | 0;\n },\n setNeighborsSignificance: function BitModel_setNeighborsSignificance(row, column, index) {\n var neighborsSignificance = this.neighborsSignificance;\n var width = this.width,\n height = this.height;\n var left = column > 0;\n var right = column + 1 < width;\n var i;\n\n if (row > 0) {\n i = index - width;\n\n if (left) {\n neighborsSignificance[i - 1] += 0x10;\n }\n\n if (right) {\n neighborsSignificance[i + 1] += 0x10;\n }\n\n neighborsSignificance[i] += 0x04;\n }\n\n if (row + 1 < height) {\n i = index + width;\n\n if (left) {\n neighborsSignificance[i - 1] += 0x10;\n }\n\n if (right) {\n neighborsSignificance[i + 1] += 0x10;\n }\n\n neighborsSignificance[i] += 0x04;\n }\n\n if (left) {\n neighborsSignificance[index - 1] += 0x01;\n }\n\n if (right) {\n neighborsSignificance[index + 1] += 0x01;\n }\n\n neighborsSignificance[index] |= 0x80;\n },\n runSignificancePropagationPass: function BitModel_runSignificancePropagationPass() {\n var decoder = this.decoder;\n var width = this.width,\n height = this.height;\n var coefficentsMagnitude = this.coefficentsMagnitude;\n var coefficentsSign = this.coefficentsSign;\n var neighborsSignificance = this.neighborsSignificance;\n var processingFlags = this.processingFlags;\n var contexts = this.contexts;\n var labels = this.contextLabelTable;\n var bitsDecoded = this.bitsDecoded;\n var processedInverseMask = ~1;\n var processedMask = 1;\n var firstMagnitudeBitMask = 2;\n\n for (var i0 = 0; i0 < height; i0 += 4) {\n for (var j = 0; j < width; j++) {\n var index = i0 * width + j;\n\n for (var i1 = 0; i1 < 4; i1++, index += width) {\n var i = i0 + i1;\n\n if (i >= height) {\n break;\n }\n\n processingFlags[index] &= processedInverseMask;\n\n if (coefficentsMagnitude[index] || !neighborsSignificance[index]) {\n continue;\n }\n\n var contextLabel = labels[neighborsSignificance[index]];\n var decision = decoder.readBit(contexts, contextLabel);\n\n if (decision) {\n var sign = this.decodeSignBit(i, j, index);\n coefficentsSign[index] = sign;\n coefficentsMagnitude[index] = 1;\n this.setNeighborsSignificance(i, j, index);\n processingFlags[index] |= firstMagnitudeBitMask;\n }\n\n bitsDecoded[index]++;\n processingFlags[index] |= processedMask;\n }\n }\n }\n },\n decodeSignBit: function BitModel_decodeSignBit(row, column, index) {\n var width = this.width,\n height = this.height;\n var coefficentsMagnitude = this.coefficentsMagnitude;\n var coefficentsSign = this.coefficentsSign;\n var contribution, sign0, sign1, significance1;\n var contextLabel, decoded;\n significance1 = column > 0 && coefficentsMagnitude[index - 1] !== 0;\n\n if (column + 1 < width && coefficentsMagnitude[index + 1] !== 0) {\n sign1 = coefficentsSign[index + 1];\n\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\n var horizontalContribution = 3 * contribution;\n significance1 = row > 0 && coefficentsMagnitude[index - width] !== 0;\n\n if (row + 1 < height && coefficentsMagnitude[index + width] !== 0) {\n sign1 = coefficentsSign[index + width];\n\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\n return decoded;\n },\n runMagnitudeRefinementPass: function BitModel_runMagnitudeRefinementPass() {\n var decoder = this.decoder;\n var width = this.width,\n height = this.height;\n var coefficentsMagnitude = this.coefficentsMagnitude;\n var neighborsSignificance = this.neighborsSignificance;\n var contexts = this.contexts;\n var bitsDecoded = this.bitsDecoded;\n var processingFlags = this.processingFlags;\n var processedMask = 1;\n var firstMagnitudeBitMask = 2;\n var length = width * height;\n var width4 = width * 4;\n\n for (var index0 = 0, indexNext; index0 < length; index0 = indexNext) {\n indexNext = Math.min(length, index0 + width4);\n\n for (var j = 0; j < width; j++) {\n for (var index = index0 + j; index < indexNext; index += width) {\n if (!coefficentsMagnitude[index] || (processingFlags[index] & processedMask) !== 0) {\n continue;\n }\n\n var contextLabel = 16;\n\n if ((processingFlags[index] & firstMagnitudeBitMask) !== 0) {\n processingFlags[index] ^= firstMagnitudeBitMask;\n var significance = neighborsSignificance[index] & 127;\n contextLabel = significance === 0 ? 15 : 14;\n }\n\n var bit = decoder.readBit(contexts, contextLabel);\n coefficentsMagnitude[index] = coefficentsMagnitude[index] << 1 | bit;\n bitsDecoded[index]++;\n processingFlags[index] |= processedMask;\n }\n }\n }\n },\n runCleanupPass: function BitModel_runCleanupPass() {\n var decoder = this.decoder;\n var width = this.width,\n height = this.height;\n var neighborsSignificance = this.neighborsSignificance;\n var coefficentsMagnitude = this.coefficentsMagnitude;\n var coefficentsSign = this.coefficentsSign;\n var contexts = this.contexts;\n var labels = this.contextLabelTable;\n var bitsDecoded = this.bitsDecoded;\n var processingFlags = this.processingFlags;\n var processedMask = 1;\n var firstMagnitudeBitMask = 2;\n var oneRowDown = width;\n var twoRowsDown = width * 2;\n var threeRowsDown = width * 3;\n var iNext;\n\n for (var i0 = 0; i0 < height; i0 = iNext) {\n iNext = Math.min(i0 + 4, height);\n var indexBase = i0 * width;\n var checkAllEmpty = i0 + 3 < height;\n\n for (var j = 0; j < width; j++) {\n var index0 = indexBase + j;\n var allEmpty = checkAllEmpty && processingFlags[index0] === 0 && processingFlags[index0 + oneRowDown] === 0 && processingFlags[index0 + twoRowsDown] === 0 && processingFlags[index0 + threeRowsDown] === 0 && neighborsSignificance[index0] === 0 && neighborsSignificance[index0 + oneRowDown] === 0 && neighborsSignificance[index0 + twoRowsDown] === 0 && neighborsSignificance[index0 + threeRowsDown] === 0;\n var i1 = 0,\n index = index0;\n var i = i0,\n sign;\n\n if (allEmpty) {\n var hasSignificantCoefficent = decoder.readBit(contexts, RUNLENGTH_CONTEXT);\n\n if (!hasSignificantCoefficent) {\n bitsDecoded[index0]++;\n bitsDecoded[index0 + oneRowDown]++;\n bitsDecoded[index0 + twoRowsDown]++;\n bitsDecoded[index0 + threeRowsDown]++;\n continue;\n }\n\n i1 = decoder.readBit(contexts, UNIFORM_CONTEXT) << 1 | decoder.readBit(contexts, UNIFORM_CONTEXT);\n\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 index = index0;\n\n for (var i2 = i0; i2 <= i; i2++, index += width) {\n bitsDecoded[index]++;\n }\n\n i1++;\n }\n\n for (i = i0 + i1; i < iNext; i++, index += width) {\n if (coefficentsMagnitude[index] || (processingFlags[index] & processedMask) !== 0) {\n continue;\n }\n\n var contextLabel = labels[neighborsSignificance[index]];\n var decision = decoder.readBit(contexts, contextLabel);\n\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\n bitsDecoded[index]++;\n }\n }\n }\n },\n checkSegmentationSymbol: function BitModel_checkSegmentationSymbol() {\n var decoder = this.decoder;\n var contexts = this.contexts;\n var symbol = decoder.readBit(contexts, UNIFORM_CONTEXT) << 3 | decoder.readBit(contexts, UNIFORM_CONTEXT) << 2 | decoder.readBit(contexts, UNIFORM_CONTEXT) << 1 | decoder.readBit(contexts, UNIFORM_CONTEXT);\n\n if (symbol !== 0xa) {\n throw new JpxError(\"Invalid segmentation symbol\");\n }\n }\n };\n return BitModel;\n }();\n\n var Transform = function TransformClosure() {\n function Transform() {}\n\n Transform.prototype.calculate = function transformCalculate(subbands, u0, v0) {\n var ll = subbands[0];\n\n for (var i = 1, ii = subbands.length; i < ii; i++) {\n ll = this.iterate(ll, subbands[i], u0, v0);\n }\n\n return ll;\n };\n\n Transform.prototype.extend = function extend(buffer, offset, size) {\n var i1 = offset - 1,\n j1 = offset + 1;\n var i2 = offset + size - 2,\n j2 = offset + size;\n buffer[i1--] = buffer[j1++];\n buffer[j2++] = buffer[i2--];\n buffer[i1--] = buffer[j1++];\n buffer[j2++] = buffer[i2--];\n buffer[i1--] = buffer[j1++];\n buffer[j2++] = buffer[i2--];\n buffer[i1] = buffer[j1];\n buffer[j2] = buffer[i2];\n };\n\n Transform.prototype.iterate = function Transform_iterate(ll, hl_lh_hh, u0, v0) {\n var llWidth = ll.width,\n llHeight = ll.height,\n llItems = ll.items;\n var width = hl_lh_hh.width;\n var height = hl_lh_hh.height;\n var items = hl_lh_hh.items;\n var i, j, k, l, u, v;\n\n for (k = 0, i = 0; i < llHeight; i++) {\n l = i * 2 * width;\n\n for (j = 0; j < llWidth; j++, k++, l += 2) {\n items[l] = llItems[k];\n }\n }\n\n llItems = ll.items = null;\n var bufferPadding = 4;\n var rowBuffer = new Float32Array(width + 2 * bufferPadding);\n\n if (width === 1) {\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 this.extend(rowBuffer, bufferPadding, width);\n this.filter(rowBuffer, bufferPadding, width);\n items.set(rowBuffer.subarray(bufferPadding, bufferPadding + width), k);\n }\n }\n\n var numBuffers = 16;\n var colBuffers = [];\n\n for (i = 0; i < numBuffers; i++) {\n colBuffers.push(new Float32Array(height + 2 * bufferPadding));\n }\n\n var b,\n currentBuffer = 0;\n ll = bufferPadding + height;\n\n if (height === 1) {\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 (currentBuffer === 0) {\n numBuffers = Math.min(width - u, numBuffers);\n\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\n currentBuffer = numBuffers;\n }\n\n currentBuffer--;\n var buffer = colBuffers[currentBuffer];\n this.extend(buffer, bufferPadding, height);\n this.filter(buffer, bufferPadding, height);\n\n if (currentBuffer === 0) {\n k = u - numBuffers + 1;\n\n for (l = bufferPadding; l < ll; k += width, l++) {\n for (b = 0; b < numBuffers; b++) {\n items[k + b] = colBuffers[b][l];\n }\n }\n }\n }\n }\n\n return {\n width: width,\n height: height,\n items: items\n };\n };\n\n return Transform;\n }();\n\n var IrreversibleTransform = function IrreversibleTransformClosure() {\n function IrreversibleTransform() {\n Transform.call(this);\n }\n\n IrreversibleTransform.prototype = Object.create(Transform.prototype);\n\n IrreversibleTransform.prototype.filter = function irreversibleTransformFilter(x, offset, length) {\n var len = length >> 1;\n offset = offset | 0;\n var j, n, current, next;\n var alpha = -1.586134342059924;\n var beta = -0.052980118572961;\n var gamma = 0.882911075530934;\n var delta = 0.443506852043971;\n var K = 1.230174104914001;\n var K_ = 1 / K;\n j = offset - 3;\n\n for (n = len + 4; n--; j += 2) {\n x[j] *= K_;\n }\n\n j = offset - 2;\n current = delta * x[j - 1];\n\n for (n = len + 3; n--; j += 2) {\n next = delta * x[j + 1];\n x[j] = K * x[j] - current - next;\n\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 j = offset - 1;\n current = gamma * x[j - 1];\n\n for (n = len + 2; n--; j += 2) {\n next = gamma * x[j + 1];\n x[j] -= current + next;\n\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 j = offset;\n current = beta * x[j - 1];\n\n for (n = len + 1; n--; j += 2) {\n next = beta * x[j + 1];\n x[j] -= current + next;\n\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 if (len !== 0) {\n j = offset + 1;\n current = alpha * x[j - 1];\n\n for (n = len; n--; j += 2) {\n next = alpha * x[j + 1];\n x[j] -= current + next;\n\n if (n--) {\n j += 2;\n current = alpha * x[j + 1];\n x[j] -= current + next;\n } else {\n break;\n }\n }\n }\n };\n\n return IrreversibleTransform;\n }();\n\n var ReversibleTransform = function ReversibleTransformClosure() {\n function ReversibleTransform() {\n Transform.call(this);\n }\n\n ReversibleTransform.prototype = Object.create(Transform.prototype);\n\n ReversibleTransform.prototype.filter = function reversibleTransformFilter(x, offset, length) {\n var len = length >> 1;\n offset = offset | 0;\n var j, n;\n\n for (j = offset, n = len + 1; n--; j += 2) {\n x[j] -= x[j - 1] + x[j + 1] + 2 >> 2;\n }\n\n for (j = offset + 1, n = len; n--; j += 2) {\n x[j] += x[j - 1] + x[j + 1] >> 1;\n }\n };\n\n return ReversibleTransform;\n }();\n\n return JpxImage;\n}();\n\nexports.JpxImage = JpxImage;\n\n/***/ }),\n/* 215 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.calculateSHA512 = exports.calculateSHA384 = exports.calculateSHA256 = exports.calculateMD5 = exports.PDF20 = exports.PDF17 = exports.CipherTransformFactory = exports.ARCFourCipher = exports.AES256Cipher = exports.AES128Cipher = void 0;\n\nvar _util = __w_pdfjs_require__(5);\n\nvar _primitives = __w_pdfjs_require__(198);\n\nvar _stream = __w_pdfjs_require__(205);\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar ARCFourCipher = function ARCFourCipherClosure() {\n function ARCFourCipher(key) {\n this.a = 0;\n this.b = 0;\n var s = new Uint8Array(256);\n var i,\n j = 0,\n tmp,\n keyLength = key.length;\n\n for (i = 0; i < 256; ++i) {\n s[i] = i;\n }\n\n for (i = 0; i < 256; ++i) {\n tmp = s[i];\n j = j + tmp + key[i % keyLength] & 0xff;\n s[i] = s[j];\n s[j] = tmp;\n }\n\n this.s = s;\n }\n\n ARCFourCipher.prototype = {\n encryptBlock: function ARCFourCipher_encryptBlock(data) {\n var i,\n n = data.length,\n tmp,\n tmp2;\n var a = this.a,\n b = this.b,\n s = this.s;\n var output = new Uint8Array(n);\n\n for (i = 0; i < n; ++i) {\n a = a + 1 & 0xff;\n tmp = s[a];\n b = b + tmp & 0xff;\n tmp2 = s[b];\n s[a] = tmp2;\n s[b] = tmp;\n output[i] = data[i] ^ s[tmp + tmp2 & 0xff];\n }\n\n this.a = a;\n this.b = b;\n return output;\n }\n };\n ARCFourCipher.prototype.decryptBlock = ARCFourCipher.prototype.encryptBlock;\n return ARCFourCipher;\n}();\n\nexports.ARCFourCipher = ARCFourCipher;\n\nvar calculateMD5 = function calculateMD5Closure() {\n var r = new Uint8Array([7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21]);\n var k = new Int32Array([-680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426, -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162, 1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632, 643717713, -373897302, -701558691, 38016083, -660478335, -405537848, 568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784, 1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556, -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222, -722521979, 76029189, -640364487, -421815835, 530742520, -995338651, -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606, -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649, -145523070, -1120210379, 718787259, -343485551]);\n\n function hash(data, offset, length) {\n var h0 = 1732584193,\n h1 = -271733879,\n h2 = -1732584194,\n h3 = 271733878;\n var paddedLength = length + 72 & ~63;\n var padded = new Uint8Array(paddedLength);\n var i, j, n;\n\n for (i = 0; i < length; ++i) {\n padded[i] = data[offset++];\n }\n\n padded[i++] = 0x80;\n n = paddedLength - 8;\n\n while (i < n) {\n padded[i++] = 0;\n }\n\n padded[i++] = length << 3 & 0xff;\n padded[i++] = length >> 5 & 0xff;\n padded[i++] = length >> 13 & 0xff;\n padded[i++] = length >> 21 & 0xff;\n padded[i++] = length >>> 29 & 0xff;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n var w = new Int32Array(16);\n\n for (i = 0; i < paddedLength;) {\n for (j = 0; j < 16; ++j, i += 4) {\n w[j] = padded[i] | padded[i + 1] << 8 | padded[i + 2] << 16 | padded[i + 3] << 24;\n }\n\n var a = h0,\n b = h1,\n c = h2,\n d = h3,\n f,\n g;\n\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\n var tmp = d,\n rotateArg = a + f + k[j] + w[g] | 0,\n rotate = r[j];\n d = c;\n c = b;\n b = b + (rotateArg << rotate | rotateArg >>> 32 - rotate) | 0;\n a = tmp;\n }\n\n h0 = h0 + a | 0;\n h1 = h1 + b | 0;\n h2 = h2 + c | 0;\n h3 = h3 + d | 0;\n }\n\n return new Uint8Array([h0 & 0xFF, h0 >> 8 & 0xFF, h0 >> 16 & 0xFF, h0 >>> 24 & 0xFF, h1 & 0xFF, h1 >> 8 & 0xFF, h1 >> 16 & 0xFF, h1 >>> 24 & 0xFF, h2 & 0xFF, h2 >> 8 & 0xFF, h2 >> 16 & 0xFF, h2 >>> 24 & 0xFF, h3 & 0xFF, h3 >> 8 & 0xFF, h3 >> 16 & 0xFF, h3 >>> 24 & 0xFF]);\n }\n\n return hash;\n}();\n\nexports.calculateMD5 = calculateMD5;\n\nvar Word64 = function Word64Closure() {\n function Word64(highInteger, lowInteger) {\n this.high = highInteger | 0;\n this.low = lowInteger | 0;\n }\n\n Word64.prototype = {\n and: function Word64_and(word) {\n this.high &= word.high;\n this.low &= word.low;\n },\n xor: function Word64_xor(word) {\n this.high ^= word.high;\n this.low ^= word.low;\n },\n or: function Word64_or(word) {\n this.high |= word.high;\n this.low |= word.low;\n },\n shiftRight: function Word64_shiftRight(places) {\n if (places >= 32) {\n this.low = this.high >>> places - 32 | 0;\n this.high = 0;\n } else {\n this.low = this.low >>> places | this.high << 32 - places;\n this.high = this.high >>> places | 0;\n }\n },\n shiftLeft: function Word64_shiftLeft(places) {\n if (places >= 32) {\n this.high = this.low << places - 32;\n this.low = 0;\n } else {\n this.high = this.high << places | this.low >>> 32 - places;\n this.low = this.low << places;\n }\n },\n rotateRight: function Word64_rotateRight(places) {\n var low, high;\n\n if (places & 32) {\n high = this.low;\n low = this.high;\n } else {\n low = this.low;\n high = this.high;\n }\n\n places &= 31;\n this.low = low >>> places | high << 32 - places;\n this.high = high >>> places | low << 32 - places;\n },\n not: function Word64_not() {\n this.high = ~this.high;\n this.low = ~this.low;\n },\n add: function Word64_add(word) {\n var lowAdd = (this.low >>> 0) + (word.low >>> 0);\n var highAdd = (this.high >>> 0) + (word.high >>> 0);\n\n if (lowAdd > 0xffffffff) {\n highAdd += 1;\n }\n\n this.low = lowAdd | 0;\n this.high = highAdd | 0;\n },\n copyTo: function Word64_copyTo(bytes, offset) {\n bytes[offset] = this.high >>> 24 & 0xff;\n bytes[offset + 1] = this.high >> 16 & 0xff;\n bytes[offset + 2] = this.high >> 8 & 0xff;\n bytes[offset + 3] = this.high & 0xff;\n bytes[offset + 4] = this.low >>> 24 & 0xff;\n bytes[offset + 5] = this.low >> 16 & 0xff;\n bytes[offset + 6] = this.low >> 8 & 0xff;\n bytes[offset + 7] = this.low & 0xff;\n },\n assign: function Word64_assign(word) {\n this.high = word.high;\n this.low = word.low;\n }\n };\n return Word64;\n}();\n\nvar calculateSHA256 = function calculateSHA256Closure() {\n function rotr(x, n) {\n return x >>> n | x << 32 - n;\n }\n\n function ch(x, y, z) {\n return x & y ^ ~x & z;\n }\n\n function maj(x, y, z) {\n return x & y ^ x & z ^ y & z;\n }\n\n function sigma(x) {\n return rotr(x, 2) ^ rotr(x, 13) ^ rotr(x, 22);\n }\n\n function sigmaPrime(x) {\n return rotr(x, 6) ^ rotr(x, 11) ^ rotr(x, 25);\n }\n\n function littleSigma(x) {\n return rotr(x, 7) ^ rotr(x, 18) ^ x >>> 3;\n }\n\n function littleSigmaPrime(x) {\n return rotr(x, 17) ^ rotr(x, 19) ^ x >>> 10;\n }\n\n var k = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2];\n\n function hash(data, offset, length) {\n var h0 = 0x6a09e667,\n h1 = 0xbb67ae85,\n h2 = 0x3c6ef372,\n h3 = 0xa54ff53a,\n h4 = 0x510e527f,\n h5 = 0x9b05688c,\n h6 = 0x1f83d9ab,\n h7 = 0x5be0cd19;\n var paddedLength = Math.ceil((length + 9) / 64) * 64;\n var padded = new Uint8Array(paddedLength);\n var i, j, n;\n\n for (i = 0; i < length; ++i) {\n padded[i] = data[offset++];\n }\n\n padded[i++] = 0x80;\n n = paddedLength - 8;\n\n while (i < n) {\n padded[i++] = 0;\n }\n\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = length >>> 29 & 0xff;\n padded[i++] = length >> 21 & 0xff;\n padded[i++] = length >> 13 & 0xff;\n padded[i++] = length >> 5 & 0xff;\n padded[i++] = length << 3 & 0xff;\n var w = new Uint32Array(64);\n\n for (i = 0; i < paddedLength;) {\n for (j = 0; j < 16; ++j) {\n w[j] = padded[i] << 24 | padded[i + 1] << 16 | padded[i + 2] << 8 | padded[i + 3];\n i += 4;\n }\n\n for (j = 16; j < 64; ++j) {\n w[j] = littleSigmaPrime(w[j - 2]) + w[j - 7] + littleSigma(w[j - 15]) + w[j - 16] | 0;\n }\n\n var a = h0,\n b = h1,\n c = h2,\n d = h3,\n e = h4,\n f = h5,\n g = h6,\n h = h7,\n t1,\n t2;\n\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\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\n return new Uint8Array([h0 >> 24 & 0xFF, h0 >> 16 & 0xFF, h0 >> 8 & 0xFF, h0 & 0xFF, h1 >> 24 & 0xFF, h1 >> 16 & 0xFF, h1 >> 8 & 0xFF, h1 & 0xFF, h2 >> 24 & 0xFF, h2 >> 16 & 0xFF, h2 >> 8 & 0xFF, h2 & 0xFF, h3 >> 24 & 0xFF, h3 >> 16 & 0xFF, h3 >> 8 & 0xFF, h3 & 0xFF, h4 >> 24 & 0xFF, h4 >> 16 & 0xFF, h4 >> 8 & 0xFF, h4 & 0xFF, h5 >> 24 & 0xFF, h5 >> 16 & 0xFF, h5 >> 8 & 0xFF, h5 & 0xFF, h6 >> 24 & 0xFF, h6 >> 16 & 0xFF, h6 >> 8 & 0xFF, h6 & 0xFF, h7 >> 24 & 0xFF, h7 >> 16 & 0xFF, h7 >> 8 & 0xFF, h7 & 0xFF]);\n }\n\n return hash;\n}();\n\nexports.calculateSHA256 = calculateSHA256;\n\nvar calculateSHA512 = function calculateSHA512Closure() {\n function ch(result, x, y, z, tmp) {\n result.assign(x);\n result.and(y);\n tmp.assign(x);\n tmp.not();\n tmp.and(z);\n result.xor(tmp);\n }\n\n function maj(result, x, y, z, tmp) {\n result.assign(x);\n result.and(y);\n tmp.assign(x);\n tmp.and(z);\n result.xor(tmp);\n tmp.assign(y);\n tmp.and(z);\n result.xor(tmp);\n }\n\n function sigma(result, x, tmp) {\n result.assign(x);\n result.rotateRight(28);\n tmp.assign(x);\n tmp.rotateRight(34);\n result.xor(tmp);\n tmp.assign(x);\n tmp.rotateRight(39);\n result.xor(tmp);\n }\n\n function sigmaPrime(result, x, tmp) {\n result.assign(x);\n result.rotateRight(14);\n tmp.assign(x);\n tmp.rotateRight(18);\n result.xor(tmp);\n tmp.assign(x);\n tmp.rotateRight(41);\n result.xor(tmp);\n }\n\n function littleSigma(result, x, tmp) {\n result.assign(x);\n result.rotateRight(1);\n tmp.assign(x);\n tmp.rotateRight(8);\n result.xor(tmp);\n tmp.assign(x);\n tmp.shiftRight(7);\n result.xor(tmp);\n }\n\n function littleSigmaPrime(result, x, tmp) {\n result.assign(x);\n result.rotateRight(19);\n tmp.assign(x);\n tmp.rotateRight(61);\n result.xor(tmp);\n tmp.assign(x);\n tmp.shiftRight(6);\n result.xor(tmp);\n }\n\n var k = [new Word64(0x428a2f98, 0xd728ae22), new Word64(0x71374491, 0x23ef65cd), new Word64(0xb5c0fbcf, 0xec4d3b2f), new Word64(0xe9b5dba5, 0x8189dbbc), new Word64(0x3956c25b, 0xf348b538), new Word64(0x59f111f1, 0xb605d019), new Word64(0x923f82a4, 0xaf194f9b), new Word64(0xab1c5ed5, 0xda6d8118), new Word64(0xd807aa98, 0xa3030242), new Word64(0x12835b01, 0x45706fbe), new Word64(0x243185be, 0x4ee4b28c), new Word64(0x550c7dc3, 0xd5ffb4e2), new Word64(0x72be5d74, 0xf27b896f), new Word64(0x80deb1fe, 0x3b1696b1), new Word64(0x9bdc06a7, 0x25c71235), new Word64(0xc19bf174, 0xcf692694), new Word64(0xe49b69c1, 0x9ef14ad2), new Word64(0xefbe4786, 0x384f25e3), new Word64(0x0fc19dc6, 0x8b8cd5b5), new Word64(0x240ca1cc, 0x77ac9c65), new Word64(0x2de92c6f, 0x592b0275), new Word64(0x4a7484aa, 0x6ea6e483), new Word64(0x5cb0a9dc, 0xbd41fbd4), new Word64(0x76f988da, 0x831153b5), new Word64(0x983e5152, 0xee66dfab), new Word64(0xa831c66d, 0x2db43210), new Word64(0xb00327c8, 0x98fb213f), new Word64(0xbf597fc7, 0xbeef0ee4), new Word64(0xc6e00bf3, 0x3da88fc2), new Word64(0xd5a79147, 0x930aa725), new Word64(0x06ca6351, 0xe003826f), new Word64(0x14292967, 0x0a0e6e70), new Word64(0x27b70a85, 0x46d22ffc), new Word64(0x2e1b2138, 0x5c26c926), new Word64(0x4d2c6dfc, 0x5ac42aed), new Word64(0x53380d13, 0x9d95b3df), new Word64(0x650a7354, 0x8baf63de), new Word64(0x766a0abb, 0x3c77b2a8), new Word64(0x81c2c92e, 0x47edaee6), new Word64(0x92722c85, 0x1482353b), new Word64(0xa2bfe8a1, 0x4cf10364), new Word64(0xa81a664b, 0xbc423001), new Word64(0xc24b8b70, 0xd0f89791), new Word64(0xc76c51a3, 0x0654be30), new Word64(0xd192e819, 0xd6ef5218), new Word64(0xd6990624, 0x5565a910), new Word64(0xf40e3585, 0x5771202a), new Word64(0x106aa070, 0x32bbd1b8), new Word64(0x19a4c116, 0xb8d2d0c8), new Word64(0x1e376c08, 0x5141ab53), new Word64(0x2748774c, 0xdf8eeb99), new Word64(0x34b0bcb5, 0xe19b48a8), new Word64(0x391c0cb3, 0xc5c95a63), new Word64(0x4ed8aa4a, 0xe3418acb), new Word64(0x5b9cca4f, 0x7763e373), new Word64(0x682e6ff3, 0xd6b2b8a3), new Word64(0x748f82ee, 0x5defb2fc), new Word64(0x78a5636f, 0x43172f60), new Word64(0x84c87814, 0xa1f0ab72), new Word64(0x8cc70208, 0x1a6439ec), new Word64(0x90befffa, 0x23631e28), new Word64(0xa4506ceb, 0xde82bde9), new Word64(0xbef9a3f7, 0xb2c67915), new Word64(0xc67178f2, 0xe372532b), new Word64(0xca273ece, 0xea26619c), new Word64(0xd186b8c7, 0x21c0c207), new Word64(0xeada7dd6, 0xcde0eb1e), new Word64(0xf57d4f7f, 0xee6ed178), new Word64(0x06f067aa, 0x72176fba), new Word64(0x0a637dc5, 0xa2c898a6), new Word64(0x113f9804, 0xbef90dae), new Word64(0x1b710b35, 0x131c471b), new Word64(0x28db77f5, 0x23047d84), new Word64(0x32caab7b, 0x40c72493), new Word64(0x3c9ebe0a, 0x15c9bebc), new Word64(0x431d67c4, 0x9c100d4c), new Word64(0x4cc5d4be, 0xcb3e42b6), new Word64(0x597f299c, 0xfc657e2a), new Word64(0x5fcb6fab, 0x3ad6faec), new Word64(0x6c44198c, 0x4a475817)];\n\n function hash(data, offset, length, mode384) {\n mode384 = !!mode384;\n var h0, h1, h2, h3, h4, h5, h6, h7;\n\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 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 var paddedLength = Math.ceil((length + 17) / 128) * 128;\n var padded = new Uint8Array(paddedLength);\n var i, j, n;\n\n for (i = 0; i < length; ++i) {\n padded[i] = data[offset++];\n }\n\n padded[i++] = 0x80;\n n = paddedLength - 16;\n\n while (i < n) {\n padded[i++] = 0;\n }\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 var w = new Array(80);\n\n for (i = 0; i < 80; i++) {\n w[i] = new Word64(0, 0);\n }\n\n var a = new Word64(0, 0),\n b = new Word64(0, 0),\n c = new Word64(0, 0);\n var d = new Word64(0, 0),\n e = new Word64(0, 0),\n f = new Word64(0, 0);\n var g = new Word64(0, 0),\n h = new Word64(0, 0);\n var t1 = new Word64(0, 0),\n t2 = new Word64(0, 0);\n var tmp1 = new Word64(0, 0),\n tmp2 = new Word64(0, 0),\n tmp3;\n\n for (i = 0; i < paddedLength;) {\n for (j = 0; j < 16; ++j) {\n w[j].high = padded[i] << 24 | padded[i + 1] << 16 | padded[i + 2] << 8 | padded[i + 3];\n w[j].low = padded[i + 4] << 24 | padded[i + 5] << 16 | padded[i + 6] << 8 | padded[i + 7];\n i += 8;\n }\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\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 sigma(t2, a, tmp2);\n maj(tmp1, a, b, c, tmp2);\n t2.add(tmp1);\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\n h0.add(a);\n h1.add(b);\n h2.add(c);\n h3.add(d);\n h4.add(e);\n h5.add(f);\n h6.add(g);\n h7.add(h);\n }\n\n var result;\n\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\n return result;\n }\n\n return hash;\n}();\n\nexports.calculateSHA512 = calculateSHA512;\n\nvar calculateSHA384 = function calculateSHA384Closure() {\n function hash(data, offset, length) {\n return calculateSHA512(data, offset, length, true);\n }\n\n return hash;\n}();\n\nexports.calculateSHA384 = calculateSHA384;\n\nvar NullCipher = function NullCipherClosure() {\n function NullCipher() {}\n\n NullCipher.prototype = {\n decryptBlock: function NullCipher_decryptBlock(data) {\n return data;\n }\n };\n return NullCipher;\n}();\n\nvar AESBaseCipher = /*#__PURE__*/function () {\n function AESBaseCipher() {\n _classCallCheck(this, AESBaseCipher);\n\n if (this.constructor === AESBaseCipher) {\n (0, _util.unreachable)(\"Cannot initialize AESBaseCipher.\");\n }\n\n this._s = new Uint8Array([0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16]);\n this._inv_s = new Uint8Array([0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d]);\n this._mix = new Uint32Array([0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3]);\n this._mixCol = new Uint8Array(256);\n\n for (var 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 _createClass(AESBaseCipher, [{\n key: \"_expandKey\",\n value: function _expandKey(cipherKey) {\n (0, _util.unreachable)(\"Cannot call `_expandKey` on the base class\");\n }\n }, {\n key: \"_decrypt\",\n value: function _decrypt(input, key) {\n var t, u, v;\n var state = new Uint8Array(16);\n state.set(input);\n\n for (var j = 0, k = this._keySize; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n\n for (var i = this._cyclesOfRepetition - 1; i >= 1; --i) {\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\n for (var _j = 0; _j < 16; ++_j) {\n state[_j] = this._inv_s[state[_j]];\n }\n\n for (var _j2 = 0, _k = i * 16; _j2 < 16; ++_j2, ++_k) {\n state[_j2] ^= key[_k];\n }\n\n for (var _j3 = 0; _j3 < 16; _j3 += 4) {\n var s0 = this._mix[state[_j3]];\n var s1 = this._mix[state[_j3 + 1]];\n var s2 = this._mix[state[_j3 + 2]];\n var s3 = this._mix[state[_j3 + 3]];\n t = s0 ^ s1 >>> 8 ^ s1 << 24 ^ s2 >>> 16 ^ s2 << 16 ^ s3 >>> 24 ^ s3 << 8;\n state[_j3] = t >>> 24 & 0xff;\n state[_j3 + 1] = t >> 16 & 0xff;\n state[_j3 + 2] = t >> 8 & 0xff;\n state[_j3 + 3] = t & 0xff;\n }\n }\n\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\n for (var _j4 = 0; _j4 < 16; ++_j4) {\n state[_j4] = this._inv_s[state[_j4]];\n state[_j4] ^= key[_j4];\n }\n\n return state;\n }\n }, {\n key: \"_encrypt\",\n value: function _encrypt(input, key) {\n var s = this._s;\n var t, u, v;\n var state = new Uint8Array(16);\n state.set(input);\n\n for (var j = 0; j < 16; ++j) {\n state[j] ^= key[j];\n }\n\n for (var i = 1; i < this._cyclesOfRepetition; i++) {\n for (var _j5 = 0; _j5 < 16; ++_j5) {\n state[_j5] = s[state[_j5]];\n }\n\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\n for (var _j6 = 0; _j6 < 16; _j6 += 4) {\n var s0 = state[_j6 + 0];\n var s1 = state[_j6 + 1];\n var s2 = state[_j6 + 2];\n var s3 = state[_j6 + 3];\n t = s0 ^ s1 ^ s2 ^ s3;\n state[_j6 + 0] ^= t ^ this._mixCol[s0 ^ s1];\n state[_j6 + 1] ^= t ^ this._mixCol[s1 ^ s2];\n state[_j6 + 2] ^= t ^ this._mixCol[s2 ^ s3];\n state[_j6 + 3] ^= t ^ this._mixCol[s3 ^ s0];\n }\n\n for (var _j7 = 0, k = i * 16; _j7 < 16; ++_j7, ++k) {\n state[_j7] ^= key[k];\n }\n }\n\n for (var _j8 = 0; _j8 < 16; ++_j8) {\n state[_j8] = s[state[_j8]];\n }\n\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\n for (var _j9 = 0, _k2 = this._keySize; _j9 < 16; ++_j9, ++_k2) {\n state[_j9] ^= key[_k2];\n }\n\n return state;\n }\n }, {\n key: \"_decryptBlock2\",\n value: function _decryptBlock2(data, finalize) {\n var sourceLength = data.length;\n var buffer = this.buffer,\n bufferLength = this.bufferPosition;\n var result = [];\n var iv = this.iv;\n\n for (var i = 0; i < sourceLength; ++i) {\n buffer[bufferLength] = data[i];\n ++bufferLength;\n\n if (bufferLength < 16) {\n continue;\n }\n\n var plain = this._decrypt(buffer, this._key);\n\n for (var j = 0; j < 16; ++j) {\n plain[j] ^= iv[j];\n }\n\n iv = buffer;\n result.push(plain);\n buffer = new Uint8Array(16);\n bufferLength = 0;\n }\n\n this.buffer = buffer;\n this.bufferLength = bufferLength;\n this.iv = iv;\n\n if (result.length === 0) {\n return new Uint8Array(0);\n }\n\n var outputLength = 16 * result.length;\n\n if (finalize) {\n var lastBlock = result[result.length - 1];\n var psLen = lastBlock[15];\n\n if (psLen <= 16) {\n for (var _i = 15, ii = 16 - psLen; _i >= ii; --_i) {\n if (lastBlock[_i] !== psLen) {\n psLen = 0;\n break;\n }\n }\n\n outputLength -= psLen;\n result[result.length - 1] = lastBlock.subarray(0, 16 - psLen);\n }\n }\n\n var output = new Uint8Array(outputLength);\n\n for (var _i2 = 0, _j10 = 0, _ii = result.length; _i2 < _ii; ++_i2, _j10 += 16) {\n output.set(result[_i2], _j10);\n }\n\n return output;\n }\n }, {\n key: \"decryptBlock\",\n value: function decryptBlock(data, finalize) {\n var iv = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var sourceLength = data.length;\n var buffer = this.buffer;\n var bufferLength = this.bufferPosition;\n\n if (iv) {\n this.iv = iv;\n } else {\n for (var i = 0; bufferLength < 16 && i < sourceLength; ++i, ++bufferLength) {\n buffer[bufferLength] = data[i];\n }\n\n if (bufferLength < 16) {\n this.bufferLength = bufferLength;\n return new Uint8Array(0);\n }\n\n this.iv = buffer;\n data = data.subarray(16);\n }\n\n this.buffer = new Uint8Array(16);\n this.bufferLength = 0;\n this.decryptBlock = this._decryptBlock2;\n return this.decryptBlock(data, finalize);\n }\n }, {\n key: \"encrypt\",\n value: function encrypt(data, iv) {\n var sourceLength = data.length;\n var buffer = this.buffer,\n bufferLength = this.bufferPosition;\n var result = [];\n\n if (!iv) {\n iv = new Uint8Array(16);\n }\n\n for (var i = 0; i < sourceLength; ++i) {\n buffer[bufferLength] = data[i];\n ++bufferLength;\n\n if (bufferLength < 16) {\n continue;\n }\n\n for (var j = 0; j < 16; ++j) {\n buffer[j] ^= iv[j];\n }\n\n var cipher = this._encrypt(buffer, this._key);\n\n iv = cipher;\n result.push(cipher);\n buffer = new Uint8Array(16);\n bufferLength = 0;\n }\n\n this.buffer = buffer;\n this.bufferLength = bufferLength;\n this.iv = iv;\n\n if (result.length === 0) {\n return new Uint8Array(0);\n }\n\n var outputLength = 16 * result.length;\n var output = new Uint8Array(outputLength);\n\n for (var _i3 = 0, _j11 = 0, ii = result.length; _i3 < ii; ++_i3, _j11 += 16) {\n output.set(result[_i3], _j11);\n }\n\n return output;\n }\n }]);\n\n return AESBaseCipher;\n}();\n\nvar AES128Cipher = /*#__PURE__*/function (_AESBaseCipher) {\n _inherits(AES128Cipher, _AESBaseCipher);\n\n var _super = _createSuper(AES128Cipher);\n\n function AES128Cipher(key) {\n var _this;\n\n _classCallCheck(this, AES128Cipher);\n\n _this = _super.call(this);\n _this._cyclesOfRepetition = 10;\n _this._keySize = 160;\n _this._rcon = new Uint8Array([0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d]);\n _this._key = _this._expandKey(key);\n return _this;\n }\n\n _createClass(AES128Cipher, [{\n key: \"_expandKey\",\n value: function _expandKey(cipherKey) {\n var b = 176;\n var s = this._s;\n var rcon = this._rcon;\n var result = new Uint8Array(b);\n result.set(cipherKey);\n\n for (var j = 16, i = 1; j < b; ++i) {\n var t1 = result[j - 3];\n var t2 = result[j - 2];\n var t3 = result[j - 1];\n var t4 = result[j - 4];\n t1 = s[t1];\n t2 = s[t2];\n t3 = s[t3];\n t4 = s[t4];\n t1 = t1 ^ rcon[i];\n\n for (var 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\n return result;\n }\n }]);\n\n return AES128Cipher;\n}(AESBaseCipher);\n\nexports.AES128Cipher = AES128Cipher;\n\nvar AES256Cipher = /*#__PURE__*/function (_AESBaseCipher2) {\n _inherits(AES256Cipher, _AESBaseCipher2);\n\n var _super2 = _createSuper(AES256Cipher);\n\n function AES256Cipher(key) {\n var _this2;\n\n _classCallCheck(this, AES256Cipher);\n\n _this2 = _super2.call(this);\n _this2._cyclesOfRepetition = 14;\n _this2._keySize = 224;\n _this2._key = _this2._expandKey(key);\n return _this2;\n }\n\n _createClass(AES256Cipher, [{\n key: \"_expandKey\",\n value: function _expandKey(cipherKey) {\n var b = 240;\n var s = this._s;\n var result = new Uint8Array(b);\n result.set(cipherKey);\n var r = 1;\n var t1, t2, t3, t4;\n\n for (var 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 t1 = result[j - 3];\n t2 = result[j - 2];\n t3 = result[j - 1];\n t4 = result[j - 4];\n t1 = s[t1];\n t2 = s[t2];\n t3 = s[t3];\n t4 = s[t4];\n t1 = t1 ^ r;\n\n if ((r <<= 1) >= 256) {\n r = (r ^ 0x1b) & 0xff;\n }\n }\n\n for (var 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\n return result;\n }\n }]);\n\n return AES256Cipher;\n}(AESBaseCipher);\n\nexports.AES256Cipher = AES256Cipher;\n\nvar PDF17 = function PDF17Closure() {\n function compareByteArrays(array1, array2) {\n if (array1.length !== array2.length) {\n return false;\n }\n\n for (var i = 0; i < array1.length; i++) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n\n return true;\n }\n\n function PDF17() {}\n\n PDF17.prototype = {\n checkOwnerPassword: function PDF17_checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) {\n var hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerValidationSalt, password.length);\n hashData.set(userBytes, password.length + ownerValidationSalt.length);\n var result = calculateSHA256(hashData, 0, hashData.length);\n return compareByteArrays(result, ownerPassword);\n },\n checkUserPassword: function PDF17_checkUserPassword(password, userValidationSalt, userPassword) {\n var hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userValidationSalt, password.length);\n var result = calculateSHA256(hashData, 0, hashData.length);\n return compareByteArrays(result, userPassword);\n },\n getOwnerKey: function PDF17_getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) {\n var hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerKeySalt, password.length);\n hashData.set(userBytes, password.length + ownerKeySalt.length);\n var key = calculateSHA256(hashData, 0, hashData.length);\n var cipher = new AES256Cipher(key);\n return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\n },\n getUserKey: function PDF17_getUserKey(password, userKeySalt, userEncryption) {\n var hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userKeySalt, password.length);\n var key = calculateSHA256(hashData, 0, hashData.length);\n var cipher = new AES256Cipher(key);\n return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\n }\n };\n return PDF17;\n}();\n\nexports.PDF17 = PDF17;\n\nvar PDF20 = function PDF20Closure() {\n function concatArrays(array1, array2) {\n var t = new Uint8Array(array1.length + array2.length);\n t.set(array1, 0);\n t.set(array2, array1.length);\n return t;\n }\n\n function calculatePDF20Hash(password, input, userBytes) {\n var k = calculateSHA256(input, 0, input.length).subarray(0, 32);\n var e = [0];\n var i = 0;\n\n while (i < 64 || e[e.length - 1] > i - 32) {\n var arrayLength = password.length + k.length + userBytes.length;\n var k1 = new Uint8Array(arrayLength * 64);\n var array = concatArrays(password, k);\n array = concatArrays(array, userBytes);\n\n for (var j = 0, pos = 0; j < 64; j++, pos += arrayLength) {\n k1.set(array, pos);\n }\n\n var cipher = new AES128Cipher(k.subarray(0, 16));\n e = cipher.encrypt(k1, k.subarray(16, 32));\n var remainder = 0;\n\n for (var z = 0; z < 16; z++) {\n remainder *= 256 % 3;\n remainder %= 3;\n remainder += (e[z] >>> 0) % 3;\n remainder %= 3;\n }\n\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\n i++;\n }\n\n return k.subarray(0, 32);\n }\n\n function PDF20() {}\n\n function compareByteArrays(array1, array2) {\n if (array1.length !== array2.length) {\n return false;\n }\n\n for (var i = 0; i < array1.length; i++) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n\n return true;\n }\n\n PDF20.prototype = {\n hash: function PDF20_hash(password, concatBytes, userBytes) {\n return calculatePDF20Hash(password, concatBytes, userBytes);\n },\n checkOwnerPassword: function PDF20_checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) {\n var hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerValidationSalt, password.length);\n hashData.set(userBytes, password.length + ownerValidationSalt.length);\n var result = calculatePDF20Hash(password, hashData, userBytes);\n return compareByteArrays(result, ownerPassword);\n },\n checkUserPassword: function PDF20_checkUserPassword(password, userValidationSalt, userPassword) {\n var hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userValidationSalt, password.length);\n var result = calculatePDF20Hash(password, hashData, []);\n return compareByteArrays(result, userPassword);\n },\n getOwnerKey: function PDF20_getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) {\n var hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerKeySalt, password.length);\n hashData.set(userBytes, password.length + ownerKeySalt.length);\n var key = calculatePDF20Hash(password, hashData, userBytes);\n var cipher = new AES256Cipher(key);\n return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\n },\n getUserKey: function PDF20_getUserKey(password, userKeySalt, userEncryption) {\n var hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userKeySalt, password.length);\n var key = calculatePDF20Hash(password, hashData, []);\n var cipher = new AES256Cipher(key);\n return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\n }\n };\n return PDF20;\n}();\n\nexports.PDF20 = PDF20;\n\nvar CipherTransform = function CipherTransformClosure() {\n function CipherTransform(stringCipherConstructor, streamCipherConstructor) {\n this.StringCipherConstructor = stringCipherConstructor;\n this.StreamCipherConstructor = streamCipherConstructor;\n }\n\n CipherTransform.prototype = {\n createStream: function CipherTransform_createStream(stream, length) {\n var cipher = new this.StreamCipherConstructor();\n return new _stream.DecryptStream(stream, length, function cipherTransformDecryptStream(data, finalize) {\n return cipher.decryptBlock(data, finalize);\n });\n },\n decryptString: function CipherTransform_decryptString(s) {\n var cipher = new this.StringCipherConstructor();\n var data = (0, _util.stringToBytes)(s);\n data = cipher.decryptBlock(data, true);\n return (0, _util.bytesToString)(data);\n }\n };\n return CipherTransform;\n}();\n\nvar CipherTransformFactory = function CipherTransformFactoryClosure() {\n var defaultPasswordBytes = new Uint8Array([0x28, 0xBF, 0x4E, 0x5E, 0x4E, 0x75, 0x8A, 0x41, 0x64, 0x00, 0x4E, 0x56, 0xFF, 0xFA, 0x01, 0x08, 0x2E, 0x2E, 0x00, 0xB6, 0xD0, 0x68, 0x3E, 0x80, 0x2F, 0x0C, 0xA9, 0xFE, 0x64, 0x53, 0x69, 0x7A]);\n\n function createEncryptionKey20(revision, password, ownerPassword, ownerValidationSalt, ownerKeySalt, uBytes, userPassword, userValidationSalt, userKeySalt, ownerEncryption, userEncryption, perms) {\n if (password) {\n var passwordLength = Math.min(127, password.length);\n password = password.subarray(0, passwordLength);\n } else {\n password = [];\n }\n\n var pdfAlgorithm;\n\n if (revision === 6) {\n pdfAlgorithm = new PDF20();\n } else {\n pdfAlgorithm = new PDF17();\n }\n\n if (pdfAlgorithm.checkUserPassword(password, userValidationSalt, userPassword)) {\n return pdfAlgorithm.getUserKey(password, userKeySalt, userEncryption);\n } else if (password.length && pdfAlgorithm.checkOwnerPassword(password, ownerValidationSalt, uBytes, ownerPassword)) {\n return pdfAlgorithm.getOwnerKey(password, ownerKeySalt, uBytes, ownerEncryption);\n }\n\n return null;\n }\n\n function prepareKeyData(fileId, password, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata) {\n var hashDataSize = 40 + ownerPassword.length + fileId.length;\n var hashData = new Uint8Array(hashDataSize),\n i = 0,\n j,\n n;\n\n if (password) {\n n = Math.min(32, password.length);\n\n for (; i < n; ++i) {\n hashData[i] = password[i];\n }\n }\n\n j = 0;\n\n while (i < 32) {\n hashData[i++] = defaultPasswordBytes[j++];\n }\n\n for (j = 0, n = ownerPassword.length; j < n; ++j) {\n hashData[i++] = ownerPassword[j];\n }\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\n for (j = 0, n = fileId.length; j < n; ++j) {\n hashData[i++] = fileId[j];\n }\n\n if (revision >= 4 && !encryptMetadata) {\n hashData[i++] = 0xff;\n hashData[i++] = 0xff;\n hashData[i++] = 0xff;\n hashData[i++] = 0xff;\n }\n\n var hash = calculateMD5(hashData, 0, i);\n var keyLengthInBytes = keyLength >> 3;\n\n if (revision >= 3) {\n for (j = 0; j < 50; ++j) {\n hash = calculateMD5(hash, 0, keyLengthInBytes);\n }\n }\n\n var encryptionKey = hash.subarray(0, keyLengthInBytes);\n var cipher, checkData;\n\n if (revision >= 3) {\n for (i = 0; i < 32; ++i) {\n hashData[i] = defaultPasswordBytes[i];\n }\n\n for (j = 0, n = fileId.length; j < n; ++j) {\n hashData[i++] = fileId[j];\n }\n\n cipher = new ARCFourCipher(encryptionKey);\n checkData = cipher.encryptBlock(calculateMD5(hashData, 0, i));\n n = encryptionKey.length;\n var derivedKey = new Uint8Array(n),\n k;\n\n for (j = 1; j <= 19; ++j) {\n for (k = 0; k < n; ++k) {\n derivedKey[k] = encryptionKey[k] ^ j;\n }\n\n cipher = new ARCFourCipher(derivedKey);\n checkData = cipher.encryptBlock(checkData);\n }\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\n for (j = 0, n = checkData.length; j < n; ++j) {\n if (userPassword[j] !== checkData[j]) {\n return null;\n }\n }\n }\n\n return encryptionKey;\n }\n\n function decodeUserPassword(password, ownerPassword, revision, keyLength) {\n var hashData = new Uint8Array(32),\n i = 0,\n j,\n n;\n n = Math.min(32, password.length);\n\n for (; i < n; ++i) {\n hashData[i] = password[i];\n }\n\n j = 0;\n\n while (i < 32) {\n hashData[i++] = defaultPasswordBytes[j++];\n }\n\n var hash = calculateMD5(hashData, 0, i);\n var keyLengthInBytes = keyLength >> 3;\n\n if (revision >= 3) {\n for (j = 0; j < 50; ++j) {\n hash = calculateMD5(hash, 0, hash.length);\n }\n }\n\n var cipher, userPassword;\n\n if (revision >= 3) {\n userPassword = ownerPassword;\n var derivedKey = new Uint8Array(keyLengthInBytes),\n k;\n\n for (j = 19; j >= 0; j--) {\n for (k = 0; k < keyLengthInBytes; ++k) {\n derivedKey[k] = hash[k] ^ j;\n }\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\n return userPassword;\n }\n\n var identityName = _primitives.Name.get(\"Identity\");\n\n function CipherTransformFactory(dict, fileId, password) {\n var filter = dict.get(\"Filter\");\n\n if (!(0, _primitives.isName)(filter, \"Standard\")) {\n throw new _util.FormatError(\"unknown encryption method\");\n }\n\n this.dict = dict;\n var algorithm = dict.get(\"V\");\n\n if (!Number.isInteger(algorithm) || algorithm !== 1 && algorithm !== 2 && algorithm !== 4 && algorithm !== 5) {\n throw new _util.FormatError(\"unsupported encryption algorithm\");\n }\n\n this.algorithm = algorithm;\n var keyLength = dict.get(\"Length\");\n\n if (!keyLength) {\n if (algorithm <= 3) {\n keyLength = 40;\n } else {\n var cfDict = dict.get(\"CF\");\n var streamCryptoName = dict.get(\"StmF\");\n\n if ((0, _primitives.isDict)(cfDict) && (0, _primitives.isName)(streamCryptoName)) {\n cfDict.suppressEncryption = true;\n var handlerDict = cfDict.get(streamCryptoName.name);\n keyLength = handlerDict && handlerDict.get(\"Length\") || 128;\n\n if (keyLength < 40) {\n keyLength <<= 3;\n }\n }\n }\n }\n\n if (!Number.isInteger(keyLength) || keyLength < 40 || keyLength % 8 !== 0) {\n throw new _util.FormatError(\"invalid key length\");\n }\n\n var ownerPassword = (0, _util.stringToBytes)(dict.get(\"O\")).subarray(0, 32);\n var userPassword = (0, _util.stringToBytes)(dict.get(\"U\")).subarray(0, 32);\n var flags = dict.get(\"P\");\n var revision = dict.get(\"R\");\n var encryptMetadata = (algorithm === 4 || algorithm === 5) && dict.get(\"EncryptMetadata\") !== false;\n this.encryptMetadata = encryptMetadata;\n var fileIdBytes = (0, _util.stringToBytes)(fileId);\n var passwordBytes;\n\n if (password) {\n if (revision === 6) {\n try {\n password = (0, _util.utf8StringToString)(password);\n } catch (ex) {\n (0, _util.warn)(\"CipherTransformFactory: \" + \"Unable to convert UTF8 encoded password.\");\n }\n }\n\n passwordBytes = (0, _util.stringToBytes)(password);\n }\n\n var encryptionKey;\n\n if (algorithm !== 5) {\n encryptionKey = prepareKeyData(fileIdBytes, passwordBytes, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata);\n } else {\n var ownerValidationSalt = (0, _util.stringToBytes)(dict.get(\"O\")).subarray(32, 40);\n var ownerKeySalt = (0, _util.stringToBytes)(dict.get(\"O\")).subarray(40, 48);\n var uBytes = (0, _util.stringToBytes)(dict.get(\"U\")).subarray(0, 48);\n var userValidationSalt = (0, _util.stringToBytes)(dict.get(\"U\")).subarray(32, 40);\n var userKeySalt = (0, _util.stringToBytes)(dict.get(\"U\")).subarray(40, 48);\n var ownerEncryption = (0, _util.stringToBytes)(dict.get(\"OE\"));\n var userEncryption = (0, _util.stringToBytes)(dict.get(\"UE\"));\n var perms = (0, _util.stringToBytes)(dict.get(\"Perms\"));\n encryptionKey = createEncryptionKey20(revision, passwordBytes, ownerPassword, ownerValidationSalt, ownerKeySalt, uBytes, userPassword, userValidationSalt, userKeySalt, ownerEncryption, userEncryption, perms);\n }\n\n if (!encryptionKey && !password) {\n throw new _util.PasswordException(\"No password given\", _util.PasswordResponses.NEED_PASSWORD);\n } else if (!encryptionKey && password) {\n var decodedPassword = decodeUserPassword(passwordBytes, ownerPassword, revision, keyLength);\n encryptionKey = prepareKeyData(fileIdBytes, decodedPassword, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata);\n }\n\n if (!encryptionKey) {\n throw new _util.PasswordException(\"Incorrect Password\", _util.PasswordResponses.INCORRECT_PASSWORD);\n }\n\n this.encryptionKey = encryptionKey;\n\n if (algorithm >= 4) {\n var cf = dict.get(\"CF\");\n\n if ((0, _primitives.isDict)(cf)) {\n cf.suppressEncryption = true;\n }\n\n this.cf = cf;\n this.stmf = dict.get(\"StmF\") || identityName;\n this.strf = dict.get(\"StrF\") || identityName;\n this.eff = dict.get(\"EFF\") || this.stmf;\n }\n }\n\n function buildObjectKey(num, gen, encryptionKey, isAes) {\n var key = new Uint8Array(encryptionKey.length + 9),\n i,\n n;\n\n for (i = 0, n = encryptionKey.length; i < n; ++i) {\n key[i] = encryptionKey[i];\n }\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\n if (isAes) {\n key[i++] = 0x73;\n key[i++] = 0x41;\n key[i++] = 0x6c;\n key[i++] = 0x54;\n }\n\n var hash = calculateMD5(key, 0, i);\n return hash.subarray(0, Math.min(encryptionKey.length + 5, 16));\n }\n\n function buildCipherConstructor(cf, name, num, gen, key) {\n if (!(0, _primitives.isName)(name)) {\n throw new _util.FormatError(\"Invalid crypt filter name.\");\n }\n\n var cryptFilter = cf.get(name.name);\n var cfm;\n\n if (cryptFilter !== null && cryptFilter !== undefined) {\n cfm = cryptFilter.get(\"CFM\");\n }\n\n if (!cfm || cfm.name === \"None\") {\n return function cipherTransformFactoryBuildCipherConstructorNone() {\n return new NullCipher();\n };\n }\n\n if (cfm.name === \"V2\") {\n return function cipherTransformFactoryBuildCipherConstructorV2() {\n return new ARCFourCipher(buildObjectKey(num, gen, key, false));\n };\n }\n\n if (cfm.name === \"AESV2\") {\n return function cipherTransformFactoryBuildCipherConstructorAESV2() {\n return new AES128Cipher(buildObjectKey(num, gen, key, true));\n };\n }\n\n if (cfm.name === \"AESV3\") {\n return function cipherTransformFactoryBuildCipherConstructorAESV3() {\n return new AES256Cipher(key);\n };\n }\n\n throw new _util.FormatError(\"Unknown crypto method\");\n }\n\n CipherTransformFactory.prototype = {\n createCipherTransform: function CipherTransformFactory_createCipherTransform(num, gen) {\n if (this.algorithm === 4 || this.algorithm === 5) {\n return new CipherTransform(buildCipherConstructor(this.cf, this.stmf, num, gen, this.encryptionKey), buildCipherConstructor(this.cf, this.strf, num, gen, this.encryptionKey));\n }\n\n var key = buildObjectKey(num, gen, this.encryptionKey, false);\n\n var cipherConstructor = function buildCipherCipherConstructor() {\n return new ARCFourCipher(key);\n };\n\n return new CipherTransform(cipherConstructor, cipherConstructor);\n }\n };\n return CipherTransformFactory;\n}();\n\nexports.CipherTransformFactory = CipherTransformFactory;\n\n/***/ }),\n/* 216 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ColorSpace = void 0;\n\nvar _util = __w_pdfjs_require__(5);\n\nvar _primitives = __w_pdfjs_require__(198);\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction resizeRgbImage(src, dest, w1, h1, w2, h2, alpha01) {\n var COMPONENTS = 3;\n alpha01 = alpha01 !== 1 ? 0 : alpha01;\n var xRatio = w1 / w2;\n var yRatio = h1 / h2;\n var newIndex = 0,\n oldIndex;\n var xScaled = new Uint16Array(w2);\n var w1Scanline = w1 * COMPONENTS;\n\n for (var i = 0; i < w2; i++) {\n xScaled[i] = Math.floor(i * xRatio) * COMPONENTS;\n }\n\n for (var _i = 0; _i < h2; _i++) {\n var py = Math.floor(_i * yRatio) * w1Scanline;\n\n for (var 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\nvar ColorSpace = /*#__PURE__*/function () {\n function ColorSpace(name, numComps) {\n _classCallCheck(this, ColorSpace);\n\n if (this.constructor === ColorSpace) {\n (0, _util.unreachable)(\"Cannot initialize ColorSpace.\");\n }\n\n this.name = name;\n this.numComps = numComps;\n }\n\n _createClass(ColorSpace, [{\n key: \"getRgb\",\n value: function getRgb(src, srcOffset) {\n var rgb = new Uint8ClampedArray(3);\n this.getRgbItem(src, srcOffset, rgb, 0);\n return rgb;\n }\n }, {\n key: \"getRgbItem\",\n value: function getRgbItem(src, srcOffset, dest, destOffset) {\n (0, _util.unreachable)(\"Should not call ColorSpace.getRgbItem\");\n }\n }, {\n key: \"getRgbBuffer\",\n value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n (0, _util.unreachable)(\"Should not call ColorSpace.getRgbBuffer\");\n }\n }, {\n key: \"getOutputLength\",\n value: function getOutputLength(inputLength, alpha01) {\n (0, _util.unreachable)(\"Should not call ColorSpace.getOutputLength\");\n }\n }, {\n key: \"isPassthrough\",\n value: function isPassthrough(bits) {\n return false;\n }\n }, {\n key: \"isDefaultDecode\",\n value: function isDefaultDecode(decodeMap, bpc) {\n return ColorSpace.isDefaultDecode(decodeMap, this.numComps);\n }\n }, {\n key: \"fillRgb\",\n value: function fillRgb(dest, originalWidth, originalHeight, width, height, actualHeight, bpc, comps, alpha01) {\n var count = originalWidth * originalHeight;\n var rgbBuf = null;\n var numComponentColors = 1 << bpc;\n var needsResizing = originalHeight !== height || originalWidth !== width;\n\n if (this.isPassthrough(bpc)) {\n rgbBuf = comps;\n } else if (this.numComps === 1 && count > numComponentColors && this.name !== \"DeviceGray\" && this.name !== \"DeviceRGB\") {\n var allColors = bpc <= 8 ? new Uint8Array(numComponentColors) : new Uint16Array(numComponentColors);\n\n for (var i = 0; i < numComponentColors; i++) {\n allColors[i] = i;\n }\n\n var colorMap = new Uint8ClampedArray(numComponentColors * 3);\n this.getRgbBuffer(allColors, 0, numComponentColors, colorMap, 0, bpc, 0);\n\n if (!needsResizing) {\n var destPos = 0;\n\n for (var _i2 = 0; _i2 < count; ++_i2) {\n var key = comps[_i2] * 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 var rgbPos = 0;\n\n for (var _i3 = 0; _i3 < count; ++_i3) {\n var _key = comps[_i3] * 3;\n\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 this.getRgbBuffer(comps, 0, width * actualHeight, dest, 0, bpc, alpha01);\n } else {\n rgbBuf = new Uint8ClampedArray(count * 3);\n this.getRgbBuffer(comps, 0, count, rgbBuf, 0, bpc, 0);\n }\n }\n\n if (rgbBuf) {\n if (needsResizing) {\n resizeRgbImage(rgbBuf, dest, originalWidth, originalHeight, width, height, alpha01);\n } else {\n var _destPos = 0,\n _rgbPos = 0;\n\n for (var _i4 = 0, ii = width * actualHeight; _i4 < ii; _i4++) {\n dest[_destPos++] = rgbBuf[_rgbPos++];\n dest[_destPos++] = rgbBuf[_rgbPos++];\n dest[_destPos++] = rgbBuf[_rgbPos++];\n _destPos += alpha01;\n }\n }\n }\n }\n }, {\n key: \"usesZeroToOneRange\",\n get: function get() {\n return (0, _util.shadow)(this, \"usesZeroToOneRange\", true);\n }\n }], [{\n key: \"parse\",\n value: function parse(cs, xref, res, pdfFunctionFactory) {\n var IR = this.parseToIR(cs, xref, res, pdfFunctionFactory);\n return this.fromIR(IR);\n }\n }, {\n key: \"fromIR\",\n value: function fromIR(IR) {\n var name = Array.isArray(IR) ? IR[0] : IR;\n var whitePoint, blackPoint, gamma;\n\n switch (name) {\n case \"DeviceGrayCS\":\n return this.singletons.gray;\n\n case \"DeviceRgbCS\":\n return this.singletons.rgb;\n\n case \"DeviceCmykCS\":\n return this.singletons.cmyk;\n\n case \"CalGrayCS\":\n whitePoint = IR[1];\n blackPoint = IR[2];\n gamma = IR[3];\n return new CalGrayCS(whitePoint, blackPoint, gamma);\n\n case \"CalRGBCS\":\n whitePoint = IR[1];\n blackPoint = IR[2];\n gamma = IR[3];\n var matrix = IR[4];\n return new CalRGBCS(whitePoint, blackPoint, gamma, matrix);\n\n case \"PatternCS\":\n var basePatternCS = IR[1];\n\n if (basePatternCS) {\n basePatternCS = this.fromIR(basePatternCS);\n }\n\n return new PatternCS(basePatternCS);\n\n case \"IndexedCS\":\n var baseIndexedCS = IR[1];\n var hiVal = IR[2];\n var lookup = IR[3];\n return new IndexedCS(this.fromIR(baseIndexedCS), hiVal, lookup);\n\n case \"AlternateCS\":\n var numComps = IR[1];\n var alt = IR[2];\n var tintFn = IR[3];\n return new AlternateCS(numComps, this.fromIR(alt), tintFn);\n\n case \"LabCS\":\n whitePoint = IR[1];\n blackPoint = IR[2];\n var range = IR[3];\n return new LabCS(whitePoint, blackPoint, range);\n\n default:\n throw new _util.FormatError(\"Unknown colorspace name: \".concat(name));\n }\n }\n }, {\n key: \"parseToIR\",\n value: function parseToIR(cs, xref) {\n var res = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var pdfFunctionFactory = arguments.length > 3 ? arguments[3] : undefined;\n cs = xref.fetchIfRef(cs);\n\n if ((0, _primitives.isName)(cs)) {\n switch (cs.name) {\n case \"DeviceGray\":\n case \"G\":\n return \"DeviceGrayCS\";\n\n case \"DeviceRGB\":\n case \"RGB\":\n return \"DeviceRgbCS\";\n\n case \"DeviceCMYK\":\n case \"CMYK\":\n return \"DeviceCmykCS\";\n\n case \"Pattern\":\n return [\"PatternCS\", null];\n\n default:\n if ((0, _primitives.isDict)(res)) {\n var colorSpaces = res.get(\"ColorSpace\");\n\n if ((0, _primitives.isDict)(colorSpaces)) {\n var resCS = colorSpaces.get(cs.name);\n\n if (resCS) {\n if ((0, _primitives.isName)(resCS)) {\n return this.parseToIR(resCS, xref, res, pdfFunctionFactory);\n }\n\n cs = resCS;\n break;\n }\n }\n }\n\n throw new _util.FormatError(\"unrecognized colorspace \".concat(cs.name));\n }\n }\n\n if (Array.isArray(cs)) {\n var mode = xref.fetchIfRef(cs[0]).name;\n var numComps, params, alt, whitePoint, blackPoint, gamma;\n\n switch (mode) {\n case \"DeviceGray\":\n case \"G\":\n return \"DeviceGrayCS\";\n\n case \"DeviceRGB\":\n case \"RGB\":\n return \"DeviceRgbCS\";\n\n case \"DeviceCMYK\":\n case \"CMYK\":\n return \"DeviceCmykCS\";\n\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 [\"CalGrayCS\", whitePoint, blackPoint, gamma];\n\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 var matrix = params.getArray(\"Matrix\");\n return [\"CalRGBCS\", whitePoint, blackPoint, gamma, matrix];\n\n case \"ICCBased\":\n var stream = xref.fetchIfRef(cs[1]);\n var dict = stream.dict;\n numComps = dict.get(\"N\");\n alt = dict.get(\"Alternate\");\n\n if (alt) {\n var altIR = this.parseToIR(alt, xref, res, pdfFunctionFactory);\n var altCS = this.fromIR(altIR, pdfFunctionFactory);\n\n if (altCS.numComps === numComps) {\n return altIR;\n }\n\n (0, _util.warn)(\"ICCBased color space: Ignoring incorrect /Alternate entry.\");\n }\n\n if (numComps === 1) {\n return \"DeviceGrayCS\";\n } else if (numComps === 3) {\n return \"DeviceRgbCS\";\n } else if (numComps === 4) {\n return \"DeviceCmykCS\";\n }\n\n break;\n\n case \"Pattern\":\n var basePatternCS = cs[1] || null;\n\n if (basePatternCS) {\n basePatternCS = this.parseToIR(basePatternCS, xref, res, pdfFunctionFactory);\n }\n\n return [\"PatternCS\", basePatternCS];\n\n case \"Indexed\":\n case \"I\":\n var baseIndexedCS = this.parseToIR(cs[1], xref, res, pdfFunctionFactory);\n var hiVal = xref.fetchIfRef(cs[2]) + 1;\n var lookup = xref.fetchIfRef(cs[3]);\n\n if ((0, _primitives.isStream)(lookup)) {\n lookup = lookup.getBytes();\n }\n\n return [\"IndexedCS\", baseIndexedCS, hiVal, lookup];\n\n case \"Separation\":\n case \"DeviceN\":\n var name = xref.fetchIfRef(cs[1]);\n numComps = Array.isArray(name) ? name.length : 1;\n alt = this.parseToIR(cs[2], xref, res, pdfFunctionFactory);\n var tintFn = pdfFunctionFactory.create(xref.fetchIfRef(cs[3]));\n return [\"AlternateCS\", numComps, alt, tintFn];\n\n case \"Lab\":\n params = xref.fetchIfRef(cs[1]);\n whitePoint = params.getArray(\"WhitePoint\");\n blackPoint = params.getArray(\"BlackPoint\");\n var range = params.getArray(\"Range\");\n return [\"LabCS\", whitePoint, blackPoint, range];\n\n default:\n throw new _util.FormatError(\"unimplemented color space object \\\"\".concat(mode, \"\\\"\"));\n }\n }\n\n throw new _util.FormatError(\"unrecognized color space object: \\\"\".concat(cs, \"\\\"\"));\n }\n }, {\n key: \"isDefaultDecode\",\n value: function isDefaultDecode(decode, numComps) {\n if (!Array.isArray(decode)) {\n return true;\n }\n\n if (numComps * 2 !== decode.length) {\n (0, _util.warn)(\"The decode map is not the correct length\");\n return true;\n }\n\n for (var i = 0, ii = decode.length; i < ii; i += 2) {\n if (decode[i] !== 0 || decode[i + 1] !== 1) {\n return false;\n }\n }\n\n return true;\n }\n }, {\n key: \"singletons\",\n get: function get() {\n return (0, _util.shadow)(this, \"singletons\", {\n get gray() {\n return (0, _util.shadow)(this, \"gray\", new DeviceGrayCS());\n },\n\n get rgb() {\n return (0, _util.shadow)(this, \"rgb\", new DeviceRgbCS());\n },\n\n get cmyk() {\n return (0, _util.shadow)(this, \"cmyk\", new DeviceCmykCS());\n }\n\n });\n }\n }]);\n\n return ColorSpace;\n}();\n\nexports.ColorSpace = ColorSpace;\n\nvar AlternateCS = /*#__PURE__*/function (_ColorSpace) {\n _inherits(AlternateCS, _ColorSpace);\n\n var _super = _createSuper(AlternateCS);\n\n function AlternateCS(numComps, base, tintFn) {\n var _this;\n\n _classCallCheck(this, AlternateCS);\n\n _this = _super.call(this, \"Alternate\", numComps);\n _this.base = base;\n _this.tintFn = tintFn;\n _this.tmpBuf = new Float32Array(base.numComps);\n return _this;\n }\n\n _createClass(AlternateCS, [{\n key: \"getRgbItem\",\n value: function getRgbItem(src, srcOffset, dest, destOffset) {\n var tmpBuf = this.tmpBuf;\n this.tintFn(src, srcOffset, tmpBuf, 0);\n this.base.getRgbItem(tmpBuf, 0, dest, destOffset);\n }\n }, {\n key: \"getRgbBuffer\",\n value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n var tintFn = this.tintFn;\n var base = this.base;\n var scale = 1 / ((1 << bits) - 1);\n var baseNumComps = base.numComps;\n var usesZeroToOneRange = base.usesZeroToOneRange;\n var isPassthrough = (base.isPassthrough(8) || !usesZeroToOneRange) && alpha01 === 0;\n var pos = isPassthrough ? destOffset : 0;\n var baseBuf = isPassthrough ? dest : new Uint8ClampedArray(baseNumComps * count);\n var numComps = this.numComps;\n var scaled = new Float32Array(numComps);\n var tinted = new Float32Array(baseNumComps);\n var 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\n tintFn(scaled, 0, tinted, 0);\n\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 key: \"getOutputLength\",\n value: function getOutputLength(inputLength, alpha01) {\n return this.base.getOutputLength(inputLength * this.base.numComps / this.numComps, alpha01);\n }\n }]);\n\n return AlternateCS;\n}(ColorSpace);\n\nvar PatternCS = /*#__PURE__*/function (_ColorSpace2) {\n _inherits(PatternCS, _ColorSpace2);\n\n var _super2 = _createSuper(PatternCS);\n\n function PatternCS(baseCS) {\n var _this2;\n\n _classCallCheck(this, PatternCS);\n\n _this2 = _super2.call(this, \"Pattern\", null);\n _this2.base = baseCS;\n return _this2;\n }\n\n _createClass(PatternCS, [{\n key: \"isDefaultDecode\",\n value: function isDefaultDecode(decodeMap, bpc) {\n (0, _util.unreachable)(\"Should not call PatternCS.isDefaultDecode\");\n }\n }]);\n\n return PatternCS;\n}(ColorSpace);\n\nvar IndexedCS = /*#__PURE__*/function (_ColorSpace3) {\n _inherits(IndexedCS, _ColorSpace3);\n\n var _super3 = _createSuper(IndexedCS);\n\n function IndexedCS(base, highVal, lookup) {\n var _this3;\n\n _classCallCheck(this, IndexedCS);\n\n _this3 = _super3.call(this, \"Indexed\", 1);\n _this3.base = base;\n _this3.highVal = highVal;\n var baseNumComps = base.numComps;\n var length = baseNumComps * highVal;\n\n if ((0, _primitives.isStream)(lookup)) {\n _this3.lookup = new Uint8Array(length);\n var bytes = lookup.getBytes(length);\n\n _this3.lookup.set(bytes);\n } else if ((0, _util.isString)(lookup)) {\n _this3.lookup = new Uint8Array(length);\n\n for (var i = 0; i < length; ++i) {\n _this3.lookup[i] = lookup.charCodeAt(i);\n }\n } else if (lookup instanceof Uint8Array) {\n _this3.lookup = lookup;\n } else {\n throw new _util.FormatError(\"Unrecognized lookup table: \".concat(lookup));\n }\n\n return _this3;\n }\n\n _createClass(IndexedCS, [{\n key: \"getRgbItem\",\n value: function getRgbItem(src, srcOffset, dest, destOffset) {\n var numComps = this.base.numComps;\n var start = src[srcOffset] * numComps;\n this.base.getRgbBuffer(this.lookup, start, 1, dest, destOffset, 8, 0);\n }\n }, {\n key: \"getRgbBuffer\",\n value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n var base = this.base;\n var numComps = base.numComps;\n var outputDelta = base.getOutputLength(numComps, alpha01);\n var lookup = this.lookup;\n\n for (var i = 0; i < count; ++i) {\n var lookupPos = src[srcOffset++] * numComps;\n base.getRgbBuffer(lookup, lookupPos, 1, dest, destOffset, 8, alpha01);\n destOffset += outputDelta;\n }\n }\n }, {\n key: \"getOutputLength\",\n value: function getOutputLength(inputLength, alpha01) {\n return this.base.getOutputLength(inputLength * this.base.numComps, alpha01);\n }\n }, {\n key: \"isDefaultDecode\",\n value: function isDefaultDecode(decodeMap, bpc) {\n if (!Array.isArray(decodeMap)) {\n return true;\n }\n\n if (decodeMap.length !== 2) {\n (0, _util.warn)(\"Decode map length is not correct\");\n return true;\n }\n\n if (!Number.isInteger(bpc) || bpc < 1) {\n (0, _util.warn)(\"Bits per component is not correct\");\n return true;\n }\n\n return decodeMap[0] === 0 && decodeMap[1] === (1 << bpc) - 1;\n }\n }]);\n\n return IndexedCS;\n}(ColorSpace);\n\nvar DeviceGrayCS = /*#__PURE__*/function (_ColorSpace4) {\n _inherits(DeviceGrayCS, _ColorSpace4);\n\n var _super4 = _createSuper(DeviceGrayCS);\n\n function DeviceGrayCS() {\n _classCallCheck(this, DeviceGrayCS);\n\n return _super4.call(this, \"DeviceGray\", 1);\n }\n\n _createClass(DeviceGrayCS, [{\n key: \"getRgbItem\",\n value: function getRgbItem(src, srcOffset, dest, destOffset) {\n var c = src[srcOffset] * 255;\n dest[destOffset] = dest[destOffset + 1] = dest[destOffset + 2] = c;\n }\n }, {\n key: \"getRgbBuffer\",\n value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n var scale = 255 / ((1 << bits) - 1);\n var j = srcOffset,\n q = destOffset;\n\n for (var i = 0; i < count; ++i) {\n var c = scale * src[j++];\n dest[q++] = c;\n dest[q++] = c;\n dest[q++] = c;\n q += alpha01;\n }\n }\n }, {\n key: \"getOutputLength\",\n value: function getOutputLength(inputLength, alpha01) {\n return inputLength * (3 + alpha01);\n }\n }]);\n\n return DeviceGrayCS;\n}(ColorSpace);\n\nvar DeviceRgbCS = /*#__PURE__*/function (_ColorSpace5) {\n _inherits(DeviceRgbCS, _ColorSpace5);\n\n var _super5 = _createSuper(DeviceRgbCS);\n\n function DeviceRgbCS() {\n _classCallCheck(this, DeviceRgbCS);\n\n return _super5.call(this, \"DeviceRGB\", 3);\n }\n\n _createClass(DeviceRgbCS, [{\n key: \"getRgbItem\",\n value: function getRgbItem(src, srcOffset, dest, destOffset) {\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 key: \"getRgbBuffer\",\n value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (bits === 8 && alpha01 === 0) {\n dest.set(src.subarray(srcOffset, srcOffset + count * 3), destOffset);\n return;\n }\n\n var scale = 255 / ((1 << bits) - 1);\n var j = srcOffset,\n q = destOffset;\n\n for (var 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 key: \"getOutputLength\",\n value: function getOutputLength(inputLength, alpha01) {\n return inputLength * (3 + alpha01) / 3 | 0;\n }\n }, {\n key: \"isPassthrough\",\n value: function isPassthrough(bits) {\n return bits === 8;\n }\n }]);\n\n return DeviceRgbCS;\n}(ColorSpace);\n\nvar DeviceCmykCS = function DeviceCmykCSClosure() {\n function convertToRgb(src, srcOffset, srcScale, dest, destOffset) {\n var c = src[srcOffset] * srcScale;\n var m = src[srcOffset + 1] * srcScale;\n var y = src[srcOffset + 2] * srcScale;\n var k = src[srcOffset + 3] * srcScale;\n dest[destOffset] = 255 + c * (-4.387332384609988 * c + 54.48615194189176 * m + 18.82290502165302 * y + 212.25662451639585 * k + -285.2331026137004) + m * (1.7149763477362134 * m - 5.6096736904047315 * y + -17.873870861415444 * k - 5.497006427196366) + y * (-2.5217340131683033 * y - 21.248923337353073 * k + 17.5119270841813) + k * (-21.86122147463605 * k - 189.48180835922747);\n dest[destOffset + 1] = 255 + c * (8.841041422036149 * c + 60.118027045597366 * m + 6.871425592049007 * y + 31.159100130055922 * k + -79.2970844816548) + m * (-15.310361306967817 * m + 17.575251261109482 * y + 131.35250912493976 * k - 190.9453302588951) + y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) + k * (-20.737325471181034 * k - 187.80453709719578);\n dest[destOffset + 2] = 255 + c * (0.8842522430003296 * c + 8.078677503112928 * m + 30.89978309703729 * y - 0.23883238689178934 * k + -14.183576799673286) + m * (10.49593273432072 * m + 63.02378494754052 * y + 50.606957656360734 * k - 112.23884253719248) + y * (0.03296041114873217 * y + 115.60384449646641 * k + -193.58209356861505) + k * (-22.33816807309886 * k - 180.12613974708367);\n }\n\n var DeviceCmykCS = /*#__PURE__*/function (_ColorSpace6) {\n _inherits(DeviceCmykCS, _ColorSpace6);\n\n var _super6 = _createSuper(DeviceCmykCS);\n\n function DeviceCmykCS() {\n _classCallCheck(this, DeviceCmykCS);\n\n return _super6.call(this, \"DeviceCMYK\", 4);\n }\n\n _createClass(DeviceCmykCS, [{\n key: \"getRgbItem\",\n value: function getRgbItem(src, srcOffset, dest, destOffset) {\n convertToRgb(src, srcOffset, 1, dest, destOffset);\n }\n }, {\n key: \"getRgbBuffer\",\n value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n var scale = 1 / ((1 << bits) - 1);\n\n for (var i = 0; i < count; i++) {\n convertToRgb(src, srcOffset, scale, dest, destOffset);\n srcOffset += 4;\n destOffset += 3 + alpha01;\n }\n }\n }, {\n key: \"getOutputLength\",\n value: function getOutputLength(inputLength, alpha01) {\n return inputLength / 4 * (3 + alpha01) | 0;\n }\n }]);\n\n return DeviceCmykCS;\n }(ColorSpace);\n\n return DeviceCmykCS;\n}();\n\nvar CalGrayCS = function CalGrayCSClosure() {\n function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {\n var A = src[srcOffset] * scale;\n var AG = Math.pow(A, cs.G);\n var L = cs.YW * AG;\n var val = Math.max(295.8 * Math.pow(L, 0.333333333333333333) - 40.8, 0);\n dest[destOffset] = val;\n dest[destOffset + 1] = val;\n dest[destOffset + 2] = val;\n }\n\n var CalGrayCS = /*#__PURE__*/function (_ColorSpace7) {\n _inherits(CalGrayCS, _ColorSpace7);\n\n var _super7 = _createSuper(CalGrayCS);\n\n function CalGrayCS(whitePoint, blackPoint, gamma) {\n var _this4;\n\n _classCallCheck(this, CalGrayCS);\n\n _this4 = _super7.call(this, \"CalGray\", 1);\n\n if (!whitePoint) {\n throw new _util.FormatError(\"WhitePoint missing - required for color space CalGray\");\n }\n\n blackPoint = blackPoint || [0, 0, 0];\n gamma = gamma || 1;\n _this4.XW = whitePoint[0];\n _this4.YW = whitePoint[1];\n _this4.ZW = whitePoint[2];\n _this4.XB = blackPoint[0];\n _this4.YB = blackPoint[1];\n _this4.ZB = blackPoint[2];\n _this4.G = gamma;\n\n if (_this4.XW < 0 || _this4.ZW < 0 || _this4.YW !== 1) {\n throw new _util.FormatError(\"Invalid WhitePoint components for \".concat(_this4.name) + \", no fallback available\");\n }\n\n if (_this4.XB < 0 || _this4.YB < 0 || _this4.ZB < 0) {\n (0, _util.info)(\"Invalid BlackPoint for \".concat(_this4.name, \", falling back to default.\"));\n _this4.XB = _this4.YB = _this4.ZB = 0;\n }\n\n if (_this4.XB !== 0 || _this4.YB !== 0 || _this4.ZB !== 0) {\n (0, _util.warn)(\"\".concat(_this4.name, \", BlackPoint: XB: \").concat(_this4.XB, \", YB: \").concat(_this4.YB, \", \") + \"ZB: \".concat(_this4.ZB, \", only default values are supported.\"));\n }\n\n if (_this4.G < 1) {\n (0, _util.info)(\"Invalid Gamma: \".concat(_this4.G, \" for \").concat(_this4.name, \", \") + \"falling back to default.\");\n _this4.G = 1;\n }\n\n return _this4;\n }\n\n _createClass(CalGrayCS, [{\n key: \"getRgbItem\",\n value: function getRgbItem(src, srcOffset, dest, destOffset) {\n convertToRgb(this, src, srcOffset, dest, destOffset, 1);\n }\n }, {\n key: \"getRgbBuffer\",\n value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n var scale = 1 / ((1 << bits) - 1);\n\n for (var i = 0; i < count; ++i) {\n convertToRgb(this, src, srcOffset, dest, destOffset, scale);\n srcOffset += 1;\n destOffset += 3 + alpha01;\n }\n }\n }, {\n key: \"getOutputLength\",\n value: function getOutputLength(inputLength, alpha01) {\n return inputLength * (3 + alpha01);\n }\n }]);\n\n return CalGrayCS;\n }(ColorSpace);\n\n return CalGrayCS;\n}();\n\nvar CalRGBCS = function CalRGBCSClosure() {\n var BRADFORD_SCALE_MATRIX = new Float32Array([0.8951, 0.2664, -0.1614, -0.7502, 1.7135, 0.0367, 0.0389, -0.0685, 1.0296]);\n var BRADFORD_SCALE_INVERSE_MATRIX = new Float32Array([0.9869929, -0.1470543, 0.1599627, 0.4323053, 0.5183603, 0.0492912, -0.0085287, 0.0400428, 0.9684867]);\n var SRGB_D65_XYZ_TO_RGB_MATRIX = new Float32Array([3.2404542, -1.5371385, -0.4985314, -0.9692660, 1.8760108, 0.0415560, 0.0556434, -0.2040259, 1.0572252]);\n var FLAT_WHITEPOINT_MATRIX = new Float32Array([1, 1, 1]);\n var tempNormalizeMatrix = new Float32Array(3);\n var tempConvertMatrix1 = new Float32Array(3);\n var tempConvertMatrix2 = new Float32Array(3);\n var DECODE_L_CONSTANT = Math.pow((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 var D65X = 0.95047;\n var D65Y = 1;\n var D65Z = 1.08883;\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 if (color <= 0.0031308) {\n return adjustToRange(0, 1, 12.92 * color);\n }\n\n return adjustToRange(0, 1, (1 + 0.055) * Math.pow(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\n if (L > 8.0) {\n return Math.pow((L + 16) / 116, 3);\n }\n\n return L * DECODE_L_CONSTANT;\n }\n\n function compensateBlackPoint(sourceBlackPoint, XYZ_Flat, result) {\n if (sourceBlackPoint[0] === 0 && sourceBlackPoint[1] === 0 && sourceBlackPoint[2] === 0) {\n result[0] = XYZ_Flat[0];\n result[1] = XYZ_Flat[1];\n result[2] = XYZ_Flat[2];\n return;\n }\n\n var zeroDecodeL = decodeL(0);\n var X_DST = zeroDecodeL;\n var X_SRC = decodeL(sourceBlackPoint[0]);\n var Y_DST = zeroDecodeL;\n var Y_SRC = decodeL(sourceBlackPoint[1]);\n var Z_DST = zeroDecodeL;\n var Z_SRC = decodeL(sourceBlackPoint[2]);\n var X_Scale = (1 - X_DST) / (1 - X_SRC);\n var X_Offset = 1 - X_Scale;\n var Y_Scale = (1 - Y_DST) / (1 - Y_SRC);\n var Y_Offset = 1 - Y_Scale;\n var Z_Scale = (1 - Z_DST) / (1 - Z_SRC);\n var Z_Offset = 1 - Z_Scale;\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 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 var LMS = result;\n matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n var LMS_Flat = tempNormalizeMatrix;\n convertToFlat(sourceWhitePoint, LMS, LMS_Flat);\n matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_Flat, result);\n }\n\n function normalizeWhitePointToD65(sourceWhitePoint, XYZ_In, result) {\n var LMS = result;\n matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n var LMS_D65 = tempNormalizeMatrix;\n convertToD65(sourceWhitePoint, LMS, LMS_D65);\n matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_D65, result);\n }\n\n function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {\n var A = adjustToRange(0, 1, src[srcOffset] * scale);\n var B = adjustToRange(0, 1, src[srcOffset + 1] * scale);\n var C = adjustToRange(0, 1, src[srcOffset + 2] * scale);\n var AGR = Math.pow(A, cs.GR);\n var BGG = Math.pow(B, cs.GG);\n var CGB = Math.pow(C, cs.GB);\n var X = cs.MXA * AGR + cs.MXB * BGG + cs.MXC * CGB;\n var Y = cs.MYA * AGR + cs.MYB * BGG + cs.MYC * CGB;\n var Z = cs.MZA * AGR + cs.MZB * BGG + cs.MZC * CGB;\n var XYZ = tempConvertMatrix1;\n XYZ[0] = X;\n XYZ[1] = Y;\n XYZ[2] = Z;\n var XYZ_Flat = tempConvertMatrix2;\n normalizeWhitePointToFlat(cs.whitePoint, XYZ, XYZ_Flat);\n var XYZ_Black = tempConvertMatrix1;\n compensateBlackPoint(cs.blackPoint, XYZ_Flat, XYZ_Black);\n var XYZ_D65 = tempConvertMatrix2;\n normalizeWhitePointToD65(FLAT_WHITEPOINT_MATRIX, XYZ_Black, XYZ_D65);\n var SRGB = tempConvertMatrix1;\n matrixProduct(SRGB_D65_XYZ_TO_RGB_MATRIX, XYZ_D65, SRGB);\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 var CalRGBCS = /*#__PURE__*/function (_ColorSpace8) {\n _inherits(CalRGBCS, _ColorSpace8);\n\n var _super8 = _createSuper(CalRGBCS);\n\n function CalRGBCS(whitePoint, blackPoint, gamma, matrix) {\n var _this5;\n\n _classCallCheck(this, CalRGBCS);\n\n _this5 = _super8.call(this, \"CalRGB\", 3);\n\n if (!whitePoint) {\n throw new _util.FormatError(\"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 var XW = whitePoint[0];\n var YW = whitePoint[1];\n var ZW = whitePoint[2];\n _this5.whitePoint = whitePoint;\n var XB = blackPoint[0];\n var YB = blackPoint[1];\n var ZB = blackPoint[2];\n _this5.blackPoint = blackPoint;\n _this5.GR = gamma[0];\n _this5.GG = gamma[1];\n _this5.GB = gamma[2];\n _this5.MXA = matrix[0];\n _this5.MYA = matrix[1];\n _this5.MZA = matrix[2];\n _this5.MXB = matrix[3];\n _this5.MYB = matrix[4];\n _this5.MZB = matrix[5];\n _this5.MXC = matrix[6];\n _this5.MYC = matrix[7];\n _this5.MZC = matrix[8];\n\n if (XW < 0 || ZW < 0 || YW !== 1) {\n throw new _util.FormatError(\"Invalid WhitePoint components for \".concat(_this5.name) + \", no fallback available\");\n }\n\n if (XB < 0 || YB < 0 || ZB < 0) {\n (0, _util.info)(\"Invalid BlackPoint for \".concat(_this5.name, \" [\").concat(XB, \", \").concat(YB, \", \").concat(ZB, \"], \") + \"falling back to default.\");\n _this5.blackPoint = new Float32Array(3);\n }\n\n if (_this5.GR < 0 || _this5.GG < 0 || _this5.GB < 0) {\n (0, _util.info)(\"Invalid Gamma [\".concat(_this5.GR, \", \").concat(_this5.GG, \", \").concat(_this5.GB, \"] for \") + \"\".concat(_this5.name, \", falling back to default.\"));\n _this5.GR = _this5.GG = _this5.GB = 1;\n }\n\n return _this5;\n }\n\n _createClass(CalRGBCS, [{\n key: \"getRgbItem\",\n value: function getRgbItem(src, srcOffset, dest, destOffset) {\n convertToRgb(this, src, srcOffset, dest, destOffset, 1);\n }\n }, {\n key: \"getRgbBuffer\",\n value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n var scale = 1 / ((1 << bits) - 1);\n\n for (var i = 0; i < count; ++i) {\n convertToRgb(this, src, srcOffset, dest, destOffset, scale);\n srcOffset += 3;\n destOffset += 3 + alpha01;\n }\n }\n }, {\n key: \"getOutputLength\",\n value: function getOutputLength(inputLength, alpha01) {\n return inputLength * (3 + alpha01) / 3 | 0;\n }\n }]);\n\n return CalRGBCS;\n }(ColorSpace);\n\n return CalRGBCS;\n}();\n\nvar LabCS = function LabCSClosure() {\n function fn_g(x) {\n var result;\n\n if (x >= 6 / 29) {\n result = x * x * x;\n } else {\n result = 108 / 841 * (x - 4 / 29);\n }\n\n return result;\n }\n\n function decode(value, high1, low2, high2) {\n return low2 + value * (high2 - low2) / high1;\n }\n\n function convertToRgb(cs, src, srcOffset, maxVal, dest, destOffset) {\n var Ls = src[srcOffset];\n var as = src[srcOffset + 1];\n var bs = src[srcOffset + 2];\n\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 if (as > cs.amax) {\n as = cs.amax;\n } else if (as < cs.amin) {\n as = cs.amin;\n }\n\n if (bs > cs.bmax) {\n bs = cs.bmax;\n } else if (bs < cs.bmin) {\n bs = cs.bmin;\n }\n\n var M = (Ls + 16) / 116;\n var L = M + as / 500;\n var N = M - bs / 200;\n var X = cs.XW * fn_g(L);\n var Y = cs.YW * fn_g(M);\n var Z = cs.ZW * fn_g(N);\n var r, g, b;\n\n if (cs.ZW < 1) {\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 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\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 var LabCS = /*#__PURE__*/function (_ColorSpace9) {\n _inherits(LabCS, _ColorSpace9);\n\n var _super9 = _createSuper(LabCS);\n\n function LabCS(whitePoint, blackPoint, range) {\n var _this6;\n\n _classCallCheck(this, LabCS);\n\n _this6 = _super9.call(this, \"Lab\", 3);\n\n if (!whitePoint) {\n throw new _util.FormatError(\"WhitePoint missing - required for color space Lab\");\n }\n\n blackPoint = blackPoint || [0, 0, 0];\n range = range || [-100, 100, -100, 100];\n _this6.XW = whitePoint[0];\n _this6.YW = whitePoint[1];\n _this6.ZW = whitePoint[2];\n _this6.amin = range[0];\n _this6.amax = range[1];\n _this6.bmin = range[2];\n _this6.bmax = range[3];\n _this6.XB = blackPoint[0];\n _this6.YB = blackPoint[1];\n _this6.ZB = blackPoint[2];\n\n if (_this6.XW < 0 || _this6.ZW < 0 || _this6.YW !== 1) {\n throw new _util.FormatError(\"Invalid WhitePoint components, no fallback available\");\n }\n\n if (_this6.XB < 0 || _this6.YB < 0 || _this6.ZB < 0) {\n (0, _util.info)(\"Invalid BlackPoint, falling back to default\");\n _this6.XB = _this6.YB = _this6.ZB = 0;\n }\n\n if (_this6.amin > _this6.amax || _this6.bmin > _this6.bmax) {\n (0, _util.info)(\"Invalid Range, falling back to defaults\");\n _this6.amin = -100;\n _this6.amax = 100;\n _this6.bmin = -100;\n _this6.bmax = 100;\n }\n\n return _this6;\n }\n\n _createClass(LabCS, [{\n key: \"getRgbItem\",\n value: function getRgbItem(src, srcOffset, dest, destOffset) {\n convertToRgb(this, src, srcOffset, false, dest, destOffset);\n }\n }, {\n key: \"getRgbBuffer\",\n value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n var maxVal = (1 << bits) - 1;\n\n for (var i = 0; i < count; i++) {\n convertToRgb(this, src, srcOffset, maxVal, dest, destOffset);\n srcOffset += 3;\n destOffset += 3 + alpha01;\n }\n }\n }, {\n key: \"getOutputLength\",\n value: function getOutputLength(inputLength, alpha01) {\n return inputLength * (3 + alpha01) / 3 | 0;\n }\n }, {\n key: \"isDefaultDecode\",\n value: function isDefaultDecode(decodeMap, bpc) {\n return true;\n }\n }, {\n key: \"usesZeroToOneRange\",\n get: function get() {\n return (0, _util.shadow)(this, \"usesZeroToOneRange\", false);\n }\n }]);\n\n return LabCS;\n }(ColorSpace);\n\n return LabCS;\n}();\n\n/***/ }),\n/* 217 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.GlobalImageCache = exports.LocalImageCache = void 0;\n\nvar _util = __w_pdfjs_require__(5);\n\nvar _primitives = __w_pdfjs_require__(198);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar LocalImageCache = /*#__PURE__*/function () {\n function LocalImageCache() {\n _classCallCheck(this, LocalImageCache);\n\n this._nameRefMap = new Map();\n this._imageMap = new Map();\n this._imageCache = new _primitives.RefSetCache();\n }\n\n _createClass(LocalImageCache, [{\n key: \"getByName\",\n value: function getByName(name) {\n var ref = this._nameRefMap.get(name);\n\n if (ref) {\n return this.getByRef(ref);\n }\n\n return this._imageMap.get(name) || null;\n }\n }, {\n key: \"getByRef\",\n value: function getByRef(ref) {\n return this._imageCache.get(ref) || null;\n }\n }, {\n key: \"set\",\n value: function set(name) {\n var ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var data = arguments.length > 2 ? arguments[2] : undefined;\n\n if (!name) {\n throw new Error('LocalImageCache.set - expected \"name\" argument.');\n }\n\n if (ref) {\n if (this._imageCache.has(ref)) {\n return;\n }\n\n this._nameRefMap.set(name, ref);\n\n this._imageCache.put(ref, data);\n\n return;\n }\n\n if (this._imageMap.has(name)) {\n return;\n }\n\n this._imageMap.set(name, data);\n }\n }]);\n\n return LocalImageCache;\n}();\n\nexports.LocalImageCache = LocalImageCache;\n\nvar GlobalImageCache = /*#__PURE__*/function () {\n _createClass(GlobalImageCache, null, [{\n key: \"NUM_PAGES_THRESHOLD\",\n get: function get() {\n return (0, _util.shadow)(this, \"NUM_PAGES_THRESHOLD\", 2);\n }\n }, {\n key: \"MAX_IMAGES_TO_CACHE\",\n get: function get() {\n return (0, _util.shadow)(this, \"MAX_IMAGES_TO_CACHE\", 10);\n }\n }]);\n\n function GlobalImageCache() {\n _classCallCheck(this, GlobalImageCache);\n\n this._refCache = new _primitives.RefSetCache();\n this._imageCache = new _primitives.RefSetCache();\n }\n\n _createClass(GlobalImageCache, [{\n key: \"shouldCache\",\n value: function shouldCache(ref, pageIndex) {\n var pageIndexSet = this._refCache.get(ref);\n\n var numPages = pageIndexSet ? pageIndexSet.size + (pageIndexSet.has(pageIndex) ? 0 : 1) : 1;\n\n if (numPages < GlobalImageCache.NUM_PAGES_THRESHOLD) {\n return false;\n }\n\n if (!this._imageCache.has(ref) && this._imageCache.size >= GlobalImageCache.MAX_IMAGES_TO_CACHE) {\n return false;\n }\n\n return true;\n }\n }, {\n key: \"addPageIndex\",\n value: function addPageIndex(ref, pageIndex) {\n var pageIndexSet = this._refCache.get(ref);\n\n if (!pageIndexSet) {\n pageIndexSet = new Set();\n\n this._refCache.put(ref, pageIndexSet);\n }\n\n pageIndexSet.add(pageIndex);\n }\n }, {\n key: \"getData\",\n value: function getData(ref, pageIndex) {\n if (!this._refCache.has(ref)) {\n return null;\n }\n\n var pageIndexSet = this._refCache.get(ref);\n\n if (pageIndexSet.size < GlobalImageCache.NUM_PAGES_THRESHOLD) {\n return null;\n }\n\n if (!this._imageCache.has(ref)) {\n return null;\n }\n\n pageIndexSet.add(pageIndex);\n return this._imageCache.get(ref);\n }\n }, {\n key: \"setData\",\n value: function setData(ref, data) {\n if (!this._refCache.has(ref)) {\n throw new Error('GlobalImageCache.setData - expected \"addPageIndex\" to have been called.');\n }\n\n if (this._imageCache.has(ref)) {\n return;\n }\n\n if (this._imageCache.size >= GlobalImageCache.MAX_IMAGES_TO_CACHE) {\n (0, _util.info)(\"GlobalImageCache.setData - ignoring image above MAX_IMAGES_TO_CACHE.\");\n return;\n }\n\n this._imageCache.put(ref, data);\n }\n }, {\n key: \"clear\",\n value: function clear() {\n var onlyData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (!onlyData) {\n this._refCache.clear();\n }\n\n this._imageCache.clear();\n }\n }]);\n\n return GlobalImageCache;\n}();\n\nexports.GlobalImageCache = GlobalImageCache;\n\n/***/ }),\n/* 218 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getQuadPoints = getQuadPoints;\nexports.MarkupAnnotation = exports.AnnotationFactory = exports.AnnotationBorderStyle = exports.Annotation = void 0;\n\nvar _util = __w_pdfjs_require__(5);\n\nvar _obj = __w_pdfjs_require__(203);\n\nvar _primitives = __w_pdfjs_require__(198);\n\nvar _colorspace = __w_pdfjs_require__(216);\n\nvar _core_utils = __w_pdfjs_require__(201);\n\nvar _operator_list = __w_pdfjs_require__(219);\n\nvar _stream = __w_pdfjs_require__(205);\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar AnnotationFactory = /*#__PURE__*/function () {\n function AnnotationFactory() {\n _classCallCheck(this, AnnotationFactory);\n }\n\n _createClass(AnnotationFactory, null, [{\n key: \"create\",\n value: function create(xref, ref, pdfManager, idFactory) {\n return pdfManager.ensure(this, \"_create\", [xref, ref, pdfManager, idFactory]);\n }\n }, {\n key: \"_create\",\n value: function _create(xref, ref, pdfManager, idFactory) {\n var dict = xref.fetchIfRef(ref);\n\n if (!(0, _primitives.isDict)(dict)) {\n return undefined;\n }\n\n var id = (0, _primitives.isRef)(ref) ? ref.toString() : \"annot_\".concat(idFactory.createObjId());\n var subtype = dict.get(\"Subtype\");\n subtype = (0, _primitives.isName)(subtype) ? subtype.name : null;\n var parameters = {\n xref: xref,\n dict: dict,\n subtype: subtype,\n id: id,\n pdfManager: pdfManager\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 var fieldType = (0, _core_utils.getInheritableProperty)({\n dict: dict,\n key: \"FT\"\n });\n fieldType = (0, _primitives.isName)(fieldType) ? fieldType.name : null;\n\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotation(parameters);\n\n case \"Btn\":\n return new ButtonWidgetAnnotation(parameters);\n\n case \"Ch\":\n return new ChoiceWidgetAnnotation(parameters);\n }\n\n (0, _util.warn)('Unimplemented widget field type \"' + fieldType + '\", ' + \"falling back to base field type.\");\n return new WidgetAnnotation(parameters);\n\n case \"Popup\":\n return new PopupAnnotation(parameters);\n\n case \"FreeText\":\n return new FreeTextAnnotation(parameters);\n\n case \"Line\":\n return new LineAnnotation(parameters);\n\n case \"Square\":\n return new SquareAnnotation(parameters);\n\n case \"Circle\":\n return new CircleAnnotation(parameters);\n\n case \"PolyLine\":\n return new PolylineAnnotation(parameters);\n\n case \"Polygon\":\n return new PolygonAnnotation(parameters);\n\n case \"Caret\":\n return new CaretAnnotation(parameters);\n\n case \"Ink\":\n return new InkAnnotation(parameters);\n\n case \"Highlight\":\n return new HighlightAnnotation(parameters);\n\n case \"Underline\":\n return new UnderlineAnnotation(parameters);\n\n case \"Squiggly\":\n return new SquigglyAnnotation(parameters);\n\n case \"StrikeOut\":\n return new StrikeOutAnnotation(parameters);\n\n case \"Stamp\":\n return new StampAnnotation(parameters);\n\n case \"FileAttachment\":\n return new FileAttachmentAnnotation(parameters);\n\n default:\n if (!subtype) {\n (0, _util.warn)(\"Annotation is missing the required /Subtype.\");\n } else {\n (0, _util.warn)('Unimplemented annotation type \"' + subtype + '\", ' + \"falling back to base annotation.\");\n }\n\n return new Annotation(parameters);\n }\n }\n }]);\n\n return AnnotationFactory;\n}();\n\nexports.AnnotationFactory = AnnotationFactory;\n\nfunction getQuadPoints(dict, rect) {\n if (!dict.has(\"QuadPoints\")) {\n return null;\n }\n\n var quadPoints = dict.getArray(\"QuadPoints\");\n\n if (!Array.isArray(quadPoints) || quadPoints.length % 8 > 0) {\n return null;\n }\n\n var quadPointsLists = [];\n\n for (var i = 0, ii = quadPoints.length / 8; i < ii; i++) {\n quadPointsLists.push([]);\n\n for (var j = i * 8, jj = i * 8 + 8; j < jj; j += 2) {\n var x = quadPoints[j];\n var y = quadPoints[j + 1];\n\n if (x < rect[0] || x > rect[2] || y < rect[1] || y > rect[3]) {\n return null;\n }\n\n quadPointsLists[i].push({\n x: x,\n y: y\n });\n }\n }\n\n return quadPointsLists;\n}\n\nfunction getTransformMatrix(rect, bbox, matrix) {\n var _Util$getAxialAligned = _util.Util.getAxialAlignedBoundingBox(bbox, matrix),\n _Util$getAxialAligned2 = _slicedToArray(_Util$getAxialAligned, 4),\n minX = _Util$getAxialAligned2[0],\n minY = _Util$getAxialAligned2[1],\n maxX = _Util$getAxialAligned2[2],\n maxY = _Util$getAxialAligned2[3];\n\n if (minX === maxX || minY === maxY) {\n return [1, 0, 0, 1, rect[0], rect[1]];\n }\n\n var xRatio = (rect[2] - rect[0]) / (maxX - minX);\n var yRatio = (rect[3] - rect[1]) / (maxY - minY);\n return [xRatio, 0, 0, yRatio, rect[0] - minX * xRatio, rect[1] - minY * yRatio];\n}\n\nvar Annotation = /*#__PURE__*/function () {\n function Annotation(params) {\n _classCallCheck(this, Annotation);\n\n var dict = params.dict;\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.data = {\n annotationFlags: this.flags,\n borderStyle: this.borderStyle,\n color: this.color,\n contents: this.contents,\n hasAppearance: !!this.appearance,\n id: params.id,\n modificationDate: this.modificationDate,\n rect: this.rectangle,\n subtype: params.subtype\n };\n }\n\n _createClass(Annotation, [{\n key: \"_hasFlag\",\n value: function _hasFlag(flags, flag) {\n return !!(flags & flag);\n }\n }, {\n key: \"_isViewable\",\n value: function _isViewable(flags) {\n return !this._hasFlag(flags, _util.AnnotationFlag.INVISIBLE) && !this._hasFlag(flags, _util.AnnotationFlag.HIDDEN) && !this._hasFlag(flags, _util.AnnotationFlag.NOVIEW);\n }\n }, {\n key: \"_isPrintable\",\n value: function _isPrintable(flags) {\n return this._hasFlag(flags, _util.AnnotationFlag.PRINT) && !this._hasFlag(flags, _util.AnnotationFlag.INVISIBLE) && !this._hasFlag(flags, _util.AnnotationFlag.HIDDEN);\n }\n }, {\n key: \"setContents\",\n value: function setContents(contents) {\n this.contents = (0, _util.stringToPDFString)(contents || \"\");\n }\n }, {\n key: \"setModificationDate\",\n value: function setModificationDate(modificationDate) {\n this.modificationDate = (0, _util.isString)(modificationDate) ? modificationDate : null;\n }\n }, {\n key: \"setFlags\",\n value: function setFlags(flags) {\n this.flags = Number.isInteger(flags) && flags > 0 ? flags : 0;\n }\n }, {\n key: \"hasFlag\",\n value: function hasFlag(flag) {\n return this._hasFlag(this.flags, flag);\n }\n }, {\n key: \"setRectangle\",\n value: function setRectangle(rectangle) {\n if (Array.isArray(rectangle) && rectangle.length === 4) {\n this.rectangle = _util.Util.normalizeRect(rectangle);\n } else {\n this.rectangle = [0, 0, 0, 0];\n }\n }\n }, {\n key: \"setColor\",\n value: function setColor(color) {\n var rgbColor = new Uint8ClampedArray(3);\n\n if (!Array.isArray(color)) {\n this.color = rgbColor;\n return;\n }\n\n switch (color.length) {\n case 0:\n this.color = null;\n break;\n\n case 1:\n _colorspace.ColorSpace.singletons.gray.getRgbItem(color, 0, rgbColor, 0);\n\n this.color = rgbColor;\n break;\n\n case 3:\n _colorspace.ColorSpace.singletons.rgb.getRgbItem(color, 0, rgbColor, 0);\n\n this.color = rgbColor;\n break;\n\n case 4:\n _colorspace.ColorSpace.singletons.cmyk.getRgbItem(color, 0, rgbColor, 0);\n\n this.color = rgbColor;\n break;\n\n default:\n this.color = rgbColor;\n break;\n }\n }\n }, {\n key: \"setBorderStyle\",\n value: function setBorderStyle(borderStyle) {\n this.borderStyle = new AnnotationBorderStyle();\n\n if (!(0, _primitives.isDict)(borderStyle)) {\n return;\n }\n\n if (borderStyle.has(\"BS\")) {\n var dict = borderStyle.get(\"BS\");\n var dictType = dict.get(\"Type\");\n\n if (!dictType || (0, _primitives.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 var array = borderStyle.getArray(\"Border\");\n\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 this.borderStyle.setDashArray(array[3]);\n }\n }\n } else {\n this.borderStyle.setWidth(0);\n }\n }\n }, {\n key: \"setAppearance\",\n value: function setAppearance(dict) {\n this.appearance = null;\n var appearanceStates = dict.get(\"AP\");\n\n if (!(0, _primitives.isDict)(appearanceStates)) {\n return;\n }\n\n var normalAppearanceState = appearanceStates.get(\"N\");\n\n if ((0, _primitives.isStream)(normalAppearanceState)) {\n this.appearance = normalAppearanceState;\n return;\n }\n\n if (!(0, _primitives.isDict)(normalAppearanceState)) {\n return;\n }\n\n var as = dict.get(\"AS\");\n\n if (!(0, _primitives.isName)(as) || !normalAppearanceState.has(as.name)) {\n return;\n }\n\n this.appearance = normalAppearanceState.get(as.name);\n }\n }, {\n key: \"loadResources\",\n value: function loadResources(keys) {\n return this.appearance.dict.getAsync(\"Resources\").then(function (resources) {\n if (!resources) {\n return undefined;\n }\n\n var objectLoader = new _obj.ObjectLoader(resources, keys, resources.xref);\n return objectLoader.load().then(function () {\n return resources;\n });\n });\n }\n }, {\n key: \"getOperatorList\",\n value: function getOperatorList(evaluator, task, renderForms) {\n var _this = this;\n\n if (!this.appearance) {\n return Promise.resolve(new _operator_list.OperatorList());\n }\n\n var data = this.data;\n var appearanceDict = this.appearance.dict;\n var resourcesPromise = this.loadResources([\"ExtGState\", \"ColorSpace\", \"Pattern\", \"Shading\", \"XObject\", \"Font\"]);\n var bbox = appearanceDict.getArray(\"BBox\") || [0, 0, 1, 1];\n var matrix = appearanceDict.getArray(\"Matrix\") || [1, 0, 0, 1, 0, 0];\n var transform = getTransformMatrix(data.rect, bbox, matrix);\n return resourcesPromise.then(function (resources) {\n var opList = new _operator_list.OperatorList();\n opList.addOp(_util.OPS.beginAnnotation, [data.rect, transform, matrix]);\n return evaluator.getOperatorList({\n stream: _this.appearance,\n task: task,\n resources: resources,\n operatorList: opList\n }).then(function () {\n opList.addOp(_util.OPS.endAnnotation, []);\n\n _this.appearance.reset();\n\n return opList;\n });\n });\n }\n }, {\n key: \"viewable\",\n get: function get() {\n if (this.flags === 0) {\n return true;\n }\n\n return this._isViewable(this.flags);\n }\n }, {\n key: \"printable\",\n get: function get() {\n if (this.flags === 0) {\n return false;\n }\n\n return this._isPrintable(this.flags);\n }\n }]);\n\n return Annotation;\n}();\n\nexports.Annotation = Annotation;\n\nvar AnnotationBorderStyle = /*#__PURE__*/function () {\n function AnnotationBorderStyle() {\n _classCallCheck(this, AnnotationBorderStyle);\n\n this.width = 1;\n this.style = _util.AnnotationBorderStyleType.SOLID;\n this.dashArray = [3];\n this.horizontalCornerRadius = 0;\n this.verticalCornerRadius = 0;\n }\n\n _createClass(AnnotationBorderStyle, [{\n key: \"setWidth\",\n value: function setWidth(width) {\n var rect = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [0, 0, 0, 0];\n\n if ((0, _primitives.isName)(width)) {\n this.width = 0;\n return;\n }\n\n if (Number.isInteger(width)) {\n if (width > 0) {\n var maxWidth = (rect[2] - rect[0]) / 2;\n var maxHeight = (rect[3] - rect[1]) / 2;\n\n if (maxWidth > 0 && maxHeight > 0 && (width > maxWidth || width > maxHeight)) {\n (0, _util.warn)(\"AnnotationBorderStyle.setWidth - ignoring width: \".concat(width));\n width = 1;\n }\n }\n\n this.width = width;\n }\n }\n }, {\n key: \"setStyle\",\n value: function setStyle(style) {\n if (!(0, _primitives.isName)(style)) {\n return;\n }\n\n switch (style.name) {\n case \"S\":\n this.style = _util.AnnotationBorderStyleType.SOLID;\n break;\n\n case \"D\":\n this.style = _util.AnnotationBorderStyleType.DASHED;\n break;\n\n case \"B\":\n this.style = _util.AnnotationBorderStyleType.BEVELED;\n break;\n\n case \"I\":\n this.style = _util.AnnotationBorderStyleType.INSET;\n break;\n\n case \"U\":\n this.style = _util.AnnotationBorderStyleType.UNDERLINE;\n break;\n\n default:\n break;\n }\n }\n }, {\n key: \"setDashArray\",\n value: function setDashArray(dashArray) {\n if (Array.isArray(dashArray) && dashArray.length > 0) {\n var isValid = true;\n var allZeros = true;\n\n var _iterator = _createForOfIteratorHelper(dashArray),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var element = _step.value;\n var validNumber = +element >= 0;\n\n if (!validNumber) {\n isValid = false;\n break;\n } else if (element > 0) {\n allZeros = false;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n if (isValid && !allZeros) {\n this.dashArray = dashArray;\n } else {\n this.width = 0;\n }\n } else if (dashArray) {\n this.width = 0;\n }\n }\n }, {\n key: \"setHorizontalCornerRadius\",\n value: function setHorizontalCornerRadius(radius) {\n if (Number.isInteger(radius)) {\n this.horizontalCornerRadius = radius;\n }\n }\n }, {\n key: \"setVerticalCornerRadius\",\n value: function setVerticalCornerRadius(radius) {\n if (Number.isInteger(radius)) {\n this.verticalCornerRadius = radius;\n }\n }\n }]);\n\n return AnnotationBorderStyle;\n}();\n\nexports.AnnotationBorderStyle = AnnotationBorderStyle;\n\nvar MarkupAnnotation = /*#__PURE__*/function (_Annotation) {\n _inherits(MarkupAnnotation, _Annotation);\n\n var _super = _createSuper(MarkupAnnotation);\n\n function MarkupAnnotation(parameters) {\n var _this2;\n\n _classCallCheck(this, MarkupAnnotation);\n\n _this2 = _super.call(this, parameters);\n var dict = parameters.dict;\n\n if (dict.has(\"IRT\")) {\n var rawIRT = dict.getRaw(\"IRT\");\n _this2.data.inReplyTo = (0, _primitives.isRef)(rawIRT) ? rawIRT.toString() : null;\n var rt = dict.get(\"RT\");\n _this2.data.replyType = (0, _primitives.isName)(rt) ? rt.name : _util.AnnotationReplyType.REPLY;\n }\n\n if (_this2.data.replyType === _util.AnnotationReplyType.GROUP) {\n var parent = dict.get(\"IRT\");\n _this2.data.title = (0, _util.stringToPDFString)(parent.get(\"T\") || \"\");\n\n _this2.setContents(parent.get(\"Contents\"));\n\n _this2.data.contents = _this2.contents;\n\n if (!parent.has(\"CreationDate\")) {\n _this2.data.creationDate = null;\n } else {\n _this2.setCreationDate(parent.get(\"CreationDate\"));\n\n _this2.data.creationDate = _this2.creationDate;\n }\n\n if (!parent.has(\"M\")) {\n _this2.data.modificationDate = null;\n } else {\n _this2.setModificationDate(parent.get(\"M\"));\n\n _this2.data.modificationDate = _this2.modificationDate;\n }\n\n _this2.data.hasPopup = parent.has(\"Popup\");\n\n if (!parent.has(\"C\")) {\n _this2.data.color = null;\n } else {\n _this2.setColor(parent.getArray(\"C\"));\n\n _this2.data.color = _this2.color;\n }\n } else {\n _this2.data.title = (0, _util.stringToPDFString)(dict.get(\"T\") || \"\");\n\n _this2.setCreationDate(dict.get(\"CreationDate\"));\n\n _this2.data.creationDate = _this2.creationDate;\n _this2.data.hasPopup = dict.has(\"Popup\");\n\n if (!dict.has(\"C\")) {\n _this2.data.color = null;\n }\n }\n\n return _this2;\n }\n\n _createClass(MarkupAnnotation, [{\n key: \"setCreationDate\",\n value: function setCreationDate(creationDate) {\n this.creationDate = (0, _util.isString)(creationDate) ? creationDate : null;\n }\n }]);\n\n return MarkupAnnotation;\n}(Annotation);\n\nexports.MarkupAnnotation = MarkupAnnotation;\n\nvar WidgetAnnotation = /*#__PURE__*/function (_Annotation2) {\n _inherits(WidgetAnnotation, _Annotation2);\n\n var _super2 = _createSuper(WidgetAnnotation);\n\n function WidgetAnnotation(params) {\n var _this3;\n\n _classCallCheck(this, WidgetAnnotation);\n\n _this3 = _super2.call(this, params);\n var dict = params.dict;\n var data = _this3.data;\n data.annotationType = _util.AnnotationType.WIDGET;\n data.fieldName = _this3._constructFieldName(dict);\n data.fieldValue = (0, _core_utils.getInheritableProperty)({\n dict: dict,\n key: \"V\",\n getArray: true\n });\n data.alternativeText = (0, _util.stringToPDFString)(dict.get(\"TU\") || \"\");\n data.defaultAppearance = (0, _core_utils.getInheritableProperty)({\n dict: dict,\n key: \"DA\"\n }) || \"\";\n var fieldType = (0, _core_utils.getInheritableProperty)({\n dict: dict,\n key: \"FT\"\n });\n data.fieldType = (0, _primitives.isName)(fieldType) ? fieldType.name : null;\n _this3.fieldResources = (0, _core_utils.getInheritableProperty)({\n dict: dict,\n key: \"DR\"\n }) || _primitives.Dict.empty;\n data.fieldFlags = (0, _core_utils.getInheritableProperty)({\n dict: dict,\n key: \"Ff\"\n });\n\n if (!Number.isInteger(data.fieldFlags) || data.fieldFlags < 0) {\n data.fieldFlags = 0;\n }\n\n data.readOnly = _this3.hasFieldFlag(_util.AnnotationFieldFlag.READONLY);\n\n if (data.fieldType === \"Sig\") {\n data.fieldValue = null;\n\n _this3.setFlags(_util.AnnotationFlag.HIDDEN);\n }\n\n return _this3;\n }\n\n _createClass(WidgetAnnotation, [{\n key: \"_constructFieldName\",\n value: function _constructFieldName(dict) {\n if (!dict.has(\"T\") && !dict.has(\"Parent\")) {\n (0, _util.warn)(\"Unknown field name, falling back to empty field name.\");\n return \"\";\n }\n\n if (!dict.has(\"Parent\")) {\n return (0, _util.stringToPDFString)(dict.get(\"T\"));\n }\n\n var fieldName = [];\n\n if (dict.has(\"T\")) {\n fieldName.unshift((0, _util.stringToPDFString)(dict.get(\"T\")));\n }\n\n var loopDict = dict;\n\n while (loopDict.has(\"Parent\")) {\n loopDict = loopDict.get(\"Parent\");\n\n if (!(0, _primitives.isDict)(loopDict)) {\n break;\n }\n\n if (loopDict.has(\"T\")) {\n fieldName.unshift((0, _util.stringToPDFString)(loopDict.get(\"T\")));\n }\n }\n\n return fieldName.join(\".\");\n }\n }, {\n key: \"hasFieldFlag\",\n value: function hasFieldFlag(flag) {\n return !!(this.data.fieldFlags & flag);\n }\n }, {\n key: \"getOperatorList\",\n value: function getOperatorList(evaluator, task, renderForms) {\n if (renderForms) {\n return Promise.resolve(new _operator_list.OperatorList());\n }\n\n return _get(_getPrototypeOf(WidgetAnnotation.prototype), \"getOperatorList\", this).call(this, evaluator, task, renderForms);\n }\n }]);\n\n return WidgetAnnotation;\n}(Annotation);\n\nvar TextWidgetAnnotation = /*#__PURE__*/function (_WidgetAnnotation) {\n _inherits(TextWidgetAnnotation, _WidgetAnnotation);\n\n var _super3 = _createSuper(TextWidgetAnnotation);\n\n function TextWidgetAnnotation(params) {\n var _this4;\n\n _classCallCheck(this, TextWidgetAnnotation);\n\n _this4 = _super3.call(this, params);\n var dict = params.dict;\n _this4.data.fieldValue = (0, _util.stringToPDFString)(_this4.data.fieldValue || \"\");\n var alignment = (0, _core_utils.getInheritableProperty)({\n dict: dict,\n key: \"Q\"\n });\n\n if (!Number.isInteger(alignment) || alignment < 0 || alignment > 2) {\n alignment = null;\n }\n\n _this4.data.textAlignment = alignment;\n var maximumLength = (0, _core_utils.getInheritableProperty)({\n dict: dict,\n key: \"MaxLen\"\n });\n\n if (!Number.isInteger(maximumLength) || maximumLength < 0) {\n maximumLength = null;\n }\n\n _this4.data.maxLen = maximumLength;\n _this4.data.multiLine = _this4.hasFieldFlag(_util.AnnotationFieldFlag.MULTILINE);\n _this4.data.comb = _this4.hasFieldFlag(_util.AnnotationFieldFlag.COMB) && !_this4.hasFieldFlag(_util.AnnotationFieldFlag.MULTILINE) && !_this4.hasFieldFlag(_util.AnnotationFieldFlag.PASSWORD) && !_this4.hasFieldFlag(_util.AnnotationFieldFlag.FILESELECT) && _this4.data.maxLen !== null;\n return _this4;\n }\n\n _createClass(TextWidgetAnnotation, [{\n key: \"getOperatorList\",\n value: function getOperatorList(evaluator, task, renderForms) {\n if (renderForms || this.appearance) {\n return _get(_getPrototypeOf(TextWidgetAnnotation.prototype), \"getOperatorList\", this).call(this, evaluator, task, renderForms);\n }\n\n var operatorList = new _operator_list.OperatorList();\n\n if (!this.data.defaultAppearance) {\n return Promise.resolve(operatorList);\n }\n\n var stream = new _stream.Stream((0, _util.stringToBytes)(this.data.defaultAppearance));\n return evaluator.getOperatorList({\n stream: stream,\n task: task,\n resources: this.fieldResources,\n operatorList: operatorList\n }).then(function () {\n return operatorList;\n });\n }\n }]);\n\n return TextWidgetAnnotation;\n}(WidgetAnnotation);\n\nvar ButtonWidgetAnnotation = /*#__PURE__*/function (_WidgetAnnotation2) {\n _inherits(ButtonWidgetAnnotation, _WidgetAnnotation2);\n\n var _super4 = _createSuper(ButtonWidgetAnnotation);\n\n function ButtonWidgetAnnotation(params) {\n var _this5;\n\n _classCallCheck(this, ButtonWidgetAnnotation);\n\n _this5 = _super4.call(this, params);\n _this5.data.checkBox = !_this5.hasFieldFlag(_util.AnnotationFieldFlag.RADIO) && !_this5.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON);\n _this5.data.radioButton = _this5.hasFieldFlag(_util.AnnotationFieldFlag.RADIO) && !_this5.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON);\n _this5.data.pushButton = _this5.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON);\n\n if (_this5.data.checkBox) {\n _this5._processCheckBox(params);\n } else if (_this5.data.radioButton) {\n _this5._processRadioButton(params);\n } else if (_this5.data.pushButton) {\n _this5._processPushButton(params);\n } else {\n (0, _util.warn)(\"Invalid field flags for button widget annotation\");\n }\n\n return _this5;\n }\n\n _createClass(ButtonWidgetAnnotation, [{\n key: \"_processCheckBox\",\n value: function _processCheckBox(params) {\n if ((0, _primitives.isName)(this.data.fieldValue)) {\n this.data.fieldValue = this.data.fieldValue.name;\n }\n\n var customAppearance = params.dict.get(\"AP\");\n\n if (!(0, _primitives.isDict)(customAppearance)) {\n return;\n }\n\n var exportValueOptionsDict = customAppearance.get(\"D\");\n\n if (!(0, _primitives.isDict)(exportValueOptionsDict)) {\n return;\n }\n\n var exportValues = exportValueOptionsDict.getKeys();\n var hasCorrectOptionCount = exportValues.length === 2;\n\n if (!hasCorrectOptionCount) {\n return;\n }\n\n this.data.exportValue = exportValues[0] === \"Off\" ? exportValues[1] : exportValues[0];\n }\n }, {\n key: \"_processRadioButton\",\n value: function _processRadioButton(params) {\n this.data.fieldValue = this.data.buttonValue = null;\n var fieldParent = params.dict.get(\"Parent\");\n\n if ((0, _primitives.isDict)(fieldParent) && fieldParent.has(\"V\")) {\n var fieldParentValue = fieldParent.get(\"V\");\n\n if ((0, _primitives.isName)(fieldParentValue)) {\n this.data.fieldValue = fieldParentValue.name;\n }\n }\n\n var appearanceStates = params.dict.get(\"AP\");\n\n if (!(0, _primitives.isDict)(appearanceStates)) {\n return;\n }\n\n var normalAppearanceState = appearanceStates.get(\"N\");\n\n if (!(0, _primitives.isDict)(normalAppearanceState)) {\n return;\n }\n\n var _iterator2 = _createForOfIteratorHelper(normalAppearanceState.getKeys()),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var key = _step2.value;\n\n if (key !== \"Off\") {\n this.data.buttonValue = key;\n break;\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n }, {\n key: \"_processPushButton\",\n value: function _processPushButton(params) {\n if (!params.dict.has(\"A\")) {\n (0, _util.warn)(\"Push buttons without action dictionaries are not supported\");\n return;\n }\n\n _obj.Catalog.parseDestDictionary({\n destDict: params.dict,\n resultObj: this.data,\n docBaseUrl: params.pdfManager.docBaseUrl\n });\n }\n }]);\n\n return ButtonWidgetAnnotation;\n}(WidgetAnnotation);\n\nvar ChoiceWidgetAnnotation = /*#__PURE__*/function (_WidgetAnnotation3) {\n _inherits(ChoiceWidgetAnnotation, _WidgetAnnotation3);\n\n var _super5 = _createSuper(ChoiceWidgetAnnotation);\n\n function ChoiceWidgetAnnotation(params) {\n var _this6;\n\n _classCallCheck(this, ChoiceWidgetAnnotation);\n\n _this6 = _super5.call(this, params);\n _this6.data.options = [];\n var options = (0, _core_utils.getInheritableProperty)({\n dict: params.dict,\n key: \"Opt\"\n });\n\n if (Array.isArray(options)) {\n var xref = params.xref;\n\n for (var i = 0, ii = options.length; i < ii; i++) {\n var option = xref.fetchIfRef(options[i]);\n var isOptionArray = Array.isArray(option);\n _this6.data.options[i] = {\n exportValue: isOptionArray ? xref.fetchIfRef(option[0]) : option,\n displayValue: (0, _util.stringToPDFString)(isOptionArray ? xref.fetchIfRef(option[1]) : option)\n };\n }\n }\n\n if (!Array.isArray(_this6.data.fieldValue)) {\n _this6.data.fieldValue = [_this6.data.fieldValue];\n }\n\n _this6.data.combo = _this6.hasFieldFlag(_util.AnnotationFieldFlag.COMBO);\n _this6.data.multiSelect = _this6.hasFieldFlag(_util.AnnotationFieldFlag.MULTISELECT);\n return _this6;\n }\n\n return ChoiceWidgetAnnotation;\n}(WidgetAnnotation);\n\nvar TextAnnotation = /*#__PURE__*/function (_MarkupAnnotation) {\n _inherits(TextAnnotation, _MarkupAnnotation);\n\n var _super6 = _createSuper(TextAnnotation);\n\n function TextAnnotation(parameters) {\n var _this7;\n\n _classCallCheck(this, TextAnnotation);\n\n var DEFAULT_ICON_SIZE = 22;\n _this7 = _super6.call(this, parameters);\n var dict = parameters.dict;\n _this7.data.annotationType = _util.AnnotationType.TEXT;\n\n if (_this7.data.hasAppearance) {\n _this7.data.name = \"NoIcon\";\n } else {\n _this7.data.rect[1] = _this7.data.rect[3] - DEFAULT_ICON_SIZE;\n _this7.data.rect[2] = _this7.data.rect[0] + DEFAULT_ICON_SIZE;\n _this7.data.name = dict.has(\"Name\") ? dict.get(\"Name\").name : \"Note\";\n }\n\n if (dict.has(\"State\")) {\n _this7.data.state = dict.get(\"State\") || null;\n _this7.data.stateModel = dict.get(\"StateModel\") || null;\n } else {\n _this7.data.state = null;\n _this7.data.stateModel = null;\n }\n\n return _this7;\n }\n\n return TextAnnotation;\n}(MarkupAnnotation);\n\nvar LinkAnnotation = /*#__PURE__*/function (_Annotation3) {\n _inherits(LinkAnnotation, _Annotation3);\n\n var _super7 = _createSuper(LinkAnnotation);\n\n function LinkAnnotation(params) {\n var _this8;\n\n _classCallCheck(this, LinkAnnotation);\n\n _this8 = _super7.call(this, params);\n _this8.data.annotationType = _util.AnnotationType.LINK;\n var quadPoints = getQuadPoints(params.dict, _this8.rectangle);\n\n if (quadPoints) {\n _this8.data.quadPoints = quadPoints;\n }\n\n _obj.Catalog.parseDestDictionary({\n destDict: params.dict,\n resultObj: _this8.data,\n docBaseUrl: params.pdfManager.docBaseUrl\n });\n\n return _this8;\n }\n\n return LinkAnnotation;\n}(Annotation);\n\nvar PopupAnnotation = /*#__PURE__*/function (_Annotation4) {\n _inherits(PopupAnnotation, _Annotation4);\n\n var _super8 = _createSuper(PopupAnnotation);\n\n function PopupAnnotation(parameters) {\n var _this9;\n\n _classCallCheck(this, PopupAnnotation);\n\n _this9 = _super8.call(this, parameters);\n _this9.data.annotationType = _util.AnnotationType.POPUP;\n var parentItem = parameters.dict.get(\"Parent\");\n\n if (!parentItem) {\n (0, _util.warn)(\"Popup annotation has a missing or invalid parent annotation.\");\n return _possibleConstructorReturn(_this9);\n }\n\n var parentSubtype = parentItem.get(\"Subtype\");\n _this9.data.parentType = (0, _primitives.isName)(parentSubtype) ? parentSubtype.name : null;\n var rawParent = parameters.dict.getRaw(\"Parent\");\n _this9.data.parentId = (0, _primitives.isRef)(rawParent) ? rawParent.toString() : null;\n var rt = parentItem.get(\"RT\");\n\n if ((0, _primitives.isName)(rt, _util.AnnotationReplyType.GROUP)) {\n parentItem = parentItem.get(\"IRT\");\n }\n\n if (!parentItem.has(\"M\")) {\n _this9.data.modificationDate = null;\n } else {\n _this9.setModificationDate(parentItem.get(\"M\"));\n\n _this9.data.modificationDate = _this9.modificationDate;\n }\n\n if (!parentItem.has(\"C\")) {\n _this9.data.color = null;\n } else {\n _this9.setColor(parentItem.getArray(\"C\"));\n\n _this9.data.color = _this9.color;\n }\n\n if (!_this9.viewable) {\n var parentFlags = parentItem.get(\"F\");\n\n if (_this9._isViewable(parentFlags)) {\n _this9.setFlags(parentFlags);\n }\n }\n\n _this9.data.title = (0, _util.stringToPDFString)(parentItem.get(\"T\") || \"\");\n _this9.data.contents = (0, _util.stringToPDFString)(parentItem.get(\"Contents\") || \"\");\n return _this9;\n }\n\n return PopupAnnotation;\n}(Annotation);\n\nvar FreeTextAnnotation = /*#__PURE__*/function (_MarkupAnnotation2) {\n _inherits(FreeTextAnnotation, _MarkupAnnotation2);\n\n var _super9 = _createSuper(FreeTextAnnotation);\n\n function FreeTextAnnotation(parameters) {\n var _this10;\n\n _classCallCheck(this, FreeTextAnnotation);\n\n _this10 = _super9.call(this, parameters);\n _this10.data.annotationType = _util.AnnotationType.FREETEXT;\n return _this10;\n }\n\n return FreeTextAnnotation;\n}(MarkupAnnotation);\n\nvar LineAnnotation = /*#__PURE__*/function (_MarkupAnnotation3) {\n _inherits(LineAnnotation, _MarkupAnnotation3);\n\n var _super10 = _createSuper(LineAnnotation);\n\n function LineAnnotation(parameters) {\n var _this11;\n\n _classCallCheck(this, LineAnnotation);\n\n _this11 = _super10.call(this, parameters);\n _this11.data.annotationType = _util.AnnotationType.LINE;\n _this11.data.lineCoordinates = _util.Util.normalizeRect(parameters.dict.getArray(\"L\"));\n return _this11;\n }\n\n return LineAnnotation;\n}(MarkupAnnotation);\n\nvar SquareAnnotation = /*#__PURE__*/function (_MarkupAnnotation4) {\n _inherits(SquareAnnotation, _MarkupAnnotation4);\n\n var _super11 = _createSuper(SquareAnnotation);\n\n function SquareAnnotation(parameters) {\n var _this12;\n\n _classCallCheck(this, SquareAnnotation);\n\n _this12 = _super11.call(this, parameters);\n _this12.data.annotationType = _util.AnnotationType.SQUARE;\n return _this12;\n }\n\n return SquareAnnotation;\n}(MarkupAnnotation);\n\nvar CircleAnnotation = /*#__PURE__*/function (_MarkupAnnotation5) {\n _inherits(CircleAnnotation, _MarkupAnnotation5);\n\n var _super12 = _createSuper(CircleAnnotation);\n\n function CircleAnnotation(parameters) {\n var _this13;\n\n _classCallCheck(this, CircleAnnotation);\n\n _this13 = _super12.call(this, parameters);\n _this13.data.annotationType = _util.AnnotationType.CIRCLE;\n return _this13;\n }\n\n return CircleAnnotation;\n}(MarkupAnnotation);\n\nvar PolylineAnnotation = /*#__PURE__*/function (_MarkupAnnotation6) {\n _inherits(PolylineAnnotation, _MarkupAnnotation6);\n\n var _super13 = _createSuper(PolylineAnnotation);\n\n function PolylineAnnotation(parameters) {\n var _this14;\n\n _classCallCheck(this, PolylineAnnotation);\n\n _this14 = _super13.call(this, parameters);\n _this14.data.annotationType = _util.AnnotationType.POLYLINE;\n var rawVertices = parameters.dict.getArray(\"Vertices\");\n _this14.data.vertices = [];\n\n for (var i = 0, ii = rawVertices.length; i < ii; i += 2) {\n _this14.data.vertices.push({\n x: rawVertices[i],\n y: rawVertices[i + 1]\n });\n }\n\n return _this14;\n }\n\n return PolylineAnnotation;\n}(MarkupAnnotation);\n\nvar PolygonAnnotation = /*#__PURE__*/function (_PolylineAnnotation) {\n _inherits(PolygonAnnotation, _PolylineAnnotation);\n\n var _super14 = _createSuper(PolygonAnnotation);\n\n function PolygonAnnotation(parameters) {\n var _this15;\n\n _classCallCheck(this, PolygonAnnotation);\n\n _this15 = _super14.call(this, parameters);\n _this15.data.annotationType = _util.AnnotationType.POLYGON;\n return _this15;\n }\n\n return PolygonAnnotation;\n}(PolylineAnnotation);\n\nvar CaretAnnotation = /*#__PURE__*/function (_MarkupAnnotation7) {\n _inherits(CaretAnnotation, _MarkupAnnotation7);\n\n var _super15 = _createSuper(CaretAnnotation);\n\n function CaretAnnotation(parameters) {\n var _this16;\n\n _classCallCheck(this, CaretAnnotation);\n\n _this16 = _super15.call(this, parameters);\n _this16.data.annotationType = _util.AnnotationType.CARET;\n return _this16;\n }\n\n return CaretAnnotation;\n}(MarkupAnnotation);\n\nvar InkAnnotation = /*#__PURE__*/function (_MarkupAnnotation8) {\n _inherits(InkAnnotation, _MarkupAnnotation8);\n\n var _super16 = _createSuper(InkAnnotation);\n\n function InkAnnotation(parameters) {\n var _this17;\n\n _classCallCheck(this, InkAnnotation);\n\n _this17 = _super16.call(this, parameters);\n _this17.data.annotationType = _util.AnnotationType.INK;\n var xref = parameters.xref;\n var originalInkLists = parameters.dict.getArray(\"InkList\");\n _this17.data.inkLists = [];\n\n for (var i = 0, ii = originalInkLists.length; i < ii; ++i) {\n _this17.data.inkLists.push([]);\n\n for (var j = 0, jj = originalInkLists[i].length; j < jj; j += 2) {\n _this17.data.inkLists[i].push({\n x: xref.fetchIfRef(originalInkLists[i][j]),\n y: xref.fetchIfRef(originalInkLists[i][j + 1])\n });\n }\n }\n\n return _this17;\n }\n\n return InkAnnotation;\n}(MarkupAnnotation);\n\nvar HighlightAnnotation = /*#__PURE__*/function (_MarkupAnnotation9) {\n _inherits(HighlightAnnotation, _MarkupAnnotation9);\n\n var _super17 = _createSuper(HighlightAnnotation);\n\n function HighlightAnnotation(parameters) {\n var _this18;\n\n _classCallCheck(this, HighlightAnnotation);\n\n _this18 = _super17.call(this, parameters);\n _this18.data.annotationType = _util.AnnotationType.HIGHLIGHT;\n var quadPoints = getQuadPoints(parameters.dict, _this18.rectangle);\n\n if (quadPoints) {\n _this18.data.quadPoints = quadPoints;\n }\n\n return _this18;\n }\n\n return HighlightAnnotation;\n}(MarkupAnnotation);\n\nvar UnderlineAnnotation = /*#__PURE__*/function (_MarkupAnnotation10) {\n _inherits(UnderlineAnnotation, _MarkupAnnotation10);\n\n var _super18 = _createSuper(UnderlineAnnotation);\n\n function UnderlineAnnotation(parameters) {\n var _this19;\n\n _classCallCheck(this, UnderlineAnnotation);\n\n _this19 = _super18.call(this, parameters);\n _this19.data.annotationType = _util.AnnotationType.UNDERLINE;\n var quadPoints = getQuadPoints(parameters.dict, _this19.rectangle);\n\n if (quadPoints) {\n _this19.data.quadPoints = quadPoints;\n }\n\n return _this19;\n }\n\n return UnderlineAnnotation;\n}(MarkupAnnotation);\n\nvar SquigglyAnnotation = /*#__PURE__*/function (_MarkupAnnotation11) {\n _inherits(SquigglyAnnotation, _MarkupAnnotation11);\n\n var _super19 = _createSuper(SquigglyAnnotation);\n\n function SquigglyAnnotation(parameters) {\n var _this20;\n\n _classCallCheck(this, SquigglyAnnotation);\n\n _this20 = _super19.call(this, parameters);\n _this20.data.annotationType = _util.AnnotationType.SQUIGGLY;\n var quadPoints = getQuadPoints(parameters.dict, _this20.rectangle);\n\n if (quadPoints) {\n _this20.data.quadPoints = quadPoints;\n }\n\n return _this20;\n }\n\n return SquigglyAnnotation;\n}(MarkupAnnotation);\n\nvar StrikeOutAnnotation = /*#__PURE__*/function (_MarkupAnnotation12) {\n _inherits(StrikeOutAnnotation, _MarkupAnnotation12);\n\n var _super20 = _createSuper(StrikeOutAnnotation);\n\n function StrikeOutAnnotation(parameters) {\n var _this21;\n\n _classCallCheck(this, StrikeOutAnnotation);\n\n _this21 = _super20.call(this, parameters);\n _this21.data.annotationType = _util.AnnotationType.STRIKEOUT;\n var quadPoints = getQuadPoints(parameters.dict, _this21.rectangle);\n\n if (quadPoints) {\n _this21.data.quadPoints = quadPoints;\n }\n\n return _this21;\n }\n\n return StrikeOutAnnotation;\n}(MarkupAnnotation);\n\nvar StampAnnotation = /*#__PURE__*/function (_MarkupAnnotation13) {\n _inherits(StampAnnotation, _MarkupAnnotation13);\n\n var _super21 = _createSuper(StampAnnotation);\n\n function StampAnnotation(parameters) {\n var _this22;\n\n _classCallCheck(this, StampAnnotation);\n\n _this22 = _super21.call(this, parameters);\n _this22.data.annotationType = _util.AnnotationType.STAMP;\n return _this22;\n }\n\n return StampAnnotation;\n}(MarkupAnnotation);\n\nvar FileAttachmentAnnotation = /*#__PURE__*/function (_MarkupAnnotation14) {\n _inherits(FileAttachmentAnnotation, _MarkupAnnotation14);\n\n var _super22 = _createSuper(FileAttachmentAnnotation);\n\n function FileAttachmentAnnotation(parameters) {\n var _this23;\n\n _classCallCheck(this, FileAttachmentAnnotation);\n\n _this23 = _super22.call(this, parameters);\n var file = new _obj.FileSpec(parameters.dict.get(\"FS\"), parameters.xref);\n _this23.data.annotationType = _util.AnnotationType.FILEATTACHMENT;\n _this23.data.file = file.serializable;\n return _this23;\n }\n\n return FileAttachmentAnnotation;\n}(MarkupAnnotation);\n\n/***/ }),\n/* 219 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OperatorList = void 0;\n\nvar _util = __w_pdfjs_require__(5);\n\nvar QueueOptimizer = function QueueOptimizerClosure() {\n function addState(parentState, pattern, checkFn, iterateFn, processFn) {\n var state = parentState;\n\n for (var i = 0, ii = pattern.length - 1; i < ii; i++) {\n var item = pattern[i];\n state = state[item] || (state[item] = []);\n }\n\n state[pattern[pattern.length - 1]] = {\n checkFn: checkFn,\n iterateFn: iterateFn,\n processFn: processFn\n };\n }\n\n function handlePaintSolidColorImageMask(iFirstSave, count, fnArray, argsArray) {\n var iFirstPIMXO = iFirstSave + 2;\n\n for (var i = 0; i < count; i++) {\n var arg = argsArray[iFirstPIMXO + 4 * i];\n var imageMask = arg.length === 1 && arg[0];\n\n if (imageMask && imageMask.width === 1 && imageMask.height === 1 && (!imageMask.data.length || imageMask.data.length === 1 && imageMask.data[0] === 0)) {\n fnArray[iFirstPIMXO + 4 * i] = _util.OPS.paintSolidColorImageMask;\n continue;\n }\n\n break;\n }\n\n return count - i;\n }\n\n var InitialState = [];\n addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintInlineImageXObject, _util.OPS.restore], null, function iterateInlineImageGroup(context, i) {\n var fnArray = context.fnArray;\n var iFirstSave = context.iCurr - 3;\n var pos = (i - iFirstSave) % 4;\n\n switch (pos) {\n case 0:\n return fnArray[i] === _util.OPS.save;\n\n case 1:\n return fnArray[i] === _util.OPS.transform;\n\n case 2:\n return fnArray[i] === _util.OPS.paintInlineImageXObject;\n\n case 3:\n return fnArray[i] === _util.OPS.restore;\n }\n\n throw new Error(\"iterateInlineImageGroup - invalid pos: \".concat(pos));\n }, function foundInlineImageGroup(context, i) {\n var MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10;\n var MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200;\n var MAX_WIDTH = 1000;\n var IMAGE_PADDING = 1;\n var fnArray = context.fnArray,\n argsArray = context.argsArray;\n var curr = context.iCurr;\n var iFirstSave = curr - 3;\n var iFirstTransform = curr - 2;\n var iFirstPIIXO = curr - 1;\n var count = Math.min(Math.floor((i - iFirstSave) / 4), 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 var maxX = 0;\n var map = [],\n maxLineHeight = 0;\n var currentX = IMAGE_PADDING,\n currentY = IMAGE_PADDING;\n var q;\n\n for (q = 0; q < count; q++) {\n var transform = argsArray[iFirstTransform + (q << 2)];\n var img = argsArray[iFirstPIIXO + (q << 2)][0];\n\n if (currentX + img.width > MAX_WIDTH) {\n maxX = Math.max(maxX, currentX);\n currentY += maxLineHeight + 2 * IMAGE_PADDING;\n currentX = 0;\n maxLineHeight = 0;\n }\n\n map.push({\n transform: 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\n var imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING;\n var imgHeight = currentY + maxLineHeight + IMAGE_PADDING;\n var imgData = new Uint8ClampedArray(imgWidth * imgHeight * 4);\n var imgRowSize = imgWidth << 2;\n\n for (q = 0; q < count; q++) {\n var data = argsArray[iFirstPIIXO + (q << 2)][0].data;\n var rowSize = map[q].w << 2;\n var dataOffset = 0;\n var offset = map[q].x + map[q].y * imgWidth << 2;\n imgData.set(data.subarray(0, rowSize), offset - imgRowSize);\n\n for (var k = 0, kk = map[q].h; k < kk; k++) {\n imgData.set(data.subarray(dataOffset, dataOffset + rowSize), offset);\n dataOffset += rowSize;\n offset += imgRowSize;\n }\n\n imgData.set(data.subarray(dataOffset - rowSize, dataOffset), offset);\n\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 fnArray.splice(iFirstSave, count * 4, _util.OPS.paintInlineImageXObjectGroup);\n argsArray.splice(iFirstSave, count * 4, [{\n width: imgWidth,\n height: imgHeight,\n kind: _util.ImageKind.RGBA_32BPP,\n data: imgData\n }, map]);\n return iFirstSave + 1;\n });\n addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintImageMaskXObject, _util.OPS.restore], null, function iterateImageMaskGroup(context, i) {\n var fnArray = context.fnArray;\n var iFirstSave = context.iCurr - 3;\n var pos = (i - iFirstSave) % 4;\n\n switch (pos) {\n case 0:\n return fnArray[i] === _util.OPS.save;\n\n case 1:\n return fnArray[i] === _util.OPS.transform;\n\n case 2:\n return fnArray[i] === _util.OPS.paintImageMaskXObject;\n\n case 3:\n return fnArray[i] === _util.OPS.restore;\n }\n\n throw new Error(\"iterateImageMaskGroup - invalid pos: \".concat(pos));\n }, function foundImageMaskGroup(context, i) {\n var MIN_IMAGES_IN_MASKS_BLOCK = 10;\n var MAX_IMAGES_IN_MASKS_BLOCK = 100;\n var MAX_SAME_IMAGES_IN_MASKS_BLOCK = 1000;\n var fnArray = context.fnArray,\n argsArray = context.argsArray;\n var curr = context.iCurr;\n var iFirstSave = curr - 3;\n var iFirstTransform = curr - 2;\n var iFirstPIMXO = curr - 1;\n var count = Math.floor((i - iFirstSave) / 4);\n count = handlePaintSolidColorImageMask(iFirstSave, count, fnArray, argsArray);\n\n if (count < MIN_IMAGES_IN_MASKS_BLOCK) {\n return i - (i - iFirstSave) % 4;\n }\n\n var q;\n var isSameImage = false;\n var iTransform, transformArgs;\n var firstPIMXOArg0 = argsArray[iFirstPIMXO][0];\n\n if (argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0) {\n isSameImage = true;\n var firstTransformArg0 = argsArray[iFirstTransform][0];\n var firstTransformArg3 = argsArray[iFirstTransform][3];\n iTransform = iFirstTransform + 4;\n var iPIMXO = iFirstPIMXO + 4;\n\n for (q = 1; q < count; q++, iTransform += 4, iPIMXO += 4) {\n transformArgs = argsArray[iTransform];\n\n if (argsArray[iPIMXO][0] !== firstPIMXOArg0 || transformArgs[0] !== firstTransformArg0 || transformArgs[1] !== 0 || transformArgs[2] !== 0 || transformArgs[3] !== firstTransformArg3) {\n if (q < MIN_IMAGES_IN_MASKS_BLOCK) {\n isSameImage = false;\n } else {\n count = q;\n }\n\n break;\n }\n }\n }\n\n if (isSameImage) {\n count = Math.min(count, MAX_SAME_IMAGES_IN_MASKS_BLOCK);\n var positions = new Float32Array(count * 2);\n iTransform = iFirstTransform;\n\n for (q = 0; q < count; q++, iTransform += 4) {\n transformArgs = argsArray[iTransform];\n positions[q << 1] = transformArgs[4];\n positions[(q << 1) + 1] = transformArgs[5];\n }\n\n fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageMaskXObjectRepeat);\n argsArray.splice(iFirstSave, count * 4, [firstPIMXOArg0, firstTransformArg0, firstTransformArg3, positions]);\n } else {\n count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK);\n var images = [];\n\n for (q = 0; q < count; q++) {\n transformArgs = argsArray[iFirstTransform + (q << 2)];\n var maskParams = argsArray[iFirstPIMXO + (q << 2)][0];\n images.push({\n data: maskParams.data,\n width: maskParams.width,\n height: maskParams.height,\n transform: transformArgs\n });\n }\n\n fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageMaskXObjectGroup);\n argsArray.splice(iFirstSave, count * 4, [images]);\n }\n\n return iFirstSave + 1;\n });\n addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintImageXObject, _util.OPS.restore], function (context) {\n var argsArray = context.argsArray;\n var iFirstTransform = context.iCurr - 2;\n return argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0;\n }, function iterateImageGroup(context, i) {\n var fnArray = context.fnArray,\n argsArray = context.argsArray;\n var iFirstSave = context.iCurr - 3;\n var pos = (i - iFirstSave) % 4;\n\n switch (pos) {\n case 0:\n return fnArray[i] === _util.OPS.save;\n\n case 1:\n if (fnArray[i] !== _util.OPS.transform) {\n return false;\n }\n\n var iFirstTransform = context.iCurr - 2;\n var firstTransformArg0 = argsArray[iFirstTransform][0];\n var firstTransformArg3 = argsArray[iFirstTransform][3];\n\n if (argsArray[i][0] !== firstTransformArg0 || argsArray[i][1] !== 0 || argsArray[i][2] !== 0 || argsArray[i][3] !== firstTransformArg3) {\n return false;\n }\n\n return true;\n\n case 2:\n if (fnArray[i] !== _util.OPS.paintImageXObject) {\n return false;\n }\n\n var iFirstPIXO = context.iCurr - 1;\n var firstPIXOArg0 = argsArray[iFirstPIXO][0];\n\n if (argsArray[i][0] !== firstPIXOArg0) {\n return false;\n }\n\n return true;\n\n case 3:\n return fnArray[i] === _util.OPS.restore;\n }\n\n throw new Error(\"iterateImageGroup - invalid pos: \".concat(pos));\n }, function (context, i) {\n var MIN_IMAGES_IN_BLOCK = 3;\n var MAX_IMAGES_IN_BLOCK = 1000;\n var fnArray = context.fnArray,\n argsArray = context.argsArray;\n var curr = context.iCurr;\n var iFirstSave = curr - 3;\n var iFirstTransform = curr - 2;\n var iFirstPIXO = curr - 1;\n var firstPIXOArg0 = argsArray[iFirstPIXO][0];\n var firstTransformArg0 = argsArray[iFirstTransform][0];\n var firstTransformArg3 = argsArray[iFirstTransform][3];\n var count = Math.min(Math.floor((i - iFirstSave) / 4), MAX_IMAGES_IN_BLOCK);\n\n if (count < MIN_IMAGES_IN_BLOCK) {\n return i - (i - iFirstSave) % 4;\n }\n\n var positions = new Float32Array(count * 2);\n var iTransform = iFirstTransform;\n\n for (var q = 0; q < count; q++, iTransform += 4) {\n var transformArgs = argsArray[iTransform];\n positions[q << 1] = transformArgs[4];\n positions[(q << 1) + 1] = transformArgs[5];\n }\n\n var args = [firstPIXOArg0, firstTransformArg0, firstTransformArg3, positions];\n fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageXObjectRepeat);\n argsArray.splice(iFirstSave, count * 4, args);\n return iFirstSave + 1;\n });\n addState(InitialState, [_util.OPS.beginText, _util.OPS.setFont, _util.OPS.setTextMatrix, _util.OPS.showText, _util.OPS.endText], null, function iterateShowTextGroup(context, i) {\n var fnArray = context.fnArray,\n argsArray = context.argsArray;\n var iFirstSave = context.iCurr - 4;\n var pos = (i - iFirstSave) % 5;\n\n switch (pos) {\n case 0:\n return fnArray[i] === _util.OPS.beginText;\n\n case 1:\n return fnArray[i] === _util.OPS.setFont;\n\n case 2:\n return fnArray[i] === _util.OPS.setTextMatrix;\n\n case 3:\n if (fnArray[i] !== _util.OPS.showText) {\n return false;\n }\n\n var iFirstSetFont = context.iCurr - 3;\n var firstSetFontArg0 = argsArray[iFirstSetFont][0];\n var firstSetFontArg1 = argsArray[iFirstSetFont][1];\n\n if (argsArray[i][0] !== firstSetFontArg0 || argsArray[i][1] !== firstSetFontArg1) {\n return false;\n }\n\n return true;\n\n case 4:\n return fnArray[i] === _util.OPS.endText;\n }\n\n throw new Error(\"iterateShowTextGroup - invalid pos: \".concat(pos));\n }, function (context, i) {\n var MIN_CHARS_IN_BLOCK = 3;\n var MAX_CHARS_IN_BLOCK = 1000;\n var fnArray = context.fnArray,\n argsArray = context.argsArray;\n var curr = context.iCurr;\n var iFirstBeginText = curr - 4;\n var iFirstSetFont = curr - 3;\n var iFirstSetTextMatrix = curr - 2;\n var iFirstShowText = curr - 1;\n var iFirstEndText = curr;\n var firstSetFontArg0 = argsArray[iFirstSetFont][0];\n var firstSetFontArg1 = argsArray[iFirstSetFont][1];\n var count = Math.min(Math.floor((i - iFirstBeginText) / 5), MAX_CHARS_IN_BLOCK);\n\n if (count < MIN_CHARS_IN_BLOCK) {\n return i - (i - iFirstBeginText) % 5;\n }\n\n var iFirst = iFirstBeginText;\n\n if (iFirstBeginText >= 4 && fnArray[iFirstBeginText - 4] === fnArray[iFirstSetFont] && fnArray[iFirstBeginText - 3] === fnArray[iFirstSetTextMatrix] && fnArray[iFirstBeginText - 2] === fnArray[iFirstShowText] && fnArray[iFirstBeginText - 1] === fnArray[iFirstEndText] && argsArray[iFirstBeginText - 4][0] === firstSetFontArg0 && argsArray[iFirstBeginText - 4][1] === firstSetFontArg1) {\n count++;\n iFirst -= 5;\n }\n\n var iEndText = iFirst + 4;\n\n for (var q = 1; q < count; q++) {\n fnArray.splice(iEndText, 3);\n argsArray.splice(iEndText, 3);\n iEndText += 2;\n }\n\n return iEndText + 1;\n });\n\n function QueueOptimizer(queue) {\n this.queue = queue;\n this.state = null;\n this.context = {\n iCurr: 0,\n fnArray: queue.fnArray,\n argsArray: queue.argsArray\n };\n this.match = null;\n this.lastProcessed = 0;\n }\n\n QueueOptimizer.prototype = {\n _optimize: function _optimize() {\n var fnArray = this.queue.fnArray;\n var i = this.lastProcessed,\n ii = fnArray.length;\n var state = this.state;\n var match = this.match;\n\n if (!state && !match && i + 1 === ii && !InitialState[fnArray[i]]) {\n this.lastProcessed = ii;\n return;\n }\n\n var context = this.context;\n\n while (i < ii) {\n if (match) {\n var iterate = (0, match.iterateFn)(context, i);\n\n if (iterate) {\n i++;\n continue;\n }\n\n i = (0, match.processFn)(context, i + 1);\n ii = fnArray.length;\n match = null;\n state = null;\n\n if (i >= ii) {\n break;\n }\n }\n\n state = (state || InitialState)[fnArray[i]];\n\n if (!state || Array.isArray(state)) {\n i++;\n continue;\n }\n\n context.iCurr = i;\n i++;\n\n if (state.checkFn && !(0, state.checkFn)(context)) {\n state = null;\n continue;\n }\n\n match = state;\n state = null;\n }\n\n this.state = state;\n this.match = match;\n this.lastProcessed = i;\n },\n push: function push(fn, args) {\n this.queue.fnArray.push(fn);\n this.queue.argsArray.push(args);\n\n this._optimize();\n },\n flush: function flush() {\n while (this.match) {\n var length = this.queue.fnArray.length;\n this.lastProcessed = (0, this.match.processFn)(this.context, length);\n this.match = null;\n this.state = null;\n\n this._optimize();\n }\n },\n reset: function reset() {\n this.state = null;\n this.match = null;\n this.lastProcessed = 0;\n }\n };\n return QueueOptimizer;\n}();\n\nvar NullOptimizer = function NullOptimizerClosure() {\n function NullOptimizer(queue) {\n this.queue = queue;\n }\n\n NullOptimizer.prototype = {\n push: function push(fn, args) {\n this.queue.fnArray.push(fn);\n this.queue.argsArray.push(args);\n },\n flush: function flush() {},\n reset: function reset() {}\n };\n return NullOptimizer;\n}();\n\nvar OperatorList = function OperatorListClosure() {\n var CHUNK_SIZE = 1000;\n var CHUNK_SIZE_ABOUT = CHUNK_SIZE - 5;\n\n function OperatorList(intent, streamSink, pageIndex) {\n this._streamSink = streamSink;\n this.fnArray = [];\n this.argsArray = [];\n\n if (streamSink && intent !== \"oplist\") {\n this.optimizer = new QueueOptimizer(this);\n } else {\n this.optimizer = new NullOptimizer(this);\n }\n\n this.dependencies = Object.create(null);\n this._totalLength = 0;\n this.pageIndex = pageIndex;\n this.intent = intent;\n this.weight = 0;\n this._resolved = streamSink ? null : Promise.resolve();\n }\n\n OperatorList.prototype = {\n get length() {\n return this.argsArray.length;\n },\n\n get ready() {\n return this._resolved || this._streamSink.ready;\n },\n\n get totalLength() {\n return this._totalLength + this.length;\n },\n\n addOp: function addOp(fn, args) {\n this.optimizer.push(fn, args);\n this.weight++;\n\n if (this._streamSink) {\n if (this.weight >= CHUNK_SIZE) {\n this.flush();\n } else if (this.weight >= CHUNK_SIZE_ABOUT && (fn === _util.OPS.restore || fn === _util.OPS.endText)) {\n this.flush();\n }\n }\n },\n addDependency: function addDependency(dependency) {\n if (dependency in this.dependencies) {\n return;\n }\n\n this.dependencies[dependency] = true;\n this.addOp(_util.OPS.dependency, [dependency]);\n },\n addDependencies: function addDependencies(dependencies) {\n for (var key in dependencies) {\n this.addDependency(key);\n }\n },\n addOpList: function addOpList(opList) {\n if (!(opList instanceof OperatorList)) {\n (0, _util.warn)('addOpList - ignoring invalid \"opList\" parameter.');\n return;\n }\n\n Object.assign(this.dependencies, opList.dependencies);\n\n for (var i = 0, ii = opList.length; i < ii; i++) {\n this.addOp(opList.fnArray[i], opList.argsArray[i]);\n }\n },\n getIR: function getIR() {\n return {\n fnArray: this.fnArray,\n argsArray: this.argsArray,\n length: this.length\n };\n },\n\n get _transfers() {\n var transfers = [];\n var fnArray = this.fnArray,\n argsArray = this.argsArray,\n length = this.length;\n\n for (var i = 0; i < length; i++) {\n switch (fnArray[i]) {\n case _util.OPS.paintInlineImageXObject:\n case _util.OPS.paintInlineImageXObjectGroup:\n case _util.OPS.paintImageMaskXObject:\n var arg = argsArray[i][0];\n ;\n\n if (!arg.cached) {\n transfers.push(arg.data.buffer);\n }\n\n break;\n }\n }\n\n return transfers;\n },\n\n flush: function flush() {\n var lastChunk = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n this.optimizer.flush();\n var length = this.length;\n this._totalLength += length;\n\n this._streamSink.enqueue({\n fnArray: this.fnArray,\n argsArray: this.argsArray,\n lastChunk: lastChunk,\n length: length\n }, 1, this._transfers);\n\n this.dependencies = Object.create(null);\n this.fnArray.length = 0;\n this.argsArray.length = 0;\n this.weight = 0;\n this.optimizer.reset();\n }\n };\n return OperatorList;\n}();\n\nexports.OperatorList = OperatorList;\n\n/***/ }),\n/* 220 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PartialEvaluator = void 0;\n\nvar _regenerator = _interopRequireDefault(__w_pdfjs_require__(2));\n\nvar _util = __w_pdfjs_require__(5);\n\nvar _cmap = __w_pdfjs_require__(221);\n\nvar _primitives = __w_pdfjs_require__(198);\n\nvar _fonts = __w_pdfjs_require__(222);\n\nvar _encodings = __w_pdfjs_require__(225);\n\nvar _core_utils = __w_pdfjs_require__(201);\n\nvar _unicode = __w_pdfjs_require__(228);\n\nvar _standard_fonts = __w_pdfjs_require__(227);\n\nvar _pattern = __w_pdfjs_require__(231);\n\nvar _parser = __w_pdfjs_require__(204);\n\nvar _bidi = __w_pdfjs_require__(232);\n\nvar _colorspace = __w_pdfjs_require__(216);\n\nvar _stream = __w_pdfjs_require__(205);\n\nvar _glyphlist = __w_pdfjs_require__(226);\n\nvar _metrics = __w_pdfjs_require__(233);\n\nvar _function = __w_pdfjs_require__(234);\n\nvar _image_utils = __w_pdfjs_require__(217);\n\nvar _murmurhash = __w_pdfjs_require__(236);\n\nvar _operator_list = __w_pdfjs_require__(219);\n\nvar _image = __w_pdfjs_require__(237);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar PartialEvaluator = function PartialEvaluatorClosure() {\n var DefaultPartialEvaluatorOptions = {\n maxImageSize: -1,\n disableFontFace: false,\n ignoreErrors: false,\n isEvalSupported: true,\n fontExtraProperties: false\n };\n\n function PartialEvaluator(_ref) {\n var _this = this;\n\n var xref = _ref.xref,\n handler = _ref.handler,\n pageIndex = _ref.pageIndex,\n idFactory = _ref.idFactory,\n fontCache = _ref.fontCache,\n builtInCMapCache = _ref.builtInCMapCache,\n globalImageCache = _ref.globalImageCache,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? null : _ref$options,\n pdfFunctionFactory = _ref.pdfFunctionFactory;\n this.xref = xref;\n this.handler = handler;\n this.pageIndex = pageIndex;\n this.idFactory = idFactory;\n this.fontCache = fontCache;\n this.builtInCMapCache = builtInCMapCache;\n this.globalImageCache = globalImageCache;\n this.options = options || DefaultPartialEvaluatorOptions;\n this.pdfFunctionFactory = pdfFunctionFactory;\n this.parsingType3Font = false;\n\n this.fetchBuiltInCMap = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee(name) {\n var readableStream, reader, data;\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!_this.builtInCMapCache.has(name)) {\n _context.next = 2;\n break;\n }\n\n return _context.abrupt(\"return\", _this.builtInCMapCache.get(name));\n\n case 2:\n readableStream = _this.handler.sendWithStream(\"FetchBuiltInCMap\", {\n name: name\n });\n reader = readableStream.getReader();\n _context.next = 6;\n return new Promise(function (resolve, reject) {\n function pump() {\n reader.read().then(function (_ref3) {\n var value = _ref3.value,\n done = _ref3.done;\n\n if (done) {\n return;\n }\n\n resolve(value);\n pump();\n }, reject);\n }\n\n pump();\n });\n\n case 6:\n data = _context.sent;\n\n if (data.compressionType !== _util.CMapCompressionType.NONE) {\n _this.builtInCMapCache.set(name, data);\n }\n\n return _context.abrupt(\"return\", data);\n\n case 9:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function (_x) {\n return _ref2.apply(this, arguments);\n };\n }();\n }\n\n var TIME_SLOT_DURATION_MS = 20;\n var CHECK_TIME_EVERY = 100;\n\n function TimeSlotManager() {\n this.reset();\n }\n\n TimeSlotManager.prototype = {\n check: function TimeSlotManager_check() {\n if (++this.checked < CHECK_TIME_EVERY) {\n return false;\n }\n\n this.checked = 0;\n return this.endTime <= Date.now();\n },\n reset: function TimeSlotManager_reset() {\n this.endTime = Date.now() + TIME_SLOT_DURATION_MS;\n this.checked = 0;\n }\n };\n\n function normalizeBlendMode(value) {\n var parsingArray = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (Array.isArray(value)) {\n for (var i = 0, ii = value.length; i < ii; i++) {\n var maybeBM = normalizeBlendMode(value[i], true);\n\n if (maybeBM) {\n return maybeBM;\n }\n }\n\n (0, _util.warn)(\"Unsupported blend mode Array: \".concat(value));\n return \"source-over\";\n }\n\n if (!(0, _primitives.isName)(value)) {\n if (parsingArray) {\n return null;\n }\n\n return \"source-over\";\n }\n\n switch (value.name) {\n case \"Normal\":\n case \"Compatible\":\n return \"source-over\";\n\n case \"Multiply\":\n return \"multiply\";\n\n case \"Screen\":\n return \"screen\";\n\n case \"Overlay\":\n return \"overlay\";\n\n case \"Darken\":\n return \"darken\";\n\n case \"Lighten\":\n return \"lighten\";\n\n case \"ColorDodge\":\n return \"color-dodge\";\n\n case \"ColorBurn\":\n return \"color-burn\";\n\n case \"HardLight\":\n return \"hard-light\";\n\n case \"SoftLight\":\n return \"soft-light\";\n\n case \"Difference\":\n return \"difference\";\n\n case \"Exclusion\":\n return \"exclusion\";\n\n case \"Hue\":\n return \"hue\";\n\n case \"Saturation\":\n return \"saturation\";\n\n case \"Color\":\n return \"color\";\n\n case \"Luminosity\":\n return \"luminosity\";\n }\n\n if (parsingArray) {\n return null;\n }\n\n (0, _util.warn)(\"Unsupported blend mode: \".concat(value.name));\n return \"source-over\";\n }\n\n var deferred = Promise.resolve();\n var TILING_PATTERN = 1,\n SHADING_PATTERN = 2;\n PartialEvaluator.prototype = {\n clone: function clone() {\n var newOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DefaultPartialEvaluatorOptions;\n var newEvaluator = Object.create(this);\n newEvaluator.options = newOptions;\n return newEvaluator;\n },\n hasBlendModes: function PartialEvaluator_hasBlendModes(resources) {\n if (!(resources instanceof _primitives.Dict)) {\n return false;\n }\n\n var processed = Object.create(null);\n\n if (resources.objId) {\n processed[resources.objId] = true;\n }\n\n var nodes = [resources],\n xref = this.xref;\n\n while (nodes.length) {\n var node = nodes.shift();\n var graphicStates = node.get(\"ExtGState\");\n\n if (graphicStates instanceof _primitives.Dict) {\n var graphicStatesKeys = graphicStates.getKeys();\n\n for (var i = 0, ii = graphicStatesKeys.length; i < ii; i++) {\n var key = graphicStatesKeys[i];\n var graphicState = graphicStates.getRaw(key);\n\n if (graphicState instanceof _primitives.Ref) {\n if (processed[graphicState.toString()]) {\n continue;\n }\n\n try {\n graphicState = xref.fetch(graphicState);\n } catch (ex) {\n if (ex instanceof _core_utils.MissingDataException) {\n throw ex;\n }\n\n if (this.options.ignoreErrors) {\n if (graphicState instanceof _primitives.Ref) {\n processed[graphicState.toString()] = true;\n }\n\n this.handler.send(\"UnsupportedFeature\", {\n featureId: _util.UNSUPPORTED_FEATURES.errorExtGState\n });\n (0, _util.warn)(\"hasBlendModes - ignoring ExtGState: \\\"\".concat(ex, \"\\\".\"));\n continue;\n }\n\n throw ex;\n }\n }\n\n if (!(graphicState instanceof _primitives.Dict)) {\n continue;\n }\n\n if (graphicState.objId) {\n processed[graphicState.objId] = true;\n }\n\n var bm = graphicState.get(\"BM\");\n\n if (bm instanceof _primitives.Name) {\n if (bm.name !== \"Normal\") {\n return true;\n }\n\n continue;\n }\n\n if (bm !== undefined && Array.isArray(bm)) {\n for (var j = 0, jj = bm.length; j < jj; j++) {\n if (bm[j] instanceof _primitives.Name && bm[j].name !== \"Normal\") {\n return true;\n }\n }\n }\n }\n }\n\n var xObjects = node.get(\"XObject\");\n\n if (!(xObjects instanceof _primitives.Dict)) {\n continue;\n }\n\n var xObjectsKeys = xObjects.getKeys();\n\n for (var _i = 0, _ii = xObjectsKeys.length; _i < _ii; _i++) {\n var _key = xObjectsKeys[_i];\n var xObject = xObjects.getRaw(_key);\n\n if (xObject instanceof _primitives.Ref) {\n if (processed[xObject.toString()]) {\n continue;\n }\n\n try {\n xObject = xref.fetch(xObject);\n } catch (ex) {\n if (ex instanceof _core_utils.MissingDataException) {\n throw ex;\n }\n\n if (this.options.ignoreErrors) {\n if (xObject instanceof _primitives.Ref) {\n processed[xObject.toString()] = true;\n }\n\n this.handler.send(\"UnsupportedFeature\", {\n featureId: _util.UNSUPPORTED_FEATURES.errorXObject\n });\n (0, _util.warn)(\"hasBlendModes - ignoring XObject: \\\"\".concat(ex, \"\\\".\"));\n continue;\n }\n\n throw ex;\n }\n }\n\n if (!(0, _primitives.isStream)(xObject)) {\n continue;\n }\n\n if (xObject.dict.objId) {\n if (processed[xObject.dict.objId]) {\n continue;\n }\n\n processed[xObject.dict.objId] = true;\n }\n\n var xResources = xObject.dict.get(\"Resources\");\n\n if (xResources instanceof _primitives.Dict && (!xResources.objId || !processed[xResources.objId])) {\n nodes.push(xResources);\n\n if (xResources.objId) {\n processed[xResources.objId] = true;\n }\n }\n }\n }\n\n return false;\n },\n buildFormXObject: function buildFormXObject(resources, xobj, smask, operatorList, task, initialState) {\n var _this2 = this;\n\n return _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee2() {\n var dict, matrix, bbox, group, groupOptions, groupSubtype, colorSpace;\n return _regenerator[\"default\"].wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n dict = xobj.dict;\n matrix = dict.getArray(\"Matrix\");\n bbox = dict.getArray(\"BBox\");\n\n if (Array.isArray(bbox) && bbox.length === 4) {\n bbox = _util.Util.normalizeRect(bbox);\n } else {\n bbox = null;\n }\n\n group = dict.get(\"Group\");\n\n if (!group) {\n _context2.next = 18;\n break;\n }\n\n groupOptions = {\n matrix: matrix,\n bbox: bbox,\n smask: smask,\n isolated: false,\n knockout: false\n };\n groupSubtype = group.get(\"S\");\n colorSpace = null;\n\n if (!(0, _primitives.isName)(groupSubtype, \"Transparency\")) {\n _context2.next = 16;\n break;\n }\n\n groupOptions.isolated = group.get(\"I\") || false;\n groupOptions.knockout = group.get(\"K\") || false;\n\n if (!group.has(\"CS\")) {\n _context2.next = 16;\n break;\n }\n\n _context2.next = 15;\n return _this2.parseColorSpace({\n cs: group.get(\"CS\"),\n resources: resources\n });\n\n case 15:\n colorSpace = _context2.sent;\n\n case 16:\n if (smask && smask.backdrop) {\n colorSpace = colorSpace || _colorspace.ColorSpace.singletons.rgb;\n smask.backdrop = colorSpace.getRgb(smask.backdrop, 0);\n }\n\n operatorList.addOp(_util.OPS.beginGroup, [groupOptions]);\n\n case 18:\n operatorList.addOp(_util.OPS.paintFormXObjectBegin, [matrix, bbox]);\n return _context2.abrupt(\"return\", _this2.getOperatorList({\n stream: xobj,\n task: task,\n resources: dict.get(\"Resources\") || resources,\n operatorList: operatorList,\n initialState: initialState\n }).then(function () {\n operatorList.addOp(_util.OPS.paintFormXObjectEnd, []);\n\n if (group) {\n operatorList.addOp(_util.OPS.endGroup, [groupOptions]);\n }\n }));\n\n case 20:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }))();\n },\n buildPaintImageXObject: function buildPaintImageXObject(_ref4) {\n var _this3 = this;\n\n return _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee3() {\n var resources, image, _ref4$isInline, isInline, operatorList, cacheKey, localImageCache, dict, imageRef, w, h, maxImageSize, imageMask, imgData, args, width, height, bitStrideLength, imgArray, decode, softMask, mask, SMALL_IMAGE_DIMENSIONS, imageObj, objId, cacheGlobally, imgPromise;\n\n return _regenerator[\"default\"].wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n resources = _ref4.resources, image = _ref4.image, _ref4$isInline = _ref4.isInline, isInline = _ref4$isInline === void 0 ? false : _ref4$isInline, operatorList = _ref4.operatorList, cacheKey = _ref4.cacheKey, localImageCache = _ref4.localImageCache;\n dict = image.dict;\n imageRef = dict.objId;\n w = dict.get(\"Width\", \"W\");\n h = dict.get(\"Height\", \"H\");\n\n if (!(!(w && (0, _util.isNum)(w)) || !(h && (0, _util.isNum)(h)))) {\n _context3.next = 8;\n break;\n }\n\n (0, _util.warn)(\"Image dimensions are missing, or not numbers.\");\n return _context3.abrupt(\"return\", undefined);\n\n case 8:\n maxImageSize = _this3.options.maxImageSize;\n\n if (!(maxImageSize !== -1 && w * h > maxImageSize)) {\n _context3.next = 12;\n break;\n }\n\n (0, _util.warn)(\"Image exceeded maximum allowed size and was removed.\");\n return _context3.abrupt(\"return\", undefined);\n\n case 12:\n imageMask = dict.get(\"ImageMask\", \"IM\") || false;\n\n if (!imageMask) {\n _context3.next = 25;\n break;\n }\n\n width = dict.get(\"Width\", \"W\");\n height = dict.get(\"Height\", \"H\");\n bitStrideLength = width + 7 >> 3;\n imgArray = image.getBytes(bitStrideLength * height, true);\n decode = dict.getArray(\"Decode\", \"D\");\n imgData = _image.PDFImage.createMask({\n imgArray: imgArray,\n width: width,\n height: height,\n imageIsFromDecodeStream: image instanceof _stream.DecodeStream,\n inverseDecode: !!decode && decode[0] > 0\n });\n imgData.cached = !!cacheKey;\n args = [imgData];\n operatorList.addOp(_util.OPS.paintImageMaskXObject, args);\n\n if (cacheKey) {\n localImageCache.set(cacheKey, imageRef, {\n fn: _util.OPS.paintImageMaskXObject,\n args: args\n });\n }\n\n return _context3.abrupt(\"return\", undefined);\n\n case 25:\n softMask = dict.get(\"SMask\", \"SM\") || false;\n mask = dict.get(\"Mask\") || false;\n SMALL_IMAGE_DIMENSIONS = 200;\n\n if (!(isInline && !softMask && !mask && w + h < SMALL_IMAGE_DIMENSIONS)) {\n _context3.next = 33;\n break;\n }\n\n imageObj = new _image.PDFImage({\n xref: _this3.xref,\n res: resources,\n image: image,\n isInline: isInline,\n pdfFunctionFactory: _this3.pdfFunctionFactory\n });\n imgData = imageObj.createImageData(true);\n operatorList.addOp(_util.OPS.paintInlineImageXObject, [imgData]);\n return _context3.abrupt(\"return\", undefined);\n\n case 33:\n objId = \"img_\".concat(_this3.idFactory.createObjId()), cacheGlobally = false;\n\n if (_this3.parsingType3Font) {\n objId = \"\".concat(_this3.idFactory.getDocId(), \"_type3res_\").concat(objId);\n } else if (imageRef) {\n cacheGlobally = _this3.globalImageCache.shouldCache(imageRef, _this3.pageIndex);\n\n if (cacheGlobally) {\n objId = \"\".concat(_this3.idFactory.getDocId(), \"_\").concat(objId);\n }\n }\n\n operatorList.addDependency(objId);\n args = [objId, w, h];\n imgPromise = _image.PDFImage.buildImage({\n xref: _this3.xref,\n res: resources,\n image: image,\n isInline: isInline,\n pdfFunctionFactory: _this3.pdfFunctionFactory\n }).then(function (imageObj) {\n imgData = imageObj.createImageData(false);\n\n if (_this3.parsingType3Font) {\n return _this3.handler.sendWithPromise(\"commonobj\", [objId, \"FontType3Res\", imgData], [imgData.data.buffer]);\n } else if (cacheGlobally) {\n _this3.handler.send(\"commonobj\", [objId, \"Image\", imgData], [imgData.data.buffer]);\n\n return undefined;\n }\n\n _this3.handler.send(\"obj\", [objId, _this3.pageIndex, \"Image\", imgData], [imgData.data.buffer]);\n\n return undefined;\n })[\"catch\"](function (reason) {\n (0, _util.warn)(\"Unable to decode image: \" + reason);\n\n if (_this3.parsingType3Font) {\n return _this3.handler.sendWithPromise(\"commonobj\", [objId, \"FontType3Res\", null]);\n } else if (cacheGlobally) {\n _this3.handler.send(\"commonobj\", [objId, \"Image\", null]);\n\n return undefined;\n }\n\n _this3.handler.send(\"obj\", [objId, _this3.pageIndex, \"Image\", null]);\n\n return undefined;\n });\n\n if (!_this3.parsingType3Font) {\n _context3.next = 41;\n break;\n }\n\n _context3.next = 41;\n return imgPromise;\n\n case 41:\n operatorList.addOp(_util.OPS.paintImageXObject, args);\n\n if (cacheKey) {\n localImageCache.set(cacheKey, imageRef, {\n fn: _util.OPS.paintImageXObject,\n args: args\n });\n\n if (imageRef) {\n (0, _util.assert)(!isInline, \"Cannot cache an inline image globally.\");\n\n _this3.globalImageCache.addPageIndex(imageRef, _this3.pageIndex);\n\n if (cacheGlobally) {\n _this3.globalImageCache.setData(imageRef, {\n objId: objId,\n fn: _util.OPS.paintImageXObject,\n args: args\n });\n }\n }\n }\n\n return _context3.abrupt(\"return\", undefined);\n\n case 44:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }))();\n },\n handleSMask: function PartialEvaluator_handleSmask(smask, resources, operatorList, task, stateManager) {\n var smaskContent = smask.get(\"G\");\n var smaskOptions = {\n subtype: smask.get(\"S\").name,\n backdrop: smask.get(\"BC\")\n };\n var transferObj = smask.get(\"TR\");\n\n if ((0, _function.isPDFFunction)(transferObj)) {\n var transferFn = this.pdfFunctionFactory.create(transferObj);\n var transferMap = new Uint8Array(256);\n var tmp = new Float32Array(1);\n\n for (var i = 0; i < 256; i++) {\n tmp[0] = i / 255;\n transferFn(tmp, 0, tmp, 0);\n transferMap[i] = tmp[0] * 255 | 0;\n }\n\n smaskOptions.transferMap = transferMap;\n }\n\n return this.buildFormXObject(resources, smaskContent, smaskOptions, operatorList, task, stateManager.state.clone());\n },\n handleTilingType: function handleTilingType(fn, args, resources, pattern, patternDict, operatorList, task) {\n var _this4 = this;\n\n var tilingOpList = new _operator_list.OperatorList();\n var resourcesArray = [patternDict.get(\"Resources\"), resources];\n\n var patternResources = _primitives.Dict.merge(this.xref, resourcesArray);\n\n return this.getOperatorList({\n stream: pattern,\n task: task,\n resources: patternResources,\n operatorList: tilingOpList\n }).then(function () {\n return (0, _pattern.getTilingPatternIR)({\n fnArray: tilingOpList.fnArray,\n argsArray: tilingOpList.argsArray\n }, patternDict, args);\n }).then(function (tilingPatternIR) {\n operatorList.addDependencies(tilingOpList.dependencies);\n operatorList.addOp(fn, tilingPatternIR);\n }, function (reason) {\n if (reason instanceof _util.AbortException) {\n return;\n }\n\n if (_this4.options.ignoreErrors) {\n _this4.handler.send(\"UnsupportedFeature\", {\n featureId: _util.UNSUPPORTED_FEATURES.errorTilingPattern\n });\n\n (0, _util.warn)(\"handleTilingType - ignoring pattern: \\\"\".concat(reason, \"\\\".\"));\n return;\n }\n\n throw reason;\n });\n },\n handleSetFont: function PartialEvaluator_handleSetFont(resources, fontArgs, fontRef, operatorList, task, state) {\n var _this5 = this;\n\n var fontName;\n\n if (fontArgs) {\n fontArgs = fontArgs.slice();\n fontName = fontArgs[0].name;\n }\n\n return this.loadFont(fontName, fontRef, resources).then(function (translated) {\n if (!translated.font.isType3Font) {\n return translated;\n }\n\n return translated.loadType3Data(_this5, resources, operatorList, task).then(function () {\n return translated;\n })[\"catch\"](function (reason) {\n _this5.handler.send(\"UnsupportedFeature\", {\n featureId: _util.UNSUPPORTED_FEATURES.errorFontLoadType3\n });\n\n return new TranslatedFont({\n loadedName: \"g_font_error\",\n font: new _fonts.ErrorFont(\"Type3 font load error: \".concat(reason)),\n dict: translated.font,\n extraProperties: _this5.options.fontExtraProperties\n });\n });\n }).then(function (translated) {\n state.font = translated.font;\n translated.send(_this5.handler);\n return translated.loadedName;\n });\n },\n handleText: function handleText(chars, state) {\n var font = state.font;\n var glyphs = font.charsToGlyphs(chars);\n\n if (font.data) {\n var isAddToPathSet = !!(state.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG);\n\n if (isAddToPathSet || state.fillColorSpace.name === \"Pattern\" || font.disableFontFace || this.options.disableFontFace) {\n PartialEvaluator.buildFontPaths(font, glyphs, this.handler);\n }\n }\n\n return glyphs;\n },\n ensureStateFont: function ensureStateFont(state) {\n if (state.font) {\n return;\n }\n\n var reason = new _util.FormatError(\"Missing setFont (Tf) operator before text rendering operator.\");\n\n if (this.options.ignoreErrors) {\n this.handler.send(\"UnsupportedFeature\", {\n featureId: _util.UNSUPPORTED_FEATURES.errorFontState\n });\n (0, _util.warn)(\"ensureStateFont: \\\"\".concat(reason, \"\\\".\"));\n return;\n }\n\n throw reason;\n },\n setGState: function PartialEvaluator_setGState(resources, gState, operatorList, task, stateManager) {\n var _this6 = this;\n\n var gStateObj = [];\n var gStateKeys = gState.getKeys();\n var promise = Promise.resolve();\n\n var _loop = function _loop() {\n var key = gStateKeys[i];\n var value = gState.get(key);\n\n switch (key) {\n case \"Type\":\n break;\n\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\n case \"Font\":\n promise = promise.then(function () {\n return _this6.handleSetFont(resources, null, value[0], operatorList, task, stateManager.state).then(function (loadedName) {\n operatorList.addDependency(loadedName);\n gStateObj.push([key, [loadedName, value[1]]]);\n });\n });\n break;\n\n case \"BM\":\n gStateObj.push([key, normalizeBlendMode(value)]);\n break;\n\n case \"SMask\":\n if ((0, _primitives.isName)(value, \"None\")) {\n gStateObj.push([key, false]);\n break;\n }\n\n if ((0, _primitives.isDict)(value)) {\n promise = promise.then(function () {\n return _this6.handleSMask(value, resources, operatorList, task, stateManager);\n });\n gStateObj.push([key, true]);\n } else {\n (0, _util.warn)(\"Unsupported SMask type\");\n }\n\n break;\n\n case \"OP\":\n case \"op\":\n case \"OPM\":\n case \"BG\":\n case \"BG2\":\n case \"UCR\":\n case \"UCR2\":\n case \"TR\":\n case \"TR2\":\n case \"HT\":\n case \"SM\":\n case \"SA\":\n case \"AIS\":\n case \"TK\":\n (0, _util.info)(\"graphic state operator \" + key);\n break;\n\n default:\n (0, _util.info)(\"Unknown graphic state operator \" + key);\n break;\n }\n };\n\n for (var i = 0, ii = gStateKeys.length; i < ii; i++) {\n _loop();\n }\n\n return promise.then(function () {\n if (gStateObj.length > 0) {\n operatorList.addOp(_util.OPS.setGState, [gStateObj]);\n }\n });\n },\n loadFont: function PartialEvaluator_loadFont(fontName, font, resources) {\n var _this7 = this;\n\n var errorFont = function errorFont() {\n return Promise.resolve(new TranslatedFont({\n loadedName: \"g_font_error\",\n font: new _fonts.ErrorFont(\"Font \\\"\".concat(fontName, \"\\\" is not available.\")),\n dict: font,\n extraProperties: _this7.options.fontExtraProperties\n }));\n };\n\n var fontRef,\n xref = this.xref;\n\n if (font) {\n if (!(0, _primitives.isRef)(font)) {\n throw new _util.FormatError('The \"font\" object should be a reference.');\n }\n\n fontRef = font;\n } else {\n var fontRes = resources.get(\"Font\");\n\n if (fontRes) {\n fontRef = fontRes.getRaw(fontName);\n }\n }\n\n if (!fontRef) {\n var partialMsg = \"Font \\\"\".concat(fontName || font && font.toString(), \"\\\" is not available\");\n\n if (!this.options.ignoreErrors && !this.parsingType3Font) {\n (0, _util.warn)(\"\".concat(partialMsg, \".\"));\n return errorFont();\n }\n\n this.handler.send(\"UnsupportedFeature\", {\n featureId: _util.UNSUPPORTED_FEATURES.errorFontMissing\n });\n (0, _util.warn)(\"\".concat(partialMsg, \" -- attempting to fallback to a default font.\"));\n fontRef = PartialEvaluator.getFallbackFontDict();\n }\n\n if (this.fontCache.has(fontRef)) {\n return this.fontCache.get(fontRef);\n }\n\n font = xref.fetchIfRef(fontRef);\n\n if (!(0, _primitives.isDict)(font)) {\n return errorFont();\n }\n\n if (font.translated) {\n return font.translated;\n }\n\n var fontCapability = (0, _util.createPromiseCapability)();\n var preEvaluatedFont = this.preEvaluateFont(font);\n var descriptor = preEvaluatedFont.descriptor,\n hash = preEvaluatedFont.hash;\n var fontRefIsRef = (0, _primitives.isRef)(fontRef),\n fontID;\n\n if (fontRefIsRef) {\n fontID = fontRef.toString();\n }\n\n if (hash && (0, _primitives.isDict)(descriptor)) {\n if (!descriptor.fontAliases) {\n descriptor.fontAliases = Object.create(null);\n }\n\n var fontAliases = descriptor.fontAliases;\n\n if (fontAliases[hash]) {\n var aliasFontRef = fontAliases[hash].aliasRef;\n\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: _fonts.Font.getFontID()\n };\n }\n\n if (fontRefIsRef) {\n fontAliases[hash].aliasRef = fontRef;\n }\n\n fontID = fontAliases[hash].fontID;\n }\n\n if (fontRefIsRef) {\n this.fontCache.put(fontRef, fontCapability.promise);\n } else {\n if (!fontID) {\n fontID = this.idFactory.createObjId();\n }\n\n this.fontCache.put(\"id_\".concat(fontID), fontCapability.promise);\n }\n\n (0, _util.assert)(fontID, 'The \"fontID\" must be defined.');\n font.loadedName = \"\".concat(this.idFactory.getDocId(), \"_f\").concat(fontID);\n font.translated = fontCapability.promise;\n var translatedPromise;\n\n try {\n translatedPromise = this.translateFont(preEvaluatedFont);\n } catch (e) {\n translatedPromise = Promise.reject(e);\n }\n\n translatedPromise.then(function (translatedFont) {\n if (translatedFont.fontType !== undefined) {\n var xrefFontStats = xref.stats.fontTypes;\n xrefFontStats[translatedFont.fontType] = true;\n }\n\n fontCapability.resolve(new TranslatedFont({\n loadedName: font.loadedName,\n font: translatedFont,\n dict: font,\n extraProperties: _this7.options.fontExtraProperties\n }));\n })[\"catch\"](function (reason) {\n _this7.handler.send(\"UnsupportedFeature\", {\n featureId: _util.UNSUPPORTED_FEATURES.errorFontTranslate\n });\n\n try {\n var fontFile3 = descriptor && descriptor.get(\"FontFile3\");\n var subtype = fontFile3 && fontFile3.get(\"Subtype\");\n var fontType = (0, _fonts.getFontType)(preEvaluatedFont.type, subtype && subtype.name);\n var xrefFontStats = xref.stats.fontTypes;\n xrefFontStats[fontType] = true;\n } catch (ex) {}\n\n fontCapability.resolve(new TranslatedFont({\n loadedName: font.loadedName,\n font: new _fonts.ErrorFont(reason instanceof Error ? reason.message : reason),\n dict: font,\n extraProperties: _this7.options.fontExtraProperties\n }));\n });\n return fontCapability.promise;\n },\n buildPath: function buildPath(operatorList, fn, args) {\n var parsingText = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n var lastIndex = operatorList.length - 1;\n\n if (!args) {\n args = [];\n }\n\n if (lastIndex < 0 || operatorList.fnArray[lastIndex] !== _util.OPS.constructPath) {\n if (parsingText) {\n (0, _util.warn)(\"Encountered path operator \\\"\".concat(fn, \"\\\" inside of a text object.\"));\n operatorList.addOp(_util.OPS.save, null);\n }\n\n operatorList.addOp(_util.OPS.constructPath, [[fn], args]);\n\n if (parsingText) {\n operatorList.addOp(_util.OPS.restore, null);\n }\n } else {\n var opArgs = operatorList.argsArray[lastIndex];\n opArgs[0].push(fn);\n Array.prototype.push.apply(opArgs[1], args);\n }\n },\n parseColorSpace: function parseColorSpace(_ref5) {\n var _this8 = this;\n\n var cs = _ref5.cs,\n resources = _ref5.resources;\n return new Promise(function (resolve) {\n resolve(_colorspace.ColorSpace.parse(cs, _this8.xref, resources, _this8.pdfFunctionFactory));\n })[\"catch\"](function (reason) {\n if (reason instanceof _util.AbortException) {\n return null;\n }\n\n if (_this8.options.ignoreErrors) {\n _this8.handler.send(\"UnsupportedFeature\", {\n featureId: _util.UNSUPPORTED_FEATURES.errorColorSpace\n });\n\n (0, _util.warn)(\"parseColorSpace - ignoring ColorSpace: \\\"\".concat(reason, \"\\\".\"));\n return null;\n }\n\n throw reason;\n });\n },\n handleColorN: function handleColorN(operatorList, fn, args, cs, patterns, resources, task) {\n var _this9 = this;\n\n return _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee4() {\n var patternName, pattern, dict, typeNum, color, shading, matrix;\n return _regenerator[\"default\"].wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n patternName = args[args.length - 1];\n\n if (!((0, _primitives.isName)(patternName) && (pattern = patterns.get(patternName.name)))) {\n _context4.next = 16;\n break;\n }\n\n dict = (0, _primitives.isStream)(pattern) ? pattern.dict : pattern;\n typeNum = dict.get(\"PatternType\");\n\n if (!(typeNum === TILING_PATTERN)) {\n _context4.next = 9;\n break;\n }\n\n color = cs.base ? cs.base.getRgb(args, 0) : null;\n return _context4.abrupt(\"return\", _this9.handleTilingType(fn, color, resources, pattern, dict, operatorList, task));\n\n case 9:\n if (!(typeNum === SHADING_PATTERN)) {\n _context4.next = 15;\n break;\n }\n\n shading = dict.get(\"Shading\");\n matrix = dict.getArray(\"Matrix\");\n pattern = _pattern.Pattern.parseShading(shading, matrix, _this9.xref, resources, _this9.handler, _this9.pdfFunctionFactory);\n operatorList.addOp(fn, pattern.getIR());\n return _context4.abrupt(\"return\", undefined);\n\n case 15:\n throw new _util.FormatError(\"Unknown PatternType: \".concat(typeNum));\n\n case 16:\n throw new _util.FormatError(\"Unknown PatternName: \".concat(patternName));\n\n case 17:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4);\n }))();\n },\n getOperatorList: function getOperatorList(_ref6) {\n var _this10 = this;\n\n var stream = _ref6.stream,\n task = _ref6.task,\n resources = _ref6.resources,\n operatorList = _ref6.operatorList,\n _ref6$initialState = _ref6.initialState,\n initialState = _ref6$initialState === void 0 ? null : _ref6$initialState;\n resources = resources || _primitives.Dict.empty;\n initialState = initialState || new EvalState();\n\n if (!operatorList) {\n throw new Error('getOperatorList: missing \"operatorList\" parameter');\n }\n\n var self = this;\n var xref = this.xref;\n var parsingText = false;\n var localImageCache = new _image_utils.LocalImageCache();\n\n var xobjs = resources.get(\"XObject\") || _primitives.Dict.empty;\n\n var patterns = resources.get(\"Pattern\") || _primitives.Dict.empty;\n\n var stateManager = new StateManager(initialState);\n var preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n var timeSlotManager = new TimeSlotManager();\n\n function closePendingRestoreOPS(argument) {\n for (var i = 0, ii = preprocessor.savedStatesDepth; i < ii; i++) {\n operatorList.addOp(_util.OPS.restore, []);\n }\n }\n\n return new Promise(function promiseBody(resolve, reject) {\n var next = function next(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\n task.ensureNotTerminated();\n timeSlotManager.reset();\n var stop,\n operation = {},\n i,\n ii,\n cs;\n\n while (!(stop = timeSlotManager.check())) {\n operation.args = null;\n\n if (!preprocessor.read(operation)) {\n break;\n }\n\n var args = operation.args;\n var fn = operation.fn;\n\n switch (fn | 0) {\n case _util.OPS.paintXObject:\n var name = args[0].name;\n\n if (name) {\n var localImage = localImageCache.getByName(name);\n\n if (localImage) {\n operatorList.addOp(localImage.fn, localImage.args);\n args = null;\n continue;\n }\n }\n\n next(new Promise(function (resolveXObject, rejectXObject) {\n if (!name) {\n throw new _util.FormatError(\"XObject must be referred to by name.\");\n }\n\n var xobj = xobjs.getRaw(name);\n\n if (xobj instanceof _primitives.Ref) {\n var _localImage = localImageCache.getByRef(xobj);\n\n if (_localImage) {\n operatorList.addOp(_localImage.fn, _localImage.args);\n resolveXObject();\n return;\n }\n\n var globalImage = self.globalImageCache.getData(xobj, self.pageIndex);\n\n if (globalImage) {\n operatorList.addDependency(globalImage.objId);\n operatorList.addOp(globalImage.fn, globalImage.args);\n resolveXObject();\n return;\n }\n\n xobj = xref.fetch(xobj);\n }\n\n if (!xobj) {\n operatorList.addOp(fn, args);\n resolveXObject();\n return;\n }\n\n if (!(0, _primitives.isStream)(xobj)) {\n throw new _util.FormatError(\"XObject should be a stream\");\n }\n\n var type = xobj.dict.get(\"Subtype\");\n\n if (!(0, _primitives.isName)(type)) {\n throw new _util.FormatError(\"XObject should have a Name subtype\");\n }\n\n if (type.name === \"Form\") {\n stateManager.save();\n self.buildFormXObject(resources, xobj, null, operatorList, task, stateManager.state.clone()).then(function () {\n stateManager.restore();\n resolveXObject();\n }, rejectXObject);\n return;\n } else if (type.name === \"Image\") {\n self.buildPaintImageXObject({\n resources: resources,\n image: xobj,\n operatorList: operatorList,\n cacheKey: name,\n localImageCache: localImageCache\n }).then(resolveXObject, rejectXObject);\n return;\n } else if (type.name === \"PS\") {\n (0, _util.info)(\"Ignored XObject subtype PS\");\n } else {\n throw new _util.FormatError(\"Unhandled XObject subtype \".concat(type.name));\n }\n\n resolveXObject();\n })[\"catch\"](function (reason) {\n if (reason instanceof _util.AbortException) {\n return;\n }\n\n if (self.options.ignoreErrors) {\n self.handler.send(\"UnsupportedFeature\", {\n featureId: _util.UNSUPPORTED_FEATURES.errorXObject\n });\n (0, _util.warn)(\"getOperatorList - ignoring XObject: \\\"\".concat(reason, \"\\\".\"));\n return;\n }\n\n throw reason;\n }));\n return;\n\n case _util.OPS.setFont:\n var fontSize = args[1];\n next(self.handleSetFont(resources, args, null, operatorList, task, stateManager.state).then(function (loadedName) {\n operatorList.addDependency(loadedName);\n operatorList.addOp(_util.OPS.setFont, [loadedName, fontSize]);\n }));\n return;\n\n case _util.OPS.beginText:\n parsingText = true;\n break;\n\n case _util.OPS.endText:\n parsingText = false;\n break;\n\n case _util.OPS.endInlineImage:\n var cacheKey = args[0].cacheKey;\n\n if (cacheKey) {\n var _localImage2 = localImageCache.getByName(cacheKey);\n\n if (_localImage2) {\n operatorList.addOp(_localImage2.fn, _localImage2.args);\n args = null;\n continue;\n }\n }\n\n next(self.buildPaintImageXObject({\n resources: resources,\n image: args[0],\n isInline: true,\n operatorList: operatorList,\n cacheKey: cacheKey,\n localImageCache: localImageCache\n }));\n return;\n\n case _util.OPS.showText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n\n args[0] = self.handleText(args[0], stateManager.state);\n break;\n\n case _util.OPS.showSpacedText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n\n var arr = args[0];\n var combinedGlyphs = [];\n var arrLength = arr.length;\n var state = stateManager.state;\n\n for (i = 0; i < arrLength; ++i) {\n var arrItem = arr[i];\n\n if ((0, _util.isString)(arrItem)) {\n Array.prototype.push.apply(combinedGlyphs, self.handleText(arrItem, state));\n } else if ((0, _util.isNum)(arrItem)) {\n combinedGlyphs.push(arrItem);\n }\n }\n\n args[0] = combinedGlyphs;\n fn = _util.OPS.showText;\n break;\n\n case _util.OPS.nextLineShowText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n\n operatorList.addOp(_util.OPS.nextLine);\n args[0] = self.handleText(args[0], stateManager.state);\n fn = _util.OPS.showText;\n break;\n\n case _util.OPS.nextLineSetSpacingShowText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n\n operatorList.addOp(_util.OPS.nextLine);\n operatorList.addOp(_util.OPS.setWordSpacing, [args.shift()]);\n operatorList.addOp(_util.OPS.setCharSpacing, [args.shift()]);\n args[0] = self.handleText(args[0], stateManager.state);\n fn = _util.OPS.showText;\n break;\n\n case _util.OPS.setTextRenderingMode:\n stateManager.state.textRenderingMode = args[0];\n break;\n\n case _util.OPS.setFillColorSpace:\n next(self.parseColorSpace({\n cs: args[0],\n resources: resources\n }).then(function (colorSpace) {\n if (colorSpace) {\n stateManager.state.fillColorSpace = colorSpace;\n }\n }));\n return;\n\n case _util.OPS.setStrokeColorSpace:\n next(self.parseColorSpace({\n cs: args[0],\n resources: resources\n }).then(function (colorSpace) {\n if (colorSpace) {\n stateManager.state.strokeColorSpace = colorSpace;\n }\n }));\n return;\n\n case _util.OPS.setFillColor:\n cs = stateManager.state.fillColorSpace;\n args = cs.getRgb(args, 0);\n fn = _util.OPS.setFillRGBColor;\n break;\n\n case _util.OPS.setStrokeColor:\n cs = stateManager.state.strokeColorSpace;\n args = cs.getRgb(args, 0);\n fn = _util.OPS.setStrokeRGBColor;\n break;\n\n case _util.OPS.setFillGray:\n stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.gray;\n args = _colorspace.ColorSpace.singletons.gray.getRgb(args, 0);\n fn = _util.OPS.setFillRGBColor;\n break;\n\n case _util.OPS.setStrokeGray:\n stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.gray;\n args = _colorspace.ColorSpace.singletons.gray.getRgb(args, 0);\n fn = _util.OPS.setStrokeRGBColor;\n break;\n\n case _util.OPS.setFillCMYKColor:\n stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.cmyk;\n args = _colorspace.ColorSpace.singletons.cmyk.getRgb(args, 0);\n fn = _util.OPS.setFillRGBColor;\n break;\n\n case _util.OPS.setStrokeCMYKColor:\n stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.cmyk;\n args = _colorspace.ColorSpace.singletons.cmyk.getRgb(args, 0);\n fn = _util.OPS.setStrokeRGBColor;\n break;\n\n case _util.OPS.setFillRGBColor:\n stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.rgb;\n args = _colorspace.ColorSpace.singletons.rgb.getRgb(args, 0);\n break;\n\n case _util.OPS.setStrokeRGBColor:\n stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.rgb;\n args = _colorspace.ColorSpace.singletons.rgb.getRgb(args, 0);\n break;\n\n case _util.OPS.setFillColorN:\n cs = stateManager.state.fillColorSpace;\n\n if (cs.name === \"Pattern\") {\n next(self.handleColorN(operatorList, _util.OPS.setFillColorN, args, cs, patterns, resources, task));\n return;\n }\n\n args = cs.getRgb(args, 0);\n fn = _util.OPS.setFillRGBColor;\n break;\n\n case _util.OPS.setStrokeColorN:\n cs = stateManager.state.strokeColorSpace;\n\n if (cs.name === \"Pattern\") {\n next(self.handleColorN(operatorList, _util.OPS.setStrokeColorN, args, cs, patterns, resources, task));\n return;\n }\n\n args = cs.getRgb(args, 0);\n fn = _util.OPS.setStrokeRGBColor;\n break;\n\n case _util.OPS.shadingFill:\n var shadingRes = resources.get(\"Shading\");\n\n if (!shadingRes) {\n throw new _util.FormatError(\"No shading resource found\");\n }\n\n var shading = shadingRes.get(args[0].name);\n\n if (!shading) {\n throw new _util.FormatError(\"No shading object found\");\n }\n\n var shadingFill = _pattern.Pattern.parseShading(shading, null, xref, resources, self.handler, self.pdfFunctionFactory);\n\n var patternIR = shadingFill.getIR();\n args = [patternIR];\n fn = _util.OPS.shadingFill;\n break;\n\n case _util.OPS.setGState:\n var dictName = args[0];\n var extGState = resources.get(\"ExtGState\");\n\n if (!(0, _primitives.isDict)(extGState) || !extGState.has(dictName.name)) {\n break;\n }\n\n var gState = extGState.get(dictName.name);\n next(self.setGState(resources, gState, operatorList, task, stateManager));\n return;\n\n case _util.OPS.moveTo:\n case _util.OPS.lineTo:\n case _util.OPS.curveTo:\n case _util.OPS.curveTo2:\n case _util.OPS.curveTo3:\n case _util.OPS.closePath:\n case _util.OPS.rectangle:\n self.buildPath(operatorList, fn, args, parsingText);\n continue;\n\n case _util.OPS.markPoint:\n case _util.OPS.markPointProps:\n case _util.OPS.beginMarkedContent:\n case _util.OPS.beginMarkedContentProps:\n case _util.OPS.endMarkedContent:\n case _util.OPS.beginCompat:\n case _util.OPS.endCompat:\n continue;\n\n default:\n if (args !== null) {\n for (i = 0, ii = args.length; i < ii; i++) {\n if (args[i] instanceof _primitives.Dict) {\n break;\n }\n }\n\n if (i < ii) {\n (0, _util.warn)(\"getOperatorList - ignoring operator: \" + fn);\n continue;\n }\n }\n\n }\n\n operatorList.addOp(fn, args);\n }\n\n if (stop) {\n next(deferred);\n return;\n }\n\n closePendingRestoreOPS();\n resolve();\n })[\"catch\"](function (reason) {\n if (reason instanceof _util.AbortException) {\n return;\n }\n\n if (_this10.options.ignoreErrors) {\n _this10.handler.send(\"UnsupportedFeature\", {\n featureId: _util.UNSUPPORTED_FEATURES.errorOperatorList\n });\n\n (0, _util.warn)(\"getOperatorList - ignoring errors during \\\"\".concat(task.name, \"\\\" \") + \"task: \\\"\".concat(reason, \"\\\".\"));\n closePendingRestoreOPS();\n return;\n }\n\n throw reason;\n });\n },\n getTextContent: function getTextContent(_ref7) {\n var _this11 = this;\n\n var stream = _ref7.stream,\n task = _ref7.task,\n resources = _ref7.resources,\n _ref7$stateManager = _ref7.stateManager,\n stateManager = _ref7$stateManager === void 0 ? null : _ref7$stateManager,\n _ref7$normalizeWhites = _ref7.normalizeWhitespace,\n normalizeWhitespace = _ref7$normalizeWhites === void 0 ? false : _ref7$normalizeWhites,\n _ref7$combineTextItem = _ref7.combineTextItems,\n combineTextItems = _ref7$combineTextItem === void 0 ? false : _ref7$combineTextItem,\n sink = _ref7.sink,\n _ref7$seenStyles = _ref7.seenStyles,\n seenStyles = _ref7$seenStyles === void 0 ? Object.create(null) : _ref7$seenStyles;\n resources = resources || _primitives.Dict.empty;\n stateManager = stateManager || new StateManager(new TextState());\n var WhitespaceRegexp = /\\s/g;\n var textContent = {\n items: [],\n styles: Object.create(null)\n };\n var textContentItem = {\n initialized: false,\n str: [],\n width: 0,\n height: 0,\n vertical: false,\n lastAdvanceWidth: 0,\n lastAdvanceHeight: 0,\n textAdvanceScale: 0,\n spaceWidth: 0,\n fakeSpaceMin: Infinity,\n fakeMultiSpaceMin: Infinity,\n fakeMultiSpaceMax: -0,\n textRunBreakAllowed: false,\n transform: null,\n fontName: null\n };\n var SPACE_FACTOR = 0.3;\n var MULTI_SPACE_FACTOR = 1.5;\n var MULTI_SPACE_FACTOR_MAX = 4;\n var self = this;\n var xref = this.xref;\n var xobjs = null;\n var emptyXObjectCache = new _image_utils.LocalImageCache();\n var preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n var textState;\n\n function ensureTextContentItem() {\n if (textContentItem.initialized) {\n return textContentItem;\n }\n\n var font = textState.font;\n\n if (!(font.loadedName in seenStyles)) {\n seenStyles[font.loadedName] = true;\n textContent.styles[font.loadedName] = {\n fontFamily: font.fallbackName,\n ascent: font.ascent,\n descent: font.descent,\n vertical: font.vertical\n };\n }\n\n textContentItem.fontName = font.loadedName;\n var tsm = [textState.fontSize * textState.textHScale, 0, 0, textState.fontSize, 0, textState.textRise];\n\n if (font.isType3Font && textState.fontSize <= 1 && !(0, _util.isArrayEqual)(textState.fontMatrix, _util.FONT_IDENTITY_MATRIX)) {\n var glyphHeight = font.bbox[3] - font.bbox[1];\n\n if (glyphHeight > 0) {\n tsm[3] *= glyphHeight * textState.fontMatrix[3];\n }\n }\n\n var trm = _util.Util.transform(textState.ctm, _util.Util.transform(textState.textMatrix, tsm));\n\n textContentItem.transform = trm;\n\n if (!font.vertical) {\n textContentItem.width = 0;\n textContentItem.height = Math.sqrt(trm[2] * trm[2] + trm[3] * trm[3]);\n textContentItem.vertical = false;\n } else {\n textContentItem.width = Math.sqrt(trm[0] * trm[0] + trm[1] * trm[1]);\n textContentItem.height = 0;\n textContentItem.vertical = true;\n }\n\n var a = textState.textLineMatrix[0];\n var b = textState.textLineMatrix[1];\n var scaleLineX = Math.sqrt(a * a + b * b);\n a = textState.ctm[0];\n b = textState.ctm[1];\n var scaleCtmX = Math.sqrt(a * a + b * b);\n textContentItem.textAdvanceScale = scaleCtmX * scaleLineX;\n textContentItem.lastAdvanceWidth = 0;\n textContentItem.lastAdvanceHeight = 0;\n var spaceWidth = font.spaceWidth / 1000 * textState.fontSize;\n\n if (spaceWidth) {\n textContentItem.spaceWidth = spaceWidth;\n textContentItem.fakeSpaceMin = spaceWidth * SPACE_FACTOR;\n textContentItem.fakeMultiSpaceMin = spaceWidth * MULTI_SPACE_FACTOR;\n textContentItem.fakeMultiSpaceMax = spaceWidth * MULTI_SPACE_FACTOR_MAX;\n textContentItem.textRunBreakAllowed = !font.isMonospace;\n } else {\n textContentItem.spaceWidth = 0;\n textContentItem.fakeSpaceMin = Infinity;\n textContentItem.fakeMultiSpaceMin = Infinity;\n textContentItem.fakeMultiSpaceMax = 0;\n textContentItem.textRunBreakAllowed = false;\n }\n\n textContentItem.initialized = true;\n return textContentItem;\n }\n\n function replaceWhitespace(str) {\n var i = 0,\n ii = str.length,\n code;\n\n while (i < ii && (code = str.charCodeAt(i)) >= 0x20 && code <= 0x7f) {\n i++;\n }\n\n return i < ii ? str.replace(WhitespaceRegexp, \" \") : str;\n }\n\n function runBidiTransform(textChunk) {\n var str = textChunk.str.join(\"\");\n var bidiResult = (0, _bidi.bidi)(str, -1, textChunk.vertical);\n return {\n str: normalizeWhitespace ? replaceWhitespace(bidiResult.str) : bidiResult.str,\n dir: bidiResult.dir,\n width: textChunk.width,\n height: textChunk.height,\n transform: textChunk.transform,\n fontName: textChunk.fontName\n };\n }\n\n function handleSetFont(fontName, fontRef) {\n return self.loadFont(fontName, fontRef, resources).then(function (translated) {\n textState.font = translated.font;\n textState.fontMatrix = translated.font.fontMatrix || _util.FONT_IDENTITY_MATRIX;\n });\n }\n\n function buildTextContentItem(chars) {\n var font = textState.font;\n var textChunk = ensureTextContentItem();\n var width = 0;\n var height = 0;\n var glyphs = font.charsToGlyphs(chars);\n\n for (var i = 0; i < glyphs.length; i++) {\n var glyph = glyphs[i];\n var glyphWidth = null;\n\n if (font.vertical && glyph.vmetric) {\n glyphWidth = glyph.vmetric[0];\n } else {\n glyphWidth = glyph.width;\n }\n\n var glyphUnicode = glyph.unicode;\n var NormalizedUnicodes = (0, _unicode.getNormalizedUnicodes)();\n\n if (NormalizedUnicodes[glyphUnicode] !== undefined) {\n glyphUnicode = NormalizedUnicodes[glyphUnicode];\n }\n\n glyphUnicode = (0, _unicode.reverseIfRtl)(glyphUnicode);\n var charSpacing = textState.charSpacing;\n\n if (glyph.isSpace) {\n var wordSpacing = textState.wordSpacing;\n charSpacing += wordSpacing;\n\n if (wordSpacing > 0) {\n addFakeSpaces(wordSpacing, textChunk.str);\n }\n }\n\n var tx = 0;\n var ty = 0;\n\n if (!font.vertical) {\n var w0 = glyphWidth * textState.fontMatrix[0];\n tx = (w0 * textState.fontSize + charSpacing) * textState.textHScale;\n width += tx;\n } else {\n var w1 = glyphWidth * textState.fontMatrix[0];\n ty = w1 * textState.fontSize + charSpacing;\n height += ty;\n }\n\n textState.translateTextMatrix(tx, ty);\n textChunk.str.push(glyphUnicode);\n }\n\n if (!font.vertical) {\n textChunk.lastAdvanceWidth = width;\n textChunk.width += width;\n } else {\n textChunk.lastAdvanceHeight = height;\n textChunk.height += Math.abs(height);\n }\n\n return textChunk;\n }\n\n function addFakeSpaces(width, strBuf) {\n if (width < textContentItem.fakeSpaceMin) {\n return;\n }\n\n if (width < textContentItem.fakeMultiSpaceMin) {\n strBuf.push(\" \");\n return;\n }\n\n var fakeSpaces = Math.round(width / textContentItem.spaceWidth);\n\n while (fakeSpaces-- > 0) {\n strBuf.push(\" \");\n }\n }\n\n function flushTextContentItem() {\n if (!textContentItem.initialized) {\n return;\n }\n\n if (!textContentItem.vertical) {\n textContentItem.width *= textContentItem.textAdvanceScale;\n } else {\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() {\n var length = textContent.items.length;\n\n if (length > 0) {\n sink.enqueue(textContent, length);\n textContent.items = [];\n textContent.styles = Object.create(null);\n }\n }\n\n var timeSlotManager = new TimeSlotManager();\n return new Promise(function promiseBody(resolve, reject) {\n var next = function next(promise) {\n enqueueChunk();\n Promise.all([promise, sink.ready]).then(function () {\n try {\n promiseBody(resolve, reject);\n } catch (ex) {\n reject(ex);\n }\n }, reject);\n };\n\n task.ensureNotTerminated();\n timeSlotManager.reset();\n var stop,\n operation = {},\n args = [];\n\n while (!(stop = timeSlotManager.check())) {\n args.length = 0;\n operation.args = args;\n\n if (!preprocessor.read(operation)) {\n break;\n }\n\n textState = stateManager.state;\n var fn = operation.fn;\n args = operation.args;\n var advance, diff;\n\n switch (fn | 0) {\n case _util.OPS.setFont:\n var fontNameArg = args[0].name,\n fontSizeArg = args[1];\n\n if (textState.font && fontNameArg === textState.fontName && fontSizeArg === textState.fontSize) {\n break;\n }\n\n flushTextContentItem();\n textState.fontName = fontNameArg;\n textState.fontSize = fontSizeArg;\n next(handleSetFont(fontNameArg, null));\n return;\n\n case _util.OPS.setTextRise:\n flushTextContentItem();\n textState.textRise = args[0];\n break;\n\n case _util.OPS.setHScale:\n flushTextContentItem();\n textState.textHScale = args[0] / 100;\n break;\n\n case _util.OPS.setLeading:\n flushTextContentItem();\n textState.leading = args[0];\n break;\n\n case _util.OPS.moveText:\n var isSameTextLine = !textState.font ? false : (textState.font.vertical ? args[0] : args[1]) === 0;\n advance = args[0] - args[1];\n\n if (combineTextItems && isSameTextLine && textContentItem.initialized && advance > 0 && advance <= textContentItem.fakeMultiSpaceMax) {\n textState.translateTextLineMatrix(args[0], args[1]);\n textContentItem.width += args[0] - textContentItem.lastAdvanceWidth;\n textContentItem.height += args[1] - textContentItem.lastAdvanceHeight;\n diff = args[0] - textContentItem.lastAdvanceWidth - (args[1] - textContentItem.lastAdvanceHeight);\n addFakeSpaces(diff, textContentItem.str);\n break;\n }\n\n flushTextContentItem();\n textState.translateTextLineMatrix(args[0], args[1]);\n textState.textMatrix = textState.textLineMatrix.slice();\n break;\n\n case _util.OPS.setLeadingMoveText:\n flushTextContentItem();\n textState.leading = -args[1];\n textState.translateTextLineMatrix(args[0], args[1]);\n textState.textMatrix = textState.textLineMatrix.slice();\n break;\n\n case _util.OPS.nextLine:\n flushTextContentItem();\n textState.carriageReturn();\n break;\n\n case _util.OPS.setTextMatrix:\n advance = textState.calcTextLineMatrixAdvance(args[0], args[1], args[2], args[3], args[4], args[5]);\n\n if (combineTextItems && advance !== null && textContentItem.initialized && advance.value > 0 && advance.value <= textContentItem.fakeMultiSpaceMax) {\n textState.translateTextLineMatrix(advance.width, advance.height);\n textContentItem.width += advance.width - textContentItem.lastAdvanceWidth;\n textContentItem.height += advance.height - textContentItem.lastAdvanceHeight;\n diff = advance.width - textContentItem.lastAdvanceWidth - (advance.height - textContentItem.lastAdvanceHeight);\n addFakeSpaces(diff, textContentItem.str);\n break;\n }\n\n flushTextContentItem();\n textState.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);\n textState.setTextLineMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);\n break;\n\n case _util.OPS.setCharSpacing:\n textState.charSpacing = args[0];\n break;\n\n case _util.OPS.setWordSpacing:\n textState.wordSpacing = args[0];\n break;\n\n case _util.OPS.beginText:\n flushTextContentItem();\n textState.textMatrix = _util.IDENTITY_MATRIX.slice();\n textState.textLineMatrix = _util.IDENTITY_MATRIX.slice();\n break;\n\n case _util.OPS.showSpacedText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n\n var items = args[0];\n var offset;\n\n for (var j = 0, jj = items.length; j < jj; j++) {\n if (typeof items[j] === \"string\") {\n buildTextContentItem(items[j]);\n } else if ((0, _util.isNum)(items[j])) {\n ensureTextContentItem();\n advance = items[j] * textState.fontSize / 1000;\n var breakTextRun = false;\n\n if (textState.font.vertical) {\n offset = advance;\n textState.translateTextMatrix(0, offset);\n breakTextRun = textContentItem.textRunBreakAllowed && advance > textContentItem.fakeMultiSpaceMax;\n\n if (!breakTextRun) {\n textContentItem.height += offset;\n }\n } else {\n advance = -advance;\n offset = advance * textState.textHScale;\n textState.translateTextMatrix(offset, 0);\n breakTextRun = textContentItem.textRunBreakAllowed && advance > textContentItem.fakeMultiSpaceMax;\n\n if (!breakTextRun) {\n textContentItem.width += offset;\n }\n }\n\n if (breakTextRun) {\n flushTextContentItem();\n } else if (advance > 0) {\n addFakeSpaces(advance, textContentItem.str);\n }\n }\n }\n\n break;\n\n case _util.OPS.showText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n\n buildTextContentItem(args[0]);\n break;\n\n case _util.OPS.nextLineShowText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n\n flushTextContentItem();\n textState.carriageReturn();\n buildTextContentItem(args[0]);\n break;\n\n case _util.OPS.nextLineSetSpacingShowText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n\n flushTextContentItem();\n textState.wordSpacing = args[0];\n textState.charSpacing = args[1];\n textState.carriageReturn();\n buildTextContentItem(args[2]);\n break;\n\n case _util.OPS.paintXObject:\n flushTextContentItem();\n\n if (!xobjs) {\n xobjs = resources.get(\"XObject\") || _primitives.Dict.empty;\n }\n\n var name = args[0].name;\n\n if (name && emptyXObjectCache.getByName(name)) {\n break;\n }\n\n next(new Promise(function (resolveXObject, rejectXObject) {\n if (!name) {\n throw new _util.FormatError(\"XObject must be referred to by name.\");\n }\n\n var xobj = xobjs.getRaw(name);\n\n if (xobj instanceof _primitives.Ref) {\n if (emptyXObjectCache.getByRef(xobj)) {\n resolveXObject();\n return;\n }\n\n xobj = xref.fetch(xobj);\n }\n\n if (!xobj) {\n resolveXObject();\n return;\n }\n\n if (!(0, _primitives.isStream)(xobj)) {\n throw new _util.FormatError(\"XObject should be a stream\");\n }\n\n var type = xobj.dict.get(\"Subtype\");\n\n if (!(0, _primitives.isName)(type)) {\n throw new _util.FormatError(\"XObject should have a Name subtype\");\n }\n\n if (type.name !== \"Form\") {\n emptyXObjectCache.set(name, xobj.dict.objId, true);\n resolveXObject();\n return;\n }\n\n var currentState = stateManager.state.clone();\n var xObjStateManager = new StateManager(currentState);\n var matrix = xobj.dict.getArray(\"Matrix\");\n\n if (Array.isArray(matrix) && matrix.length === 6) {\n xObjStateManager.transform(matrix);\n }\n\n enqueueChunk();\n var sinkWrapper = {\n enqueueInvoked: false,\n enqueue: function 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.getTextContent({\n stream: xobj,\n task: task,\n resources: xobj.dict.get(\"Resources\") || resources,\n stateManager: xObjStateManager,\n normalizeWhitespace: normalizeWhitespace,\n combineTextItems: combineTextItems,\n sink: sinkWrapper,\n seenStyles: seenStyles\n }).then(function () {\n if (!sinkWrapper.enqueueInvoked) {\n emptyXObjectCache.set(name, xobj.dict.objId, true);\n }\n\n resolveXObject();\n }, rejectXObject);\n })[\"catch\"](function (reason) {\n if (reason instanceof _util.AbortException) {\n return;\n }\n\n if (self.options.ignoreErrors) {\n (0, _util.warn)(\"getTextContent - ignoring XObject: \\\"\".concat(reason, \"\\\".\"));\n return;\n }\n\n throw reason;\n }));\n return;\n\n case _util.OPS.setGState:\n flushTextContentItem();\n var dictName = args[0];\n var extGState = resources.get(\"ExtGState\");\n\n if (!(0, _primitives.isDict)(extGState) || !(0, _primitives.isName)(dictName)) {\n break;\n }\n\n var gState = extGState.get(dictName.name);\n\n if (!(0, _primitives.isDict)(gState)) {\n break;\n }\n\n var gStateFont = gState.get(\"Font\");\n\n if (gStateFont) {\n textState.fontName = null;\n textState.fontSize = gStateFont[1];\n next(handleSetFont(null, gStateFont[0]));\n return;\n }\n\n break;\n }\n\n if (textContent.items.length >= sink.desiredSize) {\n stop = true;\n break;\n }\n }\n\n if (stop) {\n next(deferred);\n return;\n }\n\n flushTextContentItem();\n enqueueChunk();\n resolve();\n })[\"catch\"](function (reason) {\n if (reason instanceof _util.AbortException) {\n return;\n }\n\n if (_this11.options.ignoreErrors) {\n (0, _util.warn)(\"getTextContent - ignoring errors during \\\"\".concat(task.name, \"\\\" \") + \"task: \\\"\".concat(reason, \"\\\".\"));\n flushTextContentItem();\n enqueueChunk();\n return;\n }\n\n throw reason;\n });\n },\n extractDataStructures: function PartialEvaluator_extractDataStructures(dict, baseDict, properties) {\n var _this12 = this;\n\n var xref = this.xref;\n var cidToGidBytes;\n var toUnicode = dict.get(\"ToUnicode\") || baseDict.get(\"ToUnicode\");\n var toUnicodePromise = toUnicode ? this.readToUnicode(toUnicode) : Promise.resolve(undefined);\n\n if (properties.composite) {\n var cidSystemInfo = dict.get(\"CIDSystemInfo\");\n\n if ((0, _primitives.isDict)(cidSystemInfo)) {\n properties.cidSystemInfo = {\n registry: (0, _util.stringToPDFString)(cidSystemInfo.get(\"Registry\")),\n ordering: (0, _util.stringToPDFString)(cidSystemInfo.get(\"Ordering\")),\n supplement: cidSystemInfo.get(\"Supplement\")\n };\n }\n\n var cidToGidMap = dict.get(\"CIDToGIDMap\");\n\n if ((0, _primitives.isStream)(cidToGidMap)) {\n cidToGidBytes = cidToGidMap.getBytes();\n }\n }\n\n var differences = [];\n var baseEncodingName = null;\n var encoding;\n\n if (dict.has(\"Encoding\")) {\n encoding = dict.get(\"Encoding\");\n\n if ((0, _primitives.isDict)(encoding)) {\n baseEncodingName = encoding.get(\"BaseEncoding\");\n baseEncodingName = (0, _primitives.isName)(baseEncodingName) ? baseEncodingName.name : null;\n\n if (encoding.has(\"Differences\")) {\n var diffEncoding = encoding.get(\"Differences\");\n var index = 0;\n\n for (var j = 0, jj = diffEncoding.length; j < jj; j++) {\n var data = xref.fetchIfRef(diffEncoding[j]);\n\n if ((0, _util.isNum)(data)) {\n index = data;\n } else if ((0, _primitives.isName)(data)) {\n differences[index++] = data.name;\n } else {\n throw new _util.FormatError(\"Invalid entry in 'Differences' array: \".concat(data));\n }\n }\n }\n } else if ((0, _primitives.isName)(encoding)) {\n baseEncodingName = encoding.name;\n } else {\n throw new _util.FormatError(\"Encoding is not a Name nor a Dict\");\n }\n\n if (baseEncodingName !== \"MacRomanEncoding\" && baseEncodingName !== \"MacExpertEncoding\" && baseEncodingName !== \"WinAnsiEncoding\") {\n baseEncodingName = null;\n }\n }\n\n if (baseEncodingName) {\n properties.defaultEncoding = (0, _encodings.getEncoding)(baseEncodingName).slice();\n } else {\n var isSymbolicFont = !!(properties.flags & _fonts.FontFlags.Symbolic);\n var isNonsymbolicFont = !!(properties.flags & _fonts.FontFlags.Nonsymbolic);\n encoding = _encodings.StandardEncoding;\n\n if (properties.type === \"TrueType\" && !isNonsymbolicFont) {\n encoding = _encodings.WinAnsiEncoding;\n }\n\n if (isSymbolicFont) {\n encoding = _encodings.MacRomanEncoding;\n\n if (!properties.file) {\n if (/Symbol/i.test(properties.name)) {\n encoding = _encodings.SymbolSetEncoding;\n } else if (/Dingbats|Wingdings/i.test(properties.name)) {\n encoding = _encodings.ZapfDingbatsEncoding;\n }\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.then(function (readToUnicode) {\n properties.toUnicode = readToUnicode;\n return _this12.buildToUnicode(properties);\n }).then(function (builtToUnicode) {\n properties.toUnicode = builtToUnicode;\n\n if (cidToGidBytes) {\n properties.cidToGidMap = _this12.readCidToGidMap(cidToGidBytes, builtToUnicode);\n }\n\n return properties;\n });\n },\n _buildSimpleFontToUnicode: function _buildSimpleFontToUnicode(properties) {\n var forceGlyphs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n (0, _util.assert)(!properties.composite, \"Must be a simple font.\");\n var toUnicode = [];\n var encoding = properties.defaultEncoding.slice();\n var baseEncodingName = properties.baseEncodingName;\n var differences = properties.differences;\n\n for (var charcode in differences) {\n var glyphName = differences[charcode];\n\n if (glyphName === \".notdef\") {\n continue;\n }\n\n encoding[charcode] = glyphName;\n }\n\n var glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();\n\n for (var _charcode in encoding) {\n var _glyphName = encoding[_charcode];\n\n if (_glyphName === \"\") {\n continue;\n } else if (glyphsUnicodeMap[_glyphName] === undefined) {\n var code = 0;\n\n switch (_glyphName[0]) {\n case \"G\":\n if (_glyphName.length === 3) {\n code = parseInt(_glyphName.substring(1), 16);\n }\n\n break;\n\n case \"g\":\n if (_glyphName.length === 5) {\n code = parseInt(_glyphName.substring(1), 16);\n }\n\n break;\n\n case \"C\":\n case \"c\":\n if (_glyphName.length >= 3 && _glyphName.length <= 4) {\n var codeStr = _glyphName.substring(1);\n\n if (forceGlyphs) {\n code = parseInt(codeStr, 16);\n break;\n }\n\n code = +codeStr;\n\n if (Number.isNaN(code) && Number.isInteger(parseInt(codeStr, 16))) {\n return this._buildSimpleFontToUnicode(properties, true);\n }\n }\n\n break;\n\n default:\n var unicode = (0, _unicode.getUnicodeForGlyph)(_glyphName, glyphsUnicodeMap);\n\n if (unicode !== -1) {\n code = unicode;\n }\n\n }\n\n if (code > 0 && code <= 0x10ffff && Number.isInteger(code)) {\n if (baseEncodingName && code === +_charcode) {\n var baseEncoding = (0, _encodings.getEncoding)(baseEncodingName);\n\n if (baseEncoding && (_glyphName = baseEncoding[_charcode])) {\n toUnicode[_charcode] = String.fromCharCode(glyphsUnicodeMap[_glyphName]);\n continue;\n }\n }\n\n toUnicode[_charcode] = String.fromCodePoint(code);\n }\n\n continue;\n }\n\n toUnicode[_charcode] = String.fromCharCode(glyphsUnicodeMap[_glyphName]);\n }\n\n return new _fonts.ToUnicodeMap(toUnicode);\n },\n buildToUnicode: function buildToUnicode(properties) {\n properties.hasIncludedToUnicodeMap = !!properties.toUnicode && properties.toUnicode.length > 0;\n\n if (properties.hasIncludedToUnicodeMap) {\n if (!properties.composite && properties.hasEncoding) {\n properties.fallbackToUnicode = this._buildSimpleFontToUnicode(properties);\n }\n\n return Promise.resolve(properties.toUnicode);\n }\n\n if (!properties.composite) {\n return Promise.resolve(this._buildSimpleFontToUnicode(properties));\n }\n\n if (properties.composite && (properties.cMap.builtInCMap && !(properties.cMap instanceof _cmap.IdentityCMap) || properties.cidSystemInfo.registry === \"Adobe\" && (properties.cidSystemInfo.ordering === \"GB1\" || properties.cidSystemInfo.ordering === \"CNS1\" || properties.cidSystemInfo.ordering === \"Japan1\" || properties.cidSystemInfo.ordering === \"Korea1\"))) {\n var registry = properties.cidSystemInfo.registry;\n var ordering = properties.cidSystemInfo.ordering;\n\n var ucs2CMapName = _primitives.Name.get(registry + \"-\" + ordering + \"-UCS2\");\n\n return _cmap.CMapFactory.create({\n encoding: ucs2CMapName,\n fetchBuiltInCMap: this.fetchBuiltInCMap,\n useCMap: null\n }).then(function (ucs2CMap) {\n var cMap = properties.cMap;\n var toUnicode = [];\n cMap.forEach(function (charcode, cid) {\n if (cid > 0xffff) {\n throw new _util.FormatError(\"Max size of CID is 65,535\");\n }\n\n var ucs2 = ucs2CMap.lookup(cid);\n\n if (ucs2) {\n toUnicode[charcode] = String.fromCharCode((ucs2.charCodeAt(0) << 8) + ucs2.charCodeAt(1));\n }\n });\n return new _fonts.ToUnicodeMap(toUnicode);\n });\n }\n\n return Promise.resolve(new _fonts.IdentityToUnicodeMap(properties.firstChar, properties.lastChar));\n },\n readToUnicode: function PartialEvaluator_readToUnicode(toUnicode) {\n var _this13 = this;\n\n var cmapObj = toUnicode;\n\n if ((0, _primitives.isName)(cmapObj)) {\n return _cmap.CMapFactory.create({\n encoding: cmapObj,\n fetchBuiltInCMap: this.fetchBuiltInCMap,\n useCMap: null\n }).then(function (cmap) {\n if (cmap instanceof _cmap.IdentityCMap) {\n return new _fonts.IdentityToUnicodeMap(0, 0xffff);\n }\n\n return new _fonts.ToUnicodeMap(cmap.getMap());\n });\n } else if ((0, _primitives.isStream)(cmapObj)) {\n return _cmap.CMapFactory.create({\n encoding: cmapObj,\n fetchBuiltInCMap: this.fetchBuiltInCMap,\n useCMap: null\n }).then(function (cmap) {\n if (cmap instanceof _cmap.IdentityCMap) {\n return new _fonts.IdentityToUnicodeMap(0, 0xffff);\n }\n\n var map = new Array(cmap.length);\n cmap.forEach(function (charCode, token) {\n var str = [];\n\n for (var k = 0; k < token.length; k += 2) {\n var w1 = token.charCodeAt(k) << 8 | token.charCodeAt(k + 1);\n\n if ((w1 & 0xf800) !== 0xd800) {\n str.push(w1);\n continue;\n }\n\n k += 2;\n var w2 = token.charCodeAt(k) << 8 | token.charCodeAt(k + 1);\n str.push(((w1 & 0x3ff) << 10) + (w2 & 0x3ff) + 0x10000);\n }\n\n map[charCode] = String.fromCodePoint.apply(String, str);\n });\n return new _fonts.ToUnicodeMap(map);\n }, function (reason) {\n if (reason instanceof _util.AbortException) {\n return null;\n }\n\n if (_this13.options.ignoreErrors) {\n _this13.handler.send(\"UnsupportedFeature\", {\n featureId: _util.UNSUPPORTED_FEATURES.errorFontToUnicode\n });\n\n (0, _util.warn)(\"readToUnicode - ignoring ToUnicode data: \\\"\".concat(reason, \"\\\".\"));\n return null;\n }\n\n throw reason;\n });\n }\n\n return Promise.resolve(null);\n },\n readCidToGidMap: function readCidToGidMap(glyphsData, toUnicode) {\n var result = [];\n\n for (var j = 0, jj = glyphsData.length; j < jj; j++) {\n var glyphID = glyphsData[j++] << 8 | glyphsData[j];\n var code = j >> 1;\n\n if (glyphID === 0 && !toUnicode.has(code)) {\n continue;\n }\n\n result[code] = glyphID;\n }\n\n return result;\n },\n extractWidths: function PartialEvaluator_extractWidths(dict, descriptor, properties) {\n var xref = this.xref;\n var glyphsWidths = [];\n var defaultWidth = 0;\n var glyphsVMetrics = [];\n var defaultVMetrics;\n var i, ii, j, jj, start, code, widths;\n\n if (properties.composite) {\n defaultWidth = dict.has(\"DW\") ? dict.get(\"DW\") : 1000;\n widths = dict.get(\"W\");\n\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\n if (Array.isArray(code)) {\n for (j = 0, jj = code.length; j < jj; j++) {\n glyphsWidths[start++] = xref.fetchIfRef(code[j]);\n }\n } else {\n var width = xref.fetchIfRef(widths[++i]);\n\n for (j = start; j <= code; j++) {\n glyphsWidths[j] = width;\n }\n }\n }\n }\n\n if (properties.vertical) {\n var vmetrics = dict.getArray(\"DW2\") || [880, -1000];\n defaultVMetrics = [vmetrics[1], defaultWidth * 0.5, vmetrics[0]];\n vmetrics = dict.get(\"W2\");\n\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\n if (Array.isArray(code)) {\n for (j = 0, jj = code.length; j < jj; j++) {\n glyphsVMetrics[start++] = [xref.fetchIfRef(code[j++]), xref.fetchIfRef(code[j++]), xref.fetchIfRef(code[j])];\n }\n } else {\n var vmetric = [xref.fetchIfRef(vmetrics[++i]), xref.fetchIfRef(vmetrics[++i]), xref.fetchIfRef(vmetrics[++i])];\n\n for (j = start; j <= code; j++) {\n glyphsVMetrics[j] = vmetric;\n }\n }\n }\n }\n }\n } else {\n var firstChar = properties.firstChar;\n widths = dict.get(\"Widths\");\n\n if (widths) {\n j = firstChar;\n\n for (i = 0, ii = widths.length; i < ii; i++) {\n glyphsWidths[j++] = xref.fetchIfRef(widths[i]);\n }\n\n defaultWidth = parseFloat(descriptor.get(\"MissingWidth\")) || 0;\n } else {\n var baseFontName = dict.get(\"BaseFont\");\n\n if ((0, _primitives.isName)(baseFontName)) {\n var metrics = this.getBaseFontMetrics(baseFontName.name);\n glyphsWidths = this.buildCharCodeToWidth(metrics.widths, properties);\n defaultWidth = metrics.defaultWidth;\n }\n }\n }\n\n var isMonospace = true;\n var firstWidth = defaultWidth;\n\n for (var glyph in glyphsWidths) {\n var glyphWidth = glyphsWidths[glyph];\n\n if (!glyphWidth) {\n continue;\n }\n\n if (!firstWidth) {\n firstWidth = glyphWidth;\n continue;\n }\n\n if (firstWidth !== glyphWidth) {\n isMonospace = false;\n break;\n }\n }\n\n if (isMonospace) {\n properties.flags |= _fonts.FontFlags.FixedPitch;\n }\n\n properties.defaultWidth = defaultWidth;\n properties.widths = glyphsWidths;\n properties.defaultVMetrics = defaultVMetrics;\n properties.vmetrics = glyphsVMetrics;\n },\n isSerifFont: function PartialEvaluator_isSerifFont(baseFontName) {\n var fontNameWoStyle = baseFontName.split(\"-\")[0];\n return fontNameWoStyle in (0, _standard_fonts.getSerifFonts)() || fontNameWoStyle.search(/serif/gi) !== -1;\n },\n getBaseFontMetrics: function PartialEvaluator_getBaseFontMetrics(name) {\n var defaultWidth = 0;\n var widths = [];\n var monospace = false;\n var stdFontMap = (0, _standard_fonts.getStdFontMap)();\n var lookupName = stdFontMap[name] || name;\n var Metrics = (0, _metrics.getMetrics)();\n\n if (!(lookupName in Metrics)) {\n if (this.isSerifFont(name)) {\n lookupName = \"Times-Roman\";\n } else {\n lookupName = \"Helvetica\";\n }\n }\n\n var glyphWidths = Metrics[lookupName];\n\n if ((0, _util.isNum)(glyphWidths)) {\n defaultWidth = glyphWidths;\n monospace = true;\n } else {\n widths = glyphWidths();\n }\n\n return {\n defaultWidth: defaultWidth,\n monospace: monospace,\n widths: widths\n };\n },\n buildCharCodeToWidth: function PartialEvaluator_bulildCharCodeToWidth(widthsByGlyphName, properties) {\n var widths = Object.create(null);\n var differences = properties.differences;\n var encoding = properties.defaultEncoding;\n\n for (var charCode = 0; charCode < 256; charCode++) {\n if (charCode in differences && widthsByGlyphName[differences[charCode]]) {\n widths[charCode] = widthsByGlyphName[differences[charCode]];\n continue;\n }\n\n if (charCode in encoding && widthsByGlyphName[encoding[charCode]]) {\n widths[charCode] = widthsByGlyphName[encoding[charCode]];\n continue;\n }\n }\n\n return widths;\n },\n preEvaluateFont: function PartialEvaluator_preEvaluateFont(dict) {\n var baseDict = dict;\n var type = dict.get(\"Subtype\");\n\n if (!(0, _primitives.isName)(type)) {\n throw new _util.FormatError(\"invalid font Subtype\");\n }\n\n var composite = false;\n var uint8array;\n\n if (type.name === \"Type0\") {\n var df = dict.get(\"DescendantFonts\");\n\n if (!df) {\n throw new _util.FormatError(\"Descendant fonts are not specified\");\n }\n\n dict = Array.isArray(df) ? this.xref.fetchIfRef(df[0]) : df;\n type = dict.get(\"Subtype\");\n\n if (!(0, _primitives.isName)(type)) {\n throw new _util.FormatError(\"invalid font Subtype\");\n }\n\n composite = true;\n }\n\n var descriptor = dict.get(\"FontDescriptor\");\n\n if (descriptor) {\n var hash = new _murmurhash.MurmurHash3_64();\n var encoding = baseDict.getRaw(\"Encoding\");\n\n if ((0, _primitives.isName)(encoding)) {\n hash.update(encoding.name);\n } else if ((0, _primitives.isRef)(encoding)) {\n hash.update(encoding.toString());\n } else if ((0, _primitives.isDict)(encoding)) {\n var keys = encoding.getKeys();\n\n for (var i = 0, ii = keys.length; i < ii; i++) {\n var entry = encoding.getRaw(keys[i]);\n\n if ((0, _primitives.isName)(entry)) {\n hash.update(entry.name);\n } else if ((0, _primitives.isRef)(entry)) {\n hash.update(entry.toString());\n } else if (Array.isArray(entry)) {\n var diffLength = entry.length,\n diffBuf = new Array(diffLength);\n\n for (var j = 0; j < diffLength; j++) {\n var diffEntry = entry[j];\n\n if ((0, _primitives.isName)(diffEntry)) {\n diffBuf[j] = diffEntry.name;\n } else if ((0, _util.isNum)(diffEntry) || (0, _primitives.isRef)(diffEntry)) {\n diffBuf[j] = diffEntry.toString();\n }\n }\n\n hash.update(diffBuf.join());\n }\n }\n }\n\n var firstChar = dict.get(\"FirstChar\") || 0;\n var lastChar = dict.get(\"LastChar\") || (composite ? 0xffff : 0xff);\n hash.update(\"\".concat(firstChar, \"-\").concat(lastChar));\n var toUnicode = dict.get(\"ToUnicode\") || baseDict.get(\"ToUnicode\");\n\n if ((0, _primitives.isStream)(toUnicode)) {\n var stream = toUnicode.str || toUnicode;\n uint8array = stream.buffer ? new Uint8Array(stream.buffer.buffer, 0, stream.bufferLength) : new Uint8Array(stream.bytes.buffer, stream.start, stream.end - stream.start);\n hash.update(uint8array);\n } else if ((0, _primitives.isName)(toUnicode)) {\n hash.update(toUnicode.name);\n }\n\n var widths = dict.get(\"Widths\") || baseDict.get(\"Widths\");\n\n if (widths) {\n uint8array = new Uint8Array(new Uint32Array(widths).buffer);\n hash.update(uint8array);\n }\n }\n\n return {\n descriptor: descriptor,\n dict: dict,\n baseDict: baseDict,\n composite: composite,\n type: type.name,\n hash: hash ? hash.hexdigest() : \"\"\n };\n },\n translateFont: function PartialEvaluator_translateFont(preEvaluatedFont) {\n var _this14 = this;\n\n var baseDict = preEvaluatedFont.baseDict;\n var dict = preEvaluatedFont.dict;\n var composite = preEvaluatedFont.composite;\n var descriptor = preEvaluatedFont.descriptor;\n var type = preEvaluatedFont.type;\n var maxCharIndex = composite ? 0xffff : 0xff;\n var properties;\n var firstChar = dict.get(\"FirstChar\") || 0;\n var lastChar = dict.get(\"LastChar\") || maxCharIndex;\n\n if (!descriptor) {\n if (type === \"Type3\") {\n descriptor = new _primitives.Dict(null);\n descriptor.set(\"FontName\", _primitives.Name.get(type));\n descriptor.set(\"FontBBox\", dict.getArray(\"FontBBox\") || [0, 0, 0, 0]);\n } else {\n var baseFontName = dict.get(\"BaseFont\");\n\n if (!(0, _primitives.isName)(baseFontName)) {\n throw new _util.FormatError(\"Base font is not specified\");\n }\n\n baseFontName = baseFontName.name.replace(/[,_]/g, \"-\");\n var metrics = this.getBaseFontMetrics(baseFontName);\n var fontNameWoStyle = baseFontName.split(\"-\")[0];\n var flags = (this.isSerifFont(fontNameWoStyle) ? _fonts.FontFlags.Serif : 0) | (metrics.monospace ? _fonts.FontFlags.FixedPitch : 0) | ((0, _standard_fonts.getSymbolsFonts)()[fontNameWoStyle] ? _fonts.FontFlags.Symbolic : _fonts.FontFlags.Nonsymbolic);\n properties = {\n type: type,\n name: baseFontName,\n widths: metrics.widths,\n defaultWidth: metrics.defaultWidth,\n flags: flags,\n firstChar: firstChar,\n lastChar: lastChar\n };\n var widths = dict.get(\"Widths\");\n return this.extractDataStructures(dict, dict, properties).then(function (newProperties) {\n if (widths) {\n var glyphWidths = [];\n var j = firstChar;\n\n for (var i = 0, ii = widths.length; i < ii; i++) {\n glyphWidths[j++] = _this14.xref.fetchIfRef(widths[i]);\n }\n\n newProperties.widths = glyphWidths;\n } else {\n newProperties.widths = _this14.buildCharCodeToWidth(metrics.widths, newProperties);\n }\n\n return new _fonts.Font(baseFontName, null, newProperties);\n });\n }\n }\n\n var fontName = descriptor.get(\"FontName\");\n var baseFont = dict.get(\"BaseFont\");\n\n if ((0, _util.isString)(fontName)) {\n fontName = _primitives.Name.get(fontName);\n }\n\n if ((0, _util.isString)(baseFont)) {\n baseFont = _primitives.Name.get(baseFont);\n }\n\n if (type !== \"Type3\") {\n var fontNameStr = fontName && fontName.name;\n var baseFontStr = baseFont && baseFont.name;\n\n if (fontNameStr !== baseFontStr) {\n (0, _util.info)(\"The FontDescriptor's FontName is \\\"\".concat(fontNameStr, \"\\\" but \") + \"should be the same as the Font's BaseFont \\\"\".concat(baseFontStr, \"\\\".\"));\n\n if (fontNameStr && baseFontStr && baseFontStr.startsWith(fontNameStr)) {\n fontName = baseFont;\n }\n }\n }\n\n fontName = fontName || baseFont;\n\n if (!(0, _primitives.isName)(fontName)) {\n throw new _util.FormatError(\"invalid font name\");\n }\n\n var fontFile = descriptor.get(\"FontFile\", \"FontFile2\", \"FontFile3\");\n\n if (fontFile) {\n if (fontFile.dict) {\n var subtype = fontFile.dict.get(\"Subtype\");\n\n if (subtype) {\n subtype = subtype.name;\n }\n\n var length1 = fontFile.dict.get(\"Length1\");\n var length2 = fontFile.dict.get(\"Length2\");\n var length3 = fontFile.dict.get(\"Length3\");\n }\n }\n\n properties = {\n type: type,\n name: fontName.name,\n subtype: subtype,\n file: fontFile,\n length1: length1,\n length2: length2,\n length3: length3,\n loadedName: baseDict.loadedName,\n composite: composite,\n fixedPitch: false,\n fontMatrix: dict.getArray(\"FontMatrix\") || _util.FONT_IDENTITY_MATRIX,\n firstChar: firstChar || 0,\n lastChar: lastChar || maxCharIndex,\n bbox: descriptor.getArray(\"FontBBox\"),\n ascent: descriptor.get(\"Ascent\"),\n descent: descriptor.get(\"Descent\"),\n xHeight: descriptor.get(\"XHeight\"),\n capHeight: descriptor.get(\"CapHeight\"),\n flags: descriptor.get(\"Flags\"),\n italicAngle: descriptor.get(\"ItalicAngle\"),\n isType3Font: false\n };\n var cMapPromise;\n\n if (composite) {\n var cidEncoding = baseDict.get(\"Encoding\");\n\n if ((0, _primitives.isName)(cidEncoding)) {\n properties.cidEncoding = cidEncoding.name;\n }\n\n cMapPromise = _cmap.CMapFactory.create({\n encoding: cidEncoding,\n fetchBuiltInCMap: this.fetchBuiltInCMap,\n useCMap: null\n }).then(function (cMap) {\n properties.cMap = cMap;\n properties.vertical = properties.cMap.vertical;\n });\n } else {\n cMapPromise = Promise.resolve(undefined);\n }\n\n return cMapPromise.then(function () {\n return _this14.extractDataStructures(dict, baseDict, properties);\n }).then(function (newProperties) {\n _this14.extractWidths(dict, descriptor, newProperties);\n\n if (type === \"Type3\") {\n newProperties.isType3Font = true;\n }\n\n return new _fonts.Font(fontName.name, fontFile, newProperties);\n });\n }\n };\n\n PartialEvaluator.buildFontPaths = function (font, glyphs, handler) {\n function buildPath(fontChar) {\n if (font.renderer.hasBuiltPath(fontChar)) {\n return;\n }\n\n handler.send(\"commonobj\", [\"\".concat(font.loadedName, \"_path_\").concat(fontChar), \"FontPath\", font.renderer.getPathJs(fontChar)]);\n }\n\n var _iterator = _createForOfIteratorHelper(glyphs),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var glyph = _step.value;\n buildPath(glyph.fontChar);\n var accent = glyph.accent;\n\n if (accent && accent.fontChar) {\n buildPath(accent.fontChar);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n };\n\n PartialEvaluator.getFallbackFontDict = function () {\n if (this._fallbackFontDict) {\n return this._fallbackFontDict;\n }\n\n var dict = new _primitives.Dict();\n dict.set(\"BaseFont\", _primitives.Name.get(\"PDFJS-FallbackFont\"));\n dict.set(\"Type\", _primitives.Name.get(\"FallbackType\"));\n dict.set(\"Subtype\", _primitives.Name.get(\"FallbackType\"));\n dict.set(\"Encoding\", _primitives.Name.get(\"WinAnsiEncoding\"));\n return this._fallbackFontDict = dict;\n };\n\n return PartialEvaluator;\n}();\n\nexports.PartialEvaluator = PartialEvaluator;\n\nvar TranslatedFont = /*#__PURE__*/function () {\n function TranslatedFont(_ref8) {\n var loadedName = _ref8.loadedName,\n font = _ref8.font,\n dict = _ref8.dict,\n _ref8$extraProperties = _ref8.extraProperties,\n extraProperties = _ref8$extraProperties === void 0 ? false : _ref8$extraProperties;\n\n _classCallCheck(this, TranslatedFont);\n\n this.loadedName = loadedName;\n this.font = font;\n this.dict = dict;\n this._extraProperties = extraProperties;\n this.type3Loaded = null;\n this.sent = false;\n }\n\n _createClass(TranslatedFont, [{\n key: \"send\",\n value: function send(handler) {\n if (this.sent) {\n return;\n }\n\n this.sent = true;\n handler.send(\"commonobj\", [this.loadedName, \"Font\", this.font.exportData(this._extraProperties)]);\n }\n }, {\n key: \"fallback\",\n value: function fallback(handler) {\n if (!this.font.data) {\n return;\n }\n\n this.font.disableFontFace = true;\n var glyphs = this.font.glyphCacheValues;\n PartialEvaluator.buildFontPaths(this.font, glyphs, handler);\n }\n }, {\n key: \"loadType3Data\",\n value: function loadType3Data(evaluator, resources, parentOperatorList, task) {\n if (!this.font.isType3Font) {\n throw new Error(\"Must be a Type3 font.\");\n }\n\n if (this.type3Loaded) {\n return this.type3Loaded;\n }\n\n var type3Options = Object.create(evaluator.options);\n type3Options.ignoreErrors = false;\n var type3Evaluator = evaluator.clone(type3Options);\n type3Evaluator.parsingType3Font = true;\n var translatedFont = this.font;\n var loadCharProcsPromise = Promise.resolve();\n var charProcs = this.dict.get(\"CharProcs\");\n var fontResources = this.dict.get(\"Resources\") || resources;\n var charProcKeys = charProcs.getKeys();\n var charProcOperatorList = Object.create(null);\n\n var _loop2 = function _loop2() {\n var key = charProcKeys[i];\n loadCharProcsPromise = loadCharProcsPromise.then(function () {\n var glyphStream = charProcs.get(key);\n var operatorList = new _operator_list.OperatorList();\n return type3Evaluator.getOperatorList({\n stream: glyphStream,\n task: task,\n resources: fontResources,\n operatorList: operatorList\n }).then(function () {\n charProcOperatorList[key] = operatorList.getIR();\n parentOperatorList.addDependencies(operatorList.dependencies);\n })[\"catch\"](function (reason) {\n (0, _util.warn)(\"Type3 font resource \\\"\".concat(key, \"\\\" is not available.\"));\n var dummyOperatorList = new _operator_list.OperatorList();\n charProcOperatorList[key] = dummyOperatorList.getIR();\n });\n });\n };\n\n for (var i = 0, n = charProcKeys.length; i < n; ++i) {\n _loop2();\n }\n\n this.type3Loaded = loadCharProcsPromise.then(function () {\n translatedFont.charProcOperatorList = charProcOperatorList;\n });\n return this.type3Loaded;\n }\n }]);\n\n return TranslatedFont;\n}();\n\nvar StateManager = function StateManagerClosure() {\n function StateManager(initialState) {\n this.state = initialState;\n this.stateStack = [];\n }\n\n StateManager.prototype = {\n save: function save() {\n var old = this.state;\n this.stateStack.push(this.state);\n this.state = old.clone();\n },\n restore: function restore() {\n var prev = this.stateStack.pop();\n\n if (prev) {\n this.state = prev;\n }\n },\n transform: function transform(args) {\n this.state.ctm = _util.Util.transform(this.state.ctm, args);\n }\n };\n return StateManager;\n}();\n\nvar TextState = function TextStateClosure() {\n function TextState() {\n this.ctm = new Float32Array(_util.IDENTITY_MATRIX);\n this.fontName = null;\n this.fontSize = 0;\n this.font = null;\n this.fontMatrix = _util.FONT_IDENTITY_MATRIX;\n this.textMatrix = _util.IDENTITY_MATRIX.slice();\n this.textLineMatrix = _util.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 TextState.prototype = {\n setTextMatrix: function TextState_setTextMatrix(a, b, c, d, e, f) {\n var m = this.textMatrix;\n m[0] = a;\n m[1] = b;\n m[2] = c;\n m[3] = d;\n m[4] = e;\n m[5] = f;\n },\n setTextLineMatrix: function TextState_setTextMatrix(a, b, c, d, e, f) {\n var m = this.textLineMatrix;\n m[0] = a;\n m[1] = b;\n m[2] = c;\n m[3] = d;\n m[4] = e;\n m[5] = f;\n },\n translateTextMatrix: function TextState_translateTextMatrix(x, y) {\n var m = this.textMatrix;\n m[4] = m[0] * x + m[2] * y + m[4];\n m[5] = m[1] * x + m[3] * y + m[5];\n },\n translateTextLineMatrix: function TextState_translateTextMatrix(x, y) {\n var m = this.textLineMatrix;\n m[4] = m[0] * x + m[2] * y + m[4];\n m[5] = m[1] * x + m[3] * y + m[5];\n },\n calcTextLineMatrixAdvance: function TextState_calcTextLineMatrixAdvance(a, b, c, d, e, f) {\n var font = this.font;\n\n if (!font) {\n return null;\n }\n\n var m = this.textLineMatrix;\n\n if (!(a === m[0] && b === m[1] && c === m[2] && d === m[3])) {\n return null;\n }\n\n var txDiff = e - m[4],\n tyDiff = f - m[5];\n\n if (font.vertical && txDiff !== 0 || !font.vertical && tyDiff !== 0) {\n return null;\n }\n\n var tx,\n ty,\n denominator = a * d - b * c;\n\n if (font.vertical) {\n tx = -tyDiff * c / denominator;\n ty = tyDiff * a / denominator;\n } else {\n tx = txDiff * d / denominator;\n ty = -txDiff * b / denominator;\n }\n\n return {\n width: tx,\n height: ty,\n value: font.vertical ? ty : tx\n };\n },\n calcRenderMatrix: function TextState_calcRendeMatrix(ctm) {\n var tsm = [this.fontSize * this.textHScale, 0, 0, this.fontSize, 0, this.textRise];\n return _util.Util.transform(ctm, _util.Util.transform(this.textMatrix, tsm));\n },\n carriageReturn: function TextState_carriageReturn() {\n this.translateTextLineMatrix(0, -this.leading);\n this.textMatrix = this.textLineMatrix.slice();\n },\n clone: function TextState_clone() {\n var clone = Object.create(this);\n clone.textMatrix = this.textMatrix.slice();\n clone.textLineMatrix = this.textLineMatrix.slice();\n clone.fontMatrix = this.fontMatrix.slice();\n return clone;\n }\n };\n return TextState;\n}();\n\nvar EvalState = function EvalStateClosure() {\n function EvalState() {\n this.ctm = new Float32Array(_util.IDENTITY_MATRIX);\n this.font = null;\n this.textRenderingMode = _util.TextRenderingMode.FILL;\n this.fillColorSpace = _colorspace.ColorSpace.singletons.gray;\n this.strokeColorSpace = _colorspace.ColorSpace.singletons.gray;\n }\n\n EvalState.prototype = {\n clone: function CanvasExtraState_clone() {\n return Object.create(this);\n }\n };\n return EvalState;\n}();\n\nvar EvaluatorPreprocessor = function EvaluatorPreprocessorClosure() {\n var getOPMap = (0, _core_utils.getLookupTableFactory)(function (t) {\n t.w = {\n id: _util.OPS.setLineWidth,\n numArgs: 1,\n variableArgs: false\n };\n t.J = {\n id: _util.OPS.setLineCap,\n numArgs: 1,\n variableArgs: false\n };\n t.j = {\n id: _util.OPS.setLineJoin,\n numArgs: 1,\n variableArgs: false\n };\n t.M = {\n id: _util.OPS.setMiterLimit,\n numArgs: 1,\n variableArgs: false\n };\n t.d = {\n id: _util.OPS.setDash,\n numArgs: 2,\n variableArgs: false\n };\n t.ri = {\n id: _util.OPS.setRenderingIntent,\n numArgs: 1,\n variableArgs: false\n };\n t.i = {\n id: _util.OPS.setFlatness,\n numArgs: 1,\n variableArgs: false\n };\n t.gs = {\n id: _util.OPS.setGState,\n numArgs: 1,\n variableArgs: false\n };\n t.q = {\n id: _util.OPS.save,\n numArgs: 0,\n variableArgs: false\n };\n t.Q = {\n id: _util.OPS.restore,\n numArgs: 0,\n variableArgs: false\n };\n t.cm = {\n id: _util.OPS.transform,\n numArgs: 6,\n variableArgs: false\n };\n t.m = {\n id: _util.OPS.moveTo,\n numArgs: 2,\n variableArgs: false\n };\n t.l = {\n id: _util.OPS.lineTo,\n numArgs: 2,\n variableArgs: false\n };\n t.c = {\n id: _util.OPS.curveTo,\n numArgs: 6,\n variableArgs: false\n };\n t.v = {\n id: _util.OPS.curveTo2,\n numArgs: 4,\n variableArgs: false\n };\n t.y = {\n id: _util.OPS.curveTo3,\n numArgs: 4,\n variableArgs: false\n };\n t.h = {\n id: _util.OPS.closePath,\n numArgs: 0,\n variableArgs: false\n };\n t.re = {\n id: _util.OPS.rectangle,\n numArgs: 4,\n variableArgs: false\n };\n t.S = {\n id: _util.OPS.stroke,\n numArgs: 0,\n variableArgs: false\n };\n t.s = {\n id: _util.OPS.closeStroke,\n numArgs: 0,\n variableArgs: false\n };\n t.f = {\n id: _util.OPS.fill,\n numArgs: 0,\n variableArgs: false\n };\n t.F = {\n id: _util.OPS.fill,\n numArgs: 0,\n variableArgs: false\n };\n t[\"f*\"] = {\n id: _util.OPS.eoFill,\n numArgs: 0,\n variableArgs: false\n };\n t.B = {\n id: _util.OPS.fillStroke,\n numArgs: 0,\n variableArgs: false\n };\n t[\"B*\"] = {\n id: _util.OPS.eoFillStroke,\n numArgs: 0,\n variableArgs: false\n };\n t.b = {\n id: _util.OPS.closeFillStroke,\n numArgs: 0,\n variableArgs: false\n };\n t[\"b*\"] = {\n id: _util.OPS.closeEOFillStroke,\n numArgs: 0,\n variableArgs: false\n };\n t.n = {\n id: _util.OPS.endPath,\n numArgs: 0,\n variableArgs: false\n };\n t.W = {\n id: _util.OPS.clip,\n numArgs: 0,\n variableArgs: false\n };\n t[\"W*\"] = {\n id: _util.OPS.eoClip,\n numArgs: 0,\n variableArgs: false\n };\n t.BT = {\n id: _util.OPS.beginText,\n numArgs: 0,\n variableArgs: false\n };\n t.ET = {\n id: _util.OPS.endText,\n numArgs: 0,\n variableArgs: false\n };\n t.Tc = {\n id: _util.OPS.setCharSpacing,\n numArgs: 1,\n variableArgs: false\n };\n t.Tw = {\n id: _util.OPS.setWordSpacing,\n numArgs: 1,\n variableArgs: false\n };\n t.Tz = {\n id: _util.OPS.setHScale,\n numArgs: 1,\n variableArgs: false\n };\n t.TL = {\n id: _util.OPS.setLeading,\n numArgs: 1,\n variableArgs: false\n };\n t.Tf = {\n id: _util.OPS.setFont,\n numArgs: 2,\n variableArgs: false\n };\n t.Tr = {\n id: _util.OPS.setTextRenderingMode,\n numArgs: 1,\n variableArgs: false\n };\n t.Ts = {\n id: _util.OPS.setTextRise,\n numArgs: 1,\n variableArgs: false\n };\n t.Td = {\n id: _util.OPS.moveText,\n numArgs: 2,\n variableArgs: false\n };\n t.TD = {\n id: _util.OPS.setLeadingMoveText,\n numArgs: 2,\n variableArgs: false\n };\n t.Tm = {\n id: _util.OPS.setTextMatrix,\n numArgs: 6,\n variableArgs: false\n };\n t[\"T*\"] = {\n id: _util.OPS.nextLine,\n numArgs: 0,\n variableArgs: false\n };\n t.Tj = {\n id: _util.OPS.showText,\n numArgs: 1,\n variableArgs: false\n };\n t.TJ = {\n id: _util.OPS.showSpacedText,\n numArgs: 1,\n variableArgs: false\n };\n t[\"'\"] = {\n id: _util.OPS.nextLineShowText,\n numArgs: 1,\n variableArgs: false\n };\n t['\"'] = {\n id: _util.OPS.nextLineSetSpacingShowText,\n numArgs: 3,\n variableArgs: false\n };\n t.d0 = {\n id: _util.OPS.setCharWidth,\n numArgs: 2,\n variableArgs: false\n };\n t.d1 = {\n id: _util.OPS.setCharWidthAndBounds,\n numArgs: 6,\n variableArgs: false\n };\n t.CS = {\n id: _util.OPS.setStrokeColorSpace,\n numArgs: 1,\n variableArgs: false\n };\n t.cs = {\n id: _util.OPS.setFillColorSpace,\n numArgs: 1,\n variableArgs: false\n };\n t.SC = {\n id: _util.OPS.setStrokeColor,\n numArgs: 4,\n variableArgs: true\n };\n t.SCN = {\n id: _util.OPS.setStrokeColorN,\n numArgs: 33,\n variableArgs: true\n };\n t.sc = {\n id: _util.OPS.setFillColor,\n numArgs: 4,\n variableArgs: true\n };\n t.scn = {\n id: _util.OPS.setFillColorN,\n numArgs: 33,\n variableArgs: true\n };\n t.G = {\n id: _util.OPS.setStrokeGray,\n numArgs: 1,\n variableArgs: false\n };\n t.g = {\n id: _util.OPS.setFillGray,\n numArgs: 1,\n variableArgs: false\n };\n t.RG = {\n id: _util.OPS.setStrokeRGBColor,\n numArgs: 3,\n variableArgs: false\n };\n t.rg = {\n id: _util.OPS.setFillRGBColor,\n numArgs: 3,\n variableArgs: false\n };\n t.K = {\n id: _util.OPS.setStrokeCMYKColor,\n numArgs: 4,\n variableArgs: false\n };\n t.k = {\n id: _util.OPS.setFillCMYKColor,\n numArgs: 4,\n variableArgs: false\n };\n t.sh = {\n id: _util.OPS.shadingFill,\n numArgs: 1,\n variableArgs: false\n };\n t.BI = {\n id: _util.OPS.beginInlineImage,\n numArgs: 0,\n variableArgs: false\n };\n t.ID = {\n id: _util.OPS.beginImageData,\n numArgs: 0,\n variableArgs: false\n };\n t.EI = {\n id: _util.OPS.endInlineImage,\n numArgs: 1,\n variableArgs: false\n };\n t.Do = {\n id: _util.OPS.paintXObject,\n numArgs: 1,\n variableArgs: false\n };\n t.MP = {\n id: _util.OPS.markPoint,\n numArgs: 1,\n variableArgs: false\n };\n t.DP = {\n id: _util.OPS.markPointProps,\n numArgs: 2,\n variableArgs: false\n };\n t.BMC = {\n id: _util.OPS.beginMarkedContent,\n numArgs: 1,\n variableArgs: false\n };\n t.BDC = {\n id: _util.OPS.beginMarkedContentProps,\n numArgs: 2,\n variableArgs: false\n };\n t.EMC = {\n id: _util.OPS.endMarkedContent,\n numArgs: 0,\n variableArgs: false\n };\n t.BX = {\n id: _util.OPS.beginCompat,\n numArgs: 0,\n variableArgs: false\n };\n t.EX = {\n id: _util.OPS.endCompat,\n numArgs: 0,\n variableArgs: false\n };\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 var MAX_INVALID_PATH_OPS = 20;\n\n function EvaluatorPreprocessor(stream, xref, stateManager) {\n this.opMap = getOPMap();\n this.parser = new _parser.Parser({\n lexer: new _parser.Lexer(stream, this.opMap),\n xref: xref\n });\n this.stateManager = stateManager;\n this.nonProcessedArgs = [];\n this._numInvalidPathOPS = 0;\n }\n\n EvaluatorPreprocessor.prototype = {\n get savedStatesDepth() {\n return this.stateManager.stateStack.length;\n },\n\n read: function EvaluatorPreprocessor_read(operation) {\n var args = operation.args;\n\n while (true) {\n var obj = this.parser.getObj();\n\n if (obj instanceof _primitives.Cmd) {\n var cmd = obj.cmd;\n var opSpec = this.opMap[cmd];\n\n if (!opSpec) {\n (0, _util.warn)(\"Unknown command \\\"\".concat(cmd, \"\\\".\"));\n continue;\n }\n\n var fn = opSpec.id;\n var numArgs = opSpec.numArgs;\n var argsLength = args !== null ? args.length : 0;\n\n if (!opSpec.variableArgs) {\n if (argsLength !== numArgs) {\n var nonProcessedArgs = this.nonProcessedArgs;\n\n while (argsLength > numArgs) {\n nonProcessedArgs.push(args.shift());\n argsLength--;\n }\n\n while (argsLength < numArgs && nonProcessedArgs.length !== 0) {\n if (args === null) {\n args = [];\n }\n\n args.unshift(nonProcessedArgs.pop());\n argsLength++;\n }\n }\n\n if (argsLength < numArgs) {\n var partialMsg = \"command \".concat(cmd, \": expected \").concat(numArgs, \" args, \") + \"but received \".concat(argsLength, \" args.\");\n\n if (fn >= _util.OPS.moveTo && fn <= _util.OPS.endPath && ++this._numInvalidPathOPS > MAX_INVALID_PATH_OPS) {\n throw new _util.FormatError(\"Invalid \".concat(partialMsg));\n }\n\n (0, _util.warn)(\"Skipping \".concat(partialMsg));\n\n if (args !== null) {\n args.length = 0;\n }\n\n continue;\n }\n } else if (argsLength > numArgs) {\n (0, _util.info)(\"Command \".concat(cmd, \": expected [0, \").concat(numArgs, \"] args, \") + \"but received \".concat(argsLength, \" args.\"));\n }\n\n this.preprocessCommand(fn, args);\n operation.fn = fn;\n operation.args = args;\n return true;\n }\n\n if (obj === _primitives.EOF) {\n return false;\n }\n\n if (obj !== null) {\n if (args === null) {\n args = [];\n }\n\n args.push(obj);\n\n if (args.length > 33) {\n throw new _util.FormatError(\"Too many arguments\");\n }\n }\n }\n },\n preprocessCommand: function EvaluatorPreprocessor_preprocessCommand(fn, args) {\n switch (fn | 0) {\n case _util.OPS.save:\n this.stateManager.save();\n break;\n\n case _util.OPS.restore:\n this.stateManager.restore();\n break;\n\n case _util.OPS.transform:\n this.stateManager.transform(args);\n break;\n }\n }\n };\n return EvaluatorPreprocessor;\n}();\n\n/***/ }),\n/* 221 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CMapFactory = exports.IdentityCMap = exports.CMap = void 0;\n\nvar _regenerator = _interopRequireDefault(__w_pdfjs_require__(2));\n\nvar _util = __w_pdfjs_require__(5);\n\nvar _primitives = __w_pdfjs_require__(198);\n\nvar _parser = __w_pdfjs_require__(204);\n\nvar _core_utils = __w_pdfjs_require__(201);\n\nvar _stream = __w_pdfjs_require__(205);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar BUILT_IN_CMAPS = [\"Adobe-GB1-UCS2\", \"Adobe-CNS1-UCS2\", \"Adobe-Japan1-UCS2\", \"Adobe-Korea1-UCS2\", \"78-EUC-H\", \"78-EUC-V\", \"78-H\", \"78-RKSJ-H\", \"78-RKSJ-V\", \"78-V\", \"78ms-RKSJ-H\", \"78ms-RKSJ-V\", \"83pv-RKSJ-H\", \"90ms-RKSJ-H\", \"90ms-RKSJ-V\", \"90msp-RKSJ-H\", \"90msp-RKSJ-V\", \"90pv-RKSJ-H\", \"90pv-RKSJ-V\", \"Add-H\", \"Add-RKSJ-H\", \"Add-RKSJ-V\", \"Add-V\", \"Adobe-CNS1-0\", \"Adobe-CNS1-1\", \"Adobe-CNS1-2\", \"Adobe-CNS1-3\", \"Adobe-CNS1-4\", \"Adobe-CNS1-5\", \"Adobe-CNS1-6\", \"Adobe-GB1-0\", \"Adobe-GB1-1\", \"Adobe-GB1-2\", \"Adobe-GB1-3\", \"Adobe-GB1-4\", \"Adobe-GB1-5\", \"Adobe-Japan1-0\", \"Adobe-Japan1-1\", \"Adobe-Japan1-2\", \"Adobe-Japan1-3\", \"Adobe-Japan1-4\", \"Adobe-Japan1-5\", \"Adobe-Japan1-6\", \"Adobe-Korea1-0\", \"Adobe-Korea1-1\", \"Adobe-Korea1-2\", \"B5-H\", \"B5-V\", \"B5pc-H\", \"B5pc-V\", \"CNS-EUC-H\", \"CNS-EUC-V\", \"CNS1-H\", \"CNS1-V\", \"CNS2-H\", \"CNS2-V\", \"ETHK-B5-H\", \"ETHK-B5-V\", \"ETen-B5-H\", \"ETen-B5-V\", \"ETenms-B5-H\", \"ETenms-B5-V\", \"EUC-H\", \"EUC-V\", \"Ext-H\", \"Ext-RKSJ-H\", \"Ext-RKSJ-V\", \"Ext-V\", \"GB-EUC-H\", \"GB-EUC-V\", \"GB-H\", \"GB-V\", \"GBK-EUC-H\", \"GBK-EUC-V\", \"GBK2K-H\", \"GBK2K-V\", \"GBKp-EUC-H\", \"GBKp-EUC-V\", \"GBT-EUC-H\", \"GBT-EUC-V\", \"GBT-H\", \"GBT-V\", \"GBTpc-EUC-H\", \"GBTpc-EUC-V\", \"GBpc-EUC-H\", \"GBpc-EUC-V\", \"H\", \"HKdla-B5-H\", \"HKdla-B5-V\", \"HKdlb-B5-H\", \"HKdlb-B5-V\", \"HKgccs-B5-H\", \"HKgccs-B5-V\", \"HKm314-B5-H\", \"HKm314-B5-V\", \"HKm471-B5-H\", \"HKm471-B5-V\", \"HKscs-B5-H\", \"HKscs-B5-V\", \"Hankaku\", \"Hiragana\", \"KSC-EUC-H\", \"KSC-EUC-V\", \"KSC-H\", \"KSC-Johab-H\", \"KSC-Johab-V\", \"KSC-V\", \"KSCms-UHC-H\", \"KSCms-UHC-HW-H\", \"KSCms-UHC-HW-V\", \"KSCms-UHC-V\", \"KSCpc-EUC-H\", \"KSCpc-EUC-V\", \"Katakana\", \"NWP-H\", \"NWP-V\", \"RKSJ-H\", \"RKSJ-V\", \"Roman\", \"UniCNS-UCS2-H\", \"UniCNS-UCS2-V\", \"UniCNS-UTF16-H\", \"UniCNS-UTF16-V\", \"UniCNS-UTF32-H\", \"UniCNS-UTF32-V\", \"UniCNS-UTF8-H\", \"UniCNS-UTF8-V\", \"UniGB-UCS2-H\", \"UniGB-UCS2-V\", \"UniGB-UTF16-H\", \"UniGB-UTF16-V\", \"UniGB-UTF32-H\", \"UniGB-UTF32-V\", \"UniGB-UTF8-H\", \"UniGB-UTF8-V\", \"UniJIS-UCS2-H\", \"UniJIS-UCS2-HW-H\", \"UniJIS-UCS2-HW-V\", \"UniJIS-UCS2-V\", \"UniJIS-UTF16-H\", \"UniJIS-UTF16-V\", \"UniJIS-UTF32-H\", \"UniJIS-UTF32-V\", \"UniJIS-UTF8-H\", \"UniJIS-UTF8-V\", \"UniJIS2004-UTF16-H\", \"UniJIS2004-UTF16-V\", \"UniJIS2004-UTF32-H\", \"UniJIS2004-UTF32-V\", \"UniJIS2004-UTF8-H\", \"UniJIS2004-UTF8-V\", \"UniJISPro-UCS2-HW-V\", \"UniJISPro-UCS2-V\", \"UniJISPro-UTF8-V\", \"UniJISX0213-UTF32-H\", \"UniJISX0213-UTF32-V\", \"UniJISX02132004-UTF32-H\", \"UniJISX02132004-UTF32-V\", \"UniKS-UCS2-H\", \"UniKS-UCS2-V\", \"UniKS-UTF16-H\", \"UniKS-UTF16-V\", \"UniKS-UTF32-H\", \"UniKS-UTF32-V\", \"UniKS-UTF8-H\", \"UniKS-UTF8-V\", \"V\", \"WP-Symbol\"];\nvar MAX_MAP_RANGE = Math.pow(2, 24) - 1;\n\nvar CMap = /*#__PURE__*/function () {\n function CMap() {\n var builtInCMap = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n _classCallCheck(this, CMap);\n\n this.codespaceRanges = [[], [], [], []];\n this.numCodespaceRanges = 0;\n this._map = [];\n this.name = \"\";\n this.vertical = false;\n this.useCMap = null;\n this.builtInCMap = builtInCMap;\n }\n\n _createClass(CMap, [{\n key: \"addCodespaceRange\",\n value: function addCodespaceRange(n, low, high) {\n this.codespaceRanges[n - 1].push(low, high);\n this.numCodespaceRanges++;\n }\n }, {\n key: \"mapCidRange\",\n value: function mapCidRange(low, high, dstLow) {\n if (high - low > MAX_MAP_RANGE) {\n throw new Error(\"mapCidRange - ignoring data above MAX_MAP_RANGE.\");\n }\n\n while (low <= high) {\n this._map[low++] = dstLow++;\n }\n }\n }, {\n key: \"mapBfRange\",\n value: function mapBfRange(low, high, dstLow) {\n if (high - low > MAX_MAP_RANGE) {\n throw new Error(\"mapBfRange - ignoring data above MAX_MAP_RANGE.\");\n }\n\n var lastByte = dstLow.length - 1;\n\n while (low <= high) {\n this._map[low++] = dstLow;\n dstLow = dstLow.substring(0, lastByte) + String.fromCharCode(dstLow.charCodeAt(lastByte) + 1);\n }\n }\n }, {\n key: \"mapBfRangeToArray\",\n value: function mapBfRangeToArray(low, high, array) {\n if (high - low > MAX_MAP_RANGE) {\n throw new Error(\"mapBfRangeToArray - ignoring data above MAX_MAP_RANGE.\");\n }\n\n var ii = array.length;\n var i = 0;\n\n while (low <= high && i < ii) {\n this._map[low] = array[i++];\n ++low;\n }\n }\n }, {\n key: \"mapOne\",\n value: function mapOne(src, dst) {\n this._map[src] = dst;\n }\n }, {\n key: \"lookup\",\n value: function lookup(code) {\n return this._map[code];\n }\n }, {\n key: \"contains\",\n value: function contains(code) {\n return this._map[code] !== undefined;\n }\n }, {\n key: \"forEach\",\n value: function forEach(callback) {\n var map = this._map;\n var length = map.length;\n\n if (length <= 0x10000) {\n for (var i = 0; i < length; i++) {\n if (map[i] !== undefined) {\n callback(i, map[i]);\n }\n }\n } else {\n for (var _i in map) {\n callback(_i, map[_i]);\n }\n }\n }\n }, {\n key: \"charCodeOf\",\n value: function charCodeOf(value) {\n var map = this._map;\n\n if (map.length <= 0x10000) {\n return map.indexOf(value);\n }\n\n for (var charCode in map) {\n if (map[charCode] === value) {\n return charCode | 0;\n }\n }\n\n return -1;\n }\n }, {\n key: \"getMap\",\n value: function getMap() {\n return this._map;\n }\n }, {\n key: \"readCharCode\",\n value: function readCharCode(str, offset, out) {\n var c = 0;\n var codespaceRanges = this.codespaceRanges;\n\n for (var n = 0, nn = codespaceRanges.length; n < nn; n++) {\n c = (c << 8 | str.charCodeAt(offset + n)) >>> 0;\n var codespaceRange = codespaceRanges[n];\n\n for (var k = 0, kk = codespaceRange.length; k < kk;) {\n var low = codespaceRange[k++];\n var high = codespaceRange[k++];\n\n if (c >= low && c <= high) {\n out.charcode = c;\n out.length = n + 1;\n return;\n }\n }\n }\n\n out.charcode = 0;\n out.length = 1;\n }\n }, {\n key: \"length\",\n get: function get() {\n return this._map.length;\n }\n }, {\n key: \"isIdentityCMap\",\n get: function get() {\n if (!(this.name === \"Identity-H\" || this.name === \"Identity-V\")) {\n return false;\n }\n\n if (this._map.length !== 0x10000) {\n return false;\n }\n\n for (var i = 0; i < 0x10000; i++) {\n if (this._map[i] !== i) {\n return false;\n }\n }\n\n return true;\n }\n }]);\n\n return CMap;\n}();\n\nexports.CMap = CMap;\n\nvar IdentityCMap = /*#__PURE__*/function (_CMap) {\n _inherits(IdentityCMap, _CMap);\n\n var _super = _createSuper(IdentityCMap);\n\n function IdentityCMap(vertical, n) {\n var _this;\n\n _classCallCheck(this, IdentityCMap);\n\n _this = _super.call(this);\n _this.vertical = vertical;\n\n _this.addCodespaceRange(n, 0, 0xffff);\n\n return _this;\n }\n\n _createClass(IdentityCMap, [{\n key: \"mapCidRange\",\n value: function mapCidRange(low, high, dstLow) {\n (0, _util.unreachable)(\"should not call mapCidRange\");\n }\n }, {\n key: \"mapBfRange\",\n value: function mapBfRange(low, high, dstLow) {\n (0, _util.unreachable)(\"should not call mapBfRange\");\n }\n }, {\n key: \"mapBfRangeToArray\",\n value: function mapBfRangeToArray(low, high, array) {\n (0, _util.unreachable)(\"should not call mapBfRangeToArray\");\n }\n }, {\n key: \"mapOne\",\n value: function mapOne(src, dst) {\n (0, _util.unreachable)(\"should not call mapCidOne\");\n }\n }, {\n key: \"lookup\",\n value: function lookup(code) {\n return Number.isInteger(code) && code <= 0xffff ? code : undefined;\n }\n }, {\n key: \"contains\",\n value: function contains(code) {\n return Number.isInteger(code) && code <= 0xffff;\n }\n }, {\n key: \"forEach\",\n value: function forEach(callback) {\n for (var i = 0; i <= 0xffff; i++) {\n callback(i, i);\n }\n }\n }, {\n key: \"charCodeOf\",\n value: function charCodeOf(value) {\n return Number.isInteger(value) && value <= 0xffff ? value : -1;\n }\n }, {\n key: \"getMap\",\n value: function getMap() {\n var map = new Array(0x10000);\n\n for (var i = 0; i <= 0xffff; i++) {\n map[i] = i;\n }\n\n return map;\n }\n }, {\n key: \"length\",\n get: function get() {\n return 0x10000;\n }\n }, {\n key: \"isIdentityCMap\",\n get: function get() {\n (0, _util.unreachable)(\"should not access .isIdentityCMap\");\n }\n }]);\n\n return IdentityCMap;\n}(CMap);\n\nexports.IdentityCMap = IdentityCMap;\n\nvar BinaryCMapReader = function BinaryCMapReaderClosure() {\n function hexToInt(a, size) {\n var n = 0;\n\n for (var i = 0; i <= size; i++) {\n n = n << 8 | a[i];\n }\n\n return n >>> 0;\n }\n\n function hexToStr(a, size) {\n if (size === 1) {\n return String.fromCharCode(a[0], a[1]);\n }\n\n if (size === 3) {\n return String.fromCharCode(a[0], a[1], a[2], a[3]);\n }\n\n return String.fromCharCode.apply(null, a.subarray(0, size + 1));\n }\n\n function addHex(a, b, size) {\n var c = 0;\n\n for (var i = size; i >= 0; i--) {\n c += a[i] + b[i];\n a[i] = c & 255;\n c >>= 8;\n }\n }\n\n function incHex(a, size) {\n var c = 1;\n\n for (var i = size; i >= 0 && c > 0; i--) {\n c += a[i];\n a[i] = c & 255;\n c >>= 8;\n }\n }\n\n var MAX_NUM_SIZE = 16;\n var MAX_ENCODED_NUM_SIZE = 19;\n\n function BinaryCMapStream(data) {\n this.buffer = data;\n this.pos = 0;\n this.end = data.length;\n this.tmpBuf = new Uint8Array(MAX_ENCODED_NUM_SIZE);\n }\n\n BinaryCMapStream.prototype = {\n readByte: function readByte() {\n if (this.pos >= this.end) {\n return -1;\n }\n\n return this.buffer[this.pos++];\n },\n readNumber: function readNumber() {\n var n = 0;\n var last;\n\n do {\n var b = this.readByte();\n\n if (b < 0) {\n throw new _util.FormatError(\"unexpected EOF in bcmap\");\n }\n\n last = !(b & 0x80);\n n = n << 7 | b & 0x7f;\n } while (!last);\n\n return n;\n },\n readSigned: function readSigned() {\n var n = this.readNumber();\n return n & 1 ? ~(n >>> 1) : n >>> 1;\n },\n readHex: function readHex(num, size) {\n num.set(this.buffer.subarray(this.pos, this.pos + size + 1));\n this.pos += size + 1;\n },\n readHexNumber: function readHexNumber(num, size) {\n var last;\n var stack = this.tmpBuf,\n sp = 0;\n\n do {\n var b = this.readByte();\n\n if (b < 0) {\n throw new _util.FormatError(\"unexpected EOF in bcmap\");\n }\n\n last = !(b & 0x80);\n stack[sp++] = b & 0x7f;\n } while (!last);\n\n var i = size,\n buffer = 0,\n bufferSize = 0;\n\n while (i >= 0) {\n while (bufferSize < 8 && stack.length > 0) {\n buffer = stack[--sp] << bufferSize | buffer;\n bufferSize += 7;\n }\n\n num[i] = buffer & 255;\n i--;\n buffer >>= 8;\n bufferSize -= 8;\n }\n },\n readHexSigned: function readHexSigned(num, size) {\n this.readHexNumber(num, size);\n var sign = num[size] & 1 ? 255 : 0;\n var c = 0;\n\n for (var i = 0; i <= size; i++) {\n c = (c & 1) << 8 | num[i];\n num[i] = c >> 1 ^ sign;\n }\n },\n readString: function readString() {\n var len = this.readNumber();\n var s = \"\";\n\n for (var i = 0; i < len; i++) {\n s += String.fromCharCode(this.readNumber());\n }\n\n return s;\n }\n };\n\n function processBinaryCMap(data, cMap, extend) {\n return new Promise(function (resolve, reject) {\n var stream = new BinaryCMapStream(data);\n var header = stream.readByte();\n cMap.vertical = !!(header & 1);\n var useCMap = null;\n var start = new Uint8Array(MAX_NUM_SIZE);\n var end = new Uint8Array(MAX_NUM_SIZE);\n\n var _char = new Uint8Array(MAX_NUM_SIZE);\n\n var charCode = new Uint8Array(MAX_NUM_SIZE);\n var tmp = new Uint8Array(MAX_NUM_SIZE);\n var code;\n var b;\n\n while ((b = stream.readByte()) >= 0) {\n var type = b >> 5;\n\n if (type === 7) {\n switch (b & 0x1f) {\n case 0:\n stream.readString();\n break;\n\n case 1:\n useCMap = stream.readString();\n break;\n }\n\n continue;\n }\n\n var sequence = !!(b & 0x10);\n var dataSize = b & 15;\n\n if (dataSize + 1 > MAX_NUM_SIZE) {\n throw new Error(\"processBinaryCMap: Invalid dataSize.\");\n }\n\n var ucs2DataSize = 1;\n var subitemsCount = stream.readNumber();\n var i;\n\n switch (type) {\n case 0:\n stream.readHex(start, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), hexToInt(end, dataSize));\n\n for (i = 1; i < subitemsCount; i++) {\n incHex(end, dataSize);\n stream.readHexNumber(start, dataSize);\n addHex(start, end, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), hexToInt(end, dataSize));\n }\n\n break;\n\n case 1:\n stream.readHex(start, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n stream.readNumber();\n\n for (i = 1; i < subitemsCount; i++) {\n incHex(end, dataSize);\n stream.readHexNumber(start, dataSize);\n addHex(start, end, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n stream.readNumber();\n }\n\n break;\n\n case 2:\n stream.readHex(_char, dataSize);\n code = stream.readNumber();\n cMap.mapOne(hexToInt(_char, dataSize), code);\n\n for (i = 1; i < subitemsCount; i++) {\n incHex(_char, dataSize);\n\n if (!sequence) {\n stream.readHexNumber(tmp, dataSize);\n addHex(_char, tmp, dataSize);\n }\n\n code = stream.readSigned() + (code + 1);\n cMap.mapOne(hexToInt(_char, dataSize), code);\n }\n\n break;\n\n case 3:\n stream.readHex(start, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n code = stream.readNumber();\n cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), code);\n\n for (i = 1; i < subitemsCount; i++) {\n incHex(end, dataSize);\n\n if (!sequence) {\n stream.readHexNumber(start, dataSize);\n addHex(start, end, dataSize);\n } else {\n start.set(end);\n }\n\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n code = stream.readNumber();\n cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), code);\n }\n\n break;\n\n case 4:\n stream.readHex(_char, ucs2DataSize);\n stream.readHex(charCode, dataSize);\n cMap.mapOne(hexToInt(_char, ucs2DataSize), hexToStr(charCode, dataSize));\n\n for (i = 1; i < subitemsCount; i++) {\n incHex(_char, ucs2DataSize);\n\n if (!sequence) {\n stream.readHexNumber(tmp, ucs2DataSize);\n addHex(_char, tmp, ucs2DataSize);\n }\n\n incHex(charCode, dataSize);\n stream.readHexSigned(tmp, dataSize);\n addHex(charCode, tmp, dataSize);\n cMap.mapOne(hexToInt(_char, ucs2DataSize), hexToStr(charCode, dataSize));\n }\n\n break;\n\n case 5:\n stream.readHex(start, ucs2DataSize);\n stream.readHexNumber(end, ucs2DataSize);\n addHex(end, start, ucs2DataSize);\n stream.readHex(charCode, dataSize);\n cMap.mapBfRange(hexToInt(start, ucs2DataSize), hexToInt(end, ucs2DataSize), hexToStr(charCode, dataSize));\n\n for (i = 1; i < subitemsCount; i++) {\n incHex(end, ucs2DataSize);\n\n if (!sequence) {\n stream.readHexNumber(start, ucs2DataSize);\n addHex(start, end, ucs2DataSize);\n } else {\n start.set(end);\n }\n\n stream.readHexNumber(end, ucs2DataSize);\n addHex(end, start, ucs2DataSize);\n stream.readHex(charCode, dataSize);\n cMap.mapBfRange(hexToInt(start, ucs2DataSize), hexToInt(end, ucs2DataSize), hexToStr(charCode, dataSize));\n }\n\n break;\n\n default:\n reject(new Error(\"processBinaryCMap: Unknown type: \" + type));\n return;\n }\n }\n\n if (useCMap) {\n resolve(extend(useCMap));\n return;\n }\n\n resolve(cMap);\n });\n }\n\n function BinaryCMapReader() {}\n\n BinaryCMapReader.prototype = {\n process: processBinaryCMap\n };\n return BinaryCMapReader;\n}();\n\nvar CMapFactory = function CMapFactoryClosure() {\n function strToInt(str) {\n var a = 0;\n\n for (var i = 0; i < str.length; i++) {\n a = a << 8 | str.charCodeAt(i);\n }\n\n return a >>> 0;\n }\n\n function expectString(obj) {\n if (!(0, _util.isString)(obj)) {\n throw new _util.FormatError(\"Malformed CMap: expected string.\");\n }\n }\n\n function expectInt(obj) {\n if (!Number.isInteger(obj)) {\n throw new _util.FormatError(\"Malformed CMap: expected int.\");\n }\n }\n\n function parseBfChar(cMap, lexer) {\n while (true) {\n var obj = lexer.getObj();\n\n if ((0, _primitives.isEOF)(obj)) {\n break;\n }\n\n if ((0, _primitives.isCmd)(obj, \"endbfchar\")) {\n return;\n }\n\n expectString(obj);\n var src = strToInt(obj);\n obj = lexer.getObj();\n expectString(obj);\n var dst = obj;\n cMap.mapOne(src, dst);\n }\n }\n\n function parseBfRange(cMap, lexer) {\n while (true) {\n var obj = lexer.getObj();\n\n if ((0, _primitives.isEOF)(obj)) {\n break;\n }\n\n if ((0, _primitives.isCmd)(obj, \"endbfrange\")) {\n return;\n }\n\n expectString(obj);\n var low = strToInt(obj);\n obj = lexer.getObj();\n expectString(obj);\n var high = strToInt(obj);\n obj = lexer.getObj();\n\n if (Number.isInteger(obj) || (0, _util.isString)(obj)) {\n var dstLow = Number.isInteger(obj) ? String.fromCharCode(obj) : obj;\n cMap.mapBfRange(low, high, dstLow);\n } else if ((0, _primitives.isCmd)(obj, \"[\")) {\n obj = lexer.getObj();\n var array = [];\n\n while (!(0, _primitives.isCmd)(obj, \"]\") && !(0, _primitives.isEOF)(obj)) {\n array.push(obj);\n obj = lexer.getObj();\n }\n\n cMap.mapBfRangeToArray(low, high, array);\n } else {\n break;\n }\n }\n\n throw new _util.FormatError(\"Invalid bf range.\");\n }\n\n function parseCidChar(cMap, lexer) {\n while (true) {\n var obj = lexer.getObj();\n\n if ((0, _primitives.isEOF)(obj)) {\n break;\n }\n\n if ((0, _primitives.isCmd)(obj, \"endcidchar\")) {\n return;\n }\n\n expectString(obj);\n var src = strToInt(obj);\n obj = lexer.getObj();\n expectInt(obj);\n var dst = obj;\n cMap.mapOne(src, dst);\n }\n }\n\n function parseCidRange(cMap, lexer) {\n while (true) {\n var obj = lexer.getObj();\n\n if ((0, _primitives.isEOF)(obj)) {\n break;\n }\n\n if ((0, _primitives.isCmd)(obj, \"endcidrange\")) {\n return;\n }\n\n expectString(obj);\n var low = strToInt(obj);\n obj = lexer.getObj();\n expectString(obj);\n var high = strToInt(obj);\n obj = lexer.getObj();\n expectInt(obj);\n var dstLow = obj;\n cMap.mapCidRange(low, high, dstLow);\n }\n }\n\n function parseCodespaceRange(cMap, lexer) {\n while (true) {\n var obj = lexer.getObj();\n\n if ((0, _primitives.isEOF)(obj)) {\n break;\n }\n\n if ((0, _primitives.isCmd)(obj, \"endcodespacerange\")) {\n return;\n }\n\n if (!(0, _util.isString)(obj)) {\n break;\n }\n\n var low = strToInt(obj);\n obj = lexer.getObj();\n\n if (!(0, _util.isString)(obj)) {\n break;\n }\n\n var high = strToInt(obj);\n cMap.addCodespaceRange(obj.length, low, high);\n }\n\n throw new _util.FormatError(\"Invalid codespace range.\");\n }\n\n function parseWMode(cMap, lexer) {\n var obj = lexer.getObj();\n\n if (Number.isInteger(obj)) {\n cMap.vertical = !!obj;\n }\n }\n\n function parseCMapName(cMap, lexer) {\n var obj = lexer.getObj();\n\n if ((0, _primitives.isName)(obj) && (0, _util.isString)(obj.name)) {\n cMap.name = obj.name;\n }\n }\n\n function parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap) {\n var previous;\n var embeddedUseCMap;\n\n objLoop: while (true) {\n try {\n var obj = lexer.getObj();\n\n if ((0, _primitives.isEOF)(obj)) {\n break;\n } else if ((0, _primitives.isName)(obj)) {\n if (obj.name === \"WMode\") {\n parseWMode(cMap, lexer);\n } else if (obj.name === \"CMapName\") {\n parseCMapName(cMap, lexer);\n }\n\n previous = obj;\n } else if ((0, _primitives.isCmd)(obj)) {\n switch (obj.cmd) {\n case \"endcmap\":\n break objLoop;\n\n case \"usecmap\":\n if ((0, _primitives.isName)(previous)) {\n embeddedUseCMap = previous.name;\n }\n\n break;\n\n case \"begincodespacerange\":\n parseCodespaceRange(cMap, lexer);\n break;\n\n case \"beginbfchar\":\n parseBfChar(cMap, lexer);\n break;\n\n case \"begincidchar\":\n parseCidChar(cMap, lexer);\n break;\n\n case \"beginbfrange\":\n parseBfRange(cMap, lexer);\n break;\n\n case \"begincidrange\":\n parseCidRange(cMap, lexer);\n break;\n }\n }\n } catch (ex) {\n if (ex instanceof _core_utils.MissingDataException) {\n throw ex;\n }\n\n (0, _util.warn)(\"Invalid cMap data: \" + ex);\n continue;\n }\n }\n\n if (!useCMap && embeddedUseCMap) {\n useCMap = embeddedUseCMap;\n }\n\n if (useCMap) {\n return extendCMap(cMap, fetchBuiltInCMap, useCMap);\n }\n\n return Promise.resolve(cMap);\n }\n\n function extendCMap(cMap, fetchBuiltInCMap, useCMap) {\n return createBuiltInCMap(useCMap, fetchBuiltInCMap).then(function (newCMap) {\n cMap.useCMap = newCMap;\n\n if (cMap.numCodespaceRanges === 0) {\n var useCodespaceRanges = cMap.useCMap.codespaceRanges;\n\n for (var i = 0; i < useCodespaceRanges.length; i++) {\n cMap.codespaceRanges[i] = useCodespaceRanges[i].slice();\n }\n\n cMap.numCodespaceRanges = cMap.useCMap.numCodespaceRanges;\n }\n\n cMap.useCMap.forEach(function (key, value) {\n if (!cMap.contains(key)) {\n cMap.mapOne(key, cMap.useCMap.lookup(key));\n }\n });\n return cMap;\n });\n }\n\n function createBuiltInCMap(name, fetchBuiltInCMap) {\n if (name === \"Identity-H\") {\n return Promise.resolve(new IdentityCMap(false, 2));\n } else if (name === \"Identity-V\") {\n return Promise.resolve(new IdentityCMap(true, 2));\n }\n\n if (!BUILT_IN_CMAPS.includes(name)) {\n return Promise.reject(new Error(\"Unknown CMap name: \" + name));\n }\n\n if (!fetchBuiltInCMap) {\n return Promise.reject(new Error(\"Built-in CMap parameters are not provided.\"));\n }\n\n return fetchBuiltInCMap(name).then(function (data) {\n var cMapData = data.cMapData,\n compressionType = data.compressionType;\n var cMap = new CMap(true);\n\n if (compressionType === _util.CMapCompressionType.BINARY) {\n return new BinaryCMapReader().process(cMapData, cMap, function (useCMap) {\n return extendCMap(cMap, fetchBuiltInCMap, useCMap);\n });\n }\n\n if (compressionType === _util.CMapCompressionType.NONE) {\n var lexer = new _parser.Lexer(new _stream.Stream(cMapData));\n return parseCMap(cMap, lexer, fetchBuiltInCMap, null);\n }\n\n return Promise.reject(new Error(\"TODO: Only BINARY/NONE CMap compression is currently supported.\"));\n });\n }\n\n return {\n create: function create(params) {\n return _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee() {\n var encoding, fetchBuiltInCMap, useCMap, cMap, lexer;\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n encoding = params.encoding;\n fetchBuiltInCMap = params.fetchBuiltInCMap;\n useCMap = params.useCMap;\n\n if (!(0, _primitives.isName)(encoding)) {\n _context.next = 7;\n break;\n }\n\n return _context.abrupt(\"return\", createBuiltInCMap(encoding.name, fetchBuiltInCMap));\n\n case 7:\n if (!(0, _primitives.isStream)(encoding)) {\n _context.next = 11;\n break;\n }\n\n cMap = new CMap();\n lexer = new _parser.Lexer(encoding);\n return _context.abrupt(\"return\", parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap).then(function (parsedCMap) {\n if (parsedCMap.isIdentityCMap) {\n return createBuiltInCMap(parsedCMap.name, fetchBuiltInCMap);\n }\n\n return parsedCMap;\n }));\n\n case 11:\n throw new Error(\"Encoding required.\");\n\n case 12:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }))();\n }\n };\n}();\n\nexports.CMapFactory = CMapFactory;\n\n/***/ }),\n/* 222 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getFontType = getFontType;\nexports.IdentityToUnicodeMap = exports.ToUnicodeMap = exports.FontFlags = exports.Font = exports.ErrorFont = exports.SEAC_ANALYSIS_ENABLED = void 0;\n\nvar _util = __w_pdfjs_require__(5);\n\nvar _cff_parser = __w_pdfjs_require__(223);\n\nvar _glyphlist = __w_pdfjs_require__(226);\n\nvar _encodings = __w_pdfjs_require__(225);\n\nvar _standard_fonts = __w_pdfjs_require__(227);\n\nvar _unicode = __w_pdfjs_require__(228);\n\nvar _core_utils = __w_pdfjs_require__(201);\n\nvar _font_renderer = __w_pdfjs_require__(229);\n\nvar _cmap = __w_pdfjs_require__(221);\n\nvar _stream = __w_pdfjs_require__(205);\n\nvar _type1_parser = __w_pdfjs_require__(230);\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nvar PRIVATE_USE_AREAS = [[0xe000, 0xf8ff], [0x100000, 0x10fffd]];\nvar PDF_GLYPH_SPACE_UNITS = 1000;\nvar SEAC_ANALYSIS_ENABLED = true;\nexports.SEAC_ANALYSIS_ENABLED = SEAC_ANALYSIS_ENABLED;\nvar EXPORT_DATA_PROPERTIES = [\"ascent\", \"bbox\", \"black\", \"bold\", \"charProcOperatorList\", \"composite\", \"data\", \"defaultVMetrics\", \"defaultWidth\", \"descent\", \"fallbackName\", \"fontMatrix\", \"fontType\", \"isMonospace\", \"isSerifFont\", \"isType3Font\", \"italic\", \"loadedName\", \"mimetype\", \"missingFile\", \"name\", \"remeasure\", \"subtype\", \"type\", \"vertical\"];\nvar EXPORT_DATA_EXTRA_PROPERTIES = [\"cMap\", \"defaultEncoding\", \"differences\", \"isSymbolicFont\", \"seacMap\", \"toFontChar\", \"toUnicode\", \"vmetrics\", \"widths\"];\nvar FontFlags = {\n FixedPitch: 1,\n Serif: 2,\n Symbolic: 4,\n Script: 8,\n Nonsymbolic: 32,\n Italic: 64,\n AllCap: 65536,\n SmallCap: 131072,\n ForceBold: 262144\n};\nexports.FontFlags = FontFlags;\nvar MacStandardGlyphOrdering = [\".notdef\", \".null\", \"nonmarkingreturn\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quotesingle\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"Adieresis\", \"Aring\", \"Ccedilla\", \"Eacute\", \"Ntilde\", \"Odieresis\", \"Udieresis\", \"aacute\", \"agrave\", \"acircumflex\", \"adieresis\", \"atilde\", \"aring\", \"ccedilla\", \"eacute\", \"egrave\", \"ecircumflex\", \"edieresis\", \"iacute\", \"igrave\", \"icircumflex\", \"idieresis\", \"ntilde\", \"oacute\", \"ograve\", \"ocircumflex\", \"odieresis\", \"otilde\", \"uacute\", \"ugrave\", \"ucircumflex\", \"udieresis\", \"dagger\", \"degree\", \"cent\", \"sterling\", \"section\", \"bullet\", \"paragraph\", \"germandbls\", \"registered\", \"copyright\", \"trademark\", \"acute\", \"dieresis\", \"notequal\", \"AE\", \"Oslash\", \"infinity\", \"plusminus\", \"lessequal\", \"greaterequal\", \"yen\", \"mu\", \"partialdiff\", \"summation\", \"product\", \"pi\", \"integral\", \"ordfeminine\", \"ordmasculine\", \"Omega\", \"ae\", \"oslash\", \"questiondown\", \"exclamdown\", \"logicalnot\", \"radical\", \"florin\", \"approxequal\", \"Delta\", \"guillemotleft\", \"guillemotright\", \"ellipsis\", \"nonbreakingspace\", \"Agrave\", \"Atilde\", \"Otilde\", \"OE\", \"oe\", \"endash\", \"emdash\", \"quotedblleft\", \"quotedblright\", \"quoteleft\", \"quoteright\", \"divide\", \"lozenge\", \"ydieresis\", \"Ydieresis\", \"fraction\", \"currency\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"daggerdbl\", \"periodcentered\", \"quotesinglbase\", \"quotedblbase\", \"perthousand\", \"Acircumflex\", \"Ecircumflex\", \"Aacute\", \"Edieresis\", \"Egrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Oacute\", \"Ocircumflex\", \"apple\", \"Ograve\", \"Uacute\", \"Ucircumflex\", \"Ugrave\", \"dotlessi\", \"circumflex\", \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\", \"Lslash\", \"lslash\", \"Scaron\", \"scaron\", \"Zcaron\", \"zcaron\", \"brokenbar\", \"Eth\", \"eth\", \"Yacute\", \"yacute\", \"Thorn\", \"thorn\", \"minus\", \"multiply\", \"onesuperior\", \"twosuperior\", \"threesuperior\", \"onehalf\", \"onequarter\", \"threequarters\", \"franc\", \"Gbreve\", \"gbreve\", \"Idotaccent\", \"Scedilla\", \"scedilla\", \"Cacute\", \"cacute\", \"Ccaron\", \"ccaron\", \"dcroat\"];\n\nfunction adjustWidths(properties) {\n if (!properties.fontMatrix) {\n return;\n }\n\n if (properties.fontMatrix[0] === _util.FONT_IDENTITY_MATRIX[0]) {\n return;\n }\n\n var scale = 0.001 / properties.fontMatrix[0];\n var glyphsWidths = properties.widths;\n\n for (var glyph in glyphsWidths) {\n glyphsWidths[glyph] *= scale;\n }\n\n properties.defaultWidth *= scale;\n}\n\nfunction adjustToUnicode(properties, builtInEncoding) {\n if (properties.hasIncludedToUnicodeMap) {\n return;\n }\n\n if (properties.hasEncoding) {\n return;\n }\n\n if (builtInEncoding === properties.defaultEncoding) {\n return;\n }\n\n if (properties.toUnicode instanceof IdentityToUnicodeMap) {\n return;\n }\n\n var toUnicode = [],\n glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();\n\n for (var charCode in builtInEncoding) {\n var glyphName = builtInEncoding[charCode];\n var unicode = (0, _unicode.getUnicodeForGlyph)(glyphName, glyphsUnicodeMap);\n\n if (unicode !== -1) {\n toUnicode[charCode] = String.fromCharCode(unicode);\n }\n }\n\n properties.toUnicode.amend(toUnicode);\n}\n\nfunction getFontType(type, subtype) {\n switch (type) {\n case \"Type1\":\n return subtype === \"Type1C\" ? _util.FontType.TYPE1C : _util.FontType.TYPE1;\n\n case \"CIDFontType0\":\n return subtype === \"CIDFontType0C\" ? _util.FontType.CIDFONTTYPE0C : _util.FontType.CIDFONTTYPE0;\n\n case \"OpenType\":\n return _util.FontType.OPENTYPE;\n\n case \"TrueType\":\n return _util.FontType.TRUETYPE;\n\n case \"CIDFontType2\":\n return _util.FontType.CIDFONTTYPE2;\n\n case \"MMType1\":\n return _util.FontType.MMTYPE1;\n\n case \"Type0\":\n return _util.FontType.TYPE0;\n\n default:\n return _util.FontType.UNKNOWN;\n }\n}\n\nfunction recoverGlyphName(name, glyphsUnicodeMap) {\n if (glyphsUnicodeMap[name] !== undefined) {\n return name;\n }\n\n var unicode = (0, _unicode.getUnicodeForGlyph)(name, glyphsUnicodeMap);\n\n if (unicode !== -1) {\n for (var key in glyphsUnicodeMap) {\n if (glyphsUnicodeMap[key] === unicode) {\n return key;\n }\n }\n }\n\n (0, _util.info)(\"Unable to recover a standard glyph name for: \" + name);\n return name;\n}\n\nvar Glyph = function GlyphClosure() {\n function Glyph(fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont) {\n this.fontChar = fontChar;\n this.unicode = unicode;\n this.accent = accent;\n this.width = width;\n this.vmetric = vmetric;\n this.operatorListId = operatorListId;\n this.isSpace = isSpace;\n this.isInFont = isInFont;\n }\n\n Glyph.prototype.matchesForCache = function (fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont) {\n return this.fontChar === fontChar && this.unicode === unicode && this.accent === accent && this.width === width && this.vmetric === vmetric && this.operatorListId === operatorListId && this.isSpace === isSpace && this.isInFont === isInFont;\n };\n\n return Glyph;\n}();\n\nvar ToUnicodeMap = function ToUnicodeMapClosure() {\n function ToUnicodeMap() {\n var cmap = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n this._map = cmap;\n }\n\n ToUnicodeMap.prototype = {\n get length() {\n return this._map.length;\n },\n\n forEach: function forEach(callback) {\n for (var charCode in this._map) {\n callback(charCode, this._map[charCode].charCodeAt(0));\n }\n },\n has: function has(i) {\n return this._map[i] !== undefined;\n },\n get: function get(i) {\n return this._map[i];\n },\n charCodeOf: function charCodeOf(value) {\n var map = this._map;\n\n if (map.length <= 0x10000) {\n return map.indexOf(value);\n }\n\n for (var charCode in map) {\n if (map[charCode] === value) {\n return charCode | 0;\n }\n }\n\n return -1;\n },\n amend: function amend(map) {\n for (var charCode in map) {\n this._map[charCode] = map[charCode];\n }\n }\n };\n return ToUnicodeMap;\n}();\n\nexports.ToUnicodeMap = ToUnicodeMap;\n\nvar IdentityToUnicodeMap = function IdentityToUnicodeMapClosure() {\n function IdentityToUnicodeMap(firstChar, lastChar) {\n this.firstChar = firstChar;\n this.lastChar = lastChar;\n }\n\n IdentityToUnicodeMap.prototype = {\n get length() {\n return this.lastChar + 1 - this.firstChar;\n },\n\n forEach: function forEach(callback) {\n for (var i = this.firstChar, ii = this.lastChar; i <= ii; i++) {\n callback(i, i);\n }\n },\n has: function has(i) {\n return this.firstChar <= i && i <= this.lastChar;\n },\n get: function get(i) {\n if (this.firstChar <= i && i <= this.lastChar) {\n return String.fromCharCode(i);\n }\n\n return undefined;\n },\n charCodeOf: function charCodeOf(v) {\n return Number.isInteger(v) && v >= this.firstChar && v <= this.lastChar ? v : -1;\n },\n amend: function amend(map) {\n (0, _util.unreachable)(\"Should not call amend()\");\n }\n };\n return IdentityToUnicodeMap;\n}();\n\nexports.IdentityToUnicodeMap = IdentityToUnicodeMap;\n\nvar OpenTypeFileBuilder = function OpenTypeFileBuilderClosure() {\n function writeInt16(dest, offset, num) {\n dest[offset] = num >> 8 & 0xff;\n dest[offset + 1] = num & 0xff;\n }\n\n function writeInt32(dest, offset, num) {\n dest[offset] = num >> 24 & 0xff;\n dest[offset + 1] = num >> 16 & 0xff;\n dest[offset + 2] = num >> 8 & 0xff;\n dest[offset + 3] = num & 0xff;\n }\n\n function writeData(dest, offset, data) {\n var i, ii;\n\n if (data instanceof Uint8Array) {\n dest.set(data, offset);\n } else if (typeof data === \"string\") {\n for (i = 0, ii = data.length; i < ii; i++) {\n dest[offset++] = data.charCodeAt(i) & 0xff;\n }\n } else {\n for (i = 0, ii = data.length; i < ii; i++) {\n dest[offset++] = data[i] & 0xff;\n }\n }\n }\n\n function OpenTypeFileBuilder(sfnt) {\n this.sfnt = sfnt;\n this.tables = Object.create(null);\n }\n\n OpenTypeFileBuilder.getSearchParams = function OpenTypeFileBuilder_getSearchParams(entriesCount, entrySize) {\n var maxPower2 = 1,\n log2 = 0;\n\n while ((maxPower2 ^ entriesCount) > maxPower2) {\n maxPower2 <<= 1;\n log2++;\n }\n\n var searchRange = maxPower2 * entrySize;\n return {\n range: searchRange,\n entry: log2,\n rangeShift: entrySize * entriesCount - searchRange\n };\n };\n\n var OTF_HEADER_SIZE = 12;\n var OTF_TABLE_ENTRY_SIZE = 16;\n OpenTypeFileBuilder.prototype = {\n toArray: function OpenTypeFileBuilder_toArray() {\n var sfnt = this.sfnt;\n var tables = this.tables;\n var tablesNames = Object.keys(tables);\n tablesNames.sort();\n var numTables = tablesNames.length;\n var i, j, jj, table, tableName;\n var offset = OTF_HEADER_SIZE + numTables * OTF_TABLE_ENTRY_SIZE;\n var tableOffsets = [offset];\n\n for (i = 0; i < numTables; i++) {\n table = tables[tablesNames[i]];\n var paddedLength = (table.length + 3 & ~3) >>> 0;\n offset += paddedLength;\n tableOffsets.push(offset);\n }\n\n var file = new Uint8Array(offset);\n\n for (i = 0; i < numTables; i++) {\n table = tables[tablesNames[i]];\n writeData(file, tableOffsets[i], table);\n }\n\n if (sfnt === \"true\") {\n sfnt = (0, _util.string32)(0x00010000);\n }\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 writeInt16(file, 4, numTables);\n var searchParams = OpenTypeFileBuilder.getSearchParams(numTables, 16);\n writeInt16(file, 6, searchParams.range);\n writeInt16(file, 8, searchParams.entry);\n writeInt16(file, 10, searchParams.rangeShift);\n offset = OTF_HEADER_SIZE;\n\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 var checksum = 0;\n\n for (j = tableOffsets[i], jj = tableOffsets[i + 1]; j < jj; j += 4) {\n var quad = (0, _core_utils.readUint32)(file, j);\n checksum = checksum + quad >>> 0;\n }\n\n writeInt32(file, offset + 4, checksum);\n writeInt32(file, offset + 8, tableOffsets[i]);\n writeInt32(file, offset + 12, tables[tableName].length);\n offset += OTF_TABLE_ENTRY_SIZE;\n }\n\n return file;\n },\n addTable: function OpenTypeFileBuilder_addTable(tag, data) {\n if (tag in this.tables) {\n throw new Error(\"Table \" + tag + \" already exists\");\n }\n\n this.tables[tag] = data;\n }\n };\n return OpenTypeFileBuilder;\n}();\n\nvar Font = function FontClosure() {\n function Font(name, file, properties) {\n var charCode;\n this.name = name;\n this.loadedName = properties.loadedName;\n this.isType3Font = properties.isType3Font;\n this.missingFile = false;\n this.glyphCache = Object.create(null);\n this.isSerifFont = !!(properties.flags & FontFlags.Serif);\n this.isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n this.isMonospace = !!(properties.flags & FontFlags.FixedPitch);\n var type = properties.type;\n var subtype = properties.subtype;\n this.type = type;\n this.subtype = subtype;\n var fallbackName = \"sans-serif\";\n\n if (this.isMonospace) {\n fallbackName = \"monospace\";\n } else if (this.isSerifFont) {\n fallbackName = \"serif\";\n }\n\n this.fallbackName = fallbackName;\n this.differences = properties.differences;\n this.widths = properties.widths;\n this.defaultWidth = properties.defaultWidth;\n this.composite = properties.composite;\n this.cMap = properties.cMap;\n this.ascent = properties.ascent / PDF_GLYPH_SPACE_UNITS;\n this.descent = properties.descent / PDF_GLYPH_SPACE_UNITS;\n this.fontMatrix = properties.fontMatrix;\n this.bbox = properties.bbox;\n this.defaultEncoding = properties.defaultEncoding;\n this.toUnicode = properties.toUnicode;\n this.fallbackToUnicode = properties.fallbackToUnicode || new ToUnicodeMap();\n this.toFontChar = [];\n\n if (properties.type === \"Type3\") {\n for (charCode = 0; charCode < 256; charCode++) {\n this.toFontChar[charCode] = this.differences[charCode] || properties.defaultEncoding[charCode];\n }\n\n this.fontType = _util.FontType.TYPE3;\n return;\n }\n\n this.cidEncoding = properties.cidEncoding;\n this.vertical = !!properties.vertical;\n\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 (0, _util.warn)('Font file is empty in \"' + name + '\" (' + this.loadedName + \")\");\n }\n\n this.fallbackToSystemFont();\n return;\n }\n\n var _getFontFileType = getFontFileType(file, properties);\n\n var _getFontFileType2 = _slicedToArray(_getFontFileType, 2);\n\n type = _getFontFileType2[0];\n subtype = _getFontFileType2[1];\n\n if (type !== this.type || subtype !== this.subtype) {\n (0, _util.info)(\"Inconsistent font file Type/SubType, expected: \" + \"\".concat(this.type, \"/\").concat(this.subtype, \" but found: \").concat(type, \"/\").concat(subtype, \".\"));\n }\n\n try {\n var data;\n\n switch (type) {\n case \"MMType1\":\n (0, _util.info)(\"MMType1 font (\" + name + \"), falling back to Type1.\");\n\n case \"Type1\":\n case \"CIDFontType0\":\n this.mimetype = \"font/opentype\";\n var cff = subtype === \"Type1C\" || subtype === \"CIDFontType0C\" ? new CFFFont(file, properties) : new Type1Font(name, file, properties);\n adjustWidths(properties);\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 data = this.checkAndRepair(name, file, properties);\n\n if (this.isOpenType) {\n adjustWidths(properties);\n type = \"OpenType\";\n }\n\n break;\n\n default:\n throw new _util.FormatError(\"Font \".concat(type, \" is not supported\"));\n }\n } catch (e) {\n (0, _util.warn)(e);\n this.fallbackToSystemFont();\n return;\n }\n\n this.data = data;\n this.fontType = getFontType(type, subtype);\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 Font.getFontID = function () {\n var ID = 1;\n return function Font_getFontID() {\n return String(ID++);\n };\n }();\n\n function int16(b0, b1) {\n return (b0 << 8) + b1;\n }\n\n function writeSignedInt16(bytes, index, value) {\n bytes[index + 1] = value;\n bytes[index] = value >>> 8;\n }\n\n function signedInt16(b0, b1) {\n var value = (b0 << 8) + b1;\n return value & 1 << 15 ? value - 0x10000 : value;\n }\n\n function int32(b0, b1, b2, b3) {\n return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n }\n\n function string16(value) {\n return String.fromCharCode(value >> 8 & 0xff, value & 0xff);\n }\n\n function safeString16(value) {\n if (value > 0x7fff) {\n value = 0x7fff;\n } else if (value < -0x8000) {\n value = -0x8000;\n }\n\n return String.fromCharCode(value >> 8 & 0xff, value & 0xff);\n }\n\n function isTrueTypeFile(file) {\n var header = file.peekBytes(4);\n return (0, _core_utils.readUint32)(header, 0) === 0x00010000 || (0, _util.bytesToString)(header) === \"true\";\n }\n\n function isTrueTypeCollectionFile(file) {\n var header = file.peekBytes(4);\n return (0, _util.bytesToString)(header) === \"ttcf\";\n }\n\n function isOpenTypeFile(file) {\n var header = file.peekBytes(4);\n return (0, _util.bytesToString)(header) === \"OTTO\";\n }\n\n function isType1File(file) {\n var header = file.peekBytes(2);\n\n if (header[0] === 0x25 && header[1] === 0x21) {\n return true;\n }\n\n if (header[0] === 0x80 && header[1] === 0x01) {\n return true;\n }\n\n return false;\n }\n\n function isCFFFile(file) {\n var header = file.peekBytes(4);\n\n if (header[0] >= 1 && header[3] >= 1 && header[3] <= 4) {\n return true;\n }\n\n return false;\n }\n\n function getFontFileType(file, _ref) {\n var type = _ref.type,\n subtype = _ref.subtype,\n composite = _ref.composite;\n var 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 (0, _util.warn)(\"getFontFileType: Unable to detect correct font file Type/Subtype.\");\n fileType = type;\n fileSubtype = subtype;\n }\n\n return [fileType, fileSubtype];\n }\n\n function buildToFontChar(encoding, glyphsUnicodeMap, differences) {\n var toFontChar = [],\n unicode;\n\n for (var i = 0, ii = encoding.length; i < ii; i++) {\n unicode = (0, _unicode.getUnicodeForGlyph)(encoding[i], glyphsUnicodeMap);\n\n if (unicode !== -1) {\n toFontChar[i] = unicode;\n }\n }\n\n for (var charCode in differences) {\n unicode = (0, _unicode.getUnicodeForGlyph)(differences[charCode], glyphsUnicodeMap);\n\n if (unicode !== -1) {\n toFontChar[+charCode] = unicode;\n }\n }\n\n return toFontChar;\n }\n\n function adjustMapping(charCodeToGlyphId, hasGlyph, newGlyphZeroId) {\n var newMap = Object.create(null);\n var toFontChar = [];\n var privateUseAreaIndex = 0;\n var nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\n var privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n\n for (var originalCharCode in charCodeToGlyphId) {\n originalCharCode |= 0;\n var glyphId = charCodeToGlyphId[originalCharCode];\n\n if (!hasGlyph(glyphId)) {\n continue;\n }\n\n if (nextAvailableFontCharCode > privateUseOffetEnd) {\n privateUseAreaIndex++;\n\n if (privateUseAreaIndex >= PRIVATE_USE_AREAS.length) {\n (0, _util.warn)(\"Ran out of space in font private use area.\");\n break;\n }\n\n nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\n privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n }\n\n var fontCharCode = nextAvailableFontCharCode++;\n\n if (glyphId === 0) {\n glyphId = newGlyphZeroId;\n }\n\n newMap[fontCharCode] = glyphId;\n toFontChar[originalCharCode] = fontCharCode;\n }\n\n return {\n toFontChar: toFontChar,\n charCodeToGlyphId: newMap,\n nextAvailableFontCharCode: nextAvailableFontCharCode\n };\n }\n\n function getRanges(glyphs, numGlyphs) {\n var codes = [];\n\n for (var charCode in glyphs) {\n if (glyphs[charCode] >= numGlyphs) {\n continue;\n }\n\n codes.push({\n fontCharCode: charCode | 0,\n glyphId: glyphs[charCode]\n });\n }\n\n if (codes.length === 0) {\n codes.push({\n fontCharCode: 0,\n glyphId: 0\n });\n }\n\n codes.sort(function fontGetRangesSort(a, b) {\n return a.fontCharCode - b.fontCharCode;\n });\n var ranges = [];\n var length = codes.length;\n\n for (var n = 0; n < length;) {\n var start = codes[n].fontCharCode;\n var codeIndices = [codes[n].glyphId];\n ++n;\n var end = start;\n\n while (n < length && end + 1 === codes[n].fontCharCode) {\n codeIndices.push(codes[n].glyphId);\n ++end;\n ++n;\n\n if (end === 0xffff) {\n break;\n }\n }\n\n ranges.push([start, end, codeIndices]);\n }\n\n return ranges;\n }\n\n function createCmapTable(glyphs, numGlyphs) {\n var ranges = getRanges(glyphs, numGlyphs);\n var numTables = ranges[ranges.length - 1][1] > 0xffff ? 2 : 1;\n var cmap = \"\\x00\\x00\" + string16(numTables) + \"\\x00\\x03\" + \"\\x00\\x01\" + (0, _util.string32)(4 + numTables * 8);\n var i, ii, j, jj;\n\n for (i = ranges.length - 1; i >= 0; --i) {\n if (ranges[i][0] <= 0xffff) {\n break;\n }\n }\n\n var bmpLength = i + 1;\n\n if (ranges[i][0] < 0xffff && ranges[i][1] === 0xffff) {\n ranges[i][1] = 0xfffe;\n }\n\n var trailingRangesCount = ranges[i][1] < 0xffff ? 1 : 0;\n var segCount = bmpLength + trailingRangesCount;\n var searchParams = OpenTypeFileBuilder.getSearchParams(segCount, 2);\n var startCount = \"\";\n var endCount = \"\";\n var idDeltas = \"\";\n var idRangeOffsets = \"\";\n var glyphsIds = \"\";\n var bias = 0;\n var range, start, end, codes;\n\n for (i = 0, ii = bmpLength; i < ii; i++) {\n range = ranges[i];\n start = range[0];\n end = range[1];\n startCount += string16(start);\n endCount += string16(end);\n codes = range[2];\n var contiguous = true;\n\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\n if (!contiguous) {\n var offset = (segCount - i) * 2 + bias * 2;\n bias += end - start + 1;\n idDeltas += string16(0);\n idRangeOffsets += string16(offset);\n\n for (j = 0, jj = codes.length; j < jj; ++j) {\n glyphsIds += string16(codes[j]);\n }\n } else {\n var startCode = codes[0];\n idDeltas += string16(startCode - start & 0xffff);\n idRangeOffsets += string16(0);\n }\n }\n\n if (trailingRangesCount > 0) {\n endCount += \"\\xFF\\xFF\";\n startCount += \"\\xFF\\xFF\";\n idDeltas += \"\\x00\\x01\";\n idRangeOffsets += \"\\x00\\x00\";\n }\n\n var format314 = \"\\x00\\x00\" + string16(2 * segCount) + string16(searchParams.range) + string16(searchParams.entry) + string16(searchParams.rangeShift) + endCount + \"\\x00\\x00\" + startCount + idDeltas + idRangeOffsets + glyphsIds;\n var format31012 = \"\";\n var header31012 = \"\";\n\n if (numTables > 1) {\n cmap += \"\\x00\\x03\" + \"\\x00\\x0A\" + (0, _util.string32)(4 + numTables * 8 + 4 + format314.length);\n format31012 = \"\";\n\n for (i = 0, ii = ranges.length; i < ii; i++) {\n range = ranges[i];\n start = range[0];\n codes = range[2];\n var code = codes[0];\n\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 += (0, _util.string32)(start) + (0, _util.string32)(end) + (0, _util.string32)(code);\n start = end + 1;\n code = codes[j];\n }\n }\n\n format31012 += (0, _util.string32)(start) + (0, _util.string32)(range[1]) + (0, _util.string32)(code);\n }\n\n header31012 = \"\\x00\\x0C\" + \"\\x00\\x00\" + (0, _util.string32)(format31012.length + 16) + \"\\x00\\x00\\x00\\x00\" + (0, _util.string32)(format31012.length / 12);\n }\n\n return cmap + \"\\x00\\x04\" + string16(format314.length + 4) + format314 + header31012 + format31012;\n }\n\n function validateOS2Table(os2, file) {\n file.pos = (file.start || 0) + os2.offset;\n var version = file.getUint16();\n file.skip(60);\n var selection = file.getUint16();\n\n if (version < 4 && selection & 0x0300) {\n return false;\n }\n\n var firstChar = file.getUint16();\n var lastChar = file.getUint16();\n\n if (firstChar > lastChar) {\n return false;\n }\n\n file.skip(6);\n var usWinAscent = file.getUint16();\n\n if (usWinAscent === 0) {\n return false;\n }\n\n os2.data[8] = os2.data[9] = 0;\n return true;\n }\n\n function createOS2Table(properties, charstrings, override) {\n override = override || {\n unitsPerEm: 0,\n yMax: 0,\n yMin: 0,\n ascent: 0,\n descent: 0\n };\n var ulUnicodeRange1 = 0;\n var ulUnicodeRange2 = 0;\n var ulUnicodeRange3 = 0;\n var ulUnicodeRange4 = 0;\n var firstCharIndex = null;\n var lastCharIndex = 0;\n\n if (charstrings) {\n for (var code in charstrings) {\n code |= 0;\n\n if (firstCharIndex > code || !firstCharIndex) {\n firstCharIndex = code;\n }\n\n if (lastCharIndex < code) {\n lastCharIndex = code;\n }\n\n var position = (0, _unicode.getUnicodeRangeFor)(code);\n\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 _util.FormatError(\"Unicode ranges Bits > 123 are reserved for internal usage\");\n }\n }\n\n if (lastCharIndex > 0xffff) {\n lastCharIndex = 0xffff;\n }\n } else {\n firstCharIndex = 0;\n lastCharIndex = 255;\n }\n\n var bbox = properties.bbox || [0, 0, 0, 0];\n var unitsPerEm = override.unitsPerEm || 1 / (properties.fontMatrix || _util.FONT_IDENTITY_MATRIX)[0];\n var scale = properties.ascentScaled ? 1.0 : unitsPerEm / PDF_GLYPH_SPACE_UNITS;\n var typoAscent = override.ascent || Math.round(scale * (properties.ascent || bbox[3]));\n var typoDescent = override.descent || Math.round(scale * (properties.descent || bbox[1]));\n\n if (typoDescent > 0 && properties.descent > 0 && bbox[1] < 0) {\n typoDescent = -typoDescent;\n }\n\n var winAscent = override.yMax || typoAscent;\n var winDescent = -override.yMin || -typoDescent;\n return \"\\x00\\x03\" + \"\\x02\\x24\" + \"\\x01\\xF4\" + \"\\x00\\x05\" + \"\\x00\\x00\" + \"\\x02\\x8A\" + \"\\x02\\xBB\" + \"\\x00\\x00\" + \"\\x00\\x8C\" + \"\\x02\\x8A\" + \"\\x02\\xBB\" + \"\\x00\\x00\" + \"\\x01\\xDF\" + \"\\x00\\x31\" + \"\\x01\\x02\" + \"\\x00\\x00\" + \"\\x00\\x00\\x06\" + String.fromCharCode(properties.fixedPitch ? 0x09 : 0x00) + \"\\x00\\x00\\x00\\x00\\x00\\x00\" + (0, _util.string32)(ulUnicodeRange1) + (0, _util.string32)(ulUnicodeRange2) + (0, _util.string32)(ulUnicodeRange3) + (0, _util.string32)(ulUnicodeRange4) + \"\\x2A\\x32\\x31\\x2A\" + string16(properties.italicAngle ? 1 : 0) + string16(firstCharIndex || properties.firstChar) + string16(lastCharIndex || properties.lastChar) + string16(typoAscent) + string16(typoDescent) + \"\\x00\\x64\" + string16(winAscent) + string16(winDescent) + \"\\x00\\x00\\x00\\x00\" + \"\\x00\\x00\\x00\\x00\" + string16(properties.xHeight) + string16(properties.capHeight) + string16(0) + string16(firstCharIndex || properties.firstChar) + \"\\x00\\x03\";\n }\n\n function createPostTable(properties) {\n var angle = Math.floor(properties.italicAngle * Math.pow(2, 16));\n return \"\\x00\\x03\\x00\\x00\" + (0, _util.string32)(angle) + \"\\x00\\x00\" + \"\\x00\\x00\" + (0, _util.string32)(properties.fixedPitch) + \"\\x00\\x00\\x00\\x00\" + \"\\x00\\x00\\x00\\x00\" + \"\\x00\\x00\\x00\\x00\" + \"\\x00\\x00\\x00\\x00\";\n }\n\n function createNameTable(name, proto) {\n if (!proto) {\n proto = [[], []];\n }\n\n var strings = [proto[0][0] || \"Original licence\", proto[0][1] || name, proto[0][2] || \"Unknown\", proto[0][3] || \"uniqueID\", proto[0][4] || name, proto[0][5] || \"Version 0.11\", proto[0][6] || \"\", proto[0][7] || \"Unknown\", proto[0][8] || \"Unknown\", proto[0][9] || \"Unknown\"];\n var stringsUnicode = [];\n var i, ii, j, jj, str;\n\n for (i = 0, ii = strings.length; i < ii; i++) {\n str = proto[1][i] || strings[i];\n var strBufUnicode = [];\n\n for (j = 0, jj = str.length; j < jj; j++) {\n strBufUnicode.push(string16(str.charCodeAt(j)));\n }\n\n stringsUnicode.push(strBufUnicode.join(\"\"));\n }\n\n var names = [strings, stringsUnicode];\n var platforms = [\"\\x00\\x01\", \"\\x00\\x03\"];\n var encodings = [\"\\x00\\x00\", \"\\x00\\x01\"];\n var languages = [\"\\x00\\x00\", \"\\x04\\x09\"];\n var namesRecordCount = strings.length * platforms.length;\n var nameTable = \"\\x00\\x00\" + string16(namesRecordCount) + string16(namesRecordCount * 12 + 6);\n var strOffset = 0;\n\n for (i = 0, ii = platforms.length; i < ii; i++) {\n var strs = names[i];\n\n for (j = 0, jj = strs.length; j < jj; j++) {\n str = strs[j];\n var nameRecord = platforms[i] + encodings[i] + languages[i] + string16(j) + string16(str.length) + string16(strOffset);\n nameTable += nameRecord;\n strOffset += str.length;\n }\n }\n\n nameTable += strings.join(\"\") + stringsUnicode.join(\"\");\n return nameTable;\n }\n\n Font.prototype = {\n name: null,\n font: null,\n mimetype: null,\n disableFontFace: false,\n\n get renderer() {\n var renderer = _font_renderer.FontRendererFactory.create(this, SEAC_ANALYSIS_ENABLED);\n\n return (0, _util.shadow)(this, \"renderer\", renderer);\n },\n\n exportData: function exportData() {\n var extraProperties = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var exportDataProperties = extraProperties ? [].concat(EXPORT_DATA_PROPERTIES, EXPORT_DATA_EXTRA_PROPERTIES) : EXPORT_DATA_PROPERTIES;\n var data = Object.create(null);\n var property, value;\n\n var _iterator = _createForOfIteratorHelper(exportDataProperties),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n property = _step.value;\n value = this[property];\n\n if (value !== undefined) {\n data[property] = value;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return data;\n },\n fallbackToSystemFont: function Font_fallbackToSystemFont() {\n var _this = this;\n\n this.missingFile = true;\n var name = this.name;\n var type = this.type;\n var subtype = this.subtype;\n var fontName = name.replace(/[,_]/g, \"-\").replace(/\\s/g, \"\");\n var stdFontMap = (0, _standard_fonts.getStdFontMap)(),\n nonStdFontMap = (0, _standard_fonts.getNonStdFontMap)();\n var isStandardFont = !!stdFontMap[fontName] || !!(nonStdFontMap[fontName] && stdFontMap[nonStdFontMap[fontName]]);\n fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName;\n this.bold = fontName.search(/bold/gi) !== -1;\n this.italic = fontName.search(/oblique/gi) !== -1 || fontName.search(/italic/gi) !== -1;\n this.black = name.search(/Black/g) !== -1;\n this.remeasure = Object.keys(this.widths).length > 0;\n\n if (isStandardFont && type === \"CIDFontType2\" && this.cidEncoding.startsWith(\"Identity-\")) {\n var GlyphMapForStandardFonts = (0, _standard_fonts.getGlyphMapForStandardFonts)();\n var map = [];\n\n for (var charCode in GlyphMapForStandardFonts) {\n map[+charCode] = GlyphMapForStandardFonts[charCode];\n }\n\n if (/Arial-?Black/i.test(name)) {\n var SupplementalGlyphMapForArialBlack = (0, _standard_fonts.getSupplementalGlyphMapForArialBlack)();\n\n for (var _charCode in SupplementalGlyphMapForArialBlack) {\n map[+_charCode] = SupplementalGlyphMapForArialBlack[_charCode];\n }\n } else if (/Calibri/i.test(name)) {\n var SupplementalGlyphMapForCalibri = (0, _standard_fonts.getSupplementalGlyphMapForCalibri)();\n\n for (var _charCode2 in SupplementalGlyphMapForCalibri) {\n map[+_charCode2] = SupplementalGlyphMapForCalibri[_charCode2];\n }\n }\n\n var isIdentityUnicode = this.toUnicode instanceof IdentityToUnicodeMap;\n\n if (!isIdentityUnicode) {\n this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n map[+charCode] = unicodeCharCode;\n });\n }\n\n this.toFontChar = map;\n this.toUnicode = new ToUnicodeMap(map);\n } else if (/Symbol/i.test(fontName)) {\n this.toFontChar = buildToFontChar(_encodings.SymbolSetEncoding, (0, _glyphlist.getGlyphsUnicode)(), this.differences);\n } else if (/Dingbats/i.test(fontName)) {\n if (/Wingdings/i.test(name)) {\n (0, _util.warn)(\"Non-embedded Wingdings font, falling back to ZapfDingbats.\");\n }\n\n this.toFontChar = buildToFontChar(_encodings.ZapfDingbatsEncoding, (0, _glyphlist.getDingbatsGlyphsUnicode)(), this.differences);\n } else if (isStandardFont) {\n this.toFontChar = buildToFontChar(this.defaultEncoding, (0, _glyphlist.getGlyphsUnicode)(), this.differences);\n } else {\n var glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();\n var _map = [];\n this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n if (!_this.composite) {\n var glyphName = _this.differences[charCode] || _this.defaultEncoding[charCode];\n var unicode = (0, _unicode.getUnicodeForGlyph)(glyphName, glyphsUnicodeMap);\n\n if (unicode !== -1) {\n unicodeCharCode = unicode;\n }\n }\n\n _map[+charCode] = unicodeCharCode;\n });\n\n if (this.composite && this.toUnicode instanceof IdentityToUnicodeMap) {\n if (/Verdana/i.test(name)) {\n var _GlyphMapForStandardFonts = (0, _standard_fonts.getGlyphMapForStandardFonts)();\n\n for (var _charCode3 in _GlyphMapForStandardFonts) {\n _map[+_charCode3] = _GlyphMapForStandardFonts[_charCode3];\n }\n }\n }\n\n this.toFontChar = _map;\n }\n\n this.loadedName = fontName.split(\"-\")[0];\n this.fontType = getFontType(type, subtype);\n },\n checkAndRepair: function Font_checkAndRepair(name, font, properties) {\n var VALID_TABLES = [\"OS/2\", \"cmap\", \"head\", \"hhea\", \"hmtx\", \"maxp\", \"name\", \"post\", \"loca\", \"glyf\", \"fpgm\", \"prep\", \"cvt \", \"CFF \"];\n\n function readTables(file, numTables) {\n var 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 (var i = 0; i < numTables; i++) {\n var table = readTableEntry(file);\n\n if (!VALID_TABLES.includes(table.tag)) {\n continue;\n }\n\n if (table.length === 0) {\n continue;\n }\n\n tables[table.tag] = table;\n }\n\n return tables;\n }\n\n function readTableEntry(file) {\n var tag = (0, _util.bytesToString)(file.getBytes(4));\n var checksum = file.getInt32() >>> 0;\n var offset = file.getInt32() >>> 0;\n var length = file.getInt32() >>> 0;\n var previousPosition = file.pos;\n file.pos = file.start ? file.start : 0;\n file.skip(offset);\n var data = file.getBytes(length);\n file.pos = previousPosition;\n\n if (tag === \"head\") {\n data[8] = data[9] = data[10] = data[11] = 0;\n data[17] |= 0x20;\n }\n\n return {\n tag: tag,\n checksum: checksum,\n length: length,\n offset: offset,\n data: data\n };\n }\n\n function readOpenTypeHeader(ttf) {\n return {\n version: (0, _util.bytesToString)(ttf.getBytes(4)),\n numTables: ttf.getUint16(),\n searchRange: ttf.getUint16(),\n entrySelector: ttf.getUint16(),\n rangeShift: ttf.getUint16()\n };\n }\n\n function readTrueTypeCollectionHeader(ttc) {\n var ttcTag = (0, _util.bytesToString)(ttc.getBytes(4));\n (0, _util.assert)(ttcTag === \"ttcf\", \"Must be a TrueType Collection font.\");\n var majorVersion = ttc.getUint16();\n var minorVersion = ttc.getUint16();\n var numFonts = ttc.getInt32() >>> 0;\n var offsetTable = [];\n\n for (var i = 0; i < numFonts; i++) {\n offsetTable.push(ttc.getInt32() >>> 0);\n }\n\n var header = {\n ttcTag: ttcTag,\n majorVersion: majorVersion,\n minorVersion: minorVersion,\n numFonts: numFonts,\n offsetTable: offsetTable\n };\n\n switch (majorVersion) {\n case 1:\n return header;\n\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\n throw new _util.FormatError(\"Invalid TrueType Collection majorVersion: \".concat(majorVersion, \".\"));\n }\n\n function readTrueTypeCollectionData(ttc, fontName) {\n var _readTrueTypeCollecti = readTrueTypeCollectionHeader(ttc),\n numFonts = _readTrueTypeCollecti.numFonts,\n offsetTable = _readTrueTypeCollecti.offsetTable;\n\n for (var i = 0; i < numFonts; i++) {\n ttc.pos = (ttc.start || 0) + offsetTable[i];\n var potentialHeader = readOpenTypeHeader(ttc);\n var potentialTables = readTables(ttc, potentialHeader.numTables);\n\n if (!potentialTables.name) {\n throw new _util.FormatError('TrueType Collection font must contain a \"name\" table.');\n }\n\n var nameTable = readNameTable(potentialTables.name);\n\n for (var j = 0, jj = nameTable.length; j < jj; j++) {\n for (var k = 0, kk = nameTable[j].length; k < kk; k++) {\n var nameEntry = nameTable[j][k];\n\n if (nameEntry && nameEntry.replace(/\\s/g, \"\") === fontName) {\n return {\n header: potentialHeader,\n tables: potentialTables\n };\n }\n }\n }\n }\n\n throw new _util.FormatError(\"TrueType Collection does not contain \\\"\".concat(fontName, \"\\\" font.\"));\n }\n\n function readCmapTable(cmap, file, isSymbolicFont, hasEncoding) {\n if (!cmap) {\n (0, _util.warn)(\"No cmap table available.\");\n return {\n platformId: -1,\n encodingId: -1,\n mappings: [],\n hasShortCmap: false\n };\n }\n\n var segment;\n var start = (file.start ? file.start : 0) + cmap.offset;\n file.pos = start;\n file.skip(2);\n var numTables = file.getUint16();\n var potentialTable;\n var canBreak = false;\n\n for (var i = 0; i < numTables; i++) {\n var platformId = file.getUint16();\n var encodingId = file.getUint16();\n var offset = file.getInt32() >>> 0;\n var useTable = false;\n\n if (potentialTable && potentialTable.platformId === platformId && potentialTable.encodingId === encodingId) {\n continue;\n }\n\n if (platformId === 0 && encodingId === 0) {\n useTable = true;\n } else if (platformId === 1 && encodingId === 0) {\n useTable = true;\n } else if (platformId === 3 && encodingId === 1 && (hasEncoding || !potentialTable)) {\n useTable = true;\n\n if (!isSymbolicFont) {\n canBreak = true;\n }\n } else if (isSymbolicFont && platformId === 3 && encodingId === 0) {\n useTable = true;\n canBreak = true;\n }\n\n if (useTable) {\n potentialTable = {\n platformId: platformId,\n encodingId: encodingId,\n offset: offset\n };\n }\n\n if (canBreak) {\n break;\n }\n }\n\n if (potentialTable) {\n file.pos = start + potentialTable.offset;\n }\n\n if (!potentialTable || file.peekByte() === -1) {\n (0, _util.warn)(\"Could not find a preferred cmap table.\");\n return {\n platformId: -1,\n encodingId: -1,\n mappings: [],\n hasShortCmap: false\n };\n }\n\n var format = file.getUint16();\n file.skip(2 + 2);\n var hasShortCmap = false;\n var mappings = [];\n var j, glyphId;\n\n if (format === 0) {\n for (j = 0; j < 256; j++) {\n var index = file.getByte();\n\n if (!index) {\n continue;\n }\n\n mappings.push({\n charCode: j,\n glyphId: index\n });\n }\n\n hasShortCmap = true;\n } else if (format === 4) {\n var segCount = file.getUint16() >> 1;\n file.skip(6);\n var segIndex,\n segments = [];\n\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segments.push({\n end: file.getUint16()\n });\n }\n\n file.skip(2);\n\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segments[segIndex].start = file.getUint16();\n }\n\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segments[segIndex].delta = file.getUint16();\n }\n\n var offsetsCount = 0;\n\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segment = segments[segIndex];\n var rangeOffset = file.getUint16();\n\n if (!rangeOffset) {\n segment.offsetIndex = -1;\n continue;\n }\n\n var offsetIndex = (rangeOffset >> 1) - (segCount - segIndex);\n segment.offsetIndex = offsetIndex;\n offsetsCount = Math.max(offsetsCount, offsetIndex + segment.end - segment.start + 1);\n }\n\n var offsets = [];\n\n for (j = 0; j < offsetsCount; j++) {\n offsets.push(file.getUint16());\n }\n\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segment = segments[segIndex];\n start = segment.start;\n var end = segment.end;\n var delta = segment.delta;\n offsetIndex = segment.offsetIndex;\n\n for (j = start; j <= end; j++) {\n if (j === 0xffff) {\n continue;\n }\n\n glyphId = offsetIndex < 0 ? j : offsets[offsetIndex + j - start];\n glyphId = glyphId + delta & 0xffff;\n mappings.push({\n charCode: j,\n glyphId: glyphId\n });\n }\n }\n } else if (format === 6) {\n var firstCode = file.getUint16();\n var entryCount = file.getUint16();\n\n for (j = 0; j < entryCount; j++) {\n glyphId = file.getUint16();\n var charCode = firstCode + j;\n mappings.push({\n charCode: charCode,\n glyphId: glyphId\n });\n }\n } else {\n (0, _util.warn)(\"cmap table has unsupported format: \" + format);\n return {\n platformId: -1,\n encodingId: -1,\n mappings: [],\n hasShortCmap: false\n };\n }\n\n mappings.sort(function (a, b) {\n return a.charCode - b.charCode;\n });\n\n for (i = 1; i < mappings.length; i++) {\n if (mappings[i - 1].charCode === mappings[i].charCode) {\n mappings.splice(i, 1);\n i--;\n }\n }\n\n return {\n platformId: potentialTable.platformId,\n encodingId: potentialTable.encodingId,\n mappings: mappings,\n hasShortCmap: hasShortCmap\n };\n }\n\n function sanitizeMetrics(file, header, metrics, numGlyphs, dupFirstEntry) {\n if (!header) {\n if (metrics) {\n metrics.data = null;\n }\n\n return;\n }\n\n file.pos = (file.start ? file.start : 0) + header.offset;\n file.pos += 4;\n file.pos += 2;\n file.pos += 2;\n file.pos += 2;\n file.pos += 2;\n file.pos += 2;\n file.pos += 2;\n file.pos += 2;\n file.pos += 2;\n file.pos += 2;\n file.pos += 2;\n file.pos += 8;\n file.pos += 2;\n var numOfMetrics = file.getUint16();\n\n if (numOfMetrics > numGlyphs) {\n (0, _util.info)(\"The numOfMetrics (\" + numOfMetrics + \") should not be \" + \"greater than the numGlyphs (\" + numGlyphs + \")\");\n numOfMetrics = numGlyphs;\n header.data[34] = (numOfMetrics & 0xff00) >> 8;\n header.data[35] = numOfMetrics & 0x00ff;\n }\n\n var numOfSidebearings = numGlyphs - numOfMetrics;\n var numMissing = numOfSidebearings - (metrics.length - numOfMetrics * 4 >> 1);\n\n if (numMissing > 0) {\n var entries = new Uint8Array(metrics.length + numMissing * 2);\n entries.set(metrics.data);\n\n if (dupFirstEntry) {\n entries[metrics.length] = metrics.data[2];\n entries[metrics.length + 1] = metrics.data[3];\n }\n\n metrics.data = entries;\n }\n }\n\n function sanitizeGlyph(source, sourceStart, sourceEnd, dest, destStart, hintsValid) {\n var glyphProfile = {\n length: 0,\n sizeOfInstructions: 0\n };\n\n if (sourceEnd - sourceStart <= 12) {\n return glyphProfile;\n }\n\n var glyf = source.subarray(sourceStart, sourceEnd);\n var contoursCount = signedInt16(glyf[0], glyf[1]);\n\n if (contoursCount < 0) {\n contoursCount = -1;\n writeSignedInt16(glyf, 0, contoursCount);\n dest.set(glyf, destStart);\n glyphProfile.length = glyf.length;\n return glyphProfile;\n }\n\n var i,\n j = 10,\n flagsCount = 0;\n\n for (i = 0; i < contoursCount; i++) {\n var endPoint = glyf[j] << 8 | glyf[j + 1];\n flagsCount = endPoint + 1;\n j += 2;\n }\n\n var instructionsStart = j;\n var instructionsLength = glyf[j] << 8 | glyf[j + 1];\n glyphProfile.sizeOfInstructions = instructionsLength;\n j += 2 + instructionsLength;\n var instructionsEnd = j;\n var coordinatesLength = 0;\n\n for (i = 0; i < flagsCount; i++) {\n var flag = glyf[j++];\n\n if (flag & 0xc0) {\n glyf[j - 1] = flag & 0x3f;\n }\n\n var xLength = 2;\n\n if (flag & 2) {\n xLength = 1;\n } else if (flag & 16) {\n xLength = 0;\n }\n\n var yLength = 2;\n\n if (flag & 4) {\n yLength = 1;\n } else if (flag & 32) {\n yLength = 0;\n }\n\n var xyLength = xLength + yLength;\n coordinatesLength += xyLength;\n\n if (flag & 8) {\n var repeat = glyf[j++];\n i += repeat;\n coordinatesLength += repeat * xyLength;\n }\n }\n\n if (coordinatesLength === 0) {\n return glyphProfile;\n }\n\n var glyphDataLength = j + coordinatesLength;\n\n if (glyphDataLength > glyf.length) {\n return glyphProfile;\n }\n\n if (!hintsValid && instructionsLength > 0) {\n dest.set(glyf.subarray(0, instructionsStart), destStart);\n dest.set([0, 0], destStart + instructionsStart);\n dest.set(glyf.subarray(instructionsEnd, glyphDataLength), destStart + instructionsStart + 2);\n glyphDataLength -= instructionsLength;\n\n if (glyf.length - glyphDataLength > 3) {\n glyphDataLength = glyphDataLength + 3 & ~3;\n }\n\n glyphProfile.length = glyphDataLength;\n return glyphProfile;\n }\n\n if (glyf.length - glyphDataLength > 3) {\n glyphDataLength = glyphDataLength + 3 & ~3;\n dest.set(glyf.subarray(0, glyphDataLength), destStart);\n glyphProfile.length = glyphDataLength;\n return glyphProfile;\n }\n\n dest.set(glyf, destStart);\n glyphProfile.length = glyf.length;\n return glyphProfile;\n }\n\n function sanitizeHead(head, numGlyphs, locaLength) {\n var data = head.data;\n var version = int32(data[0], data[1], data[2], data[3]);\n\n if (version >> 16 !== 1) {\n (0, _util.info)(\"Attempting to fix invalid version in head table: \" + version);\n data[0] = 0;\n data[1] = 1;\n data[2] = 0;\n data[3] = 0;\n }\n\n var indexToLocFormat = int16(data[50], data[51]);\n\n if (indexToLocFormat < 0 || indexToLocFormat > 1) {\n (0, _util.info)(\"Attempting to fix invalid indexToLocFormat in head table: \" + indexToLocFormat);\n var numGlyphsPlusOne = numGlyphs + 1;\n\n if (locaLength === numGlyphsPlusOne << 1) {\n data[50] = 0;\n data[51] = 0;\n } else if (locaLength === numGlyphsPlusOne << 2) {\n data[50] = 0;\n data[51] = 1;\n } else {\n throw new _util.FormatError(\"Could not fix indexToLocFormat: \" + indexToLocFormat);\n }\n }\n }\n\n function sanitizeGlyphLocations(loca, glyf, numGlyphs, isGlyphLocationsLong, hintsValid, dupFirstEntry, maxSizeOfInstructions) {\n var itemSize, itemDecode, itemEncode;\n\n if (isGlyphLocationsLong) {\n itemSize = 4;\n\n itemDecode = function fontItemDecodeLong(data, offset) {\n return data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | 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\n itemDecode = function fontItemDecode(data, offset) {\n return data[offset] << 9 | data[offset + 1] << 1;\n };\n\n itemEncode = function fontItemEncode(data, offset, value) {\n data[offset] = value >> 9 & 0xff;\n data[offset + 1] = value >> 1 & 0xff;\n };\n }\n\n var numGlyphsOut = dupFirstEntry ? numGlyphs + 1 : numGlyphs;\n var locaDataSize = itemSize * (1 + numGlyphsOut);\n var locaData = new Uint8Array(locaDataSize);\n locaData.set(loca.data.subarray(0, locaDataSize));\n loca.data = locaData;\n var oldGlyfData = glyf.data;\n var oldGlyfDataLength = oldGlyfData.length;\n var newGlyfData = new Uint8Array(oldGlyfDataLength);\n var startOffset = itemDecode(locaData, 0);\n var writeOffset = 0;\n var missingGlyphs = Object.create(null);\n itemEncode(locaData, 0, writeOffset);\n var i, j;\n\n for (i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize) {\n var endOffset = itemDecode(locaData, j);\n\n if (endOffset === 0) {\n endOffset = startOffset;\n }\n\n if (endOffset > oldGlyfDataLength && (oldGlyfDataLength + 3 & ~3) === endOffset) {\n endOffset = oldGlyfDataLength;\n }\n\n if (endOffset > oldGlyfDataLength) {\n startOffset = endOffset;\n }\n\n var glyphProfile = sanitizeGlyph(oldGlyfData, startOffset, endOffset, newGlyfData, writeOffset, hintsValid);\n var newLength = glyphProfile.length;\n\n if (newLength === 0) {\n missingGlyphs[i] = true;\n }\n\n if (glyphProfile.sizeOfInstructions > maxSizeOfInstructions) {\n maxSizeOfInstructions = glyphProfile.sizeOfInstructions;\n }\n\n writeOffset += newLength;\n itemEncode(locaData, j, writeOffset);\n startOffset = endOffset;\n }\n\n if (writeOffset === 0) {\n var simpleGlyph = new Uint8Array([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\n glyf.data = simpleGlyph;\n } else if (dupFirstEntry) {\n var firstEntryLength = itemDecode(locaData, itemSize);\n\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\n glyf.data.set(newGlyfData.subarray(0, firstEntryLength), writeOffset);\n itemEncode(loca.data, locaData.length - itemSize, writeOffset + firstEntryLength);\n } else {\n glyf.data = newGlyfData.subarray(0, writeOffset);\n }\n\n return {\n missingGlyphs: missingGlyphs,\n maxSizeOfInstructions: maxSizeOfInstructions\n };\n }\n\n function readPostScriptTable(post, propertiesObj, maxpNumGlyphs) {\n var start = (font.start ? font.start : 0) + post.offset;\n font.pos = start;\n var length = post.length,\n end = start + length;\n var version = font.getInt32();\n font.skip(28);\n var glyphNames;\n var valid = true;\n var i;\n\n switch (version) {\n case 0x00010000:\n glyphNames = MacStandardGlyphOrdering;\n break;\n\n case 0x00020000:\n var numGlyphs = font.getUint16();\n\n if (numGlyphs !== maxpNumGlyphs) {\n valid = false;\n break;\n }\n\n var glyphNameIndexes = [];\n\n for (i = 0; i < numGlyphs; ++i) {\n var index = font.getUint16();\n\n if (index >= 32768) {\n valid = false;\n break;\n }\n\n glyphNameIndexes.push(index);\n }\n\n if (!valid) {\n break;\n }\n\n var customNames = [];\n var strBuf = [];\n\n while (font.pos < end) {\n var stringLength = font.getByte();\n strBuf.length = stringLength;\n\n for (i = 0; i < stringLength; ++i) {\n strBuf[i] = String.fromCharCode(font.getByte());\n }\n\n customNames.push(strBuf.join(\"\"));\n }\n\n glyphNames = [];\n\n for (i = 0; i < numGlyphs; ++i) {\n var j = glyphNameIndexes[i];\n\n if (j < 258) {\n glyphNames.push(MacStandardGlyphOrdering[j]);\n continue;\n }\n\n glyphNames.push(customNames[j - 258]);\n }\n\n break;\n\n case 0x00030000:\n break;\n\n default:\n (0, _util.warn)(\"Unknown/unsupported post table version \" + version);\n valid = false;\n\n if (propertiesObj.defaultEncoding) {\n glyphNames = propertiesObj.defaultEncoding;\n }\n\n break;\n }\n\n propertiesObj.glyphNames = glyphNames;\n return valid;\n }\n\n function readNameTable(nameTable) {\n var start = (font.start ? font.start : 0) + nameTable.offset;\n font.pos = start;\n var names = [[], []];\n var length = nameTable.length,\n end = start + length;\n var format = font.getUint16();\n var FORMAT_0_HEADER_LENGTH = 6;\n\n if (format !== 0 || length < FORMAT_0_HEADER_LENGTH) {\n return names;\n }\n\n var numRecords = font.getUint16();\n var stringsStart = font.getUint16();\n var records = [];\n var NAME_RECORD_LENGTH = 12;\n var i, ii;\n\n for (i = 0; i < numRecords && font.pos + NAME_RECORD_LENGTH <= end; i++) {\n var r = {\n platform: font.getUint16(),\n encoding: font.getUint16(),\n language: font.getUint16(),\n name: font.getUint16(),\n length: font.getUint16(),\n offset: font.getUint16()\n };\n\n if (r.platform === 1 && r.encoding === 0 && r.language === 0 || r.platform === 3 && r.encoding === 1 && r.language === 0x409) {\n records.push(r);\n }\n }\n\n for (i = 0, ii = records.length; i < ii; i++) {\n var record = records[i];\n\n if (record.length <= 0) {\n continue;\n }\n\n var pos = start + stringsStart + record.offset;\n\n if (pos + record.length > end) {\n continue;\n }\n\n font.pos = pos;\n var nameIndex = record.name;\n\n if (record.encoding) {\n var str = \"\";\n\n for (var j = 0, jj = record.length; j < jj; j += 2) {\n str += String.fromCharCode(font.getUint16());\n }\n\n names[1][nameIndex] = str;\n } else {\n names[0][nameIndex] = (0, _util.bytesToString)(font.getBytes(record.length));\n }\n }\n\n return names;\n }\n\n var TTOpsStackDeltas = [0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, 0, 0, -2, -5, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1, 1, -1, -999, 0, 1, 0, -1, -2, 0, -1, -2, -1, -1, 0, -1, -1, 0, 0, -999, -999, -1, -1, -1, -1, -2, -999, -2, -2, -999, 0, -2, -2, 0, 0, -2, 0, -2, 0, 0, 0, -2, -1, -1, 1, 1, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, -999, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -999, -999, -999, -999, -999, -1, -1, -2, -2, 0, 0, 0, 0, -1, -1, -999, -2, -2, 0, 0, -1, -2, -2, 0, 0, 0, -1, -1, -1, -2];\n\n function sanitizeTTProgram(table, ttContext) {\n var data = table.data;\n var i = 0,\n j,\n n,\n b,\n funcId,\n pc,\n lastEndf = 0,\n lastDeff = 0;\n var stack = [];\n var callstack = [];\n var functionsCalled = [];\n var tooComplexToFollowFunctions = ttContext.tooComplexToFollowFunctions;\n var inFDEF = false,\n ifLevel = 0,\n inELSE = 0;\n\n for (var ii = data.length; i < ii;) {\n var op = data[i++];\n\n if (op === 0x40) {\n n = data[i++];\n\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 n = data[i++];\n\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 n = op - 0xb0 + 1;\n\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 n = op - 0xb8 + 1;\n\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 if (!inFDEF && !inELSE) {\n funcId = stack[stack.length - 1];\n\n if (isNaN(funcId)) {\n (0, _util.info)(\"TT: CALL empty stack (or invalid entry).\");\n } else {\n ttContext.functionsUsed[funcId] = true;\n\n if (funcId in ttContext.functionsStackDeltas) {\n var newStackLength = stack.length + ttContext.functionsStackDeltas[funcId];\n\n if (newStackLength < 0) {\n (0, _util.warn)(\"TT: CALL invalid functions stack delta.\");\n ttContext.hintsValid = false;\n return;\n }\n\n stack.length = newStackLength;\n } else if (funcId in ttContext.functionsDefined && !functionsCalled.includes(funcId)) {\n callstack.push({\n data: data,\n i: i,\n stackTop: stack.length - 1\n });\n functionsCalled.push(funcId);\n pc = ttContext.functionsDefined[funcId];\n\n if (!pc) {\n (0, _util.warn)(\"TT: CALL non-existent function\");\n ttContext.hintsValid = false;\n return;\n }\n\n data = pc.data;\n i = pc.i;\n }\n }\n }\n } else if (op === 0x2c && !tooComplexToFollowFunctions) {\n if (inFDEF || inELSE) {\n (0, _util.warn)(\"TT: nested FDEFs not allowed\");\n tooComplexToFollowFunctions = true;\n }\n\n inFDEF = true;\n lastDeff = i;\n funcId = stack.pop();\n ttContext.functionsDefined[funcId] = {\n data: data,\n i: i\n };\n } else if (op === 0x2d) {\n if (inFDEF) {\n inFDEF = false;\n lastEndf = i;\n } else {\n pc = callstack.pop();\n\n if (!pc) {\n (0, _util.warn)(\"TT: ENDF bad stack\");\n ttContext.hintsValid = false;\n return;\n }\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 if (inFDEF || inELSE) {\n (0, _util.warn)(\"TT: nested IDEFs not allowed\");\n tooComplexToFollowFunctions = true;\n }\n\n inFDEF = true;\n lastDeff = i;\n } else if (op === 0x58) {\n ++ifLevel;\n } else if (op === 0x1b) {\n inELSE = ifLevel;\n } else if (op === 0x59) {\n if (inELSE === ifLevel) {\n inELSE = 0;\n }\n\n --ifLevel;\n } else if (op === 0x1c) {\n if (!inFDEF && !inELSE) {\n var offset = stack[stack.length - 1];\n\n if (offset > 0) {\n i += offset - 1;\n }\n }\n }\n\n if (!inFDEF && !inELSE) {\n var stackDelta = 0;\n\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\n if (op >= 0x71 && op <= 0x75) {\n n = stack.pop();\n\n if (!isNaN(n)) {\n stackDelta = -n * 2;\n }\n }\n\n while (stackDelta < 0 && stack.length > 0) {\n stack.pop();\n stackDelta++;\n }\n\n while (stackDelta > 0) {\n stack.push(NaN);\n stackDelta--;\n }\n }\n }\n\n ttContext.tooComplexToFollowFunctions = tooComplexToFollowFunctions;\n var content = [data];\n\n if (i > data.length) {\n content.push(new Uint8Array(i - data.length));\n }\n\n if (lastDeff > lastEndf) {\n (0, _util.warn)(\"TT: complementing a missing function tail\");\n content.push(new Uint8Array([0x22, 0x2d]));\n }\n\n foldTTTable(table, content);\n }\n\n function checkInvalidFunctions(ttContext, maxFunctionDefs) {\n if (ttContext.tooComplexToFollowFunctions) {\n return;\n }\n\n if (ttContext.functionsDefined.length > maxFunctionDefs) {\n (0, _util.warn)(\"TT: more functions defined than expected\");\n ttContext.hintsValid = false;\n return;\n }\n\n for (var j = 0, jj = ttContext.functionsUsed.length; j < jj; j++) {\n if (j > maxFunctionDefs) {\n (0, _util.warn)(\"TT: invalid function id: \" + j);\n ttContext.hintsValid = false;\n return;\n }\n\n if (ttContext.functionsUsed[j] && !ttContext.functionsDefined[j]) {\n (0, _util.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 var newLength = 0;\n var j, jj;\n\n for (j = 0, jj = content.length; j < jj; j++) {\n newLength += content[j].length;\n }\n\n newLength = newLength + 3 & ~3;\n var result = new Uint8Array(newLength);\n var pos = 0;\n\n for (j = 0, jj = content.length; j < jj; j++) {\n result.set(content[j], pos);\n pos += content[j].length;\n }\n\n table.data = result;\n table.length = newLength;\n }\n }\n\n function sanitizeTTPrograms(fpgm, prep, cvt, maxFunctionDefs) {\n var ttContext = {\n functionsDefined: [],\n functionsUsed: [],\n functionsStackDeltas: [],\n tooComplexToFollowFunctions: false,\n hintsValid: true\n };\n\n if (fpgm) {\n sanitizeTTProgram(fpgm, ttContext);\n }\n\n if (prep) {\n sanitizeTTProgram(prep, ttContext);\n }\n\n if (fpgm) {\n checkInvalidFunctions(ttContext, maxFunctionDefs);\n }\n\n if (cvt && cvt.length & 1) {\n var cvtData = new Uint8Array(cvt.length + 1);\n cvtData.set(cvt.data);\n cvt.data = cvtData;\n }\n\n return ttContext.hintsValid;\n }\n\n font = new _stream.Stream(new Uint8Array(font.getBytes()));\n var header, tables;\n\n if (isTrueTypeCollectionFile(font)) {\n var 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\n var cff, cffFile;\n var isTrueType = !tables[\"CFF \"];\n\n if (!isTrueType) {\n var isComposite = properties.composite && ((properties.cidToGidMap || []).length > 0 || !(properties.cMap instanceof _cmap.IdentityCMap));\n\n if (header.version === \"OTTO\" && !isComposite || !tables.head || !tables.hhea || !tables.maxp || !tables.post) {\n cffFile = new _stream.Stream(tables[\"CFF \"].data);\n cff = new CFFFont(cffFile, properties);\n adjustWidths(properties);\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 _util.FormatError('Required \"loca\" table is not found');\n }\n\n if (!tables.glyf) {\n (0, _util.warn)('Required \"glyf\" table is not found -- trying to recover.');\n tables.glyf = {\n tag: \"glyf\",\n data: new Uint8Array(0)\n };\n }\n\n this.isOpenType = false;\n }\n\n if (!tables.maxp) {\n throw new _util.FormatError('Required \"maxp\" table is not found');\n }\n\n font.pos = (font.start || 0) + tables.maxp.offset;\n var version = font.getInt32();\n var numGlyphs = font.getUint16();\n var numGlyphsOut = numGlyphs + 1;\n var dupFirstEntry = true;\n\n if (numGlyphsOut > 0xffff) {\n dupFirstEntry = false;\n numGlyphsOut = numGlyphs;\n (0, _util.warn)(\"Not enough space in glyfs to duplicate first glyph.\");\n }\n\n var maxFunctionDefs = 0;\n var maxSizeOfInstructions = 0;\n\n if (version >= 0x00010000 && tables.maxp.length >= 22) {\n font.pos += 8;\n var maxZones = font.getUint16();\n\n if (maxZones > 2) {\n tables.maxp.data[14] = 0;\n tables.maxp.data[15] = 2;\n }\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 var hintsValid = sanitizeTTPrograms(tables.fpgm, tables.prep, tables[\"cvt \"], maxFunctionDefs);\n\n if (!hintsValid) {\n delete tables.fpgm;\n delete tables.prep;\n delete tables[\"cvt \"];\n }\n\n sanitizeMetrics(font, tables.hhea, tables.hmtx, numGlyphsOut, dupFirstEntry);\n\n if (!tables.head) {\n throw new _util.FormatError('Required \"head\" table is not found');\n }\n\n sanitizeHead(tables.head, numGlyphs, isTrueType ? tables.loca.length : 0);\n var missingGlyphs = Object.create(null);\n\n if (isTrueType) {\n var isGlyphLocationsLong = int16(tables.head.data[50], tables.head.data[51]);\n var glyphsInfo = sanitizeGlyphLocations(tables.loca, tables.glyf, numGlyphs, isGlyphLocationsLong, hintsValid, dupFirstEntry, maxSizeOfInstructions);\n missingGlyphs = glyphsInfo.missingGlyphs;\n\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\n if (!tables.hhea) {\n throw new _util.FormatError('Required \"hhea\" table is not found');\n }\n\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 var metricsOverride = {\n unitsPerEm: int16(tables.head.data[18], tables.head.data[19]),\n yMax: int16(tables.head.data[42], tables.head.data[43]),\n yMin: signedInt16(tables.head.data[38], tables.head.data[39]),\n ascent: int16(tables.hhea.data[4], tables.hhea.data[5]),\n descent: signedInt16(tables.hhea.data[6], tables.hhea.data[7])\n };\n this.ascent = metricsOverride.ascent / metricsOverride.unitsPerEm;\n this.descent = metricsOverride.descent / metricsOverride.unitsPerEm;\n\n if (tables.post) {\n readPostScriptTable(tables.post, properties, numGlyphs);\n }\n\n tables.post = {\n tag: \"post\",\n data: createPostTable(properties)\n };\n var charCodeToGlyphId = [];\n\n function hasGlyph(glyphId) {\n return !missingGlyphs[glyphId];\n }\n\n if (properties.composite) {\n var cidToGidMap = properties.cidToGidMap || [];\n var isCidToGidMapEmpty = cidToGidMap.length === 0;\n properties.cMap.forEach(function (charCode, cid) {\n if (cid > 0xffff) {\n throw new _util.FormatError(\"Max size of CID is 65,535\");\n }\n\n var glyphId = -1;\n\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 var cmapTable = readCmapTable(tables.cmap, font, this.isSymbolicFont, properties.hasEncoding);\n var cmapPlatformId = cmapTable.platformId;\n var cmapEncodingId = cmapTable.encodingId;\n var cmapMappings = cmapTable.mappings;\n var cmapMappingsLength = cmapMappings.length;\n\n if (properties.hasEncoding && (cmapPlatformId === 3 && cmapEncodingId === 1 || cmapPlatformId === 1 && cmapEncodingId === 0) || cmapPlatformId === -1 && cmapEncodingId === -1 && !!(0, _encodings.getEncoding)(properties.baseEncodingName)) {\n var baseEncoding = [];\n\n if (properties.baseEncodingName === \"MacRomanEncoding\" || properties.baseEncodingName === \"WinAnsiEncoding\") {\n baseEncoding = (0, _encodings.getEncoding)(properties.baseEncodingName);\n }\n\n var glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();\n\n for (var charCode = 0; charCode < 256; charCode++) {\n var glyphName, standardGlyphName;\n\n if (this.differences && charCode in this.differences) {\n glyphName = this.differences[charCode];\n } else if (charCode in baseEncoding && baseEncoding[charCode] !== \"\") {\n glyphName = baseEncoding[charCode];\n } else {\n glyphName = _encodings.StandardEncoding[charCode];\n }\n\n if (!glyphName) {\n continue;\n }\n\n standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap);\n var unicodeOrCharCode;\n\n if (cmapPlatformId === 3 && cmapEncodingId === 1) {\n unicodeOrCharCode = glyphsUnicodeMap[standardGlyphName];\n } else if (cmapPlatformId === 1 && cmapEncodingId === 0) {\n unicodeOrCharCode = _encodings.MacRomanEncoding.indexOf(standardGlyphName);\n }\n\n var found = false;\n\n for (var i = 0; i < cmapMappingsLength; ++i) {\n if (cmapMappings[i].charCode !== unicodeOrCharCode) {\n continue;\n }\n\n charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;\n found = true;\n break;\n }\n\n if (!found && properties.glyphNames) {\n var glyphId = properties.glyphNames.indexOf(glyphName);\n\n if (glyphId === -1 && standardGlyphName !== glyphName) {\n glyphId = properties.glyphNames.indexOf(standardGlyphName);\n }\n\n if (glyphId > 0 && hasGlyph(glyphId)) {\n charCodeToGlyphId[charCode] = glyphId;\n }\n }\n }\n } else if (cmapPlatformId === 0 && cmapEncodingId === 0) {\n for (var _i2 = 0; _i2 < cmapMappingsLength; ++_i2) {\n charCodeToGlyphId[cmapMappings[_i2].charCode] = cmapMappings[_i2].glyphId;\n }\n } else {\n for (var _i3 = 0; _i3 < cmapMappingsLength; ++_i3) {\n var _charCode4 = cmapMappings[_i3].charCode;\n\n if (cmapPlatformId === 3 && _charCode4 >= 0xf000 && _charCode4 <= 0xf0ff) {\n _charCode4 &= 0xff;\n }\n\n charCodeToGlyphId[_charCode4] = cmapMappings[_i3].glyphId;\n }\n }\n }\n\n if (charCodeToGlyphId.length === 0) {\n charCodeToGlyphId[0] = 0;\n }\n\n var glyphZeroId = numGlyphsOut - 1;\n\n if (!dupFirstEntry) {\n glyphZeroId = 0;\n }\n\n var newMapping = adjustMapping(charCodeToGlyphId, hasGlyph, glyphZeroId);\n this.toFontChar = newMapping.toFontChar;\n tables.cmap = {\n tag: \"cmap\",\n data: createCmapTable(newMapping.charCodeToGlyphId, numGlyphsOut)\n };\n\n if (!tables[\"OS/2\"] || !validateOS2Table(tables[\"OS/2\"], font)) {\n tables[\"OS/2\"] = {\n tag: \"OS/2\",\n data: createOS2Table(properties, newMapping.charCodeToGlyphId, metricsOverride)\n };\n }\n\n if (!isTrueType) {\n try {\n cffFile = new _stream.Stream(tables[\"CFF \"].data);\n var parser = new _cff_parser.CFFParser(cffFile, properties, SEAC_ANALYSIS_ENABLED);\n cff = parser.parse();\n cff.duplicateFirstGlyph();\n var compiler = new _cff_parser.CFFCompiler(cff);\n tables[\"CFF \"].data = compiler.compile();\n } catch (e) {\n (0, _util.warn)(\"Failed to compile font \" + properties.loadedName);\n }\n }\n\n if (!tables.name) {\n tables.name = {\n tag: \"name\",\n data: createNameTable(this.name)\n };\n } else {\n var namePrototype = readNameTable(tables.name);\n tables.name.data = createNameTable(name, namePrototype);\n }\n\n var builder = new OpenTypeFileBuilder(header.version);\n\n for (var tableTag in tables) {\n builder.addTable(tableTag, tables[tableTag].data);\n }\n\n return builder.toArray();\n },\n convert: function Font_convert(fontName, font, properties) {\n properties.fixedPitch = false;\n\n if (properties.builtInEncoding) {\n adjustToUnicode(properties, properties.builtInEncoding);\n }\n\n var glyphZeroId = 1;\n\n if (font instanceof CFFFont) {\n glyphZeroId = font.numGlyphs - 1;\n }\n\n var mapping = font.getGlyphMapping(properties);\n var newMapping = adjustMapping(mapping, font.hasGlyphId.bind(font), glyphZeroId);\n this.toFontChar = newMapping.toFontChar;\n var numGlyphs = font.numGlyphs;\n\n function getCharCodes(charCodeToGlyphId, glyphId) {\n var charCodes = null;\n\n for (var charCode in charCodeToGlyphId) {\n if (glyphId === charCodeToGlyphId[charCode]) {\n if (!charCodes) {\n charCodes = [];\n }\n\n charCodes.push(charCode | 0);\n }\n }\n\n return charCodes;\n }\n\n function createCharCode(charCodeToGlyphId, glyphId) {\n for (var charCode in charCodeToGlyphId) {\n if (glyphId === charCodeToGlyphId[charCode]) {\n return charCode | 0;\n }\n }\n\n newMapping.charCodeToGlyphId[newMapping.nextAvailableFontCharCode] = glyphId;\n return newMapping.nextAvailableFontCharCode++;\n }\n\n var seacs = font.seacs;\n\n if (SEAC_ANALYSIS_ENABLED && seacs && seacs.length) {\n var matrix = properties.fontMatrix || _util.FONT_IDENTITY_MATRIX;\n var charset = font.getCharset();\n var seacMap = Object.create(null);\n\n for (var glyphId in seacs) {\n glyphId |= 0;\n var seac = seacs[glyphId];\n var baseGlyphName = _encodings.StandardEncoding[seac[2]];\n var accentGlyphName = _encodings.StandardEncoding[seac[3]];\n var baseGlyphId = charset.indexOf(baseGlyphName);\n var accentGlyphId = charset.indexOf(accentGlyphName);\n\n if (baseGlyphId < 0 || accentGlyphId < 0) {\n continue;\n }\n\n var accentOffset = {\n x: seac[0] * matrix[0] + seac[1] * matrix[2] + matrix[4],\n y: seac[0] * matrix[1] + seac[1] * matrix[3] + matrix[5]\n };\n var charCodes = getCharCodes(mapping, glyphId);\n\n if (!charCodes) {\n continue;\n }\n\n for (var i = 0, ii = charCodes.length; i < ii; i++) {\n var charCode = charCodes[i];\n var charCodeToGlyphId = newMapping.charCodeToGlyphId;\n var baseFontCharCode = createCharCode(charCodeToGlyphId, baseGlyphId);\n var accentFontCharCode = createCharCode(charCodeToGlyphId, accentGlyphId);\n seacMap[charCode] = {\n baseFontCharCode: baseFontCharCode,\n accentFontCharCode: accentFontCharCode,\n accentOffset: accentOffset\n };\n }\n }\n\n properties.seacMap = seacMap;\n }\n\n var unitsPerEm = 1 / (properties.fontMatrix || _util.FONT_IDENTITY_MATRIX)[0];\n var builder = new OpenTypeFileBuilder(\"\\x4F\\x54\\x54\\x4F\");\n builder.addTable(\"CFF \", font.data);\n builder.addTable(\"OS/2\", createOS2Table(properties, newMapping.charCodeToGlyphId));\n builder.addTable(\"cmap\", createCmapTable(newMapping.charCodeToGlyphId, numGlyphs));\n builder.addTable(\"head\", \"\\x00\\x01\\x00\\x00\" + \"\\x00\\x00\\x10\\x00\" + \"\\x00\\x00\\x00\\x00\" + \"\\x5F\\x0F\\x3C\\xF5\" + \"\\x00\\x00\" + safeString16(unitsPerEm) + \"\\x00\\x00\\x00\\x00\\x9e\\x0b\\x7e\\x27\" + \"\\x00\\x00\\x00\\x00\\x9e\\x0b\\x7e\\x27\" + \"\\x00\\x00\" + safeString16(properties.descent) + \"\\x0F\\xFF\" + safeString16(properties.ascent) + string16(properties.italicAngle ? 2 : 0) + \"\\x00\\x11\" + \"\\x00\\x00\" + \"\\x00\\x00\" + \"\\x00\\x00\");\n builder.addTable(\"hhea\", \"\\x00\\x01\\x00\\x00\" + safeString16(properties.ascent) + safeString16(properties.descent) + \"\\x00\\x00\" + \"\\xFF\\xFF\" + \"\\x00\\x00\" + \"\\x00\\x00\" + \"\\x00\\x00\" + safeString16(properties.capHeight) + safeString16(Math.tan(properties.italicAngle) * properties.xHeight) + \"\\x00\\x00\" + \"\\x00\\x00\" + \"\\x00\\x00\" + \"\\x00\\x00\" + \"\\x00\\x00\" + \"\\x00\\x00\" + string16(numGlyphs));\n builder.addTable(\"hmtx\", function fontFieldsHmtx() {\n var charstrings = font.charstrings;\n var cffWidths = font.cff ? font.cff.widths : null;\n var hmtx = \"\\x00\\x00\\x00\\x00\";\n\n for (var _i4 = 1, _ii = numGlyphs; _i4 < _ii; _i4++) {\n var width = 0;\n\n if (charstrings) {\n var charstring = charstrings[_i4 - 1];\n width = \"width\" in charstring ? charstring.width : 0;\n } else if (cffWidths) {\n width = Math.ceil(cffWidths[_i4] || 0);\n }\n\n hmtx += string16(width) + string16(0);\n }\n\n return hmtx;\n }());\n builder.addTable(\"maxp\", \"\\x00\\x00\\x50\\x00\" + string16(numGlyphs));\n builder.addTable(\"name\", createNameTable(fontName));\n builder.addTable(\"post\", createPostTable(properties));\n return builder.toArray();\n },\n\n get spaceWidth() {\n var possibleSpaceReplacements = [\"space\", \"minus\", \"one\", \"i\", \"I\"];\n var width;\n\n for (var i = 0, ii = possibleSpaceReplacements.length; i < ii; i++) {\n var glyphName = possibleSpaceReplacements[i];\n\n if (glyphName in this.widths) {\n width = this.widths[glyphName];\n break;\n }\n\n var glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();\n var glyphUnicode = glyphsUnicodeMap[glyphName];\n var charcode = 0;\n\n if (this.composite && this.cMap.contains(glyphUnicode)) {\n charcode = this.cMap.lookup(glyphUnicode);\n }\n\n if (!charcode && this.toUnicode) {\n charcode = this.toUnicode.charCodeOf(glyphUnicode);\n }\n\n if (charcode <= 0) {\n charcode = glyphUnicode;\n }\n\n width = this.widths[charcode];\n\n if (width) {\n break;\n }\n }\n\n width = width || this.defaultWidth;\n return (0, _util.shadow)(this, \"spaceWidth\", width);\n },\n\n charToGlyph: function Font_charToGlyph(charcode, isSpace) {\n var fontCharCode, width, operatorListId;\n var widthCode = charcode;\n\n if (this.cMap && this.cMap.contains(charcode)) {\n widthCode = this.cMap.lookup(charcode);\n }\n\n width = this.widths[widthCode];\n width = (0, _util.isNum)(width) ? width : this.defaultWidth;\n var vmetric = this.vmetrics && this.vmetrics[widthCode];\n var unicode = this.toUnicode.get(charcode) || this.fallbackToUnicode.get(charcode) || charcode;\n\n if (typeof unicode === \"number\") {\n unicode = String.fromCharCode(unicode);\n }\n\n var isInFont = (charcode in this.toFontChar);\n fontCharCode = this.toFontChar[charcode] || charcode;\n\n if (this.missingFile) {\n var glyphName = this.differences[charcode] || this.defaultEncoding[charcode];\n\n if ((glyphName === \".notdef\" || glyphName === \"\") && this.type === \"Type1\") {\n fontCharCode = 0x20;\n }\n\n fontCharCode = (0, _unicode.mapSpecialUnicodeValues)(fontCharCode);\n }\n\n if (this.isType3Font) {\n operatorListId = fontCharCode;\n }\n\n var accent = null;\n\n if (this.seacMap && this.seacMap[charcode]) {\n isInFont = true;\n var seac = this.seacMap[charcode];\n fontCharCode = seac.baseFontCharCode;\n accent = {\n fontChar: String.fromCodePoint(seac.accentFontCharCode),\n offset: seac.accentOffset\n };\n }\n\n var fontChar = \"\";\n\n if (typeof fontCharCode === \"number\") {\n if (fontCharCode <= 0x10ffff) {\n fontChar = String.fromCodePoint(fontCharCode);\n } else {\n (0, _util.warn)(\"charToGlyph - invalid fontCharCode: \".concat(fontCharCode));\n }\n }\n\n var glyph = this.glyphCache[charcode];\n\n if (!glyph || !glyph.matchesForCache(fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont)) {\n glyph = new Glyph(fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont);\n this.glyphCache[charcode] = glyph;\n }\n\n return glyph;\n },\n charsToGlyphs: function Font_charsToGlyphs(chars) {\n var charsCache = this.charsCache;\n var glyphs, glyph, charcode;\n\n if (charsCache) {\n glyphs = charsCache[chars];\n\n if (glyphs) {\n return glyphs;\n }\n }\n\n if (!charsCache) {\n charsCache = this.charsCache = Object.create(null);\n }\n\n glyphs = [];\n var charsCacheKey = chars;\n var i = 0,\n ii;\n\n if (this.cMap) {\n var c = Object.create(null);\n\n while (i < chars.length) {\n this.cMap.readCharCode(chars, i, c);\n charcode = c.charcode;\n var length = c.length;\n i += length;\n var isSpace = length === 1 && chars.charCodeAt(i - 1) === 0x20;\n glyph = this.charToGlyph(charcode, isSpace);\n glyphs.push(glyph);\n }\n } else {\n for (i = 0, ii = chars.length; i < ii; ++i) {\n charcode = chars.charCodeAt(i);\n glyph = this.charToGlyph(charcode, charcode === 0x20);\n glyphs.push(glyph);\n }\n }\n\n return charsCache[charsCacheKey] = glyphs;\n },\n\n get glyphCacheValues() {\n return Object.values(this.glyphCache);\n }\n\n };\n return Font;\n}();\n\nexports.Font = Font;\n\nvar ErrorFont = function ErrorFontClosure() {\n function ErrorFont(error) {\n this.error = error;\n this.loadedName = \"g_font_error\";\n this.missingFile = true;\n }\n\n ErrorFont.prototype = {\n charsToGlyphs: function ErrorFont_charsToGlyphs() {\n return [];\n },\n exportData: function exportData() {\n var extraProperties = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n return {\n error: this.error\n };\n }\n };\n return ErrorFont;\n}();\n\nexports.ErrorFont = ErrorFont;\n\nfunction type1FontGlyphMapping(properties, builtInEncoding, glyphNames) {\n var charCodeToGlyphId = Object.create(null);\n var glyphId, charCode, baseEncoding;\n var isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n\n if (properties.baseEncodingName) {\n baseEncoding = (0, _encodings.getEncoding)(properties.baseEncodingName);\n\n for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n\n if (glyphId >= 0) {\n charCodeToGlyphId[charCode] = glyphId;\n } else {\n charCodeToGlyphId[charCode] = 0;\n }\n }\n } else if (isSymbolicFont) {\n for (charCode in builtInEncoding) {\n charCodeToGlyphId[charCode] = builtInEncoding[charCode];\n }\n } else {\n baseEncoding = _encodings.StandardEncoding;\n\n for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n\n if (glyphId >= 0) {\n charCodeToGlyphId[charCode] = glyphId;\n } else {\n charCodeToGlyphId[charCode] = 0;\n }\n }\n }\n\n var differences = properties.differences,\n glyphsUnicodeMap;\n\n if (differences) {\n for (charCode in differences) {\n var glyphName = differences[charCode];\n glyphId = glyphNames.indexOf(glyphName);\n\n if (glyphId === -1) {\n if (!glyphsUnicodeMap) {\n glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();\n }\n\n var standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap);\n\n if (standardGlyphName !== glyphName) {\n glyphId = glyphNames.indexOf(standardGlyphName);\n }\n }\n\n if (glyphId >= 0) {\n charCodeToGlyphId[charCode] = glyphId;\n } else {\n charCodeToGlyphId[charCode] = 0;\n }\n }\n }\n\n return charCodeToGlyphId;\n}\n\nvar Type1Font = function Type1FontClosure() {\n function findBlock(streamBytes, signature, startIndex) {\n var streamBytesLength = streamBytes.length;\n var signatureLength = signature.length;\n var scanLength = streamBytesLength - signatureLength;\n var i = startIndex,\n j,\n found = false;\n\n while (i < scanLength) {\n j = 0;\n\n while (j < signatureLength && streamBytes[i + j] === signature[j]) {\n j++;\n }\n\n if (j >= signatureLength) {\n i += j;\n\n while (i < streamBytesLength && (0, _core_utils.isWhiteSpace)(streamBytes[i])) {\n i++;\n }\n\n found = true;\n break;\n }\n\n i++;\n }\n\n return {\n found: found,\n length: i\n };\n }\n\n function getHeaderBlock(stream, suggestedLength) {\n var EEXEC_SIGNATURE = [0x65, 0x65, 0x78, 0x65, 0x63];\n var streamStartPos = stream.pos;\n var headerBytes, headerBytesLength, block;\n\n try {\n headerBytes = stream.getBytes(suggestedLength);\n headerBytesLength = headerBytes.length;\n } catch (ex) {\n if (ex instanceof _core_utils.MissingDataException) {\n throw ex;\n }\n }\n\n if (headerBytesLength === suggestedLength) {\n block = findBlock(headerBytes, EEXEC_SIGNATURE, suggestedLength - 2 * EEXEC_SIGNATURE.length);\n\n if (block.found && block.length === suggestedLength) {\n return {\n stream: new _stream.Stream(headerBytes),\n length: suggestedLength\n };\n }\n }\n\n (0, _util.warn)('Invalid \"Length1\" property in Type1 font -- trying to recover.');\n stream.pos = streamStartPos;\n var SCAN_BLOCK_LENGTH = 2048;\n var actualLength;\n\n while (true) {\n var scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\n block = findBlock(scanBytes, EEXEC_SIGNATURE, 0);\n\n if (block.length === 0) {\n break;\n }\n\n stream.pos += block.length;\n\n if (block.found) {\n actualLength = stream.pos - streamStartPos;\n break;\n }\n }\n\n stream.pos = streamStartPos;\n\n if (actualLength) {\n return {\n stream: new _stream.Stream(stream.getBytes(actualLength)),\n length: actualLength\n };\n }\n\n (0, _util.warn)('Unable to recover \"Length1\" property in Type1 font -- using as is.');\n return {\n stream: new _stream.Stream(stream.getBytes(suggestedLength)),\n length: suggestedLength\n };\n }\n\n function getEexecBlock(stream, suggestedLength) {\n var eexecBytes = stream.getBytes();\n return {\n stream: new _stream.Stream(eexecBytes),\n length: eexecBytes.length\n };\n }\n\n function Type1Font(name, file, properties) {\n var PFB_HEADER_SIZE = 6;\n var headerBlockLength = properties.length1;\n var eexecBlockLength = properties.length2;\n var pfbHeader = file.peekBytes(PFB_HEADER_SIZE);\n var pfbHeaderPresent = pfbHeader[0] === 0x80 && pfbHeader[1] === 0x01;\n\n if (pfbHeaderPresent) {\n file.skip(PFB_HEADER_SIZE);\n headerBlockLength = pfbHeader[5] << 24 | pfbHeader[4] << 16 | pfbHeader[3] << 8 | pfbHeader[2];\n }\n\n var headerBlock = getHeaderBlock(file, headerBlockLength);\n var headerBlockParser = new _type1_parser.Type1Parser(headerBlock.stream, false, SEAC_ANALYSIS_ENABLED);\n headerBlockParser.extractFontHeader(properties);\n\n if (pfbHeaderPresent) {\n pfbHeader = file.getBytes(PFB_HEADER_SIZE);\n eexecBlockLength = pfbHeader[5] << 24 | pfbHeader[4] << 16 | pfbHeader[3] << 8 | pfbHeader[2];\n }\n\n var eexecBlock = getEexecBlock(file, eexecBlockLength);\n var eexecBlockParser = new _type1_parser.Type1Parser(eexecBlock.stream, true, SEAC_ANALYSIS_ENABLED);\n var data = eexecBlockParser.extractFontProgram(properties);\n\n for (var key in data.properties) {\n properties[key] = data.properties[key];\n }\n\n var charstrings = data.charstrings;\n var type2Charstrings = this.getType2Charstrings(charstrings);\n var subrs = this.getType2Subrs(data.subrs);\n this.charstrings = charstrings;\n this.data = this.wrap(name, type2Charstrings, this.charstrings, subrs, properties);\n this.seacs = this.getSeacs(data.charstrings);\n }\n\n Type1Font.prototype = {\n get numGlyphs() {\n return this.charstrings.length + 1;\n },\n\n getCharset: function Type1Font_getCharset() {\n var charset = [\".notdef\"];\n var charstrings = this.charstrings;\n\n for (var glyphId = 0; glyphId < charstrings.length; glyphId++) {\n charset.push(charstrings[glyphId].glyphName);\n }\n\n return charset;\n },\n getGlyphMapping: function Type1Font_getGlyphMapping(properties) {\n var charstrings = this.charstrings;\n\n if (properties.composite) {\n var charCodeToGlyphId = Object.create(null);\n\n for (var _glyphId = 0, charstringsLen = charstrings.length; _glyphId < charstringsLen; _glyphId++) {\n var _charCode5 = properties.cMap.charCodeOf(_glyphId);\n\n charCodeToGlyphId[_charCode5] = _glyphId + 1;\n }\n\n return charCodeToGlyphId;\n }\n\n var glyphNames = [\".notdef\"],\n glyphId;\n\n for (glyphId = 0; glyphId < charstrings.length; glyphId++) {\n glyphNames.push(charstrings[glyphId].glyphName);\n }\n\n var encoding = properties.builtInEncoding;\n\n if (encoding) {\n var builtInEncoding = Object.create(null);\n\n for (var charCode in encoding) {\n glyphId = glyphNames.indexOf(encoding[charCode]);\n\n if (glyphId >= 0) {\n builtInEncoding[charCode] = glyphId;\n }\n }\n }\n\n return type1FontGlyphMapping(properties, builtInEncoding, glyphNames);\n },\n hasGlyphId: function Type1Font_hasGlyphID(id) {\n if (id < 0 || id >= this.numGlyphs) {\n return false;\n }\n\n if (id === 0) {\n return true;\n }\n\n var glyph = this.charstrings[id - 1];\n return glyph.charstring.length > 0;\n },\n getSeacs: function Type1Font_getSeacs(charstrings) {\n var i, ii;\n var seacMap = [];\n\n for (i = 0, ii = charstrings.length; i < ii; i++) {\n var charstring = charstrings[i];\n\n if (charstring.seac) {\n seacMap[i + 1] = charstring.seac;\n }\n }\n\n return seacMap;\n },\n getType2Charstrings: function Type1Font_getType2Charstrings(type1Charstrings) {\n var type2Charstrings = [];\n\n for (var i = 0, ii = type1Charstrings.length; i < ii; i++) {\n type2Charstrings.push(type1Charstrings[i].charstring);\n }\n\n return type2Charstrings;\n },\n getType2Subrs: function Type1Font_getType2Subrs(type1Subrs) {\n var bias = 0;\n var count = type1Subrs.length;\n\n if (count < 1133) {\n bias = 107;\n } else if (count < 33769) {\n bias = 1131;\n } else {\n bias = 32768;\n }\n\n var type2Subrs = [];\n var i;\n\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 wrap: function Type1Font_wrap(name, glyphs, charstrings, subrs, properties) {\n var cff = new _cff_parser.CFF();\n cff.header = new _cff_parser.CFFHeader(1, 0, 4, 4);\n cff.names = [name];\n var topDict = new _cff_parser.CFFTopDict();\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);\n topDict.setByName(\"FontMatrix\", properties.fontMatrix);\n topDict.setByName(\"FontBBox\", properties.bbox);\n topDict.setByName(\"charset\", null);\n topDict.setByName(\"CharStrings\", null);\n topDict.setByName(\"Private\", null);\n cff.topDict = topDict;\n var strings = new _cff_parser.CFFStrings();\n strings.add(\"Version 0.11\");\n strings.add(\"See original notice\");\n strings.add(name);\n strings.add(name);\n strings.add(\"Medium\");\n cff.strings = strings;\n cff.globalSubrIndex = new _cff_parser.CFFIndex();\n var count = glyphs.length;\n var charsetArray = [\".notdef\"];\n var i, ii;\n\n for (i = 0; i < count; i++) {\n var glyphName = charstrings[i].glyphName;\n\n var index = _cff_parser.CFFStandardStrings.indexOf(glyphName);\n\n if (index === -1) {\n strings.add(glyphName);\n }\n\n charsetArray.push(glyphName);\n }\n\n cff.charset = new _cff_parser.CFFCharset(false, 0, charsetArray);\n var charStringsIndex = new _cff_parser.CFFIndex();\n charStringsIndex.add([0x8b, 0x0e]);\n\n for (i = 0; i < count; i++) {\n charStringsIndex.add(glyphs[i]);\n }\n\n cff.charStrings = charStringsIndex;\n var privateDict = new _cff_parser.CFFPrivateDict();\n privateDict.setByName(\"Subrs\", null);\n var fields = [\"BlueValues\", \"OtherBlues\", \"FamilyBlues\", \"FamilyOtherBlues\", \"StemSnapH\", \"StemSnapV\", \"BlueShift\", \"BlueFuzz\", \"BlueScale\", \"LanguageGroup\", \"ExpansionFactor\", \"ForceBold\", \"StdHW\", \"StdVW\"];\n\n for (i = 0, ii = fields.length; i < ii; i++) {\n var field = fields[i];\n\n if (!(field in properties.privateData)) {\n continue;\n }\n\n var value = properties.privateData[field];\n\n if (Array.isArray(value)) {\n for (var j = value.length - 1; j > 0; j--) {\n value[j] -= value[j - 1];\n }\n }\n\n privateDict.setByName(field, value);\n }\n\n cff.topDict.privateDict = privateDict;\n var subrIndex = new _cff_parser.CFFIndex();\n\n for (i = 0, ii = subrs.length; i < ii; i++) {\n subrIndex.add(subrs[i]);\n }\n\n privateDict.subrsIndex = subrIndex;\n var compiler = new _cff_parser.CFFCompiler(cff);\n return compiler.compile();\n }\n };\n return Type1Font;\n}();\n\nvar CFFFont = function CFFFontClosure() {\n function CFFFont(file, properties) {\n this.properties = properties;\n var parser = new _cff_parser.CFFParser(file, properties, SEAC_ANALYSIS_ENABLED);\n this.cff = parser.parse();\n this.cff.duplicateFirstGlyph();\n var compiler = new _cff_parser.CFFCompiler(this.cff);\n this.seacs = this.cff.seacs;\n\n try {\n this.data = compiler.compile();\n } catch (e) {\n (0, _util.warn)(\"Failed to compile font \" + properties.loadedName);\n this.data = file;\n }\n }\n\n CFFFont.prototype = {\n get numGlyphs() {\n return this.cff.charStrings.count;\n },\n\n getCharset: function CFFFont_getCharset() {\n return this.cff.charset.charset;\n },\n getGlyphMapping: function CFFFont_getGlyphMapping() {\n var cff = this.cff;\n var properties = this.properties;\n var charsets = cff.charset.charset;\n var charCodeToGlyphId;\n var glyphId;\n\n if (properties.composite) {\n charCodeToGlyphId = Object.create(null);\n var charCode;\n\n if (cff.isCIDFont) {\n for (glyphId = 0; glyphId < charsets.length; glyphId++) {\n var cid = charsets[glyphId];\n charCode = properties.cMap.charCodeOf(cid);\n charCodeToGlyphId[charCode] = glyphId;\n }\n } else {\n for (glyphId = 0; glyphId < cff.charStrings.count; glyphId++) {\n charCode = properties.cMap.charCodeOf(glyphId);\n charCodeToGlyphId[charCode] = glyphId;\n }\n }\n\n return charCodeToGlyphId;\n }\n\n var encoding = cff.encoding ? cff.encoding.encoding : null;\n charCodeToGlyphId = type1FontGlyphMapping(properties, encoding, charsets);\n return charCodeToGlyphId;\n },\n hasGlyphId: function CFFFont_hasGlyphID(id) {\n return this.cff.hasGlyphId(id);\n }\n };\n return CFFFont;\n}();\n\n/***/ }),\n/* 223 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CFFFDSelect = exports.CFFCompiler = exports.CFFPrivateDict = exports.CFFTopDict = exports.CFFCharset = exports.CFFIndex = exports.CFFStrings = exports.CFFHeader = exports.CFF = exports.CFFParser = exports.CFFStandardStrings = void 0;\n\nvar _util = __w_pdfjs_require__(5);\n\nvar _charsets = __w_pdfjs_require__(224);\n\nvar _encodings = __w_pdfjs_require__(225);\n\nvar MAX_SUBR_NESTING = 10;\nvar CFFStandardStrings = [\".notdef\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"exclamdown\", \"cent\", \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\", \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"endash\", \"dagger\", \"daggerdbl\", \"periodcentered\", \"paragraph\", \"bullet\", \"quotesinglbase\", \"quotedblbase\", \"quotedblright\", \"guillemotright\", \"ellipsis\", \"perthousand\", \"questiondown\", \"grave\", \"acute\", \"circumflex\", \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"AE\", \"ordfeminine\", \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"ae\", \"dotlessi\", \"lslash\", \"oslash\", \"oe\", \"germandbls\", \"onesuperior\", \"logicalnot\", \"mu\", \"trademark\", \"Eth\", \"onehalf\", \"plusminus\", \"Thorn\", \"onequarter\", \"divide\", \"brokenbar\", \"degree\", \"thorn\", \"threequarters\", \"twosuperior\", \"registered\", \"minus\", \"eth\", \"multiply\", \"threesuperior\", \"copyright\", \"Aacute\", \"Acircumflex\", \"Adieresis\", \"Agrave\", \"Aring\", \"Atilde\", \"Ccedilla\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Egrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Ntilde\", \"Oacute\", \"Ocircumflex\", \"Odieresis\", \"Ograve\", \"Otilde\", \"Scaron\", \"Uacute\", \"Ucircumflex\", \"Udieresis\", \"Ugrave\", \"Yacute\", \"Ydieresis\", \"Zcaron\", \"aacute\", \"acircumflex\", \"adieresis\", \"agrave\", \"aring\", \"atilde\", \"ccedilla\", \"eacute\", \"ecircumflex\", \"edieresis\", \"egrave\", \"iacute\", \"icircumflex\", \"idieresis\", \"igrave\", \"ntilde\", \"oacute\", \"ocircumflex\", \"odieresis\", \"ograve\", \"otilde\", \"scaron\", \"uacute\", \"ucircumflex\", \"udieresis\", \"ugrave\", \"yacute\", \"ydieresis\", \"zcaron\", \"exclamsmall\", \"Hungarumlautsmall\", \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"commasuperior\", \"threequartersemdash\", \"periodsuperior\", \"questionsmall\", \"asuperior\", \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\", \"tsuperior\", \"ff\", \"ffi\", \"ffl\", \"parenleftinferior\", \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\", \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\", \"Tildesmall\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\", \"Caronsmall\", \"Dotaccentsmall\", \"Macronsmall\", \"figuredash\", \"hypheninferior\", \"Ogoneksmall\", \"Ringsmall\", \"Cedillasmall\", \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\", \"periodinferior\", \"commainferior\", \"Agravesmall\", \"Aacutesmall\", \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\", \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\", \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\", \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\", \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\", \"Ydieresissmall\", \"001.000\", \"001.001\", \"001.002\", \"001.003\", \"Black\", \"Bold\", \"Book\", \"Light\", \"Medium\", \"Regular\", \"Roman\", \"Semibold\"];\nexports.CFFStandardStrings = CFFStandardStrings;\nvar NUM_STANDARD_CFF_STRINGS = 391;\n\nvar CFFParser = function CFFParserClosure() {\n var CharstringValidationData = [null, {\n id: \"hstem\",\n min: 2,\n stackClearing: true,\n stem: true\n }, null, {\n id: \"vstem\",\n min: 2,\n stackClearing: true,\n stem: true\n }, {\n id: \"vmoveto\",\n min: 1,\n stackClearing: true\n }, {\n id: \"rlineto\",\n min: 2,\n resetStack: true\n }, {\n id: \"hlineto\",\n min: 1,\n resetStack: true\n }, {\n id: \"vlineto\",\n min: 1,\n resetStack: true\n }, {\n id: \"rrcurveto\",\n min: 6,\n resetStack: true\n }, null, {\n id: \"callsubr\",\n min: 1,\n undefStack: true\n }, {\n id: \"return\",\n min: 0,\n undefStack: true\n }, null, null, {\n id: \"endchar\",\n min: 0,\n stackClearing: true\n }, null, null, null, {\n id: \"hstemhm\",\n min: 2,\n stackClearing: true,\n stem: true\n }, {\n id: \"hintmask\",\n min: 0,\n stackClearing: true\n }, {\n id: \"cntrmask\",\n min: 0,\n stackClearing: true\n }, {\n id: \"rmoveto\",\n min: 2,\n stackClearing: true\n }, {\n id: \"hmoveto\",\n min: 1,\n stackClearing: true\n }, {\n id: \"vstemhm\",\n min: 2,\n stackClearing: true,\n stem: true\n }, {\n id: \"rcurveline\",\n min: 8,\n resetStack: true\n }, {\n id: \"rlinecurve\",\n min: 8,\n resetStack: true\n }, {\n id: \"vvcurveto\",\n min: 4,\n resetStack: true\n }, {\n id: \"hhcurveto\",\n min: 4,\n resetStack: true\n }, null, {\n id: \"callgsubr\",\n min: 1,\n undefStack: true\n }, {\n id: \"vhcurveto\",\n min: 4,\n resetStack: true\n }, {\n id: \"hvcurveto\",\n min: 4,\n resetStack: true\n }];\n var CharstringValidationData12 = [null, null, null, {\n id: \"and\",\n min: 2,\n stackDelta: -1\n }, {\n id: \"or\",\n min: 2,\n stackDelta: -1\n }, {\n id: \"not\",\n min: 1,\n stackDelta: 0\n }, null, null, null, {\n id: \"abs\",\n min: 1,\n 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 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 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 }, null, {\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\",\n min: 2,\n stackDelta: -1\n }, null, null, {\n id: \"drop\",\n min: 1,\n stackDelta: -1\n }, null, {\n id: \"put\",\n min: 2,\n stackDelta: -2\n }, {\n id: \"get\",\n min: 1,\n stackDelta: 0\n }, {\n id: \"ifelse\",\n min: 4,\n stackDelta: -3\n }, {\n id: \"random\",\n min: 0,\n 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 }, null, {\n id: \"sqrt\",\n min: 1,\n stackDelta: 0\n }, {\n id: \"dup\",\n min: 1,\n stackDelta: 1\n }, {\n id: \"exch\",\n min: 2,\n stackDelta: 0\n }, {\n id: \"index\",\n min: 2,\n stackDelta: 0\n }, {\n id: \"roll\",\n min: 3,\n stackDelta: -2\n }, null, null, null, {\n id: \"hflex\",\n min: 7,\n resetStack: true\n }, {\n id: \"flex\",\n min: 13,\n resetStack: true\n }, {\n id: \"hflex1\",\n min: 9,\n resetStack: true\n }, {\n id: \"flex1\",\n min: 11,\n resetStack: true\n }];\n\n function CFFParser(file, properties, seacAnalysisEnabled) {\n this.bytes = file.getBytes();\n this.properties = properties;\n this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n }\n\n CFFParser.prototype = {\n parse: function CFFParser_parse() {\n var properties = this.properties;\n var cff = new CFF();\n this.cff = cff;\n var header = this.parseHeader();\n var nameIndex = this.parseIndex(header.endPos);\n var topDictIndex = this.parseIndex(nameIndex.endPos);\n var stringIndex = this.parseIndex(topDictIndex.endPos);\n var globalSubrIndex = this.parseIndex(stringIndex.endPos);\n var topDictParsed = this.parseDict(topDictIndex.obj.get(0));\n var topDict = this.createDict(CFFTopDict, topDictParsed, cff.strings);\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 this.parsePrivateDict(cff.topDict);\n cff.isCIDFont = topDict.hasName(\"ROS\");\n var charStringOffset = topDict.getByName(\"CharStrings\");\n var charStringIndex = this.parseIndex(charStringOffset).obj;\n var fontMatrix = topDict.getByName(\"FontMatrix\");\n\n if (fontMatrix) {\n properties.fontMatrix = fontMatrix;\n }\n\n var fontBBox = topDict.getByName(\"FontBBox\");\n\n if (fontBBox) {\n properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n properties.ascentScaled = true;\n }\n\n var charset, encoding;\n\n if (cff.isCIDFont) {\n var fdArrayIndex = this.parseIndex(topDict.getByName(\"FDArray\")).obj;\n\n for (var i = 0, ii = fdArrayIndex.count; i < ii; ++i) {\n var dictRaw = fdArrayIndex.get(i);\n var fontDict = this.createDict(CFFTopDict, this.parseDict(dictRaw), cff.strings);\n this.parsePrivateDict(fontDict);\n cff.fdArray.push(fontDict);\n }\n\n encoding = null;\n charset = this.parseCharsets(topDict.getByName(\"charset\"), charStringIndex.count, cff.strings, true);\n cff.fdSelect = this.parseFDSelect(topDict.getByName(\"FDSelect\"), charStringIndex.count);\n } else {\n charset = this.parseCharsets(topDict.getByName(\"charset\"), charStringIndex.count, cff.strings, false);\n encoding = this.parseEncoding(topDict.getByName(\"Encoding\"), properties, cff.strings, charset.charset);\n }\n\n cff.charset = charset;\n cff.encoding = encoding;\n var charStringsAndSeacs = this.parseCharStrings({\n charStrings: charStringIndex,\n localSubrIndex: topDict.privateDict.subrsIndex,\n globalSubrIndex: globalSubrIndex.obj,\n fdSelect: cff.fdSelect,\n fdArray: cff.fdArray,\n privateDict: topDict.privateDict\n });\n cff.charStrings = charStringsAndSeacs.charStrings;\n cff.seacs = charStringsAndSeacs.seacs;\n cff.widths = charStringsAndSeacs.widths;\n return cff;\n },\n parseHeader: function CFFParser_parseHeader() {\n var bytes = this.bytes;\n var bytesLength = bytes.length;\n var offset = 0;\n\n while (offset < bytesLength && bytes[offset] !== 1) {\n ++offset;\n }\n\n if (offset >= bytesLength) {\n throw new _util.FormatError(\"Invalid CFF header\");\n }\n\n if (offset !== 0) {\n (0, _util.info)(\"cff data is shifted\");\n bytes = bytes.subarray(offset);\n this.bytes = bytes;\n }\n\n var major = bytes[0];\n var minor = bytes[1];\n var hdrSize = bytes[2];\n var offSize = bytes[3];\n var header = new CFFHeader(major, minor, hdrSize, offSize);\n return {\n obj: header,\n endPos: hdrSize\n };\n },\n parseDict: function CFFParser_parseDict(dict) {\n var pos = 0;\n\n function parseOperand() {\n var value = dict[pos++];\n\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\n (0, _util.warn)('CFFParser_parseDict: \"' + value + '\" is a reserved command.');\n return NaN;\n }\n\n function parseFloatOperand() {\n var str = \"\";\n var eof = 15;\n var lookup = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \".\", \"E\", \"E-\", null, \"-\"];\n var length = dict.length;\n\n while (pos < length) {\n var b = dict[pos++];\n var b1 = b >> 4;\n var b2 = b & 15;\n\n if (b1 === eof) {\n break;\n }\n\n str += lookup[b1];\n\n if (b2 === eof) {\n break;\n }\n\n str += lookup[b2];\n }\n\n return parseFloat(str);\n }\n\n var operands = [];\n var entries = [];\n pos = 0;\n var end = dict.length;\n\n while (pos < end) {\n var b = dict[pos];\n\n if (b <= 21) {\n if (b === 12) {\n b = b << 8 | dict[++pos];\n }\n\n entries.push([b, operands]);\n operands = [];\n ++pos;\n } else {\n operands.push(parseOperand());\n }\n }\n\n return entries;\n },\n parseIndex: function CFFParser_parseIndex(pos) {\n var cffIndex = new CFFIndex();\n var bytes = this.bytes;\n var count = bytes[pos++] << 8 | bytes[pos++];\n var offsets = [];\n var end = pos;\n var i, ii;\n\n if (count !== 0) {\n var offsetSize = bytes[pos++];\n var startPos = pos + (count + 1) * offsetSize - 1;\n\n for (i = 0, ii = count + 1; i < ii; ++i) {\n var offset = 0;\n\n for (var j = 0; j < offsetSize; ++j) {\n offset <<= 8;\n offset += bytes[pos++];\n }\n\n offsets.push(startPos + offset);\n }\n\n end = offsets[count];\n }\n\n for (i = 0, ii = offsets.length - 1; i < ii; ++i) {\n var offsetStart = offsets[i];\n var offsetEnd = offsets[i + 1];\n cffIndex.add(bytes.subarray(offsetStart, offsetEnd));\n }\n\n return {\n obj: cffIndex,\n endPos: end\n };\n },\n parseNameIndex: function CFFParser_parseNameIndex(index) {\n var names = [];\n\n for (var i = 0, ii = index.count; i < ii; ++i) {\n var name = index.get(i);\n names.push((0, _util.bytesToString)(name));\n }\n\n return names;\n },\n parseStringIndex: function CFFParser_parseStringIndex(index) {\n var strings = new CFFStrings();\n\n for (var i = 0, ii = index.count; i < ii; ++i) {\n var data = index.get(i);\n strings.add((0, _util.bytesToString)(data));\n }\n\n return strings;\n },\n createDict: function CFFParser_createDict(Type, dict, strings) {\n var cffDict = new Type(strings);\n\n for (var i = 0, ii = dict.length; i < ii; ++i) {\n var pair = dict[i];\n var key = pair[0];\n var value = pair[1];\n cffDict.setByKey(key, value);\n }\n\n return cffDict;\n },\n parseCharString: function CFFParser_parseCharString(state, data, localSubrIndex, globalSubrIndex) {\n if (!data || state.callDepth > MAX_SUBR_NESTING) {\n return false;\n }\n\n var stackSize = state.stackSize;\n var stack = state.stack;\n var length = data.length;\n\n for (var j = 0; j < length;) {\n var value = data[j++];\n var validationCommand = null;\n\n if (value === 12) {\n var q = data[j++];\n\n if (q === 0) {\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 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\n if (this.seacAnalysisEnabled) {\n state.seac = stack.slice(stackSize, stackSize + 4);\n return false;\n }\n }\n\n validationCommand = CharstringValidationData[value];\n } else if (value >= 32 && value <= 246) {\n stack[stackSize] = value - 139;\n stackSize++;\n } else if (value >= 247 && value <= 254) {\n stack[stackSize] = value < 251 ? (value - 247 << 8) + data[j] + 108 : -(value - 251 << 8) - data[j] - 108;\n j++;\n stackSize++;\n } else if (value === 255) {\n stack[stackSize] = (data[j] << 24 | data[j + 1] << 16 | data[j + 2] << 8 | data[j + 3]) / 65536;\n j += 4;\n stackSize++;\n } else if (value === 19 || value === 20) {\n state.hints += stackSize >> 1;\n j += state.hints + 7 >> 3;\n stackSize %= 2;\n validationCommand = CharstringValidationData[value];\n } else if (value === 10 || value === 29) {\n var subrsIndex;\n\n if (value === 10) {\n subrsIndex = localSubrIndex;\n } else {\n subrsIndex = globalSubrIndex;\n }\n\n if (!subrsIndex) {\n validationCommand = CharstringValidationData[value];\n (0, _util.warn)(\"Missing subrsIndex for \" + validationCommand.id);\n return false;\n }\n\n var bias = 32768;\n\n if (subrsIndex.count < 1240) {\n bias = 107;\n } else if (subrsIndex.count < 33900) {\n bias = 1131;\n }\n\n var subrNumber = stack[--stackSize] + bias;\n\n if (subrNumber < 0 || subrNumber >= subrsIndex.count || isNaN(subrNumber)) {\n validationCommand = CharstringValidationData[value];\n (0, _util.warn)(\"Out of bounds subrIndex for \" + validationCommand.id);\n return false;\n }\n\n state.stackSize = stackSize;\n state.callDepth++;\n var valid = this.parseCharString(state, subrsIndex.get(subrNumber), localSubrIndex, globalSubrIndex);\n\n if (!valid) {\n return false;\n }\n\n state.callDepth--;\n stackSize = state.stackSize;\n continue;\n } else if (value === 11) {\n state.stackSize = stackSize;\n return true;\n } else {\n validationCommand = CharstringValidationData[value];\n }\n\n if (validationCommand) {\n if (validationCommand.stem) {\n state.hints += stackSize >> 1;\n\n if (value === 3 || value === 23) {\n state.hasVStems = true;\n } else if (state.hasVStems && (value === 1 || value === 18)) {\n (0, _util.warn)(\"CFF stem hints are in wrong order\");\n data[j - 1] = value === 1 ? 3 : 23;\n }\n }\n\n if (\"min\" in validationCommand) {\n if (!state.undefStack && stackSize < validationCommand.min) {\n (0, _util.warn)(\"Not enough parameters for \" + validationCommand.id + \"; actual: \" + stackSize + \", expected: \" + validationCommand.min);\n return false;\n }\n }\n\n if (state.firstStackClearing && validationCommand.stackClearing) {\n state.firstStackClearing = false;\n stackSize -= validationCommand.min;\n\n if (stackSize >= 2 && validationCommand.stem) {\n stackSize %= 2;\n } else if (stackSize > 1) {\n (0, _util.warn)(\"Found too many parameters for stack-clearing command\");\n }\n\n if (stackSize > 0 && stack[stackSize - 1] >= 0) {\n state.width = stack[stackSize - 1];\n }\n }\n\n if (\"stackDelta\" in validationCommand) {\n if (\"stackFn\" in validationCommand) {\n validationCommand.stackFn(stack, stackSize);\n }\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\n state.stackSize = stackSize;\n return true;\n },\n parseCharStrings: function parseCharStrings(_ref) {\n var charStrings = _ref.charStrings,\n localSubrIndex = _ref.localSubrIndex,\n globalSubrIndex = _ref.globalSubrIndex,\n fdSelect = _ref.fdSelect,\n fdArray = _ref.fdArray,\n privateDict = _ref.privateDict;\n var seacs = [];\n var widths = [];\n var count = charStrings.count;\n\n for (var i = 0; i < count; i++) {\n var charstring = charStrings.get(i);\n var state = {\n callDepth: 0,\n stackSize: 0,\n stack: [],\n undefStack: true,\n hints: 0,\n firstStackClearing: true,\n seac: null,\n width: null,\n hasVStems: false\n };\n var valid = true;\n var localSubrToUse = null;\n var privateDictToUse = privateDict;\n\n if (fdSelect && fdArray.length) {\n var fdIndex = fdSelect.getFDIndex(i);\n\n if (fdIndex === -1) {\n (0, _util.warn)(\"Glyph index is not in fd select.\");\n valid = false;\n }\n\n if (fdIndex >= fdArray.length) {\n (0, _util.warn)(\"Invalid fd index for glyph index.\");\n valid = false;\n }\n\n if (valid) {\n privateDictToUse = fdArray[fdIndex].privateDict;\n localSubrToUse = privateDictToUse.subrsIndex;\n }\n } else if (localSubrIndex) {\n localSubrToUse = localSubrIndex;\n }\n\n if (valid) {\n valid = this.parseCharString(state, charstring, localSubrToUse, globalSubrIndex);\n }\n\n if (state.width !== null) {\n var nominalWidth = privateDictToUse.getByName(\"nominalWidthX\");\n widths[i] = nominalWidth + state.width;\n } else {\n var defaultWidth = privateDictToUse.getByName(\"defaultWidthX\");\n widths[i] = defaultWidth;\n }\n\n if (state.seac !== null) {\n seacs[i] = state.seac;\n }\n\n if (!valid) {\n charStrings.set(i, new Uint8Array([14]));\n }\n }\n\n return {\n charStrings: charStrings,\n seacs: seacs,\n widths: widths\n };\n },\n emptyPrivateDictionary: function CFFParser_emptyPrivateDictionary(parentDict) {\n var privateDict = this.createDict(CFFPrivateDict, [], parentDict.strings);\n parentDict.setByKey(18, [0, 0]);\n parentDict.privateDict = privateDict;\n },\n parsePrivateDict: function CFFParser_parsePrivateDict(parentDict) {\n if (!parentDict.hasName(\"Private\")) {\n this.emptyPrivateDictionary(parentDict);\n return;\n }\n\n var privateOffset = parentDict.getByName(\"Private\");\n\n if (!Array.isArray(privateOffset) || privateOffset.length !== 2) {\n parentDict.removeByName(\"Private\");\n return;\n }\n\n var size = privateOffset[0];\n var offset = privateOffset[1];\n\n if (size === 0 || offset >= this.bytes.length) {\n this.emptyPrivateDictionary(parentDict);\n return;\n }\n\n var privateDictEnd = offset + size;\n var dictData = this.bytes.subarray(offset, privateDictEnd);\n var dict = this.parseDict(dictData);\n var privateDict = this.createDict(CFFPrivateDict, dict, parentDict.strings);\n parentDict.privateDict = privateDict;\n\n if (!privateDict.getByName(\"Subrs\")) {\n return;\n }\n\n var subrsOffset = privateDict.getByName(\"Subrs\");\n var relativeOffset = offset + subrsOffset;\n\n if (subrsOffset === 0 || relativeOffset >= this.bytes.length) {\n this.emptyPrivateDictionary(parentDict);\n return;\n }\n\n var subrsIndex = this.parseIndex(relativeOffset);\n privateDict.subrsIndex = subrsIndex.obj;\n },\n parseCharsets: function CFFParser_parseCharsets(pos, length, strings, cid) {\n if (pos === 0) {\n return new CFFCharset(true, CFFCharsetPredefinedTypes.ISO_ADOBE, _charsets.ISOAdobeCharset);\n } else if (pos === 1) {\n return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT, _charsets.ExpertCharset);\n } else if (pos === 2) {\n return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT_SUBSET, _charsets.ExpertSubsetCharset);\n }\n\n var bytes = this.bytes;\n var start = pos;\n var format = bytes[pos++];\n var charset = [cid ? 0 : \".notdef\"];\n var id, count, i;\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\n break;\n\n case 1:\n while (charset.length <= length) {\n id = bytes[pos++] << 8 | bytes[pos++];\n count = bytes[pos++];\n\n for (i = 0; i <= count; i++) {\n charset.push(cid ? id++ : strings.get(id++));\n }\n }\n\n break;\n\n case 2:\n while (charset.length <= length) {\n id = bytes[pos++] << 8 | bytes[pos++];\n count = bytes[pos++] << 8 | bytes[pos++];\n\n for (i = 0; i <= count; i++) {\n charset.push(cid ? id++ : strings.get(id++));\n }\n }\n\n break;\n\n default:\n throw new _util.FormatError(\"Unknown charset format\");\n }\n\n var end = pos;\n var raw = bytes.subarray(start, end);\n return new CFFCharset(false, format, charset, raw);\n },\n parseEncoding: function CFFParser_parseEncoding(pos, properties, strings, charset) {\n var encoding = Object.create(null);\n var bytes = this.bytes;\n var predefined = false;\n var format, i, ii;\n var raw = null;\n\n function readSupplement() {\n var supplementsCount = bytes[pos++];\n\n for (i = 0; i < supplementsCount; i++) {\n var code = bytes[pos++];\n var sid = (bytes[pos++] << 8) + (bytes[pos++] & 0xff);\n encoding[code] = charset.indexOf(strings.get(sid));\n }\n }\n\n if (pos === 0 || pos === 1) {\n predefined = true;\n format = pos;\n var baseEncoding = pos ? _encodings.ExpertEncoding : _encodings.StandardEncoding;\n\n for (i = 0, ii = charset.length; i < ii; i++) {\n var index = baseEncoding.indexOf(charset[i]);\n\n if (index !== -1) {\n encoding[index] = i;\n }\n }\n } else {\n var dataStart = pos;\n format = bytes[pos++];\n\n switch (format & 0x7f) {\n case 0:\n var glyphsCount = bytes[pos++];\n\n for (i = 1; i <= glyphsCount; i++) {\n encoding[bytes[pos++]] = i;\n }\n\n break;\n\n case 1:\n var rangesCount = bytes[pos++];\n var gid = 1;\n\n for (i = 0; i < rangesCount; i++) {\n var start = bytes[pos++];\n var left = bytes[pos++];\n\n for (var j = start; j <= start + left; j++) {\n encoding[j] = gid++;\n }\n }\n\n break;\n\n default:\n throw new _util.FormatError(\"Unknown encoding format: \".concat(format, \" in CFF\"));\n }\n\n var dataEnd = pos;\n\n if (format & 0x80) {\n bytes[dataStart] &= 0x7f;\n readSupplement();\n }\n\n raw = bytes.subarray(dataStart, dataEnd);\n }\n\n format = format & 0x7f;\n return new CFFEncoding(predefined, format, encoding, raw);\n },\n parseFDSelect: function CFFParser_parseFDSelect(pos, length) {\n var bytes = this.bytes;\n var format = bytes[pos++];\n var fdSelect = [];\n var i;\n\n switch (format) {\n case 0:\n for (i = 0; i < length; ++i) {\n var id = bytes[pos++];\n fdSelect.push(id);\n }\n\n break;\n\n case 3:\n var rangesCount = bytes[pos++] << 8 | bytes[pos++];\n\n for (i = 0; i < rangesCount; ++i) {\n var first = bytes[pos++] << 8 | bytes[pos++];\n\n if (i === 0 && first !== 0) {\n (0, _util.warn)(\"parseFDSelect: The first range must have a first GID of 0\" + \" -- trying to recover.\");\n first = 0;\n }\n\n var fdIndex = bytes[pos++];\n var next = bytes[pos] << 8 | bytes[pos + 1];\n\n for (var j = first; j < next; ++j) {\n fdSelect.push(fdIndex);\n }\n }\n\n pos += 2;\n break;\n\n default:\n throw new _util.FormatError(\"parseFDSelect: Unknown format \\\"\".concat(format, \"\\\".\"));\n }\n\n if (fdSelect.length !== length) {\n throw new _util.FormatError(\"parseFDSelect: Invalid font data.\");\n }\n\n return new CFFFDSelect(format, fdSelect);\n }\n };\n return CFFParser;\n}();\n\nexports.CFFParser = CFFParser;\n\nvar CFF = function CFFClosure() {\n function CFF() {\n this.header = null;\n this.names = [];\n this.topDict = null;\n this.strings = new CFFStrings();\n this.globalSubrIndex = null;\n this.encoding = null;\n this.charset = null;\n this.charStrings = null;\n this.fdArray = [];\n this.fdSelect = null;\n this.isCIDFont = false;\n }\n\n CFF.prototype = {\n duplicateFirstGlyph: function CFF_duplicateFirstGlyph() {\n if (this.charStrings.count >= 65535) {\n (0, _util.warn)(\"Not enough space in charstrings to duplicate first glyph.\");\n return;\n }\n\n var glyphZero = this.charStrings.get(0);\n this.charStrings.add(glyphZero);\n\n if (this.isCIDFont) {\n this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0]);\n }\n },\n hasGlyphId: function CFF_hasGlyphID(id) {\n if (id < 0 || id >= this.charStrings.count) {\n return false;\n }\n\n var glyph = this.charStrings.get(id);\n return glyph.length > 0;\n }\n };\n return CFF;\n}();\n\nexports.CFF = CFF;\n\nvar CFFHeader = function CFFHeaderClosure() {\n function CFFHeader(major, minor, hdrSize, offSize) {\n this.major = major;\n this.minor = minor;\n this.hdrSize = hdrSize;\n this.offSize = offSize;\n }\n\n return CFFHeader;\n}();\n\nexports.CFFHeader = CFFHeader;\n\nvar CFFStrings = function CFFStringsClosure() {\n function CFFStrings() {\n this.strings = [];\n }\n\n CFFStrings.prototype = {\n get: function CFFStrings_get(index) {\n if (index >= 0 && index <= NUM_STANDARD_CFF_STRINGS - 1) {\n return CFFStandardStrings[index];\n }\n\n if (index - NUM_STANDARD_CFF_STRINGS <= this.strings.length) {\n return this.strings[index - NUM_STANDARD_CFF_STRINGS];\n }\n\n return CFFStandardStrings[0];\n },\n getSID: function CFFStrings_getSID(str) {\n var index = CFFStandardStrings.indexOf(str);\n\n if (index !== -1) {\n return index;\n }\n\n index = this.strings.indexOf(str);\n\n if (index !== -1) {\n return index + NUM_STANDARD_CFF_STRINGS;\n }\n\n return -1;\n },\n add: function CFFStrings_add(value) {\n this.strings.push(value);\n },\n\n get count() {\n return this.strings.length;\n }\n\n };\n return CFFStrings;\n}();\n\nexports.CFFStrings = CFFStrings;\n\nvar CFFIndex = function CFFIndexClosure() {\n function CFFIndex() {\n this.objects = [];\n this.length = 0;\n }\n\n CFFIndex.prototype = {\n add: function CFFIndex_add(data) {\n this.length += data.length;\n this.objects.push(data);\n },\n set: function CFFIndex_set(index, data) {\n this.length += data.length - this.objects[index].length;\n this.objects[index] = data;\n },\n get: function CFFIndex_get(index) {\n return this.objects[index];\n },\n\n get count() {\n return this.objects.length;\n }\n\n };\n return CFFIndex;\n}();\n\nexports.CFFIndex = CFFIndex;\n\nvar CFFDict = function CFFDictClosure() {\n function CFFDict(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 CFFDict.prototype = {\n setByKey: function CFFDict_setByKey(key, value) {\n if (!(key in this.keyToNameMap)) {\n return false;\n }\n\n var valueLength = value.length;\n\n if (valueLength === 0) {\n return true;\n }\n\n for (var i = 0; i < valueLength; i++) {\n if (isNaN(value[i])) {\n (0, _util.warn)('Invalid CFFDict value: \"' + value + '\" for key \"' + key + '\".');\n return true;\n }\n }\n\n var type = this.types[key];\n\n if (type === \"num\" || type === \"sid\" || type === \"offset\") {\n value = value[0];\n }\n\n this.values[key] = value;\n return true;\n },\n setByName: function CFFDict_setByName(name, value) {\n if (!(name in this.nameToKeyMap)) {\n throw new _util.FormatError(\"Invalid dictionary name \\\"\".concat(name, \"\\\"\"));\n }\n\n this.values[this.nameToKeyMap[name]] = value;\n },\n hasName: function CFFDict_hasName(name) {\n return this.nameToKeyMap[name] in this.values;\n },\n getByName: function CFFDict_getByName(name) {\n if (!(name in this.nameToKeyMap)) {\n throw new _util.FormatError(\"Invalid dictionary name \".concat(name, \"\\\"\"));\n }\n\n var key = this.nameToKeyMap[name];\n\n if (!(key in this.values)) {\n return this.defaults[key];\n }\n\n return this.values[key];\n },\n removeByName: function CFFDict_removeByName(name) {\n delete this.values[this.nameToKeyMap[name]];\n }\n };\n\n CFFDict.createTables = function CFFDict_createTables(layout) {\n var tables = {\n keyToNameMap: {},\n nameToKeyMap: {},\n defaults: {},\n types: {},\n opcodes: {},\n order: []\n };\n\n for (var i = 0, ii = layout.length; i < ii; ++i) {\n var entry = layout[i];\n var key = Array.isArray(entry[0]) ? (entry[0][0] << 8) + entry[0][1] : 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\n return tables;\n };\n\n return CFFDict;\n}();\n\nvar CFFTopDict = function CFFTopDictClosure() {\n var layout = [[[12, 30], \"ROS\", [\"sid\", \"sid\", \"num\"], null], [[12, 20], \"SyntheticBase\", \"num\", null], [0, \"version\", \"sid\", null], [1, \"Notice\", \"sid\", null], [[12, 0], \"Copyright\", \"sid\", null], [2, \"FullName\", \"sid\", null], [3, \"FamilyName\", \"sid\", null], [4, \"Weight\", \"sid\", null], [[12, 1], \"isFixedPitch\", \"num\", 0], [[12, 2], \"ItalicAngle\", \"num\", 0], [[12, 3], \"UnderlinePosition\", \"num\", -100], [[12, 4], \"UnderlineThickness\", \"num\", 50], [[12, 5], \"PaintType\", \"num\", 0], [[12, 6], \"CharstringType\", \"num\", 2], [[12, 7], \"FontMatrix\", [\"num\", \"num\", \"num\", \"num\", \"num\", \"num\"], [0.001, 0, 0, 0.001, 0, 0]], [13, \"UniqueID\", \"num\", null], [5, \"FontBBox\", [\"num\", \"num\", \"num\", \"num\"], [0, 0, 0, 0]], [[12, 8], \"StrokeWidth\", \"num\", 0], [14, \"XUID\", \"array\", null], [15, \"charset\", \"offset\", 0], [16, \"Encoding\", \"offset\", 0], [17, \"CharStrings\", \"offset\", 0], [18, \"Private\", [\"offset\", \"offset\"], null], [[12, 21], \"PostScript\", \"sid\", null], [[12, 22], \"BaseFontName\", \"sid\", null], [[12, 23], \"BaseFontBlend\", \"delta\", null], [[12, 31], \"CIDFontVersion\", \"num\", 0], [[12, 32], \"CIDFontRevision\", \"num\", 0], [[12, 33], \"CIDFontType\", \"num\", 0], [[12, 34], \"CIDCount\", \"num\", 8720], [[12, 35], \"UIDBase\", \"num\", null], [[12, 37], \"FDSelect\", \"offset\", null], [[12, 36], \"FDArray\", \"offset\", null], [[12, 38], \"FontName\", \"sid\", null]];\n var tables = null;\n\n function CFFTopDict(strings) {\n if (tables === null) {\n tables = CFFDict.createTables(layout);\n }\n\n CFFDict.call(this, tables, strings);\n this.privateDict = null;\n }\n\n CFFTopDict.prototype = Object.create(CFFDict.prototype);\n return CFFTopDict;\n}();\n\nexports.CFFTopDict = CFFTopDict;\n\nvar CFFPrivateDict = function CFFPrivateDictClosure() {\n var layout = [[6, \"BlueValues\", \"delta\", null], [7, \"OtherBlues\", \"delta\", null], [8, \"FamilyBlues\", \"delta\", null], [9, \"FamilyOtherBlues\", \"delta\", null], [[12, 9], \"BlueScale\", \"num\", 0.039625], [[12, 10], \"BlueShift\", \"num\", 7], [[12, 11], \"BlueFuzz\", \"num\", 1], [10, \"StdHW\", \"num\", null], [11, \"StdVW\", \"num\", null], [[12, 12], \"StemSnapH\", \"delta\", null], [[12, 13], \"StemSnapV\", \"delta\", null], [[12, 14], \"ForceBold\", \"num\", 0], [[12, 17], \"LanguageGroup\", \"num\", 0], [[12, 18], \"ExpansionFactor\", \"num\", 0.06], [[12, 19], \"initialRandomSeed\", \"num\", 0], [20, \"defaultWidthX\", \"num\", 0], [21, \"nominalWidthX\", \"num\", 0], [19, \"Subrs\", \"offset\", null]];\n var tables = null;\n\n function CFFPrivateDict(strings) {\n if (tables === null) {\n tables = CFFDict.createTables(layout);\n }\n\n CFFDict.call(this, tables, strings);\n this.subrsIndex = null;\n }\n\n CFFPrivateDict.prototype = Object.create(CFFDict.prototype);\n return CFFPrivateDict;\n}();\n\nexports.CFFPrivateDict = CFFPrivateDict;\nvar CFFCharsetPredefinedTypes = {\n ISO_ADOBE: 0,\n EXPERT: 1,\n EXPERT_SUBSET: 2\n};\n\nvar CFFCharset = function CFFCharsetClosure() {\n function CFFCharset(predefined, format, charset, raw) {\n this.predefined = predefined;\n this.format = format;\n this.charset = charset;\n this.raw = raw;\n }\n\n return CFFCharset;\n}();\n\nexports.CFFCharset = CFFCharset;\n\nvar CFFEncoding = function CFFEncodingClosure() {\n function CFFEncoding(predefined, format, encoding, raw) {\n this.predefined = predefined;\n this.format = format;\n this.encoding = encoding;\n this.raw = raw;\n }\n\n return CFFEncoding;\n}();\n\nvar CFFFDSelect = function CFFFDSelectClosure() {\n function CFFFDSelect(format, fdSelect) {\n this.format = format;\n this.fdSelect = fdSelect;\n }\n\n CFFFDSelect.prototype = {\n getFDIndex: function CFFFDSelect_get(glyphIndex) {\n if (glyphIndex < 0 || glyphIndex >= this.fdSelect.length) {\n return -1;\n }\n\n return this.fdSelect[glyphIndex];\n }\n };\n return CFFFDSelect;\n}();\n\nexports.CFFFDSelect = CFFFDSelect;\n\nvar CFFOffsetTracker = function CFFOffsetTrackerClosure() {\n function CFFOffsetTracker() {\n this.offsets = Object.create(null);\n }\n\n CFFOffsetTracker.prototype = {\n isTracking: function CFFOffsetTracker_isTracking(key) {\n return key in this.offsets;\n },\n track: function CFFOffsetTracker_track(key, location) {\n if (key in this.offsets) {\n throw new _util.FormatError(\"Already tracking location of \".concat(key));\n }\n\n this.offsets[key] = location;\n },\n offset: function CFFOffsetTracker_offset(value) {\n for (var key in this.offsets) {\n this.offsets[key] += value;\n }\n },\n setEntryLocation: function CFFOffsetTracker_setEntryLocation(key, values, output) {\n if (!(key in this.offsets)) {\n throw new _util.FormatError(\"Not tracking location of \".concat(key));\n }\n\n var data = output.data;\n var dataOffset = this.offsets[key];\n var size = 5;\n\n for (var i = 0, ii = values.length; i < ii; ++i) {\n var offset0 = i * size + dataOffset;\n var offset1 = offset0 + 1;\n var offset2 = offset0 + 2;\n var offset3 = offset0 + 3;\n var offset4 = offset0 + 4;\n\n if (data[offset0] !== 0x1d || data[offset1] !== 0 || data[offset2] !== 0 || data[offset3] !== 0 || data[offset4] !== 0) {\n throw new _util.FormatError(\"writing to an offset that is not empty\");\n }\n\n var value = values[i];\n data[offset0] = 0x1d;\n data[offset1] = value >> 24 & 0xff;\n data[offset2] = value >> 16 & 0xff;\n data[offset3] = value >> 8 & 0xff;\n data[offset4] = value & 0xff;\n }\n }\n };\n return CFFOffsetTracker;\n}();\n\nvar CFFCompiler = function CFFCompilerClosure() {\n function CFFCompiler(cff) {\n this.cff = cff;\n }\n\n CFFCompiler.prototype = {\n compile: function CFFCompiler_compile() {\n var cff = this.cff;\n var output = {\n data: [],\n length: 0,\n add: function CFFCompiler_add(data) {\n this.data = this.data.concat(data);\n this.length = this.data.length;\n }\n };\n var header = this.compileHeader(cff.header);\n output.add(header);\n var nameIndex = this.compileNameIndex(cff.names);\n output.add(nameIndex);\n\n if (cff.isCIDFont) {\n if (cff.topDict.hasName(\"FontMatrix\")) {\n var base = cff.topDict.getByName(\"FontMatrix\");\n cff.topDict.removeByName(\"FontMatrix\");\n\n for (var i = 0, ii = cff.fdArray.length; i < ii; i++) {\n var subDict = cff.fdArray[i];\n var matrix = base.slice(0);\n\n if (subDict.hasName(\"FontMatrix\")) {\n matrix = _util.Util.transform(matrix, subDict.getByName(\"FontMatrix\"));\n }\n\n subDict.setByName(\"FontMatrix\", matrix);\n }\n }\n }\n\n cff.topDict.setByName(\"charset\", 0);\n var compiled = this.compileTopDicts([cff.topDict], output.length, cff.isCIDFont);\n output.add(compiled.output);\n var topDictTracker = compiled.trackers[0];\n var stringIndex = this.compileStringIndex(cff.strings.strings);\n output.add(stringIndex);\n var globalSubrIndex = this.compileIndex(cff.globalSubrIndex);\n output.add(globalSubrIndex);\n\n if (cff.encoding && cff.topDict.hasName(\"Encoding\")) {\n if (cff.encoding.predefined) {\n topDictTracker.setEntryLocation(\"Encoding\", [cff.encoding.format], output);\n } else {\n var encoding = this.compileEncoding(cff.encoding);\n topDictTracker.setEntryLocation(\"Encoding\", [output.length], output);\n output.add(encoding);\n }\n }\n\n var charset = this.compileCharset(cff.charset, cff.charStrings.count, cff.strings, cff.isCIDFont);\n topDictTracker.setEntryLocation(\"charset\", [output.length], output);\n output.add(charset);\n var charStrings = this.compileCharStrings(cff.charStrings);\n topDictTracker.setEntryLocation(\"CharStrings\", [output.length], output);\n output.add(charStrings);\n\n if (cff.isCIDFont) {\n topDictTracker.setEntryLocation(\"FDSelect\", [output.length], output);\n var fdSelect = this.compileFDSelect(cff.fdSelect);\n output.add(fdSelect);\n compiled = this.compileTopDicts(cff.fdArray, output.length, true);\n topDictTracker.setEntryLocation(\"FDArray\", [output.length], output);\n output.add(compiled.output);\n var fontDictTrackers = compiled.trackers;\n this.compilePrivateDicts(cff.fdArray, fontDictTrackers, output);\n }\n\n this.compilePrivateDicts([cff.topDict], [topDictTracker], output);\n output.add([0]);\n return output.data;\n },\n encodeNumber: function CFFCompiler_encodeNumber(value) {\n if (parseFloat(value) === parseInt(value, 10) && !isNaN(value)) {\n return this.encodeInteger(value);\n }\n\n return this.encodeFloat(value);\n },\n encodeFloat: function CFFCompiler_encodeFloat(num) {\n var value = num.toString();\n var m = /\\.(\\d*?)(?:9{5,20}|0{5,20})\\d{0,2}(?:e(.+)|$)/.exec(value);\n\n if (m) {\n var epsilon = parseFloat(\"1e\" + ((m[2] ? +m[2] : 0) + m[1].length));\n value = (Math.round(num * epsilon) / epsilon).toString();\n }\n\n var nibbles = \"\";\n var i, ii;\n\n for (i = 0, ii = value.length; i < ii; ++i) {\n var a = value[i];\n\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\n nibbles += nibbles.length & 1 ? \"f\" : \"ff\";\n var out = [30];\n\n for (i = 0, ii = nibbles.length; i < ii; i += 2) {\n out.push(parseInt(nibbles.substring(i, i + 2), 16));\n }\n\n return out;\n },\n encodeInteger: function CFFCompiler_encodeInteger(value) {\n var code;\n\n if (value >= -107 && value <= 107) {\n code = [value + 139];\n } else if (value >= 108 && value <= 1131) {\n value = value - 108;\n code = [(value >> 8) + 247, value & 0xff];\n } else if (value >= -1131 && value <= -108) {\n value = -value - 108;\n code = [(value >> 8) + 251, value & 0xff];\n } else if (value >= -32768 && value <= 32767) {\n code = [0x1c, value >> 8 & 0xff, value & 0xff];\n } else {\n code = [0x1d, value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff];\n }\n\n return code;\n },\n compileHeader: function CFFCompiler_compileHeader(header) {\n return [header.major, header.minor, header.hdrSize, header.offSize];\n },\n compileNameIndex: function CFFCompiler_compileNameIndex(names) {\n var nameIndex = new CFFIndex();\n\n for (var i = 0, ii = names.length; i < ii; ++i) {\n var name = names[i];\n var length = Math.min(name.length, 127);\n var sanitizedName = new Array(length);\n\n for (var j = 0; j < length; j++) {\n var _char = name[j];\n\n if (_char < \"!\" || _char > \"~\" || _char === \"[\" || _char === \"]\" || _char === \"(\" || _char === \")\" || _char === \"{\" || _char === \"}\" || _char === \"<\" || _char === \">\" || _char === \"/\" || _char === \"%\") {\n _char = \"_\";\n }\n\n sanitizedName[j] = _char;\n }\n\n sanitizedName = sanitizedName.join(\"\");\n\n if (sanitizedName === \"\") {\n sanitizedName = \"Bad_Font_Name\";\n }\n\n nameIndex.add((0, _util.stringToBytes)(sanitizedName));\n }\n\n return this.compileIndex(nameIndex);\n },\n compileTopDicts: function CFFCompiler_compileTopDicts(dicts, length, removeCidKeys) {\n var fontDictTrackers = [];\n var fdArrayIndex = new CFFIndex();\n\n for (var i = 0, ii = dicts.length; i < ii; ++i) {\n var fontDict = dicts[i];\n\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\n var fontDictTracker = new CFFOffsetTracker();\n var fontDictData = this.compileDict(fontDict, fontDictTracker);\n fontDictTrackers.push(fontDictTracker);\n fdArrayIndex.add(fontDictData);\n fontDictTracker.offset(length);\n }\n\n fdArrayIndex = this.compileIndex(fdArrayIndex, fontDictTrackers);\n return {\n trackers: fontDictTrackers,\n output: fdArrayIndex\n };\n },\n compilePrivateDicts: function CFFCompiler_compilePrivateDicts(dicts, trackers, output) {\n for (var i = 0, ii = dicts.length; i < ii; ++i) {\n var fontDict = dicts[i];\n var privateDict = fontDict.privateDict;\n\n if (!privateDict || !fontDict.hasName(\"Private\")) {\n throw new _util.FormatError(\"There must be a private dictionary.\");\n }\n\n var privateDictTracker = new CFFOffsetTracker();\n var privateDictData = this.compileDict(privateDict, privateDictTracker);\n var outputLength = output.length;\n privateDictTracker.offset(outputLength);\n\n if (!privateDictData.length) {\n outputLength = 0;\n }\n\n trackers[i].setEntryLocation(\"Private\", [privateDictData.length, outputLength], output);\n output.add(privateDictData);\n\n if (privateDict.subrsIndex && privateDict.hasName(\"Subrs\")) {\n var subrs = this.compileIndex(privateDict.subrsIndex);\n privateDictTracker.setEntryLocation(\"Subrs\", [privateDictData.length], output);\n output.add(subrs);\n }\n }\n },\n compileDict: function CFFCompiler_compileDict(dict, offsetTracker) {\n var out = [];\n var order = dict.order;\n\n for (var i = 0; i < order.length; ++i) {\n var key = order[i];\n\n if (!(key in dict.values)) {\n continue;\n }\n\n var values = dict.values[key];\n var types = dict.types[key];\n\n if (!Array.isArray(types)) {\n types = [types];\n }\n\n if (!Array.isArray(values)) {\n values = [values];\n }\n\n if (values.length === 0) {\n continue;\n }\n\n for (var j = 0, jj = types.length; j < jj; ++j) {\n var type = types[j];\n var value = values[j];\n\n switch (type) {\n case \"num\":\n case \"sid\":\n out = out.concat(this.encodeNumber(value));\n break;\n\n case \"offset\":\n var name = dict.keyToNameMap[key];\n\n if (!offsetTracker.isTracking(name)) {\n offsetTracker.track(name, out.length);\n }\n\n out = out.concat([0x1d, 0, 0, 0, 0]);\n break;\n\n case \"array\":\n case \"delta\":\n out = out.concat(this.encodeNumber(value));\n\n for (var k = 1, kk = values.length; k < kk; ++k) {\n out = out.concat(this.encodeNumber(values[k]));\n }\n\n break;\n\n default:\n throw new _util.FormatError(\"Unknown data type of \".concat(type));\n }\n }\n\n out = out.concat(dict.opcodes[key]);\n }\n\n return out;\n },\n compileStringIndex: function CFFCompiler_compileStringIndex(strings) {\n var stringIndex = new CFFIndex();\n\n for (var i = 0, ii = strings.length; i < ii; ++i) {\n stringIndex.add((0, _util.stringToBytes)(strings[i]));\n }\n\n return this.compileIndex(stringIndex);\n },\n compileGlobalSubrIndex: function CFFCompiler_compileGlobalSubrIndex() {\n var globalSubrIndex = this.cff.globalSubrIndex;\n this.out.writeByteArray(this.compileIndex(globalSubrIndex));\n },\n compileCharStrings: function CFFCompiler_compileCharStrings(charStrings) {\n var charStringsIndex = new CFFIndex();\n\n for (var i = 0; i < charStrings.count; i++) {\n var glyph = charStrings.get(i);\n\n if (glyph.length === 0) {\n charStringsIndex.add(new Uint8Array([0x8b, 0x0e]));\n continue;\n }\n\n charStringsIndex.add(glyph);\n }\n\n return this.compileIndex(charStringsIndex);\n },\n compileCharset: function CFFCompiler_compileCharset(charset, numGlyphs, strings, isCIDFont) {\n var out;\n var numGlyphsLessNotDef = numGlyphs - 1;\n\n if (isCIDFont) {\n out = new Uint8Array([2, 0, 0, numGlyphsLessNotDef >> 8 & 0xff, numGlyphsLessNotDef & 0xff]);\n } else {\n var length = 1 + numGlyphsLessNotDef * 2;\n out = new Uint8Array(length);\n out[0] = 0;\n var charsetIndex = 0;\n var numCharsets = charset.charset.length;\n var warned = false;\n\n for (var i = 1; i < out.length; i += 2) {\n var sid = 0;\n\n if (charsetIndex < numCharsets) {\n var name = charset.charset[charsetIndex++];\n sid = strings.getSID(name);\n\n if (sid === -1) {\n sid = 0;\n\n if (!warned) {\n warned = true;\n (0, _util.warn)(\"Couldn't find \".concat(name, \" in CFF strings\"));\n }\n }\n }\n\n out[i] = sid >> 8 & 0xff;\n out[i + 1] = sid & 0xff;\n }\n }\n\n return this.compileTypedArray(out);\n },\n compileEncoding: function CFFCompiler_compileEncoding(encoding) {\n return this.compileTypedArray(encoding.raw);\n },\n compileFDSelect: function CFFCompiler_compileFDSelect(fdSelect) {\n var format = fdSelect.format;\n var out, i;\n\n switch (format) {\n case 0:\n out = new Uint8Array(1 + fdSelect.fdSelect.length);\n out[0] = format;\n\n for (i = 0; i < fdSelect.fdSelect.length; i++) {\n out[i + 1] = fdSelect.fdSelect[i];\n }\n\n break;\n\n case 3:\n var start = 0;\n var lastFD = fdSelect.fdSelect[0];\n var ranges = [format, 0, 0, start >> 8 & 0xff, start & 0xff, lastFD];\n\n for (i = 1; i < fdSelect.fdSelect.length; i++) {\n var currentFD = fdSelect.fdSelect[i];\n\n if (currentFD !== lastFD) {\n ranges.push(i >> 8 & 0xff, i & 0xff, currentFD);\n lastFD = currentFD;\n }\n }\n\n var numRanges = (ranges.length - 3) / 3;\n ranges[1] = numRanges >> 8 & 0xff;\n ranges[2] = numRanges & 0xff;\n ranges.push(i >> 8 & 0xff, i & 0xff);\n out = new Uint8Array(ranges);\n break;\n }\n\n return this.compileTypedArray(out);\n },\n compileTypedArray: function CFFCompiler_compileTypedArray(data) {\n var out = [];\n\n for (var i = 0, ii = data.length; i < ii; ++i) {\n out[i] = data[i];\n }\n\n return out;\n },\n compileIndex: function CFFCompiler_compileIndex(index, trackers) {\n trackers = trackers || [];\n var objects = index.objects;\n var count = objects.length;\n\n if (count === 0) {\n return [0, 0, 0];\n }\n\n var data = [count >> 8 & 0xff, count & 0xff];\n var lastOffset = 1,\n i;\n\n for (i = 0; i < count; ++i) {\n lastOffset += objects[i].length;\n }\n\n var offsetSize;\n\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 data.push(offsetSize);\n var relativeOffset = 1;\n\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(relativeOffset >> 16 & 0xff, relativeOffset >> 8 & 0xff, relativeOffset & 0xff);\n } else {\n data.push(relativeOffset >>> 24 & 0xff, relativeOffset >> 16 & 0xff, relativeOffset >> 8 & 0xff, relativeOffset & 0xff);\n }\n\n if (objects[i]) {\n relativeOffset += objects[i].length;\n }\n }\n\n for (i = 0; i < count; i++) {\n if (trackers[i]) {\n trackers[i].offset(data.length);\n }\n\n for (var j = 0, jj = objects[i].length; j < jj; j++) {\n data.push(objects[i][j]);\n }\n }\n\n return data;\n }\n };\n return CFFCompiler;\n}();\n\nexports.CFFCompiler = CFFCompiler;\n\n/***/ }),\n/* 224 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ExpertSubsetCharset = exports.ExpertCharset = exports.ISOAdobeCharset = void 0;\nvar ISOAdobeCharset = [\".notdef\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"exclamdown\", \"cent\", \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\", \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"endash\", \"dagger\", \"daggerdbl\", \"periodcentered\", \"paragraph\", \"bullet\", \"quotesinglbase\", \"quotedblbase\", \"quotedblright\", \"guillemotright\", \"ellipsis\", \"perthousand\", \"questiondown\", \"grave\", \"acute\", \"circumflex\", \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"AE\", \"ordfeminine\", \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"ae\", \"dotlessi\", \"lslash\", \"oslash\", \"oe\", \"germandbls\", \"onesuperior\", \"logicalnot\", \"mu\", \"trademark\", \"Eth\", \"onehalf\", \"plusminus\", \"Thorn\", \"onequarter\", \"divide\", \"brokenbar\", \"degree\", \"thorn\", \"threequarters\", \"twosuperior\", \"registered\", \"minus\", \"eth\", \"multiply\", \"threesuperior\", \"copyright\", \"Aacute\", \"Acircumflex\", \"Adieresis\", \"Agrave\", \"Aring\", \"Atilde\", \"Ccedilla\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Egrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Ntilde\", \"Oacute\", \"Ocircumflex\", \"Odieresis\", \"Ograve\", \"Otilde\", \"Scaron\", \"Uacute\", \"Ucircumflex\", \"Udieresis\", \"Ugrave\", \"Yacute\", \"Ydieresis\", \"Zcaron\", \"aacute\", \"acircumflex\", \"adieresis\", \"agrave\", \"aring\", \"atilde\", \"ccedilla\", \"eacute\", \"ecircumflex\", \"edieresis\", \"egrave\", \"iacute\", \"icircumflex\", \"idieresis\", \"igrave\", \"ntilde\", \"oacute\", \"ocircumflex\", \"odieresis\", \"ograve\", \"otilde\", \"scaron\", \"uacute\", \"ucircumflex\", \"udieresis\", \"ugrave\", \"yacute\", \"ydieresis\", \"zcaron\"];\nexports.ISOAdobeCharset = ISOAdobeCharset;\nvar ExpertCharset = [\".notdef\", \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"colon\", \"semicolon\", \"commasuperior\", \"threequartersemdash\", \"periodsuperior\", \"questionsmall\", \"asuperior\", \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\", \"tsuperior\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\", \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\", \"Tildesmall\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\", \"Caronsmall\", \"Dotaccentsmall\", \"Macronsmall\", \"figuredash\", \"hypheninferior\", \"Ogoneksmall\", \"Ringsmall\", \"Cedillasmall\", \"onequarter\", \"onehalf\", \"threequarters\", \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"onesuperior\", \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\", \"periodinferior\", \"commainferior\", \"Agravesmall\", \"Aacutesmall\", \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\", \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\", \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\", \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\", \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\", \"Ydieresissmall\"];\nexports.ExpertCharset = ExpertCharset;\nvar ExpertSubsetCharset = [\".notdef\", \"space\", \"dollaroldstyle\", \"dollarsuperior\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"colon\", \"semicolon\", \"commasuperior\", \"threequartersemdash\", \"periodsuperior\", \"asuperior\", \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\", \"tsuperior\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"parenrightinferior\", \"hyphensuperior\", \"colonmonetary\", \"onefitted\", \"rupiah\", \"centoldstyle\", \"figuredash\", \"hypheninferior\", \"onequarter\", \"onehalf\", \"threequarters\", \"oneeighth\", \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"onesuperior\", \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\", \"periodinferior\", \"commainferior\"];\nexports.ExpertSubsetCharset = ExpertSubsetCharset;\n\n/***/ }),\n/* 225 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getEncoding = getEncoding;\nexports.ExpertEncoding = exports.ZapfDingbatsEncoding = exports.SymbolSetEncoding = exports.MacRomanEncoding = exports.StandardEncoding = exports.WinAnsiEncoding = void 0;\nvar ExpertEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"\", \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"colon\", \"semicolon\", \"commasuperior\", \"threequartersemdash\", \"periodsuperior\", \"questionsmall\", \"\", \"asuperior\", \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"\", \"\", \"\", \"isuperior\", \"\", \"\", \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"\", \"\", \"rsuperior\", \"ssuperior\", \"tsuperior\", \"\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"\", \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\", \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\", \"Tildesmall\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\", \"\", \"\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\", \"Caronsmall\", \"\", \"Dotaccentsmall\", \"\", \"\", \"Macronsmall\", \"\", \"\", \"figuredash\", \"hypheninferior\", \"\", \"\", \"Ogoneksmall\", \"Ringsmall\", \"Cedillasmall\", \"\", \"\", \"\", \"onequarter\", \"onehalf\", \"threequarters\", \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\", \"\", \"\", \"zerosuperior\", \"onesuperior\", \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\", \"periodinferior\", \"commainferior\", \"Agravesmall\", \"Aacutesmall\", \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\", \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\", \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\", \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\", \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\", \"Ydieresissmall\"];\nexports.ExpertEncoding = ExpertEncoding;\nvar MacExpertEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"centoldstyle\", \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"colon\", \"semicolon\", \"\", \"threequartersemdash\", \"\", \"questionsmall\", \"\", \"\", \"\", \"\", \"Ethsmall\", \"\", \"\", \"onequarter\", \"onehalf\", \"threequarters\", \"oneeighth\", \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\", \"\", \"\", \"\", \"\", \"\", \"\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"\", \"parenrightinferior\", \"Circumflexsmall\", \"hypheninferior\", \"Gravesmall\", \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\", \"Tildesmall\", \"\", \"\", \"asuperior\", \"centsuperior\", \"\", \"\", \"\", \"\", \"Aacutesmall\", \"Agravesmall\", \"Acircumflexsmall\", \"Adieresissmall\", \"Atildesmall\", \"Aringsmall\", \"Ccedillasmall\", \"Eacutesmall\", \"Egravesmall\", \"Ecircumflexsmall\", \"Edieresissmall\", \"Iacutesmall\", \"Igravesmall\", \"Icircumflexsmall\", \"Idieresissmall\", \"Ntildesmall\", \"Oacutesmall\", \"Ogravesmall\", \"Ocircumflexsmall\", \"Odieresissmall\", \"Otildesmall\", \"Uacutesmall\", \"Ugravesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"\", \"eightsuperior\", \"fourinferior\", \"threeinferior\", \"sixinferior\", \"eightinferior\", \"seveninferior\", \"Scaronsmall\", \"\", \"centinferior\", \"twoinferior\", \"\", \"Dieresissmall\", \"\", \"Caronsmall\", \"osuperior\", \"fiveinferior\", \"\", \"commainferior\", \"periodinferior\", \"Yacutesmall\", \"\", \"dollarinferior\", \"\", \"\", \"Thornsmall\", \"\", \"nineinferior\", \"zeroinferior\", \"Zcaronsmall\", \"AEsmall\", \"Oslashsmall\", \"questiondownsmall\", \"oneinferior\", \"Lslashsmall\", \"\", \"\", \"\", \"\", \"\", \"\", \"Cedillasmall\", \"\", \"\", \"\", \"\", \"\", \"OEsmall\", \"figuredash\", \"hyphensuperior\", \"\", \"\", \"\", \"\", \"exclamdownsmall\", \"\", \"Ydieresissmall\", \"\", \"onesuperior\", \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"ninesuperior\", \"zerosuperior\", \"\", \"esuperior\", \"rsuperior\", \"tsuperior\", \"\", \"\", \"isuperior\", \"ssuperior\", \"dsuperior\", \"\", \"\", \"\", \"\", \"\", \"lsuperior\", \"Ogoneksmall\", \"Brevesmall\", \"Macronsmall\", \"bsuperior\", \"nsuperior\", \"msuperior\", \"commasuperior\", \"periodsuperior\", \"Dotaccentsmall\", \"Ringsmall\", \"\", \"\", \"\", \"\"];\nvar MacRomanEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quotesingle\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"\", \"Adieresis\", \"Aring\", \"Ccedilla\", \"Eacute\", \"Ntilde\", \"Odieresis\", \"Udieresis\", \"aacute\", \"agrave\", \"acircumflex\", \"adieresis\", \"atilde\", \"aring\", \"ccedilla\", \"eacute\", \"egrave\", \"ecircumflex\", \"edieresis\", \"iacute\", \"igrave\", \"icircumflex\", \"idieresis\", \"ntilde\", \"oacute\", \"ograve\", \"ocircumflex\", \"odieresis\", \"otilde\", \"uacute\", \"ugrave\", \"ucircumflex\", \"udieresis\", \"dagger\", \"degree\", \"cent\", \"sterling\", \"section\", \"bullet\", \"paragraph\", \"germandbls\", \"registered\", \"copyright\", \"trademark\", \"acute\", \"dieresis\", \"notequal\", \"AE\", \"Oslash\", \"infinity\", \"plusminus\", \"lessequal\", \"greaterequal\", \"yen\", \"mu\", \"partialdiff\", \"summation\", \"product\", \"pi\", \"integral\", \"ordfeminine\", \"ordmasculine\", \"Omega\", \"ae\", \"oslash\", \"questiondown\", \"exclamdown\", \"logicalnot\", \"radical\", \"florin\", \"approxequal\", \"Delta\", \"guillemotleft\", \"guillemotright\", \"ellipsis\", \"space\", \"Agrave\", \"Atilde\", \"Otilde\", \"OE\", \"oe\", \"endash\", \"emdash\", \"quotedblleft\", \"quotedblright\", \"quoteleft\", \"quoteright\", \"divide\", \"lozenge\", \"ydieresis\", \"Ydieresis\", \"fraction\", \"currency\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"daggerdbl\", \"periodcentered\", \"quotesinglbase\", \"quotedblbase\", \"perthousand\", \"Acircumflex\", \"Ecircumflex\", \"Aacute\", \"Edieresis\", \"Egrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Oacute\", \"Ocircumflex\", \"apple\", \"Ograve\", \"Uacute\", \"Ucircumflex\", \"Ugrave\", \"dotlessi\", \"circumflex\", \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\"];\nexports.MacRomanEncoding = MacRomanEncoding;\nvar StandardEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"exclamdown\", \"cent\", \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\", \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"\", \"endash\", \"dagger\", \"daggerdbl\", \"periodcentered\", \"\", \"paragraph\", \"bullet\", \"quotesinglbase\", \"quotedblbase\", \"quotedblright\", \"guillemotright\", \"ellipsis\", \"perthousand\", \"\", \"questiondown\", \"\", \"grave\", \"acute\", \"circumflex\", \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"\", \"ring\", \"cedilla\", \"\", \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"AE\", \"\", \"ordfeminine\", \"\", \"\", \"\", \"\", \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"\", \"\", \"\", \"\", \"\", \"ae\", \"\", \"\", \"\", \"dotlessi\", \"\", \"\", \"lslash\", \"oslash\", \"oe\", \"germandbls\", \"\", \"\", \"\", \"\"];\nexports.StandardEncoding = StandardEncoding;\nvar WinAnsiEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quotesingle\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"bullet\", \"Euro\", \"bullet\", \"quotesinglbase\", \"florin\", \"quotedblbase\", \"ellipsis\", \"dagger\", \"daggerdbl\", \"circumflex\", \"perthousand\", \"Scaron\", \"guilsinglleft\", \"OE\", \"bullet\", \"Zcaron\", \"bullet\", \"bullet\", \"quoteleft\", \"quoteright\", \"quotedblleft\", \"quotedblright\", \"bullet\", \"endash\", \"emdash\", \"tilde\", \"trademark\", \"scaron\", \"guilsinglright\", \"oe\", \"bullet\", \"zcaron\", \"Ydieresis\", \"space\", \"exclamdown\", \"cent\", \"sterling\", \"currency\", \"yen\", \"brokenbar\", \"section\", \"dieresis\", \"copyright\", \"ordfeminine\", \"guillemotleft\", \"logicalnot\", \"hyphen\", \"registered\", \"macron\", \"degree\", \"plusminus\", \"twosuperior\", \"threesuperior\", \"acute\", \"mu\", \"paragraph\", \"periodcentered\", \"cedilla\", \"onesuperior\", \"ordmasculine\", \"guillemotright\", \"onequarter\", \"onehalf\", \"threequarters\", \"questiondown\", \"Agrave\", \"Aacute\", \"Acircumflex\", \"Atilde\", \"Adieresis\", \"Aring\", \"AE\", \"Ccedilla\", \"Egrave\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Igrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Eth\", \"Ntilde\", \"Ograve\", \"Oacute\", \"Ocircumflex\", \"Otilde\", \"Odieresis\", \"multiply\", \"Oslash\", \"Ugrave\", \"Uacute\", \"Ucircumflex\", \"Udieresis\", \"Yacute\", \"Thorn\", \"germandbls\", \"agrave\", \"aacute\", \"acircumflex\", \"atilde\", \"adieresis\", \"aring\", \"ae\", \"ccedilla\", \"egrave\", \"eacute\", \"ecircumflex\", \"edieresis\", \"igrave\", \"iacute\", \"icircumflex\", \"idieresis\", \"eth\", \"ntilde\", \"ograve\", \"oacute\", \"ocircumflex\", \"otilde\", \"odieresis\", \"divide\", \"oslash\", \"ugrave\", \"uacute\", \"ucircumflex\", \"udieresis\", \"yacute\", \"thorn\", \"ydieresis\"];\nexports.WinAnsiEncoding = WinAnsiEncoding;\nvar SymbolSetEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"space\", \"exclam\", \"universal\", \"numbersign\", \"existential\", \"percent\", \"ampersand\", \"suchthat\", \"parenleft\", \"parenright\", \"asteriskmath\", \"plus\", \"comma\", \"minus\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"congruent\", \"Alpha\", \"Beta\", \"Chi\", \"Delta\", \"Epsilon\", \"Phi\", \"Gamma\", \"Eta\", \"Iota\", \"theta1\", \"Kappa\", \"Lambda\", \"Mu\", \"Nu\", \"Omicron\", \"Pi\", \"Theta\", \"Rho\", \"Sigma\", \"Tau\", \"Upsilon\", \"sigma1\", \"Omega\", \"Xi\", \"Psi\", \"Zeta\", \"bracketleft\", \"therefore\", \"bracketright\", \"perpendicular\", \"underscore\", \"radicalex\", \"alpha\", \"beta\", \"chi\", \"delta\", \"epsilon\", \"phi\", \"gamma\", \"eta\", \"iota\", \"phi1\", \"kappa\", \"lambda\", \"mu\", \"nu\", \"omicron\", \"pi\", \"theta\", \"rho\", \"sigma\", \"tau\", \"upsilon\", \"omega1\", \"omega\", \"xi\", \"psi\", \"zeta\", \"braceleft\", \"bar\", \"braceright\", \"similar\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"Euro\", \"Upsilon1\", \"minute\", \"lessequal\", \"fraction\", \"infinity\", \"florin\", \"club\", \"diamond\", \"heart\", \"spade\", \"arrowboth\", \"arrowleft\", \"arrowup\", \"arrowright\", \"arrowdown\", \"degree\", \"plusminus\", \"second\", \"greaterequal\", \"multiply\", \"proportional\", \"partialdiff\", \"bullet\", \"divide\", \"notequal\", \"equivalence\", \"approxequal\", \"ellipsis\", \"arrowvertex\", \"arrowhorizex\", \"carriagereturn\", \"aleph\", \"Ifraktur\", \"Rfraktur\", \"weierstrass\", \"circlemultiply\", \"circleplus\", \"emptyset\", \"intersection\", \"union\", \"propersuperset\", \"reflexsuperset\", \"notsubset\", \"propersubset\", \"reflexsubset\", \"element\", \"notelement\", \"angle\", \"gradient\", \"registerserif\", \"copyrightserif\", \"trademarkserif\", \"product\", \"radical\", \"dotmath\", \"logicalnot\", \"logicaland\", \"logicalor\", \"arrowdblboth\", \"arrowdblleft\", \"arrowdblup\", \"arrowdblright\", \"arrowdbldown\", \"lozenge\", \"angleleft\", \"registersans\", \"copyrightsans\", \"trademarksans\", \"summation\", \"parenlefttp\", \"parenleftex\", \"parenleftbt\", \"bracketlefttp\", \"bracketleftex\", \"bracketleftbt\", \"bracelefttp\", \"braceleftmid\", \"braceleftbt\", \"braceex\", \"\", \"angleright\", \"integral\", \"integraltp\", \"integralex\", \"integralbt\", \"parenrighttp\", \"parenrightex\", \"parenrightbt\", \"bracketrighttp\", \"bracketrightex\", \"bracketrightbt\", \"bracerighttp\", \"bracerightmid\", \"bracerightbt\", \"\"];\nexports.SymbolSetEncoding = SymbolSetEncoding;\nvar ZapfDingbatsEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"space\", \"a1\", \"a2\", \"a202\", \"a3\", \"a4\", \"a5\", \"a119\", \"a118\", \"a117\", \"a11\", \"a12\", \"a13\", \"a14\", \"a15\", \"a16\", \"a105\", \"a17\", \"a18\", \"a19\", \"a20\", \"a21\", \"a22\", \"a23\", \"a24\", \"a25\", \"a26\", \"a27\", \"a28\", \"a6\", \"a7\", \"a8\", \"a9\", \"a10\", \"a29\", \"a30\", \"a31\", \"a32\", \"a33\", \"a34\", \"a35\", \"a36\", \"a37\", \"a38\", \"a39\", \"a40\", \"a41\", \"a42\", \"a43\", \"a44\", \"a45\", \"a46\", \"a47\", \"a48\", \"a49\", \"a50\", \"a51\", \"a52\", \"a53\", \"a54\", \"a55\", \"a56\", \"a57\", \"a58\", \"a59\", \"a60\", \"a61\", \"a62\", \"a63\", \"a64\", \"a65\", \"a66\", \"a67\", \"a68\", \"a69\", \"a70\", \"a71\", \"a72\", \"a73\", \"a74\", \"a203\", \"a75\", \"a204\", \"a76\", \"a77\", \"a78\", \"a79\", \"a81\", \"a82\", \"a83\", \"a84\", \"a97\", \"a98\", \"a99\", \"a100\", \"\", \"a89\", \"a90\", \"a93\", \"a94\", \"a91\", \"a92\", \"a205\", \"a85\", \"a206\", \"a86\", \"a87\", \"a88\", \"a95\", \"a96\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"a101\", \"a102\", \"a103\", \"a104\", \"a106\", \"a107\", \"a108\", \"a112\", \"a111\", \"a110\", \"a109\", \"a120\", \"a121\", \"a122\", \"a123\", \"a124\", \"a125\", \"a126\", \"a127\", \"a128\", \"a129\", \"a130\", \"a131\", \"a132\", \"a133\", \"a134\", \"a135\", \"a136\", \"a137\", \"a138\", \"a139\", \"a140\", \"a141\", \"a142\", \"a143\", \"a144\", \"a145\", \"a146\", \"a147\", \"a148\", \"a149\", \"a150\", \"a151\", \"a152\", \"a153\", \"a154\", \"a155\", \"a156\", \"a157\", \"a158\", \"a159\", \"a160\", \"a161\", \"a163\", \"a164\", \"a196\", \"a165\", \"a192\", \"a166\", \"a167\", \"a168\", \"a169\", \"a170\", \"a171\", \"a172\", \"a173\", \"a162\", \"a174\", \"a175\", \"a176\", \"a177\", \"a178\", \"a179\", \"a193\", \"a180\", \"a199\", \"a181\", \"a200\", \"a182\", \"\", \"a201\", \"a183\", \"a184\", \"a197\", \"a185\", \"a194\", \"a198\", \"a186\", \"a195\", \"a187\", \"a188\", \"a189\", \"a190\", \"a191\", \"\"];\nexports.ZapfDingbatsEncoding = ZapfDingbatsEncoding;\n\nfunction getEncoding(encodingName) {\n switch (encodingName) {\n case \"WinAnsiEncoding\":\n return WinAnsiEncoding;\n\n case \"StandardEncoding\":\n return StandardEncoding;\n\n case \"MacRomanEncoding\":\n return MacRomanEncoding;\n\n case \"SymbolSetEncoding\":\n return SymbolSetEncoding;\n\n case \"ZapfDingbatsEncoding\":\n return ZapfDingbatsEncoding;\n\n case \"ExpertEncoding\":\n return ExpertEncoding;\n\n case \"MacExpertEncoding\":\n return MacExpertEncoding;\n\n default:\n return null;\n }\n}\n\n/***/ }),\n/* 226 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar getLookupTableFactory = __w_pdfjs_require__(201).getLookupTableFactory;\nvar getGlyphsUnicode = getLookupTableFactory(function (t) {\n t.A = 0x0041;\n t.AE = 0x00c6;\n t.AEacute = 0x01fc;\n t.AEmacron = 0x01e2;\n t.AEsmall = 0xf7e6;\n t.Aacute = 0x00c1;\n t.Aacutesmall = 0xf7e1;\n t.Abreve = 0x0102;\n t.Abreveacute = 0x1eae;\n t.Abrevecyrillic = 0x04d0;\n t.Abrevedotbelow = 0x1eb6;\n t.Abrevegrave = 0x1eb0;\n t.Abrevehookabove = 0x1eb2;\n t.Abrevetilde = 0x1eb4;\n t.Acaron = 0x01cd;\n t.Acircle = 0x24b6;\n t.Acircumflex = 0x00c2;\n t.Acircumflexacute = 0x1ea4;\n t.Acircumflexdotbelow = 0x1eac;\n t.Acircumflexgrave = 0x1ea6;\n t.Acircumflexhookabove = 0x1ea8;\n t.Acircumflexsmall = 0xf7e2;\n t.Acircumflextilde = 0x1eaa;\n t.Acute = 0xf6c9;\n t.Acutesmall = 0xf7b4;\n t.Acyrillic = 0x0410;\n t.Adblgrave = 0x0200;\n t.Adieresis = 0x00c4;\n t.Adieresiscyrillic = 0x04d2;\n t.Adieresismacron = 0x01de;\n t.Adieresissmall = 0xf7e4;\n t.Adotbelow = 0x1ea0;\n t.Adotmacron = 0x01e0;\n t.Agrave = 0x00c0;\n t.Agravesmall = 0xf7e0;\n t.Ahookabove = 0x1ea2;\n t.Aiecyrillic = 0x04d4;\n t.Ainvertedbreve = 0x0202;\n t.Alpha = 0x0391;\n t.Alphatonos = 0x0386;\n t.Amacron = 0x0100;\n t.Amonospace = 0xff21;\n t.Aogonek = 0x0104;\n t.Aring = 0x00c5;\n t.Aringacute = 0x01fa;\n t.Aringbelow = 0x1e00;\n t.Aringsmall = 0xf7e5;\n t.Asmall = 0xf761;\n t.Atilde = 0x00c3;\n t.Atildesmall = 0xf7e3;\n t.Aybarmenian = 0x0531;\n t.B = 0x0042;\n t.Bcircle = 0x24b7;\n t.Bdotaccent = 0x1e02;\n t.Bdotbelow = 0x1e04;\n t.Becyrillic = 0x0411;\n t.Benarmenian = 0x0532;\n t.Beta = 0x0392;\n t.Bhook = 0x0181;\n t.Blinebelow = 0x1e06;\n t.Bmonospace = 0xff22;\n t.Brevesmall = 0xf6f4;\n t.Bsmall = 0xf762;\n t.Btopbar = 0x0182;\n t.C = 0x0043;\n t.Caarmenian = 0x053e;\n t.Cacute = 0x0106;\n t.Caron = 0xf6ca;\n t.Caronsmall = 0xf6f5;\n t.Ccaron = 0x010c;\n t.Ccedilla = 0x00c7;\n t.Ccedillaacute = 0x1e08;\n t.Ccedillasmall = 0xf7e7;\n t.Ccircle = 0x24b8;\n t.Ccircumflex = 0x0108;\n t.Cdot = 0x010a;\n t.Cdotaccent = 0x010a;\n t.Cedillasmall = 0xf7b8;\n t.Chaarmenian = 0x0549;\n t.Cheabkhasiancyrillic = 0x04bc;\n t.Checyrillic = 0x0427;\n t.Chedescenderabkhasiancyrillic = 0x04be;\n t.Chedescendercyrillic = 0x04b6;\n t.Chedieresiscyrillic = 0x04f4;\n t.Cheharmenian = 0x0543;\n t.Chekhakassiancyrillic = 0x04cb;\n t.Cheverticalstrokecyrillic = 0x04b8;\n t.Chi = 0x03a7;\n t.Chook = 0x0187;\n t.Circumflexsmall = 0xf6f6;\n t.Cmonospace = 0xff23;\n t.Coarmenian = 0x0551;\n t.Csmall = 0xf763;\n t.D = 0x0044;\n t.DZ = 0x01f1;\n t.DZcaron = 0x01c4;\n t.Daarmenian = 0x0534;\n t.Dafrican = 0x0189;\n t.Dcaron = 0x010e;\n t.Dcedilla = 0x1e10;\n t.Dcircle = 0x24b9;\n t.Dcircumflexbelow = 0x1e12;\n t.Dcroat = 0x0110;\n t.Ddotaccent = 0x1e0a;\n t.Ddotbelow = 0x1e0c;\n t.Decyrillic = 0x0414;\n t.Deicoptic = 0x03ee;\n t.Delta = 0x2206;\n t.Deltagreek = 0x0394;\n t.Dhook = 0x018a;\n t.Dieresis = 0xf6cb;\n t.DieresisAcute = 0xf6cc;\n t.DieresisGrave = 0xf6cd;\n t.Dieresissmall = 0xf7a8;\n t.Digammagreek = 0x03dc;\n t.Djecyrillic = 0x0402;\n t.Dlinebelow = 0x1e0e;\n t.Dmonospace = 0xff24;\n t.Dotaccentsmall = 0xf6f7;\n t.Dslash = 0x0110;\n t.Dsmall = 0xf764;\n t.Dtopbar = 0x018b;\n t.Dz = 0x01f2;\n t.Dzcaron = 0x01c5;\n t.Dzeabkhasiancyrillic = 0x04e0;\n t.Dzecyrillic = 0x0405;\n t.Dzhecyrillic = 0x040f;\n t.E = 0x0045;\n t.Eacute = 0x00c9;\n t.Eacutesmall = 0xf7e9;\n t.Ebreve = 0x0114;\n t.Ecaron = 0x011a;\n t.Ecedillabreve = 0x1e1c;\n t.Echarmenian = 0x0535;\n t.Ecircle = 0x24ba;\n t.Ecircumflex = 0x00ca;\n t.Ecircumflexacute = 0x1ebe;\n t.Ecircumflexbelow = 0x1e18;\n t.Ecircumflexdotbelow = 0x1ec6;\n t.Ecircumflexgrave = 0x1ec0;\n t.Ecircumflexhookabove = 0x1ec2;\n t.Ecircumflexsmall = 0xf7ea;\n t.Ecircumflextilde = 0x1ec4;\n t.Ecyrillic = 0x0404;\n t.Edblgrave = 0x0204;\n t.Edieresis = 0x00cb;\n t.Edieresissmall = 0xf7eb;\n t.Edot = 0x0116;\n t.Edotaccent = 0x0116;\n t.Edotbelow = 0x1eb8;\n t.Efcyrillic = 0x0424;\n t.Egrave = 0x00c8;\n t.Egravesmall = 0xf7e8;\n t.Eharmenian = 0x0537;\n t.Ehookabove = 0x1eba;\n t.Eightroman = 0x2167;\n t.Einvertedbreve = 0x0206;\n t.Eiotifiedcyrillic = 0x0464;\n t.Elcyrillic = 0x041b;\n t.Elevenroman = 0x216a;\n t.Emacron = 0x0112;\n t.Emacronacute = 0x1e16;\n t.Emacrongrave = 0x1e14;\n t.Emcyrillic = 0x041c;\n t.Emonospace = 0xff25;\n t.Encyrillic = 0x041d;\n t.Endescendercyrillic = 0x04a2;\n t.Eng = 0x014a;\n t.Enghecyrillic = 0x04a4;\n t.Enhookcyrillic = 0x04c7;\n t.Eogonek = 0x0118;\n t.Eopen = 0x0190;\n t.Epsilon = 0x0395;\n t.Epsilontonos = 0x0388;\n t.Ercyrillic = 0x0420;\n t.Ereversed = 0x018e;\n t.Ereversedcyrillic = 0x042d;\n t.Escyrillic = 0x0421;\n t.Esdescendercyrillic = 0x04aa;\n t.Esh = 0x01a9;\n t.Esmall = 0xf765;\n t.Eta = 0x0397;\n t.Etarmenian = 0x0538;\n t.Etatonos = 0x0389;\n t.Eth = 0x00d0;\n t.Ethsmall = 0xf7f0;\n t.Etilde = 0x1ebc;\n t.Etildebelow = 0x1e1a;\n t.Euro = 0x20ac;\n t.Ezh = 0x01b7;\n t.Ezhcaron = 0x01ee;\n t.Ezhreversed = 0x01b8;\n t.F = 0x0046;\n t.Fcircle = 0x24bb;\n t.Fdotaccent = 0x1e1e;\n t.Feharmenian = 0x0556;\n t.Feicoptic = 0x03e4;\n t.Fhook = 0x0191;\n t.Fitacyrillic = 0x0472;\n t.Fiveroman = 0x2164;\n t.Fmonospace = 0xff26;\n t.Fourroman = 0x2163;\n t.Fsmall = 0xf766;\n t.G = 0x0047;\n t.GBsquare = 0x3387;\n t.Gacute = 0x01f4;\n t.Gamma = 0x0393;\n t.Gammaafrican = 0x0194;\n t.Gangiacoptic = 0x03ea;\n t.Gbreve = 0x011e;\n t.Gcaron = 0x01e6;\n t.Gcedilla = 0x0122;\n t.Gcircle = 0x24bc;\n t.Gcircumflex = 0x011c;\n t.Gcommaaccent = 0x0122;\n t.Gdot = 0x0120;\n t.Gdotaccent = 0x0120;\n t.Gecyrillic = 0x0413;\n t.Ghadarmenian = 0x0542;\n t.Ghemiddlehookcyrillic = 0x0494;\n t.Ghestrokecyrillic = 0x0492;\n t.Gheupturncyrillic = 0x0490;\n t.Ghook = 0x0193;\n t.Gimarmenian = 0x0533;\n t.Gjecyrillic = 0x0403;\n t.Gmacron = 0x1e20;\n t.Gmonospace = 0xff27;\n t.Grave = 0xf6ce;\n t.Gravesmall = 0xf760;\n t.Gsmall = 0xf767;\n t.Gsmallhook = 0x029b;\n t.Gstroke = 0x01e4;\n t.H = 0x0048;\n t.H18533 = 0x25cf;\n t.H18543 = 0x25aa;\n t.H18551 = 0x25ab;\n t.H22073 = 0x25a1;\n t.HPsquare = 0x33cb;\n t.Haabkhasiancyrillic = 0x04a8;\n t.Hadescendercyrillic = 0x04b2;\n t.Hardsigncyrillic = 0x042a;\n t.Hbar = 0x0126;\n t.Hbrevebelow = 0x1e2a;\n t.Hcedilla = 0x1e28;\n t.Hcircle = 0x24bd;\n t.Hcircumflex = 0x0124;\n t.Hdieresis = 0x1e26;\n t.Hdotaccent = 0x1e22;\n t.Hdotbelow = 0x1e24;\n t.Hmonospace = 0xff28;\n t.Hoarmenian = 0x0540;\n t.Horicoptic = 0x03e8;\n t.Hsmall = 0xf768;\n t.Hungarumlaut = 0xf6cf;\n t.Hungarumlautsmall = 0xf6f8;\n t.Hzsquare = 0x3390;\n t.I = 0x0049;\n t.IAcyrillic = 0x042f;\n t.IJ = 0x0132;\n t.IUcyrillic = 0x042e;\n t.Iacute = 0x00cd;\n t.Iacutesmall = 0xf7ed;\n t.Ibreve = 0x012c;\n t.Icaron = 0x01cf;\n t.Icircle = 0x24be;\n t.Icircumflex = 0x00ce;\n t.Icircumflexsmall = 0xf7ee;\n t.Icyrillic = 0x0406;\n t.Idblgrave = 0x0208;\n t.Idieresis = 0x00cf;\n t.Idieresisacute = 0x1e2e;\n t.Idieresiscyrillic = 0x04e4;\n t.Idieresissmall = 0xf7ef;\n t.Idot = 0x0130;\n t.Idotaccent = 0x0130;\n t.Idotbelow = 0x1eca;\n t.Iebrevecyrillic = 0x04d6;\n t.Iecyrillic = 0x0415;\n t.Ifraktur = 0x2111;\n t.Igrave = 0x00cc;\n t.Igravesmall = 0xf7ec;\n t.Ihookabove = 0x1ec8;\n t.Iicyrillic = 0x0418;\n t.Iinvertedbreve = 0x020a;\n t.Iishortcyrillic = 0x0419;\n t.Imacron = 0x012a;\n t.Imacroncyrillic = 0x04e2;\n t.Imonospace = 0xff29;\n t.Iniarmenian = 0x053b;\n t.Iocyrillic = 0x0401;\n t.Iogonek = 0x012e;\n t.Iota = 0x0399;\n t.Iotaafrican = 0x0196;\n t.Iotadieresis = 0x03aa;\n t.Iotatonos = 0x038a;\n t.Ismall = 0xf769;\n t.Istroke = 0x0197;\n t.Itilde = 0x0128;\n t.Itildebelow = 0x1e2c;\n t.Izhitsacyrillic = 0x0474;\n t.Izhitsadblgravecyrillic = 0x0476;\n t.J = 0x004a;\n t.Jaarmenian = 0x0541;\n t.Jcircle = 0x24bf;\n t.Jcircumflex = 0x0134;\n t.Jecyrillic = 0x0408;\n t.Jheharmenian = 0x054b;\n t.Jmonospace = 0xff2a;\n t.Jsmall = 0xf76a;\n t.K = 0x004b;\n t.KBsquare = 0x3385;\n t.KKsquare = 0x33cd;\n t.Kabashkircyrillic = 0x04a0;\n t.Kacute = 0x1e30;\n t.Kacyrillic = 0x041a;\n t.Kadescendercyrillic = 0x049a;\n t.Kahookcyrillic = 0x04c3;\n t.Kappa = 0x039a;\n t.Kastrokecyrillic = 0x049e;\n t.Kaverticalstrokecyrillic = 0x049c;\n t.Kcaron = 0x01e8;\n t.Kcedilla = 0x0136;\n t.Kcircle = 0x24c0;\n t.Kcommaaccent = 0x0136;\n t.Kdotbelow = 0x1e32;\n t.Keharmenian = 0x0554;\n t.Kenarmenian = 0x053f;\n t.Khacyrillic = 0x0425;\n t.Kheicoptic = 0x03e6;\n t.Khook = 0x0198;\n t.Kjecyrillic = 0x040c;\n t.Klinebelow = 0x1e34;\n t.Kmonospace = 0xff2b;\n t.Koppacyrillic = 0x0480;\n t.Koppagreek = 0x03de;\n t.Ksicyrillic = 0x046e;\n t.Ksmall = 0xf76b;\n t.L = 0x004c;\n t.LJ = 0x01c7;\n t.LL = 0xf6bf;\n t.Lacute = 0x0139;\n t.Lambda = 0x039b;\n t.Lcaron = 0x013d;\n t.Lcedilla = 0x013b;\n t.Lcircle = 0x24c1;\n t.Lcircumflexbelow = 0x1e3c;\n t.Lcommaaccent = 0x013b;\n t.Ldot = 0x013f;\n t.Ldotaccent = 0x013f;\n t.Ldotbelow = 0x1e36;\n t.Ldotbelowmacron = 0x1e38;\n t.Liwnarmenian = 0x053c;\n t.Lj = 0x01c8;\n t.Ljecyrillic = 0x0409;\n t.Llinebelow = 0x1e3a;\n t.Lmonospace = 0xff2c;\n t.Lslash = 0x0141;\n t.Lslashsmall = 0xf6f9;\n t.Lsmall = 0xf76c;\n t.M = 0x004d;\n t.MBsquare = 0x3386;\n t.Macron = 0xf6d0;\n t.Macronsmall = 0xf7af;\n t.Macute = 0x1e3e;\n t.Mcircle = 0x24c2;\n t.Mdotaccent = 0x1e40;\n t.Mdotbelow = 0x1e42;\n t.Menarmenian = 0x0544;\n t.Mmonospace = 0xff2d;\n t.Msmall = 0xf76d;\n t.Mturned = 0x019c;\n t.Mu = 0x039c;\n t.N = 0x004e;\n t.NJ = 0x01ca;\n t.Nacute = 0x0143;\n t.Ncaron = 0x0147;\n t.Ncedilla = 0x0145;\n t.Ncircle = 0x24c3;\n t.Ncircumflexbelow = 0x1e4a;\n t.Ncommaaccent = 0x0145;\n t.Ndotaccent = 0x1e44;\n t.Ndotbelow = 0x1e46;\n t.Nhookleft = 0x019d;\n t.Nineroman = 0x2168;\n t.Nj = 0x01cb;\n t.Njecyrillic = 0x040a;\n t.Nlinebelow = 0x1e48;\n t.Nmonospace = 0xff2e;\n t.Nowarmenian = 0x0546;\n t.Nsmall = 0xf76e;\n t.Ntilde = 0x00d1;\n t.Ntildesmall = 0xf7f1;\n t.Nu = 0x039d;\n t.O = 0x004f;\n t.OE = 0x0152;\n t.OEsmall = 0xf6fa;\n t.Oacute = 0x00d3;\n t.Oacutesmall = 0xf7f3;\n t.Obarredcyrillic = 0x04e8;\n t.Obarreddieresiscyrillic = 0x04ea;\n t.Obreve = 0x014e;\n t.Ocaron = 0x01d1;\n t.Ocenteredtilde = 0x019f;\n t.Ocircle = 0x24c4;\n t.Ocircumflex = 0x00d4;\n t.Ocircumflexacute = 0x1ed0;\n t.Ocircumflexdotbelow = 0x1ed8;\n t.Ocircumflexgrave = 0x1ed2;\n t.Ocircumflexhookabove = 0x1ed4;\n t.Ocircumflexsmall = 0xf7f4;\n t.Ocircumflextilde = 0x1ed6;\n t.Ocyrillic = 0x041e;\n t.Odblacute = 0x0150;\n t.Odblgrave = 0x020c;\n t.Odieresis = 0x00d6;\n t.Odieresiscyrillic = 0x04e6;\n t.Odieresissmall = 0xf7f6;\n t.Odotbelow = 0x1ecc;\n t.Ogoneksmall = 0xf6fb;\n t.Ograve = 0x00d2;\n t.Ogravesmall = 0xf7f2;\n t.Oharmenian = 0x0555;\n t.Ohm = 0x2126;\n t.Ohookabove = 0x1ece;\n t.Ohorn = 0x01a0;\n t.Ohornacute = 0x1eda;\n t.Ohorndotbelow = 0x1ee2;\n t.Ohorngrave = 0x1edc;\n t.Ohornhookabove = 0x1ede;\n t.Ohorntilde = 0x1ee0;\n t.Ohungarumlaut = 0x0150;\n t.Oi = 0x01a2;\n t.Oinvertedbreve = 0x020e;\n t.Omacron = 0x014c;\n t.Omacronacute = 0x1e52;\n t.Omacrongrave = 0x1e50;\n t.Omega = 0x2126;\n t.Omegacyrillic = 0x0460;\n t.Omegagreek = 0x03a9;\n t.Omegaroundcyrillic = 0x047a;\n t.Omegatitlocyrillic = 0x047c;\n t.Omegatonos = 0x038f;\n t.Omicron = 0x039f;\n t.Omicrontonos = 0x038c;\n t.Omonospace = 0xff2f;\n t.Oneroman = 0x2160;\n t.Oogonek = 0x01ea;\n t.Oogonekmacron = 0x01ec;\n t.Oopen = 0x0186;\n t.Oslash = 0x00d8;\n t.Oslashacute = 0x01fe;\n t.Oslashsmall = 0xf7f8;\n t.Osmall = 0xf76f;\n t.Ostrokeacute = 0x01fe;\n t.Otcyrillic = 0x047e;\n t.Otilde = 0x00d5;\n t.Otildeacute = 0x1e4c;\n t.Otildedieresis = 0x1e4e;\n t.Otildesmall = 0xf7f5;\n t.P = 0x0050;\n t.Pacute = 0x1e54;\n t.Pcircle = 0x24c5;\n t.Pdotaccent = 0x1e56;\n t.Pecyrillic = 0x041f;\n t.Peharmenian = 0x054a;\n t.Pemiddlehookcyrillic = 0x04a6;\n t.Phi = 0x03a6;\n t.Phook = 0x01a4;\n t.Pi = 0x03a0;\n t.Piwrarmenian = 0x0553;\n t.Pmonospace = 0xff30;\n t.Psi = 0x03a8;\n t.Psicyrillic = 0x0470;\n t.Psmall = 0xf770;\n t.Q = 0x0051;\n t.Qcircle = 0x24c6;\n t.Qmonospace = 0xff31;\n t.Qsmall = 0xf771;\n t.R = 0x0052;\n t.Raarmenian = 0x054c;\n t.Racute = 0x0154;\n t.Rcaron = 0x0158;\n t.Rcedilla = 0x0156;\n t.Rcircle = 0x24c7;\n t.Rcommaaccent = 0x0156;\n t.Rdblgrave = 0x0210;\n t.Rdotaccent = 0x1e58;\n t.Rdotbelow = 0x1e5a;\n t.Rdotbelowmacron = 0x1e5c;\n t.Reharmenian = 0x0550;\n t.Rfraktur = 0x211c;\n t.Rho = 0x03a1;\n t.Ringsmall = 0xf6fc;\n t.Rinvertedbreve = 0x0212;\n t.Rlinebelow = 0x1e5e;\n t.Rmonospace = 0xff32;\n t.Rsmall = 0xf772;\n t.Rsmallinverted = 0x0281;\n t.Rsmallinvertedsuperior = 0x02b6;\n t.S = 0x0053;\n t.SF010000 = 0x250c;\n t.SF020000 = 0x2514;\n t.SF030000 = 0x2510;\n t.SF040000 = 0x2518;\n t.SF050000 = 0x253c;\n t.SF060000 = 0x252c;\n t.SF070000 = 0x2534;\n t.SF080000 = 0x251c;\n t.SF090000 = 0x2524;\n t.SF100000 = 0x2500;\n t.SF110000 = 0x2502;\n t.SF190000 = 0x2561;\n t.SF200000 = 0x2562;\n t.SF210000 = 0x2556;\n t.SF220000 = 0x2555;\n t.SF230000 = 0x2563;\n t.SF240000 = 0x2551;\n t.SF250000 = 0x2557;\n t.SF260000 = 0x255d;\n t.SF270000 = 0x255c;\n t.SF280000 = 0x255b;\n t.SF360000 = 0x255e;\n t.SF370000 = 0x255f;\n t.SF380000 = 0x255a;\n t.SF390000 = 0x2554;\n t.SF400000 = 0x2569;\n t.SF410000 = 0x2566;\n t.SF420000 = 0x2560;\n t.SF430000 = 0x2550;\n t.SF440000 = 0x256c;\n t.SF450000 = 0x2567;\n t.SF460000 = 0x2568;\n t.SF470000 = 0x2564;\n t.SF480000 = 0x2565;\n t.SF490000 = 0x2559;\n t.SF500000 = 0x2558;\n t.SF510000 = 0x2552;\n t.SF520000 = 0x2553;\n t.SF530000 = 0x256b;\n t.SF540000 = 0x256a;\n t.Sacute = 0x015a;\n t.Sacutedotaccent = 0x1e64;\n t.Sampigreek = 0x03e0;\n t.Scaron = 0x0160;\n t.Scarondotaccent = 0x1e66;\n t.Scaronsmall = 0xf6fd;\n t.Scedilla = 0x015e;\n t.Schwa = 0x018f;\n t.Schwacyrillic = 0x04d8;\n t.Schwadieresiscyrillic = 0x04da;\n t.Scircle = 0x24c8;\n t.Scircumflex = 0x015c;\n t.Scommaaccent = 0x0218;\n t.Sdotaccent = 0x1e60;\n t.Sdotbelow = 0x1e62;\n t.Sdotbelowdotaccent = 0x1e68;\n t.Seharmenian = 0x054d;\n t.Sevenroman = 0x2166;\n t.Shaarmenian = 0x0547;\n t.Shacyrillic = 0x0428;\n t.Shchacyrillic = 0x0429;\n t.Sheicoptic = 0x03e2;\n t.Shhacyrillic = 0x04ba;\n t.Shimacoptic = 0x03ec;\n t.Sigma = 0x03a3;\n t.Sixroman = 0x2165;\n t.Smonospace = 0xff33;\n t.Softsigncyrillic = 0x042c;\n t.Ssmall = 0xf773;\n t.Stigmagreek = 0x03da;\n t.T = 0x0054;\n t.Tau = 0x03a4;\n t.Tbar = 0x0166;\n t.Tcaron = 0x0164;\n t.Tcedilla = 0x0162;\n t.Tcircle = 0x24c9;\n t.Tcircumflexbelow = 0x1e70;\n t.Tcommaaccent = 0x0162;\n t.Tdotaccent = 0x1e6a;\n t.Tdotbelow = 0x1e6c;\n t.Tecyrillic = 0x0422;\n t.Tedescendercyrillic = 0x04ac;\n t.Tenroman = 0x2169;\n t.Tetsecyrillic = 0x04b4;\n t.Theta = 0x0398;\n t.Thook = 0x01ac;\n t.Thorn = 0x00de;\n t.Thornsmall = 0xf7fe;\n t.Threeroman = 0x2162;\n t.Tildesmall = 0xf6fe;\n t.Tiwnarmenian = 0x054f;\n t.Tlinebelow = 0x1e6e;\n t.Tmonospace = 0xff34;\n t.Toarmenian = 0x0539;\n t.Tonefive = 0x01bc;\n t.Tonesix = 0x0184;\n t.Tonetwo = 0x01a7;\n t.Tretroflexhook = 0x01ae;\n t.Tsecyrillic = 0x0426;\n t.Tshecyrillic = 0x040b;\n t.Tsmall = 0xf774;\n t.Twelveroman = 0x216b;\n t.Tworoman = 0x2161;\n t.U = 0x0055;\n t.Uacute = 0x00da;\n t.Uacutesmall = 0xf7fa;\n t.Ubreve = 0x016c;\n t.Ucaron = 0x01d3;\n t.Ucircle = 0x24ca;\n t.Ucircumflex = 0x00db;\n t.Ucircumflexbelow = 0x1e76;\n t.Ucircumflexsmall = 0xf7fb;\n t.Ucyrillic = 0x0423;\n t.Udblacute = 0x0170;\n t.Udblgrave = 0x0214;\n t.Udieresis = 0x00dc;\n t.Udieresisacute = 0x01d7;\n t.Udieresisbelow = 0x1e72;\n t.Udieresiscaron = 0x01d9;\n t.Udieresiscyrillic = 0x04f0;\n t.Udieresisgrave = 0x01db;\n t.Udieresismacron = 0x01d5;\n t.Udieresissmall = 0xf7fc;\n t.Udotbelow = 0x1ee4;\n t.Ugrave = 0x00d9;\n t.Ugravesmall = 0xf7f9;\n t.Uhookabove = 0x1ee6;\n t.Uhorn = 0x01af;\n t.Uhornacute = 0x1ee8;\n t.Uhorndotbelow = 0x1ef0;\n t.Uhorngrave = 0x1eea;\n t.Uhornhookabove = 0x1eec;\n t.Uhorntilde = 0x1eee;\n t.Uhungarumlaut = 0x0170;\n t.Uhungarumlautcyrillic = 0x04f2;\n t.Uinvertedbreve = 0x0216;\n t.Ukcyrillic = 0x0478;\n t.Umacron = 0x016a;\n t.Umacroncyrillic = 0x04ee;\n t.Umacrondieresis = 0x1e7a;\n t.Umonospace = 0xff35;\n t.Uogonek = 0x0172;\n t.Upsilon = 0x03a5;\n t.Upsilon1 = 0x03d2;\n t.Upsilonacutehooksymbolgreek = 0x03d3;\n t.Upsilonafrican = 0x01b1;\n t.Upsilondieresis = 0x03ab;\n t.Upsilondieresishooksymbolgreek = 0x03d4;\n t.Upsilonhooksymbol = 0x03d2;\n t.Upsilontonos = 0x038e;\n t.Uring = 0x016e;\n t.Ushortcyrillic = 0x040e;\n t.Usmall = 0xf775;\n t.Ustraightcyrillic = 0x04ae;\n t.Ustraightstrokecyrillic = 0x04b0;\n t.Utilde = 0x0168;\n t.Utildeacute = 0x1e78;\n t.Utildebelow = 0x1e74;\n t.V = 0x0056;\n t.Vcircle = 0x24cb;\n t.Vdotbelow = 0x1e7e;\n t.Vecyrillic = 0x0412;\n t.Vewarmenian = 0x054e;\n t.Vhook = 0x01b2;\n t.Vmonospace = 0xff36;\n t.Voarmenian = 0x0548;\n t.Vsmall = 0xf776;\n t.Vtilde = 0x1e7c;\n t.W = 0x0057;\n t.Wacute = 0x1e82;\n t.Wcircle = 0x24cc;\n t.Wcircumflex = 0x0174;\n t.Wdieresis = 0x1e84;\n t.Wdotaccent = 0x1e86;\n t.Wdotbelow = 0x1e88;\n t.Wgrave = 0x1e80;\n t.Wmonospace = 0xff37;\n t.Wsmall = 0xf777;\n t.X = 0x0058;\n t.Xcircle = 0x24cd;\n t.Xdieresis = 0x1e8c;\n t.Xdotaccent = 0x1e8a;\n t.Xeharmenian = 0x053d;\n t.Xi = 0x039e;\n t.Xmonospace = 0xff38;\n t.Xsmall = 0xf778;\n t.Y = 0x0059;\n t.Yacute = 0x00dd;\n t.Yacutesmall = 0xf7fd;\n t.Yatcyrillic = 0x0462;\n t.Ycircle = 0x24ce;\n t.Ycircumflex = 0x0176;\n t.Ydieresis = 0x0178;\n t.Ydieresissmall = 0xf7ff;\n t.Ydotaccent = 0x1e8e;\n t.Ydotbelow = 0x1ef4;\n t.Yericyrillic = 0x042b;\n t.Yerudieresiscyrillic = 0x04f8;\n t.Ygrave = 0x1ef2;\n t.Yhook = 0x01b3;\n t.Yhookabove = 0x1ef6;\n t.Yiarmenian = 0x0545;\n t.Yicyrillic = 0x0407;\n t.Yiwnarmenian = 0x0552;\n t.Ymonospace = 0xff39;\n t.Ysmall = 0xf779;\n t.Ytilde = 0x1ef8;\n t.Yusbigcyrillic = 0x046a;\n t.Yusbigiotifiedcyrillic = 0x046c;\n t.Yuslittlecyrillic = 0x0466;\n t.Yuslittleiotifiedcyrillic = 0x0468;\n t.Z = 0x005a;\n t.Zaarmenian = 0x0536;\n t.Zacute = 0x0179;\n t.Zcaron = 0x017d;\n t.Zcaronsmall = 0xf6ff;\n t.Zcircle = 0x24cf;\n t.Zcircumflex = 0x1e90;\n t.Zdot = 0x017b;\n t.Zdotaccent = 0x017b;\n t.Zdotbelow = 0x1e92;\n t.Zecyrillic = 0x0417;\n t.Zedescendercyrillic = 0x0498;\n t.Zedieresiscyrillic = 0x04de;\n t.Zeta = 0x0396;\n t.Zhearmenian = 0x053a;\n t.Zhebrevecyrillic = 0x04c1;\n t.Zhecyrillic = 0x0416;\n t.Zhedescendercyrillic = 0x0496;\n t.Zhedieresiscyrillic = 0x04dc;\n t.Zlinebelow = 0x1e94;\n t.Zmonospace = 0xff3a;\n t.Zsmall = 0xf77a;\n t.Zstroke = 0x01b5;\n t.a = 0x0061;\n t.aabengali = 0x0986;\n t.aacute = 0x00e1;\n t.aadeva = 0x0906;\n t.aagujarati = 0x0a86;\n t.aagurmukhi = 0x0a06;\n t.aamatragurmukhi = 0x0a3e;\n t.aarusquare = 0x3303;\n t.aavowelsignbengali = 0x09be;\n t.aavowelsigndeva = 0x093e;\n t.aavowelsigngujarati = 0x0abe;\n t.abbreviationmarkarmenian = 0x055f;\n t.abbreviationsigndeva = 0x0970;\n t.abengali = 0x0985;\n t.abopomofo = 0x311a;\n t.abreve = 0x0103;\n t.abreveacute = 0x1eaf;\n t.abrevecyrillic = 0x04d1;\n t.abrevedotbelow = 0x1eb7;\n t.abrevegrave = 0x1eb1;\n t.abrevehookabove = 0x1eb3;\n t.abrevetilde = 0x1eb5;\n t.acaron = 0x01ce;\n t.acircle = 0x24d0;\n t.acircumflex = 0x00e2;\n t.acircumflexacute = 0x1ea5;\n t.acircumflexdotbelow = 0x1ead;\n t.acircumflexgrave = 0x1ea7;\n t.acircumflexhookabove = 0x1ea9;\n t.acircumflextilde = 0x1eab;\n t.acute = 0x00b4;\n t.acutebelowcmb = 0x0317;\n t.acutecmb = 0x0301;\n t.acutecomb = 0x0301;\n t.acutedeva = 0x0954;\n t.acutelowmod = 0x02cf;\n t.acutetonecmb = 0x0341;\n t.acyrillic = 0x0430;\n t.adblgrave = 0x0201;\n t.addakgurmukhi = 0x0a71;\n t.adeva = 0x0905;\n t.adieresis = 0x00e4;\n t.adieresiscyrillic = 0x04d3;\n t.adieresismacron = 0x01df;\n t.adotbelow = 0x1ea1;\n t.adotmacron = 0x01e1;\n t.ae = 0x00e6;\n t.aeacute = 0x01fd;\n t.aekorean = 0x3150;\n t.aemacron = 0x01e3;\n t.afii00208 = 0x2015;\n t.afii08941 = 0x20a4;\n t.afii10017 = 0x0410;\n t.afii10018 = 0x0411;\n t.afii10019 = 0x0412;\n t.afii10020 = 0x0413;\n t.afii10021 = 0x0414;\n t.afii10022 = 0x0415;\n t.afii10023 = 0x0401;\n t.afii10024 = 0x0416;\n t.afii10025 = 0x0417;\n t.afii10026 = 0x0418;\n t.afii10027 = 0x0419;\n t.afii10028 = 0x041a;\n t.afii10029 = 0x041b;\n t.afii10030 = 0x041c;\n t.afii10031 = 0x041d;\n t.afii10032 = 0x041e;\n t.afii10033 = 0x041f;\n t.afii10034 = 0x0420;\n t.afii10035 = 0x0421;\n t.afii10036 = 0x0422;\n t.afii10037 = 0x0423;\n t.afii10038 = 0x0424;\n t.afii10039 = 0x0425;\n t.afii10040 = 0x0426;\n t.afii10041 = 0x0427;\n t.afii10042 = 0x0428;\n t.afii10043 = 0x0429;\n t.afii10044 = 0x042a;\n t.afii10045 = 0x042b;\n t.afii10046 = 0x042c;\n t.afii10047 = 0x042d;\n t.afii10048 = 0x042e;\n t.afii10049 = 0x042f;\n t.afii10050 = 0x0490;\n t.afii10051 = 0x0402;\n t.afii10052 = 0x0403;\n t.afii10053 = 0x0404;\n t.afii10054 = 0x0405;\n t.afii10055 = 0x0406;\n t.afii10056 = 0x0407;\n t.afii10057 = 0x0408;\n t.afii10058 = 0x0409;\n t.afii10059 = 0x040a;\n t.afii10060 = 0x040b;\n t.afii10061 = 0x040c;\n t.afii10062 = 0x040e;\n t.afii10063 = 0xf6c4;\n t.afii10064 = 0xf6c5;\n t.afii10065 = 0x0430;\n t.afii10066 = 0x0431;\n t.afii10067 = 0x0432;\n t.afii10068 = 0x0433;\n t.afii10069 = 0x0434;\n t.afii10070 = 0x0435;\n t.afii10071 = 0x0451;\n t.afii10072 = 0x0436;\n t.afii10073 = 0x0437;\n t.afii10074 = 0x0438;\n t.afii10075 = 0x0439;\n t.afii10076 = 0x043a;\n t.afii10077 = 0x043b;\n t.afii10078 = 0x043c;\n t.afii10079 = 0x043d;\n t.afii10080 = 0x043e;\n t.afii10081 = 0x043f;\n t.afii10082 = 0x0440;\n t.afii10083 = 0x0441;\n t.afii10084 = 0x0442;\n t.afii10085 = 0x0443;\n t.afii10086 = 0x0444;\n t.afii10087 = 0x0445;\n t.afii10088 = 0x0446;\n t.afii10089 = 0x0447;\n t.afii10090 = 0x0448;\n t.afii10091 = 0x0449;\n t.afii10092 = 0x044a;\n t.afii10093 = 0x044b;\n t.afii10094 = 0x044c;\n t.afii10095 = 0x044d;\n t.afii10096 = 0x044e;\n t.afii10097 = 0x044f;\n t.afii10098 = 0x0491;\n t.afii10099 = 0x0452;\n t.afii10100 = 0x0453;\n t.afii10101 = 0x0454;\n t.afii10102 = 0x0455;\n t.afii10103 = 0x0456;\n t.afii10104 = 0x0457;\n t.afii10105 = 0x0458;\n t.afii10106 = 0x0459;\n t.afii10107 = 0x045a;\n t.afii10108 = 0x045b;\n t.afii10109 = 0x045c;\n t.afii10110 = 0x045e;\n t.afii10145 = 0x040f;\n t.afii10146 = 0x0462;\n t.afii10147 = 0x0472;\n t.afii10148 = 0x0474;\n t.afii10192 = 0xf6c6;\n t.afii10193 = 0x045f;\n t.afii10194 = 0x0463;\n t.afii10195 = 0x0473;\n t.afii10196 = 0x0475;\n t.afii10831 = 0xf6c7;\n t.afii10832 = 0xf6c8;\n t.afii10846 = 0x04d9;\n t.afii299 = 0x200e;\n t.afii300 = 0x200f;\n t.afii301 = 0x200d;\n t.afii57381 = 0x066a;\n t.afii57388 = 0x060c;\n t.afii57392 = 0x0660;\n t.afii57393 = 0x0661;\n t.afii57394 = 0x0662;\n t.afii57395 = 0x0663;\n t.afii57396 = 0x0664;\n t.afii57397 = 0x0665;\n t.afii57398 = 0x0666;\n t.afii57399 = 0x0667;\n t.afii57400 = 0x0668;\n t.afii57401 = 0x0669;\n t.afii57403 = 0x061b;\n t.afii57407 = 0x061f;\n t.afii57409 = 0x0621;\n t.afii57410 = 0x0622;\n t.afii57411 = 0x0623;\n t.afii57412 = 0x0624;\n t.afii57413 = 0x0625;\n t.afii57414 = 0x0626;\n t.afii57415 = 0x0627;\n t.afii57416 = 0x0628;\n t.afii57417 = 0x0629;\n t.afii57418 = 0x062a;\n t.afii57419 = 0x062b;\n t.afii57420 = 0x062c;\n t.afii57421 = 0x062d;\n t.afii57422 = 0x062e;\n t.afii57423 = 0x062f;\n t.afii57424 = 0x0630;\n t.afii57425 = 0x0631;\n t.afii57426 = 0x0632;\n t.afii57427 = 0x0633;\n t.afii57428 = 0x0634;\n t.afii57429 = 0x0635;\n t.afii57430 = 0x0636;\n t.afii57431 = 0x0637;\n t.afii57432 = 0x0638;\n t.afii57433 = 0x0639;\n t.afii57434 = 0x063a;\n t.afii57440 = 0x0640;\n t.afii57441 = 0x0641;\n t.afii57442 = 0x0642;\n t.afii57443 = 0x0643;\n t.afii57444 = 0x0644;\n t.afii57445 = 0x0645;\n t.afii57446 = 0x0646;\n t.afii57448 = 0x0648;\n t.afii57449 = 0x0649;\n t.afii57450 = 0x064a;\n t.afii57451 = 0x064b;\n t.afii57452 = 0x064c;\n t.afii57453 = 0x064d;\n t.afii57454 = 0x064e;\n t.afii57455 = 0x064f;\n t.afii57456 = 0x0650;\n t.afii57457 = 0x0651;\n t.afii57458 = 0x0652;\n t.afii57470 = 0x0647;\n t.afii57505 = 0x06a4;\n t.afii57506 = 0x067e;\n t.afii57507 = 0x0686;\n t.afii57508 = 0x0698;\n t.afii57509 = 0x06af;\n t.afii57511 = 0x0679;\n t.afii57512 = 0x0688;\n t.afii57513 = 0x0691;\n t.afii57514 = 0x06ba;\n t.afii57519 = 0x06d2;\n t.afii57534 = 0x06d5;\n t.afii57636 = 0x20aa;\n t.afii57645 = 0x05be;\n t.afii57658 = 0x05c3;\n t.afii57664 = 0x05d0;\n t.afii57665 = 0x05d1;\n t.afii57666 = 0x05d2;\n t.afii57667 = 0x05d3;\n t.afii57668 = 0x05d4;\n t.afii57669 = 0x05d5;\n t.afii57670 = 0x05d6;\n t.afii57671 = 0x05d7;\n t.afii57672 = 0x05d8;\n t.afii57673 = 0x05d9;\n t.afii57674 = 0x05da;\n t.afii57675 = 0x05db;\n t.afii57676 = 0x05dc;\n t.afii57677 = 0x05dd;\n t.afii57678 = 0x05de;\n t.afii57679 = 0x05df;\n t.afii57680 = 0x05e0;\n t.afii57681 = 0x05e1;\n t.afii57682 = 0x05e2;\n t.afii57683 = 0x05e3;\n t.afii57684 = 0x05e4;\n t.afii57685 = 0x05e5;\n t.afii57686 = 0x05e6;\n t.afii57687 = 0x05e7;\n t.afii57688 = 0x05e8;\n t.afii57689 = 0x05e9;\n t.afii57690 = 0x05ea;\n t.afii57694 = 0xfb2a;\n t.afii57695 = 0xfb2b;\n t.afii57700 = 0xfb4b;\n t.afii57705 = 0xfb1f;\n t.afii57716 = 0x05f0;\n t.afii57717 = 0x05f1;\n t.afii57718 = 0x05f2;\n t.afii57723 = 0xfb35;\n t.afii57793 = 0x05b4;\n t.afii57794 = 0x05b5;\n t.afii57795 = 0x05b6;\n t.afii57796 = 0x05bb;\n t.afii57797 = 0x05b8;\n t.afii57798 = 0x05b7;\n t.afii57799 = 0x05b0;\n t.afii57800 = 0x05b2;\n t.afii57801 = 0x05b1;\n t.afii57802 = 0x05b3;\n t.afii57803 = 0x05c2;\n t.afii57804 = 0x05c1;\n t.afii57806 = 0x05b9;\n t.afii57807 = 0x05bc;\n t.afii57839 = 0x05bd;\n t.afii57841 = 0x05bf;\n t.afii57842 = 0x05c0;\n t.afii57929 = 0x02bc;\n t.afii61248 = 0x2105;\n t.afii61289 = 0x2113;\n t.afii61352 = 0x2116;\n t.afii61573 = 0x202c;\n t.afii61574 = 0x202d;\n t.afii61575 = 0x202e;\n t.afii61664 = 0x200c;\n t.afii63167 = 0x066d;\n t.afii64937 = 0x02bd;\n t.agrave = 0x00e0;\n t.agujarati = 0x0a85;\n t.agurmukhi = 0x0a05;\n t.ahiragana = 0x3042;\n t.ahookabove = 0x1ea3;\n t.aibengali = 0x0990;\n t.aibopomofo = 0x311e;\n t.aideva = 0x0910;\n t.aiecyrillic = 0x04d5;\n t.aigujarati = 0x0a90;\n t.aigurmukhi = 0x0a10;\n t.aimatragurmukhi = 0x0a48;\n t.ainarabic = 0x0639;\n t.ainfinalarabic = 0xfeca;\n t.aininitialarabic = 0xfecb;\n t.ainmedialarabic = 0xfecc;\n t.ainvertedbreve = 0x0203;\n t.aivowelsignbengali = 0x09c8;\n t.aivowelsigndeva = 0x0948;\n t.aivowelsigngujarati = 0x0ac8;\n t.akatakana = 0x30a2;\n t.akatakanahalfwidth = 0xff71;\n t.akorean = 0x314f;\n t.alef = 0x05d0;\n t.alefarabic = 0x0627;\n t.alefdageshhebrew = 0xfb30;\n t.aleffinalarabic = 0xfe8e;\n t.alefhamzaabovearabic = 0x0623;\n t.alefhamzaabovefinalarabic = 0xfe84;\n t.alefhamzabelowarabic = 0x0625;\n t.alefhamzabelowfinalarabic = 0xfe88;\n t.alefhebrew = 0x05d0;\n t.aleflamedhebrew = 0xfb4f;\n t.alefmaddaabovearabic = 0x0622;\n t.alefmaddaabovefinalarabic = 0xfe82;\n t.alefmaksuraarabic = 0x0649;\n t.alefmaksurafinalarabic = 0xfef0;\n t.alefmaksurainitialarabic = 0xfef3;\n t.alefmaksuramedialarabic = 0xfef4;\n t.alefpatahhebrew = 0xfb2e;\n t.alefqamatshebrew = 0xfb2f;\n t.aleph = 0x2135;\n t.allequal = 0x224c;\n t.alpha = 0x03b1;\n t.alphatonos = 0x03ac;\n t.amacron = 0x0101;\n t.amonospace = 0xff41;\n t.ampersand = 0x0026;\n t.ampersandmonospace = 0xff06;\n t.ampersandsmall = 0xf726;\n t.amsquare = 0x33c2;\n t.anbopomofo = 0x3122;\n t.angbopomofo = 0x3124;\n t.angbracketleft = 0x3008;\n t.angbracketright = 0x3009;\n t.angkhankhuthai = 0x0e5a;\n t.angle = 0x2220;\n t.anglebracketleft = 0x3008;\n t.anglebracketleftvertical = 0xfe3f;\n t.anglebracketright = 0x3009;\n t.anglebracketrightvertical = 0xfe40;\n t.angleleft = 0x2329;\n t.angleright = 0x232a;\n t.angstrom = 0x212b;\n t.anoteleia = 0x0387;\n t.anudattadeva = 0x0952;\n t.anusvarabengali = 0x0982;\n t.anusvaradeva = 0x0902;\n t.anusvaragujarati = 0x0a82;\n t.aogonek = 0x0105;\n t.apaatosquare = 0x3300;\n t.aparen = 0x249c;\n t.apostrophearmenian = 0x055a;\n t.apostrophemod = 0x02bc;\n t.apple = 0xf8ff;\n t.approaches = 0x2250;\n t.approxequal = 0x2248;\n t.approxequalorimage = 0x2252;\n t.approximatelyequal = 0x2245;\n t.araeaekorean = 0x318e;\n t.araeakorean = 0x318d;\n t.arc = 0x2312;\n t.arighthalfring = 0x1e9a;\n t.aring = 0x00e5;\n t.aringacute = 0x01fb;\n t.aringbelow = 0x1e01;\n t.arrowboth = 0x2194;\n t.arrowdashdown = 0x21e3;\n t.arrowdashleft = 0x21e0;\n t.arrowdashright = 0x21e2;\n t.arrowdashup = 0x21e1;\n t.arrowdblboth = 0x21d4;\n t.arrowdbldown = 0x21d3;\n t.arrowdblleft = 0x21d0;\n t.arrowdblright = 0x21d2;\n t.arrowdblup = 0x21d1;\n t.arrowdown = 0x2193;\n t.arrowdownleft = 0x2199;\n t.arrowdownright = 0x2198;\n t.arrowdownwhite = 0x21e9;\n t.arrowheaddownmod = 0x02c5;\n t.arrowheadleftmod = 0x02c2;\n t.arrowheadrightmod = 0x02c3;\n t.arrowheadupmod = 0x02c4;\n t.arrowhorizex = 0xf8e7;\n t.arrowleft = 0x2190;\n t.arrowleftdbl = 0x21d0;\n t.arrowleftdblstroke = 0x21cd;\n t.arrowleftoverright = 0x21c6;\n t.arrowleftwhite = 0x21e6;\n t.arrowright = 0x2192;\n t.arrowrightdblstroke = 0x21cf;\n t.arrowrightheavy = 0x279e;\n t.arrowrightoverleft = 0x21c4;\n t.arrowrightwhite = 0x21e8;\n t.arrowtableft = 0x21e4;\n t.arrowtabright = 0x21e5;\n t.arrowup = 0x2191;\n t.arrowupdn = 0x2195;\n t.arrowupdnbse = 0x21a8;\n t.arrowupdownbase = 0x21a8;\n t.arrowupleft = 0x2196;\n t.arrowupleftofdown = 0x21c5;\n t.arrowupright = 0x2197;\n t.arrowupwhite = 0x21e7;\n t.arrowvertex = 0xf8e6;\n t.asciicircum = 0x005e;\n t.asciicircummonospace = 0xff3e;\n t.asciitilde = 0x007e;\n t.asciitildemonospace = 0xff5e;\n t.ascript = 0x0251;\n t.ascriptturned = 0x0252;\n t.asmallhiragana = 0x3041;\n t.asmallkatakana = 0x30a1;\n t.asmallkatakanahalfwidth = 0xff67;\n t.asterisk = 0x002a;\n t.asteriskaltonearabic = 0x066d;\n t.asteriskarabic = 0x066d;\n t.asteriskmath = 0x2217;\n t.asteriskmonospace = 0xff0a;\n t.asterisksmall = 0xfe61;\n t.asterism = 0x2042;\n t.asuperior = 0xf6e9;\n t.asymptoticallyequal = 0x2243;\n t.at = 0x0040;\n t.atilde = 0x00e3;\n t.atmonospace = 0xff20;\n t.atsmall = 0xfe6b;\n t.aturned = 0x0250;\n t.aubengali = 0x0994;\n t.aubopomofo = 0x3120;\n t.audeva = 0x0914;\n t.augujarati = 0x0a94;\n t.augurmukhi = 0x0a14;\n t.aulengthmarkbengali = 0x09d7;\n t.aumatragurmukhi = 0x0a4c;\n t.auvowelsignbengali = 0x09cc;\n t.auvowelsigndeva = 0x094c;\n t.auvowelsigngujarati = 0x0acc;\n t.avagrahadeva = 0x093d;\n t.aybarmenian = 0x0561;\n t.ayin = 0x05e2;\n t.ayinaltonehebrew = 0xfb20;\n t.ayinhebrew = 0x05e2;\n t.b = 0x0062;\n t.babengali = 0x09ac;\n t.backslash = 0x005c;\n t.backslashmonospace = 0xff3c;\n t.badeva = 0x092c;\n t.bagujarati = 0x0aac;\n t.bagurmukhi = 0x0a2c;\n t.bahiragana = 0x3070;\n t.bahtthai = 0x0e3f;\n t.bakatakana = 0x30d0;\n t.bar = 0x007c;\n t.barmonospace = 0xff5c;\n t.bbopomofo = 0x3105;\n t.bcircle = 0x24d1;\n t.bdotaccent = 0x1e03;\n t.bdotbelow = 0x1e05;\n t.beamedsixteenthnotes = 0x266c;\n t.because = 0x2235;\n t.becyrillic = 0x0431;\n t.beharabic = 0x0628;\n t.behfinalarabic = 0xfe90;\n t.behinitialarabic = 0xfe91;\n t.behiragana = 0x3079;\n t.behmedialarabic = 0xfe92;\n t.behmeeminitialarabic = 0xfc9f;\n t.behmeemisolatedarabic = 0xfc08;\n t.behnoonfinalarabic = 0xfc6d;\n t.bekatakana = 0x30d9;\n t.benarmenian = 0x0562;\n t.bet = 0x05d1;\n t.beta = 0x03b2;\n t.betasymbolgreek = 0x03d0;\n t.betdagesh = 0xfb31;\n t.betdageshhebrew = 0xfb31;\n t.bethebrew = 0x05d1;\n t.betrafehebrew = 0xfb4c;\n t.bhabengali = 0x09ad;\n t.bhadeva = 0x092d;\n t.bhagujarati = 0x0aad;\n t.bhagurmukhi = 0x0a2d;\n t.bhook = 0x0253;\n t.bihiragana = 0x3073;\n t.bikatakana = 0x30d3;\n t.bilabialclick = 0x0298;\n t.bindigurmukhi = 0x0a02;\n t.birusquare = 0x3331;\n t.blackcircle = 0x25cf;\n t.blackdiamond = 0x25c6;\n t.blackdownpointingtriangle = 0x25bc;\n t.blackleftpointingpointer = 0x25c4;\n t.blackleftpointingtriangle = 0x25c0;\n t.blacklenticularbracketleft = 0x3010;\n t.blacklenticularbracketleftvertical = 0xfe3b;\n t.blacklenticularbracketright = 0x3011;\n t.blacklenticularbracketrightvertical = 0xfe3c;\n t.blacklowerlefttriangle = 0x25e3;\n t.blacklowerrighttriangle = 0x25e2;\n t.blackrectangle = 0x25ac;\n t.blackrightpointingpointer = 0x25ba;\n t.blackrightpointingtriangle = 0x25b6;\n t.blacksmallsquare = 0x25aa;\n t.blacksmilingface = 0x263b;\n t.blacksquare = 0x25a0;\n t.blackstar = 0x2605;\n t.blackupperlefttriangle = 0x25e4;\n t.blackupperrighttriangle = 0x25e5;\n t.blackuppointingsmalltriangle = 0x25b4;\n t.blackuppointingtriangle = 0x25b2;\n t.blank = 0x2423;\n t.blinebelow = 0x1e07;\n t.block = 0x2588;\n t.bmonospace = 0xff42;\n t.bobaimaithai = 0x0e1a;\n t.bohiragana = 0x307c;\n t.bokatakana = 0x30dc;\n t.bparen = 0x249d;\n t.bqsquare = 0x33c3;\n t.braceex = 0xf8f4;\n t.braceleft = 0x007b;\n t.braceleftbt = 0xf8f3;\n t.braceleftmid = 0xf8f2;\n t.braceleftmonospace = 0xff5b;\n t.braceleftsmall = 0xfe5b;\n t.bracelefttp = 0xf8f1;\n t.braceleftvertical = 0xfe37;\n t.braceright = 0x007d;\n t.bracerightbt = 0xf8fe;\n t.bracerightmid = 0xf8fd;\n t.bracerightmonospace = 0xff5d;\n t.bracerightsmall = 0xfe5c;\n t.bracerighttp = 0xf8fc;\n t.bracerightvertical = 0xfe38;\n t.bracketleft = 0x005b;\n t.bracketleftbt = 0xf8f0;\n t.bracketleftex = 0xf8ef;\n t.bracketleftmonospace = 0xff3b;\n t.bracketlefttp = 0xf8ee;\n t.bracketright = 0x005d;\n t.bracketrightbt = 0xf8fb;\n t.bracketrightex = 0xf8fa;\n t.bracketrightmonospace = 0xff3d;\n t.bracketrighttp = 0xf8f9;\n t.breve = 0x02d8;\n t.brevebelowcmb = 0x032e;\n t.brevecmb = 0x0306;\n t.breveinvertedbelowcmb = 0x032f;\n t.breveinvertedcmb = 0x0311;\n t.breveinverteddoublecmb = 0x0361;\n t.bridgebelowcmb = 0x032a;\n t.bridgeinvertedbelowcmb = 0x033a;\n t.brokenbar = 0x00a6;\n t.bstroke = 0x0180;\n t.bsuperior = 0xf6ea;\n t.btopbar = 0x0183;\n t.buhiragana = 0x3076;\n t.bukatakana = 0x30d6;\n t.bullet = 0x2022;\n t.bulletinverse = 0x25d8;\n t.bulletoperator = 0x2219;\n t.bullseye = 0x25ce;\n t.c = 0x0063;\n t.caarmenian = 0x056e;\n t.cabengali = 0x099a;\n t.cacute = 0x0107;\n t.cadeva = 0x091a;\n t.cagujarati = 0x0a9a;\n t.cagurmukhi = 0x0a1a;\n t.calsquare = 0x3388;\n t.candrabindubengali = 0x0981;\n t.candrabinducmb = 0x0310;\n t.candrabindudeva = 0x0901;\n t.candrabindugujarati = 0x0a81;\n t.capslock = 0x21ea;\n t.careof = 0x2105;\n t.caron = 0x02c7;\n t.caronbelowcmb = 0x032c;\n t.caroncmb = 0x030c;\n t.carriagereturn = 0x21b5;\n t.cbopomofo = 0x3118;\n t.ccaron = 0x010d;\n t.ccedilla = 0x00e7;\n t.ccedillaacute = 0x1e09;\n t.ccircle = 0x24d2;\n t.ccircumflex = 0x0109;\n t.ccurl = 0x0255;\n t.cdot = 0x010b;\n t.cdotaccent = 0x010b;\n t.cdsquare = 0x33c5;\n t.cedilla = 0x00b8;\n t.cedillacmb = 0x0327;\n t.cent = 0x00a2;\n t.centigrade = 0x2103;\n t.centinferior = 0xf6df;\n t.centmonospace = 0xffe0;\n t.centoldstyle = 0xf7a2;\n t.centsuperior = 0xf6e0;\n t.chaarmenian = 0x0579;\n t.chabengali = 0x099b;\n t.chadeva = 0x091b;\n t.chagujarati = 0x0a9b;\n t.chagurmukhi = 0x0a1b;\n t.chbopomofo = 0x3114;\n t.cheabkhasiancyrillic = 0x04bd;\n t.checkmark = 0x2713;\n t.checyrillic = 0x0447;\n t.chedescenderabkhasiancyrillic = 0x04bf;\n t.chedescendercyrillic = 0x04b7;\n t.chedieresiscyrillic = 0x04f5;\n t.cheharmenian = 0x0573;\n t.chekhakassiancyrillic = 0x04cc;\n t.cheverticalstrokecyrillic = 0x04b9;\n t.chi = 0x03c7;\n t.chieuchacirclekorean = 0x3277;\n t.chieuchaparenkorean = 0x3217;\n t.chieuchcirclekorean = 0x3269;\n t.chieuchkorean = 0x314a;\n t.chieuchparenkorean = 0x3209;\n t.chochangthai = 0x0e0a;\n t.chochanthai = 0x0e08;\n t.chochingthai = 0x0e09;\n t.chochoethai = 0x0e0c;\n t.chook = 0x0188;\n t.cieucacirclekorean = 0x3276;\n t.cieucaparenkorean = 0x3216;\n t.cieuccirclekorean = 0x3268;\n t.cieuckorean = 0x3148;\n t.cieucparenkorean = 0x3208;\n t.cieucuparenkorean = 0x321c;\n t.circle = 0x25cb;\n t.circlecopyrt = 0x00a9;\n t.circlemultiply = 0x2297;\n t.circleot = 0x2299;\n t.circleplus = 0x2295;\n t.circlepostalmark = 0x3036;\n t.circlewithlefthalfblack = 0x25d0;\n t.circlewithrighthalfblack = 0x25d1;\n t.circumflex = 0x02c6;\n t.circumflexbelowcmb = 0x032d;\n t.circumflexcmb = 0x0302;\n t.clear = 0x2327;\n t.clickalveolar = 0x01c2;\n t.clickdental = 0x01c0;\n t.clicklateral = 0x01c1;\n t.clickretroflex = 0x01c3;\n t.club = 0x2663;\n t.clubsuitblack = 0x2663;\n t.clubsuitwhite = 0x2667;\n t.cmcubedsquare = 0x33a4;\n t.cmonospace = 0xff43;\n t.cmsquaredsquare = 0x33a0;\n t.coarmenian = 0x0581;\n t.colon = 0x003a;\n t.colonmonetary = 0x20a1;\n t.colonmonospace = 0xff1a;\n t.colonsign = 0x20a1;\n t.colonsmall = 0xfe55;\n t.colontriangularhalfmod = 0x02d1;\n t.colontriangularmod = 0x02d0;\n t.comma = 0x002c;\n t.commaabovecmb = 0x0313;\n t.commaaboverightcmb = 0x0315;\n t.commaaccent = 0xf6c3;\n t.commaarabic = 0x060c;\n t.commaarmenian = 0x055d;\n t.commainferior = 0xf6e1;\n t.commamonospace = 0xff0c;\n t.commareversedabovecmb = 0x0314;\n t.commareversedmod = 0x02bd;\n t.commasmall = 0xfe50;\n t.commasuperior = 0xf6e2;\n t.commaturnedabovecmb = 0x0312;\n t.commaturnedmod = 0x02bb;\n t.compass = 0x263c;\n t.congruent = 0x2245;\n t.contourintegral = 0x222e;\n t.control = 0x2303;\n t.controlACK = 0x0006;\n t.controlBEL = 0x0007;\n t.controlBS = 0x0008;\n t.controlCAN = 0x0018;\n t.controlCR = 0x000d;\n t.controlDC1 = 0x0011;\n t.controlDC2 = 0x0012;\n t.controlDC3 = 0x0013;\n t.controlDC4 = 0x0014;\n t.controlDEL = 0x007f;\n t.controlDLE = 0x0010;\n t.controlEM = 0x0019;\n t.controlENQ = 0x0005;\n t.controlEOT = 0x0004;\n t.controlESC = 0x001b;\n t.controlETB = 0x0017;\n t.controlETX = 0x0003;\n t.controlFF = 0x000c;\n t.controlFS = 0x001c;\n t.controlGS = 0x001d;\n t.controlHT = 0x0009;\n t.controlLF = 0x000a;\n t.controlNAK = 0x0015;\n t.controlNULL = 0x0000;\n t.controlRS = 0x001e;\n t.controlSI = 0x000f;\n t.controlSO = 0x000e;\n t.controlSOT = 0x0002;\n t.controlSTX = 0x0001;\n t.controlSUB = 0x001a;\n t.controlSYN = 0x0016;\n t.controlUS = 0x001f;\n t.controlVT = 0x000b;\n t.copyright = 0x00a9;\n t.copyrightsans = 0xf8e9;\n t.copyrightserif = 0xf6d9;\n t.cornerbracketleft = 0x300c;\n t.cornerbracketlefthalfwidth = 0xff62;\n t.cornerbracketleftvertical = 0xfe41;\n t.cornerbracketright = 0x300d;\n t.cornerbracketrighthalfwidth = 0xff63;\n t.cornerbracketrightvertical = 0xfe42;\n t.corporationsquare = 0x337f;\n t.cosquare = 0x33c7;\n t.coverkgsquare = 0x33c6;\n t.cparen = 0x249e;\n t.cruzeiro = 0x20a2;\n t.cstretched = 0x0297;\n t.curlyand = 0x22cf;\n t.curlyor = 0x22ce;\n t.currency = 0x00a4;\n t.cyrBreve = 0xf6d1;\n t.cyrFlex = 0xf6d2;\n t.cyrbreve = 0xf6d4;\n t.cyrflex = 0xf6d5;\n t.d = 0x0064;\n t.daarmenian = 0x0564;\n t.dabengali = 0x09a6;\n t.dadarabic = 0x0636;\n t.dadeva = 0x0926;\n t.dadfinalarabic = 0xfebe;\n t.dadinitialarabic = 0xfebf;\n t.dadmedialarabic = 0xfec0;\n t.dagesh = 0x05bc;\n t.dageshhebrew = 0x05bc;\n t.dagger = 0x2020;\n t.daggerdbl = 0x2021;\n t.dagujarati = 0x0aa6;\n t.dagurmukhi = 0x0a26;\n t.dahiragana = 0x3060;\n t.dakatakana = 0x30c0;\n t.dalarabic = 0x062f;\n t.dalet = 0x05d3;\n t.daletdagesh = 0xfb33;\n t.daletdageshhebrew = 0xfb33;\n t.dalethebrew = 0x05d3;\n t.dalfinalarabic = 0xfeaa;\n t.dammaarabic = 0x064f;\n t.dammalowarabic = 0x064f;\n t.dammatanaltonearabic = 0x064c;\n t.dammatanarabic = 0x064c;\n t.danda = 0x0964;\n t.dargahebrew = 0x05a7;\n t.dargalefthebrew = 0x05a7;\n t.dasiapneumatacyrilliccmb = 0x0485;\n t.dblGrave = 0xf6d3;\n t.dblanglebracketleft = 0x300a;\n t.dblanglebracketleftvertical = 0xfe3d;\n t.dblanglebracketright = 0x300b;\n t.dblanglebracketrightvertical = 0xfe3e;\n t.dblarchinvertedbelowcmb = 0x032b;\n t.dblarrowleft = 0x21d4;\n t.dblarrowright = 0x21d2;\n t.dbldanda = 0x0965;\n t.dblgrave = 0xf6d6;\n t.dblgravecmb = 0x030f;\n t.dblintegral = 0x222c;\n t.dbllowline = 0x2017;\n t.dbllowlinecmb = 0x0333;\n t.dbloverlinecmb = 0x033f;\n t.dblprimemod = 0x02ba;\n t.dblverticalbar = 0x2016;\n t.dblverticallineabovecmb = 0x030e;\n t.dbopomofo = 0x3109;\n t.dbsquare = 0x33c8;\n t.dcaron = 0x010f;\n t.dcedilla = 0x1e11;\n t.dcircle = 0x24d3;\n t.dcircumflexbelow = 0x1e13;\n t.dcroat = 0x0111;\n t.ddabengali = 0x09a1;\n t.ddadeva = 0x0921;\n t.ddagujarati = 0x0aa1;\n t.ddagurmukhi = 0x0a21;\n t.ddalarabic = 0x0688;\n t.ddalfinalarabic = 0xfb89;\n t.dddhadeva = 0x095c;\n t.ddhabengali = 0x09a2;\n t.ddhadeva = 0x0922;\n t.ddhagujarati = 0x0aa2;\n t.ddhagurmukhi = 0x0a22;\n t.ddotaccent = 0x1e0b;\n t.ddotbelow = 0x1e0d;\n t.decimalseparatorarabic = 0x066b;\n t.decimalseparatorpersian = 0x066b;\n t.decyrillic = 0x0434;\n t.degree = 0x00b0;\n t.dehihebrew = 0x05ad;\n t.dehiragana = 0x3067;\n t.deicoptic = 0x03ef;\n t.dekatakana = 0x30c7;\n t.deleteleft = 0x232b;\n t.deleteright = 0x2326;\n t.delta = 0x03b4;\n t.deltaturned = 0x018d;\n t.denominatorminusonenumeratorbengali = 0x09f8;\n t.dezh = 0x02a4;\n t.dhabengali = 0x09a7;\n t.dhadeva = 0x0927;\n t.dhagujarati = 0x0aa7;\n t.dhagurmukhi = 0x0a27;\n t.dhook = 0x0257;\n t.dialytikatonos = 0x0385;\n t.dialytikatonoscmb = 0x0344;\n t.diamond = 0x2666;\n t.diamondsuitwhite = 0x2662;\n t.dieresis = 0x00a8;\n t.dieresisacute = 0xf6d7;\n t.dieresisbelowcmb = 0x0324;\n t.dieresiscmb = 0x0308;\n t.dieresisgrave = 0xf6d8;\n t.dieresistonos = 0x0385;\n t.dihiragana = 0x3062;\n t.dikatakana = 0x30c2;\n t.dittomark = 0x3003;\n t.divide = 0x00f7;\n t.divides = 0x2223;\n t.divisionslash = 0x2215;\n t.djecyrillic = 0x0452;\n t.dkshade = 0x2593;\n t.dlinebelow = 0x1e0f;\n t.dlsquare = 0x3397;\n t.dmacron = 0x0111;\n t.dmonospace = 0xff44;\n t.dnblock = 0x2584;\n t.dochadathai = 0x0e0e;\n t.dodekthai = 0x0e14;\n t.dohiragana = 0x3069;\n t.dokatakana = 0x30c9;\n t.dollar = 0x0024;\n t.dollarinferior = 0xf6e3;\n t.dollarmonospace = 0xff04;\n t.dollaroldstyle = 0xf724;\n t.dollarsmall = 0xfe69;\n t.dollarsuperior = 0xf6e4;\n t.dong = 0x20ab;\n t.dorusquare = 0x3326;\n t.dotaccent = 0x02d9;\n t.dotaccentcmb = 0x0307;\n t.dotbelowcmb = 0x0323;\n t.dotbelowcomb = 0x0323;\n t.dotkatakana = 0x30fb;\n t.dotlessi = 0x0131;\n t.dotlessj = 0xf6be;\n t.dotlessjstrokehook = 0x0284;\n t.dotmath = 0x22c5;\n t.dottedcircle = 0x25cc;\n t.doubleyodpatah = 0xfb1f;\n t.doubleyodpatahhebrew = 0xfb1f;\n t.downtackbelowcmb = 0x031e;\n t.downtackmod = 0x02d5;\n t.dparen = 0x249f;\n t.dsuperior = 0xf6eb;\n t.dtail = 0x0256;\n t.dtopbar = 0x018c;\n t.duhiragana = 0x3065;\n t.dukatakana = 0x30c5;\n t.dz = 0x01f3;\n t.dzaltone = 0x02a3;\n t.dzcaron = 0x01c6;\n t.dzcurl = 0x02a5;\n t.dzeabkhasiancyrillic = 0x04e1;\n t.dzecyrillic = 0x0455;\n t.dzhecyrillic = 0x045f;\n t.e = 0x0065;\n t.eacute = 0x00e9;\n t.earth = 0x2641;\n t.ebengali = 0x098f;\n t.ebopomofo = 0x311c;\n t.ebreve = 0x0115;\n t.ecandradeva = 0x090d;\n t.ecandragujarati = 0x0a8d;\n t.ecandravowelsigndeva = 0x0945;\n t.ecandravowelsigngujarati = 0x0ac5;\n t.ecaron = 0x011b;\n t.ecedillabreve = 0x1e1d;\n t.echarmenian = 0x0565;\n t.echyiwnarmenian = 0x0587;\n t.ecircle = 0x24d4;\n t.ecircumflex = 0x00ea;\n t.ecircumflexacute = 0x1ebf;\n t.ecircumflexbelow = 0x1e19;\n t.ecircumflexdotbelow = 0x1ec7;\n t.ecircumflexgrave = 0x1ec1;\n t.ecircumflexhookabove = 0x1ec3;\n t.ecircumflextilde = 0x1ec5;\n t.ecyrillic = 0x0454;\n t.edblgrave = 0x0205;\n t.edeva = 0x090f;\n t.edieresis = 0x00eb;\n t.edot = 0x0117;\n t.edotaccent = 0x0117;\n t.edotbelow = 0x1eb9;\n t.eegurmukhi = 0x0a0f;\n t.eematragurmukhi = 0x0a47;\n t.efcyrillic = 0x0444;\n t.egrave = 0x00e8;\n t.egujarati = 0x0a8f;\n t.eharmenian = 0x0567;\n t.ehbopomofo = 0x311d;\n t.ehiragana = 0x3048;\n t.ehookabove = 0x1ebb;\n t.eibopomofo = 0x311f;\n t.eight = 0x0038;\n t.eightarabic = 0x0668;\n t.eightbengali = 0x09ee;\n t.eightcircle = 0x2467;\n t.eightcircleinversesansserif = 0x2791;\n t.eightdeva = 0x096e;\n t.eighteencircle = 0x2471;\n t.eighteenparen = 0x2485;\n t.eighteenperiod = 0x2499;\n t.eightgujarati = 0x0aee;\n t.eightgurmukhi = 0x0a6e;\n t.eighthackarabic = 0x0668;\n t.eighthangzhou = 0x3028;\n t.eighthnotebeamed = 0x266b;\n t.eightideographicparen = 0x3227;\n t.eightinferior = 0x2088;\n t.eightmonospace = 0xff18;\n t.eightoldstyle = 0xf738;\n t.eightparen = 0x247b;\n t.eightperiod = 0x248f;\n t.eightpersian = 0x06f8;\n t.eightroman = 0x2177;\n t.eightsuperior = 0x2078;\n t.eightthai = 0x0e58;\n t.einvertedbreve = 0x0207;\n t.eiotifiedcyrillic = 0x0465;\n t.ekatakana = 0x30a8;\n t.ekatakanahalfwidth = 0xff74;\n t.ekonkargurmukhi = 0x0a74;\n t.ekorean = 0x3154;\n t.elcyrillic = 0x043b;\n t.element = 0x2208;\n t.elevencircle = 0x246a;\n t.elevenparen = 0x247e;\n t.elevenperiod = 0x2492;\n t.elevenroman = 0x217a;\n t.ellipsis = 0x2026;\n t.ellipsisvertical = 0x22ee;\n t.emacron = 0x0113;\n t.emacronacute = 0x1e17;\n t.emacrongrave = 0x1e15;\n t.emcyrillic = 0x043c;\n t.emdash = 0x2014;\n t.emdashvertical = 0xfe31;\n t.emonospace = 0xff45;\n t.emphasismarkarmenian = 0x055b;\n t.emptyset = 0x2205;\n t.enbopomofo = 0x3123;\n t.encyrillic = 0x043d;\n t.endash = 0x2013;\n t.endashvertical = 0xfe32;\n t.endescendercyrillic = 0x04a3;\n t.eng = 0x014b;\n t.engbopomofo = 0x3125;\n t.enghecyrillic = 0x04a5;\n t.enhookcyrillic = 0x04c8;\n t.enspace = 0x2002;\n t.eogonek = 0x0119;\n t.eokorean = 0x3153;\n t.eopen = 0x025b;\n t.eopenclosed = 0x029a;\n t.eopenreversed = 0x025c;\n t.eopenreversedclosed = 0x025e;\n t.eopenreversedhook = 0x025d;\n t.eparen = 0x24a0;\n t.epsilon = 0x03b5;\n t.epsilontonos = 0x03ad;\n t.equal = 0x003d;\n t.equalmonospace = 0xff1d;\n t.equalsmall = 0xfe66;\n t.equalsuperior = 0x207c;\n t.equivalence = 0x2261;\n t.erbopomofo = 0x3126;\n t.ercyrillic = 0x0440;\n t.ereversed = 0x0258;\n t.ereversedcyrillic = 0x044d;\n t.escyrillic = 0x0441;\n t.esdescendercyrillic = 0x04ab;\n t.esh = 0x0283;\n t.eshcurl = 0x0286;\n t.eshortdeva = 0x090e;\n t.eshortvowelsigndeva = 0x0946;\n t.eshreversedloop = 0x01aa;\n t.eshsquatreversed = 0x0285;\n t.esmallhiragana = 0x3047;\n t.esmallkatakana = 0x30a7;\n t.esmallkatakanahalfwidth = 0xff6a;\n t.estimated = 0x212e;\n t.esuperior = 0xf6ec;\n t.eta = 0x03b7;\n t.etarmenian = 0x0568;\n t.etatonos = 0x03ae;\n t.eth = 0x00f0;\n t.etilde = 0x1ebd;\n t.etildebelow = 0x1e1b;\n t.etnahtafoukhhebrew = 0x0591;\n t.etnahtafoukhlefthebrew = 0x0591;\n t.etnahtahebrew = 0x0591;\n t.etnahtalefthebrew = 0x0591;\n t.eturned = 0x01dd;\n t.eukorean = 0x3161;\n t.euro = 0x20ac;\n t.evowelsignbengali = 0x09c7;\n t.evowelsigndeva = 0x0947;\n t.evowelsigngujarati = 0x0ac7;\n t.exclam = 0x0021;\n t.exclamarmenian = 0x055c;\n t.exclamdbl = 0x203c;\n t.exclamdown = 0x00a1;\n t.exclamdownsmall = 0xf7a1;\n t.exclammonospace = 0xff01;\n t.exclamsmall = 0xf721;\n t.existential = 0x2203;\n t.ezh = 0x0292;\n t.ezhcaron = 0x01ef;\n t.ezhcurl = 0x0293;\n t.ezhreversed = 0x01b9;\n t.ezhtail = 0x01ba;\n t.f = 0x0066;\n t.fadeva = 0x095e;\n t.fagurmukhi = 0x0a5e;\n t.fahrenheit = 0x2109;\n t.fathaarabic = 0x064e;\n t.fathalowarabic = 0x064e;\n t.fathatanarabic = 0x064b;\n t.fbopomofo = 0x3108;\n t.fcircle = 0x24d5;\n t.fdotaccent = 0x1e1f;\n t.feharabic = 0x0641;\n t.feharmenian = 0x0586;\n t.fehfinalarabic = 0xfed2;\n t.fehinitialarabic = 0xfed3;\n t.fehmedialarabic = 0xfed4;\n t.feicoptic = 0x03e5;\n t.female = 0x2640;\n t.ff = 0xfb00;\n t.f_f = 0xfb00;\n t.ffi = 0xfb03;\n t.ffl = 0xfb04;\n t.fi = 0xfb01;\n t.fifteencircle = 0x246e;\n t.fifteenparen = 0x2482;\n t.fifteenperiod = 0x2496;\n t.figuredash = 0x2012;\n t.filledbox = 0x25a0;\n t.filledrect = 0x25ac;\n t.finalkaf = 0x05da;\n t.finalkafdagesh = 0xfb3a;\n t.finalkafdageshhebrew = 0xfb3a;\n t.finalkafhebrew = 0x05da;\n t.finalmem = 0x05dd;\n t.finalmemhebrew = 0x05dd;\n t.finalnun = 0x05df;\n t.finalnunhebrew = 0x05df;\n t.finalpe = 0x05e3;\n t.finalpehebrew = 0x05e3;\n t.finaltsadi = 0x05e5;\n t.finaltsadihebrew = 0x05e5;\n t.firsttonechinese = 0x02c9;\n t.fisheye = 0x25c9;\n t.fitacyrillic = 0x0473;\n t.five = 0x0035;\n t.fivearabic = 0x0665;\n t.fivebengali = 0x09eb;\n t.fivecircle = 0x2464;\n t.fivecircleinversesansserif = 0x278e;\n t.fivedeva = 0x096b;\n t.fiveeighths = 0x215d;\n t.fivegujarati = 0x0aeb;\n t.fivegurmukhi = 0x0a6b;\n t.fivehackarabic = 0x0665;\n t.fivehangzhou = 0x3025;\n t.fiveideographicparen = 0x3224;\n t.fiveinferior = 0x2085;\n t.fivemonospace = 0xff15;\n t.fiveoldstyle = 0xf735;\n t.fiveparen = 0x2478;\n t.fiveperiod = 0x248c;\n t.fivepersian = 0x06f5;\n t.fiveroman = 0x2174;\n t.fivesuperior = 0x2075;\n t.fivethai = 0x0e55;\n t.fl = 0xfb02;\n t.florin = 0x0192;\n t.fmonospace = 0xff46;\n t.fmsquare = 0x3399;\n t.fofanthai = 0x0e1f;\n t.fofathai = 0x0e1d;\n t.fongmanthai = 0x0e4f;\n t.forall = 0x2200;\n t.four = 0x0034;\n t.fourarabic = 0x0664;\n t.fourbengali = 0x09ea;\n t.fourcircle = 0x2463;\n t.fourcircleinversesansserif = 0x278d;\n t.fourdeva = 0x096a;\n t.fourgujarati = 0x0aea;\n t.fourgurmukhi = 0x0a6a;\n t.fourhackarabic = 0x0664;\n t.fourhangzhou = 0x3024;\n t.fourideographicparen = 0x3223;\n t.fourinferior = 0x2084;\n t.fourmonospace = 0xff14;\n t.fournumeratorbengali = 0x09f7;\n t.fouroldstyle = 0xf734;\n t.fourparen = 0x2477;\n t.fourperiod = 0x248b;\n t.fourpersian = 0x06f4;\n t.fourroman = 0x2173;\n t.foursuperior = 0x2074;\n t.fourteencircle = 0x246d;\n t.fourteenparen = 0x2481;\n t.fourteenperiod = 0x2495;\n t.fourthai = 0x0e54;\n t.fourthtonechinese = 0x02cb;\n t.fparen = 0x24a1;\n t.fraction = 0x2044;\n t.franc = 0x20a3;\n t.g = 0x0067;\n t.gabengali = 0x0997;\n t.gacute = 0x01f5;\n t.gadeva = 0x0917;\n t.gafarabic = 0x06af;\n t.gaffinalarabic = 0xfb93;\n t.gafinitialarabic = 0xfb94;\n t.gafmedialarabic = 0xfb95;\n t.gagujarati = 0x0a97;\n t.gagurmukhi = 0x0a17;\n t.gahiragana = 0x304c;\n t.gakatakana = 0x30ac;\n t.gamma = 0x03b3;\n t.gammalatinsmall = 0x0263;\n t.gammasuperior = 0x02e0;\n t.gangiacoptic = 0x03eb;\n t.gbopomofo = 0x310d;\n t.gbreve = 0x011f;\n t.gcaron = 0x01e7;\n t.gcedilla = 0x0123;\n t.gcircle = 0x24d6;\n t.gcircumflex = 0x011d;\n t.gcommaaccent = 0x0123;\n t.gdot = 0x0121;\n t.gdotaccent = 0x0121;\n t.gecyrillic = 0x0433;\n t.gehiragana = 0x3052;\n t.gekatakana = 0x30b2;\n t.geometricallyequal = 0x2251;\n t.gereshaccenthebrew = 0x059c;\n t.gereshhebrew = 0x05f3;\n t.gereshmuqdamhebrew = 0x059d;\n t.germandbls = 0x00df;\n t.gershayimaccenthebrew = 0x059e;\n t.gershayimhebrew = 0x05f4;\n t.getamark = 0x3013;\n t.ghabengali = 0x0998;\n t.ghadarmenian = 0x0572;\n t.ghadeva = 0x0918;\n t.ghagujarati = 0x0a98;\n t.ghagurmukhi = 0x0a18;\n t.ghainarabic = 0x063a;\n t.ghainfinalarabic = 0xfece;\n t.ghaininitialarabic = 0xfecf;\n t.ghainmedialarabic = 0xfed0;\n t.ghemiddlehookcyrillic = 0x0495;\n t.ghestrokecyrillic = 0x0493;\n t.gheupturncyrillic = 0x0491;\n t.ghhadeva = 0x095a;\n t.ghhagurmukhi = 0x0a5a;\n t.ghook = 0x0260;\n t.ghzsquare = 0x3393;\n t.gihiragana = 0x304e;\n t.gikatakana = 0x30ae;\n t.gimarmenian = 0x0563;\n t.gimel = 0x05d2;\n t.gimeldagesh = 0xfb32;\n t.gimeldageshhebrew = 0xfb32;\n t.gimelhebrew = 0x05d2;\n t.gjecyrillic = 0x0453;\n t.glottalinvertedstroke = 0x01be;\n t.glottalstop = 0x0294;\n t.glottalstopinverted = 0x0296;\n t.glottalstopmod = 0x02c0;\n t.glottalstopreversed = 0x0295;\n t.glottalstopreversedmod = 0x02c1;\n t.glottalstopreversedsuperior = 0x02e4;\n t.glottalstopstroke = 0x02a1;\n t.glottalstopstrokereversed = 0x02a2;\n t.gmacron = 0x1e21;\n t.gmonospace = 0xff47;\n t.gohiragana = 0x3054;\n t.gokatakana = 0x30b4;\n t.gparen = 0x24a2;\n t.gpasquare = 0x33ac;\n t.gradient = 0x2207;\n t.grave = 0x0060;\n t.gravebelowcmb = 0x0316;\n t.gravecmb = 0x0300;\n t.gravecomb = 0x0300;\n t.gravedeva = 0x0953;\n t.gravelowmod = 0x02ce;\n t.gravemonospace = 0xff40;\n t.gravetonecmb = 0x0340;\n t.greater = 0x003e;\n t.greaterequal = 0x2265;\n t.greaterequalorless = 0x22db;\n t.greatermonospace = 0xff1e;\n t.greaterorequivalent = 0x2273;\n t.greaterorless = 0x2277;\n t.greateroverequal = 0x2267;\n t.greatersmall = 0xfe65;\n t.gscript = 0x0261;\n t.gstroke = 0x01e5;\n t.guhiragana = 0x3050;\n t.guillemotleft = 0x00ab;\n t.guillemotright = 0x00bb;\n t.guilsinglleft = 0x2039;\n t.guilsinglright = 0x203a;\n t.gukatakana = 0x30b0;\n t.guramusquare = 0x3318;\n t.gysquare = 0x33c9;\n t.h = 0x0068;\n t.haabkhasiancyrillic = 0x04a9;\n t.haaltonearabic = 0x06c1;\n t.habengali = 0x09b9;\n t.hadescendercyrillic = 0x04b3;\n t.hadeva = 0x0939;\n t.hagujarati = 0x0ab9;\n t.hagurmukhi = 0x0a39;\n t.haharabic = 0x062d;\n t.hahfinalarabic = 0xfea2;\n t.hahinitialarabic = 0xfea3;\n t.hahiragana = 0x306f;\n t.hahmedialarabic = 0xfea4;\n t.haitusquare = 0x332a;\n t.hakatakana = 0x30cf;\n t.hakatakanahalfwidth = 0xff8a;\n t.halantgurmukhi = 0x0a4d;\n t.hamzaarabic = 0x0621;\n t.hamzalowarabic = 0x0621;\n t.hangulfiller = 0x3164;\n t.hardsigncyrillic = 0x044a;\n t.harpoonleftbarbup = 0x21bc;\n t.harpoonrightbarbup = 0x21c0;\n t.hasquare = 0x33ca;\n t.hatafpatah = 0x05b2;\n t.hatafpatah16 = 0x05b2;\n t.hatafpatah23 = 0x05b2;\n t.hatafpatah2f = 0x05b2;\n t.hatafpatahhebrew = 0x05b2;\n t.hatafpatahnarrowhebrew = 0x05b2;\n t.hatafpatahquarterhebrew = 0x05b2;\n t.hatafpatahwidehebrew = 0x05b2;\n t.hatafqamats = 0x05b3;\n t.hatafqamats1b = 0x05b3;\n t.hatafqamats28 = 0x05b3;\n t.hatafqamats34 = 0x05b3;\n t.hatafqamatshebrew = 0x05b3;\n t.hatafqamatsnarrowhebrew = 0x05b3;\n t.hatafqamatsquarterhebrew = 0x05b3;\n t.hatafqamatswidehebrew = 0x05b3;\n t.hatafsegol = 0x05b1;\n t.hatafsegol17 = 0x05b1;\n t.hatafsegol24 = 0x05b1;\n t.hatafsegol30 = 0x05b1;\n t.hatafsegolhebrew = 0x05b1;\n t.hatafsegolnarrowhebrew = 0x05b1;\n t.hatafsegolquarterhebrew = 0x05b1;\n t.hatafsegolwidehebrew = 0x05b1;\n t.hbar = 0x0127;\n t.hbopomofo = 0x310f;\n t.hbrevebelow = 0x1e2b;\n t.hcedilla = 0x1e29;\n t.hcircle = 0x24d7;\n t.hcircumflex = 0x0125;\n t.hdieresis = 0x1e27;\n t.hdotaccent = 0x1e23;\n t.hdotbelow = 0x1e25;\n t.he = 0x05d4;\n t.heart = 0x2665;\n t.heartsuitblack = 0x2665;\n t.heartsuitwhite = 0x2661;\n t.hedagesh = 0xfb34;\n t.hedageshhebrew = 0xfb34;\n t.hehaltonearabic = 0x06c1;\n t.heharabic = 0x0647;\n t.hehebrew = 0x05d4;\n t.hehfinalaltonearabic = 0xfba7;\n t.hehfinalalttwoarabic = 0xfeea;\n t.hehfinalarabic = 0xfeea;\n t.hehhamzaabovefinalarabic = 0xfba5;\n t.hehhamzaaboveisolatedarabic = 0xfba4;\n t.hehinitialaltonearabic = 0xfba8;\n t.hehinitialarabic = 0xfeeb;\n t.hehiragana = 0x3078;\n t.hehmedialaltonearabic = 0xfba9;\n t.hehmedialarabic = 0xfeec;\n t.heiseierasquare = 0x337b;\n t.hekatakana = 0x30d8;\n t.hekatakanahalfwidth = 0xff8d;\n t.hekutaarusquare = 0x3336;\n t.henghook = 0x0267;\n t.herutusquare = 0x3339;\n t.het = 0x05d7;\n t.hethebrew = 0x05d7;\n t.hhook = 0x0266;\n t.hhooksuperior = 0x02b1;\n t.hieuhacirclekorean = 0x327b;\n t.hieuhaparenkorean = 0x321b;\n t.hieuhcirclekorean = 0x326d;\n t.hieuhkorean = 0x314e;\n t.hieuhparenkorean = 0x320d;\n t.hihiragana = 0x3072;\n t.hikatakana = 0x30d2;\n t.hikatakanahalfwidth = 0xff8b;\n t.hiriq = 0x05b4;\n t.hiriq14 = 0x05b4;\n t.hiriq21 = 0x05b4;\n t.hiriq2d = 0x05b4;\n t.hiriqhebrew = 0x05b4;\n t.hiriqnarrowhebrew = 0x05b4;\n t.hiriqquarterhebrew = 0x05b4;\n t.hiriqwidehebrew = 0x05b4;\n t.hlinebelow = 0x1e96;\n t.hmonospace = 0xff48;\n t.hoarmenian = 0x0570;\n t.hohipthai = 0x0e2b;\n t.hohiragana = 0x307b;\n t.hokatakana = 0x30db;\n t.hokatakanahalfwidth = 0xff8e;\n t.holam = 0x05b9;\n t.holam19 = 0x05b9;\n t.holam26 = 0x05b9;\n t.holam32 = 0x05b9;\n t.holamhebrew = 0x05b9;\n t.holamnarrowhebrew = 0x05b9;\n t.holamquarterhebrew = 0x05b9;\n t.holamwidehebrew = 0x05b9;\n t.honokhukthai = 0x0e2e;\n t.hookabovecomb = 0x0309;\n t.hookcmb = 0x0309;\n t.hookpalatalizedbelowcmb = 0x0321;\n t.hookretroflexbelowcmb = 0x0322;\n t.hoonsquare = 0x3342;\n t.horicoptic = 0x03e9;\n t.horizontalbar = 0x2015;\n t.horncmb = 0x031b;\n t.hotsprings = 0x2668;\n t.house = 0x2302;\n t.hparen = 0x24a3;\n t.hsuperior = 0x02b0;\n t.hturned = 0x0265;\n t.huhiragana = 0x3075;\n t.huiitosquare = 0x3333;\n t.hukatakana = 0x30d5;\n t.hukatakanahalfwidth = 0xff8c;\n t.hungarumlaut = 0x02dd;\n t.hungarumlautcmb = 0x030b;\n t.hv = 0x0195;\n t.hyphen = 0x002d;\n t.hypheninferior = 0xf6e5;\n t.hyphenmonospace = 0xff0d;\n t.hyphensmall = 0xfe63;\n t.hyphensuperior = 0xf6e6;\n t.hyphentwo = 0x2010;\n t.i = 0x0069;\n t.iacute = 0x00ed;\n t.iacyrillic = 0x044f;\n t.ibengali = 0x0987;\n t.ibopomofo = 0x3127;\n t.ibreve = 0x012d;\n t.icaron = 0x01d0;\n t.icircle = 0x24d8;\n t.icircumflex = 0x00ee;\n t.icyrillic = 0x0456;\n t.idblgrave = 0x0209;\n t.ideographearthcircle = 0x328f;\n t.ideographfirecircle = 0x328b;\n t.ideographicallianceparen = 0x323f;\n t.ideographiccallparen = 0x323a;\n t.ideographiccentrecircle = 0x32a5;\n t.ideographicclose = 0x3006;\n t.ideographiccomma = 0x3001;\n t.ideographiccommaleft = 0xff64;\n t.ideographiccongratulationparen = 0x3237;\n t.ideographiccorrectcircle = 0x32a3;\n t.ideographicearthparen = 0x322f;\n t.ideographicenterpriseparen = 0x323d;\n t.ideographicexcellentcircle = 0x329d;\n t.ideographicfestivalparen = 0x3240;\n t.ideographicfinancialcircle = 0x3296;\n t.ideographicfinancialparen = 0x3236;\n t.ideographicfireparen = 0x322b;\n t.ideographichaveparen = 0x3232;\n t.ideographichighcircle = 0x32a4;\n t.ideographiciterationmark = 0x3005;\n t.ideographiclaborcircle = 0x3298;\n t.ideographiclaborparen = 0x3238;\n t.ideographicleftcircle = 0x32a7;\n t.ideographiclowcircle = 0x32a6;\n t.ideographicmedicinecircle = 0x32a9;\n t.ideographicmetalparen = 0x322e;\n t.ideographicmoonparen = 0x322a;\n t.ideographicnameparen = 0x3234;\n t.ideographicperiod = 0x3002;\n t.ideographicprintcircle = 0x329e;\n t.ideographicreachparen = 0x3243;\n t.ideographicrepresentparen = 0x3239;\n t.ideographicresourceparen = 0x323e;\n t.ideographicrightcircle = 0x32a8;\n t.ideographicsecretcircle = 0x3299;\n t.ideographicselfparen = 0x3242;\n t.ideographicsocietyparen = 0x3233;\n t.ideographicspace = 0x3000;\n t.ideographicspecialparen = 0x3235;\n t.ideographicstockparen = 0x3231;\n t.ideographicstudyparen = 0x323b;\n t.ideographicsunparen = 0x3230;\n t.ideographicsuperviseparen = 0x323c;\n t.ideographicwaterparen = 0x322c;\n t.ideographicwoodparen = 0x322d;\n t.ideographiczero = 0x3007;\n t.ideographmetalcircle = 0x328e;\n t.ideographmooncircle = 0x328a;\n t.ideographnamecircle = 0x3294;\n t.ideographsuncircle = 0x3290;\n t.ideographwatercircle = 0x328c;\n t.ideographwoodcircle = 0x328d;\n t.ideva = 0x0907;\n t.idieresis = 0x00ef;\n t.idieresisacute = 0x1e2f;\n t.idieresiscyrillic = 0x04e5;\n t.idotbelow = 0x1ecb;\n t.iebrevecyrillic = 0x04d7;\n t.iecyrillic = 0x0435;\n t.ieungacirclekorean = 0x3275;\n t.ieungaparenkorean = 0x3215;\n t.ieungcirclekorean = 0x3267;\n t.ieungkorean = 0x3147;\n t.ieungparenkorean = 0x3207;\n t.igrave = 0x00ec;\n t.igujarati = 0x0a87;\n t.igurmukhi = 0x0a07;\n t.ihiragana = 0x3044;\n t.ihookabove = 0x1ec9;\n t.iibengali = 0x0988;\n t.iicyrillic = 0x0438;\n t.iideva = 0x0908;\n t.iigujarati = 0x0a88;\n t.iigurmukhi = 0x0a08;\n t.iimatragurmukhi = 0x0a40;\n t.iinvertedbreve = 0x020b;\n t.iishortcyrillic = 0x0439;\n t.iivowelsignbengali = 0x09c0;\n t.iivowelsigndeva = 0x0940;\n t.iivowelsigngujarati = 0x0ac0;\n t.ij = 0x0133;\n t.ikatakana = 0x30a4;\n t.ikatakanahalfwidth = 0xff72;\n t.ikorean = 0x3163;\n t.ilde = 0x02dc;\n t.iluyhebrew = 0x05ac;\n t.imacron = 0x012b;\n t.imacroncyrillic = 0x04e3;\n t.imageorapproximatelyequal = 0x2253;\n t.imatragurmukhi = 0x0a3f;\n t.imonospace = 0xff49;\n t.increment = 0x2206;\n t.infinity = 0x221e;\n t.iniarmenian = 0x056b;\n t.integral = 0x222b;\n t.integralbottom = 0x2321;\n t.integralbt = 0x2321;\n t.integralex = 0xf8f5;\n t.integraltop = 0x2320;\n t.integraltp = 0x2320;\n t.intersection = 0x2229;\n t.intisquare = 0x3305;\n t.invbullet = 0x25d8;\n t.invcircle = 0x25d9;\n t.invsmileface = 0x263b;\n t.iocyrillic = 0x0451;\n t.iogonek = 0x012f;\n t.iota = 0x03b9;\n t.iotadieresis = 0x03ca;\n t.iotadieresistonos = 0x0390;\n t.iotalatin = 0x0269;\n t.iotatonos = 0x03af;\n t.iparen = 0x24a4;\n t.irigurmukhi = 0x0a72;\n t.ismallhiragana = 0x3043;\n t.ismallkatakana = 0x30a3;\n t.ismallkatakanahalfwidth = 0xff68;\n t.issharbengali = 0x09fa;\n t.istroke = 0x0268;\n t.isuperior = 0xf6ed;\n t.iterationhiragana = 0x309d;\n t.iterationkatakana = 0x30fd;\n t.itilde = 0x0129;\n t.itildebelow = 0x1e2d;\n t.iubopomofo = 0x3129;\n t.iucyrillic = 0x044e;\n t.ivowelsignbengali = 0x09bf;\n t.ivowelsigndeva = 0x093f;\n t.ivowelsigngujarati = 0x0abf;\n t.izhitsacyrillic = 0x0475;\n t.izhitsadblgravecyrillic = 0x0477;\n t.j = 0x006a;\n t.jaarmenian = 0x0571;\n t.jabengali = 0x099c;\n t.jadeva = 0x091c;\n t.jagujarati = 0x0a9c;\n t.jagurmukhi = 0x0a1c;\n t.jbopomofo = 0x3110;\n t.jcaron = 0x01f0;\n t.jcircle = 0x24d9;\n t.jcircumflex = 0x0135;\n t.jcrossedtail = 0x029d;\n t.jdotlessstroke = 0x025f;\n t.jecyrillic = 0x0458;\n t.jeemarabic = 0x062c;\n t.jeemfinalarabic = 0xfe9e;\n t.jeeminitialarabic = 0xfe9f;\n t.jeemmedialarabic = 0xfea0;\n t.jeharabic = 0x0698;\n t.jehfinalarabic = 0xfb8b;\n t.jhabengali = 0x099d;\n t.jhadeva = 0x091d;\n t.jhagujarati = 0x0a9d;\n t.jhagurmukhi = 0x0a1d;\n t.jheharmenian = 0x057b;\n t.jis = 0x3004;\n t.jmonospace = 0xff4a;\n t.jparen = 0x24a5;\n t.jsuperior = 0x02b2;\n t.k = 0x006b;\n t.kabashkircyrillic = 0x04a1;\n t.kabengali = 0x0995;\n t.kacute = 0x1e31;\n t.kacyrillic = 0x043a;\n t.kadescendercyrillic = 0x049b;\n t.kadeva = 0x0915;\n t.kaf = 0x05db;\n t.kafarabic = 0x0643;\n t.kafdagesh = 0xfb3b;\n t.kafdageshhebrew = 0xfb3b;\n t.kaffinalarabic = 0xfeda;\n t.kafhebrew = 0x05db;\n t.kafinitialarabic = 0xfedb;\n t.kafmedialarabic = 0xfedc;\n t.kafrafehebrew = 0xfb4d;\n t.kagujarati = 0x0a95;\n t.kagurmukhi = 0x0a15;\n t.kahiragana = 0x304b;\n t.kahookcyrillic = 0x04c4;\n t.kakatakana = 0x30ab;\n t.kakatakanahalfwidth = 0xff76;\n t.kappa = 0x03ba;\n t.kappasymbolgreek = 0x03f0;\n t.kapyeounmieumkorean = 0x3171;\n t.kapyeounphieuphkorean = 0x3184;\n t.kapyeounpieupkorean = 0x3178;\n t.kapyeounssangpieupkorean = 0x3179;\n t.karoriisquare = 0x330d;\n t.kashidaautoarabic = 0x0640;\n t.kashidaautonosidebearingarabic = 0x0640;\n t.kasmallkatakana = 0x30f5;\n t.kasquare = 0x3384;\n t.kasraarabic = 0x0650;\n t.kasratanarabic = 0x064d;\n t.kastrokecyrillic = 0x049f;\n t.katahiraprolongmarkhalfwidth = 0xff70;\n t.kaverticalstrokecyrillic = 0x049d;\n t.kbopomofo = 0x310e;\n t.kcalsquare = 0x3389;\n t.kcaron = 0x01e9;\n t.kcedilla = 0x0137;\n t.kcircle = 0x24da;\n t.kcommaaccent = 0x0137;\n t.kdotbelow = 0x1e33;\n t.keharmenian = 0x0584;\n t.kehiragana = 0x3051;\n t.kekatakana = 0x30b1;\n t.kekatakanahalfwidth = 0xff79;\n t.kenarmenian = 0x056f;\n t.kesmallkatakana = 0x30f6;\n t.kgreenlandic = 0x0138;\n t.khabengali = 0x0996;\n t.khacyrillic = 0x0445;\n t.khadeva = 0x0916;\n t.khagujarati = 0x0a96;\n t.khagurmukhi = 0x0a16;\n t.khaharabic = 0x062e;\n t.khahfinalarabic = 0xfea6;\n t.khahinitialarabic = 0xfea7;\n t.khahmedialarabic = 0xfea8;\n t.kheicoptic = 0x03e7;\n t.khhadeva = 0x0959;\n t.khhagurmukhi = 0x0a59;\n t.khieukhacirclekorean = 0x3278;\n t.khieukhaparenkorean = 0x3218;\n t.khieukhcirclekorean = 0x326a;\n t.khieukhkorean = 0x314b;\n t.khieukhparenkorean = 0x320a;\n t.khokhaithai = 0x0e02;\n t.khokhonthai = 0x0e05;\n t.khokhuatthai = 0x0e03;\n t.khokhwaithai = 0x0e04;\n t.khomutthai = 0x0e5b;\n t.khook = 0x0199;\n t.khorakhangthai = 0x0e06;\n t.khzsquare = 0x3391;\n t.kihiragana = 0x304d;\n t.kikatakana = 0x30ad;\n t.kikatakanahalfwidth = 0xff77;\n t.kiroguramusquare = 0x3315;\n t.kiromeetorusquare = 0x3316;\n t.kirosquare = 0x3314;\n t.kiyeokacirclekorean = 0x326e;\n t.kiyeokaparenkorean = 0x320e;\n t.kiyeokcirclekorean = 0x3260;\n t.kiyeokkorean = 0x3131;\n t.kiyeokparenkorean = 0x3200;\n t.kiyeoksioskorean = 0x3133;\n t.kjecyrillic = 0x045c;\n t.klinebelow = 0x1e35;\n t.klsquare = 0x3398;\n t.kmcubedsquare = 0x33a6;\n t.kmonospace = 0xff4b;\n t.kmsquaredsquare = 0x33a2;\n t.kohiragana = 0x3053;\n t.kohmsquare = 0x33c0;\n t.kokaithai = 0x0e01;\n t.kokatakana = 0x30b3;\n t.kokatakanahalfwidth = 0xff7a;\n t.kooposquare = 0x331e;\n t.koppacyrillic = 0x0481;\n t.koreanstandardsymbol = 0x327f;\n t.koroniscmb = 0x0343;\n t.kparen = 0x24a6;\n t.kpasquare = 0x33aa;\n t.ksicyrillic = 0x046f;\n t.ktsquare = 0x33cf;\n t.kturned = 0x029e;\n t.kuhiragana = 0x304f;\n t.kukatakana = 0x30af;\n t.kukatakanahalfwidth = 0xff78;\n t.kvsquare = 0x33b8;\n t.kwsquare = 0x33be;\n t.l = 0x006c;\n t.labengali = 0x09b2;\n t.lacute = 0x013a;\n t.ladeva = 0x0932;\n t.lagujarati = 0x0ab2;\n t.lagurmukhi = 0x0a32;\n t.lakkhangyaothai = 0x0e45;\n t.lamaleffinalarabic = 0xfefc;\n t.lamalefhamzaabovefinalarabic = 0xfef8;\n t.lamalefhamzaaboveisolatedarabic = 0xfef7;\n t.lamalefhamzabelowfinalarabic = 0xfefa;\n t.lamalefhamzabelowisolatedarabic = 0xfef9;\n t.lamalefisolatedarabic = 0xfefb;\n t.lamalefmaddaabovefinalarabic = 0xfef6;\n t.lamalefmaddaaboveisolatedarabic = 0xfef5;\n t.lamarabic = 0x0644;\n t.lambda = 0x03bb;\n t.lambdastroke = 0x019b;\n t.lamed = 0x05dc;\n t.lameddagesh = 0xfb3c;\n t.lameddageshhebrew = 0xfb3c;\n t.lamedhebrew = 0x05dc;\n t.lamfinalarabic = 0xfede;\n t.lamhahinitialarabic = 0xfcca;\n t.laminitialarabic = 0xfedf;\n t.lamjeeminitialarabic = 0xfcc9;\n t.lamkhahinitialarabic = 0xfccb;\n t.lamlamhehisolatedarabic = 0xfdf2;\n t.lammedialarabic = 0xfee0;\n t.lammeemhahinitialarabic = 0xfd88;\n t.lammeeminitialarabic = 0xfccc;\n t.largecircle = 0x25ef;\n t.lbar = 0x019a;\n t.lbelt = 0x026c;\n t.lbopomofo = 0x310c;\n t.lcaron = 0x013e;\n t.lcedilla = 0x013c;\n t.lcircle = 0x24db;\n t.lcircumflexbelow = 0x1e3d;\n t.lcommaaccent = 0x013c;\n t.ldot = 0x0140;\n t.ldotaccent = 0x0140;\n t.ldotbelow = 0x1e37;\n t.ldotbelowmacron = 0x1e39;\n t.leftangleabovecmb = 0x031a;\n t.lefttackbelowcmb = 0x0318;\n t.less = 0x003c;\n t.lessequal = 0x2264;\n t.lessequalorgreater = 0x22da;\n t.lessmonospace = 0xff1c;\n t.lessorequivalent = 0x2272;\n t.lessorgreater = 0x2276;\n t.lessoverequal = 0x2266;\n t.lesssmall = 0xfe64;\n t.lezh = 0x026e;\n t.lfblock = 0x258c;\n t.lhookretroflex = 0x026d;\n t.lira = 0x20a4;\n t.liwnarmenian = 0x056c;\n t.lj = 0x01c9;\n t.ljecyrillic = 0x0459;\n t.ll = 0xf6c0;\n t.lladeva = 0x0933;\n t.llagujarati = 0x0ab3;\n t.llinebelow = 0x1e3b;\n t.llladeva = 0x0934;\n t.llvocalicbengali = 0x09e1;\n t.llvocalicdeva = 0x0961;\n t.llvocalicvowelsignbengali = 0x09e3;\n t.llvocalicvowelsigndeva = 0x0963;\n t.lmiddletilde = 0x026b;\n t.lmonospace = 0xff4c;\n t.lmsquare = 0x33d0;\n t.lochulathai = 0x0e2c;\n t.logicaland = 0x2227;\n t.logicalnot = 0x00ac;\n t.logicalnotreversed = 0x2310;\n t.logicalor = 0x2228;\n t.lolingthai = 0x0e25;\n t.longs = 0x017f;\n t.lowlinecenterline = 0xfe4e;\n t.lowlinecmb = 0x0332;\n t.lowlinedashed = 0xfe4d;\n t.lozenge = 0x25ca;\n t.lparen = 0x24a7;\n t.lslash = 0x0142;\n t.lsquare = 0x2113;\n t.lsuperior = 0xf6ee;\n t.ltshade = 0x2591;\n t.luthai = 0x0e26;\n t.lvocalicbengali = 0x098c;\n t.lvocalicdeva = 0x090c;\n t.lvocalicvowelsignbengali = 0x09e2;\n t.lvocalicvowelsigndeva = 0x0962;\n t.lxsquare = 0x33d3;\n t.m = 0x006d;\n t.mabengali = 0x09ae;\n t.macron = 0x00af;\n t.macronbelowcmb = 0x0331;\n t.macroncmb = 0x0304;\n t.macronlowmod = 0x02cd;\n t.macronmonospace = 0xffe3;\n t.macute = 0x1e3f;\n t.madeva = 0x092e;\n t.magujarati = 0x0aae;\n t.magurmukhi = 0x0a2e;\n t.mahapakhhebrew = 0x05a4;\n t.mahapakhlefthebrew = 0x05a4;\n t.mahiragana = 0x307e;\n t.maichattawalowleftthai = 0xf895;\n t.maichattawalowrightthai = 0xf894;\n t.maichattawathai = 0x0e4b;\n t.maichattawaupperleftthai = 0xf893;\n t.maieklowleftthai = 0xf88c;\n t.maieklowrightthai = 0xf88b;\n t.maiekthai = 0x0e48;\n t.maiekupperleftthai = 0xf88a;\n t.maihanakatleftthai = 0xf884;\n t.maihanakatthai = 0x0e31;\n t.maitaikhuleftthai = 0xf889;\n t.maitaikhuthai = 0x0e47;\n t.maitholowleftthai = 0xf88f;\n t.maitholowrightthai = 0xf88e;\n t.maithothai = 0x0e49;\n t.maithoupperleftthai = 0xf88d;\n t.maitrilowleftthai = 0xf892;\n t.maitrilowrightthai = 0xf891;\n t.maitrithai = 0x0e4a;\n t.maitriupperleftthai = 0xf890;\n t.maiyamokthai = 0x0e46;\n t.makatakana = 0x30de;\n t.makatakanahalfwidth = 0xff8f;\n t.male = 0x2642;\n t.mansyonsquare = 0x3347;\n t.maqafhebrew = 0x05be;\n t.mars = 0x2642;\n t.masoracirclehebrew = 0x05af;\n t.masquare = 0x3383;\n t.mbopomofo = 0x3107;\n t.mbsquare = 0x33d4;\n t.mcircle = 0x24dc;\n t.mcubedsquare = 0x33a5;\n t.mdotaccent = 0x1e41;\n t.mdotbelow = 0x1e43;\n t.meemarabic = 0x0645;\n t.meemfinalarabic = 0xfee2;\n t.meeminitialarabic = 0xfee3;\n t.meemmedialarabic = 0xfee4;\n t.meemmeeminitialarabic = 0xfcd1;\n t.meemmeemisolatedarabic = 0xfc48;\n t.meetorusquare = 0x334d;\n t.mehiragana = 0x3081;\n t.meizierasquare = 0x337e;\n t.mekatakana = 0x30e1;\n t.mekatakanahalfwidth = 0xff92;\n t.mem = 0x05de;\n t.memdagesh = 0xfb3e;\n t.memdageshhebrew = 0xfb3e;\n t.memhebrew = 0x05de;\n t.menarmenian = 0x0574;\n t.merkhahebrew = 0x05a5;\n t.merkhakefulahebrew = 0x05a6;\n t.merkhakefulalefthebrew = 0x05a6;\n t.merkhalefthebrew = 0x05a5;\n t.mhook = 0x0271;\n t.mhzsquare = 0x3392;\n t.middledotkatakanahalfwidth = 0xff65;\n t.middot = 0x00b7;\n t.mieumacirclekorean = 0x3272;\n t.mieumaparenkorean = 0x3212;\n t.mieumcirclekorean = 0x3264;\n t.mieumkorean = 0x3141;\n t.mieumpansioskorean = 0x3170;\n t.mieumparenkorean = 0x3204;\n t.mieumpieupkorean = 0x316e;\n t.mieumsioskorean = 0x316f;\n t.mihiragana = 0x307f;\n t.mikatakana = 0x30df;\n t.mikatakanahalfwidth = 0xff90;\n t.minus = 0x2212;\n t.minusbelowcmb = 0x0320;\n t.minuscircle = 0x2296;\n t.minusmod = 0x02d7;\n t.minusplus = 0x2213;\n t.minute = 0x2032;\n t.miribaarusquare = 0x334a;\n t.mirisquare = 0x3349;\n t.mlonglegturned = 0x0270;\n t.mlsquare = 0x3396;\n t.mmcubedsquare = 0x33a3;\n t.mmonospace = 0xff4d;\n t.mmsquaredsquare = 0x339f;\n t.mohiragana = 0x3082;\n t.mohmsquare = 0x33c1;\n t.mokatakana = 0x30e2;\n t.mokatakanahalfwidth = 0xff93;\n t.molsquare = 0x33d6;\n t.momathai = 0x0e21;\n t.moverssquare = 0x33a7;\n t.moverssquaredsquare = 0x33a8;\n t.mparen = 0x24a8;\n t.mpasquare = 0x33ab;\n t.mssquare = 0x33b3;\n t.msuperior = 0xf6ef;\n t.mturned = 0x026f;\n t.mu = 0x00b5;\n t.mu1 = 0x00b5;\n t.muasquare = 0x3382;\n t.muchgreater = 0x226b;\n t.muchless = 0x226a;\n t.mufsquare = 0x338c;\n t.mugreek = 0x03bc;\n t.mugsquare = 0x338d;\n t.muhiragana = 0x3080;\n t.mukatakana = 0x30e0;\n t.mukatakanahalfwidth = 0xff91;\n t.mulsquare = 0x3395;\n t.multiply = 0x00d7;\n t.mumsquare = 0x339b;\n t.munahhebrew = 0x05a3;\n t.munahlefthebrew = 0x05a3;\n t.musicalnote = 0x266a;\n t.musicalnotedbl = 0x266b;\n t.musicflatsign = 0x266d;\n t.musicsharpsign = 0x266f;\n t.mussquare = 0x33b2;\n t.muvsquare = 0x33b6;\n t.muwsquare = 0x33bc;\n t.mvmegasquare = 0x33b9;\n t.mvsquare = 0x33b7;\n t.mwmegasquare = 0x33bf;\n t.mwsquare = 0x33bd;\n t.n = 0x006e;\n t.nabengali = 0x09a8;\n t.nabla = 0x2207;\n t.nacute = 0x0144;\n t.nadeva = 0x0928;\n t.nagujarati = 0x0aa8;\n t.nagurmukhi = 0x0a28;\n t.nahiragana = 0x306a;\n t.nakatakana = 0x30ca;\n t.nakatakanahalfwidth = 0xff85;\n t.napostrophe = 0x0149;\n t.nasquare = 0x3381;\n t.nbopomofo = 0x310b;\n t.nbspace = 0x00a0;\n t.ncaron = 0x0148;\n t.ncedilla = 0x0146;\n t.ncircle = 0x24dd;\n t.ncircumflexbelow = 0x1e4b;\n t.ncommaaccent = 0x0146;\n t.ndotaccent = 0x1e45;\n t.ndotbelow = 0x1e47;\n t.nehiragana = 0x306d;\n t.nekatakana = 0x30cd;\n t.nekatakanahalfwidth = 0xff88;\n t.newsheqelsign = 0x20aa;\n t.nfsquare = 0x338b;\n t.ngabengali = 0x0999;\n t.ngadeva = 0x0919;\n t.ngagujarati = 0x0a99;\n t.ngagurmukhi = 0x0a19;\n t.ngonguthai = 0x0e07;\n t.nhiragana = 0x3093;\n t.nhookleft = 0x0272;\n t.nhookretroflex = 0x0273;\n t.nieunacirclekorean = 0x326f;\n t.nieunaparenkorean = 0x320f;\n t.nieuncieuckorean = 0x3135;\n t.nieuncirclekorean = 0x3261;\n t.nieunhieuhkorean = 0x3136;\n t.nieunkorean = 0x3134;\n t.nieunpansioskorean = 0x3168;\n t.nieunparenkorean = 0x3201;\n t.nieunsioskorean = 0x3167;\n t.nieuntikeutkorean = 0x3166;\n t.nihiragana = 0x306b;\n t.nikatakana = 0x30cb;\n t.nikatakanahalfwidth = 0xff86;\n t.nikhahitleftthai = 0xf899;\n t.nikhahitthai = 0x0e4d;\n t.nine = 0x0039;\n t.ninearabic = 0x0669;\n t.ninebengali = 0x09ef;\n t.ninecircle = 0x2468;\n t.ninecircleinversesansserif = 0x2792;\n t.ninedeva = 0x096f;\n t.ninegujarati = 0x0aef;\n t.ninegurmukhi = 0x0a6f;\n t.ninehackarabic = 0x0669;\n t.ninehangzhou = 0x3029;\n t.nineideographicparen = 0x3228;\n t.nineinferior = 0x2089;\n t.ninemonospace = 0xff19;\n t.nineoldstyle = 0xf739;\n t.nineparen = 0x247c;\n t.nineperiod = 0x2490;\n t.ninepersian = 0x06f9;\n t.nineroman = 0x2178;\n t.ninesuperior = 0x2079;\n t.nineteencircle = 0x2472;\n t.nineteenparen = 0x2486;\n t.nineteenperiod = 0x249a;\n t.ninethai = 0x0e59;\n t.nj = 0x01cc;\n t.njecyrillic = 0x045a;\n t.nkatakana = 0x30f3;\n t.nkatakanahalfwidth = 0xff9d;\n t.nlegrightlong = 0x019e;\n t.nlinebelow = 0x1e49;\n t.nmonospace = 0xff4e;\n t.nmsquare = 0x339a;\n t.nnabengali = 0x09a3;\n t.nnadeva = 0x0923;\n t.nnagujarati = 0x0aa3;\n t.nnagurmukhi = 0x0a23;\n t.nnnadeva = 0x0929;\n t.nohiragana = 0x306e;\n t.nokatakana = 0x30ce;\n t.nokatakanahalfwidth = 0xff89;\n t.nonbreakingspace = 0x00a0;\n t.nonenthai = 0x0e13;\n t.nonuthai = 0x0e19;\n t.noonarabic = 0x0646;\n t.noonfinalarabic = 0xfee6;\n t.noonghunnaarabic = 0x06ba;\n t.noonghunnafinalarabic = 0xfb9f;\n t.nooninitialarabic = 0xfee7;\n t.noonjeeminitialarabic = 0xfcd2;\n t.noonjeemisolatedarabic = 0xfc4b;\n t.noonmedialarabic = 0xfee8;\n t.noonmeeminitialarabic = 0xfcd5;\n t.noonmeemisolatedarabic = 0xfc4e;\n t.noonnoonfinalarabic = 0xfc8d;\n t.notcontains = 0x220c;\n t.notelement = 0x2209;\n t.notelementof = 0x2209;\n t.notequal = 0x2260;\n t.notgreater = 0x226f;\n t.notgreaternorequal = 0x2271;\n t.notgreaternorless = 0x2279;\n t.notidentical = 0x2262;\n t.notless = 0x226e;\n t.notlessnorequal = 0x2270;\n t.notparallel = 0x2226;\n t.notprecedes = 0x2280;\n t.notsubset = 0x2284;\n t.notsucceeds = 0x2281;\n t.notsuperset = 0x2285;\n t.nowarmenian = 0x0576;\n t.nparen = 0x24a9;\n t.nssquare = 0x33b1;\n t.nsuperior = 0x207f;\n t.ntilde = 0x00f1;\n t.nu = 0x03bd;\n t.nuhiragana = 0x306c;\n t.nukatakana = 0x30cc;\n t.nukatakanahalfwidth = 0xff87;\n t.nuktabengali = 0x09bc;\n t.nuktadeva = 0x093c;\n t.nuktagujarati = 0x0abc;\n t.nuktagurmukhi = 0x0a3c;\n t.numbersign = 0x0023;\n t.numbersignmonospace = 0xff03;\n t.numbersignsmall = 0xfe5f;\n t.numeralsigngreek = 0x0374;\n t.numeralsignlowergreek = 0x0375;\n t.numero = 0x2116;\n t.nun = 0x05e0;\n t.nundagesh = 0xfb40;\n t.nundageshhebrew = 0xfb40;\n t.nunhebrew = 0x05e0;\n t.nvsquare = 0x33b5;\n t.nwsquare = 0x33bb;\n t.nyabengali = 0x099e;\n t.nyadeva = 0x091e;\n t.nyagujarati = 0x0a9e;\n t.nyagurmukhi = 0x0a1e;\n t.o = 0x006f;\n t.oacute = 0x00f3;\n t.oangthai = 0x0e2d;\n t.obarred = 0x0275;\n t.obarredcyrillic = 0x04e9;\n t.obarreddieresiscyrillic = 0x04eb;\n t.obengali = 0x0993;\n t.obopomofo = 0x311b;\n t.obreve = 0x014f;\n t.ocandradeva = 0x0911;\n t.ocandragujarati = 0x0a91;\n t.ocandravowelsigndeva = 0x0949;\n t.ocandravowelsigngujarati = 0x0ac9;\n t.ocaron = 0x01d2;\n t.ocircle = 0x24de;\n t.ocircumflex = 0x00f4;\n t.ocircumflexacute = 0x1ed1;\n t.ocircumflexdotbelow = 0x1ed9;\n t.ocircumflexgrave = 0x1ed3;\n t.ocircumflexhookabove = 0x1ed5;\n t.ocircumflextilde = 0x1ed7;\n t.ocyrillic = 0x043e;\n t.odblacute = 0x0151;\n t.odblgrave = 0x020d;\n t.odeva = 0x0913;\n t.odieresis = 0x00f6;\n t.odieresiscyrillic = 0x04e7;\n t.odotbelow = 0x1ecd;\n t.oe = 0x0153;\n t.oekorean = 0x315a;\n t.ogonek = 0x02db;\n t.ogonekcmb = 0x0328;\n t.ograve = 0x00f2;\n t.ogujarati = 0x0a93;\n t.oharmenian = 0x0585;\n t.ohiragana = 0x304a;\n t.ohookabove = 0x1ecf;\n t.ohorn = 0x01a1;\n t.ohornacute = 0x1edb;\n t.ohorndotbelow = 0x1ee3;\n t.ohorngrave = 0x1edd;\n t.ohornhookabove = 0x1edf;\n t.ohorntilde = 0x1ee1;\n t.ohungarumlaut = 0x0151;\n t.oi = 0x01a3;\n t.oinvertedbreve = 0x020f;\n t.okatakana = 0x30aa;\n t.okatakanahalfwidth = 0xff75;\n t.okorean = 0x3157;\n t.olehebrew = 0x05ab;\n t.omacron = 0x014d;\n t.omacronacute = 0x1e53;\n t.omacrongrave = 0x1e51;\n t.omdeva = 0x0950;\n t.omega = 0x03c9;\n t.omega1 = 0x03d6;\n t.omegacyrillic = 0x0461;\n t.omegalatinclosed = 0x0277;\n t.omegaroundcyrillic = 0x047b;\n t.omegatitlocyrillic = 0x047d;\n t.omegatonos = 0x03ce;\n t.omgujarati = 0x0ad0;\n t.omicron = 0x03bf;\n t.omicrontonos = 0x03cc;\n t.omonospace = 0xff4f;\n t.one = 0x0031;\n t.onearabic = 0x0661;\n t.onebengali = 0x09e7;\n t.onecircle = 0x2460;\n t.onecircleinversesansserif = 0x278a;\n t.onedeva = 0x0967;\n t.onedotenleader = 0x2024;\n t.oneeighth = 0x215b;\n t.onefitted = 0xf6dc;\n t.onegujarati = 0x0ae7;\n t.onegurmukhi = 0x0a67;\n t.onehackarabic = 0x0661;\n t.onehalf = 0x00bd;\n t.onehangzhou = 0x3021;\n t.oneideographicparen = 0x3220;\n t.oneinferior = 0x2081;\n t.onemonospace = 0xff11;\n t.onenumeratorbengali = 0x09f4;\n t.oneoldstyle = 0xf731;\n t.oneparen = 0x2474;\n t.oneperiod = 0x2488;\n t.onepersian = 0x06f1;\n t.onequarter = 0x00bc;\n t.oneroman = 0x2170;\n t.onesuperior = 0x00b9;\n t.onethai = 0x0e51;\n t.onethird = 0x2153;\n t.oogonek = 0x01eb;\n t.oogonekmacron = 0x01ed;\n t.oogurmukhi = 0x0a13;\n t.oomatragurmukhi = 0x0a4b;\n t.oopen = 0x0254;\n t.oparen = 0x24aa;\n t.openbullet = 0x25e6;\n t.option = 0x2325;\n t.ordfeminine = 0x00aa;\n t.ordmasculine = 0x00ba;\n t.orthogonal = 0x221f;\n t.oshortdeva = 0x0912;\n t.oshortvowelsigndeva = 0x094a;\n t.oslash = 0x00f8;\n t.oslashacute = 0x01ff;\n t.osmallhiragana = 0x3049;\n t.osmallkatakana = 0x30a9;\n t.osmallkatakanahalfwidth = 0xff6b;\n t.ostrokeacute = 0x01ff;\n t.osuperior = 0xf6f0;\n t.otcyrillic = 0x047f;\n t.otilde = 0x00f5;\n t.otildeacute = 0x1e4d;\n t.otildedieresis = 0x1e4f;\n t.oubopomofo = 0x3121;\n t.overline = 0x203e;\n t.overlinecenterline = 0xfe4a;\n t.overlinecmb = 0x0305;\n t.overlinedashed = 0xfe49;\n t.overlinedblwavy = 0xfe4c;\n t.overlinewavy = 0xfe4b;\n t.overscore = 0x00af;\n t.ovowelsignbengali = 0x09cb;\n t.ovowelsigndeva = 0x094b;\n t.ovowelsigngujarati = 0x0acb;\n t.p = 0x0070;\n t.paampssquare = 0x3380;\n t.paasentosquare = 0x332b;\n t.pabengali = 0x09aa;\n t.pacute = 0x1e55;\n t.padeva = 0x092a;\n t.pagedown = 0x21df;\n t.pageup = 0x21de;\n t.pagujarati = 0x0aaa;\n t.pagurmukhi = 0x0a2a;\n t.pahiragana = 0x3071;\n t.paiyannoithai = 0x0e2f;\n t.pakatakana = 0x30d1;\n t.palatalizationcyrilliccmb = 0x0484;\n t.palochkacyrillic = 0x04c0;\n t.pansioskorean = 0x317f;\n t.paragraph = 0x00b6;\n t.parallel = 0x2225;\n t.parenleft = 0x0028;\n t.parenleftaltonearabic = 0xfd3e;\n t.parenleftbt = 0xf8ed;\n t.parenleftex = 0xf8ec;\n t.parenleftinferior = 0x208d;\n t.parenleftmonospace = 0xff08;\n t.parenleftsmall = 0xfe59;\n t.parenleftsuperior = 0x207d;\n t.parenlefttp = 0xf8eb;\n t.parenleftvertical = 0xfe35;\n t.parenright = 0x0029;\n t.parenrightaltonearabic = 0xfd3f;\n t.parenrightbt = 0xf8f8;\n t.parenrightex = 0xf8f7;\n t.parenrightinferior = 0x208e;\n t.parenrightmonospace = 0xff09;\n t.parenrightsmall = 0xfe5a;\n t.parenrightsuperior = 0x207e;\n t.parenrighttp = 0xf8f6;\n t.parenrightvertical = 0xfe36;\n t.partialdiff = 0x2202;\n t.paseqhebrew = 0x05c0;\n t.pashtahebrew = 0x0599;\n t.pasquare = 0x33a9;\n t.patah = 0x05b7;\n t.patah11 = 0x05b7;\n t.patah1d = 0x05b7;\n t.patah2a = 0x05b7;\n t.patahhebrew = 0x05b7;\n t.patahnarrowhebrew = 0x05b7;\n t.patahquarterhebrew = 0x05b7;\n t.patahwidehebrew = 0x05b7;\n t.pazerhebrew = 0x05a1;\n t.pbopomofo = 0x3106;\n t.pcircle = 0x24df;\n t.pdotaccent = 0x1e57;\n t.pe = 0x05e4;\n t.pecyrillic = 0x043f;\n t.pedagesh = 0xfb44;\n t.pedageshhebrew = 0xfb44;\n t.peezisquare = 0x333b;\n t.pefinaldageshhebrew = 0xfb43;\n t.peharabic = 0x067e;\n t.peharmenian = 0x057a;\n t.pehebrew = 0x05e4;\n t.pehfinalarabic = 0xfb57;\n t.pehinitialarabic = 0xfb58;\n t.pehiragana = 0x307a;\n t.pehmedialarabic = 0xfb59;\n t.pekatakana = 0x30da;\n t.pemiddlehookcyrillic = 0x04a7;\n t.perafehebrew = 0xfb4e;\n t.percent = 0x0025;\n t.percentarabic = 0x066a;\n t.percentmonospace = 0xff05;\n t.percentsmall = 0xfe6a;\n t.period = 0x002e;\n t.periodarmenian = 0x0589;\n t.periodcentered = 0x00b7;\n t.periodhalfwidth = 0xff61;\n t.periodinferior = 0xf6e7;\n t.periodmonospace = 0xff0e;\n t.periodsmall = 0xfe52;\n t.periodsuperior = 0xf6e8;\n t.perispomenigreekcmb = 0x0342;\n t.perpendicular = 0x22a5;\n t.perthousand = 0x2030;\n t.peseta = 0x20a7;\n t.pfsquare = 0x338a;\n t.phabengali = 0x09ab;\n t.phadeva = 0x092b;\n t.phagujarati = 0x0aab;\n t.phagurmukhi = 0x0a2b;\n t.phi = 0x03c6;\n t.phi1 = 0x03d5;\n t.phieuphacirclekorean = 0x327a;\n t.phieuphaparenkorean = 0x321a;\n t.phieuphcirclekorean = 0x326c;\n t.phieuphkorean = 0x314d;\n t.phieuphparenkorean = 0x320c;\n t.philatin = 0x0278;\n t.phinthuthai = 0x0e3a;\n t.phisymbolgreek = 0x03d5;\n t.phook = 0x01a5;\n t.phophanthai = 0x0e1e;\n t.phophungthai = 0x0e1c;\n t.phosamphaothai = 0x0e20;\n t.pi = 0x03c0;\n t.pieupacirclekorean = 0x3273;\n t.pieupaparenkorean = 0x3213;\n t.pieupcieuckorean = 0x3176;\n t.pieupcirclekorean = 0x3265;\n t.pieupkiyeokkorean = 0x3172;\n t.pieupkorean = 0x3142;\n t.pieupparenkorean = 0x3205;\n t.pieupsioskiyeokkorean = 0x3174;\n t.pieupsioskorean = 0x3144;\n t.pieupsiostikeutkorean = 0x3175;\n t.pieupthieuthkorean = 0x3177;\n t.pieuptikeutkorean = 0x3173;\n t.pihiragana = 0x3074;\n t.pikatakana = 0x30d4;\n t.pisymbolgreek = 0x03d6;\n t.piwrarmenian = 0x0583;\n t.plus = 0x002b;\n t.plusbelowcmb = 0x031f;\n t.pluscircle = 0x2295;\n t.plusminus = 0x00b1;\n t.plusmod = 0x02d6;\n t.plusmonospace = 0xff0b;\n t.plussmall = 0xfe62;\n t.plussuperior = 0x207a;\n t.pmonospace = 0xff50;\n t.pmsquare = 0x33d8;\n t.pohiragana = 0x307d;\n t.pointingindexdownwhite = 0x261f;\n t.pointingindexleftwhite = 0x261c;\n t.pointingindexrightwhite = 0x261e;\n t.pointingindexupwhite = 0x261d;\n t.pokatakana = 0x30dd;\n t.poplathai = 0x0e1b;\n t.postalmark = 0x3012;\n t.postalmarkface = 0x3020;\n t.pparen = 0x24ab;\n t.precedes = 0x227a;\n t.prescription = 0x211e;\n t.primemod = 0x02b9;\n t.primereversed = 0x2035;\n t.product = 0x220f;\n t.projective = 0x2305;\n t.prolongedkana = 0x30fc;\n t.propellor = 0x2318;\n t.propersubset = 0x2282;\n t.propersuperset = 0x2283;\n t.proportion = 0x2237;\n t.proportional = 0x221d;\n t.psi = 0x03c8;\n t.psicyrillic = 0x0471;\n t.psilipneumatacyrilliccmb = 0x0486;\n t.pssquare = 0x33b0;\n t.puhiragana = 0x3077;\n t.pukatakana = 0x30d7;\n t.pvsquare = 0x33b4;\n t.pwsquare = 0x33ba;\n t.q = 0x0071;\n t.qadeva = 0x0958;\n t.qadmahebrew = 0x05a8;\n t.qafarabic = 0x0642;\n t.qaffinalarabic = 0xfed6;\n t.qafinitialarabic = 0xfed7;\n t.qafmedialarabic = 0xfed8;\n t.qamats = 0x05b8;\n t.qamats10 = 0x05b8;\n t.qamats1a = 0x05b8;\n t.qamats1c = 0x05b8;\n t.qamats27 = 0x05b8;\n t.qamats29 = 0x05b8;\n t.qamats33 = 0x05b8;\n t.qamatsde = 0x05b8;\n t.qamatshebrew = 0x05b8;\n t.qamatsnarrowhebrew = 0x05b8;\n t.qamatsqatanhebrew = 0x05b8;\n t.qamatsqatannarrowhebrew = 0x05b8;\n t.qamatsqatanquarterhebrew = 0x05b8;\n t.qamatsqatanwidehebrew = 0x05b8;\n t.qamatsquarterhebrew = 0x05b8;\n t.qamatswidehebrew = 0x05b8;\n t.qarneyparahebrew = 0x059f;\n t.qbopomofo = 0x3111;\n t.qcircle = 0x24e0;\n t.qhook = 0x02a0;\n t.qmonospace = 0xff51;\n t.qof = 0x05e7;\n t.qofdagesh = 0xfb47;\n t.qofdageshhebrew = 0xfb47;\n t.qofhebrew = 0x05e7;\n t.qparen = 0x24ac;\n t.quarternote = 0x2669;\n t.qubuts = 0x05bb;\n t.qubuts18 = 0x05bb;\n t.qubuts25 = 0x05bb;\n t.qubuts31 = 0x05bb;\n t.qubutshebrew = 0x05bb;\n t.qubutsnarrowhebrew = 0x05bb;\n t.qubutsquarterhebrew = 0x05bb;\n t.qubutswidehebrew = 0x05bb;\n t.question = 0x003f;\n t.questionarabic = 0x061f;\n t.questionarmenian = 0x055e;\n t.questiondown = 0x00bf;\n t.questiondownsmall = 0xf7bf;\n t.questiongreek = 0x037e;\n t.questionmonospace = 0xff1f;\n t.questionsmall = 0xf73f;\n t.quotedbl = 0x0022;\n t.quotedblbase = 0x201e;\n t.quotedblleft = 0x201c;\n t.quotedblmonospace = 0xff02;\n t.quotedblprime = 0x301e;\n t.quotedblprimereversed = 0x301d;\n t.quotedblright = 0x201d;\n t.quoteleft = 0x2018;\n t.quoteleftreversed = 0x201b;\n t.quotereversed = 0x201b;\n t.quoteright = 0x2019;\n t.quoterightn = 0x0149;\n t.quotesinglbase = 0x201a;\n t.quotesingle = 0x0027;\n t.quotesinglemonospace = 0xff07;\n t.r = 0x0072;\n t.raarmenian = 0x057c;\n t.rabengali = 0x09b0;\n t.racute = 0x0155;\n t.radeva = 0x0930;\n t.radical = 0x221a;\n t.radicalex = 0xf8e5;\n t.radoverssquare = 0x33ae;\n t.radoverssquaredsquare = 0x33af;\n t.radsquare = 0x33ad;\n t.rafe = 0x05bf;\n t.rafehebrew = 0x05bf;\n t.ragujarati = 0x0ab0;\n t.ragurmukhi = 0x0a30;\n t.rahiragana = 0x3089;\n t.rakatakana = 0x30e9;\n t.rakatakanahalfwidth = 0xff97;\n t.ralowerdiagonalbengali = 0x09f1;\n t.ramiddlediagonalbengali = 0x09f0;\n t.ramshorn = 0x0264;\n t.ratio = 0x2236;\n t.rbopomofo = 0x3116;\n t.rcaron = 0x0159;\n t.rcedilla = 0x0157;\n t.rcircle = 0x24e1;\n t.rcommaaccent = 0x0157;\n t.rdblgrave = 0x0211;\n t.rdotaccent = 0x1e59;\n t.rdotbelow = 0x1e5b;\n t.rdotbelowmacron = 0x1e5d;\n t.referencemark = 0x203b;\n t.reflexsubset = 0x2286;\n t.reflexsuperset = 0x2287;\n t.registered = 0x00ae;\n t.registersans = 0xf8e8;\n t.registerserif = 0xf6da;\n t.reharabic = 0x0631;\n t.reharmenian = 0x0580;\n t.rehfinalarabic = 0xfeae;\n t.rehiragana = 0x308c;\n t.rekatakana = 0x30ec;\n t.rekatakanahalfwidth = 0xff9a;\n t.resh = 0x05e8;\n t.reshdageshhebrew = 0xfb48;\n t.reshhebrew = 0x05e8;\n t.reversedtilde = 0x223d;\n t.reviahebrew = 0x0597;\n t.reviamugrashhebrew = 0x0597;\n t.revlogicalnot = 0x2310;\n t.rfishhook = 0x027e;\n t.rfishhookreversed = 0x027f;\n t.rhabengali = 0x09dd;\n t.rhadeva = 0x095d;\n t.rho = 0x03c1;\n t.rhook = 0x027d;\n t.rhookturned = 0x027b;\n t.rhookturnedsuperior = 0x02b5;\n t.rhosymbolgreek = 0x03f1;\n t.rhotichookmod = 0x02de;\n t.rieulacirclekorean = 0x3271;\n t.rieulaparenkorean = 0x3211;\n t.rieulcirclekorean = 0x3263;\n t.rieulhieuhkorean = 0x3140;\n t.rieulkiyeokkorean = 0x313a;\n t.rieulkiyeoksioskorean = 0x3169;\n t.rieulkorean = 0x3139;\n t.rieulmieumkorean = 0x313b;\n t.rieulpansioskorean = 0x316c;\n t.rieulparenkorean = 0x3203;\n t.rieulphieuphkorean = 0x313f;\n t.rieulpieupkorean = 0x313c;\n t.rieulpieupsioskorean = 0x316b;\n t.rieulsioskorean = 0x313d;\n t.rieulthieuthkorean = 0x313e;\n t.rieultikeutkorean = 0x316a;\n t.rieulyeorinhieuhkorean = 0x316d;\n t.rightangle = 0x221f;\n t.righttackbelowcmb = 0x0319;\n t.righttriangle = 0x22bf;\n t.rihiragana = 0x308a;\n t.rikatakana = 0x30ea;\n t.rikatakanahalfwidth = 0xff98;\n t.ring = 0x02da;\n t.ringbelowcmb = 0x0325;\n t.ringcmb = 0x030a;\n t.ringhalfleft = 0x02bf;\n t.ringhalfleftarmenian = 0x0559;\n t.ringhalfleftbelowcmb = 0x031c;\n t.ringhalfleftcentered = 0x02d3;\n t.ringhalfright = 0x02be;\n t.ringhalfrightbelowcmb = 0x0339;\n t.ringhalfrightcentered = 0x02d2;\n t.rinvertedbreve = 0x0213;\n t.rittorusquare = 0x3351;\n t.rlinebelow = 0x1e5f;\n t.rlongleg = 0x027c;\n t.rlonglegturned = 0x027a;\n t.rmonospace = 0xff52;\n t.rohiragana = 0x308d;\n t.rokatakana = 0x30ed;\n t.rokatakanahalfwidth = 0xff9b;\n t.roruathai = 0x0e23;\n t.rparen = 0x24ad;\n t.rrabengali = 0x09dc;\n t.rradeva = 0x0931;\n t.rragurmukhi = 0x0a5c;\n t.rreharabic = 0x0691;\n t.rrehfinalarabic = 0xfb8d;\n t.rrvocalicbengali = 0x09e0;\n t.rrvocalicdeva = 0x0960;\n t.rrvocalicgujarati = 0x0ae0;\n t.rrvocalicvowelsignbengali = 0x09c4;\n t.rrvocalicvowelsigndeva = 0x0944;\n t.rrvocalicvowelsigngujarati = 0x0ac4;\n t.rsuperior = 0xf6f1;\n t.rtblock = 0x2590;\n t.rturned = 0x0279;\n t.rturnedsuperior = 0x02b4;\n t.ruhiragana = 0x308b;\n t.rukatakana = 0x30eb;\n t.rukatakanahalfwidth = 0xff99;\n t.rupeemarkbengali = 0x09f2;\n t.rupeesignbengali = 0x09f3;\n t.rupiah = 0xf6dd;\n t.ruthai = 0x0e24;\n t.rvocalicbengali = 0x098b;\n t.rvocalicdeva = 0x090b;\n t.rvocalicgujarati = 0x0a8b;\n t.rvocalicvowelsignbengali = 0x09c3;\n t.rvocalicvowelsigndeva = 0x0943;\n t.rvocalicvowelsigngujarati = 0x0ac3;\n t.s = 0x0073;\n t.sabengali = 0x09b8;\n t.sacute = 0x015b;\n t.sacutedotaccent = 0x1e65;\n t.sadarabic = 0x0635;\n t.sadeva = 0x0938;\n t.sadfinalarabic = 0xfeba;\n t.sadinitialarabic = 0xfebb;\n t.sadmedialarabic = 0xfebc;\n t.sagujarati = 0x0ab8;\n t.sagurmukhi = 0x0a38;\n t.sahiragana = 0x3055;\n t.sakatakana = 0x30b5;\n t.sakatakanahalfwidth = 0xff7b;\n t.sallallahoualayhewasallamarabic = 0xfdfa;\n t.samekh = 0x05e1;\n t.samekhdagesh = 0xfb41;\n t.samekhdageshhebrew = 0xfb41;\n t.samekhhebrew = 0x05e1;\n t.saraaathai = 0x0e32;\n t.saraaethai = 0x0e41;\n t.saraaimaimalaithai = 0x0e44;\n t.saraaimaimuanthai = 0x0e43;\n t.saraamthai = 0x0e33;\n t.saraathai = 0x0e30;\n t.saraethai = 0x0e40;\n t.saraiileftthai = 0xf886;\n t.saraiithai = 0x0e35;\n t.saraileftthai = 0xf885;\n t.saraithai = 0x0e34;\n t.saraothai = 0x0e42;\n t.saraueeleftthai = 0xf888;\n t.saraueethai = 0x0e37;\n t.saraueleftthai = 0xf887;\n t.sarauethai = 0x0e36;\n t.sarauthai = 0x0e38;\n t.sarauuthai = 0x0e39;\n t.sbopomofo = 0x3119;\n t.scaron = 0x0161;\n t.scarondotaccent = 0x1e67;\n t.scedilla = 0x015f;\n t.schwa = 0x0259;\n t.schwacyrillic = 0x04d9;\n t.schwadieresiscyrillic = 0x04db;\n t.schwahook = 0x025a;\n t.scircle = 0x24e2;\n t.scircumflex = 0x015d;\n t.scommaaccent = 0x0219;\n t.sdotaccent = 0x1e61;\n t.sdotbelow = 0x1e63;\n t.sdotbelowdotaccent = 0x1e69;\n t.seagullbelowcmb = 0x033c;\n t.second = 0x2033;\n t.secondtonechinese = 0x02ca;\n t.section = 0x00a7;\n t.seenarabic = 0x0633;\n t.seenfinalarabic = 0xfeb2;\n t.seeninitialarabic = 0xfeb3;\n t.seenmedialarabic = 0xfeb4;\n t.segol = 0x05b6;\n t.segol13 = 0x05b6;\n t.segol1f = 0x05b6;\n t.segol2c = 0x05b6;\n t.segolhebrew = 0x05b6;\n t.segolnarrowhebrew = 0x05b6;\n t.segolquarterhebrew = 0x05b6;\n t.segoltahebrew = 0x0592;\n t.segolwidehebrew = 0x05b6;\n t.seharmenian = 0x057d;\n t.sehiragana = 0x305b;\n t.sekatakana = 0x30bb;\n t.sekatakanahalfwidth = 0xff7e;\n t.semicolon = 0x003b;\n t.semicolonarabic = 0x061b;\n t.semicolonmonospace = 0xff1b;\n t.semicolonsmall = 0xfe54;\n t.semivoicedmarkkana = 0x309c;\n t.semivoicedmarkkanahalfwidth = 0xff9f;\n t.sentisquare = 0x3322;\n t.sentosquare = 0x3323;\n t.seven = 0x0037;\n t.sevenarabic = 0x0667;\n t.sevenbengali = 0x09ed;\n t.sevencircle = 0x2466;\n t.sevencircleinversesansserif = 0x2790;\n t.sevendeva = 0x096d;\n t.seveneighths = 0x215e;\n t.sevengujarati = 0x0aed;\n t.sevengurmukhi = 0x0a6d;\n t.sevenhackarabic = 0x0667;\n t.sevenhangzhou = 0x3027;\n t.sevenideographicparen = 0x3226;\n t.seveninferior = 0x2087;\n t.sevenmonospace = 0xff17;\n t.sevenoldstyle = 0xf737;\n t.sevenparen = 0x247a;\n t.sevenperiod = 0x248e;\n t.sevenpersian = 0x06f7;\n t.sevenroman = 0x2176;\n t.sevensuperior = 0x2077;\n t.seventeencircle = 0x2470;\n t.seventeenparen = 0x2484;\n t.seventeenperiod = 0x2498;\n t.seventhai = 0x0e57;\n t.sfthyphen = 0x00ad;\n t.shaarmenian = 0x0577;\n t.shabengali = 0x09b6;\n t.shacyrillic = 0x0448;\n t.shaddaarabic = 0x0651;\n t.shaddadammaarabic = 0xfc61;\n t.shaddadammatanarabic = 0xfc5e;\n t.shaddafathaarabic = 0xfc60;\n t.shaddakasraarabic = 0xfc62;\n t.shaddakasratanarabic = 0xfc5f;\n t.shade = 0x2592;\n t.shadedark = 0x2593;\n t.shadelight = 0x2591;\n t.shademedium = 0x2592;\n t.shadeva = 0x0936;\n t.shagujarati = 0x0ab6;\n t.shagurmukhi = 0x0a36;\n t.shalshelethebrew = 0x0593;\n t.shbopomofo = 0x3115;\n t.shchacyrillic = 0x0449;\n t.sheenarabic = 0x0634;\n t.sheenfinalarabic = 0xfeb6;\n t.sheeninitialarabic = 0xfeb7;\n t.sheenmedialarabic = 0xfeb8;\n t.sheicoptic = 0x03e3;\n t.sheqel = 0x20aa;\n t.sheqelhebrew = 0x20aa;\n t.sheva = 0x05b0;\n t.sheva115 = 0x05b0;\n t.sheva15 = 0x05b0;\n t.sheva22 = 0x05b0;\n t.sheva2e = 0x05b0;\n t.shevahebrew = 0x05b0;\n t.shevanarrowhebrew = 0x05b0;\n t.shevaquarterhebrew = 0x05b0;\n t.shevawidehebrew = 0x05b0;\n t.shhacyrillic = 0x04bb;\n t.shimacoptic = 0x03ed;\n t.shin = 0x05e9;\n t.shindagesh = 0xfb49;\n t.shindageshhebrew = 0xfb49;\n t.shindageshshindot = 0xfb2c;\n t.shindageshshindothebrew = 0xfb2c;\n t.shindageshsindot = 0xfb2d;\n t.shindageshsindothebrew = 0xfb2d;\n t.shindothebrew = 0x05c1;\n t.shinhebrew = 0x05e9;\n t.shinshindot = 0xfb2a;\n t.shinshindothebrew = 0xfb2a;\n t.shinsindot = 0xfb2b;\n t.shinsindothebrew = 0xfb2b;\n t.shook = 0x0282;\n t.sigma = 0x03c3;\n t.sigma1 = 0x03c2;\n t.sigmafinal = 0x03c2;\n t.sigmalunatesymbolgreek = 0x03f2;\n t.sihiragana = 0x3057;\n t.sikatakana = 0x30b7;\n t.sikatakanahalfwidth = 0xff7c;\n t.siluqhebrew = 0x05bd;\n t.siluqlefthebrew = 0x05bd;\n t.similar = 0x223c;\n t.sindothebrew = 0x05c2;\n t.siosacirclekorean = 0x3274;\n t.siosaparenkorean = 0x3214;\n t.sioscieuckorean = 0x317e;\n t.sioscirclekorean = 0x3266;\n t.sioskiyeokkorean = 0x317a;\n t.sioskorean = 0x3145;\n t.siosnieunkorean = 0x317b;\n t.siosparenkorean = 0x3206;\n t.siospieupkorean = 0x317d;\n t.siostikeutkorean = 0x317c;\n t.six = 0x0036;\n t.sixarabic = 0x0666;\n t.sixbengali = 0x09ec;\n t.sixcircle = 0x2465;\n t.sixcircleinversesansserif = 0x278f;\n t.sixdeva = 0x096c;\n t.sixgujarati = 0x0aec;\n t.sixgurmukhi = 0x0a6c;\n t.sixhackarabic = 0x0666;\n t.sixhangzhou = 0x3026;\n t.sixideographicparen = 0x3225;\n t.sixinferior = 0x2086;\n t.sixmonospace = 0xff16;\n t.sixoldstyle = 0xf736;\n t.sixparen = 0x2479;\n t.sixperiod = 0x248d;\n t.sixpersian = 0x06f6;\n t.sixroman = 0x2175;\n t.sixsuperior = 0x2076;\n t.sixteencircle = 0x246f;\n t.sixteencurrencydenominatorbengali = 0x09f9;\n t.sixteenparen = 0x2483;\n t.sixteenperiod = 0x2497;\n t.sixthai = 0x0e56;\n t.slash = 0x002f;\n t.slashmonospace = 0xff0f;\n t.slong = 0x017f;\n t.slongdotaccent = 0x1e9b;\n t.smileface = 0x263a;\n t.smonospace = 0xff53;\n t.sofpasuqhebrew = 0x05c3;\n t.softhyphen = 0x00ad;\n t.softsigncyrillic = 0x044c;\n t.sohiragana = 0x305d;\n t.sokatakana = 0x30bd;\n t.sokatakanahalfwidth = 0xff7f;\n t.soliduslongoverlaycmb = 0x0338;\n t.solidusshortoverlaycmb = 0x0337;\n t.sorusithai = 0x0e29;\n t.sosalathai = 0x0e28;\n t.sosothai = 0x0e0b;\n t.sosuathai = 0x0e2a;\n t.space = 0x0020;\n t.spacehackarabic = 0x0020;\n t.spade = 0x2660;\n t.spadesuitblack = 0x2660;\n t.spadesuitwhite = 0x2664;\n t.sparen = 0x24ae;\n t.squarebelowcmb = 0x033b;\n t.squarecc = 0x33c4;\n t.squarecm = 0x339d;\n t.squarediagonalcrosshatchfill = 0x25a9;\n t.squarehorizontalfill = 0x25a4;\n t.squarekg = 0x338f;\n t.squarekm = 0x339e;\n t.squarekmcapital = 0x33ce;\n t.squareln = 0x33d1;\n t.squarelog = 0x33d2;\n t.squaremg = 0x338e;\n t.squaremil = 0x33d5;\n t.squaremm = 0x339c;\n t.squaremsquared = 0x33a1;\n t.squareorthogonalcrosshatchfill = 0x25a6;\n t.squareupperlefttolowerrightfill = 0x25a7;\n t.squareupperrighttolowerleftfill = 0x25a8;\n t.squareverticalfill = 0x25a5;\n t.squarewhitewithsmallblack = 0x25a3;\n t.srsquare = 0x33db;\n t.ssabengali = 0x09b7;\n t.ssadeva = 0x0937;\n t.ssagujarati = 0x0ab7;\n t.ssangcieuckorean = 0x3149;\n t.ssanghieuhkorean = 0x3185;\n t.ssangieungkorean = 0x3180;\n t.ssangkiyeokkorean = 0x3132;\n t.ssangnieunkorean = 0x3165;\n t.ssangpieupkorean = 0x3143;\n t.ssangsioskorean = 0x3146;\n t.ssangtikeutkorean = 0x3138;\n t.ssuperior = 0xf6f2;\n t.sterling = 0x00a3;\n t.sterlingmonospace = 0xffe1;\n t.strokelongoverlaycmb = 0x0336;\n t.strokeshortoverlaycmb = 0x0335;\n t.subset = 0x2282;\n t.subsetnotequal = 0x228a;\n t.subsetorequal = 0x2286;\n t.succeeds = 0x227b;\n t.suchthat = 0x220b;\n t.suhiragana = 0x3059;\n t.sukatakana = 0x30b9;\n t.sukatakanahalfwidth = 0xff7d;\n t.sukunarabic = 0x0652;\n t.summation = 0x2211;\n t.sun = 0x263c;\n t.superset = 0x2283;\n t.supersetnotequal = 0x228b;\n t.supersetorequal = 0x2287;\n t.svsquare = 0x33dc;\n t.syouwaerasquare = 0x337c;\n t.t = 0x0074;\n t.tabengali = 0x09a4;\n t.tackdown = 0x22a4;\n t.tackleft = 0x22a3;\n t.tadeva = 0x0924;\n t.tagujarati = 0x0aa4;\n t.tagurmukhi = 0x0a24;\n t.taharabic = 0x0637;\n t.tahfinalarabic = 0xfec2;\n t.tahinitialarabic = 0xfec3;\n t.tahiragana = 0x305f;\n t.tahmedialarabic = 0xfec4;\n t.taisyouerasquare = 0x337d;\n t.takatakana = 0x30bf;\n t.takatakanahalfwidth = 0xff80;\n t.tatweelarabic = 0x0640;\n t.tau = 0x03c4;\n t.tav = 0x05ea;\n t.tavdages = 0xfb4a;\n t.tavdagesh = 0xfb4a;\n t.tavdageshhebrew = 0xfb4a;\n t.tavhebrew = 0x05ea;\n t.tbar = 0x0167;\n t.tbopomofo = 0x310a;\n t.tcaron = 0x0165;\n t.tccurl = 0x02a8;\n t.tcedilla = 0x0163;\n t.tcheharabic = 0x0686;\n t.tchehfinalarabic = 0xfb7b;\n t.tchehinitialarabic = 0xfb7c;\n t.tchehmedialarabic = 0xfb7d;\n t.tcircle = 0x24e3;\n t.tcircumflexbelow = 0x1e71;\n t.tcommaaccent = 0x0163;\n t.tdieresis = 0x1e97;\n t.tdotaccent = 0x1e6b;\n t.tdotbelow = 0x1e6d;\n t.tecyrillic = 0x0442;\n t.tedescendercyrillic = 0x04ad;\n t.teharabic = 0x062a;\n t.tehfinalarabic = 0xfe96;\n t.tehhahinitialarabic = 0xfca2;\n t.tehhahisolatedarabic = 0xfc0c;\n t.tehinitialarabic = 0xfe97;\n t.tehiragana = 0x3066;\n t.tehjeeminitialarabic = 0xfca1;\n t.tehjeemisolatedarabic = 0xfc0b;\n t.tehmarbutaarabic = 0x0629;\n t.tehmarbutafinalarabic = 0xfe94;\n t.tehmedialarabic = 0xfe98;\n t.tehmeeminitialarabic = 0xfca4;\n t.tehmeemisolatedarabic = 0xfc0e;\n t.tehnoonfinalarabic = 0xfc73;\n t.tekatakana = 0x30c6;\n t.tekatakanahalfwidth = 0xff83;\n t.telephone = 0x2121;\n t.telephoneblack = 0x260e;\n t.telishagedolahebrew = 0x05a0;\n t.telishaqetanahebrew = 0x05a9;\n t.tencircle = 0x2469;\n t.tenideographicparen = 0x3229;\n t.tenparen = 0x247d;\n t.tenperiod = 0x2491;\n t.tenroman = 0x2179;\n t.tesh = 0x02a7;\n t.tet = 0x05d8;\n t.tetdagesh = 0xfb38;\n t.tetdageshhebrew = 0xfb38;\n t.tethebrew = 0x05d8;\n t.tetsecyrillic = 0x04b5;\n t.tevirhebrew = 0x059b;\n t.tevirlefthebrew = 0x059b;\n t.thabengali = 0x09a5;\n t.thadeva = 0x0925;\n t.thagujarati = 0x0aa5;\n t.thagurmukhi = 0x0a25;\n t.thalarabic = 0x0630;\n t.thalfinalarabic = 0xfeac;\n t.thanthakhatlowleftthai = 0xf898;\n t.thanthakhatlowrightthai = 0xf897;\n t.thanthakhatthai = 0x0e4c;\n t.thanthakhatupperleftthai = 0xf896;\n t.theharabic = 0x062b;\n t.thehfinalarabic = 0xfe9a;\n t.thehinitialarabic = 0xfe9b;\n t.thehmedialarabic = 0xfe9c;\n t.thereexists = 0x2203;\n t.therefore = 0x2234;\n t.theta = 0x03b8;\n t.theta1 = 0x03d1;\n t.thetasymbolgreek = 0x03d1;\n t.thieuthacirclekorean = 0x3279;\n t.thieuthaparenkorean = 0x3219;\n t.thieuthcirclekorean = 0x326b;\n t.thieuthkorean = 0x314c;\n t.thieuthparenkorean = 0x320b;\n t.thirteencircle = 0x246c;\n t.thirteenparen = 0x2480;\n t.thirteenperiod = 0x2494;\n t.thonangmonthothai = 0x0e11;\n t.thook = 0x01ad;\n t.thophuthaothai = 0x0e12;\n t.thorn = 0x00fe;\n t.thothahanthai = 0x0e17;\n t.thothanthai = 0x0e10;\n t.thothongthai = 0x0e18;\n t.thothungthai = 0x0e16;\n t.thousandcyrillic = 0x0482;\n t.thousandsseparatorarabic = 0x066c;\n t.thousandsseparatorpersian = 0x066c;\n t.three = 0x0033;\n t.threearabic = 0x0663;\n t.threebengali = 0x09e9;\n t.threecircle = 0x2462;\n t.threecircleinversesansserif = 0x278c;\n t.threedeva = 0x0969;\n t.threeeighths = 0x215c;\n t.threegujarati = 0x0ae9;\n t.threegurmukhi = 0x0a69;\n t.threehackarabic = 0x0663;\n t.threehangzhou = 0x3023;\n t.threeideographicparen = 0x3222;\n t.threeinferior = 0x2083;\n t.threemonospace = 0xff13;\n t.threenumeratorbengali = 0x09f6;\n t.threeoldstyle = 0xf733;\n t.threeparen = 0x2476;\n t.threeperiod = 0x248a;\n t.threepersian = 0x06f3;\n t.threequarters = 0x00be;\n t.threequartersemdash = 0xf6de;\n t.threeroman = 0x2172;\n t.threesuperior = 0x00b3;\n t.threethai = 0x0e53;\n t.thzsquare = 0x3394;\n t.tihiragana = 0x3061;\n t.tikatakana = 0x30c1;\n t.tikatakanahalfwidth = 0xff81;\n t.tikeutacirclekorean = 0x3270;\n t.tikeutaparenkorean = 0x3210;\n t.tikeutcirclekorean = 0x3262;\n t.tikeutkorean = 0x3137;\n t.tikeutparenkorean = 0x3202;\n t.tilde = 0x02dc;\n t.tildebelowcmb = 0x0330;\n t.tildecmb = 0x0303;\n t.tildecomb = 0x0303;\n t.tildedoublecmb = 0x0360;\n t.tildeoperator = 0x223c;\n t.tildeoverlaycmb = 0x0334;\n t.tildeverticalcmb = 0x033e;\n t.timescircle = 0x2297;\n t.tipehahebrew = 0x0596;\n t.tipehalefthebrew = 0x0596;\n t.tippigurmukhi = 0x0a70;\n t.titlocyrilliccmb = 0x0483;\n t.tiwnarmenian = 0x057f;\n t.tlinebelow = 0x1e6f;\n t.tmonospace = 0xff54;\n t.toarmenian = 0x0569;\n t.tohiragana = 0x3068;\n t.tokatakana = 0x30c8;\n t.tokatakanahalfwidth = 0xff84;\n t.tonebarextrahighmod = 0x02e5;\n t.tonebarextralowmod = 0x02e9;\n t.tonebarhighmod = 0x02e6;\n t.tonebarlowmod = 0x02e8;\n t.tonebarmidmod = 0x02e7;\n t.tonefive = 0x01bd;\n t.tonesix = 0x0185;\n t.tonetwo = 0x01a8;\n t.tonos = 0x0384;\n t.tonsquare = 0x3327;\n t.topatakthai = 0x0e0f;\n t.tortoiseshellbracketleft = 0x3014;\n t.tortoiseshellbracketleftsmall = 0xfe5d;\n t.tortoiseshellbracketleftvertical = 0xfe39;\n t.tortoiseshellbracketright = 0x3015;\n t.tortoiseshellbracketrightsmall = 0xfe5e;\n t.tortoiseshellbracketrightvertical = 0xfe3a;\n t.totaothai = 0x0e15;\n t.tpalatalhook = 0x01ab;\n t.tparen = 0x24af;\n t.trademark = 0x2122;\n t.trademarksans = 0xf8ea;\n t.trademarkserif = 0xf6db;\n t.tretroflexhook = 0x0288;\n t.triagdn = 0x25bc;\n t.triaglf = 0x25c4;\n t.triagrt = 0x25ba;\n t.triagup = 0x25b2;\n t.ts = 0x02a6;\n t.tsadi = 0x05e6;\n t.tsadidagesh = 0xfb46;\n t.tsadidageshhebrew = 0xfb46;\n t.tsadihebrew = 0x05e6;\n t.tsecyrillic = 0x0446;\n t.tsere = 0x05b5;\n t.tsere12 = 0x05b5;\n t.tsere1e = 0x05b5;\n t.tsere2b = 0x05b5;\n t.tserehebrew = 0x05b5;\n t.tserenarrowhebrew = 0x05b5;\n t.tserequarterhebrew = 0x05b5;\n t.tserewidehebrew = 0x05b5;\n t.tshecyrillic = 0x045b;\n t.tsuperior = 0xf6f3;\n t.ttabengali = 0x099f;\n t.ttadeva = 0x091f;\n t.ttagujarati = 0x0a9f;\n t.ttagurmukhi = 0x0a1f;\n t.tteharabic = 0x0679;\n t.ttehfinalarabic = 0xfb67;\n t.ttehinitialarabic = 0xfb68;\n t.ttehmedialarabic = 0xfb69;\n t.tthabengali = 0x09a0;\n t.tthadeva = 0x0920;\n t.tthagujarati = 0x0aa0;\n t.tthagurmukhi = 0x0a20;\n t.tturned = 0x0287;\n t.tuhiragana = 0x3064;\n t.tukatakana = 0x30c4;\n t.tukatakanahalfwidth = 0xff82;\n t.tusmallhiragana = 0x3063;\n t.tusmallkatakana = 0x30c3;\n t.tusmallkatakanahalfwidth = 0xff6f;\n t.twelvecircle = 0x246b;\n t.twelveparen = 0x247f;\n t.twelveperiod = 0x2493;\n t.twelveroman = 0x217b;\n t.twentycircle = 0x2473;\n t.twentyhangzhou = 0x5344;\n t.twentyparen = 0x2487;\n t.twentyperiod = 0x249b;\n t.two = 0x0032;\n t.twoarabic = 0x0662;\n t.twobengali = 0x09e8;\n t.twocircle = 0x2461;\n t.twocircleinversesansserif = 0x278b;\n t.twodeva = 0x0968;\n t.twodotenleader = 0x2025;\n t.twodotleader = 0x2025;\n t.twodotleadervertical = 0xfe30;\n t.twogujarati = 0x0ae8;\n t.twogurmukhi = 0x0a68;\n t.twohackarabic = 0x0662;\n t.twohangzhou = 0x3022;\n t.twoideographicparen = 0x3221;\n t.twoinferior = 0x2082;\n t.twomonospace = 0xff12;\n t.twonumeratorbengali = 0x09f5;\n t.twooldstyle = 0xf732;\n t.twoparen = 0x2475;\n t.twoperiod = 0x2489;\n t.twopersian = 0x06f2;\n t.tworoman = 0x2171;\n t.twostroke = 0x01bb;\n t.twosuperior = 0x00b2;\n t.twothai = 0x0e52;\n t.twothirds = 0x2154;\n t.u = 0x0075;\n t.uacute = 0x00fa;\n t.ubar = 0x0289;\n t.ubengali = 0x0989;\n t.ubopomofo = 0x3128;\n t.ubreve = 0x016d;\n t.ucaron = 0x01d4;\n t.ucircle = 0x24e4;\n t.ucircumflex = 0x00fb;\n t.ucircumflexbelow = 0x1e77;\n t.ucyrillic = 0x0443;\n t.udattadeva = 0x0951;\n t.udblacute = 0x0171;\n t.udblgrave = 0x0215;\n t.udeva = 0x0909;\n t.udieresis = 0x00fc;\n t.udieresisacute = 0x01d8;\n t.udieresisbelow = 0x1e73;\n t.udieresiscaron = 0x01da;\n t.udieresiscyrillic = 0x04f1;\n t.udieresisgrave = 0x01dc;\n t.udieresismacron = 0x01d6;\n t.udotbelow = 0x1ee5;\n t.ugrave = 0x00f9;\n t.ugujarati = 0x0a89;\n t.ugurmukhi = 0x0a09;\n t.uhiragana = 0x3046;\n t.uhookabove = 0x1ee7;\n t.uhorn = 0x01b0;\n t.uhornacute = 0x1ee9;\n t.uhorndotbelow = 0x1ef1;\n t.uhorngrave = 0x1eeb;\n t.uhornhookabove = 0x1eed;\n t.uhorntilde = 0x1eef;\n t.uhungarumlaut = 0x0171;\n t.uhungarumlautcyrillic = 0x04f3;\n t.uinvertedbreve = 0x0217;\n t.ukatakana = 0x30a6;\n t.ukatakanahalfwidth = 0xff73;\n t.ukcyrillic = 0x0479;\n t.ukorean = 0x315c;\n t.umacron = 0x016b;\n t.umacroncyrillic = 0x04ef;\n t.umacrondieresis = 0x1e7b;\n t.umatragurmukhi = 0x0a41;\n t.umonospace = 0xff55;\n t.underscore = 0x005f;\n t.underscoredbl = 0x2017;\n t.underscoremonospace = 0xff3f;\n t.underscorevertical = 0xfe33;\n t.underscorewavy = 0xfe4f;\n t.union = 0x222a;\n t.universal = 0x2200;\n t.uogonek = 0x0173;\n t.uparen = 0x24b0;\n t.upblock = 0x2580;\n t.upperdothebrew = 0x05c4;\n t.upsilon = 0x03c5;\n t.upsilondieresis = 0x03cb;\n t.upsilondieresistonos = 0x03b0;\n t.upsilonlatin = 0x028a;\n t.upsilontonos = 0x03cd;\n t.uptackbelowcmb = 0x031d;\n t.uptackmod = 0x02d4;\n t.uragurmukhi = 0x0a73;\n t.uring = 0x016f;\n t.ushortcyrillic = 0x045e;\n t.usmallhiragana = 0x3045;\n t.usmallkatakana = 0x30a5;\n t.usmallkatakanahalfwidth = 0xff69;\n t.ustraightcyrillic = 0x04af;\n t.ustraightstrokecyrillic = 0x04b1;\n t.utilde = 0x0169;\n t.utildeacute = 0x1e79;\n t.utildebelow = 0x1e75;\n t.uubengali = 0x098a;\n t.uudeva = 0x090a;\n t.uugujarati = 0x0a8a;\n t.uugurmukhi = 0x0a0a;\n t.uumatragurmukhi = 0x0a42;\n t.uuvowelsignbengali = 0x09c2;\n t.uuvowelsigndeva = 0x0942;\n t.uuvowelsigngujarati = 0x0ac2;\n t.uvowelsignbengali = 0x09c1;\n t.uvowelsigndeva = 0x0941;\n t.uvowelsigngujarati = 0x0ac1;\n t.v = 0x0076;\n t.vadeva = 0x0935;\n t.vagujarati = 0x0ab5;\n t.vagurmukhi = 0x0a35;\n t.vakatakana = 0x30f7;\n t.vav = 0x05d5;\n t.vavdagesh = 0xfb35;\n t.vavdagesh65 = 0xfb35;\n t.vavdageshhebrew = 0xfb35;\n t.vavhebrew = 0x05d5;\n t.vavholam = 0xfb4b;\n t.vavholamhebrew = 0xfb4b;\n t.vavvavhebrew = 0x05f0;\n t.vavyodhebrew = 0x05f1;\n t.vcircle = 0x24e5;\n t.vdotbelow = 0x1e7f;\n t.vecyrillic = 0x0432;\n t.veharabic = 0x06a4;\n t.vehfinalarabic = 0xfb6b;\n t.vehinitialarabic = 0xfb6c;\n t.vehmedialarabic = 0xfb6d;\n t.vekatakana = 0x30f9;\n t.venus = 0x2640;\n t.verticalbar = 0x007c;\n t.verticallineabovecmb = 0x030d;\n t.verticallinebelowcmb = 0x0329;\n t.verticallinelowmod = 0x02cc;\n t.verticallinemod = 0x02c8;\n t.vewarmenian = 0x057e;\n t.vhook = 0x028b;\n t.vikatakana = 0x30f8;\n t.viramabengali = 0x09cd;\n t.viramadeva = 0x094d;\n t.viramagujarati = 0x0acd;\n t.visargabengali = 0x0983;\n t.visargadeva = 0x0903;\n t.visargagujarati = 0x0a83;\n t.vmonospace = 0xff56;\n t.voarmenian = 0x0578;\n t.voicediterationhiragana = 0x309e;\n t.voicediterationkatakana = 0x30fe;\n t.voicedmarkkana = 0x309b;\n t.voicedmarkkanahalfwidth = 0xff9e;\n t.vokatakana = 0x30fa;\n t.vparen = 0x24b1;\n t.vtilde = 0x1e7d;\n t.vturned = 0x028c;\n t.vuhiragana = 0x3094;\n t.vukatakana = 0x30f4;\n t.w = 0x0077;\n t.wacute = 0x1e83;\n t.waekorean = 0x3159;\n t.wahiragana = 0x308f;\n t.wakatakana = 0x30ef;\n t.wakatakanahalfwidth = 0xff9c;\n t.wakorean = 0x3158;\n t.wasmallhiragana = 0x308e;\n t.wasmallkatakana = 0x30ee;\n t.wattosquare = 0x3357;\n t.wavedash = 0x301c;\n t.wavyunderscorevertical = 0xfe34;\n t.wawarabic = 0x0648;\n t.wawfinalarabic = 0xfeee;\n t.wawhamzaabovearabic = 0x0624;\n t.wawhamzaabovefinalarabic = 0xfe86;\n t.wbsquare = 0x33dd;\n t.wcircle = 0x24e6;\n t.wcircumflex = 0x0175;\n t.wdieresis = 0x1e85;\n t.wdotaccent = 0x1e87;\n t.wdotbelow = 0x1e89;\n t.wehiragana = 0x3091;\n t.weierstrass = 0x2118;\n t.wekatakana = 0x30f1;\n t.wekorean = 0x315e;\n t.weokorean = 0x315d;\n t.wgrave = 0x1e81;\n t.whitebullet = 0x25e6;\n t.whitecircle = 0x25cb;\n t.whitecircleinverse = 0x25d9;\n t.whitecornerbracketleft = 0x300e;\n t.whitecornerbracketleftvertical = 0xfe43;\n t.whitecornerbracketright = 0x300f;\n t.whitecornerbracketrightvertical = 0xfe44;\n t.whitediamond = 0x25c7;\n t.whitediamondcontainingblacksmalldiamond = 0x25c8;\n t.whitedownpointingsmalltriangle = 0x25bf;\n t.whitedownpointingtriangle = 0x25bd;\n t.whiteleftpointingsmalltriangle = 0x25c3;\n t.whiteleftpointingtriangle = 0x25c1;\n t.whitelenticularbracketleft = 0x3016;\n t.whitelenticularbracketright = 0x3017;\n t.whiterightpointingsmalltriangle = 0x25b9;\n t.whiterightpointingtriangle = 0x25b7;\n t.whitesmallsquare = 0x25ab;\n t.whitesmilingface = 0x263a;\n t.whitesquare = 0x25a1;\n t.whitestar = 0x2606;\n t.whitetelephone = 0x260f;\n t.whitetortoiseshellbracketleft = 0x3018;\n t.whitetortoiseshellbracketright = 0x3019;\n t.whiteuppointingsmalltriangle = 0x25b5;\n t.whiteuppointingtriangle = 0x25b3;\n t.wihiragana = 0x3090;\n t.wikatakana = 0x30f0;\n t.wikorean = 0x315f;\n t.wmonospace = 0xff57;\n t.wohiragana = 0x3092;\n t.wokatakana = 0x30f2;\n t.wokatakanahalfwidth = 0xff66;\n t.won = 0x20a9;\n t.wonmonospace = 0xffe6;\n t.wowaenthai = 0x0e27;\n t.wparen = 0x24b2;\n t.wring = 0x1e98;\n t.wsuperior = 0x02b7;\n t.wturned = 0x028d;\n t.wynn = 0x01bf;\n t.x = 0x0078;\n t.xabovecmb = 0x033d;\n t.xbopomofo = 0x3112;\n t.xcircle = 0x24e7;\n t.xdieresis = 0x1e8d;\n t.xdotaccent = 0x1e8b;\n t.xeharmenian = 0x056d;\n t.xi = 0x03be;\n t.xmonospace = 0xff58;\n t.xparen = 0x24b3;\n t.xsuperior = 0x02e3;\n t.y = 0x0079;\n t.yaadosquare = 0x334e;\n t.yabengali = 0x09af;\n t.yacute = 0x00fd;\n t.yadeva = 0x092f;\n t.yaekorean = 0x3152;\n t.yagujarati = 0x0aaf;\n t.yagurmukhi = 0x0a2f;\n t.yahiragana = 0x3084;\n t.yakatakana = 0x30e4;\n t.yakatakanahalfwidth = 0xff94;\n t.yakorean = 0x3151;\n t.yamakkanthai = 0x0e4e;\n t.yasmallhiragana = 0x3083;\n t.yasmallkatakana = 0x30e3;\n t.yasmallkatakanahalfwidth = 0xff6c;\n t.yatcyrillic = 0x0463;\n t.ycircle = 0x24e8;\n t.ycircumflex = 0x0177;\n t.ydieresis = 0x00ff;\n t.ydotaccent = 0x1e8f;\n t.ydotbelow = 0x1ef5;\n t.yeharabic = 0x064a;\n t.yehbarreearabic = 0x06d2;\n t.yehbarreefinalarabic = 0xfbaf;\n t.yehfinalarabic = 0xfef2;\n t.yehhamzaabovearabic = 0x0626;\n t.yehhamzaabovefinalarabic = 0xfe8a;\n t.yehhamzaaboveinitialarabic = 0xfe8b;\n t.yehhamzaabovemedialarabic = 0xfe8c;\n t.yehinitialarabic = 0xfef3;\n t.yehmedialarabic = 0xfef4;\n t.yehmeeminitialarabic = 0xfcdd;\n t.yehmeemisolatedarabic = 0xfc58;\n t.yehnoonfinalarabic = 0xfc94;\n t.yehthreedotsbelowarabic = 0x06d1;\n t.yekorean = 0x3156;\n t.yen = 0x00a5;\n t.yenmonospace = 0xffe5;\n t.yeokorean = 0x3155;\n t.yeorinhieuhkorean = 0x3186;\n t.yerahbenyomohebrew = 0x05aa;\n t.yerahbenyomolefthebrew = 0x05aa;\n t.yericyrillic = 0x044b;\n t.yerudieresiscyrillic = 0x04f9;\n t.yesieungkorean = 0x3181;\n t.yesieungpansioskorean = 0x3183;\n t.yesieungsioskorean = 0x3182;\n t.yetivhebrew = 0x059a;\n t.ygrave = 0x1ef3;\n t.yhook = 0x01b4;\n t.yhookabove = 0x1ef7;\n t.yiarmenian = 0x0575;\n t.yicyrillic = 0x0457;\n t.yikorean = 0x3162;\n t.yinyang = 0x262f;\n t.yiwnarmenian = 0x0582;\n t.ymonospace = 0xff59;\n t.yod = 0x05d9;\n t.yoddagesh = 0xfb39;\n t.yoddageshhebrew = 0xfb39;\n t.yodhebrew = 0x05d9;\n t.yodyodhebrew = 0x05f2;\n t.yodyodpatahhebrew = 0xfb1f;\n t.yohiragana = 0x3088;\n t.yoikorean = 0x3189;\n t.yokatakana = 0x30e8;\n t.yokatakanahalfwidth = 0xff96;\n t.yokorean = 0x315b;\n t.yosmallhiragana = 0x3087;\n t.yosmallkatakana = 0x30e7;\n t.yosmallkatakanahalfwidth = 0xff6e;\n t.yotgreek = 0x03f3;\n t.yoyaekorean = 0x3188;\n t.yoyakorean = 0x3187;\n t.yoyakthai = 0x0e22;\n t.yoyingthai = 0x0e0d;\n t.yparen = 0x24b4;\n t.ypogegrammeni = 0x037a;\n t.ypogegrammenigreekcmb = 0x0345;\n t.yr = 0x01a6;\n t.yring = 0x1e99;\n t.ysuperior = 0x02b8;\n t.ytilde = 0x1ef9;\n t.yturned = 0x028e;\n t.yuhiragana = 0x3086;\n t.yuikorean = 0x318c;\n t.yukatakana = 0x30e6;\n t.yukatakanahalfwidth = 0xff95;\n t.yukorean = 0x3160;\n t.yusbigcyrillic = 0x046b;\n t.yusbigiotifiedcyrillic = 0x046d;\n t.yuslittlecyrillic = 0x0467;\n t.yuslittleiotifiedcyrillic = 0x0469;\n t.yusmallhiragana = 0x3085;\n t.yusmallkatakana = 0x30e5;\n t.yusmallkatakanahalfwidth = 0xff6d;\n t.yuyekorean = 0x318b;\n t.yuyeokorean = 0x318a;\n t.yyabengali = 0x09df;\n t.yyadeva = 0x095f;\n t.z = 0x007a;\n t.zaarmenian = 0x0566;\n t.zacute = 0x017a;\n t.zadeva = 0x095b;\n t.zagurmukhi = 0x0a5b;\n t.zaharabic = 0x0638;\n t.zahfinalarabic = 0xfec6;\n t.zahinitialarabic = 0xfec7;\n t.zahiragana = 0x3056;\n t.zahmedialarabic = 0xfec8;\n t.zainarabic = 0x0632;\n t.zainfinalarabic = 0xfeb0;\n t.zakatakana = 0x30b6;\n t.zaqefgadolhebrew = 0x0595;\n t.zaqefqatanhebrew = 0x0594;\n t.zarqahebrew = 0x0598;\n t.zayin = 0x05d6;\n t.zayindagesh = 0xfb36;\n t.zayindageshhebrew = 0xfb36;\n t.zayinhebrew = 0x05d6;\n t.zbopomofo = 0x3117;\n t.zcaron = 0x017e;\n t.zcircle = 0x24e9;\n t.zcircumflex = 0x1e91;\n t.zcurl = 0x0291;\n t.zdot = 0x017c;\n t.zdotaccent = 0x017c;\n t.zdotbelow = 0x1e93;\n t.zecyrillic = 0x0437;\n t.zedescendercyrillic = 0x0499;\n t.zedieresiscyrillic = 0x04df;\n t.zehiragana = 0x305c;\n t.zekatakana = 0x30bc;\n t.zero = 0x0030;\n t.zeroarabic = 0x0660;\n t.zerobengali = 0x09e6;\n t.zerodeva = 0x0966;\n t.zerogujarati = 0x0ae6;\n t.zerogurmukhi = 0x0a66;\n t.zerohackarabic = 0x0660;\n t.zeroinferior = 0x2080;\n t.zeromonospace = 0xff10;\n t.zerooldstyle = 0xf730;\n t.zeropersian = 0x06f0;\n t.zerosuperior = 0x2070;\n t.zerothai = 0x0e50;\n t.zerowidthjoiner = 0xfeff;\n t.zerowidthnonjoiner = 0x200c;\n t.zerowidthspace = 0x200b;\n t.zeta = 0x03b6;\n t.zhbopomofo = 0x3113;\n t.zhearmenian = 0x056a;\n t.zhebrevecyrillic = 0x04c2;\n t.zhecyrillic = 0x0436;\n t.zhedescendercyrillic = 0x0497;\n t.zhedieresiscyrillic = 0x04dd;\n t.zihiragana = 0x3058;\n t.zikatakana = 0x30b8;\n t.zinorhebrew = 0x05ae;\n t.zlinebelow = 0x1e95;\n t.zmonospace = 0xff5a;\n t.zohiragana = 0x305e;\n t.zokatakana = 0x30be;\n t.zparen = 0x24b5;\n t.zretroflexhook = 0x0290;\n t.zstroke = 0x01b6;\n t.zuhiragana = 0x305a;\n t.zukatakana = 0x30ba;\n t[\".notdef\"] = 0x0000;\n t.angbracketleftbig = 0x2329;\n t.angbracketleftBig = 0x2329;\n t.angbracketleftbigg = 0x2329;\n t.angbracketleftBigg = 0x2329;\n t.angbracketrightBig = 0x232a;\n t.angbracketrightbig = 0x232a;\n t.angbracketrightBigg = 0x232a;\n t.angbracketrightbigg = 0x232a;\n t.arrowhookleft = 0x21aa;\n t.arrowhookright = 0x21a9;\n t.arrowlefttophalf = 0x21bc;\n t.arrowleftbothalf = 0x21bd;\n t.arrownortheast = 0x2197;\n t.arrownorthwest = 0x2196;\n t.arrowrighttophalf = 0x21c0;\n t.arrowrightbothalf = 0x21c1;\n t.arrowsoutheast = 0x2198;\n t.arrowsouthwest = 0x2199;\n t.backslashbig = 0x2216;\n t.backslashBig = 0x2216;\n t.backslashBigg = 0x2216;\n t.backslashbigg = 0x2216;\n t.bardbl = 0x2016;\n t.bracehtipdownleft = 0xfe37;\n t.bracehtipdownright = 0xfe37;\n t.bracehtipupleft = 0xfe38;\n t.bracehtipupright = 0xfe38;\n t.braceleftBig = 0x007b;\n t.braceleftbig = 0x007b;\n t.braceleftbigg = 0x007b;\n t.braceleftBigg = 0x007b;\n t.bracerightBig = 0x007d;\n t.bracerightbig = 0x007d;\n t.bracerightbigg = 0x007d;\n t.bracerightBigg = 0x007d;\n t.bracketleftbig = 0x005b;\n t.bracketleftBig = 0x005b;\n t.bracketleftbigg = 0x005b;\n t.bracketleftBigg = 0x005b;\n t.bracketrightBig = 0x005d;\n t.bracketrightbig = 0x005d;\n t.bracketrightbigg = 0x005d;\n t.bracketrightBigg = 0x005d;\n t.ceilingleftbig = 0x2308;\n t.ceilingleftBig = 0x2308;\n t.ceilingleftBigg = 0x2308;\n t.ceilingleftbigg = 0x2308;\n t.ceilingrightbig = 0x2309;\n t.ceilingrightBig = 0x2309;\n t.ceilingrightbigg = 0x2309;\n t.ceilingrightBigg = 0x2309;\n t.circledotdisplay = 0x2299;\n t.circledottext = 0x2299;\n t.circlemultiplydisplay = 0x2297;\n t.circlemultiplytext = 0x2297;\n t.circleplusdisplay = 0x2295;\n t.circleplustext = 0x2295;\n t.contintegraldisplay = 0x222e;\n t.contintegraltext = 0x222e;\n t.coproductdisplay = 0x2210;\n t.coproducttext = 0x2210;\n t.floorleftBig = 0x230a;\n t.floorleftbig = 0x230a;\n t.floorleftbigg = 0x230a;\n t.floorleftBigg = 0x230a;\n t.floorrightbig = 0x230b;\n t.floorrightBig = 0x230b;\n t.floorrightBigg = 0x230b;\n t.floorrightbigg = 0x230b;\n t.hatwide = 0x0302;\n t.hatwider = 0x0302;\n t.hatwidest = 0x0302;\n t.intercal = 0x1d40;\n t.integraldisplay = 0x222b;\n t.integraltext = 0x222b;\n t.intersectiondisplay = 0x22c2;\n t.intersectiontext = 0x22c2;\n t.logicalanddisplay = 0x2227;\n t.logicalandtext = 0x2227;\n t.logicalordisplay = 0x2228;\n t.logicalortext = 0x2228;\n t.parenleftBig = 0x0028;\n t.parenleftbig = 0x0028;\n t.parenleftBigg = 0x0028;\n t.parenleftbigg = 0x0028;\n t.parenrightBig = 0x0029;\n t.parenrightbig = 0x0029;\n t.parenrightBigg = 0x0029;\n t.parenrightbigg = 0x0029;\n t.prime = 0x2032;\n t.productdisplay = 0x220f;\n t.producttext = 0x220f;\n t.radicalbig = 0x221a;\n t.radicalBig = 0x221a;\n t.radicalBigg = 0x221a;\n t.radicalbigg = 0x221a;\n t.radicalbt = 0x221a;\n t.radicaltp = 0x221a;\n t.radicalvertex = 0x221a;\n t.slashbig = 0x002f;\n t.slashBig = 0x002f;\n t.slashBigg = 0x002f;\n t.slashbigg = 0x002f;\n t.summationdisplay = 0x2211;\n t.summationtext = 0x2211;\n t.tildewide = 0x02dc;\n t.tildewider = 0x02dc;\n t.tildewidest = 0x02dc;\n t.uniondisplay = 0x22c3;\n t.unionmultidisplay = 0x228e;\n t.unionmultitext = 0x228e;\n t.unionsqdisplay = 0x2294;\n t.unionsqtext = 0x2294;\n t.uniontext = 0x22c3;\n t.vextenddouble = 0x2225;\n t.vextendsingle = 0x2223;\n});\nvar getDingbatsGlyphsUnicode = getLookupTableFactory(function (t) {\n t.space = 0x0020;\n t.a1 = 0x2701;\n t.a2 = 0x2702;\n t.a202 = 0x2703;\n t.a3 = 0x2704;\n t.a4 = 0x260e;\n t.a5 = 0x2706;\n t.a119 = 0x2707;\n t.a118 = 0x2708;\n t.a117 = 0x2709;\n t.a11 = 0x261b;\n t.a12 = 0x261e;\n t.a13 = 0x270c;\n t.a14 = 0x270d;\n t.a15 = 0x270e;\n t.a16 = 0x270f;\n t.a105 = 0x2710;\n t.a17 = 0x2711;\n t.a18 = 0x2712;\n t.a19 = 0x2713;\n t.a20 = 0x2714;\n t.a21 = 0x2715;\n t.a22 = 0x2716;\n t.a23 = 0x2717;\n t.a24 = 0x2718;\n t.a25 = 0x2719;\n t.a26 = 0x271a;\n t.a27 = 0x271b;\n t.a28 = 0x271c;\n t.a6 = 0x271d;\n t.a7 = 0x271e;\n t.a8 = 0x271f;\n t.a9 = 0x2720;\n t.a10 = 0x2721;\n t.a29 = 0x2722;\n t.a30 = 0x2723;\n t.a31 = 0x2724;\n t.a32 = 0x2725;\n t.a33 = 0x2726;\n t.a34 = 0x2727;\n t.a35 = 0x2605;\n t.a36 = 0x2729;\n t.a37 = 0x272a;\n t.a38 = 0x272b;\n t.a39 = 0x272c;\n t.a40 = 0x272d;\n t.a41 = 0x272e;\n t.a42 = 0x272f;\n t.a43 = 0x2730;\n t.a44 = 0x2731;\n t.a45 = 0x2732;\n t.a46 = 0x2733;\n t.a47 = 0x2734;\n t.a48 = 0x2735;\n t.a49 = 0x2736;\n t.a50 = 0x2737;\n t.a51 = 0x2738;\n t.a52 = 0x2739;\n t.a53 = 0x273a;\n t.a54 = 0x273b;\n t.a55 = 0x273c;\n t.a56 = 0x273d;\n t.a57 = 0x273e;\n t.a58 = 0x273f;\n t.a59 = 0x2740;\n t.a60 = 0x2741;\n t.a61 = 0x2742;\n t.a62 = 0x2743;\n t.a63 = 0x2744;\n t.a64 = 0x2745;\n t.a65 = 0x2746;\n t.a66 = 0x2747;\n t.a67 = 0x2748;\n t.a68 = 0x2749;\n t.a69 = 0x274a;\n t.a70 = 0x274b;\n t.a71 = 0x25cf;\n t.a72 = 0x274d;\n t.a73 = 0x25a0;\n t.a74 = 0x274f;\n t.a203 = 0x2750;\n t.a75 = 0x2751;\n t.a204 = 0x2752;\n t.a76 = 0x25b2;\n t.a77 = 0x25bc;\n t.a78 = 0x25c6;\n t.a79 = 0x2756;\n t.a81 = 0x25d7;\n t.a82 = 0x2758;\n t.a83 = 0x2759;\n t.a84 = 0x275a;\n t.a97 = 0x275b;\n t.a98 = 0x275c;\n t.a99 = 0x275d;\n t.a100 = 0x275e;\n t.a101 = 0x2761;\n t.a102 = 0x2762;\n t.a103 = 0x2763;\n t.a104 = 0x2764;\n t.a106 = 0x2765;\n t.a107 = 0x2766;\n t.a108 = 0x2767;\n t.a112 = 0x2663;\n t.a111 = 0x2666;\n t.a110 = 0x2665;\n t.a109 = 0x2660;\n t.a120 = 0x2460;\n t.a121 = 0x2461;\n t.a122 = 0x2462;\n t.a123 = 0x2463;\n t.a124 = 0x2464;\n t.a125 = 0x2465;\n t.a126 = 0x2466;\n t.a127 = 0x2467;\n t.a128 = 0x2468;\n t.a129 = 0x2469;\n t.a130 = 0x2776;\n t.a131 = 0x2777;\n t.a132 = 0x2778;\n t.a133 = 0x2779;\n t.a134 = 0x277a;\n t.a135 = 0x277b;\n t.a136 = 0x277c;\n t.a137 = 0x277d;\n t.a138 = 0x277e;\n t.a139 = 0x277f;\n t.a140 = 0x2780;\n t.a141 = 0x2781;\n t.a142 = 0x2782;\n t.a143 = 0x2783;\n t.a144 = 0x2784;\n t.a145 = 0x2785;\n t.a146 = 0x2786;\n t.a147 = 0x2787;\n t.a148 = 0x2788;\n t.a149 = 0x2789;\n t.a150 = 0x278a;\n t.a151 = 0x278b;\n t.a152 = 0x278c;\n t.a153 = 0x278d;\n t.a154 = 0x278e;\n t.a155 = 0x278f;\n t.a156 = 0x2790;\n t.a157 = 0x2791;\n t.a158 = 0x2792;\n t.a159 = 0x2793;\n t.a160 = 0x2794;\n t.a161 = 0x2192;\n t.a163 = 0x2194;\n t.a164 = 0x2195;\n t.a196 = 0x2798;\n t.a165 = 0x2799;\n t.a192 = 0x279a;\n t.a166 = 0x279b;\n t.a167 = 0x279c;\n t.a168 = 0x279d;\n t.a169 = 0x279e;\n t.a170 = 0x279f;\n t.a171 = 0x27a0;\n t.a172 = 0x27a1;\n t.a173 = 0x27a2;\n t.a162 = 0x27a3;\n t.a174 = 0x27a4;\n t.a175 = 0x27a5;\n t.a176 = 0x27a6;\n t.a177 = 0x27a7;\n t.a178 = 0x27a8;\n t.a179 = 0x27a9;\n t.a193 = 0x27aa;\n t.a180 = 0x27ab;\n t.a199 = 0x27ac;\n t.a181 = 0x27ad;\n t.a200 = 0x27ae;\n t.a182 = 0x27af;\n t.a201 = 0x27b1;\n t.a183 = 0x27b2;\n t.a184 = 0x27b3;\n t.a197 = 0x27b4;\n t.a185 = 0x27b5;\n t.a194 = 0x27b6;\n t.a198 = 0x27b7;\n t.a186 = 0x27b8;\n t.a195 = 0x27b9;\n t.a187 = 0x27ba;\n t.a188 = 0x27bb;\n t.a189 = 0x27bc;\n t.a190 = 0x27bd;\n t.a191 = 0x27be;\n t.a89 = 0x2768;\n t.a90 = 0x2769;\n t.a93 = 0x276a;\n t.a94 = 0x276b;\n t.a91 = 0x276c;\n t.a92 = 0x276d;\n t.a205 = 0x276e;\n t.a85 = 0x276f;\n t.a206 = 0x2770;\n t.a86 = 0x2771;\n t.a87 = 0x2772;\n t.a88 = 0x2773;\n t.a95 = 0x2774;\n t.a96 = 0x2775;\n t[\".notdef\"] = 0x0000;\n});\nexports.getGlyphsUnicode = getGlyphsUnicode;\nexports.getDingbatsGlyphsUnicode = getDingbatsGlyphsUnicode;\n\n/***/ }),\n/* 227 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getSupplementalGlyphMapForCalibri = exports.getSupplementalGlyphMapForArialBlack = exports.getGlyphMapForStandardFonts = exports.getSymbolsFonts = exports.getSerifFonts = exports.getNonStdFontMap = exports.getStdFontMap = void 0;\n\nvar _core_utils = __w_pdfjs_require__(201);\n\nvar getStdFontMap = (0, _core_utils.getLookupTableFactory)(function (t) {\n t.ArialNarrow = \"Helvetica\";\n t[\"ArialNarrow-Bold\"] = \"Helvetica-Bold\";\n t[\"ArialNarrow-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"ArialNarrow-Italic\"] = \"Helvetica-Oblique\";\n t.ArialBlack = \"Helvetica\";\n t[\"ArialBlack-Bold\"] = \"Helvetica-Bold\";\n t[\"ArialBlack-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"ArialBlack-Italic\"] = \"Helvetica-Oblique\";\n t[\"Arial-Black\"] = \"Helvetica\";\n t[\"Arial-Black-Bold\"] = \"Helvetica-Bold\";\n t[\"Arial-Black-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Arial-Black-Italic\"] = \"Helvetica-Oblique\";\n t.Arial = \"Helvetica\";\n t[\"Arial-Bold\"] = \"Helvetica-Bold\";\n t[\"Arial-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Arial-Italic\"] = \"Helvetica-Oblique\";\n t[\"Arial-BoldItalicMT\"] = \"Helvetica-BoldOblique\";\n t[\"Arial-BoldMT\"] = \"Helvetica-Bold\";\n t[\"Arial-ItalicMT\"] = \"Helvetica-Oblique\";\n t.ArialMT = \"Helvetica\";\n t[\"Courier-Bold\"] = \"Courier-Bold\";\n t[\"Courier-BoldItalic\"] = \"Courier-BoldOblique\";\n t[\"Courier-Italic\"] = \"Courier-Oblique\";\n t.CourierNew = \"Courier\";\n t[\"CourierNew-Bold\"] = \"Courier-Bold\";\n t[\"CourierNew-BoldItalic\"] = \"Courier-BoldOblique\";\n t[\"CourierNew-Italic\"] = \"Courier-Oblique\";\n t[\"CourierNewPS-BoldItalicMT\"] = \"Courier-BoldOblique\";\n t[\"CourierNewPS-BoldMT\"] = \"Courier-Bold\";\n t[\"CourierNewPS-ItalicMT\"] = \"Courier-Oblique\";\n t.CourierNewPSMT = \"Courier\";\n t.Helvetica = \"Helvetica\";\n t[\"Helvetica-Bold\"] = \"Helvetica-Bold\";\n t[\"Helvetica-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Helvetica-BoldOblique\"] = \"Helvetica-BoldOblique\";\n t[\"Helvetica-Italic\"] = \"Helvetica-Oblique\";\n t[\"Helvetica-Oblique\"] = \"Helvetica-Oblique\";\n t[\"Symbol-Bold\"] = \"Symbol\";\n t[\"Symbol-BoldItalic\"] = \"Symbol\";\n t[\"Symbol-Italic\"] = \"Symbol\";\n t.TimesNewRoman = \"Times-Roman\";\n t[\"TimesNewRoman-Bold\"] = \"Times-Bold\";\n t[\"TimesNewRoman-BoldItalic\"] = \"Times-BoldItalic\";\n t[\"TimesNewRoman-Italic\"] = \"Times-Italic\";\n t.TimesNewRomanPS = \"Times-Roman\";\n t[\"TimesNewRomanPS-Bold\"] = \"Times-Bold\";\n t[\"TimesNewRomanPS-BoldItalic\"] = \"Times-BoldItalic\";\n t[\"TimesNewRomanPS-BoldItalicMT\"] = \"Times-BoldItalic\";\n t[\"TimesNewRomanPS-BoldMT\"] = \"Times-Bold\";\n t[\"TimesNewRomanPS-Italic\"] = \"Times-Italic\";\n t[\"TimesNewRomanPS-ItalicMT\"] = \"Times-Italic\";\n t.TimesNewRomanPSMT = \"Times-Roman\";\n t[\"TimesNewRomanPSMT-Bold\"] = \"Times-Bold\";\n t[\"TimesNewRomanPSMT-BoldItalic\"] = \"Times-BoldItalic\";\n t[\"TimesNewRomanPSMT-Italic\"] = \"Times-Italic\";\n});\nexports.getStdFontMap = getStdFontMap;\nvar getNonStdFontMap = (0, _core_utils.getLookupTableFactory)(function (t) {\n t.Calibri = \"Helvetica\";\n t[\"Calibri-Bold\"] = \"Helvetica-Bold\";\n t[\"Calibri-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Calibri-Italic\"] = \"Helvetica-Oblique\";\n t.CenturyGothic = \"Helvetica\";\n t[\"CenturyGothic-Bold\"] = \"Helvetica-Bold\";\n t[\"CenturyGothic-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"CenturyGothic-Italic\"] = \"Helvetica-Oblique\";\n t.ComicSansMS = \"Comic Sans MS\";\n t[\"ComicSansMS-Bold\"] = \"Comic Sans MS-Bold\";\n t[\"ComicSansMS-BoldItalic\"] = \"Comic Sans MS-BoldItalic\";\n t[\"ComicSansMS-Italic\"] = \"Comic Sans MS-Italic\";\n t.LucidaConsole = \"Courier\";\n t[\"LucidaConsole-Bold\"] = \"Courier-Bold\";\n t[\"LucidaConsole-BoldItalic\"] = \"Courier-BoldOblique\";\n t[\"LucidaConsole-Italic\"] = \"Courier-Oblique\";\n t[\"LucidaSans-Demi\"] = \"Helvetica-Bold\";\n t[\"MS-Gothic\"] = \"MS Gothic\";\n t[\"MS-Gothic-Bold\"] = \"MS Gothic-Bold\";\n t[\"MS-Gothic-BoldItalic\"] = \"MS Gothic-BoldItalic\";\n t[\"MS-Gothic-Italic\"] = \"MS Gothic-Italic\";\n t[\"MS-Mincho\"] = \"MS Mincho\";\n t[\"MS-Mincho-Bold\"] = \"MS Mincho-Bold\";\n t[\"MS-Mincho-BoldItalic\"] = \"MS Mincho-BoldItalic\";\n t[\"MS-Mincho-Italic\"] = \"MS Mincho-Italic\";\n t[\"MS-PGothic\"] = \"MS PGothic\";\n t[\"MS-PGothic-Bold\"] = \"MS PGothic-Bold\";\n t[\"MS-PGothic-BoldItalic\"] = \"MS PGothic-BoldItalic\";\n t[\"MS-PGothic-Italic\"] = \"MS PGothic-Italic\";\n t[\"MS-PMincho\"] = \"MS PMincho\";\n t[\"MS-PMincho-Bold\"] = \"MS PMincho-Bold\";\n t[\"MS-PMincho-BoldItalic\"] = \"MS PMincho-BoldItalic\";\n t[\"MS-PMincho-Italic\"] = \"MS PMincho-Italic\";\n t.NuptialScript = \"Times-Italic\";\n t.SegoeUISymbol = \"Helvetica\";\n t.Wingdings = \"ZapfDingbats\";\n t[\"Wingdings-Regular\"] = \"ZapfDingbats\";\n});\nexports.getNonStdFontMap = getNonStdFontMap;\nvar getSerifFonts = (0, _core_utils.getLookupTableFactory)(function (t) {\n t[\"Adobe Jenson\"] = true;\n t[\"Adobe Text\"] = true;\n t.Albertus = true;\n t.Aldus = true;\n t.Alexandria = true;\n t.Algerian = true;\n t[\"American Typewriter\"] = true;\n t.Antiqua = true;\n t.Apex = true;\n t.Arno = true;\n t.Aster = true;\n t.Aurora = true;\n t.Baskerville = true;\n t.Bell = true;\n t.Bembo = true;\n t[\"Bembo Schoolbook\"] = true;\n t.Benguiat = true;\n t[\"Berkeley Old Style\"] = true;\n t[\"Bernhard Modern\"] = true;\n t[\"Berthold City\"] = true;\n t.Bodoni = true;\n t[\"Bauer Bodoni\"] = true;\n t[\"Book Antiqua\"] = true;\n t.Bookman = true;\n t[\"Bordeaux Roman\"] = true;\n t[\"Californian FB\"] = true;\n t.Calisto = true;\n t.Calvert = true;\n t.Capitals = true;\n t.Cambria = true;\n t.Cartier = true;\n t.Caslon = true;\n t.Catull = true;\n t.Centaur = true;\n t[\"Century Old Style\"] = true;\n t[\"Century Schoolbook\"] = true;\n t.Chaparral = true;\n t[\"Charis SIL\"] = true;\n t.Cheltenham = true;\n t[\"Cholla Slab\"] = true;\n t.Clarendon = true;\n t.Clearface = true;\n t.Cochin = true;\n t.Colonna = true;\n t[\"Computer Modern\"] = true;\n t[\"Concrete Roman\"] = true;\n t.Constantia = true;\n t[\"Cooper Black\"] = true;\n t.Corona = true;\n t.Ecotype = true;\n t.Egyptienne = true;\n t.Elephant = true;\n t.Excelsior = true;\n t.Fairfield = true;\n t[\"FF Scala\"] = true;\n t.Folkard = true;\n t.Footlight = true;\n t.FreeSerif = true;\n t[\"Friz Quadrata\"] = true;\n t.Garamond = true;\n t.Gentium = true;\n t.Georgia = true;\n t.Gloucester = true;\n t[\"Goudy Old Style\"] = true;\n t[\"Goudy Schoolbook\"] = true;\n t[\"Goudy Pro Font\"] = true;\n t.Granjon = true;\n t[\"Guardian Egyptian\"] = true;\n t.Heather = true;\n t.Hercules = true;\n t[\"High Tower Text\"] = true;\n t.Hiroshige = true;\n t[\"Hoefler Text\"] = true;\n t[\"Humana Serif\"] = true;\n t.Imprint = true;\n t[\"Ionic No. 5\"] = true;\n t.Janson = true;\n t.Joanna = true;\n t.Korinna = true;\n t.Lexicon = true;\n t[\"Liberation Serif\"] = true;\n t[\"Linux Libertine\"] = true;\n t.Literaturnaya = true;\n t.Lucida = true;\n t[\"Lucida Bright\"] = true;\n t.Melior = true;\n t.Memphis = true;\n t.Miller = true;\n t.Minion = true;\n t.Modern = true;\n t[\"Mona Lisa\"] = true;\n t[\"Mrs Eaves\"] = true;\n t[\"MS Serif\"] = true;\n t[\"Museo Slab\"] = true;\n t[\"New York\"] = true;\n t[\"Nimbus Roman\"] = true;\n t[\"NPS Rawlinson Roadway\"] = true;\n t.NuptialScript = true;\n t.Palatino = true;\n t.Perpetua = true;\n t.Plantin = true;\n t[\"Plantin Schoolbook\"] = true;\n t.Playbill = true;\n t[\"Poor Richard\"] = true;\n t[\"Rawlinson Roadway\"] = true;\n t.Renault = true;\n t.Requiem = true;\n t.Rockwell = true;\n t.Roman = true;\n t[\"Rotis Serif\"] = true;\n t.Sabon = true;\n t.Scala = true;\n t.Seagull = true;\n t.Sistina = true;\n t.Souvenir = true;\n t.STIX = true;\n t[\"Stone Informal\"] = true;\n t[\"Stone Serif\"] = true;\n t.Sylfaen = true;\n t.Times = true;\n t.Trajan = true;\n t[\"Trinité\"] = true;\n t[\"Trump Mediaeval\"] = true;\n t.Utopia = true;\n t[\"Vale Type\"] = true;\n t[\"Bitstream Vera\"] = true;\n t[\"Vera Serif\"] = true;\n t.Versailles = true;\n t.Wanted = true;\n t.Weiss = true;\n t[\"Wide Latin\"] = true;\n t.Windsor = true;\n t.XITS = true;\n});\nexports.getSerifFonts = getSerifFonts;\nvar getSymbolsFonts = (0, _core_utils.getLookupTableFactory)(function (t) {\n t.Dingbats = true;\n t.Symbol = true;\n t.ZapfDingbats = true;\n});\nexports.getSymbolsFonts = getSymbolsFonts;\nvar getGlyphMapForStandardFonts = (0, _core_utils.getLookupTableFactory)(function (t) {\n t[2] = 10;\n t[3] = 32;\n t[4] = 33;\n t[5] = 34;\n t[6] = 35;\n t[7] = 36;\n t[8] = 37;\n t[9] = 38;\n t[10] = 39;\n t[11] = 40;\n t[12] = 41;\n t[13] = 42;\n t[14] = 43;\n t[15] = 44;\n t[16] = 45;\n t[17] = 46;\n t[18] = 47;\n t[19] = 48;\n t[20] = 49;\n t[21] = 50;\n t[22] = 51;\n t[23] = 52;\n t[24] = 53;\n t[25] = 54;\n t[26] = 55;\n t[27] = 56;\n t[28] = 57;\n t[29] = 58;\n t[30] = 894;\n t[31] = 60;\n t[32] = 61;\n t[33] = 62;\n t[34] = 63;\n t[35] = 64;\n t[36] = 65;\n t[37] = 66;\n t[38] = 67;\n t[39] = 68;\n t[40] = 69;\n t[41] = 70;\n t[42] = 71;\n t[43] = 72;\n t[44] = 73;\n t[45] = 74;\n t[46] = 75;\n t[47] = 76;\n t[48] = 77;\n t[49] = 78;\n t[50] = 79;\n t[51] = 80;\n t[52] = 81;\n t[53] = 82;\n t[54] = 83;\n t[55] = 84;\n t[56] = 85;\n t[57] = 86;\n t[58] = 87;\n t[59] = 88;\n t[60] = 89;\n t[61] = 90;\n t[62] = 91;\n t[63] = 92;\n t[64] = 93;\n t[65] = 94;\n t[66] = 95;\n t[67] = 96;\n t[68] = 97;\n t[69] = 98;\n t[70] = 99;\n t[71] = 100;\n t[72] = 101;\n t[73] = 102;\n t[74] = 103;\n t[75] = 104;\n t[76] = 105;\n t[77] = 106;\n t[78] = 107;\n t[79] = 108;\n t[80] = 109;\n t[81] = 110;\n t[82] = 111;\n t[83] = 112;\n t[84] = 113;\n t[85] = 114;\n t[86] = 115;\n t[87] = 116;\n t[88] = 117;\n t[89] = 118;\n t[90] = 119;\n t[91] = 120;\n t[92] = 121;\n t[93] = 122;\n t[94] = 123;\n t[95] = 124;\n t[96] = 125;\n t[97] = 126;\n t[98] = 196;\n t[99] = 197;\n t[100] = 199;\n t[101] = 201;\n t[102] = 209;\n t[103] = 214;\n t[104] = 220;\n t[105] = 225;\n t[106] = 224;\n t[107] = 226;\n t[108] = 228;\n t[109] = 227;\n t[110] = 229;\n t[111] = 231;\n t[112] = 233;\n t[113] = 232;\n t[114] = 234;\n t[115] = 235;\n t[116] = 237;\n t[117] = 236;\n t[118] = 238;\n t[119] = 239;\n t[120] = 241;\n t[121] = 243;\n t[122] = 242;\n t[123] = 244;\n t[124] = 246;\n t[125] = 245;\n t[126] = 250;\n t[127] = 249;\n t[128] = 251;\n t[129] = 252;\n t[130] = 8224;\n t[131] = 176;\n t[132] = 162;\n t[133] = 163;\n t[134] = 167;\n t[135] = 8226;\n t[136] = 182;\n t[137] = 223;\n t[138] = 174;\n t[139] = 169;\n t[140] = 8482;\n t[141] = 180;\n t[142] = 168;\n t[143] = 8800;\n t[144] = 198;\n t[145] = 216;\n t[146] = 8734;\n t[147] = 177;\n t[148] = 8804;\n t[149] = 8805;\n t[150] = 165;\n t[151] = 181;\n t[152] = 8706;\n t[153] = 8721;\n t[154] = 8719;\n t[156] = 8747;\n t[157] = 170;\n t[158] = 186;\n t[159] = 8486;\n t[160] = 230;\n t[161] = 248;\n t[162] = 191;\n t[163] = 161;\n t[164] = 172;\n t[165] = 8730;\n t[166] = 402;\n t[167] = 8776;\n t[168] = 8710;\n t[169] = 171;\n t[170] = 187;\n t[171] = 8230;\n t[210] = 218;\n t[223] = 711;\n t[224] = 321;\n t[225] = 322;\n t[227] = 353;\n t[229] = 382;\n t[234] = 253;\n t[252] = 263;\n t[253] = 268;\n t[254] = 269;\n t[258] = 258;\n t[260] = 260;\n t[261] = 261;\n t[265] = 280;\n t[266] = 281;\n t[268] = 283;\n t[269] = 313;\n t[275] = 323;\n t[276] = 324;\n t[278] = 328;\n t[284] = 345;\n t[285] = 346;\n t[286] = 347;\n t[292] = 367;\n t[295] = 377;\n t[296] = 378;\n t[298] = 380;\n t[305] = 963;\n t[306] = 964;\n t[307] = 966;\n t[308] = 8215;\n t[309] = 8252;\n t[310] = 8319;\n t[311] = 8359;\n t[312] = 8592;\n t[313] = 8593;\n t[337] = 9552;\n t[493] = 1039;\n t[494] = 1040;\n t[705] = 1524;\n t[706] = 8362;\n t[710] = 64288;\n t[711] = 64298;\n t[759] = 1617;\n t[761] = 1776;\n t[763] = 1778;\n t[775] = 1652;\n t[777] = 1764;\n t[778] = 1780;\n t[779] = 1781;\n t[780] = 1782;\n t[782] = 771;\n t[783] = 64726;\n t[786] = 8363;\n t[788] = 8532;\n t[790] = 768;\n t[791] = 769;\n t[792] = 768;\n t[795] = 803;\n t[797] = 64336;\n t[798] = 64337;\n t[799] = 64342;\n t[800] = 64343;\n t[801] = 64344;\n t[802] = 64345;\n t[803] = 64362;\n t[804] = 64363;\n t[805] = 64364;\n t[2424] = 7821;\n t[2425] = 7822;\n t[2426] = 7823;\n t[2427] = 7824;\n t[2428] = 7825;\n t[2429] = 7826;\n t[2430] = 7827;\n t[2433] = 7682;\n t[2678] = 8045;\n t[2679] = 8046;\n t[2830] = 1552;\n t[2838] = 686;\n t[2840] = 751;\n t[2842] = 753;\n t[2843] = 754;\n t[2844] = 755;\n t[2846] = 757;\n t[2856] = 767;\n t[2857] = 848;\n t[2858] = 849;\n t[2862] = 853;\n t[2863] = 854;\n t[2864] = 855;\n t[2865] = 861;\n t[2866] = 862;\n t[2906] = 7460;\n t[2908] = 7462;\n t[2909] = 7463;\n t[2910] = 7464;\n t[2912] = 7466;\n t[2913] = 7467;\n t[2914] = 7468;\n t[2916] = 7470;\n t[2917] = 7471;\n t[2918] = 7472;\n t[2920] = 7474;\n t[2921] = 7475;\n t[2922] = 7476;\n t[2924] = 7478;\n t[2925] = 7479;\n t[2926] = 7480;\n t[2928] = 7482;\n t[2929] = 7483;\n t[2930] = 7484;\n t[2932] = 7486;\n t[2933] = 7487;\n t[2934] = 7488;\n t[2936] = 7490;\n t[2937] = 7491;\n t[2938] = 7492;\n t[2940] = 7494;\n t[2941] = 7495;\n t[2942] = 7496;\n t[2944] = 7498;\n t[2946] = 7500;\n t[2948] = 7502;\n t[2950] = 7504;\n t[2951] = 7505;\n t[2952] = 7506;\n t[2954] = 7508;\n t[2955] = 7509;\n t[2956] = 7510;\n t[2958] = 7512;\n t[2959] = 7513;\n t[2960] = 7514;\n t[2962] = 7516;\n t[2963] = 7517;\n t[2964] = 7518;\n t[2966] = 7520;\n t[2967] = 7521;\n t[2968] = 7522;\n t[2970] = 7524;\n t[2971] = 7525;\n t[2972] = 7526;\n t[2974] = 7528;\n t[2975] = 7529;\n t[2976] = 7530;\n t[2978] = 1537;\n t[2979] = 1538;\n t[2980] = 1539;\n t[2982] = 1549;\n t[2983] = 1551;\n t[2984] = 1552;\n t[2986] = 1554;\n t[2987] = 1555;\n t[2988] = 1556;\n t[2990] = 1623;\n t[2991] = 1624;\n t[2995] = 1775;\n t[2999] = 1791;\n t[3002] = 64290;\n t[3003] = 64291;\n t[3004] = 64292;\n t[3006] = 64294;\n t[3007] = 64295;\n t[3008] = 64296;\n t[3011] = 1900;\n t[3014] = 8223;\n t[3015] = 8244;\n t[3017] = 7532;\n t[3018] = 7533;\n t[3019] = 7534;\n t[3075] = 7590;\n t[3076] = 7591;\n t[3079] = 7594;\n t[3080] = 7595;\n t[3083] = 7598;\n t[3084] = 7599;\n t[3087] = 7602;\n t[3088] = 7603;\n t[3091] = 7606;\n t[3092] = 7607;\n t[3095] = 7610;\n t[3096] = 7611;\n t[3099] = 7614;\n t[3100] = 7615;\n t[3103] = 7618;\n t[3104] = 7619;\n t[3107] = 8337;\n t[3108] = 8338;\n t[3116] = 1884;\n t[3119] = 1885;\n t[3120] = 1885;\n t[3123] = 1886;\n t[3124] = 1886;\n t[3127] = 1887;\n t[3128] = 1887;\n t[3131] = 1888;\n t[3132] = 1888;\n t[3135] = 1889;\n t[3136] = 1889;\n t[3139] = 1890;\n t[3140] = 1890;\n t[3143] = 1891;\n t[3144] = 1891;\n t[3147] = 1892;\n t[3148] = 1892;\n t[3153] = 580;\n t[3154] = 581;\n t[3157] = 584;\n t[3158] = 585;\n t[3161] = 588;\n t[3162] = 589;\n t[3165] = 891;\n t[3166] = 892;\n t[3169] = 1274;\n t[3170] = 1275;\n t[3173] = 1278;\n t[3174] = 1279;\n t[3181] = 7622;\n t[3182] = 7623;\n t[3282] = 11799;\n t[3316] = 578;\n t[3379] = 42785;\n t[3393] = 1159;\n t[3416] = 8377;\n});\nexports.getGlyphMapForStandardFonts = getGlyphMapForStandardFonts;\nvar getSupplementalGlyphMapForArialBlack = (0, _core_utils.getLookupTableFactory)(function (t) {\n t[227] = 322;\n t[264] = 261;\n t[291] = 346;\n});\nexports.getSupplementalGlyphMapForArialBlack = getSupplementalGlyphMapForArialBlack;\nvar getSupplementalGlyphMapForCalibri = (0, _core_utils.getLookupTableFactory)(function (t) {\n t[1] = 32;\n t[4] = 65;\n t[17] = 66;\n t[18] = 67;\n t[24] = 68;\n t[28] = 69;\n t[38] = 70;\n t[39] = 71;\n t[44] = 72;\n t[47] = 73;\n t[58] = 74;\n t[60] = 75;\n t[62] = 76;\n t[68] = 77;\n t[69] = 78;\n t[75] = 79;\n t[87] = 80;\n t[89] = 81;\n t[90] = 82;\n t[94] = 83;\n t[100] = 84;\n t[104] = 85;\n t[115] = 86;\n t[116] = 87;\n t[121] = 88;\n t[122] = 89;\n t[127] = 90;\n t[258] = 97;\n t[268] = 261;\n t[271] = 98;\n t[272] = 99;\n t[273] = 263;\n t[282] = 100;\n t[286] = 101;\n t[295] = 281;\n t[296] = 102;\n t[336] = 103;\n t[346] = 104;\n t[349] = 105;\n t[361] = 106;\n t[364] = 107;\n t[367] = 108;\n t[371] = 322;\n t[373] = 109;\n t[374] = 110;\n t[381] = 111;\n t[383] = 243;\n t[393] = 112;\n t[395] = 113;\n t[396] = 114;\n t[400] = 115;\n t[401] = 347;\n t[410] = 116;\n t[437] = 117;\n t[448] = 118;\n t[449] = 119;\n t[454] = 120;\n t[455] = 121;\n t[460] = 122;\n t[463] = 380;\n t[853] = 44;\n t[855] = 58;\n t[856] = 46;\n t[876] = 47;\n t[878] = 45;\n t[882] = 45;\n t[894] = 40;\n t[895] = 41;\n t[896] = 91;\n t[897] = 93;\n t[923] = 64;\n t[1004] = 48;\n t[1005] = 49;\n t[1006] = 50;\n t[1007] = 51;\n t[1008] = 52;\n t[1009] = 53;\n t[1010] = 54;\n t[1011] = 55;\n t[1012] = 56;\n t[1013] = 57;\n t[1081] = 37;\n t[1085] = 43;\n t[1086] = 45;\n});\nexports.getSupplementalGlyphMapForCalibri = getSupplementalGlyphMapForCalibri;\n\n/***/ }),\n/* 228 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar getLookupTableFactory = __w_pdfjs_require__(201).getLookupTableFactory;\nvar getSpecialPUASymbols = getLookupTableFactory(function (t) {\n t[63721] = 0x00a9;\n t[63193] = 0x00a9;\n t[63720] = 0x00ae;\n t[63194] = 0x00ae;\n t[63722] = 0x2122;\n t[63195] = 0x2122;\n t[63729] = 0x23a7;\n t[63730] = 0x23a8;\n t[63731] = 0x23a9;\n t[63740] = 0x23ab;\n t[63741] = 0x23ac;\n t[63742] = 0x23ad;\n t[63726] = 0x23a1;\n t[63727] = 0x23a2;\n t[63728] = 0x23a3;\n t[63737] = 0x23a4;\n t[63738] = 0x23a5;\n t[63739] = 0x23a6;\n t[63723] = 0x239b;\n t[63724] = 0x239c;\n t[63725] = 0x239d;\n t[63734] = 0x239e;\n t[63735] = 0x239f;\n t[63736] = 0x23a0;\n});\nfunction mapSpecialUnicodeValues(code) {\n if (code >= 0xfff0 && code <= 0xffff) {\n return 0;\n } else if (code >= 0xf600 && code <= 0xf8ff) {\n return getSpecialPUASymbols()[code] || code;\n } else if (code === 0x00ad) {\n return 0x002d;\n }\n return code;\n}\nfunction getUnicodeForGlyph(name, glyphsUnicodeMap) {\n var unicode = glyphsUnicodeMap[name];\n if (unicode !== undefined) {\n return unicode;\n }\n if (!name) {\n return -1;\n }\n if (name[0] === \"u\") {\n var nameLen = name.length, hexStr;\n if (nameLen === 7 && name[1] === \"n\" && name[2] === \"i\") {\n hexStr = name.substring(3);\n } else if (nameLen >= 5 && nameLen <= 7) {\n hexStr = name.substring(1);\n } else {\n return -1;\n }\n if (hexStr === hexStr.toUpperCase()) {\n unicode = parseInt(hexStr, 16);\n if (unicode >= 0) {\n return unicode;\n }\n }\n }\n return -1;\n}\nvar UnicodeRanges = [\n {\n begin: 0x0000,\n end: 0x007f\n },\n {\n begin: 0x0080,\n end: 0x00ff\n },\n {\n begin: 0x0100,\n end: 0x017f\n },\n {\n begin: 0x0180,\n end: 0x024f\n },\n {\n begin: 0x0250,\n end: 0x02af\n },\n {\n begin: 0x02b0,\n end: 0x02ff\n },\n {\n begin: 0x0300,\n end: 0x036f\n },\n {\n begin: 0x0370,\n end: 0x03ff\n },\n {\n begin: 0x2c80,\n end: 0x2cff\n },\n {\n begin: 0x0400,\n end: 0x04ff\n },\n {\n begin: 0x0530,\n end: 0x058f\n },\n {\n begin: 0x0590,\n end: 0x05ff\n },\n {\n begin: 0xa500,\n end: 0xa63f\n },\n {\n begin: 0x0600,\n end: 0x06ff\n },\n {\n begin: 0x07c0,\n end: 0x07ff\n },\n {\n begin: 0x0900,\n end: 0x097f\n },\n {\n begin: 0x0980,\n end: 0x09ff\n },\n {\n begin: 0x0a00,\n end: 0x0a7f\n },\n {\n begin: 0x0a80,\n end: 0x0aff\n },\n {\n begin: 0x0b00,\n end: 0x0b7f\n },\n {\n begin: 0x0b80,\n end: 0x0bff\n },\n {\n begin: 0x0c00,\n end: 0x0c7f\n },\n {\n begin: 0x0c80,\n end: 0x0cff\n },\n {\n begin: 0x0d00,\n end: 0x0d7f\n },\n {\n begin: 0x0e00,\n end: 0x0e7f\n },\n {\n begin: 0x0e80,\n end: 0x0eff\n },\n {\n begin: 0x10a0,\n end: 0x10ff\n },\n {\n begin: 0x1b00,\n end: 0x1b7f\n },\n {\n begin: 0x1100,\n end: 0x11ff\n },\n {\n begin: 0x1e00,\n end: 0x1eff\n },\n {\n begin: 0x1f00,\n end: 0x1fff\n },\n {\n begin: 0x2000,\n end: 0x206f\n },\n {\n begin: 0x2070,\n end: 0x209f\n },\n {\n begin: 0x20a0,\n end: 0x20cf\n },\n {\n begin: 0x20d0,\n end: 0x20ff\n },\n {\n begin: 0x2100,\n end: 0x214f\n },\n {\n begin: 0x2150,\n end: 0x218f\n },\n {\n begin: 0x2190,\n end: 0x21ff\n },\n {\n begin: 0x2200,\n end: 0x22ff\n },\n {\n begin: 0x2300,\n end: 0x23ff\n },\n {\n begin: 0x2400,\n end: 0x243f\n },\n {\n begin: 0x2440,\n end: 0x245f\n },\n {\n begin: 0x2460,\n end: 0x24ff\n },\n {\n begin: 0x2500,\n end: 0x257f\n },\n {\n begin: 0x2580,\n end: 0x259f\n },\n {\n begin: 0x25a0,\n end: 0x25ff\n },\n {\n begin: 0x2600,\n end: 0x26ff\n },\n {\n begin: 0x2700,\n end: 0x27bf\n },\n {\n begin: 0x3000,\n end: 0x303f\n },\n {\n begin: 0x3040,\n end: 0x309f\n },\n {\n begin: 0x30a0,\n end: 0x30ff\n },\n {\n begin: 0x3100,\n end: 0x312f\n },\n {\n begin: 0x3130,\n end: 0x318f\n },\n {\n begin: 0xa840,\n end: 0xa87f\n },\n {\n begin: 0x3200,\n end: 0x32ff\n },\n {\n begin: 0x3300,\n end: 0x33ff\n },\n {\n begin: 0xac00,\n end: 0xd7af\n },\n {\n begin: 0xd800,\n end: 0xdfff\n },\n {\n begin: 0x10900,\n end: 0x1091f\n },\n {\n begin: 0x4e00,\n end: 0x9fff\n },\n {\n begin: 0xe000,\n end: 0xf8ff\n },\n {\n begin: 0x31c0,\n end: 0x31ef\n },\n {\n begin: 0xfb00,\n end: 0xfb4f\n },\n {\n begin: 0xfb50,\n end: 0xfdff\n },\n {\n begin: 0xfe20,\n end: 0xfe2f\n },\n {\n begin: 0xfe10,\n end: 0xfe1f\n },\n {\n begin: 0xfe50,\n end: 0xfe6f\n },\n {\n begin: 0xfe70,\n end: 0xfeff\n },\n {\n begin: 0xff00,\n end: 0xffef\n },\n {\n begin: 0xfff0,\n end: 0xffff\n },\n {\n begin: 0x0f00,\n end: 0x0fff\n },\n {\n begin: 0x0700,\n end: 0x074f\n },\n {\n begin: 0x0780,\n end: 0x07bf\n },\n {\n begin: 0x0d80,\n end: 0x0dff\n },\n {\n begin: 0x1000,\n end: 0x109f\n },\n {\n begin: 0x1200,\n end: 0x137f\n },\n {\n begin: 0x13a0,\n end: 0x13ff\n },\n {\n begin: 0x1400,\n end: 0x167f\n },\n {\n begin: 0x1680,\n end: 0x169f\n },\n {\n begin: 0x16a0,\n end: 0x16ff\n },\n {\n begin: 0x1780,\n end: 0x17ff\n },\n {\n begin: 0x1800,\n end: 0x18af\n },\n {\n begin: 0x2800,\n end: 0x28ff\n },\n {\n begin: 0xa000,\n end: 0xa48f\n },\n {\n begin: 0x1700,\n end: 0x171f\n },\n {\n begin: 0x10300,\n end: 0x1032f\n },\n {\n begin: 0x10330,\n end: 0x1034f\n },\n {\n begin: 0x10400,\n end: 0x1044f\n },\n {\n begin: 0x1d000,\n end: 0x1d0ff\n },\n {\n begin: 0x1d400,\n end: 0x1d7ff\n },\n {\n begin: 0xff000,\n end: 0xffffd\n },\n {\n begin: 0xfe00,\n end: 0xfe0f\n },\n {\n begin: 0xe0000,\n end: 0xe007f\n },\n {\n begin: 0x1900,\n end: 0x194f\n },\n {\n begin: 0x1950,\n end: 0x197f\n },\n {\n begin: 0x1980,\n end: 0x19df\n },\n {\n begin: 0x1a00,\n end: 0x1a1f\n },\n {\n begin: 0x2c00,\n end: 0x2c5f\n },\n {\n begin: 0x2d30,\n end: 0x2d7f\n },\n {\n begin: 0x4dc0,\n end: 0x4dff\n },\n {\n begin: 0xa800,\n end: 0xa82f\n },\n {\n begin: 0x10000,\n end: 0x1007f\n },\n {\n begin: 0x10140,\n end: 0x1018f\n },\n {\n begin: 0x10380,\n end: 0x1039f\n },\n {\n begin: 0x103a0,\n end: 0x103df\n },\n {\n begin: 0x10450,\n end: 0x1047f\n },\n {\n begin: 0x10480,\n end: 0x104af\n },\n {\n begin: 0x10800,\n end: 0x1083f\n },\n {\n begin: 0x10a00,\n end: 0x10a5f\n },\n {\n begin: 0x1d300,\n end: 0x1d35f\n },\n {\n begin: 0x12000,\n end: 0x123ff\n },\n {\n begin: 0x1d360,\n end: 0x1d37f\n },\n {\n begin: 0x1b80,\n end: 0x1bbf\n },\n {\n begin: 0x1c00,\n end: 0x1c4f\n },\n {\n begin: 0x1c50,\n end: 0x1c7f\n },\n {\n begin: 0xa880,\n end: 0xa8df\n },\n {\n begin: 0xa900,\n end: 0xa92f\n },\n {\n begin: 0xa930,\n end: 0xa95f\n },\n {\n begin: 0xaa00,\n end: 0xaa5f\n },\n {\n begin: 0x10190,\n end: 0x101cf\n },\n {\n begin: 0x101d0,\n end: 0x101ff\n },\n {\n begin: 0x102a0,\n end: 0x102df\n },\n {\n begin: 0x1f030,\n end: 0x1f09f\n }\n];\nfunction getUnicodeRangeFor(value) {\n for (var i = 0, ii = UnicodeRanges.length; i < ii; i++) {\n var range = UnicodeRanges[i];\n if (value >= range.begin && value < range.end) {\n return i;\n }\n }\n return -1;\n}\nfunction isRTLRangeFor(value) {\n var range = UnicodeRanges[13];\n if (value >= range.begin && value < range.end) {\n return true;\n }\n range = UnicodeRanges[11];\n if (value >= range.begin && value < range.end) {\n return true;\n }\n return false;\n}\nvar getNormalizedUnicodes = getLookupTableFactory(function (t) {\n t[\"\\u00A8\"] = \"\\u0020\\u0308\";\n t[\"\\u00AF\"] = \"\\u0020\\u0304\";\n t[\"\\u00B4\"] = \"\\u0020\\u0301\";\n t[\"\\u00B5\"] = \"\\u03BC\";\n t[\"\\u00B8\"] = \"\\u0020\\u0327\";\n t[\"\\u0132\"] = \"\\u0049\\u004A\";\n t[\"\\u0133\"] = \"\\u0069\\u006A\";\n t[\"\\u013F\"] = \"\\u004C\\u00B7\";\n t[\"\\u0140\"] = \"\\u006C\\u00B7\";\n t[\"\\u0149\"] = \"\\u02BC\\u006E\";\n t[\"\\u017F\"] = \"\\u0073\";\n t[\"\\u01C4\"] = \"\\u0044\\u017D\";\n t[\"\\u01C5\"] = \"\\u0044\\u017E\";\n t[\"\\u01C6\"] = \"\\u0064\\u017E\";\n t[\"\\u01C7\"] = \"\\u004C\\u004A\";\n t[\"\\u01C8\"] = \"\\u004C\\u006A\";\n t[\"\\u01C9\"] = \"\\u006C\\u006A\";\n t[\"\\u01CA\"] = \"\\u004E\\u004A\";\n t[\"\\u01CB\"] = \"\\u004E\\u006A\";\n t[\"\\u01CC\"] = \"\\u006E\\u006A\";\n t[\"\\u01F1\"] = \"\\u0044\\u005A\";\n t[\"\\u01F2\"] = \"\\u0044\\u007A\";\n t[\"\\u01F3\"] = \"\\u0064\\u007A\";\n t[\"\\u02D8\"] = \"\\u0020\\u0306\";\n t[\"\\u02D9\"] = \"\\u0020\\u0307\";\n t[\"\\u02DA\"] = \"\\u0020\\u030A\";\n t[\"\\u02DB\"] = \"\\u0020\\u0328\";\n t[\"\\u02DC\"] = \"\\u0020\\u0303\";\n t[\"\\u02DD\"] = \"\\u0020\\u030B\";\n t[\"\\u037A\"] = \"\\u0020\\u0345\";\n t[\"\\u0384\"] = \"\\u0020\\u0301\";\n t[\"\\u03D0\"] = \"\\u03B2\";\n t[\"\\u03D1\"] = \"\\u03B8\";\n t[\"\\u03D2\"] = \"\\u03A5\";\n t[\"\\u03D5\"] = \"\\u03C6\";\n t[\"\\u03D6\"] = \"\\u03C0\";\n t[\"\\u03F0\"] = \"\\u03BA\";\n t[\"\\u03F1\"] = \"\\u03C1\";\n t[\"\\u03F2\"] = \"\\u03C2\";\n t[\"\\u03F4\"] = \"\\u0398\";\n t[\"\\u03F5\"] = \"\\u03B5\";\n t[\"\\u03F9\"] = \"\\u03A3\";\n t[\"\\u0587\"] = \"\\u0565\\u0582\";\n t[\"\\u0675\"] = \"\\u0627\\u0674\";\n t[\"\\u0676\"] = \"\\u0648\\u0674\";\n t[\"\\u0677\"] = \"\\u06C7\\u0674\";\n t[\"\\u0678\"] = \"\\u064A\\u0674\";\n t[\"\\u0E33\"] = \"\\u0E4D\\u0E32\";\n t[\"\\u0EB3\"] = \"\\u0ECD\\u0EB2\";\n t[\"\\u0EDC\"] = \"\\u0EAB\\u0E99\";\n t[\"\\u0EDD\"] = \"\\u0EAB\\u0EA1\";\n t[\"\\u0F77\"] = \"\\u0FB2\\u0F81\";\n t[\"\\u0F79\"] = \"\\u0FB3\\u0F81\";\n t[\"\\u1E9A\"] = \"\\u0061\\u02BE\";\n t[\"\\u1FBD\"] = \"\\u0020\\u0313\";\n t[\"\\u1FBF\"] = \"\\u0020\\u0313\";\n t[\"\\u1FC0\"] = \"\\u0020\\u0342\";\n t[\"\\u1FFE\"] = \"\\u0020\\u0314\";\n t[\"\\u2002\"] = \"\\u0020\";\n t[\"\\u2003\"] = \"\\u0020\";\n t[\"\\u2004\"] = \"\\u0020\";\n t[\"\\u2005\"] = \"\\u0020\";\n t[\"\\u2006\"] = \"\\u0020\";\n t[\"\\u2008\"] = \"\\u0020\";\n t[\"\\u2009\"] = \"\\u0020\";\n t[\"\\u200A\"] = \"\\u0020\";\n t[\"\\u2017\"] = \"\\u0020\\u0333\";\n t[\"\\u2024\"] = \"\\u002E\";\n t[\"\\u2025\"] = \"\\u002E\\u002E\";\n t[\"\\u2026\"] = \"\\u002E\\u002E\\u002E\";\n t[\"\\u2033\"] = \"\\u2032\\u2032\";\n t[\"\\u2034\"] = \"\\u2032\\u2032\\u2032\";\n t[\"\\u2036\"] = \"\\u2035\\u2035\";\n t[\"\\u2037\"] = \"\\u2035\\u2035\\u2035\";\n t[\"\\u203C\"] = \"\\u0021\\u0021\";\n t[\"\\u203E\"] = \"\\u0020\\u0305\";\n t[\"\\u2047\"] = \"\\u003F\\u003F\";\n t[\"\\u2048\"] = \"\\u003F\\u0021\";\n t[\"\\u2049\"] = \"\\u0021\\u003F\";\n t[\"\\u2057\"] = \"\\u2032\\u2032\\u2032\\u2032\";\n t[\"\\u205F\"] = \"\\u0020\";\n t[\"\\u20A8\"] = \"\\u0052\\u0073\";\n t[\"\\u2100\"] = \"\\u0061\\u002F\\u0063\";\n t[\"\\u2101\"] = \"\\u0061\\u002F\\u0073\";\n t[\"\\u2103\"] = \"\\u00B0\\u0043\";\n t[\"\\u2105\"] = \"\\u0063\\u002F\\u006F\";\n t[\"\\u2106\"] = \"\\u0063\\u002F\\u0075\";\n t[\"\\u2107\"] = \"\\u0190\";\n t[\"\\u2109\"] = \"\\u00B0\\u0046\";\n t[\"\\u2116\"] = \"\\u004E\\u006F\";\n t[\"\\u2121\"] = \"\\u0054\\u0045\\u004C\";\n t[\"\\u2135\"] = \"\\u05D0\";\n t[\"\\u2136\"] = \"\\u05D1\";\n t[\"\\u2137\"] = \"\\u05D2\";\n t[\"\\u2138\"] = \"\\u05D3\";\n t[\"\\u213B\"] = \"\\u0046\\u0041\\u0058\";\n t[\"\\u2160\"] = \"\\u0049\";\n t[\"\\u2161\"] = \"\\u0049\\u0049\";\n t[\"\\u2162\"] = \"\\u0049\\u0049\\u0049\";\n t[\"\\u2163\"] = \"\\u0049\\u0056\";\n t[\"\\u2164\"] = \"\\u0056\";\n t[\"\\u2165\"] = \"\\u0056\\u0049\";\n t[\"\\u2166\"] = \"\\u0056\\u0049\\u0049\";\n t[\"\\u2167\"] = \"\\u0056\\u0049\\u0049\\u0049\";\n t[\"\\u2168\"] = \"\\u0049\\u0058\";\n t[\"\\u2169\"] = \"\\u0058\";\n t[\"\\u216A\"] = \"\\u0058\\u0049\";\n t[\"\\u216B\"] = \"\\u0058\\u0049\\u0049\";\n t[\"\\u216C\"] = \"\\u004C\";\n t[\"\\u216D\"] = \"\\u0043\";\n t[\"\\u216E\"] = \"\\u0044\";\n t[\"\\u216F\"] = \"\\u004D\";\n t[\"\\u2170\"] = \"\\u0069\";\n t[\"\\u2171\"] = \"\\u0069\\u0069\";\n t[\"\\u2172\"] = \"\\u0069\\u0069\\u0069\";\n t[\"\\u2173\"] = \"\\u0069\\u0076\";\n t[\"\\u2174\"] = \"\\u0076\";\n t[\"\\u2175\"] = \"\\u0076\\u0069\";\n t[\"\\u2176\"] = \"\\u0076\\u0069\\u0069\";\n t[\"\\u2177\"] = \"\\u0076\\u0069\\u0069\\u0069\";\n t[\"\\u2178\"] = \"\\u0069\\u0078\";\n t[\"\\u2179\"] = \"\\u0078\";\n t[\"\\u217A\"] = \"\\u0078\\u0069\";\n t[\"\\u217B\"] = \"\\u0078\\u0069\\u0069\";\n t[\"\\u217C\"] = \"\\u006C\";\n t[\"\\u217D\"] = \"\\u0063\";\n t[\"\\u217E\"] = \"\\u0064\";\n t[\"\\u217F\"] = \"\\u006D\";\n t[\"\\u222C\"] = \"\\u222B\\u222B\";\n t[\"\\u222D\"] = \"\\u222B\\u222B\\u222B\";\n t[\"\\u222F\"] = \"\\u222E\\u222E\";\n t[\"\\u2230\"] = \"\\u222E\\u222E\\u222E\";\n t[\"\\u2474\"] = \"\\u0028\\u0031\\u0029\";\n t[\"\\u2475\"] = \"\\u0028\\u0032\\u0029\";\n t[\"\\u2476\"] = \"\\u0028\\u0033\\u0029\";\n t[\"\\u2477\"] = \"\\u0028\\u0034\\u0029\";\n t[\"\\u2478\"] = \"\\u0028\\u0035\\u0029\";\n t[\"\\u2479\"] = \"\\u0028\\u0036\\u0029\";\n t[\"\\u247A\"] = \"\\u0028\\u0037\\u0029\";\n t[\"\\u247B\"] = \"\\u0028\\u0038\\u0029\";\n t[\"\\u247C\"] = \"\\u0028\\u0039\\u0029\";\n t[\"\\u247D\"] = \"\\u0028\\u0031\\u0030\\u0029\";\n t[\"\\u247E\"] = \"\\u0028\\u0031\\u0031\\u0029\";\n t[\"\\u247F\"] = \"\\u0028\\u0031\\u0032\\u0029\";\n t[\"\\u2480\"] = \"\\u0028\\u0031\\u0033\\u0029\";\n t[\"\\u2481\"] = \"\\u0028\\u0031\\u0034\\u0029\";\n t[\"\\u2482\"] = \"\\u0028\\u0031\\u0035\\u0029\";\n t[\"\\u2483\"] = \"\\u0028\\u0031\\u0036\\u0029\";\n t[\"\\u2484\"] = \"\\u0028\\u0031\\u0037\\u0029\";\n t[\"\\u2485\"] = \"\\u0028\\u0031\\u0038\\u0029\";\n t[\"\\u2486\"] = \"\\u0028\\u0031\\u0039\\u0029\";\n t[\"\\u2487\"] = \"\\u0028\\u0032\\u0030\\u0029\";\n t[\"\\u2488\"] = \"\\u0031\\u002E\";\n t[\"\\u2489\"] = \"\\u0032\\u002E\";\n t[\"\\u248A\"] = \"\\u0033\\u002E\";\n t[\"\\u248B\"] = \"\\u0034\\u002E\";\n t[\"\\u248C\"] = \"\\u0035\\u002E\";\n t[\"\\u248D\"] = \"\\u0036\\u002E\";\n t[\"\\u248E\"] = \"\\u0037\\u002E\";\n t[\"\\u248F\"] = \"\\u0038\\u002E\";\n t[\"\\u2490\"] = \"\\u0039\\u002E\";\n t[\"\\u2491\"] = \"\\u0031\\u0030\\u002E\";\n t[\"\\u2492\"] = \"\\u0031\\u0031\\u002E\";\n t[\"\\u2493\"] = \"\\u0031\\u0032\\u002E\";\n t[\"\\u2494\"] = \"\\u0031\\u0033\\u002E\";\n t[\"\\u2495\"] = \"\\u0031\\u0034\\u002E\";\n t[\"\\u2496\"] = \"\\u0031\\u0035\\u002E\";\n t[\"\\u2497\"] = \"\\u0031\\u0036\\u002E\";\n t[\"\\u2498\"] = \"\\u0031\\u0037\\u002E\";\n t[\"\\u2499\"] = \"\\u0031\\u0038\\u002E\";\n t[\"\\u249A\"] = \"\\u0031\\u0039\\u002E\";\n t[\"\\u249B\"] = \"\\u0032\\u0030\\u002E\";\n t[\"\\u249C\"] = \"\\u0028\\u0061\\u0029\";\n t[\"\\u249D\"] = \"\\u0028\\u0062\\u0029\";\n t[\"\\u249E\"] = \"\\u0028\\u0063\\u0029\";\n t[\"\\u249F\"] = \"\\u0028\\u0064\\u0029\";\n t[\"\\u24A0\"] = \"\\u0028\\u0065\\u0029\";\n t[\"\\u24A1\"] = \"\\u0028\\u0066\\u0029\";\n t[\"\\u24A2\"] = \"\\u0028\\u0067\\u0029\";\n t[\"\\u24A3\"] = \"\\u0028\\u0068\\u0029\";\n t[\"\\u24A4\"] = \"\\u0028\\u0069\\u0029\";\n t[\"\\u24A5\"] = \"\\u0028\\u006A\\u0029\";\n t[\"\\u24A6\"] = \"\\u0028\\u006B\\u0029\";\n t[\"\\u24A7\"] = \"\\u0028\\u006C\\u0029\";\n t[\"\\u24A8\"] = \"\\u0028\\u006D\\u0029\";\n t[\"\\u24A9\"] = \"\\u0028\\u006E\\u0029\";\n t[\"\\u24AA\"] = \"\\u0028\\u006F\\u0029\";\n t[\"\\u24AB\"] = \"\\u0028\\u0070\\u0029\";\n t[\"\\u24AC\"] = \"\\u0028\\u0071\\u0029\";\n t[\"\\u24AD\"] = \"\\u0028\\u0072\\u0029\";\n t[\"\\u24AE\"] = \"\\u0028\\u0073\\u0029\";\n t[\"\\u24AF\"] = \"\\u0028\\u0074\\u0029\";\n t[\"\\u24B0\"] = \"\\u0028\\u0075\\u0029\";\n t[\"\\u24B1\"] = \"\\u0028\\u0076\\u0029\";\n t[\"\\u24B2\"] = \"\\u0028\\u0077\\u0029\";\n t[\"\\u24B3\"] = \"\\u0028\\u0078\\u0029\";\n t[\"\\u24B4\"] = \"\\u0028\\u0079\\u0029\";\n t[\"\\u24B5\"] = \"\\u0028\\u007A\\u0029\";\n t[\"\\u2A0C\"] = \"\\u222B\\u222B\\u222B\\u222B\";\n t[\"\\u2A74\"] = \"\\u003A\\u003A\\u003D\";\n t[\"\\u2A75\"] = \"\\u003D\\u003D\";\n t[\"\\u2A76\"] = \"\\u003D\\u003D\\u003D\";\n t[\"\\u2E9F\"] = \"\\u6BCD\";\n t[\"\\u2EF3\"] = \"\\u9F9F\";\n t[\"\\u2F00\"] = \"\\u4E00\";\n t[\"\\u2F01\"] = \"\\u4E28\";\n t[\"\\u2F02\"] = \"\\u4E36\";\n t[\"\\u2F03\"] = \"\\u4E3F\";\n t[\"\\u2F04\"] = \"\\u4E59\";\n t[\"\\u2F05\"] = \"\\u4E85\";\n t[\"\\u2F06\"] = \"\\u4E8C\";\n t[\"\\u2F07\"] = \"\\u4EA0\";\n t[\"\\u2F08\"] = \"\\u4EBA\";\n t[\"\\u2F09\"] = \"\\u513F\";\n t[\"\\u2F0A\"] = \"\\u5165\";\n t[\"\\u2F0B\"] = \"\\u516B\";\n t[\"\\u2F0C\"] = \"\\u5182\";\n t[\"\\u2F0D\"] = \"\\u5196\";\n t[\"\\u2F0E\"] = \"\\u51AB\";\n t[\"\\u2F0F\"] = \"\\u51E0\";\n t[\"\\u2F10\"] = \"\\u51F5\";\n t[\"\\u2F11\"] = \"\\u5200\";\n t[\"\\u2F12\"] = \"\\u529B\";\n t[\"\\u2F13\"] = \"\\u52F9\";\n t[\"\\u2F14\"] = \"\\u5315\";\n t[\"\\u2F15\"] = \"\\u531A\";\n t[\"\\u2F16\"] = \"\\u5338\";\n t[\"\\u2F17\"] = \"\\u5341\";\n t[\"\\u2F18\"] = \"\\u535C\";\n t[\"\\u2F19\"] = \"\\u5369\";\n t[\"\\u2F1A\"] = \"\\u5382\";\n t[\"\\u2F1B\"] = \"\\u53B6\";\n t[\"\\u2F1C\"] = \"\\u53C8\";\n t[\"\\u2F1D\"] = \"\\u53E3\";\n t[\"\\u2F1E\"] = \"\\u56D7\";\n t[\"\\u2F1F\"] = \"\\u571F\";\n t[\"\\u2F20\"] = \"\\u58EB\";\n t[\"\\u2F21\"] = \"\\u5902\";\n t[\"\\u2F22\"] = \"\\u590A\";\n t[\"\\u2F23\"] = \"\\u5915\";\n t[\"\\u2F24\"] = \"\\u5927\";\n t[\"\\u2F25\"] = \"\\u5973\";\n t[\"\\u2F26\"] = \"\\u5B50\";\n t[\"\\u2F27\"] = \"\\u5B80\";\n t[\"\\u2F28\"] = \"\\u5BF8\";\n t[\"\\u2F29\"] = \"\\u5C0F\";\n t[\"\\u2F2A\"] = \"\\u5C22\";\n t[\"\\u2F2B\"] = \"\\u5C38\";\n t[\"\\u2F2C\"] = \"\\u5C6E\";\n t[\"\\u2F2D\"] = \"\\u5C71\";\n t[\"\\u2F2E\"] = \"\\u5DDB\";\n t[\"\\u2F2F\"] = \"\\u5DE5\";\n t[\"\\u2F30\"] = \"\\u5DF1\";\n t[\"\\u2F31\"] = \"\\u5DFE\";\n t[\"\\u2F32\"] = \"\\u5E72\";\n t[\"\\u2F33\"] = \"\\u5E7A\";\n t[\"\\u2F34\"] = \"\\u5E7F\";\n t[\"\\u2F35\"] = \"\\u5EF4\";\n t[\"\\u2F36\"] = \"\\u5EFE\";\n t[\"\\u2F37\"] = \"\\u5F0B\";\n t[\"\\u2F38\"] = \"\\u5F13\";\n t[\"\\u2F39\"] = \"\\u5F50\";\n t[\"\\u2F3A\"] = \"\\u5F61\";\n t[\"\\u2F3B\"] = \"\\u5F73\";\n t[\"\\u2F3C\"] = \"\\u5FC3\";\n t[\"\\u2F3D\"] = \"\\u6208\";\n t[\"\\u2F3E\"] = \"\\u6236\";\n t[\"\\u2F3F\"] = \"\\u624B\";\n t[\"\\u2F40\"] = \"\\u652F\";\n t[\"\\u2F41\"] = \"\\u6534\";\n t[\"\\u2F42\"] = \"\\u6587\";\n t[\"\\u2F43\"] = \"\\u6597\";\n t[\"\\u2F44\"] = \"\\u65A4\";\n t[\"\\u2F45\"] = \"\\u65B9\";\n t[\"\\u2F46\"] = \"\\u65E0\";\n t[\"\\u2F47\"] = \"\\u65E5\";\n t[\"\\u2F48\"] = \"\\u66F0\";\n t[\"\\u2F49\"] = \"\\u6708\";\n t[\"\\u2F4A\"] = \"\\u6728\";\n t[\"\\u2F4B\"] = \"\\u6B20\";\n t[\"\\u2F4C\"] = \"\\u6B62\";\n t[\"\\u2F4D\"] = \"\\u6B79\";\n t[\"\\u2F4E\"] = \"\\u6BB3\";\n t[\"\\u2F4F\"] = \"\\u6BCB\";\n t[\"\\u2F50\"] = \"\\u6BD4\";\n t[\"\\u2F51\"] = \"\\u6BDB\";\n t[\"\\u2F52\"] = \"\\u6C0F\";\n t[\"\\u2F53\"] = \"\\u6C14\";\n t[\"\\u2F54\"] = \"\\u6C34\";\n t[\"\\u2F55\"] = \"\\u706B\";\n t[\"\\u2F56\"] = \"\\u722A\";\n t[\"\\u2F57\"] = \"\\u7236\";\n t[\"\\u2F58\"] = \"\\u723B\";\n t[\"\\u2F59\"] = \"\\u723F\";\n t[\"\\u2F5A\"] = \"\\u7247\";\n t[\"\\u2F5B\"] = \"\\u7259\";\n t[\"\\u2F5C\"] = \"\\u725B\";\n t[\"\\u2F5D\"] = \"\\u72AC\";\n t[\"\\u2F5E\"] = \"\\u7384\";\n t[\"\\u2F5F\"] = \"\\u7389\";\n t[\"\\u2F60\"] = \"\\u74DC\";\n t[\"\\u2F61\"] = \"\\u74E6\";\n t[\"\\u2F62\"] = \"\\u7518\";\n t[\"\\u2F63\"] = \"\\u751F\";\n t[\"\\u2F64\"] = \"\\u7528\";\n t[\"\\u2F65\"] = \"\\u7530\";\n t[\"\\u2F66\"] = \"\\u758B\";\n t[\"\\u2F67\"] = \"\\u7592\";\n t[\"\\u2F68\"] = \"\\u7676\";\n t[\"\\u2F69\"] = \"\\u767D\";\n t[\"\\u2F6A\"] = \"\\u76AE\";\n t[\"\\u2F6B\"] = \"\\u76BF\";\n t[\"\\u2F6C\"] = \"\\u76EE\";\n t[\"\\u2F6D\"] = \"\\u77DB\";\n t[\"\\u2F6E\"] = \"\\u77E2\";\n t[\"\\u2F6F\"] = \"\\u77F3\";\n t[\"\\u2F70\"] = \"\\u793A\";\n t[\"\\u2F71\"] = \"\\u79B8\";\n t[\"\\u2F72\"] = \"\\u79BE\";\n t[\"\\u2F73\"] = \"\\u7A74\";\n t[\"\\u2F74\"] = \"\\u7ACB\";\n t[\"\\u2F75\"] = \"\\u7AF9\";\n t[\"\\u2F76\"] = \"\\u7C73\";\n t[\"\\u2F77\"] = \"\\u7CF8\";\n t[\"\\u2F78\"] = \"\\u7F36\";\n t[\"\\u2F79\"] = \"\\u7F51\";\n t[\"\\u2F7A\"] = \"\\u7F8A\";\n t[\"\\u2F7B\"] = \"\\u7FBD\";\n t[\"\\u2F7C\"] = \"\\u8001\";\n t[\"\\u2F7D\"] = \"\\u800C\";\n t[\"\\u2F7E\"] = \"\\u8012\";\n t[\"\\u2F7F\"] = \"\\u8033\";\n t[\"\\u2F80\"] = \"\\u807F\";\n t[\"\\u2F81\"] = \"\\u8089\";\n t[\"\\u2F82\"] = \"\\u81E3\";\n t[\"\\u2F83\"] = \"\\u81EA\";\n t[\"\\u2F84\"] = \"\\u81F3\";\n t[\"\\u2F85\"] = \"\\u81FC\";\n t[\"\\u2F86\"] = \"\\u820C\";\n t[\"\\u2F87\"] = \"\\u821B\";\n t[\"\\u2F88\"] = \"\\u821F\";\n t[\"\\u2F89\"] = \"\\u826E\";\n t[\"\\u2F8A\"] = \"\\u8272\";\n t[\"\\u2F8B\"] = \"\\u8278\";\n t[\"\\u2F8C\"] = \"\\u864D\";\n t[\"\\u2F8D\"] = \"\\u866B\";\n t[\"\\u2F8E\"] = \"\\u8840\";\n t[\"\\u2F8F\"] = \"\\u884C\";\n t[\"\\u2F90\"] = \"\\u8863\";\n t[\"\\u2F91\"] = \"\\u897E\";\n t[\"\\u2F92\"] = \"\\u898B\";\n t[\"\\u2F93\"] = \"\\u89D2\";\n t[\"\\u2F94\"] = \"\\u8A00\";\n t[\"\\u2F95\"] = \"\\u8C37\";\n t[\"\\u2F96\"] = \"\\u8C46\";\n t[\"\\u2F97\"] = \"\\u8C55\";\n t[\"\\u2F98\"] = \"\\u8C78\";\n t[\"\\u2F99\"] = \"\\u8C9D\";\n t[\"\\u2F9A\"] = \"\\u8D64\";\n t[\"\\u2F9B\"] = \"\\u8D70\";\n t[\"\\u2F9C\"] = \"\\u8DB3\";\n t[\"\\u2F9D\"] = \"\\u8EAB\";\n t[\"\\u2F9E\"] = \"\\u8ECA\";\n t[\"\\u2F9F\"] = \"\\u8F9B\";\n t[\"\\u2FA0\"] = \"\\u8FB0\";\n t[\"\\u2FA1\"] = \"\\u8FB5\";\n t[\"\\u2FA2\"] = \"\\u9091\";\n t[\"\\u2FA3\"] = \"\\u9149\";\n t[\"\\u2FA4\"] = \"\\u91C6\";\n t[\"\\u2FA5\"] = \"\\u91CC\";\n t[\"\\u2FA6\"] = \"\\u91D1\";\n t[\"\\u2FA7\"] = \"\\u9577\";\n t[\"\\u2FA8\"] = \"\\u9580\";\n t[\"\\u2FA9\"] = \"\\u961C\";\n t[\"\\u2FAA\"] = \"\\u96B6\";\n t[\"\\u2FAB\"] = \"\\u96B9\";\n t[\"\\u2FAC\"] = \"\\u96E8\";\n t[\"\\u2FAD\"] = \"\\u9751\";\n t[\"\\u2FAE\"] = \"\\u975E\";\n t[\"\\u2FAF\"] = \"\\u9762\";\n t[\"\\u2FB0\"] = \"\\u9769\";\n t[\"\\u2FB1\"] = \"\\u97CB\";\n t[\"\\u2FB2\"] = \"\\u97ED\";\n t[\"\\u2FB3\"] = \"\\u97F3\";\n t[\"\\u2FB4\"] = \"\\u9801\";\n t[\"\\u2FB5\"] = \"\\u98A8\";\n t[\"\\u2FB6\"] = \"\\u98DB\";\n t[\"\\u2FB7\"] = \"\\u98DF\";\n t[\"\\u2FB8\"] = \"\\u9996\";\n t[\"\\u2FB9\"] = \"\\u9999\";\n t[\"\\u2FBA\"] = \"\\u99AC\";\n t[\"\\u2FBB\"] = \"\\u9AA8\";\n t[\"\\u2FBC\"] = \"\\u9AD8\";\n t[\"\\u2FBD\"] = \"\\u9ADF\";\n t[\"\\u2FBE\"] = \"\\u9B25\";\n t[\"\\u2FBF\"] = \"\\u9B2F\";\n t[\"\\u2FC0\"] = \"\\u9B32\";\n t[\"\\u2FC1\"] = \"\\u9B3C\";\n t[\"\\u2FC2\"] = \"\\u9B5A\";\n t[\"\\u2FC3\"] = \"\\u9CE5\";\n t[\"\\u2FC4\"] = \"\\u9E75\";\n t[\"\\u2FC5\"] = \"\\u9E7F\";\n t[\"\\u2FC6\"] = \"\\u9EA5\";\n t[\"\\u2FC7\"] = \"\\u9EBB\";\n t[\"\\u2FC8\"] = \"\\u9EC3\";\n t[\"\\u2FC9\"] = \"\\u9ECD\";\n t[\"\\u2FCA\"] = \"\\u9ED1\";\n t[\"\\u2FCB\"] = \"\\u9EF9\";\n t[\"\\u2FCC\"] = \"\\u9EFD\";\n t[\"\\u2FCD\"] = \"\\u9F0E\";\n t[\"\\u2FCE\"] = \"\\u9F13\";\n t[\"\\u2FCF\"] = \"\\u9F20\";\n t[\"\\u2FD0\"] = \"\\u9F3B\";\n t[\"\\u2FD1\"] = \"\\u9F4A\";\n t[\"\\u2FD2\"] = \"\\u9F52\";\n t[\"\\u2FD3\"] = \"\\u9F8D\";\n t[\"\\u2FD4\"] = \"\\u9F9C\";\n t[\"\\u2FD5\"] = \"\\u9FA0\";\n t[\"\\u3036\"] = \"\\u3012\";\n t[\"\\u3038\"] = \"\\u5341\";\n t[\"\\u3039\"] = \"\\u5344\";\n t[\"\\u303A\"] = \"\\u5345\";\n t[\"\\u309B\"] = \"\\u0020\\u3099\";\n t[\"\\u309C\"] = \"\\u0020\\u309A\";\n t[\"\\u3131\"] = \"\\u1100\";\n t[\"\\u3132\"] = \"\\u1101\";\n t[\"\\u3133\"] = \"\\u11AA\";\n t[\"\\u3134\"] = \"\\u1102\";\n t[\"\\u3135\"] = \"\\u11AC\";\n t[\"\\u3136\"] = \"\\u11AD\";\n t[\"\\u3137\"] = \"\\u1103\";\n t[\"\\u3138\"] = \"\\u1104\";\n t[\"\\u3139\"] = \"\\u1105\";\n t[\"\\u313A\"] = \"\\u11B0\";\n t[\"\\u313B\"] = \"\\u11B1\";\n t[\"\\u313C\"] = \"\\u11B2\";\n t[\"\\u313D\"] = \"\\u11B3\";\n t[\"\\u313E\"] = \"\\u11B4\";\n t[\"\\u313F\"] = \"\\u11B5\";\n t[\"\\u3140\"] = \"\\u111A\";\n t[\"\\u3141\"] = \"\\u1106\";\n t[\"\\u3142\"] = \"\\u1107\";\n t[\"\\u3143\"] = \"\\u1108\";\n t[\"\\u3144\"] = \"\\u1121\";\n t[\"\\u3145\"] = \"\\u1109\";\n t[\"\\u3146\"] = \"\\u110A\";\n t[\"\\u3147\"] = \"\\u110B\";\n t[\"\\u3148\"] = \"\\u110C\";\n t[\"\\u3149\"] = \"\\u110D\";\n t[\"\\u314A\"] = \"\\u110E\";\n t[\"\\u314B\"] = \"\\u110F\";\n t[\"\\u314C\"] = \"\\u1110\";\n t[\"\\u314D\"] = \"\\u1111\";\n t[\"\\u314E\"] = \"\\u1112\";\n t[\"\\u314F\"] = \"\\u1161\";\n t[\"\\u3150\"] = \"\\u1162\";\n t[\"\\u3151\"] = \"\\u1163\";\n t[\"\\u3152\"] = \"\\u1164\";\n t[\"\\u3153\"] = \"\\u1165\";\n t[\"\\u3154\"] = \"\\u1166\";\n t[\"\\u3155\"] = \"\\u1167\";\n t[\"\\u3156\"] = \"\\u1168\";\n t[\"\\u3157\"] = \"\\u1169\";\n t[\"\\u3158\"] = \"\\u116A\";\n t[\"\\u3159\"] = \"\\u116B\";\n t[\"\\u315A\"] = \"\\u116C\";\n t[\"\\u315B\"] = \"\\u116D\";\n t[\"\\u315C\"] = \"\\u116E\";\n t[\"\\u315D\"] = \"\\u116F\";\n t[\"\\u315E\"] = \"\\u1170\";\n t[\"\\u315F\"] = \"\\u1171\";\n t[\"\\u3160\"] = \"\\u1172\";\n t[\"\\u3161\"] = \"\\u1173\";\n t[\"\\u3162\"] = \"\\u1174\";\n t[\"\\u3163\"] = \"\\u1175\";\n t[\"\\u3164\"] = \"\\u1160\";\n t[\"\\u3165\"] = \"\\u1114\";\n t[\"\\u3166\"] = \"\\u1115\";\n t[\"\\u3167\"] = \"\\u11C7\";\n t[\"\\u3168\"] = \"\\u11C8\";\n t[\"\\u3169\"] = \"\\u11CC\";\n t[\"\\u316A\"] = \"\\u11CE\";\n t[\"\\u316B\"] = \"\\u11D3\";\n t[\"\\u316C\"] = \"\\u11D7\";\n t[\"\\u316D\"] = \"\\u11D9\";\n t[\"\\u316E\"] = \"\\u111C\";\n t[\"\\u316F\"] = \"\\u11DD\";\n t[\"\\u3170\"] = \"\\u11DF\";\n t[\"\\u3171\"] = \"\\u111D\";\n t[\"\\u3172\"] = \"\\u111E\";\n t[\"\\u3173\"] = \"\\u1120\";\n t[\"\\u3174\"] = \"\\u1122\";\n t[\"\\u3175\"] = \"\\u1123\";\n t[\"\\u3176\"] = \"\\u1127\";\n t[\"\\u3177\"] = \"\\u1129\";\n t[\"\\u3178\"] = \"\\u112B\";\n t[\"\\u3179\"] = \"\\u112C\";\n t[\"\\u317A\"] = \"\\u112D\";\n t[\"\\u317B\"] = \"\\u112E\";\n t[\"\\u317C\"] = \"\\u112F\";\n t[\"\\u317D\"] = \"\\u1132\";\n t[\"\\u317E\"] = \"\\u1136\";\n t[\"\\u317F\"] = \"\\u1140\";\n t[\"\\u3180\"] = \"\\u1147\";\n t[\"\\u3181\"] = \"\\u114C\";\n t[\"\\u3182\"] = \"\\u11F1\";\n t[\"\\u3183\"] = \"\\u11F2\";\n t[\"\\u3184\"] = \"\\u1157\";\n t[\"\\u3185\"] = \"\\u1158\";\n t[\"\\u3186\"] = \"\\u1159\";\n t[\"\\u3187\"] = \"\\u1184\";\n t[\"\\u3188\"] = \"\\u1185\";\n t[\"\\u3189\"] = \"\\u1188\";\n t[\"\\u318A\"] = \"\\u1191\";\n t[\"\\u318B\"] = \"\\u1192\";\n t[\"\\u318C\"] = \"\\u1194\";\n t[\"\\u318D\"] = \"\\u119E\";\n t[\"\\u318E\"] = \"\\u11A1\";\n t[\"\\u3200\"] = \"\\u0028\\u1100\\u0029\";\n t[\"\\u3201\"] = \"\\u0028\\u1102\\u0029\";\n t[\"\\u3202\"] = \"\\u0028\\u1103\\u0029\";\n t[\"\\u3203\"] = \"\\u0028\\u1105\\u0029\";\n t[\"\\u3204\"] = \"\\u0028\\u1106\\u0029\";\n t[\"\\u3205\"] = \"\\u0028\\u1107\\u0029\";\n t[\"\\u3206\"] = \"\\u0028\\u1109\\u0029\";\n t[\"\\u3207\"] = \"\\u0028\\u110B\\u0029\";\n t[\"\\u3208\"] = \"\\u0028\\u110C\\u0029\";\n t[\"\\u3209\"] = \"\\u0028\\u110E\\u0029\";\n t[\"\\u320A\"] = \"\\u0028\\u110F\\u0029\";\n t[\"\\u320B\"] = \"\\u0028\\u1110\\u0029\";\n t[\"\\u320C\"] = \"\\u0028\\u1111\\u0029\";\n t[\"\\u320D\"] = \"\\u0028\\u1112\\u0029\";\n t[\"\\u320E\"] = \"\\u0028\\u1100\\u1161\\u0029\";\n t[\"\\u320F\"] = \"\\u0028\\u1102\\u1161\\u0029\";\n t[\"\\u3210\"] = \"\\u0028\\u1103\\u1161\\u0029\";\n t[\"\\u3211\"] = \"\\u0028\\u1105\\u1161\\u0029\";\n t[\"\\u3212\"] = \"\\u0028\\u1106\\u1161\\u0029\";\n t[\"\\u3213\"] = \"\\u0028\\u1107\\u1161\\u0029\";\n t[\"\\u3214\"] = \"\\u0028\\u1109\\u1161\\u0029\";\n t[\"\\u3215\"] = \"\\u0028\\u110B\\u1161\\u0029\";\n t[\"\\u3216\"] = \"\\u0028\\u110C\\u1161\\u0029\";\n t[\"\\u3217\"] = \"\\u0028\\u110E\\u1161\\u0029\";\n t[\"\\u3218\"] = \"\\u0028\\u110F\\u1161\\u0029\";\n t[\"\\u3219\"] = \"\\u0028\\u1110\\u1161\\u0029\";\n t[\"\\u321A\"] = \"\\u0028\\u1111\\u1161\\u0029\";\n t[\"\\u321B\"] = \"\\u0028\\u1112\\u1161\\u0029\";\n t[\"\\u321C\"] = \"\\u0028\\u110C\\u116E\\u0029\";\n t[\"\\u321D\"] = \"\\u0028\\u110B\\u1169\\u110C\\u1165\\u11AB\\u0029\";\n t[\"\\u321E\"] = \"\\u0028\\u110B\\u1169\\u1112\\u116E\\u0029\";\n t[\"\\u3220\"] = \"\\u0028\\u4E00\\u0029\";\n t[\"\\u3221\"] = \"\\u0028\\u4E8C\\u0029\";\n t[\"\\u3222\"] = \"\\u0028\\u4E09\\u0029\";\n t[\"\\u3223\"] = \"\\u0028\\u56DB\\u0029\";\n t[\"\\u3224\"] = \"\\u0028\\u4E94\\u0029\";\n t[\"\\u3225\"] = \"\\u0028\\u516D\\u0029\";\n t[\"\\u3226\"] = \"\\u0028\\u4E03\\u0029\";\n t[\"\\u3227\"] = \"\\u0028\\u516B\\u0029\";\n t[\"\\u3228\"] = \"\\u0028\\u4E5D\\u0029\";\n t[\"\\u3229\"] = \"\\u0028\\u5341\\u0029\";\n t[\"\\u322A\"] = \"\\u0028\\u6708\\u0029\";\n t[\"\\u322B\"] = \"\\u0028\\u706B\\u0029\";\n t[\"\\u322C\"] = \"\\u0028\\u6C34\\u0029\";\n t[\"\\u322D\"] = \"\\u0028\\u6728\\u0029\";\n t[\"\\u322E\"] = \"\\u0028\\u91D1\\u0029\";\n t[\"\\u322F\"] = \"\\u0028\\u571F\\u0029\";\n t[\"\\u3230\"] = \"\\u0028\\u65E5\\u0029\";\n t[\"\\u3231\"] = \"\\u0028\\u682A\\u0029\";\n t[\"\\u3232\"] = \"\\u0028\\u6709\\u0029\";\n t[\"\\u3233\"] = \"\\u0028\\u793E\\u0029\";\n t[\"\\u3234\"] = \"\\u0028\\u540D\\u0029\";\n t[\"\\u3235\"] = \"\\u0028\\u7279\\u0029\";\n t[\"\\u3236\"] = \"\\u0028\\u8CA1\\u0029\";\n t[\"\\u3237\"] = \"\\u0028\\u795D\\u0029\";\n t[\"\\u3238\"] = \"\\u0028\\u52B4\\u0029\";\n t[\"\\u3239\"] = \"\\u0028\\u4EE3\\u0029\";\n t[\"\\u323A\"] = \"\\u0028\\u547C\\u0029\";\n t[\"\\u323B\"] = \"\\u0028\\u5B66\\u0029\";\n t[\"\\u323C\"] = \"\\u0028\\u76E3\\u0029\";\n t[\"\\u323D\"] = \"\\u0028\\u4F01\\u0029\";\n t[\"\\u323E\"] = \"\\u0028\\u8CC7\\u0029\";\n t[\"\\u323F\"] = \"\\u0028\\u5354\\u0029\";\n t[\"\\u3240\"] = \"\\u0028\\u796D\\u0029\";\n t[\"\\u3241\"] = \"\\u0028\\u4F11\\u0029\";\n t[\"\\u3242\"] = \"\\u0028\\u81EA\\u0029\";\n t[\"\\u3243\"] = \"\\u0028\\u81F3\\u0029\";\n t[\"\\u32C0\"] = \"\\u0031\\u6708\";\n t[\"\\u32C1\"] = \"\\u0032\\u6708\";\n t[\"\\u32C2\"] = \"\\u0033\\u6708\";\n t[\"\\u32C3\"] = \"\\u0034\\u6708\";\n t[\"\\u32C4\"] = \"\\u0035\\u6708\";\n t[\"\\u32C5\"] = \"\\u0036\\u6708\";\n t[\"\\u32C6\"] = \"\\u0037\\u6708\";\n t[\"\\u32C7\"] = \"\\u0038\\u6708\";\n t[\"\\u32C8\"] = \"\\u0039\\u6708\";\n t[\"\\u32C9\"] = \"\\u0031\\u0030\\u6708\";\n t[\"\\u32CA\"] = \"\\u0031\\u0031\\u6708\";\n t[\"\\u32CB\"] = \"\\u0031\\u0032\\u6708\";\n t[\"\\u3358\"] = \"\\u0030\\u70B9\";\n t[\"\\u3359\"] = \"\\u0031\\u70B9\";\n t[\"\\u335A\"] = \"\\u0032\\u70B9\";\n t[\"\\u335B\"] = \"\\u0033\\u70B9\";\n t[\"\\u335C\"] = \"\\u0034\\u70B9\";\n t[\"\\u335D\"] = \"\\u0035\\u70B9\";\n t[\"\\u335E\"] = \"\\u0036\\u70B9\";\n t[\"\\u335F\"] = \"\\u0037\\u70B9\";\n t[\"\\u3360\"] = \"\\u0038\\u70B9\";\n t[\"\\u3361\"] = \"\\u0039\\u70B9\";\n t[\"\\u3362\"] = \"\\u0031\\u0030\\u70B9\";\n t[\"\\u3363\"] = \"\\u0031\\u0031\\u70B9\";\n t[\"\\u3364\"] = \"\\u0031\\u0032\\u70B9\";\n t[\"\\u3365\"] = \"\\u0031\\u0033\\u70B9\";\n t[\"\\u3366\"] = \"\\u0031\\u0034\\u70B9\";\n t[\"\\u3367\"] = \"\\u0031\\u0035\\u70B9\";\n t[\"\\u3368\"] = \"\\u0031\\u0036\\u70B9\";\n t[\"\\u3369\"] = \"\\u0031\\u0037\\u70B9\";\n t[\"\\u336A\"] = \"\\u0031\\u0038\\u70B9\";\n t[\"\\u336B\"] = \"\\u0031\\u0039\\u70B9\";\n t[\"\\u336C\"] = \"\\u0032\\u0030\\u70B9\";\n t[\"\\u336D\"] = \"\\u0032\\u0031\\u70B9\";\n t[\"\\u336E\"] = \"\\u0032\\u0032\\u70B9\";\n t[\"\\u336F\"] = \"\\u0032\\u0033\\u70B9\";\n t[\"\\u3370\"] = \"\\u0032\\u0034\\u70B9\";\n t[\"\\u33E0\"] = \"\\u0031\\u65E5\";\n t[\"\\u33E1\"] = \"\\u0032\\u65E5\";\n t[\"\\u33E2\"] = \"\\u0033\\u65E5\";\n t[\"\\u33E3\"] = \"\\u0034\\u65E5\";\n t[\"\\u33E4\"] = \"\\u0035\\u65E5\";\n t[\"\\u33E5\"] = \"\\u0036\\u65E5\";\n t[\"\\u33E6\"] = \"\\u0037\\u65E5\";\n t[\"\\u33E7\"] = \"\\u0038\\u65E5\";\n t[\"\\u33E8\"] = \"\\u0039\\u65E5\";\n t[\"\\u33E9\"] = \"\\u0031\\u0030\\u65E5\";\n t[\"\\u33EA\"] = \"\\u0031\\u0031\\u65E5\";\n t[\"\\u33EB\"] = \"\\u0031\\u0032\\u65E5\";\n t[\"\\u33EC\"] = \"\\u0031\\u0033\\u65E5\";\n t[\"\\u33ED\"] = \"\\u0031\\u0034\\u65E5\";\n t[\"\\u33EE\"] = \"\\u0031\\u0035\\u65E5\";\n t[\"\\u33EF\"] = \"\\u0031\\u0036\\u65E5\";\n t[\"\\u33F0\"] = \"\\u0031\\u0037\\u65E5\";\n t[\"\\u33F1\"] = \"\\u0031\\u0038\\u65E5\";\n t[\"\\u33F2\"] = \"\\u0031\\u0039\\u65E5\";\n t[\"\\u33F3\"] = \"\\u0032\\u0030\\u65E5\";\n t[\"\\u33F4\"] = \"\\u0032\\u0031\\u65E5\";\n t[\"\\u33F5\"] = \"\\u0032\\u0032\\u65E5\";\n t[\"\\u33F6\"] = \"\\u0032\\u0033\\u65E5\";\n t[\"\\u33F7\"] = \"\\u0032\\u0034\\u65E5\";\n t[\"\\u33F8\"] = \"\\u0032\\u0035\\u65E5\";\n t[\"\\u33F9\"] = \"\\u0032\\u0036\\u65E5\";\n t[\"\\u33FA\"] = \"\\u0032\\u0037\\u65E5\";\n t[\"\\u33FB\"] = \"\\u0032\\u0038\\u65E5\";\n t[\"\\u33FC\"] = \"\\u0032\\u0039\\u65E5\";\n t[\"\\u33FD\"] = \"\\u0033\\u0030\\u65E5\";\n t[\"\\u33FE\"] = \"\\u0033\\u0031\\u65E5\";\n t[\"\\uFB00\"] = \"\\u0066\\u0066\";\n t[\"\\uFB01\"] = \"\\u0066\\u0069\";\n t[\"\\uFB02\"] = \"\\u0066\\u006C\";\n t[\"\\uFB03\"] = \"\\u0066\\u0066\\u0069\";\n t[\"\\uFB04\"] = \"\\u0066\\u0066\\u006C\";\n t[\"\\uFB05\"] = \"\\u017F\\u0074\";\n t[\"\\uFB06\"] = \"\\u0073\\u0074\";\n t[\"\\uFB13\"] = \"\\u0574\\u0576\";\n t[\"\\uFB14\"] = \"\\u0574\\u0565\";\n t[\"\\uFB15\"] = \"\\u0574\\u056B\";\n t[\"\\uFB16\"] = \"\\u057E\\u0576\";\n t[\"\\uFB17\"] = \"\\u0574\\u056D\";\n t[\"\\uFB4F\"] = \"\\u05D0\\u05DC\";\n t[\"\\uFB50\"] = \"\\u0671\";\n t[\"\\uFB51\"] = \"\\u0671\";\n t[\"\\uFB52\"] = \"\\u067B\";\n t[\"\\uFB53\"] = \"\\u067B\";\n t[\"\\uFB54\"] = \"\\u067B\";\n t[\"\\uFB55\"] = \"\\u067B\";\n t[\"\\uFB56\"] = \"\\u067E\";\n t[\"\\uFB57\"] = \"\\u067E\";\n t[\"\\uFB58\"] = \"\\u067E\";\n t[\"\\uFB59\"] = \"\\u067E\";\n t[\"\\uFB5A\"] = \"\\u0680\";\n t[\"\\uFB5B\"] = \"\\u0680\";\n t[\"\\uFB5C\"] = \"\\u0680\";\n t[\"\\uFB5D\"] = \"\\u0680\";\n t[\"\\uFB5E\"] = \"\\u067A\";\n t[\"\\uFB5F\"] = \"\\u067A\";\n t[\"\\uFB60\"] = \"\\u067A\";\n t[\"\\uFB61\"] = \"\\u067A\";\n t[\"\\uFB62\"] = \"\\u067F\";\n t[\"\\uFB63\"] = \"\\u067F\";\n t[\"\\uFB64\"] = \"\\u067F\";\n t[\"\\uFB65\"] = \"\\u067F\";\n t[\"\\uFB66\"] = \"\\u0679\";\n t[\"\\uFB67\"] = \"\\u0679\";\n t[\"\\uFB68\"] = \"\\u0679\";\n t[\"\\uFB69\"] = \"\\u0679\";\n t[\"\\uFB6A\"] = \"\\u06A4\";\n t[\"\\uFB6B\"] = \"\\u06A4\";\n t[\"\\uFB6C\"] = \"\\u06A4\";\n t[\"\\uFB6D\"] = \"\\u06A4\";\n t[\"\\uFB6E\"] = \"\\u06A6\";\n t[\"\\uFB6F\"] = \"\\u06A6\";\n t[\"\\uFB70\"] = \"\\u06A6\";\n t[\"\\uFB71\"] = \"\\u06A6\";\n t[\"\\uFB72\"] = \"\\u0684\";\n t[\"\\uFB73\"] = \"\\u0684\";\n t[\"\\uFB74\"] = \"\\u0684\";\n t[\"\\uFB75\"] = \"\\u0684\";\n t[\"\\uFB76\"] = \"\\u0683\";\n t[\"\\uFB77\"] = \"\\u0683\";\n t[\"\\uFB78\"] = \"\\u0683\";\n t[\"\\uFB79\"] = \"\\u0683\";\n t[\"\\uFB7A\"] = \"\\u0686\";\n t[\"\\uFB7B\"] = \"\\u0686\";\n t[\"\\uFB7C\"] = \"\\u0686\";\n t[\"\\uFB7D\"] = \"\\u0686\";\n t[\"\\uFB7E\"] = \"\\u0687\";\n t[\"\\uFB7F\"] = \"\\u0687\";\n t[\"\\uFB80\"] = \"\\u0687\";\n t[\"\\uFB81\"] = \"\\u0687\";\n t[\"\\uFB82\"] = \"\\u068D\";\n t[\"\\uFB83\"] = \"\\u068D\";\n t[\"\\uFB84\"] = \"\\u068C\";\n t[\"\\uFB85\"] = \"\\u068C\";\n t[\"\\uFB86\"] = \"\\u068E\";\n t[\"\\uFB87\"] = \"\\u068E\";\n t[\"\\uFB88\"] = \"\\u0688\";\n t[\"\\uFB89\"] = \"\\u0688\";\n t[\"\\uFB8A\"] = \"\\u0698\";\n t[\"\\uFB8B\"] = \"\\u0698\";\n t[\"\\uFB8C\"] = \"\\u0691\";\n t[\"\\uFB8D\"] = \"\\u0691\";\n t[\"\\uFB8E\"] = \"\\u06A9\";\n t[\"\\uFB8F\"] = \"\\u06A9\";\n t[\"\\uFB90\"] = \"\\u06A9\";\n t[\"\\uFB91\"] = \"\\u06A9\";\n t[\"\\uFB92\"] = \"\\u06AF\";\n t[\"\\uFB93\"] = \"\\u06AF\";\n t[\"\\uFB94\"] = \"\\u06AF\";\n t[\"\\uFB95\"] = \"\\u06AF\";\n t[\"\\uFB96\"] = \"\\u06B3\";\n t[\"\\uFB97\"] = \"\\u06B3\";\n t[\"\\uFB98\"] = \"\\u06B3\";\n t[\"\\uFB99\"] = \"\\u06B3\";\n t[\"\\uFB9A\"] = \"\\u06B1\";\n t[\"\\uFB9B\"] = \"\\u06B1\";\n t[\"\\uFB9C\"] = \"\\u06B1\";\n t[\"\\uFB9D\"] = \"\\u06B1\";\n t[\"\\uFB9E\"] = \"\\u06BA\";\n t[\"\\uFB9F\"] = \"\\u06BA\";\n t[\"\\uFBA0\"] = \"\\u06BB\";\n t[\"\\uFBA1\"] = \"\\u06BB\";\n t[\"\\uFBA2\"] = \"\\u06BB\";\n t[\"\\uFBA3\"] = \"\\u06BB\";\n t[\"\\uFBA4\"] = \"\\u06C0\";\n t[\"\\uFBA5\"] = \"\\u06C0\";\n t[\"\\uFBA6\"] = \"\\u06C1\";\n t[\"\\uFBA7\"] = \"\\u06C1\";\n t[\"\\uFBA8\"] = \"\\u06C1\";\n t[\"\\uFBA9\"] = \"\\u06C1\";\n t[\"\\uFBAA\"] = \"\\u06BE\";\n t[\"\\uFBAB\"] = \"\\u06BE\";\n t[\"\\uFBAC\"] = \"\\u06BE\";\n t[\"\\uFBAD\"] = \"\\u06BE\";\n t[\"\\uFBAE\"] = \"\\u06D2\";\n t[\"\\uFBAF\"] = \"\\u06D2\";\n t[\"\\uFBB0\"] = \"\\u06D3\";\n t[\"\\uFBB1\"] = \"\\u06D3\";\n t[\"\\uFBD3\"] = \"\\u06AD\";\n t[\"\\uFBD4\"] = \"\\u06AD\";\n t[\"\\uFBD5\"] = \"\\u06AD\";\n t[\"\\uFBD6\"] = \"\\u06AD\";\n t[\"\\uFBD7\"] = \"\\u06C7\";\n t[\"\\uFBD8\"] = \"\\u06C7\";\n t[\"\\uFBD9\"] = \"\\u06C6\";\n t[\"\\uFBDA\"] = \"\\u06C6\";\n t[\"\\uFBDB\"] = \"\\u06C8\";\n t[\"\\uFBDC\"] = \"\\u06C8\";\n t[\"\\uFBDD\"] = \"\\u0677\";\n t[\"\\uFBDE\"] = \"\\u06CB\";\n t[\"\\uFBDF\"] = \"\\u06CB\";\n t[\"\\uFBE0\"] = \"\\u06C5\";\n t[\"\\uFBE1\"] = \"\\u06C5\";\n t[\"\\uFBE2\"] = \"\\u06C9\";\n t[\"\\uFBE3\"] = \"\\u06C9\";\n t[\"\\uFBE4\"] = \"\\u06D0\";\n t[\"\\uFBE5\"] = \"\\u06D0\";\n t[\"\\uFBE6\"] = \"\\u06D0\";\n t[\"\\uFBE7\"] = \"\\u06D0\";\n t[\"\\uFBE8\"] = \"\\u0649\";\n t[\"\\uFBE9\"] = \"\\u0649\";\n t[\"\\uFBEA\"] = \"\\u0626\\u0627\";\n t[\"\\uFBEB\"] = \"\\u0626\\u0627\";\n t[\"\\uFBEC\"] = \"\\u0626\\u06D5\";\n t[\"\\uFBED\"] = \"\\u0626\\u06D5\";\n t[\"\\uFBEE\"] = \"\\u0626\\u0648\";\n t[\"\\uFBEF\"] = \"\\u0626\\u0648\";\n t[\"\\uFBF0\"] = \"\\u0626\\u06C7\";\n t[\"\\uFBF1\"] = \"\\u0626\\u06C7\";\n t[\"\\uFBF2\"] = \"\\u0626\\u06C6\";\n t[\"\\uFBF3\"] = \"\\u0626\\u06C6\";\n t[\"\\uFBF4\"] = \"\\u0626\\u06C8\";\n t[\"\\uFBF5\"] = \"\\u0626\\u06C8\";\n t[\"\\uFBF6\"] = \"\\u0626\\u06D0\";\n t[\"\\uFBF7\"] = \"\\u0626\\u06D0\";\n t[\"\\uFBF8\"] = \"\\u0626\\u06D0\";\n t[\"\\uFBF9\"] = \"\\u0626\\u0649\";\n t[\"\\uFBFA\"] = \"\\u0626\\u0649\";\n t[\"\\uFBFB\"] = \"\\u0626\\u0649\";\n t[\"\\uFBFC\"] = \"\\u06CC\";\n t[\"\\uFBFD\"] = \"\\u06CC\";\n t[\"\\uFBFE\"] = \"\\u06CC\";\n t[\"\\uFBFF\"] = \"\\u06CC\";\n t[\"\\uFC00\"] = \"\\u0626\\u062C\";\n t[\"\\uFC01\"] = \"\\u0626\\u062D\";\n t[\"\\uFC02\"] = \"\\u0626\\u0645\";\n t[\"\\uFC03\"] = \"\\u0626\\u0649\";\n t[\"\\uFC04\"] = \"\\u0626\\u064A\";\n t[\"\\uFC05\"] = \"\\u0628\\u062C\";\n t[\"\\uFC06\"] = \"\\u0628\\u062D\";\n t[\"\\uFC07\"] = \"\\u0628\\u062E\";\n t[\"\\uFC08\"] = \"\\u0628\\u0645\";\n t[\"\\uFC09\"] = \"\\u0628\\u0649\";\n t[\"\\uFC0A\"] = \"\\u0628\\u064A\";\n t[\"\\uFC0B\"] = \"\\u062A\\u062C\";\n t[\"\\uFC0C\"] = \"\\u062A\\u062D\";\n t[\"\\uFC0D\"] = \"\\u062A\\u062E\";\n t[\"\\uFC0E\"] = \"\\u062A\\u0645\";\n t[\"\\uFC0F\"] = \"\\u062A\\u0649\";\n t[\"\\uFC10\"] = \"\\u062A\\u064A\";\n t[\"\\uFC11\"] = \"\\u062B\\u062C\";\n t[\"\\uFC12\"] = \"\\u062B\\u0645\";\n t[\"\\uFC13\"] = \"\\u062B\\u0649\";\n t[\"\\uFC14\"] = \"\\u062B\\u064A\";\n t[\"\\uFC15\"] = \"\\u062C\\u062D\";\n t[\"\\uFC16\"] = \"\\u062C\\u0645\";\n t[\"\\uFC17\"] = \"\\u062D\\u062C\";\n t[\"\\uFC18\"] = \"\\u062D\\u0645\";\n t[\"\\uFC19\"] = \"\\u062E\\u062C\";\n t[\"\\uFC1A\"] = \"\\u062E\\u062D\";\n t[\"\\uFC1B\"] = \"\\u062E\\u0645\";\n t[\"\\uFC1C\"] = \"\\u0633\\u062C\";\n t[\"\\uFC1D\"] = \"\\u0633\\u062D\";\n t[\"\\uFC1E\"] = \"\\u0633\\u062E\";\n t[\"\\uFC1F\"] = \"\\u0633\\u0645\";\n t[\"\\uFC20\"] = \"\\u0635\\u062D\";\n t[\"\\uFC21\"] = \"\\u0635\\u0645\";\n t[\"\\uFC22\"] = \"\\u0636\\u062C\";\n t[\"\\uFC23\"] = \"\\u0636\\u062D\";\n t[\"\\uFC24\"] = \"\\u0636\\u062E\";\n t[\"\\uFC25\"] = \"\\u0636\\u0645\";\n t[\"\\uFC26\"] = \"\\u0637\\u062D\";\n t[\"\\uFC27\"] = \"\\u0637\\u0645\";\n t[\"\\uFC28\"] = \"\\u0638\\u0645\";\n t[\"\\uFC29\"] = \"\\u0639\\u062C\";\n t[\"\\uFC2A\"] = \"\\u0639\\u0645\";\n t[\"\\uFC2B\"] = \"\\u063A\\u062C\";\n t[\"\\uFC2C\"] = \"\\u063A\\u0645\";\n t[\"\\uFC2D\"] = \"\\u0641\\u062C\";\n t[\"\\uFC2E\"] = \"\\u0641\\u062D\";\n t[\"\\uFC2F\"] = \"\\u0641\\u062E\";\n t[\"\\uFC30\"] = \"\\u0641\\u0645\";\n t[\"\\uFC31\"] = \"\\u0641\\u0649\";\n t[\"\\uFC32\"] = \"\\u0641\\u064A\";\n t[\"\\uFC33\"] = \"\\u0642\\u062D\";\n t[\"\\uFC34\"] = \"\\u0642\\u0645\";\n t[\"\\uFC35\"] = \"\\u0642\\u0649\";\n t[\"\\uFC36\"] = \"\\u0642\\u064A\";\n t[\"\\uFC37\"] = \"\\u0643\\u0627\";\n t[\"\\uFC38\"] = \"\\u0643\\u062C\";\n t[\"\\uFC39\"] = \"\\u0643\\u062D\";\n t[\"\\uFC3A\"] = \"\\u0643\\u062E\";\n t[\"\\uFC3B\"] = \"\\u0643\\u0644\";\n t[\"\\uFC3C\"] = \"\\u0643\\u0645\";\n t[\"\\uFC3D\"] = \"\\u0643\\u0649\";\n t[\"\\uFC3E\"] = \"\\u0643\\u064A\";\n t[\"\\uFC3F\"] = \"\\u0644\\u062C\";\n t[\"\\uFC40\"] = \"\\u0644\\u062D\";\n t[\"\\uFC41\"] = \"\\u0644\\u062E\";\n t[\"\\uFC42\"] = \"\\u0644\\u0645\";\n t[\"\\uFC43\"] = \"\\u0644\\u0649\";\n t[\"\\uFC44\"] = \"\\u0644\\u064A\";\n t[\"\\uFC45\"] = \"\\u0645\\u062C\";\n t[\"\\uFC46\"] = \"\\u0645\\u062D\";\n t[\"\\uFC47\"] = \"\\u0645\\u062E\";\n t[\"\\uFC48\"] = \"\\u0645\\u0645\";\n t[\"\\uFC49\"] = \"\\u0645\\u0649\";\n t[\"\\uFC4A\"] = \"\\u0645\\u064A\";\n t[\"\\uFC4B\"] = \"\\u0646\\u062C\";\n t[\"\\uFC4C\"] = \"\\u0646\\u062D\";\n t[\"\\uFC4D\"] = \"\\u0646\\u062E\";\n t[\"\\uFC4E\"] = \"\\u0646\\u0645\";\n t[\"\\uFC4F\"] = \"\\u0646\\u0649\";\n t[\"\\uFC50\"] = \"\\u0646\\u064A\";\n t[\"\\uFC51\"] = \"\\u0647\\u062C\";\n t[\"\\uFC52\"] = \"\\u0647\\u0645\";\n t[\"\\uFC53\"] = \"\\u0647\\u0649\";\n t[\"\\uFC54\"] = \"\\u0647\\u064A\";\n t[\"\\uFC55\"] = \"\\u064A\\u062C\";\n t[\"\\uFC56\"] = \"\\u064A\\u062D\";\n t[\"\\uFC57\"] = \"\\u064A\\u062E\";\n t[\"\\uFC58\"] = \"\\u064A\\u0645\";\n t[\"\\uFC59\"] = \"\\u064A\\u0649\";\n t[\"\\uFC5A\"] = \"\\u064A\\u064A\";\n t[\"\\uFC5B\"] = \"\\u0630\\u0670\";\n t[\"\\uFC5C\"] = \"\\u0631\\u0670\";\n t[\"\\uFC5D\"] = \"\\u0649\\u0670\";\n t[\"\\uFC5E\"] = \"\\u0020\\u064C\\u0651\";\n t[\"\\uFC5F\"] = \"\\u0020\\u064D\\u0651\";\n t[\"\\uFC60\"] = \"\\u0020\\u064E\\u0651\";\n t[\"\\uFC61\"] = \"\\u0020\\u064F\\u0651\";\n t[\"\\uFC62\"] = \"\\u0020\\u0650\\u0651\";\n t[\"\\uFC63\"] = \"\\u0020\\u0651\\u0670\";\n t[\"\\uFC64\"] = \"\\u0626\\u0631\";\n t[\"\\uFC65\"] = \"\\u0626\\u0632\";\n t[\"\\uFC66\"] = \"\\u0626\\u0645\";\n t[\"\\uFC67\"] = \"\\u0626\\u0646\";\n t[\"\\uFC68\"] = \"\\u0626\\u0649\";\n t[\"\\uFC69\"] = \"\\u0626\\u064A\";\n t[\"\\uFC6A\"] = \"\\u0628\\u0631\";\n t[\"\\uFC6B\"] = \"\\u0628\\u0632\";\n t[\"\\uFC6C\"] = \"\\u0628\\u0645\";\n t[\"\\uFC6D\"] = \"\\u0628\\u0646\";\n t[\"\\uFC6E\"] = \"\\u0628\\u0649\";\n t[\"\\uFC6F\"] = \"\\u0628\\u064A\";\n t[\"\\uFC70\"] = \"\\u062A\\u0631\";\n t[\"\\uFC71\"] = \"\\u062A\\u0632\";\n t[\"\\uFC72\"] = \"\\u062A\\u0645\";\n t[\"\\uFC73\"] = \"\\u062A\\u0646\";\n t[\"\\uFC74\"] = \"\\u062A\\u0649\";\n t[\"\\uFC75\"] = \"\\u062A\\u064A\";\n t[\"\\uFC76\"] = \"\\u062B\\u0631\";\n t[\"\\uFC77\"] = \"\\u062B\\u0632\";\n t[\"\\uFC78\"] = \"\\u062B\\u0645\";\n t[\"\\uFC79\"] = \"\\u062B\\u0646\";\n t[\"\\uFC7A\"] = \"\\u062B\\u0649\";\n t[\"\\uFC7B\"] = \"\\u062B\\u064A\";\n t[\"\\uFC7C\"] = \"\\u0641\\u0649\";\n t[\"\\uFC7D\"] = \"\\u0641\\u064A\";\n t[\"\\uFC7E\"] = \"\\u0642\\u0649\";\n t[\"\\uFC7F\"] = \"\\u0642\\u064A\";\n t[\"\\uFC80\"] = \"\\u0643\\u0627\";\n t[\"\\uFC81\"] = \"\\u0643\\u0644\";\n t[\"\\uFC82\"] = \"\\u0643\\u0645\";\n t[\"\\uFC83\"] = \"\\u0643\\u0649\";\n t[\"\\uFC84\"] = \"\\u0643\\u064A\";\n t[\"\\uFC85\"] = \"\\u0644\\u0645\";\n t[\"\\uFC86\"] = \"\\u0644\\u0649\";\n t[\"\\uFC87\"] = \"\\u0644\\u064A\";\n t[\"\\uFC88\"] = \"\\u0645\\u0627\";\n t[\"\\uFC89\"] = \"\\u0645\\u0645\";\n t[\"\\uFC8A\"] = \"\\u0646\\u0631\";\n t[\"\\uFC8B\"] = \"\\u0646\\u0632\";\n t[\"\\uFC8C\"] = \"\\u0646\\u0645\";\n t[\"\\uFC8D\"] = \"\\u0646\\u0646\";\n t[\"\\uFC8E\"] = \"\\u0646\\u0649\";\n t[\"\\uFC8F\"] = \"\\u0646\\u064A\";\n t[\"\\uFC90\"] = \"\\u0649\\u0670\";\n t[\"\\uFC91\"] = \"\\u064A\\u0631\";\n t[\"\\uFC92\"] = \"\\u064A\\u0632\";\n t[\"\\uFC93\"] = \"\\u064A\\u0645\";\n t[\"\\uFC94\"] = \"\\u064A\\u0646\";\n t[\"\\uFC95\"] = \"\\u064A\\u0649\";\n t[\"\\uFC96\"] = \"\\u064A\\u064A\";\n t[\"\\uFC97\"] = \"\\u0626\\u062C\";\n t[\"\\uFC98\"] = \"\\u0626\\u062D\";\n t[\"\\uFC99\"] = \"\\u0626\\u062E\";\n t[\"\\uFC9A\"] = \"\\u0626\\u0645\";\n t[\"\\uFC9B\"] = \"\\u0626\\u0647\";\n t[\"\\uFC9C\"] = \"\\u0628\\u062C\";\n t[\"\\uFC9D\"] = \"\\u0628\\u062D\";\n t[\"\\uFC9E\"] = \"\\u0628\\u062E\";\n t[\"\\uFC9F\"] = \"\\u0628\\u0645\";\n t[\"\\uFCA0\"] = \"\\u0628\\u0647\";\n t[\"\\uFCA1\"] = \"\\u062A\\u062C\";\n t[\"\\uFCA2\"] = \"\\u062A\\u062D\";\n t[\"\\uFCA3\"] = \"\\u062A\\u062E\";\n t[\"\\uFCA4\"] = \"\\u062A\\u0645\";\n t[\"\\uFCA5\"] = \"\\u062A\\u0647\";\n t[\"\\uFCA6\"] = \"\\u062B\\u0645\";\n t[\"\\uFCA7\"] = \"\\u062C\\u062D\";\n t[\"\\uFCA8\"] = \"\\u062C\\u0645\";\n t[\"\\uFCA9\"] = \"\\u062D\\u062C\";\n t[\"\\uFCAA\"] = \"\\u062D\\u0645\";\n t[\"\\uFCAB\"] = \"\\u062E\\u062C\";\n t[\"\\uFCAC\"] = \"\\u062E\\u0645\";\n t[\"\\uFCAD\"] = \"\\u0633\\u062C\";\n t[\"\\uFCAE\"] = \"\\u0633\\u062D\";\n t[\"\\uFCAF\"] = \"\\u0633\\u062E\";\n t[\"\\uFCB0\"] = \"\\u0633\\u0645\";\n t[\"\\uFCB1\"] = \"\\u0635\\u062D\";\n t[\"\\uFCB2\"] = \"\\u0635\\u062E\";\n t[\"\\uFCB3\"] = \"\\u0635\\u0645\";\n t[\"\\uFCB4\"] = \"\\u0636\\u062C\";\n t[\"\\uFCB5\"] = \"\\u0636\\u062D\";\n t[\"\\uFCB6\"] = \"\\u0636\\u062E\";\n t[\"\\uFCB7\"] = \"\\u0636\\u0645\";\n t[\"\\uFCB8\"] = \"\\u0637\\u062D\";\n t[\"\\uFCB9\"] = \"\\u0638\\u0645\";\n t[\"\\uFCBA\"] = \"\\u0639\\u062C\";\n t[\"\\uFCBB\"] = \"\\u0639\\u0645\";\n t[\"\\uFCBC\"] = \"\\u063A\\u062C\";\n t[\"\\uFCBD\"] = \"\\u063A\\u0645\";\n t[\"\\uFCBE\"] = \"\\u0641\\u062C\";\n t[\"\\uFCBF\"] = \"\\u0641\\u062D\";\n t[\"\\uFCC0\"] = \"\\u0641\\u062E\";\n t[\"\\uFCC1\"] = \"\\u0641\\u0645\";\n t[\"\\uFCC2\"] = \"\\u0642\\u062D\";\n t[\"\\uFCC3\"] = \"\\u0642\\u0645\";\n t[\"\\uFCC4\"] = \"\\u0643\\u062C\";\n t[\"\\uFCC5\"] = \"\\u0643\\u062D\";\n t[\"\\uFCC6\"] = \"\\u0643\\u062E\";\n t[\"\\uFCC7\"] = \"\\u0643\\u0644\";\n t[\"\\uFCC8\"] = \"\\u0643\\u0645\";\n t[\"\\uFCC9\"] = \"\\u0644\\u062C\";\n t[\"\\uFCCA\"] = \"\\u0644\\u062D\";\n t[\"\\uFCCB\"] = \"\\u0644\\u062E\";\n t[\"\\uFCCC\"] = \"\\u0644\\u0645\";\n t[\"\\uFCCD\"] = \"\\u0644\\u0647\";\n t[\"\\uFCCE\"] = \"\\u0645\\u062C\";\n t[\"\\uFCCF\"] = \"\\u0645\\u062D\";\n t[\"\\uFCD0\"] = \"\\u0645\\u062E\";\n t[\"\\uFCD1\"] = \"\\u0645\\u0645\";\n t[\"\\uFCD2\"] = \"\\u0646\\u062C\";\n t[\"\\uFCD3\"] = \"\\u0646\\u062D\";\n t[\"\\uFCD4\"] = \"\\u0646\\u062E\";\n t[\"\\uFCD5\"] = \"\\u0646\\u0645\";\n t[\"\\uFCD6\"] = \"\\u0646\\u0647\";\n t[\"\\uFCD7\"] = \"\\u0647\\u062C\";\n t[\"\\uFCD8\"] = \"\\u0647\\u0645\";\n t[\"\\uFCD9\"] = \"\\u0647\\u0670\";\n t[\"\\uFCDA\"] = \"\\u064A\\u062C\";\n t[\"\\uFCDB\"] = \"\\u064A\\u062D\";\n t[\"\\uFCDC\"] = \"\\u064A\\u062E\";\n t[\"\\uFCDD\"] = \"\\u064A\\u0645\";\n t[\"\\uFCDE\"] = \"\\u064A\\u0647\";\n t[\"\\uFCDF\"] = \"\\u0626\\u0645\";\n t[\"\\uFCE0\"] = \"\\u0626\\u0647\";\n t[\"\\uFCE1\"] = \"\\u0628\\u0645\";\n t[\"\\uFCE2\"] = \"\\u0628\\u0647\";\n t[\"\\uFCE3\"] = \"\\u062A\\u0645\";\n t[\"\\uFCE4\"] = \"\\u062A\\u0647\";\n t[\"\\uFCE5\"] = \"\\u062B\\u0645\";\n t[\"\\uFCE6\"] = \"\\u062B\\u0647\";\n t[\"\\uFCE7\"] = \"\\u0633\\u0645\";\n t[\"\\uFCE8\"] = \"\\u0633\\u0647\";\n t[\"\\uFCE9\"] = \"\\u0634\\u0645\";\n t[\"\\uFCEA\"] = \"\\u0634\\u0647\";\n t[\"\\uFCEB\"] = \"\\u0643\\u0644\";\n t[\"\\uFCEC\"] = \"\\u0643\\u0645\";\n t[\"\\uFCED\"] = \"\\u0644\\u0645\";\n t[\"\\uFCEE\"] = \"\\u0646\\u0645\";\n t[\"\\uFCEF\"] = \"\\u0646\\u0647\";\n t[\"\\uFCF0\"] = \"\\u064A\\u0645\";\n t[\"\\uFCF1\"] = \"\\u064A\\u0647\";\n t[\"\\uFCF2\"] = \"\\u0640\\u064E\\u0651\";\n t[\"\\uFCF3\"] = \"\\u0640\\u064F\\u0651\";\n t[\"\\uFCF4\"] = \"\\u0640\\u0650\\u0651\";\n t[\"\\uFCF5\"] = \"\\u0637\\u0649\";\n t[\"\\uFCF6\"] = \"\\u0637\\u064A\";\n t[\"\\uFCF7\"] = \"\\u0639\\u0649\";\n t[\"\\uFCF8\"] = \"\\u0639\\u064A\";\n t[\"\\uFCF9\"] = \"\\u063A\\u0649\";\n t[\"\\uFCFA\"] = \"\\u063A\\u064A\";\n t[\"\\uFCFB\"] = \"\\u0633\\u0649\";\n t[\"\\uFCFC\"] = \"\\u0633\\u064A\";\n t[\"\\uFCFD\"] = \"\\u0634\\u0649\";\n t[\"\\uFCFE\"] = \"\\u0634\\u064A\";\n t[\"\\uFCFF\"] = \"\\u062D\\u0649\";\n t[\"\\uFD00\"] = \"\\u062D\\u064A\";\n t[\"\\uFD01\"] = \"\\u062C\\u0649\";\n t[\"\\uFD02\"] = \"\\u062C\\u064A\";\n t[\"\\uFD03\"] = \"\\u062E\\u0649\";\n t[\"\\uFD04\"] = \"\\u062E\\u064A\";\n t[\"\\uFD05\"] = \"\\u0635\\u0649\";\n t[\"\\uFD06\"] = \"\\u0635\\u064A\";\n t[\"\\uFD07\"] = \"\\u0636\\u0649\";\n t[\"\\uFD08\"] = \"\\u0636\\u064A\";\n t[\"\\uFD09\"] = \"\\u0634\\u062C\";\n t[\"\\uFD0A\"] = \"\\u0634\\u062D\";\n t[\"\\uFD0B\"] = \"\\u0634\\u062E\";\n t[\"\\uFD0C\"] = \"\\u0634\\u0645\";\n t[\"\\uFD0D\"] = \"\\u0634\\u0631\";\n t[\"\\uFD0E\"] = \"\\u0633\\u0631\";\n t[\"\\uFD0F\"] = \"\\u0635\\u0631\";\n t[\"\\uFD10\"] = \"\\u0636\\u0631\";\n t[\"\\uFD11\"] = \"\\u0637\\u0649\";\n t[\"\\uFD12\"] = \"\\u0637\\u064A\";\n t[\"\\uFD13\"] = \"\\u0639\\u0649\";\n t[\"\\uFD14\"] = \"\\u0639\\u064A\";\n t[\"\\uFD15\"] = \"\\u063A\\u0649\";\n t[\"\\uFD16\"] = \"\\u063A\\u064A\";\n t[\"\\uFD17\"] = \"\\u0633\\u0649\";\n t[\"\\uFD18\"] = \"\\u0633\\u064A\";\n t[\"\\uFD19\"] = \"\\u0634\\u0649\";\n t[\"\\uFD1A\"] = \"\\u0634\\u064A\";\n t[\"\\uFD1B\"] = \"\\u062D\\u0649\";\n t[\"\\uFD1C\"] = \"\\u062D\\u064A\";\n t[\"\\uFD1D\"] = \"\\u062C\\u0649\";\n t[\"\\uFD1E\"] = \"\\u062C\\u064A\";\n t[\"\\uFD1F\"] = \"\\u062E\\u0649\";\n t[\"\\uFD20\"] = \"\\u062E\\u064A\";\n t[\"\\uFD21\"] = \"\\u0635\\u0649\";\n t[\"\\uFD22\"] = \"\\u0635\\u064A\";\n t[\"\\uFD23\"] = \"\\u0636\\u0649\";\n t[\"\\uFD24\"] = \"\\u0636\\u064A\";\n t[\"\\uFD25\"] = \"\\u0634\\u062C\";\n t[\"\\uFD26\"] = \"\\u0634\\u062D\";\n t[\"\\uFD27\"] = \"\\u0634\\u062E\";\n t[\"\\uFD28\"] = \"\\u0634\\u0645\";\n t[\"\\uFD29\"] = \"\\u0634\\u0631\";\n t[\"\\uFD2A\"] = \"\\u0633\\u0631\";\n t[\"\\uFD2B\"] = \"\\u0635\\u0631\";\n t[\"\\uFD2C\"] = \"\\u0636\\u0631\";\n t[\"\\uFD2D\"] = \"\\u0634\\u062C\";\n t[\"\\uFD2E\"] = \"\\u0634\\u062D\";\n t[\"\\uFD2F\"] = \"\\u0634\\u062E\";\n t[\"\\uFD30\"] = \"\\u0634\\u0645\";\n t[\"\\uFD31\"] = \"\\u0633\\u0647\";\n t[\"\\uFD32\"] = \"\\u0634\\u0647\";\n t[\"\\uFD33\"] = \"\\u0637\\u0645\";\n t[\"\\uFD34\"] = \"\\u0633\\u062C\";\n t[\"\\uFD35\"] = \"\\u0633\\u062D\";\n t[\"\\uFD36\"] = \"\\u0633\\u062E\";\n t[\"\\uFD37\"] = \"\\u0634\\u062C\";\n t[\"\\uFD38\"] = \"\\u0634\\u062D\";\n t[\"\\uFD39\"] = \"\\u0634\\u062E\";\n t[\"\\uFD3A\"] = \"\\u0637\\u0645\";\n t[\"\\uFD3B\"] = \"\\u0638\\u0645\";\n t[\"\\uFD3C\"] = \"\\u0627\\u064B\";\n t[\"\\uFD3D\"] = \"\\u0627\\u064B\";\n t[\"\\uFD50\"] = \"\\u062A\\u062C\\u0645\";\n t[\"\\uFD51\"] = \"\\u062A\\u062D\\u062C\";\n t[\"\\uFD52\"] = \"\\u062A\\u062D\\u062C\";\n t[\"\\uFD53\"] = \"\\u062A\\u062D\\u0645\";\n t[\"\\uFD54\"] = \"\\u062A\\u062E\\u0645\";\n t[\"\\uFD55\"] = \"\\u062A\\u0645\\u062C\";\n t[\"\\uFD56\"] = \"\\u062A\\u0645\\u062D\";\n t[\"\\uFD57\"] = \"\\u062A\\u0645\\u062E\";\n t[\"\\uFD58\"] = \"\\u062C\\u0645\\u062D\";\n t[\"\\uFD59\"] = \"\\u062C\\u0645\\u062D\";\n t[\"\\uFD5A\"] = \"\\u062D\\u0645\\u064A\";\n t[\"\\uFD5B\"] = \"\\u062D\\u0645\\u0649\";\n t[\"\\uFD5C\"] = \"\\u0633\\u062D\\u062C\";\n t[\"\\uFD5D\"] = \"\\u0633\\u062C\\u062D\";\n t[\"\\uFD5E\"] = \"\\u0633\\u062C\\u0649\";\n t[\"\\uFD5F\"] = \"\\u0633\\u0645\\u062D\";\n t[\"\\uFD60\"] = \"\\u0633\\u0645\\u062D\";\n t[\"\\uFD61\"] = \"\\u0633\\u0645\\u062C\";\n t[\"\\uFD62\"] = \"\\u0633\\u0645\\u0645\";\n t[\"\\uFD63\"] = \"\\u0633\\u0645\\u0645\";\n t[\"\\uFD64\"] = \"\\u0635\\u062D\\u062D\";\n t[\"\\uFD65\"] = \"\\u0635\\u062D\\u062D\";\n t[\"\\uFD66\"] = \"\\u0635\\u0645\\u0645\";\n t[\"\\uFD67\"] = \"\\u0634\\u062D\\u0645\";\n t[\"\\uFD68\"] = \"\\u0634\\u062D\\u0645\";\n t[\"\\uFD69\"] = \"\\u0634\\u062C\\u064A\";\n t[\"\\uFD6A\"] = \"\\u0634\\u0645\\u062E\";\n t[\"\\uFD6B\"] = \"\\u0634\\u0645\\u062E\";\n t[\"\\uFD6C\"] = \"\\u0634\\u0645\\u0645\";\n t[\"\\uFD6D\"] = \"\\u0634\\u0645\\u0645\";\n t[\"\\uFD6E\"] = \"\\u0636\\u062D\\u0649\";\n t[\"\\uFD6F\"] = \"\\u0636\\u062E\\u0645\";\n t[\"\\uFD70\"] = \"\\u0636\\u062E\\u0645\";\n t[\"\\uFD71\"] = \"\\u0637\\u0645\\u062D\";\n t[\"\\uFD72\"] = \"\\u0637\\u0645\\u062D\";\n t[\"\\uFD73\"] = \"\\u0637\\u0645\\u0645\";\n t[\"\\uFD74\"] = \"\\u0637\\u0645\\u064A\";\n t[\"\\uFD75\"] = \"\\u0639\\u062C\\u0645\";\n t[\"\\uFD76\"] = \"\\u0639\\u0645\\u0645\";\n t[\"\\uFD77\"] = \"\\u0639\\u0645\\u0645\";\n t[\"\\uFD78\"] = \"\\u0639\\u0645\\u0649\";\n t[\"\\uFD79\"] = \"\\u063A\\u0645\\u0645\";\n t[\"\\uFD7A\"] = \"\\u063A\\u0645\\u064A\";\n t[\"\\uFD7B\"] = \"\\u063A\\u0645\\u0649\";\n t[\"\\uFD7C\"] = \"\\u0641\\u062E\\u0645\";\n t[\"\\uFD7D\"] = \"\\u0641\\u062E\\u0645\";\n t[\"\\uFD7E\"] = \"\\u0642\\u0645\\u062D\";\n t[\"\\uFD7F\"] = \"\\u0642\\u0645\\u0645\";\n t[\"\\uFD80\"] = \"\\u0644\\u062D\\u0645\";\n t[\"\\uFD81\"] = \"\\u0644\\u062D\\u064A\";\n t[\"\\uFD82\"] = \"\\u0644\\u062D\\u0649\";\n t[\"\\uFD83\"] = \"\\u0644\\u062C\\u062C\";\n t[\"\\uFD84\"] = \"\\u0644\\u062C\\u062C\";\n t[\"\\uFD85\"] = \"\\u0644\\u062E\\u0645\";\n t[\"\\uFD86\"] = \"\\u0644\\u062E\\u0645\";\n t[\"\\uFD87\"] = \"\\u0644\\u0645\\u062D\";\n t[\"\\uFD88\"] = \"\\u0644\\u0645\\u062D\";\n t[\"\\uFD89\"] = \"\\u0645\\u062D\\u062C\";\n t[\"\\uFD8A\"] = \"\\u0645\\u062D\\u0645\";\n t[\"\\uFD8B\"] = \"\\u0645\\u062D\\u064A\";\n t[\"\\uFD8C\"] = \"\\u0645\\u062C\\u062D\";\n t[\"\\uFD8D\"] = \"\\u0645\\u062C\\u0645\";\n t[\"\\uFD8E\"] = \"\\u0645\\u062E\\u062C\";\n t[\"\\uFD8F\"] = \"\\u0645\\u062E\\u0645\";\n t[\"\\uFD92\"] = \"\\u0645\\u062C\\u062E\";\n t[\"\\uFD93\"] = \"\\u0647\\u0645\\u062C\";\n t[\"\\uFD94\"] = \"\\u0647\\u0645\\u0645\";\n t[\"\\uFD95\"] = \"\\u0646\\u062D\\u0645\";\n t[\"\\uFD96\"] = \"\\u0646\\u062D\\u0649\";\n t[\"\\uFD97\"] = \"\\u0646\\u062C\\u0645\";\n t[\"\\uFD98\"] = \"\\u0646\\u062C\\u0645\";\n t[\"\\uFD99\"] = \"\\u0646\\u062C\\u0649\";\n t[\"\\uFD9A\"] = \"\\u0646\\u0645\\u064A\";\n t[\"\\uFD9B\"] = \"\\u0646\\u0645\\u0649\";\n t[\"\\uFD9C\"] = \"\\u064A\\u0645\\u0645\";\n t[\"\\uFD9D\"] = \"\\u064A\\u0645\\u0645\";\n t[\"\\uFD9E\"] = \"\\u0628\\u062E\\u064A\";\n t[\"\\uFD9F\"] = \"\\u062A\\u062C\\u064A\";\n t[\"\\uFDA0\"] = \"\\u062A\\u062C\\u0649\";\n t[\"\\uFDA1\"] = \"\\u062A\\u062E\\u064A\";\n t[\"\\uFDA2\"] = \"\\u062A\\u062E\\u0649\";\n t[\"\\uFDA3\"] = \"\\u062A\\u0645\\u064A\";\n t[\"\\uFDA4\"] = \"\\u062A\\u0645\\u0649\";\n t[\"\\uFDA5\"] = \"\\u062C\\u0645\\u064A\";\n t[\"\\uFDA6\"] = \"\\u062C\\u062D\\u0649\";\n t[\"\\uFDA7\"] = \"\\u062C\\u0645\\u0649\";\n t[\"\\uFDA8\"] = \"\\u0633\\u062E\\u0649\";\n t[\"\\uFDA9\"] = \"\\u0635\\u062D\\u064A\";\n t[\"\\uFDAA\"] = \"\\u0634\\u062D\\u064A\";\n t[\"\\uFDAB\"] = \"\\u0636\\u062D\\u064A\";\n t[\"\\uFDAC\"] = \"\\u0644\\u062C\\u064A\";\n t[\"\\uFDAD\"] = \"\\u0644\\u0645\\u064A\";\n t[\"\\uFDAE\"] = \"\\u064A\\u062D\\u064A\";\n t[\"\\uFDAF\"] = \"\\u064A\\u062C\\u064A\";\n t[\"\\uFDB0\"] = \"\\u064A\\u0645\\u064A\";\n t[\"\\uFDB1\"] = \"\\u0645\\u0645\\u064A\";\n t[\"\\uFDB2\"] = \"\\u0642\\u0645\\u064A\";\n t[\"\\uFDB3\"] = \"\\u0646\\u062D\\u064A\";\n t[\"\\uFDB4\"] = \"\\u0642\\u0645\\u062D\";\n t[\"\\uFDB5\"] = \"\\u0644\\u062D\\u0645\";\n t[\"\\uFDB6\"] = \"\\u0639\\u0645\\u064A\";\n t[\"\\uFDB7\"] = \"\\u0643\\u0645\\u064A\";\n t[\"\\uFDB8\"] = \"\\u0646\\u062C\\u062D\";\n t[\"\\uFDB9\"] = \"\\u0645\\u062E\\u064A\";\n t[\"\\uFDBA\"] = \"\\u0644\\u062C\\u0645\";\n t[\"\\uFDBB\"] = \"\\u0643\\u0645\\u0645\";\n t[\"\\uFDBC\"] = \"\\u0644\\u062C\\u0645\";\n t[\"\\uFDBD\"] = \"\\u0646\\u062C\\u062D\";\n t[\"\\uFDBE\"] = \"\\u062C\\u062D\\u064A\";\n t[\"\\uFDBF\"] = \"\\u062D\\u062C\\u064A\";\n t[\"\\uFDC0\"] = \"\\u0645\\u062C\\u064A\";\n t[\"\\uFDC1\"] = \"\\u0641\\u0645\\u064A\";\n t[\"\\uFDC2\"] = \"\\u0628\\u062D\\u064A\";\n t[\"\\uFDC3\"] = \"\\u0643\\u0645\\u0645\";\n t[\"\\uFDC4\"] = \"\\u0639\\u062C\\u0645\";\n t[\"\\uFDC5\"] = \"\\u0635\\u0645\\u0645\";\n t[\"\\uFDC6\"] = \"\\u0633\\u062E\\u064A\";\n t[\"\\uFDC7\"] = \"\\u0646\\u062C\\u064A\";\n t[\"\\uFE49\"] = \"\\u203E\";\n t[\"\\uFE4A\"] = \"\\u203E\";\n t[\"\\uFE4B\"] = \"\\u203E\";\n t[\"\\uFE4C\"] = \"\\u203E\";\n t[\"\\uFE4D\"] = \"\\u005F\";\n t[\"\\uFE4E\"] = \"\\u005F\";\n t[\"\\uFE4F\"] = \"\\u005F\";\n t[\"\\uFE80\"] = \"\\u0621\";\n t[\"\\uFE81\"] = \"\\u0622\";\n t[\"\\uFE82\"] = \"\\u0622\";\n t[\"\\uFE83\"] = \"\\u0623\";\n t[\"\\uFE84\"] = \"\\u0623\";\n t[\"\\uFE85\"] = \"\\u0624\";\n t[\"\\uFE86\"] = \"\\u0624\";\n t[\"\\uFE87\"] = \"\\u0625\";\n t[\"\\uFE88\"] = \"\\u0625\";\n t[\"\\uFE89\"] = \"\\u0626\";\n t[\"\\uFE8A\"] = \"\\u0626\";\n t[\"\\uFE8B\"] = \"\\u0626\";\n t[\"\\uFE8C\"] = \"\\u0626\";\n t[\"\\uFE8D\"] = \"\\u0627\";\n t[\"\\uFE8E\"] = \"\\u0627\";\n t[\"\\uFE8F\"] = \"\\u0628\";\n t[\"\\uFE90\"] = \"\\u0628\";\n t[\"\\uFE91\"] = \"\\u0628\";\n t[\"\\uFE92\"] = \"\\u0628\";\n t[\"\\uFE93\"] = \"\\u0629\";\n t[\"\\uFE94\"] = \"\\u0629\";\n t[\"\\uFE95\"] = \"\\u062A\";\n t[\"\\uFE96\"] = \"\\u062A\";\n t[\"\\uFE97\"] = \"\\u062A\";\n t[\"\\uFE98\"] = \"\\u062A\";\n t[\"\\uFE99\"] = \"\\u062B\";\n t[\"\\uFE9A\"] = \"\\u062B\";\n t[\"\\uFE9B\"] = \"\\u062B\";\n t[\"\\uFE9C\"] = \"\\u062B\";\n t[\"\\uFE9D\"] = \"\\u062C\";\n t[\"\\uFE9E\"] = \"\\u062C\";\n t[\"\\uFE9F\"] = \"\\u062C\";\n t[\"\\uFEA0\"] = \"\\u062C\";\n t[\"\\uFEA1\"] = \"\\u062D\";\n t[\"\\uFEA2\"] = \"\\u062D\";\n t[\"\\uFEA3\"] = \"\\u062D\";\n t[\"\\uFEA4\"] = \"\\u062D\";\n t[\"\\uFEA5\"] = \"\\u062E\";\n t[\"\\uFEA6\"] = \"\\u062E\";\n t[\"\\uFEA7\"] = \"\\u062E\";\n t[\"\\uFEA8\"] = \"\\u062E\";\n t[\"\\uFEA9\"] = \"\\u062F\";\n t[\"\\uFEAA\"] = \"\\u062F\";\n t[\"\\uFEAB\"] = \"\\u0630\";\n t[\"\\uFEAC\"] = \"\\u0630\";\n t[\"\\uFEAD\"] = \"\\u0631\";\n t[\"\\uFEAE\"] = \"\\u0631\";\n t[\"\\uFEAF\"] = \"\\u0632\";\n t[\"\\uFEB0\"] = \"\\u0632\";\n t[\"\\uFEB1\"] = \"\\u0633\";\n t[\"\\uFEB2\"] = \"\\u0633\";\n t[\"\\uFEB3\"] = \"\\u0633\";\n t[\"\\uFEB4\"] = \"\\u0633\";\n t[\"\\uFEB5\"] = \"\\u0634\";\n t[\"\\uFEB6\"] = \"\\u0634\";\n t[\"\\uFEB7\"] = \"\\u0634\";\n t[\"\\uFEB8\"] = \"\\u0634\";\n t[\"\\uFEB9\"] = \"\\u0635\";\n t[\"\\uFEBA\"] = \"\\u0635\";\n t[\"\\uFEBB\"] = \"\\u0635\";\n t[\"\\uFEBC\"] = \"\\u0635\";\n t[\"\\uFEBD\"] = \"\\u0636\";\n t[\"\\uFEBE\"] = \"\\u0636\";\n t[\"\\uFEBF\"] = \"\\u0636\";\n t[\"\\uFEC0\"] = \"\\u0636\";\n t[\"\\uFEC1\"] = \"\\u0637\";\n t[\"\\uFEC2\"] = \"\\u0637\";\n t[\"\\uFEC3\"] = \"\\u0637\";\n t[\"\\uFEC4\"] = \"\\u0637\";\n t[\"\\uFEC5\"] = \"\\u0638\";\n t[\"\\uFEC6\"] = \"\\u0638\";\n t[\"\\uFEC7\"] = \"\\u0638\";\n t[\"\\uFEC8\"] = \"\\u0638\";\n t[\"\\uFEC9\"] = \"\\u0639\";\n t[\"\\uFECA\"] = \"\\u0639\";\n t[\"\\uFECB\"] = \"\\u0639\";\n t[\"\\uFECC\"] = \"\\u0639\";\n t[\"\\uFECD\"] = \"\\u063A\";\n t[\"\\uFECE\"] = \"\\u063A\";\n t[\"\\uFECF\"] = \"\\u063A\";\n t[\"\\uFED0\"] = \"\\u063A\";\n t[\"\\uFED1\"] = \"\\u0641\";\n t[\"\\uFED2\"] = \"\\u0641\";\n t[\"\\uFED3\"] = \"\\u0641\";\n t[\"\\uFED4\"] = \"\\u0641\";\n t[\"\\uFED5\"] = \"\\u0642\";\n t[\"\\uFED6\"] = \"\\u0642\";\n t[\"\\uFED7\"] = \"\\u0642\";\n t[\"\\uFED8\"] = \"\\u0642\";\n t[\"\\uFED9\"] = \"\\u0643\";\n t[\"\\uFEDA\"] = \"\\u0643\";\n t[\"\\uFEDB\"] = \"\\u0643\";\n t[\"\\uFEDC\"] = \"\\u0643\";\n t[\"\\uFEDD\"] = \"\\u0644\";\n t[\"\\uFEDE\"] = \"\\u0644\";\n t[\"\\uFEDF\"] = \"\\u0644\";\n t[\"\\uFEE0\"] = \"\\u0644\";\n t[\"\\uFEE1\"] = \"\\u0645\";\n t[\"\\uFEE2\"] = \"\\u0645\";\n t[\"\\uFEE3\"] = \"\\u0645\";\n t[\"\\uFEE4\"] = \"\\u0645\";\n t[\"\\uFEE5\"] = \"\\u0646\";\n t[\"\\uFEE6\"] = \"\\u0646\";\n t[\"\\uFEE7\"] = \"\\u0646\";\n t[\"\\uFEE8\"] = \"\\u0646\";\n t[\"\\uFEE9\"] = \"\\u0647\";\n t[\"\\uFEEA\"] = \"\\u0647\";\n t[\"\\uFEEB\"] = \"\\u0647\";\n t[\"\\uFEEC\"] = \"\\u0647\";\n t[\"\\uFEED\"] = \"\\u0648\";\n t[\"\\uFEEE\"] = \"\\u0648\";\n t[\"\\uFEEF\"] = \"\\u0649\";\n t[\"\\uFEF0\"] = \"\\u0649\";\n t[\"\\uFEF1\"] = \"\\u064A\";\n t[\"\\uFEF2\"] = \"\\u064A\";\n t[\"\\uFEF3\"] = \"\\u064A\";\n t[\"\\uFEF4\"] = \"\\u064A\";\n t[\"\\uFEF5\"] = \"\\u0644\\u0622\";\n t[\"\\uFEF6\"] = \"\\u0644\\u0622\";\n t[\"\\uFEF7\"] = \"\\u0644\\u0623\";\n t[\"\\uFEF8\"] = \"\\u0644\\u0623\";\n t[\"\\uFEF9\"] = \"\\u0644\\u0625\";\n t[\"\\uFEFA\"] = \"\\u0644\\u0625\";\n t[\"\\uFEFB\"] = \"\\u0644\\u0627\";\n t[\"\\uFEFC\"] = \"\\u0644\\u0627\";\n});\nfunction reverseIfRtl(chars) {\n var charsLength = chars.length;\n if (charsLength <= 1 || !isRTLRangeFor(chars.charCodeAt(0))) {\n return chars;\n }\n var s = \"\";\n for (var ii = charsLength - 1; ii >= 0; ii--) {\n s += chars[ii];\n }\n return s;\n}\nexports.mapSpecialUnicodeValues = mapSpecialUnicodeValues;\nexports.reverseIfRtl = reverseIfRtl;\nexports.getUnicodeRangeFor = getUnicodeRangeFor;\nexports.getNormalizedUnicodes = getNormalizedUnicodes;\nexports.getUnicodeForGlyph = getUnicodeForGlyph;\n\n/***/ }),\n/* 229 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FontRendererFactory = void 0;\n\nvar _util = __w_pdfjs_require__(5);\n\nvar _cff_parser = __w_pdfjs_require__(223);\n\nvar _glyphlist = __w_pdfjs_require__(226);\n\nvar _encodings = __w_pdfjs_require__(225);\n\nvar _stream = __w_pdfjs_require__(205);\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar FontRendererFactory = function FontRendererFactoryClosure() {\n function getLong(data, offset) {\n return data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3];\n }\n\n function getUshort(data, offset) {\n return data[offset] << 8 | data[offset + 1];\n }\n\n function getSubroutineBias(subrs) {\n var numSubrs = subrs.length;\n var bias = 32768;\n\n if (numSubrs < 1240) {\n bias = 107;\n } else if (numSubrs < 33900) {\n bias = 1131;\n }\n\n return bias;\n }\n\n function parseCmap(data, start, end) {\n var offset = getUshort(data, start + 2) === 1 ? getLong(data, start + 8) : getLong(data, start + 16);\n var format = getUshort(data, start + offset);\n var ranges, p, i;\n\n if (format === 4) {\n getUshort(data, start + offset + 2);\n var segCount = getUshort(data, start + offset + 6) >> 1;\n p = start + offset + 14;\n ranges = [];\n\n for (i = 0; i < segCount; i++, p += 2) {\n ranges[i] = {\n end: getUshort(data, p)\n };\n }\n\n p += 2;\n\n for (i = 0; i < segCount; i++, p += 2) {\n ranges[i].start = getUshort(data, p);\n }\n\n for (i = 0; i < segCount; i++, p += 2) {\n ranges[i].idDelta = getUshort(data, p);\n }\n\n for (i = 0; i < segCount; i++, p += 2) {\n var idOffset = getUshort(data, p);\n\n if (idOffset === 0) {\n continue;\n }\n\n ranges[i].ids = [];\n\n for (var j = 0, jj = ranges[i].end - ranges[i].start + 1; j < jj; j++) {\n ranges[i].ids[j] = getUshort(data, p + idOffset);\n idOffset += 2;\n }\n }\n\n return ranges;\n } else if (format === 12) {\n getLong(data, start + offset + 4);\n var groups = getLong(data, start + offset + 12);\n p = start + offset + 16;\n ranges = [];\n\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\n return ranges;\n }\n\n throw new _util.FormatError(\"unsupported cmap: \".concat(format));\n }\n\n function parseCff(data, start, end, seacAnalysisEnabled) {\n var properties = {};\n var parser = new _cff_parser.CFFParser(new _stream.Stream(data, start, end - start), properties, seacAnalysisEnabled);\n var cff = parser.parse();\n return {\n glyphs: cff.charStrings.objects,\n subrs: cff.topDict.privateDict && cff.topDict.privateDict.subrsIndex && cff.topDict.privateDict.subrsIndex.objects,\n gsubrs: cff.globalSubrIndex && cff.globalSubrIndex.objects,\n isCFFCIDFont: cff.isCIDFont,\n fdSelect: cff.fdSelect,\n fdArray: cff.fdArray\n };\n }\n\n function parseGlyfTable(glyf, loca, isGlyphLocationsLong) {\n var itemSize, itemDecode;\n\n if (isGlyphLocationsLong) {\n itemSize = 4;\n\n itemDecode = function fontItemDecodeLong(data, offset) {\n return data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3];\n };\n } else {\n itemSize = 2;\n\n itemDecode = function fontItemDecode(data, offset) {\n return data[offset] << 9 | data[offset + 1] << 1;\n };\n }\n\n var glyphs = [];\n var startOffset = itemDecode(loca, 0);\n\n for (var j = itemSize; j < loca.length; j += itemSize) {\n var endOffset = itemDecode(loca, j);\n glyphs.push(glyf.subarray(startOffset, endOffset));\n startOffset = endOffset;\n }\n\n return glyphs;\n }\n\n function lookupCmap(ranges, unicode) {\n var code = unicode.codePointAt(0),\n gid = 0;\n var l = 0,\n r = ranges.length - 1;\n\n while (l < r) {\n var c = l + r + 1 >> 1;\n\n if (code < ranges[c].start) {\n r = c - 1;\n } else {\n l = c;\n }\n }\n\n if (ranges[l].start <= code && code <= ranges[l].end) {\n gid = ranges[l].idDelta + (ranges[l].ids ? ranges[l].ids[code - ranges[l].start] : code) & 0xffff;\n }\n\n return {\n charCode: code,\n glyphId: gid\n };\n }\n\n function compileGlyf(code, cmds, font) {\n function moveTo(x, y) {\n cmds.push({\n cmd: \"moveTo\",\n args: [x, y]\n });\n }\n\n function lineTo(x, y) {\n cmds.push({\n cmd: \"lineTo\",\n args: [x, y]\n });\n }\n\n function quadraticCurveTo(xa, ya, x, y) {\n cmds.push({\n cmd: \"quadraticCurveTo\",\n args: [xa, ya, x, y]\n });\n }\n\n var i = 0;\n var numberOfContours = (code[i] << 24 | code[i + 1] << 16) >> 16;\n var flags;\n var x = 0,\n y = 0;\n i += 10;\n\n if (numberOfContours < 0) {\n do {\n flags = code[i] << 8 | code[i + 1];\n var glyphIndex = code[i + 2] << 8 | code[i + 3];\n i += 4;\n var arg1, arg2;\n\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\n if (flags & 0x02) {\n x = arg1;\n y = arg2;\n } else {\n x = 0;\n y = 0;\n }\n\n var scaleX = 1,\n scaleY = 1,\n scale01 = 0,\n scale10 = 0;\n\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\n var subglyph = font.glyphs[glyphIndex];\n\n if (subglyph) {\n cmds.push({\n cmd: \"save\"\n });\n cmds.push({\n cmd: \"transform\",\n args: [scaleX, scale01, scale10, scaleY, x, y]\n });\n compileGlyf(subglyph, cmds, font);\n cmds.push({\n cmd: \"restore\"\n });\n }\n } while (flags & 0x20);\n } else {\n var endPtsOfContours = [];\n var j, jj;\n\n for (j = 0; j < numberOfContours; j++) {\n endPtsOfContours.push(code[i] << 8 | code[i + 1]);\n i += 2;\n }\n\n var instructionLength = code[i] << 8 | code[i + 1];\n i += 2 + instructionLength;\n var numberOfPoints = endPtsOfContours[endPtsOfContours.length - 1] + 1;\n var points = [];\n\n while (points.length < numberOfPoints) {\n flags = code[i++];\n var repeat = 1;\n\n if (flags & 0x08) {\n repeat += code[i++];\n }\n\n while (repeat-- > 0) {\n points.push({\n flags: flags\n });\n }\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\n case 0x02:\n x -= code[i++];\n break;\n\n case 0x12:\n x += code[i++];\n break;\n }\n\n points[j].x = x;\n }\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\n case 0x04:\n y -= code[i++];\n break;\n\n case 0x24:\n y += code[i++];\n break;\n }\n\n points[j].y = y;\n }\n\n var startPoint = 0;\n\n for (i = 0; i < numberOfContours; i++) {\n var endPoint = endPtsOfContours[i];\n var contour = points.slice(startPoint, endPoint + 1);\n\n if (contour[0].flags & 1) {\n contour.push(contour[0]);\n } else if (contour[contour.length - 1].flags & 1) {\n contour.unshift(contour[contour.length - 1]);\n } else {\n var p = {\n flags: 1,\n x: (contour[0].x + contour[contour.length - 1].x) / 2,\n y: (contour[0].y + contour[contour.length - 1].y) / 2\n };\n contour.unshift(p);\n contour.push(p);\n }\n\n moveTo(contour[0].x, contour[0].y);\n\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(contour[j].x, contour[j].y, contour[j + 1].x, contour[j + 1].y);\n j++;\n } else {\n quadraticCurveTo(contour[j].x, contour[j].y, (contour[j].x + contour[j + 1].x) / 2, (contour[j].y + contour[j + 1].y) / 2);\n }\n }\n\n startPoint = endPoint + 1;\n }\n }\n }\n\n function compileCharString(charStringCode, cmds, font, glyphId) {\n function moveTo(x, y) {\n cmds.push({\n cmd: \"moveTo\",\n args: [x, y]\n });\n }\n\n function lineTo(x, y) {\n cmds.push({\n cmd: \"lineTo\",\n args: [x, y]\n });\n }\n\n function bezierCurveTo(x1, y1, x2, y2, x, y) {\n cmds.push({\n cmd: \"bezierCurveTo\",\n args: [x1, y1, x2, y2, x, y]\n });\n }\n\n var stack = [];\n var x = 0,\n y = 0;\n var stems = 0;\n\n function parse(code) {\n var i = 0;\n\n while (i < code.length) {\n var stackClean = false;\n var v = code[i++];\n var xa, xb, ya, yb, y1, y2, y3, n, subrCode;\n\n switch (v) {\n case 1:\n stems += stack.length >> 1;\n stackClean = true;\n break;\n\n case 3:\n stems += stack.length >> 1;\n stackClean = true;\n break;\n\n case 4:\n y += stack.pop();\n moveTo(x, y);\n stackClean = true;\n break;\n\n case 5:\n while (stack.length > 0) {\n x += stack.shift();\n y += stack.shift();\n lineTo(x, y);\n }\n\n break;\n\n case 6:\n while (stack.length > 0) {\n x += stack.shift();\n lineTo(x, y);\n\n if (stack.length === 0) {\n break;\n }\n\n y += stack.shift();\n lineTo(x, y);\n }\n\n break;\n\n case 7:\n while (stack.length > 0) {\n y += stack.shift();\n lineTo(x, y);\n\n if (stack.length === 0) {\n break;\n }\n\n x += stack.shift();\n lineTo(x, y);\n }\n\n break;\n\n case 8:\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\n break;\n\n case 10:\n n = stack.pop();\n subrCode = null;\n\n if (font.isCFFCIDFont) {\n var fdIndex = font.fdSelect.getFDIndex(glyphId);\n\n if (fdIndex >= 0 && fdIndex < font.fdArray.length) {\n var fontDict = font.fdArray[fdIndex];\n var subrs = void 0;\n\n if (fontDict.privateDict && fontDict.privateDict.subrsIndex) {\n subrs = fontDict.privateDict.subrsIndex.objects;\n }\n\n if (subrs) {\n n += getSubroutineBias(subrs);\n subrCode = subrs[n];\n }\n } else {\n (0, _util.warn)(\"Invalid fd index for glyph index.\");\n }\n } else {\n subrCode = font.subrs[n + font.subrsBias];\n }\n\n if (subrCode) {\n parse(subrCode);\n }\n\n break;\n\n case 11:\n return;\n\n case 12:\n v = code[i++];\n\n switch (v) {\n case 34:\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\n case 35:\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();\n break;\n\n case 36:\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\n case 37:\n var x0 = x,\n y0 = y;\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb;\n y = yb;\n\n if (Math.abs(x - x0) > Math.abs(y - y0)) {\n x += stack.shift();\n } else {\n y += stack.shift();\n }\n\n bezierCurveTo(xa, ya, xb, yb, x, y);\n break;\n\n default:\n throw new _util.FormatError(\"unknown operator: 12 \".concat(v));\n }\n\n break;\n\n case 14:\n if (stack.length >= 4) {\n var achar = stack.pop();\n var bchar = stack.pop();\n y = stack.pop();\n x = stack.pop();\n cmds.push({\n cmd: \"save\"\n });\n cmds.push({\n cmd: \"translate\",\n args: [x, y]\n });\n var cmap = lookupCmap(font.cmap, String.fromCharCode(font.glyphNameMap[_encodings.StandardEncoding[achar]]));\n compileCharString(font.glyphs[cmap.glyphId], cmds, font, cmap.glyphId);\n cmds.push({\n cmd: \"restore\"\n });\n cmap = lookupCmap(font.cmap, String.fromCharCode(font.glyphNameMap[_encodings.StandardEncoding[bchar]]));\n compileCharString(font.glyphs[cmap.glyphId], cmds, font, cmap.glyphId);\n }\n\n return;\n\n case 18:\n stems += stack.length >> 1;\n stackClean = true;\n break;\n\n case 19:\n stems += stack.length >> 1;\n i += stems + 7 >> 3;\n stackClean = true;\n break;\n\n case 20:\n stems += stack.length >> 1;\n i += stems + 7 >> 3;\n stackClean = true;\n break;\n\n case 21:\n y += stack.pop();\n x += stack.pop();\n moveTo(x, y);\n stackClean = true;\n break;\n\n case 22:\n x += stack.pop();\n moveTo(x, y);\n stackClean = true;\n break;\n\n case 23:\n stems += stack.length >> 1;\n stackClean = true;\n break;\n\n case 24:\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\n x += stack.shift();\n y += stack.shift();\n lineTo(x, y);\n break;\n\n case 25:\n while (stack.length > 6) {\n x += stack.shift();\n y += stack.shift();\n lineTo(x, y);\n }\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\n case 26:\n if (stack.length % 2) {\n x += stack.shift();\n }\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\n break;\n\n case 27:\n if (stack.length % 2) {\n y += stack.shift();\n }\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\n break;\n\n case 28:\n stack.push((code[i] << 24 | code[i + 1] << 16) >> 16);\n i += 2;\n break;\n\n case 29:\n n = stack.pop() + font.gsubrsBias;\n subrCode = font.gsubrs[n];\n\n if (subrCode) {\n parse(subrCode);\n }\n\n break;\n\n case 30:\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\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\n break;\n\n case 31:\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\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\n break;\n\n default:\n if (v < 32) {\n throw new _util.FormatError(\"unknown operator: \".concat(v));\n }\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((code[i] << 24 | code[i + 1] << 16 | code[i + 2] << 8 | code[i + 3]) / 65536);\n i += 4;\n }\n\n break;\n }\n\n if (stackClean) {\n stack.length = 0;\n }\n }\n }\n\n parse(charStringCode);\n }\n\n var NOOP = [];\n\n var CompiledFont = /*#__PURE__*/function () {\n function CompiledFont(fontMatrix) {\n _classCallCheck(this, CompiledFont);\n\n if (this.constructor === CompiledFont) {\n (0, _util.unreachable)(\"Cannot initialize CompiledFont.\");\n }\n\n this.fontMatrix = fontMatrix;\n this.compiledGlyphs = Object.create(null);\n this.compiledCharCodeToGlyphId = Object.create(null);\n }\n\n _createClass(CompiledFont, [{\n key: \"getPathJs\",\n value: function getPathJs(unicode) {\n var cmap = lookupCmap(this.cmap, unicode);\n var fn = this.compiledGlyphs[cmap.glyphId];\n\n if (!fn) {\n fn = this.compileGlyph(this.glyphs[cmap.glyphId], cmap.glyphId);\n this.compiledGlyphs[cmap.glyphId] = fn;\n }\n\n if (this.compiledCharCodeToGlyphId[cmap.charCode] === undefined) {\n this.compiledCharCodeToGlyphId[cmap.charCode] = cmap.glyphId;\n }\n\n return fn;\n }\n }, {\n key: \"compileGlyph\",\n value: function compileGlyph(code, glyphId) {\n if (!code || code.length === 0 || code[0] === 14) {\n return NOOP;\n }\n\n var fontMatrix = this.fontMatrix;\n\n if (this.isCFFCIDFont) {\n var fdIndex = this.fdSelect.getFDIndex(glyphId);\n\n if (fdIndex >= 0 && fdIndex < this.fdArray.length) {\n var fontDict = this.fdArray[fdIndex];\n fontMatrix = fontDict.getByName(\"FontMatrix\") || _util.FONT_IDENTITY_MATRIX;\n } else {\n (0, _util.warn)(\"Invalid fd index for glyph index.\");\n }\n }\n\n var cmds = [];\n cmds.push({\n cmd: \"save\"\n });\n cmds.push({\n cmd: \"transform\",\n args: fontMatrix.slice()\n });\n cmds.push({\n cmd: \"scale\",\n args: [\"size\", \"-size\"]\n });\n this.compileGlyphImpl(code, cmds, glyphId);\n cmds.push({\n cmd: \"restore\"\n });\n return cmds;\n }\n }, {\n key: \"compileGlyphImpl\",\n value: function compileGlyphImpl() {\n (0, _util.unreachable)(\"Children classes should implement this.\");\n }\n }, {\n key: \"hasBuiltPath\",\n value: function hasBuiltPath(unicode) {\n var cmap = lookupCmap(this.cmap, unicode);\n return this.compiledGlyphs[cmap.glyphId] !== undefined && this.compiledCharCodeToGlyphId[cmap.charCode] !== undefined;\n }\n }]);\n\n return CompiledFont;\n }();\n\n var TrueTypeCompiled = /*#__PURE__*/function (_CompiledFont) {\n _inherits(TrueTypeCompiled, _CompiledFont);\n\n var _super = _createSuper(TrueTypeCompiled);\n\n function TrueTypeCompiled(glyphs, cmap, fontMatrix) {\n var _this;\n\n _classCallCheck(this, TrueTypeCompiled);\n\n _this = _super.call(this, fontMatrix || [0.000488, 0, 0, 0.000488, 0, 0]);\n _this.glyphs = glyphs;\n _this.cmap = cmap;\n return _this;\n }\n\n _createClass(TrueTypeCompiled, [{\n key: \"compileGlyphImpl\",\n value: function compileGlyphImpl(code, cmds) {\n compileGlyf(code, cmds, this);\n }\n }]);\n\n return TrueTypeCompiled;\n }(CompiledFont);\n\n var Type2Compiled = /*#__PURE__*/function (_CompiledFont2) {\n _inherits(Type2Compiled, _CompiledFont2);\n\n var _super2 = _createSuper(Type2Compiled);\n\n function Type2Compiled(cffInfo, cmap, fontMatrix, glyphNameMap) {\n var _this2;\n\n _classCallCheck(this, Type2Compiled);\n\n _this2 = _super2.call(this, fontMatrix || [0.001, 0, 0, 0.001, 0, 0]);\n _this2.glyphs = cffInfo.glyphs;\n _this2.gsubrs = cffInfo.gsubrs || [];\n _this2.subrs = cffInfo.subrs || [];\n _this2.cmap = cmap;\n _this2.glyphNameMap = glyphNameMap || (0, _glyphlist.getGlyphsUnicode)();\n _this2.gsubrsBias = getSubroutineBias(_this2.gsubrs);\n _this2.subrsBias = getSubroutineBias(_this2.subrs);\n _this2.isCFFCIDFont = cffInfo.isCFFCIDFont;\n _this2.fdSelect = cffInfo.fdSelect;\n _this2.fdArray = cffInfo.fdArray;\n return _this2;\n }\n\n _createClass(Type2Compiled, [{\n key: \"compileGlyphImpl\",\n value: function compileGlyphImpl(code, cmds, glyphId) {\n compileCharString(code, cmds, this, glyphId);\n }\n }]);\n\n return Type2Compiled;\n }(CompiledFont);\n\n return {\n create: function FontRendererFactory_create(font, seacAnalysisEnabled) {\n var data = new Uint8Array(font.data);\n var cmap, glyf, loca, cff, indexToLocFormat, unitsPerEm;\n var numTables = getUshort(data, 4);\n\n for (var i = 0, p = 12; i < numTables; i++, p += 16) {\n var tag = (0, _util.bytesToString)(data.subarray(p, p + 4));\n var offset = getLong(data, p + 8);\n var length = getLong(data, p + 12);\n\n switch (tag) {\n case \"cmap\":\n cmap = parseCmap(data, offset, offset + length);\n break;\n\n case \"glyf\":\n glyf = data.subarray(offset, offset + length);\n break;\n\n case \"loca\":\n loca = data.subarray(offset, offset + length);\n break;\n\n case \"head\":\n unitsPerEm = getUshort(data, offset + 18);\n indexToLocFormat = getUshort(data, offset + 50);\n break;\n\n case \"CFF \":\n cff = parseCff(data, offset, offset + length, seacAnalysisEnabled);\n break;\n }\n }\n\n if (glyf) {\n var fontMatrix = !unitsPerEm ? font.fontMatrix : [1 / unitsPerEm, 0, 0, 1 / unitsPerEm, 0, 0];\n return new TrueTypeCompiled(parseGlyfTable(glyf, loca, indexToLocFormat), cmap, fontMatrix);\n }\n\n return new Type2Compiled(cff, cmap, font.fontMatrix, font.glyphNameMap);\n }\n };\n}();\n\nexports.FontRendererFactory = FontRendererFactory;\n\n/***/ }),\n/* 230 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Type1Parser = void 0;\n\nvar _encodings = __w_pdfjs_require__(225);\n\nvar _core_utils = __w_pdfjs_require__(201);\n\nvar _stream = __w_pdfjs_require__(205);\n\nvar _util = __w_pdfjs_require__(5);\n\nvar HINTING_ENABLED = false;\n\nvar Type1CharString = function Type1CharStringClosure() {\n var COMMAND_MAP = {\n hstem: [1],\n vstem: [3],\n vmoveto: [4],\n rlineto: [5],\n hlineto: [6],\n vlineto: [7],\n rrcurveto: [8],\n callsubr: [10],\n flex: [12, 35],\n drop: [12, 18],\n endchar: [14],\n rmoveto: [21],\n hmoveto: [22],\n vhcurveto: [30],\n hvcurveto: [31]\n };\n\n function Type1CharString() {\n this.width = 0;\n this.lsb = 0;\n this.flexing = false;\n this.output = [];\n this.stack = [];\n }\n\n Type1CharString.prototype = {\n convert: function Type1CharString_convert(encoded, subrs, seacAnalysisEnabled) {\n var count = encoded.length;\n var error = false;\n var wx, sbx, subrNumber;\n\n for (var i = 0; i < count; i++) {\n var value = encoded[i];\n\n if (value < 32) {\n if (value === 12) {\n value = (value << 8) + encoded[++i];\n }\n\n switch (value) {\n case 1:\n if (!HINTING_ENABLED) {\n this.stack = [];\n break;\n }\n\n error = this.executeCommand(2, COMMAND_MAP.hstem);\n break;\n\n case 3:\n if (!HINTING_ENABLED) {\n this.stack = [];\n break;\n }\n\n error = this.executeCommand(2, COMMAND_MAP.vstem);\n break;\n\n case 4:\n if (this.flexing) {\n if (this.stack.length < 1) {\n error = true;\n break;\n }\n\n var dy = this.stack.pop();\n this.stack.push(0, dy);\n break;\n }\n\n error = this.executeCommand(1, COMMAND_MAP.vmoveto);\n break;\n\n case 5:\n error = this.executeCommand(2, COMMAND_MAP.rlineto);\n break;\n\n case 6:\n error = this.executeCommand(1, COMMAND_MAP.hlineto);\n break;\n\n case 7:\n error = this.executeCommand(1, COMMAND_MAP.vlineto);\n break;\n\n case 8:\n error = this.executeCommand(6, COMMAND_MAP.rrcurveto);\n break;\n\n case 9:\n this.stack = [];\n break;\n\n case 10:\n if (this.stack.length < 1) {\n error = true;\n break;\n }\n\n subrNumber = this.stack.pop();\n\n if (!subrs[subrNumber]) {\n error = true;\n break;\n }\n\n error = this.convert(subrs[subrNumber], subrs, seacAnalysisEnabled);\n break;\n\n case 11:\n return error;\n\n case 13:\n if (this.stack.length < 2) {\n error = true;\n break;\n }\n\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\n case 14:\n this.output.push(COMMAND_MAP.endchar[0]);\n break;\n\n case 21:\n if (this.flexing) {\n break;\n }\n\n error = this.executeCommand(2, COMMAND_MAP.rmoveto);\n break;\n\n case 22:\n if (this.flexing) {\n this.stack.push(0);\n break;\n }\n\n error = this.executeCommand(1, COMMAND_MAP.hmoveto);\n break;\n\n case 30:\n error = this.executeCommand(4, COMMAND_MAP.vhcurveto);\n break;\n\n case 31:\n error = this.executeCommand(4, COMMAND_MAP.hvcurveto);\n break;\n\n case (12 << 8) + 0:\n this.stack = [];\n break;\n\n case (12 << 8) + 1:\n if (!HINTING_ENABLED) {\n this.stack = [];\n break;\n }\n\n error = this.executeCommand(2, COMMAND_MAP.vstem);\n break;\n\n case (12 << 8) + 2:\n if (!HINTING_ENABLED) {\n this.stack = [];\n break;\n }\n\n error = this.executeCommand(2, COMMAND_MAP.hstem);\n break;\n\n case (12 << 8) + 6:\n if (seacAnalysisEnabled) {\n this.seac = this.stack.splice(-4, 4);\n error = this.executeCommand(0, COMMAND_MAP.endchar);\n } else {\n error = this.executeCommand(4, COMMAND_MAP.endchar);\n }\n\n break;\n\n case (12 << 8) + 7:\n if (this.stack.length < 4) {\n error = true;\n break;\n }\n\n this.stack.pop();\n wx = this.stack.pop();\n var sby = this.stack.pop();\n sbx = this.stack.pop();\n this.lsb = sbx;\n this.width = wx;\n this.stack.push(wx, sbx, sby);\n error = this.executeCommand(3, COMMAND_MAP.rmoveto);\n break;\n\n case (12 << 8) + 12:\n if (this.stack.length < 2) {\n error = true;\n break;\n }\n\n var num2 = this.stack.pop();\n var num1 = this.stack.pop();\n this.stack.push(num1 / num2);\n break;\n\n case (12 << 8) + 16:\n if (this.stack.length < 2) {\n error = true;\n break;\n }\n\n subrNumber = this.stack.pop();\n var numArgs = this.stack.pop();\n\n if (subrNumber === 0 && numArgs === 3) {\n var flexArgs = this.stack.splice(this.stack.length - 17, 17);\n this.stack.push(flexArgs[2] + flexArgs[0], flexArgs[3] + flexArgs[1], flexArgs[4], flexArgs[5], flexArgs[6], flexArgs[7], flexArgs[8], flexArgs[9], flexArgs[10], flexArgs[11], flexArgs[12], flexArgs[13], flexArgs[14]);\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\n break;\n\n case (12 << 8) + 17:\n break;\n\n case (12 << 8) + 33:\n this.stack = [];\n break;\n\n default:\n (0, _util.warn)('Unknown type 1 charstring command of \"' + value + '\"');\n break;\n }\n\n if (error) {\n break;\n }\n\n continue;\n } else if (value <= 246) {\n value = value - 139;\n } else if (value <= 250) {\n value = (value - 247) * 256 + encoded[++i] + 108;\n } else if (value <= 254) {\n value = -((value - 251) * 256) - encoded[++i] - 108;\n } else {\n value = (encoded[++i] & 0xff) << 24 | (encoded[++i] & 0xff) << 16 | (encoded[++i] & 0xff) << 8 | (encoded[++i] & 0xff) << 0;\n }\n\n this.stack.push(value);\n }\n\n return error;\n },\n executeCommand: function executeCommand(howManyArgs, command, keepStack) {\n var stackLength = this.stack.length;\n\n if (howManyArgs > stackLength) {\n return true;\n }\n\n var start = stackLength - howManyArgs;\n\n for (var i = start; i < stackLength; i++) {\n var value = this.stack[i];\n\n if (Number.isInteger(value)) {\n this.output.push(28, value >> 8 & 0xff, value & 0xff);\n } else {\n value = 65536 * value | 0;\n this.output.push(255, value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n }\n }\n\n this.output.push.apply(this.output, command);\n\n if (keepStack) {\n this.stack.splice(start, howManyArgs);\n } else {\n this.stack.length = 0;\n }\n\n return false;\n }\n };\n return Type1CharString;\n}();\n\nvar Type1Parser = function Type1ParserClosure() {\n var EEXEC_ENCRYPT_KEY = 55665;\n var CHAR_STRS_ENCRYPT_KEY = 4330;\n\n function isHexDigit(code) {\n return code >= 48 && code <= 57 || code >= 65 && code <= 70 || code >= 97 && code <= 102;\n }\n\n function decrypt(data, key, discardNumber) {\n if (discardNumber >= data.length) {\n return new Uint8Array(0);\n }\n\n var r = key | 0,\n c1 = 52845,\n c2 = 22719,\n i,\n j;\n\n for (i = 0; i < discardNumber; i++) {\n r = (data[i] + r) * c1 + c2 & (1 << 16) - 1;\n }\n\n var count = data.length - discardNumber;\n var decrypted = new Uint8Array(count);\n\n for (i = discardNumber, j = 0; j < count; i++, j++) {\n var value = data[i];\n decrypted[j] = value ^ r >> 8;\n r = (value + r) * c1 + c2 & (1 << 16) - 1;\n }\n\n return decrypted;\n }\n\n function decryptAscii(data, key, discardNumber) {\n var r = key | 0,\n c1 = 52845,\n c2 = 22719;\n var count = data.length,\n maybeLength = count >>> 1;\n var decrypted = new Uint8Array(maybeLength);\n var i, j;\n\n for (i = 0, j = 0; i < count; i++) {\n var digit1 = data[i];\n\n if (!isHexDigit(digit1)) {\n continue;\n }\n\n i++;\n var digit2;\n\n while (i < count && !isHexDigit(digit2 = data[i])) {\n i++;\n }\n\n if (i < count) {\n var value = parseInt(String.fromCharCode(digit1, digit2), 16);\n decrypted[j++] = value ^ r >> 8;\n r = (value + r) * c1 + c2 & (1 << 16) - 1;\n }\n }\n\n return decrypted.slice(discardNumber, j);\n }\n\n function isSpecial(c) {\n return c === 0x2f || c === 0x5b || c === 0x5d || c === 0x7b || c === 0x7d || c === 0x28 || c === 0x29;\n }\n\n function Type1Parser(stream, encrypted, seacAnalysisEnabled) {\n if (encrypted) {\n var data = stream.getBytes();\n var isBinary = !((isHexDigit(data[0]) || (0, _core_utils.isWhiteSpace)(data[0])) && isHexDigit(data[1]) && isHexDigit(data[2]) && isHexDigit(data[3]) && isHexDigit(data[4]) && isHexDigit(data[5]) && isHexDigit(data[6]) && isHexDigit(data[7]));\n stream = new _stream.Stream(isBinary ? decrypt(data, EEXEC_ENCRYPT_KEY, 4) : decryptAscii(data, EEXEC_ENCRYPT_KEY, 4));\n }\n\n this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n this.stream = stream;\n this.nextChar();\n }\n\n Type1Parser.prototype = {\n readNumberArray: function Type1Parser_readNumberArray() {\n this.getToken();\n var array = [];\n\n while (true) {\n var token = this.getToken();\n\n if (token === null || token === \"]\" || token === \"}\") {\n break;\n }\n\n array.push(parseFloat(token || 0));\n }\n\n return array;\n },\n readNumber: function Type1Parser_readNumber() {\n var token = this.getToken();\n return parseFloat(token || 0);\n },\n readInt: function Type1Parser_readInt() {\n var token = this.getToken();\n return parseInt(token || 0, 10) | 0;\n },\n readBoolean: function Type1Parser_readBoolean() {\n var token = this.getToken();\n return token === \"true\" ? 1 : 0;\n },\n nextChar: function Type1_nextChar() {\n return this.currentChar = this.stream.getByte();\n },\n getToken: function Type1Parser_getToken() {\n var comment = false;\n var ch = this.currentChar;\n\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 (!(0, _core_utils.isWhiteSpace)(ch)) {\n break;\n }\n\n ch = this.nextChar();\n }\n\n if (isSpecial(ch)) {\n this.nextChar();\n return String.fromCharCode(ch);\n }\n\n var token = \"\";\n\n do {\n token += String.fromCharCode(ch);\n ch = this.nextChar();\n } while (ch >= 0 && !(0, _core_utils.isWhiteSpace)(ch) && !isSpecial(ch));\n\n return token;\n },\n readCharStrings: function Type1Parser_readCharStrings(bytes, lenIV) {\n if (lenIV === -1) {\n return bytes;\n }\n\n return decrypt(bytes, CHAR_STRS_ENCRYPT_KEY, lenIV);\n },\n extractFontProgram: function Type1Parser_extractFontProgram(properties) {\n var stream = this.stream;\n var subrs = [],\n charstrings = [];\n var privateData = Object.create(null);\n privateData.lenIV = 4;\n var program = {\n subrs: [],\n charstrings: [],\n properties: {\n privateData: privateData\n }\n };\n var token, length, data, lenIV, encoded;\n\n while ((token = this.getToken()) !== null) {\n if (token !== \"/\") {\n continue;\n }\n\n token = this.getToken();\n\n switch (token) {\n case \"CharStrings\":\n this.getToken();\n this.getToken();\n this.getToken();\n this.getToken();\n\n while (true) {\n token = this.getToken();\n\n if (token === null || token === \"end\") {\n break;\n }\n\n if (token !== \"/\") {\n continue;\n }\n\n var glyph = this.getToken();\n length = this.readInt();\n this.getToken();\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();\n\n if (token === \"noaccess\") {\n this.getToken();\n }\n\n charstrings.push({\n glyph: glyph,\n encoded: encoded\n });\n }\n\n break;\n\n case \"Subrs\":\n this.readInt();\n this.getToken();\n\n while (this.getToken() === \"dup\") {\n var index = this.readInt();\n length = this.readInt();\n this.getToken();\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();\n\n if (token === \"noaccess\") {\n this.getToken();\n }\n\n subrs[index] = encoded;\n }\n\n break;\n\n case \"BlueValues\":\n case \"OtherBlues\":\n case \"FamilyBlues\":\n case \"FamilyOtherBlues\":\n var blueArray = this.readNumberArray();\n\n if (blueArray.length > 0 && blueArray.length % 2 === 0 && HINTING_ENABLED) {\n program.properties.privateData[token] = blueArray;\n }\n\n break;\n\n case \"StemSnapH\":\n case \"StemSnapV\":\n program.properties.privateData[token] = this.readNumberArray();\n break;\n\n case \"StdHW\":\n case \"StdVW\":\n program.properties.privateData[token] = this.readNumberArray()[0];\n break;\n\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\n case \"ForceBold\":\n program.properties.privateData[token] = this.readBoolean();\n break;\n }\n }\n\n for (var i = 0; i < charstrings.length; i++) {\n glyph = charstrings[i].glyph;\n encoded = charstrings[i].encoded;\n var charString = new Type1CharString();\n var error = charString.convert(encoded, subrs, this.seacAnalysisEnabled);\n var output = charString.output;\n\n if (error) {\n output = [14];\n }\n\n var charStringObject = {\n glyphName: glyph,\n charstring: output,\n width: charString.width,\n lsb: charString.lsb,\n seac: charString.seac\n };\n\n if (glyph === \".notdef\") {\n program.charstrings.unshift(charStringObject);\n } else {\n program.charstrings.push(charStringObject);\n }\n\n if (properties.builtInEncoding) {\n var _index = properties.builtInEncoding.indexOf(glyph);\n\n if (_index > -1 && properties.widths[_index] === undefined && _index >= properties.firstChar && _index <= properties.lastChar) {\n properties.widths[_index] = charString.width;\n }\n }\n }\n\n return program;\n },\n extractFontHeader: function Type1Parser_extractFontHeader(properties) {\n var token;\n\n while ((token = this.getToken()) !== null) {\n if (token !== \"/\") {\n continue;\n }\n\n token = this.getToken();\n\n switch (token) {\n case \"FontMatrix\":\n var matrix = this.readNumberArray();\n properties.fontMatrix = matrix;\n break;\n\n case \"Encoding\":\n var encodingArg = this.getToken();\n var encoding;\n\n if (!/^\\d+$/.test(encodingArg)) {\n encoding = (0, _encodings.getEncoding)(encodingArg);\n } else {\n encoding = [];\n var size = parseInt(encodingArg, 10) | 0;\n this.getToken();\n\n for (var j = 0; j < size; j++) {\n token = this.getToken();\n\n while (token !== \"dup\" && token !== \"def\") {\n token = this.getToken();\n\n if (token === null) {\n return;\n }\n }\n\n if (token === \"def\") {\n break;\n }\n\n var index = this.readInt();\n this.getToken();\n var glyph = this.getToken();\n encoding[index] = glyph;\n this.getToken();\n }\n }\n\n properties.builtInEncoding = encoding;\n break;\n\n case \"FontBBox\":\n var fontBBox = this.readNumberArray();\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 return Type1Parser;\n}();\n\nexports.Type1Parser = Type1Parser;\n\n/***/ }),\n/* 231 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getTilingPatternIR = getTilingPatternIR;\nexports.Pattern = void 0;\n\nvar _util = __w_pdfjs_require__(5);\n\nvar _colorspace = __w_pdfjs_require__(216);\n\nvar _primitives = __w_pdfjs_require__(198);\n\nvar _core_utils = __w_pdfjs_require__(201);\n\nvar ShadingType = {\n FUNCTION_BASED: 1,\n AXIAL: 2,\n RADIAL: 3,\n FREE_FORM_MESH: 4,\n LATTICE_FORM_MESH: 5,\n COONS_PATCH_MESH: 6,\n TENSOR_PATCH_MESH: 7\n};\n\nvar Pattern = function PatternClosure() {\n function Pattern() {\n (0, _util.unreachable)(\"should not call Pattern constructor\");\n }\n\n Pattern.prototype = {\n getPattern: function Pattern_getPattern(ctx) {\n (0, _util.unreachable)(\"Should not call Pattern.getStyle: \".concat(ctx));\n }\n };\n\n Pattern.parseShading = function (shading, matrix, xref, res, handler, pdfFunctionFactory) {\n var dict = (0, _primitives.isStream)(shading) ? shading.dict : shading;\n var type = dict.get(\"ShadingType\");\n\n try {\n switch (type) {\n case ShadingType.AXIAL:\n case ShadingType.RADIAL:\n return new Shadings.RadialAxial(dict, matrix, xref, res, pdfFunctionFactory);\n\n case ShadingType.FREE_FORM_MESH:\n case ShadingType.LATTICE_FORM_MESH:\n case ShadingType.COONS_PATCH_MESH:\n case ShadingType.TENSOR_PATCH_MESH:\n return new Shadings.Mesh(shading, matrix, xref, res, pdfFunctionFactory);\n\n default:\n throw new _util.FormatError(\"Unsupported ShadingType: \" + type);\n }\n } catch (ex) {\n if (ex instanceof _core_utils.MissingDataException) {\n throw ex;\n }\n\n handler.send(\"UnsupportedFeature\", {\n featureId: _util.UNSUPPORTED_FEATURES.shadingPattern\n });\n (0, _util.warn)(ex);\n return new Shadings.Dummy();\n }\n };\n\n return Pattern;\n}();\n\nexports.Pattern = Pattern;\nvar Shadings = {};\nShadings.SMALL_NUMBER = 1e-6;\n\nShadings.RadialAxial = function RadialAxialClosure() {\n function RadialAxial(dict, matrix, xref, res, pdfFunctionFactory) {\n this.matrix = matrix;\n this.coordsArr = dict.getArray(\"Coords\");\n this.shadingType = dict.get(\"ShadingType\");\n this.type = \"Pattern\";\n var cs = dict.get(\"ColorSpace\", \"CS\");\n cs = _colorspace.ColorSpace.parse(cs, xref, res, pdfFunctionFactory);\n this.cs = cs;\n var bbox = dict.getArray(\"BBox\");\n\n if (Array.isArray(bbox) && bbox.length === 4) {\n this.bbox = _util.Util.normalizeRect(bbox);\n } else {\n this.bbox = null;\n }\n\n var t0 = 0.0,\n t1 = 1.0;\n\n if (dict.has(\"Domain\")) {\n var domainArr = dict.getArray(\"Domain\");\n t0 = domainArr[0];\n t1 = domainArr[1];\n }\n\n var extendStart = false,\n extendEnd = false;\n\n if (dict.has(\"Extend\")) {\n var extendArr = dict.getArray(\"Extend\");\n extendStart = extendArr[0];\n extendEnd = extendArr[1];\n }\n\n if (this.shadingType === ShadingType.RADIAL && (!extendStart || !extendEnd)) {\n var x1 = this.coordsArr[0];\n var y1 = this.coordsArr[1];\n var r1 = this.coordsArr[2];\n var x2 = this.coordsArr[3];\n var y2 = this.coordsArr[4];\n var r2 = this.coordsArr[5];\n var distance = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));\n\n if (r1 <= r2 + distance && r2 <= r1 + distance) {\n (0, _util.warn)(\"Unsupported radial gradient.\");\n }\n }\n\n this.extendStart = extendStart;\n this.extendEnd = extendEnd;\n var fnObj = dict.get(\"Function\");\n var fn = pdfFunctionFactory.createFromArray(fnObj);\n var NUMBER_OF_SAMPLES = 10;\n var step = (t1 - t0) / NUMBER_OF_SAMPLES;\n var colorStops = this.colorStops = [];\n\n if (t0 >= t1 || step <= 0) {\n (0, _util.info)(\"Bad shading domain.\");\n return;\n }\n\n var color = new Float32Array(cs.numComps),\n ratio = new Float32Array(1);\n var rgbColor;\n\n for (var 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\n var cssColor = _util.Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]);\n\n colorStops.push([i / NUMBER_OF_SAMPLES, cssColor]);\n }\n\n var background = \"transparent\";\n\n if (dict.has(\"Background\")) {\n rgbColor = cs.getRgb(dict.get(\"Background\"), 0);\n background = _util.Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]);\n }\n\n if (!extendStart) {\n colorStops.unshift([0, background]);\n colorStops[1][0] += Shadings.SMALL_NUMBER;\n }\n\n if (!extendEnd) {\n colorStops[colorStops.length - 1][0] -= Shadings.SMALL_NUMBER;\n colorStops.push([1, background]);\n }\n\n this.colorStops = colorStops;\n }\n\n RadialAxial.prototype = {\n getIR: function RadialAxial_getIR() {\n var coordsArr = this.coordsArr;\n var shadingType = this.shadingType;\n var type, p0, p1, r0, r1;\n\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 (0, _util.unreachable)(\"getPattern type unknown: \".concat(shadingType));\n }\n\n var matrix = this.matrix;\n\n if (matrix) {\n p0 = _util.Util.applyTransform(p0, matrix);\n p1 = _util.Util.applyTransform(p1, matrix);\n\n if (shadingType === ShadingType.RADIAL) {\n var scale = _util.Util.singularValueDecompose2dScale(matrix);\n\n r0 *= scale[0];\n r1 *= scale[1];\n }\n }\n\n return [\"RadialAxial\", type, this.bbox, this.colorStops, p0, p1, r0, r1];\n }\n };\n return RadialAxial;\n}();\n\nShadings.Mesh = function MeshClosure() {\n function MeshStreamReader(stream, context) {\n this.stream = stream;\n this.context = context;\n this.buffer = 0;\n this.bufferLength = 0;\n var numComps = context.numComps;\n this.tmpCompsBuf = new Float32Array(numComps);\n var csNumComps = context.colorSpace.numComps;\n this.tmpCsCompsBuf = context.colorFn ? new Float32Array(csNumComps) : this.tmpCompsBuf;\n }\n\n MeshStreamReader.prototype = {\n get hasData() {\n if (this.stream.end) {\n return this.stream.pos < this.stream.end;\n }\n\n if (this.bufferLength > 0) {\n return true;\n }\n\n var nextByte = this.stream.getByte();\n\n if (nextByte < 0) {\n return false;\n }\n\n this.buffer = nextByte;\n this.bufferLength = 8;\n return true;\n },\n\n readBits: function MeshStreamReader_readBits(n) {\n var buffer = this.buffer;\n var bufferLength = this.bufferLength;\n\n if (n === 32) {\n if (bufferLength === 0) {\n return (this.stream.getByte() << 24 | this.stream.getByte() << 16 | this.stream.getByte() << 8 | this.stream.getByte()) >>> 0;\n }\n\n buffer = buffer << 24 | this.stream.getByte() << 16 | this.stream.getByte() << 8 | this.stream.getByte();\n var nextByte = this.stream.getByte();\n this.buffer = nextByte & (1 << bufferLength) - 1;\n return (buffer << 8 - bufferLength | (nextByte & 0xff) >> bufferLength) >>> 0;\n }\n\n if (n === 8 && bufferLength === 0) {\n return this.stream.getByte();\n }\n\n while (bufferLength < n) {\n buffer = buffer << 8 | this.stream.getByte();\n bufferLength += 8;\n }\n\n bufferLength -= n;\n this.bufferLength = bufferLength;\n this.buffer = buffer & (1 << bufferLength) - 1;\n return buffer >> bufferLength;\n },\n align: function MeshStreamReader_align() {\n this.buffer = 0;\n this.bufferLength = 0;\n },\n readFlag: function MeshStreamReader_readFlag() {\n return this.readBits(this.context.bitsPerFlag);\n },\n readCoordinate: function MeshStreamReader_readCoordinate() {\n var bitsPerCoordinate = this.context.bitsPerCoordinate;\n var xi = this.readBits(bitsPerCoordinate);\n var yi = this.readBits(bitsPerCoordinate);\n var decode = this.context.decode;\n var scale = bitsPerCoordinate < 32 ? 1 / ((1 << bitsPerCoordinate) - 1) : 2.3283064365386963e-10;\n return [xi * scale * (decode[1] - decode[0]) + decode[0], yi * scale * (decode[3] - decode[2]) + decode[2]];\n },\n readComponents: function MeshStreamReader_readComponents() {\n var numComps = this.context.numComps;\n var bitsPerComponent = this.context.bitsPerComponent;\n var scale = bitsPerComponent < 32 ? 1 / ((1 << bitsPerComponent) - 1) : 2.3283064365386963e-10;\n var decode = this.context.decode;\n var components = this.tmpCompsBuf;\n\n for (var i = 0, j = 4; i < numComps; i++, j += 2) {\n var ci = this.readBits(bitsPerComponent);\n components[i] = ci * scale * (decode[j + 1] - decode[j]) + decode[j];\n }\n\n var color = this.tmpCsCompsBuf;\n\n if (this.context.colorFn) {\n this.context.colorFn(components, 0, color, 0);\n }\n\n return this.context.colorSpace.getRgb(color, 0);\n }\n };\n\n function decodeType4Shading(mesh, reader) {\n var coords = mesh.coords;\n var colors = mesh.colors;\n var operators = [];\n var ps = [];\n var verticesLeft = 0;\n\n while (reader.hasData) {\n var f = reader.readFlag();\n var coord = reader.readCoordinate();\n var color = reader.readComponents();\n\n if (verticesLeft === 0) {\n if (!(0 <= f && f <= 2)) {\n throw new _util.FormatError(\"Unknown type4 flag\");\n }\n\n switch (f) {\n case 0:\n verticesLeft = 3;\n break;\n\n case 1:\n ps.push(ps[ps.length - 2], ps[ps.length - 1]);\n verticesLeft = 1;\n break;\n\n case 2:\n ps.push(ps[ps.length - 3], ps[ps.length - 1]);\n verticesLeft = 1;\n break;\n }\n\n operators.push(f);\n }\n\n ps.push(coords.length);\n coords.push(coord);\n colors.push(color);\n verticesLeft--;\n reader.align();\n }\n\n mesh.figures.push({\n type: \"triangles\",\n coords: new Int32Array(ps),\n colors: new Int32Array(ps)\n });\n }\n\n function decodeType5Shading(mesh, reader, verticesPerRow) {\n var coords = mesh.coords;\n var colors = mesh.colors;\n var ps = [];\n\n while (reader.hasData) {\n var coord = reader.readCoordinate();\n var color = reader.readComponents();\n ps.push(coords.length);\n coords.push(coord);\n colors.push(color);\n }\n\n mesh.figures.push({\n type: \"lattice\",\n coords: new Int32Array(ps),\n colors: new Int32Array(ps),\n verticesPerRow: verticesPerRow\n });\n }\n\n var MIN_SPLIT_PATCH_CHUNKS_AMOUNT = 3;\n var MAX_SPLIT_PATCH_CHUNKS_AMOUNT = 20;\n var TRIANGLE_DENSITY = 20;\n\n var getB = function getBClosure() {\n function buildB(count) {\n var lut = [];\n\n for (var i = 0; i <= count; i++) {\n var t = i / count,\n t_ = 1 - t;\n lut.push(new Float32Array([t_ * t_ * t_, 3 * t * t_ * t_, 3 * t * t * t_, t * t * t]));\n }\n\n return lut;\n }\n\n var cache = [];\n return function getB(count) {\n if (!cache[count]) {\n cache[count] = buildB(count);\n }\n\n return cache[count];\n };\n }();\n\n function buildFigureFromPatch(mesh, index) {\n var figure = mesh.figures[index];\n (0, _util.assert)(figure.type === \"patch\", \"Unexpected patch mesh figure\");\n var coords = mesh.coords,\n colors = mesh.colors;\n var pi = figure.coords;\n var ci = figure.colors;\n var figureMinX = Math.min(coords[pi[0]][0], coords[pi[3]][0], coords[pi[12]][0], coords[pi[15]][0]);\n var figureMinY = Math.min(coords[pi[0]][1], coords[pi[3]][1], coords[pi[12]][1], coords[pi[15]][1]);\n var figureMaxX = Math.max(coords[pi[0]][0], coords[pi[3]][0], coords[pi[12]][0], coords[pi[15]][0]);\n var figureMaxY = Math.max(coords[pi[0]][1], coords[pi[3]][1], coords[pi[12]][1], coords[pi[15]][1]);\n var splitXBy = Math.ceil((figureMaxX - figureMinX) * TRIANGLE_DENSITY / (mesh.bounds[2] - mesh.bounds[0]));\n splitXBy = Math.max(MIN_SPLIT_PATCH_CHUNKS_AMOUNT, Math.min(MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitXBy));\n var splitYBy = Math.ceil((figureMaxY - figureMinY) * TRIANGLE_DENSITY / (mesh.bounds[3] - mesh.bounds[1]));\n splitYBy = Math.max(MIN_SPLIT_PATCH_CHUNKS_AMOUNT, Math.min(MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitYBy));\n var verticesPerRow = splitXBy + 1;\n var figureCoords = new Int32Array((splitYBy + 1) * verticesPerRow);\n var figureColors = new Int32Array((splitYBy + 1) * verticesPerRow);\n var k = 0;\n var cl = new Uint8Array(3),\n cr = new Uint8Array(3);\n var c0 = colors[ci[0]],\n c1 = colors[ci[1]],\n c2 = colors[ci[2]],\n c3 = colors[ci[3]];\n var bRow = getB(splitYBy),\n bCol = getB(splitXBy);\n\n for (var row = 0; row <= splitYBy; row++) {\n cl[0] = (c0[0] * (splitYBy - row) + c2[0] * row) / splitYBy | 0;\n cl[1] = (c0[1] * (splitYBy - row) + c2[1] * row) / splitYBy | 0;\n cl[2] = (c0[2] * (splitYBy - row) + c2[2] * row) / splitYBy | 0;\n cr[0] = (c1[0] * (splitYBy - row) + c3[0] * row) / splitYBy | 0;\n cr[1] = (c1[1] * (splitYBy - row) + c3[1] * row) / splitYBy | 0;\n cr[2] = (c1[2] * (splitYBy - row) + c3[2] * row) / splitYBy | 0;\n\n for (var col = 0; col <= splitXBy; col++, k++) {\n if ((row === 0 || row === splitYBy) && (col === 0 || col === splitXBy)) {\n continue;\n }\n\n var x = 0,\n y = 0;\n var q = 0;\n\n for (var i = 0; i <= 3; i++) {\n for (var j = 0; j <= 3; j++, q++) {\n var m = bRow[row][i] * bCol[col][j];\n x += coords[pi[q]][0] * m;\n y += coords[pi[q]][1] * m;\n }\n }\n\n figureCoords[k] = coords.length;\n coords.push([x, y]);\n figureColors[k] = colors.length;\n var newColor = new Uint8Array(3);\n newColor[0] = (cl[0] * (splitXBy - col) + cr[0] * col) / splitXBy | 0;\n newColor[1] = (cl[1] * (splitXBy - col) + cr[1] * col) / splitXBy | 0;\n newColor[2] = (cl[2] * (splitXBy - col) + cr[2] * col) / splitXBy | 0;\n colors.push(newColor);\n }\n }\n\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 mesh.figures[index] = {\n type: \"lattice\",\n coords: figureCoords,\n colors: figureColors,\n verticesPerRow: verticesPerRow\n };\n }\n\n function decodeType6Shading(mesh, reader) {\n var coords = mesh.coords;\n var colors = mesh.colors;\n var ps = new Int32Array(16);\n var cs = new Int32Array(4);\n\n while (reader.hasData) {\n var f = reader.readFlag();\n\n if (!(0 <= f && f <= 3)) {\n throw new _util.FormatError(\"Unknown type6 flag\");\n }\n\n var i, ii;\n var pi = coords.length;\n\n for (i = 0, ii = f !== 0 ? 8 : 12; i < ii; i++) {\n coords.push(reader.readCoordinate());\n }\n\n var ci = colors.length;\n\n for (i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {\n colors.push(reader.readComponents());\n }\n\n var tmp1, tmp2, tmp3, tmp4;\n\n switch (f) {\n case 0:\n ps[12] = pi + 3;\n ps[13] = pi + 4;\n ps[14] = pi + 5;\n ps[15] = pi + 6;\n ps[8] = pi + 2;\n ps[11] = pi + 7;\n ps[4] = pi + 1;\n ps[7] = pi + 8;\n ps[0] = pi;\n ps[1] = pi + 11;\n ps[2] = pi + 10;\n ps[3] = pi + 9;\n cs[2] = ci + 1;\n cs[3] = ci + 2;\n cs[0] = ci;\n cs[1] = ci + 3;\n break;\n\n case 1:\n tmp1 = ps[12];\n tmp2 = ps[13];\n tmp3 = ps[14];\n tmp4 = ps[15];\n ps[12] = tmp4;\n ps[13] = pi + 0;\n ps[14] = pi + 1;\n ps[15] = pi + 2;\n ps[8] = tmp3;\n ps[11] = pi + 3;\n ps[4] = tmp2;\n ps[7] = pi + 4;\n ps[0] = tmp1;\n ps[1] = pi + 7;\n ps[2] = pi + 6;\n ps[3] = pi + 5;\n tmp1 = cs[2];\n tmp2 = cs[3];\n cs[2] = tmp2;\n cs[3] = ci;\n cs[0] = tmp1;\n cs[1] = ci + 1;\n break;\n\n case 2:\n tmp1 = ps[15];\n tmp2 = ps[11];\n ps[12] = ps[3];\n ps[13] = pi + 0;\n ps[14] = pi + 1;\n ps[15] = pi + 2;\n ps[8] = ps[7];\n ps[11] = pi + 3;\n ps[4] = tmp2;\n ps[7] = pi + 4;\n ps[0] = tmp1;\n ps[1] = pi + 7;\n ps[2] = pi + 6;\n ps[3] = pi + 5;\n tmp1 = cs[3];\n cs[2] = cs[1];\n cs[3] = ci;\n cs[0] = tmp1;\n cs[1] = ci + 1;\n break;\n\n case 3:\n ps[12] = ps[0];\n ps[13] = pi + 0;\n ps[14] = pi + 1;\n ps[15] = pi + 2;\n ps[8] = ps[1];\n ps[11] = pi + 3;\n ps[4] = ps[2];\n ps[7] = pi + 4;\n ps[0] = ps[3];\n ps[1] = pi + 7;\n ps[2] = pi + 6;\n ps[3] = pi + 5;\n cs[2] = cs[0];\n cs[3] = ci;\n cs[0] = cs[1];\n cs[1] = ci + 1;\n break;\n }\n\n ps[5] = coords.length;\n coords.push([(-4 * coords[ps[0]][0] - coords[ps[15]][0] + 6 * (coords[ps[4]][0] + coords[ps[1]][0]) - 2 * (coords[ps[12]][0] + coords[ps[3]][0]) + 3 * (coords[ps[13]][0] + coords[ps[7]][0])) / 9, (-4 * coords[ps[0]][1] - coords[ps[15]][1] + 6 * (coords[ps[4]][1] + coords[ps[1]][1]) - 2 * (coords[ps[12]][1] + coords[ps[3]][1]) + 3 * (coords[ps[13]][1] + coords[ps[7]][1])) / 9]);\n ps[6] = coords.length;\n coords.push([(-4 * coords[ps[3]][0] - coords[ps[12]][0] + 6 * (coords[ps[2]][0] + coords[ps[7]][0]) - 2 * (coords[ps[0]][0] + coords[ps[15]][0]) + 3 * (coords[ps[4]][0] + coords[ps[14]][0])) / 9, (-4 * coords[ps[3]][1] - coords[ps[12]][1] + 6 * (coords[ps[2]][1] + coords[ps[7]][1]) - 2 * (coords[ps[0]][1] + coords[ps[15]][1]) + 3 * (coords[ps[4]][1] + coords[ps[14]][1])) / 9]);\n ps[9] = coords.length;\n coords.push([(-4 * coords[ps[12]][0] - coords[ps[3]][0] + 6 * (coords[ps[8]][0] + coords[ps[13]][0]) - 2 * (coords[ps[0]][0] + coords[ps[15]][0]) + 3 * (coords[ps[11]][0] + coords[ps[1]][0])) / 9, (-4 * coords[ps[12]][1] - coords[ps[3]][1] + 6 * (coords[ps[8]][1] + coords[ps[13]][1]) - 2 * (coords[ps[0]][1] + coords[ps[15]][1]) + 3 * (coords[ps[11]][1] + coords[ps[1]][1])) / 9]);\n ps[10] = coords.length;\n coords.push([(-4 * coords[ps[15]][0] - coords[ps[0]][0] + 6 * (coords[ps[11]][0] + coords[ps[14]][0]) - 2 * (coords[ps[12]][0] + coords[ps[3]][0]) + 3 * (coords[ps[2]][0] + coords[ps[8]][0])) / 9, (-4 * coords[ps[15]][1] - coords[ps[0]][1] + 6 * (coords[ps[11]][1] + coords[ps[14]][1]) - 2 * (coords[ps[12]][1] + coords[ps[3]][1]) + 3 * (coords[ps[2]][1] + coords[ps[8]][1])) / 9]);\n mesh.figures.push({\n type: \"patch\",\n coords: new Int32Array(ps),\n colors: new Int32Array(cs)\n });\n }\n }\n\n function decodeType7Shading(mesh, reader) {\n var coords = mesh.coords;\n var colors = mesh.colors;\n var ps = new Int32Array(16);\n var cs = new Int32Array(4);\n\n while (reader.hasData) {\n var f = reader.readFlag();\n\n if (!(0 <= f && f <= 3)) {\n throw new _util.FormatError(\"Unknown type7 flag\");\n }\n\n var i, ii;\n var pi = coords.length;\n\n for (i = 0, ii = f !== 0 ? 12 : 16; i < ii; i++) {\n coords.push(reader.readCoordinate());\n }\n\n var ci = colors.length;\n\n for (i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {\n colors.push(reader.readComponents());\n }\n\n var tmp1, tmp2, tmp3, tmp4;\n\n switch (f) {\n case 0:\n ps[12] = pi + 3;\n ps[13] = pi + 4;\n ps[14] = pi + 5;\n ps[15] = pi + 6;\n ps[8] = pi + 2;\n ps[9] = pi + 13;\n ps[10] = pi + 14;\n ps[11] = pi + 7;\n ps[4] = pi + 1;\n ps[5] = pi + 12;\n ps[6] = pi + 15;\n ps[7] = pi + 8;\n ps[0] = pi;\n ps[1] = pi + 11;\n ps[2] = pi + 10;\n ps[3] = pi + 9;\n cs[2] = ci + 1;\n cs[3] = ci + 2;\n cs[0] = ci;\n cs[1] = ci + 3;\n break;\n\n case 1:\n tmp1 = ps[12];\n tmp2 = ps[13];\n tmp3 = ps[14];\n tmp4 = ps[15];\n ps[12] = tmp4;\n ps[13] = pi + 0;\n ps[14] = pi + 1;\n ps[15] = pi + 2;\n ps[8] = tmp3;\n ps[9] = pi + 9;\n ps[10] = pi + 10;\n ps[11] = pi + 3;\n ps[4] = tmp2;\n ps[5] = pi + 8;\n ps[6] = pi + 11;\n ps[7] = pi + 4;\n ps[0] = tmp1;\n ps[1] = pi + 7;\n ps[2] = pi + 6;\n ps[3] = pi + 5;\n tmp1 = cs[2];\n tmp2 = cs[3];\n cs[2] = tmp2;\n cs[3] = ci;\n cs[0] = tmp1;\n cs[1] = ci + 1;\n break;\n\n case 2:\n tmp1 = ps[15];\n tmp2 = ps[11];\n ps[12] = ps[3];\n ps[13] = pi + 0;\n ps[14] = pi + 1;\n ps[15] = pi + 2;\n ps[8] = ps[7];\n ps[9] = pi + 9;\n ps[10] = pi + 10;\n ps[11] = pi + 3;\n ps[4] = tmp2;\n ps[5] = pi + 8;\n ps[6] = pi + 11;\n ps[7] = pi + 4;\n ps[0] = tmp1;\n ps[1] = pi + 7;\n ps[2] = pi + 6;\n ps[3] = pi + 5;\n tmp1 = cs[3];\n cs[2] = cs[1];\n cs[3] = ci;\n cs[0] = tmp1;\n cs[1] = ci + 1;\n break;\n\n case 3:\n ps[12] = ps[0];\n ps[13] = pi + 0;\n ps[14] = pi + 1;\n ps[15] = pi + 2;\n ps[8] = ps[1];\n ps[9] = pi + 9;\n ps[10] = pi + 10;\n ps[11] = pi + 3;\n ps[4] = ps[2];\n ps[5] = pi + 8;\n ps[6] = pi + 11;\n ps[7] = pi + 4;\n ps[0] = ps[3];\n ps[1] = pi + 7;\n ps[2] = pi + 6;\n ps[3] = pi + 5;\n cs[2] = cs[0];\n cs[3] = ci;\n cs[0] = cs[1];\n cs[1] = ci + 1;\n break;\n }\n\n mesh.figures.push({\n type: \"patch\",\n coords: new Int32Array(ps),\n colors: new Int32Array(cs)\n });\n }\n }\n\n function updateBounds(mesh) {\n var minX = mesh.coords[0][0],\n minY = mesh.coords[0][1],\n maxX = minX,\n maxY = minY;\n\n for (var i = 1, ii = mesh.coords.length; i < ii; i++) {\n var x = mesh.coords[i][0],\n y = mesh.coords[i][1];\n minX = minX > x ? x : minX;\n minY = minY > y ? y : minY;\n maxX = maxX < x ? x : maxX;\n maxY = maxY < y ? y : maxY;\n }\n\n mesh.bounds = [minX, minY, maxX, maxY];\n }\n\n function packData(mesh) {\n var i, ii, j, jj;\n var coords = mesh.coords;\n var coordsPacked = new Float32Array(coords.length * 2);\n\n for (i = 0, j = 0, ii = coords.length; i < ii; i++) {\n var xy = coords[i];\n coordsPacked[j++] = xy[0];\n coordsPacked[j++] = xy[1];\n }\n\n mesh.coords = coordsPacked;\n var colors = mesh.colors;\n var colorsPacked = new Uint8Array(colors.length * 3);\n\n for (i = 0, j = 0, ii = colors.length; i < ii; i++) {\n var c = colors[i];\n colorsPacked[j++] = c[0];\n colorsPacked[j++] = c[1];\n colorsPacked[j++] = c[2];\n }\n\n mesh.colors = colorsPacked;\n var figures = mesh.figures;\n\n for (i = 0, ii = figures.length; i < ii; i++) {\n var figure = figures[i],\n ps = figure.coords,\n cs = figure.colors;\n\n for (j = 0, jj = ps.length; j < jj; j++) {\n ps[j] *= 2;\n cs[j] *= 3;\n }\n }\n }\n\n function Mesh(stream, matrix, xref, res, pdfFunctionFactory) {\n if (!(0, _primitives.isStream)(stream)) {\n throw new _util.FormatError(\"Mesh data is not a stream\");\n }\n\n var dict = stream.dict;\n this.matrix = matrix;\n this.shadingType = dict.get(\"ShadingType\");\n this.type = \"Pattern\";\n var bbox = dict.getArray(\"BBox\");\n\n if (Array.isArray(bbox) && bbox.length === 4) {\n this.bbox = _util.Util.normalizeRect(bbox);\n } else {\n this.bbox = null;\n }\n\n var cs = dict.get(\"ColorSpace\", \"CS\");\n cs = _colorspace.ColorSpace.parse(cs, xref, res, pdfFunctionFactory);\n this.cs = cs;\n this.background = dict.has(\"Background\") ? cs.getRgb(dict.get(\"Background\"), 0) : null;\n var fnObj = dict.get(\"Function\");\n var fn = fnObj ? pdfFunctionFactory.createFromArray(fnObj) : null;\n this.coords = [];\n this.colors = [];\n this.figures = [];\n var decodeContext = {\n bitsPerCoordinate: dict.get(\"BitsPerCoordinate\"),\n bitsPerComponent: dict.get(\"BitsPerComponent\"),\n bitsPerFlag: dict.get(\"BitsPerFlag\"),\n decode: dict.getArray(\"Decode\"),\n colorFn: fn,\n colorSpace: cs,\n numComps: fn ? 1 : cs.numComps\n };\n var reader = new MeshStreamReader(stream, decodeContext);\n var patchMesh = false;\n\n switch (this.shadingType) {\n case ShadingType.FREE_FORM_MESH:\n decodeType4Shading(this, reader);\n break;\n\n case ShadingType.LATTICE_FORM_MESH:\n var verticesPerRow = dict.get(\"VerticesPerRow\") | 0;\n\n if (verticesPerRow < 2) {\n throw new _util.FormatError(\"Invalid VerticesPerRow\");\n }\n\n decodeType5Shading(this, reader, verticesPerRow);\n break;\n\n case ShadingType.COONS_PATCH_MESH:\n decodeType6Shading(this, reader);\n patchMesh = true;\n break;\n\n case ShadingType.TENSOR_PATCH_MESH:\n decodeType7Shading(this, reader);\n patchMesh = true;\n break;\n\n default:\n (0, _util.unreachable)(\"Unsupported mesh type.\");\n break;\n }\n\n if (patchMesh) {\n updateBounds(this);\n\n for (var i = 0, ii = this.figures.length; i < ii; i++) {\n buildFigureFromPatch(this, i);\n }\n }\n\n updateBounds(this);\n packData(this);\n }\n\n Mesh.prototype = {\n getIR: function Mesh_getIR() {\n return [\"Mesh\", this.shadingType, this.coords, this.colors, this.figures, this.bounds, this.matrix, this.bbox, this.background];\n }\n };\n return Mesh;\n}();\n\nShadings.Dummy = function DummyClosure() {\n function Dummy() {\n this.type = \"Pattern\";\n }\n\n Dummy.prototype = {\n getIR: function Dummy_getIR() {\n return [\"Dummy\"];\n }\n };\n return Dummy;\n}();\n\nfunction getTilingPatternIR(operatorList, dict, args) {\n var matrix = dict.getArray(\"Matrix\");\n\n var bbox = _util.Util.normalizeRect(dict.getArray(\"BBox\"));\n\n var xstep = dict.get(\"XStep\");\n var ystep = dict.get(\"YStep\");\n var paintType = dict.get(\"PaintType\");\n var tilingType = dict.get(\"TilingType\");\n\n if (bbox[2] - bbox[0] === 0 || bbox[3] - bbox[1] === 0) {\n throw new _util.FormatError(\"Invalid getTilingPatternIR /BBox array: [\".concat(bbox, \"].\"));\n }\n\n return [\"TilingPattern\", args, operatorList, matrix, bbox, xstep, ystep, paintType, tilingType];\n}\n\n/***/ }),\n/* 232 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.bidi = bidi;\n\nvar _util = __w_pdfjs_require__(5);\n\nvar baseTypes = [\"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"S\", \"B\", \"S\", \"WS\", \"B\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"B\", \"B\", \"B\", \"S\", \"WS\", \"ON\", \"ON\", \"ET\", \"ET\", \"ET\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"ES\", \"CS\", \"ES\", \"CS\", \"CS\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"CS\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"ON\", \"ON\", \"ON\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"B\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"CS\", \"ON\", \"ET\", \"ET\", \"ET\", \"ET\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"ON\", \"ON\", \"BN\", \"ON\", \"ON\", \"ET\", \"ET\", \"EN\", \"EN\", \"ON\", \"L\", \"ON\", \"ON\", \"ON\", \"EN\", \"L\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\"];\nvar arabicTypes = [\"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"ON\", \"ON\", \"AL\", \"ET\", \"ET\", \"AL\", \"CS\", \"AL\", \"ON\", \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"ET\", \"AN\", \"AN\", \"AL\", \"AL\", \"AL\", \"NSM\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AN\", \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\"];\n\nfunction isOdd(i) {\n return (i & 1) !== 0;\n}\n\nfunction isEven(i) {\n return (i & 1) === 0;\n}\n\nfunction findUnequal(arr, start, value) {\n for (var j = start, jj = arr.length; j < jj; ++j) {\n if (arr[j] !== value) {\n return j;\n }\n }\n\n return j;\n}\n\nfunction setValues(arr, start, end, value) {\n for (var j = start; j < end; ++j) {\n arr[j] = value;\n }\n}\n\nfunction reverseValues(arr, start, end) {\n for (var i = start, j = end - 1; i < j; ++i, --j) {\n var temp = arr[i];\n arr[i] = arr[j];\n arr[j] = temp;\n }\n}\n\nfunction createBidiText(str, isLTR) {\n var vertical = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var dir = \"ltr\";\n\n if (vertical) {\n dir = \"ttb\";\n } else if (!isLTR) {\n dir = \"rtl\";\n }\n\n return {\n str: str,\n dir: dir\n };\n}\n\nvar chars = [];\nvar types = [];\n\nfunction bidi(str, startLevel, vertical) {\n var isLTR = true;\n var strLength = str.length;\n\n if (strLength === 0 || vertical) {\n return createBidiText(str, isLTR, vertical);\n }\n\n chars.length = strLength;\n types.length = strLength;\n var numBidi = 0;\n var i, ii;\n\n for (i = 0; i < strLength; ++i) {\n chars[i] = str.charAt(i);\n var charCode = str.charCodeAt(i);\n var charType = \"L\";\n\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\n if (!charType) {\n (0, _util.warn)(\"Bidi: invalid Unicode character \" + charCode.toString(16));\n }\n } else if (0x0700 <= charCode && charCode <= 0x08ac) {\n charType = \"AL\";\n }\n\n if (charType === \"R\" || charType === \"AL\" || charType === \"AN\") {\n numBidi++;\n }\n\n types[i] = charType;\n }\n\n if (numBidi === 0) {\n isLTR = true;\n return createBidiText(str, isLTR);\n }\n\n if (startLevel === -1) {\n if (numBidi / strLength < 0.3) {\n isLTR = true;\n startLevel = 0;\n } else {\n isLTR = false;\n startLevel = 1;\n }\n }\n\n var levels = [];\n\n for (i = 0; i < strLength; ++i) {\n levels[i] = startLevel;\n }\n\n var e = isOdd(startLevel) ? \"R\" : \"L\";\n var sor = e;\n var eor = sor;\n var lastType = sor;\n\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 lastType = sor;\n var t;\n\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n\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 for (i = 0; i < strLength; ++i) {\n t = types[i];\n\n if (t === \"AL\") {\n types[i] = \"R\";\n }\n }\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\n if (types[i] === \"CS\" && (types[i - 1] === \"EN\" || types[i - 1] === \"AN\") && types[i + 1] === types[i - 1]) {\n types[i] = types[i - 1];\n }\n }\n\n for (i = 0; i < strLength; ++i) {\n if (types[i] === \"EN\") {\n var j;\n\n for (j = i - 1; j >= 0; --j) {\n if (types[j] !== \"ET\") {\n break;\n }\n\n types[j] = \"EN\";\n }\n\n for (j = i + 1; j < strLength; ++j) {\n if (types[j] !== \"ET\") {\n break;\n }\n\n types[j] = \"EN\";\n }\n }\n }\n\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n\n if (t === \"WS\" || t === \"ES\" || t === \"ET\" || t === \"CS\") {\n types[i] = \"ON\";\n }\n }\n\n lastType = sor;\n\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n\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 for (i = 0; i < strLength; ++i) {\n if (types[i] === \"ON\") {\n var end = findUnequal(types, i + 1, \"ON\");\n var before = sor;\n\n if (i > 0) {\n before = types[i - 1];\n }\n\n var after = eor;\n\n if (end + 1 < strLength) {\n after = types[end + 1];\n }\n\n if (before !== \"L\") {\n before = \"R\";\n }\n\n if (after !== \"L\") {\n after = \"R\";\n }\n\n if (before === after) {\n setValues(types, i, end, before);\n }\n\n i = end - 1;\n }\n }\n\n for (i = 0; i < strLength; ++i) {\n if (types[i] === \"ON\") {\n types[i] = e;\n }\n }\n\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n\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 if (t === \"L\" || t === \"AN\" || t === \"EN\") {\n levels[i] += 1;\n }\n }\n }\n\n var highestLevel = -1;\n var lowestOddLevel = 99;\n var level;\n\n for (i = 0, ii = levels.length; i < ii; ++i) {\n level = levels[i];\n\n if (highestLevel < level) {\n highestLevel = level;\n }\n\n if (lowestOddLevel > level && isOdd(level)) {\n lowestOddLevel = level;\n }\n }\n\n for (level = highestLevel; level >= lowestOddLevel; --level) {\n var start = -1;\n\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\n if (start >= 0) {\n reverseValues(chars, start, levels.length);\n }\n }\n\n for (i = 0, ii = chars.length; i < ii; ++i) {\n var ch = chars[i];\n\n if (ch === \"<\" || ch === \">\") {\n chars[i] = \"\";\n }\n }\n\n return createBidiText(chars.join(\"\"), isLTR);\n}\n\n/***/ }),\n/* 233 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getMetrics = void 0;\n\nvar _core_utils = __w_pdfjs_require__(201);\n\nvar getMetrics = (0, _core_utils.getLookupTableFactory)(function (t) {\n t.Courier = 600;\n t[\"Courier-Bold\"] = 600;\n t[\"Courier-BoldOblique\"] = 600;\n t[\"Courier-Oblique\"] = 600;\n t.Helvetica = (0, _core_utils.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 t[\"Helvetica-Bold\"] = (0, _core_utils.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 t[\"Helvetica-BoldOblique\"] = (0, _core_utils.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 t[\"Helvetica-Oblique\"] = (0, _core_utils.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 t.Symbol = (0, _core_utils.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 t[\"Times-Roman\"] = (0, _core_utils.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 t[\"Times-Bold\"] = (0, _core_utils.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 t[\"Times-BoldItalic\"] = (0, _core_utils.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 t[\"Times-Italic\"] = (0, _core_utils.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 t.ZapfDingbats = (0, _core_utils.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});\nexports.getMetrics = getMetrics;\n\n/***/ }),\n/* 234 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isPDFFunction = isPDFFunction;\nexports.PostScriptCompiler = exports.PostScriptEvaluator = exports.PDFFunctionFactory = void 0;\n\nvar _util = __w_pdfjs_require__(5);\n\nvar _primitives = __w_pdfjs_require__(198);\n\nvar _ps_parser = __w_pdfjs_require__(235);\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar PDFFunctionFactory = /*#__PURE__*/function () {\n function PDFFunctionFactory(_ref) {\n var xref = _ref.xref,\n _ref$isEvalSupported = _ref.isEvalSupported,\n isEvalSupported = _ref$isEvalSupported === void 0 ? true : _ref$isEvalSupported;\n\n _classCallCheck(this, PDFFunctionFactory);\n\n this.xref = xref;\n this.isEvalSupported = isEvalSupported !== false;\n }\n\n _createClass(PDFFunctionFactory, [{\n key: \"create\",\n value: function create(fn) {\n return PDFFunction.parse({\n xref: this.xref,\n isEvalSupported: this.isEvalSupported,\n fn: fn\n });\n }\n }, {\n key: \"createFromArray\",\n value: function createFromArray(fnObj) {\n return PDFFunction.parseArray({\n xref: this.xref,\n isEvalSupported: this.isEvalSupported,\n fnObj: fnObj\n });\n }\n }]);\n\n return PDFFunctionFactory;\n}();\n\nexports.PDFFunctionFactory = PDFFunctionFactory;\n\nfunction toNumberArray(arr) {\n if (!Array.isArray(arr)) {\n return null;\n }\n\n var length = arr.length;\n\n for (var i = 0; i < length; i++) {\n if (typeof arr[i] !== \"number\") {\n var result = new Array(length);\n\n for (var j = 0; j < length; j++) {\n result[j] = +arr[j];\n }\n\n return result;\n }\n }\n\n return arr;\n}\n\nvar PDFFunction = function PDFFunctionClosure() {\n var CONSTRUCT_SAMPLED = 0;\n var CONSTRUCT_INTERPOLATED = 2;\n var CONSTRUCT_STICHED = 3;\n var CONSTRUCT_POSTSCRIPT = 4;\n return {\n getSampleArray: function getSampleArray(size, outputSize, bps, stream) {\n var i, ii;\n var length = 1;\n\n for (i = 0, ii = size.length; i < ii; i++) {\n length *= size[i];\n }\n\n length *= outputSize;\n var array = new Array(length);\n var codeSize = 0;\n var codeBuf = 0;\n var sampleMul = 1.0 / (Math.pow(2.0, bps) - 1);\n var strBytes = stream.getBytes((length * bps + 7) / 8);\n var strIdx = 0;\n\n for (i = 0; i < length; i++) {\n while (codeSize < bps) {\n codeBuf <<= 8;\n codeBuf |= strBytes[strIdx++];\n codeSize += 8;\n }\n\n codeSize -= bps;\n array[i] = (codeBuf >> codeSize) * sampleMul;\n codeBuf &= (1 << codeSize) - 1;\n }\n\n return array;\n },\n getIR: function getIR(_ref2) {\n var xref = _ref2.xref,\n isEvalSupported = _ref2.isEvalSupported,\n fn = _ref2.fn;\n var dict = fn.dict;\n\n if (!dict) {\n dict = fn;\n }\n\n var types = [this.constructSampled, null, this.constructInterpolated, this.constructStiched, this.constructPostScript];\n var typeNum = dict.get(\"FunctionType\");\n var typeFn = types[typeNum];\n\n if (!typeFn) {\n throw new _util.FormatError(\"Unknown type of function\");\n }\n\n return typeFn.call(this, {\n xref: xref,\n isEvalSupported: isEvalSupported,\n fn: fn,\n dict: dict\n });\n },\n fromIR: function fromIR(_ref3) {\n var xref = _ref3.xref,\n isEvalSupported = _ref3.isEvalSupported,\n IR = _ref3.IR;\n var type = IR[0];\n\n switch (type) {\n case CONSTRUCT_SAMPLED:\n return this.constructSampledFromIR({\n xref: xref,\n isEvalSupported: isEvalSupported,\n IR: IR\n });\n\n case CONSTRUCT_INTERPOLATED:\n return this.constructInterpolatedFromIR({\n xref: xref,\n isEvalSupported: isEvalSupported,\n IR: IR\n });\n\n case CONSTRUCT_STICHED:\n return this.constructStichedFromIR({\n xref: xref,\n isEvalSupported: isEvalSupported,\n IR: IR\n });\n\n default:\n return this.constructPostScriptFromIR({\n xref: xref,\n isEvalSupported: isEvalSupported,\n IR: IR\n });\n }\n },\n parse: function parse(_ref4) {\n var xref = _ref4.xref,\n isEvalSupported = _ref4.isEvalSupported,\n fn = _ref4.fn;\n var IR = this.getIR({\n xref: xref,\n isEvalSupported: isEvalSupported,\n fn: fn\n });\n return this.fromIR({\n xref: xref,\n isEvalSupported: isEvalSupported,\n IR: IR\n });\n },\n parseArray: function parseArray(_ref5) {\n var xref = _ref5.xref,\n isEvalSupported = _ref5.isEvalSupported,\n fnObj = _ref5.fnObj;\n\n if (!Array.isArray(fnObj)) {\n return this.parse({\n xref: xref,\n isEvalSupported: isEvalSupported,\n fn: fnObj\n });\n }\n\n var fnArray = [];\n\n for (var j = 0, jj = fnObj.length; j < jj; j++) {\n fnArray.push(this.parse({\n xref: xref,\n isEvalSupported: isEvalSupported,\n fn: xref.fetchIfRef(fnObj[j])\n }));\n }\n\n return function (src, srcOffset, dest, destOffset) {\n for (var i = 0, ii = fnArray.length; i < ii; i++) {\n fnArray[i](src, srcOffset, dest, destOffset + i);\n }\n };\n },\n constructSampled: function constructSampled(_ref6) {\n var xref = _ref6.xref,\n isEvalSupported = _ref6.isEvalSupported,\n fn = _ref6.fn,\n dict = _ref6.dict;\n\n function toMultiArray(arr) {\n var inputLength = arr.length;\n var out = [];\n var index = 0;\n\n for (var i = 0; i < inputLength; i += 2) {\n out[index] = [arr[i], arr[i + 1]];\n ++index;\n }\n\n return out;\n }\n\n var domain = toNumberArray(dict.getArray(\"Domain\"));\n var range = toNumberArray(dict.getArray(\"Range\"));\n\n if (!domain || !range) {\n throw new _util.FormatError(\"No domain or range\");\n }\n\n var inputSize = domain.length / 2;\n var outputSize = range.length / 2;\n domain = toMultiArray(domain);\n range = toMultiArray(range);\n var size = toNumberArray(dict.getArray(\"Size\"));\n var bps = dict.get(\"BitsPerSample\");\n var order = dict.get(\"Order\") || 1;\n\n if (order !== 1) {\n (0, _util.info)(\"No support for cubic spline interpolation: \" + order);\n }\n\n var encode = toNumberArray(dict.getArray(\"Encode\"));\n\n if (!encode) {\n encode = [];\n\n for (var i = 0; i < inputSize; ++i) {\n encode.push([0, size[i] - 1]);\n }\n } else {\n encode = toMultiArray(encode);\n }\n\n var decode = toNumberArray(dict.getArray(\"Decode\"));\n\n if (!decode) {\n decode = range;\n } else {\n decode = toMultiArray(decode);\n }\n\n var samples = this.getSampleArray(size, outputSize, bps, fn);\n return [CONSTRUCT_SAMPLED, inputSize, domain, encode, decode, samples, size, outputSize, Math.pow(2, bps) - 1, range];\n },\n constructSampledFromIR: function constructSampledFromIR(_ref7) {\n var xref = _ref7.xref,\n isEvalSupported = _ref7.isEvalSupported,\n IR = _ref7.IR;\n\n function interpolate(x, xmin, xmax, ymin, ymax) {\n return ymin + (x - xmin) * ((ymax - ymin) / (xmax - xmin));\n }\n\n return function constructSampledFromIRResult(src, srcOffset, dest, destOffset) {\n var m = IR[1];\n var domain = IR[2];\n var encode = IR[3];\n var decode = IR[4];\n var samples = IR[5];\n var size = IR[6];\n var n = IR[7];\n var range = IR[9];\n var cubeVertices = 1 << m;\n var cubeN = new Float64Array(cubeVertices);\n var cubeVertex = new Uint32Array(cubeVertices);\n var i, j;\n\n for (j = 0; j < cubeVertices; j++) {\n cubeN[j] = 1;\n }\n\n var k = n,\n pos = 1;\n\n for (i = 0; i < m; ++i) {\n var domain_2i = domain[i][0];\n var domain_2i_1 = domain[i][1];\n var xi = Math.min(Math.max(src[srcOffset + i], domain_2i), domain_2i_1);\n var e = interpolate(xi, domain_2i, domain_2i_1, encode[i][0], encode[i][1]);\n var size_i = size[i];\n e = Math.min(Math.max(e, 0), size_i - 1);\n var e0 = e < size_i - 1 ? Math.floor(e) : e - 1;\n var n0 = e0 + 1 - e;\n var n1 = e - e0;\n var offset0 = e0 * k;\n var offset1 = offset0 + k;\n\n for (j = 0; j < cubeVertices; j++) {\n if (j & pos) {\n cubeN[j] *= n1;\n cubeVertex[j] += offset1;\n } else {\n cubeN[j] *= n0;\n cubeVertex[j] += offset0;\n }\n }\n\n k *= size_i;\n pos <<= 1;\n }\n\n for (j = 0; j < n; ++j) {\n var rj = 0;\n\n for (i = 0; i < cubeVertices; i++) {\n rj += samples[cubeVertex[i] + j] * cubeN[i];\n }\n\n rj = interpolate(rj, 0, 1, decode[j][0], decode[j][1]);\n dest[destOffset + j] = Math.min(Math.max(rj, range[j][0]), range[j][1]);\n }\n };\n },\n constructInterpolated: function constructInterpolated(_ref8) {\n var xref = _ref8.xref,\n isEvalSupported = _ref8.isEvalSupported,\n fn = _ref8.fn,\n dict = _ref8.dict;\n var c0 = toNumberArray(dict.getArray(\"C0\")) || [0];\n var c1 = toNumberArray(dict.getArray(\"C1\")) || [1];\n var n = dict.get(\"N\");\n var length = c0.length;\n var diff = [];\n\n for (var i = 0; i < length; ++i) {\n diff.push(c1[i] - c0[i]);\n }\n\n return [CONSTRUCT_INTERPOLATED, c0, diff, n];\n },\n constructInterpolatedFromIR: function constructInterpolatedFromIR(_ref9) {\n var xref = _ref9.xref,\n isEvalSupported = _ref9.isEvalSupported,\n IR = _ref9.IR;\n var c0 = IR[1];\n var diff = IR[2];\n var n = IR[3];\n var length = diff.length;\n return function constructInterpolatedFromIRResult(src, srcOffset, dest, destOffset) {\n var x = n === 1 ? src[srcOffset] : Math.pow(src[srcOffset], n);\n\n for (var j = 0; j < length; ++j) {\n dest[destOffset + j] = c0[j] + x * diff[j];\n }\n };\n },\n constructStiched: function constructStiched(_ref10) {\n var xref = _ref10.xref,\n isEvalSupported = _ref10.isEvalSupported,\n fn = _ref10.fn,\n dict = _ref10.dict;\n var domain = toNumberArray(dict.getArray(\"Domain\"));\n\n if (!domain) {\n throw new _util.FormatError(\"No domain\");\n }\n\n var inputSize = domain.length / 2;\n\n if (inputSize !== 1) {\n throw new _util.FormatError(\"Bad domain for stiched function\");\n }\n\n var fnRefs = dict.get(\"Functions\");\n var fns = [];\n\n for (var i = 0, ii = fnRefs.length; i < ii; ++i) {\n fns.push(this.parse({\n xref: xref,\n isEvalSupported: isEvalSupported,\n fn: xref.fetchIfRef(fnRefs[i])\n }));\n }\n\n var bounds = toNumberArray(dict.getArray(\"Bounds\"));\n var encode = toNumberArray(dict.getArray(\"Encode\"));\n return [CONSTRUCT_STICHED, domain, bounds, encode, fns];\n },\n constructStichedFromIR: function constructStichedFromIR(_ref11) {\n var xref = _ref11.xref,\n isEvalSupported = _ref11.isEvalSupported,\n IR = _ref11.IR;\n var domain = IR[1];\n var bounds = IR[2];\n var encode = IR[3];\n var fns = IR[4];\n var tmpBuf = new Float32Array(1);\n return function constructStichedFromIRResult(src, srcOffset, dest, destOffset) {\n var clip = function constructStichedFromIRClip(v, min, max) {\n if (v > max) {\n v = max;\n } else if (v < min) {\n v = min;\n }\n\n return v;\n };\n\n var v = clip(src[srcOffset], domain[0], domain[1]);\n\n for (var i = 0, ii = bounds.length; i < ii; ++i) {\n if (v < bounds[i]) {\n break;\n }\n }\n\n var dmin = domain[0];\n\n if (i > 0) {\n dmin = bounds[i - 1];\n }\n\n var dmax = domain[1];\n\n if (i < bounds.length) {\n dmax = bounds[i];\n }\n\n var rmin = encode[2 * i];\n var rmax = encode[2 * i + 1];\n tmpBuf[0] = dmin === dmax ? rmin : rmin + (v - dmin) * (rmax - rmin) / (dmax - dmin);\n fns[i](tmpBuf, 0, dest, destOffset);\n };\n },\n constructPostScript: function constructPostScript(_ref12) {\n var xref = _ref12.xref,\n isEvalSupported = _ref12.isEvalSupported,\n fn = _ref12.fn,\n dict = _ref12.dict;\n var domain = toNumberArray(dict.getArray(\"Domain\"));\n var range = toNumberArray(dict.getArray(\"Range\"));\n\n if (!domain) {\n throw new _util.FormatError(\"No domain.\");\n }\n\n if (!range) {\n throw new _util.FormatError(\"No range.\");\n }\n\n var lexer = new _ps_parser.PostScriptLexer(fn);\n var parser = new _ps_parser.PostScriptParser(lexer);\n var code = parser.parse();\n return [CONSTRUCT_POSTSCRIPT, domain, range, code];\n },\n constructPostScriptFromIR: function constructPostScriptFromIR(_ref13) {\n var xref = _ref13.xref,\n isEvalSupported = _ref13.isEvalSupported,\n IR = _ref13.IR;\n var domain = IR[1];\n var range = IR[2];\n var code = IR[3];\n\n if (isEvalSupported && _util.IsEvalSupportedCached.value) {\n var compiled = new PostScriptCompiler().compile(code, domain, range);\n\n if (compiled) {\n return new Function(\"src\", \"srcOffset\", \"dest\", \"destOffset\", compiled);\n }\n }\n\n (0, _util.info)(\"Unable to compile PS function\");\n var numOutputs = range.length >> 1;\n var numInputs = domain.length >> 1;\n var evaluator = new PostScriptEvaluator(code);\n var cache = Object.create(null);\n var MAX_CACHE_SIZE = 2048 * 4;\n var cache_available = MAX_CACHE_SIZE;\n var tmpBuf = new Float32Array(numInputs);\n return function constructPostScriptFromIRResult(src, srcOffset, dest, destOffset) {\n var i, value;\n var key = \"\";\n var input = tmpBuf;\n\n for (i = 0; i < numInputs; i++) {\n value = src[srcOffset + i];\n input[i] = value;\n key += value + \"_\";\n }\n\n var cachedValue = cache[key];\n\n if (cachedValue !== undefined) {\n dest.set(cachedValue, destOffset);\n return;\n }\n\n var output = new Float32Array(numOutputs);\n var stack = evaluator.execute(input);\n var stackIndex = stack.length - numOutputs;\n\n for (i = 0; i < numOutputs; i++) {\n value = stack[stackIndex + i];\n var bound = range[i * 2];\n\n if (value < bound) {\n value = bound;\n } else {\n bound = range[i * 2 + 1];\n\n if (value > bound) {\n value = bound;\n }\n }\n\n output[i] = value;\n }\n\n if (cache_available > 0) {\n cache_available--;\n cache[key] = output;\n }\n\n dest.set(output, destOffset);\n };\n }\n };\n}();\n\nfunction isPDFFunction(v) {\n var fnDict;\n\n if (_typeof(v) !== \"object\") {\n return false;\n } else if ((0, _primitives.isDict)(v)) {\n fnDict = v;\n } else if ((0, _primitives.isStream)(v)) {\n fnDict = v.dict;\n } else {\n return false;\n }\n\n return fnDict.has(\"FunctionType\");\n}\n\nvar PostScriptStack = function PostScriptStackClosure() {\n var MAX_STACK_SIZE = 100;\n\n function PostScriptStack(initialStack) {\n this.stack = !initialStack ? [] : Array.prototype.slice.call(initialStack, 0);\n }\n\n PostScriptStack.prototype = {\n push: function PostScriptStack_push(value) {\n if (this.stack.length >= MAX_STACK_SIZE) {\n throw new Error(\"PostScript function stack overflow.\");\n }\n\n this.stack.push(value);\n },\n pop: function PostScriptStack_pop() {\n if (this.stack.length <= 0) {\n throw new Error(\"PostScript function stack underflow.\");\n }\n\n return this.stack.pop();\n },\n copy: function PostScriptStack_copy(n) {\n if (this.stack.length + n >= MAX_STACK_SIZE) {\n throw new Error(\"PostScript function stack overflow.\");\n }\n\n var stack = this.stack;\n\n for (var i = stack.length - n, j = n - 1; j >= 0; j--, i++) {\n stack.push(stack[i]);\n }\n },\n index: function PostScriptStack_index(n) {\n this.push(this.stack[this.stack.length - n - 1]);\n },\n roll: function PostScriptStack_roll(n, p) {\n var stack = this.stack;\n var l = stack.length - n;\n var r = stack.length - 1,\n c = l + (p - Math.floor(p / n) * n),\n i,\n j,\n t;\n\n for (i = l, j = r; i < j; i++, j--) {\n t = stack[i];\n stack[i] = stack[j];\n stack[j] = t;\n }\n\n for (i = l, j = c - 1; i < j; i++, j--) {\n t = stack[i];\n stack[i] = stack[j];\n stack[j] = t;\n }\n\n for (i = c, j = r; i < j; i++, j--) {\n t = stack[i];\n stack[i] = stack[j];\n stack[j] = t;\n }\n }\n };\n return PostScriptStack;\n}();\n\nvar PostScriptEvaluator = function PostScriptEvaluatorClosure() {\n function PostScriptEvaluator(operators) {\n this.operators = operators;\n }\n\n PostScriptEvaluator.prototype = {\n execute: function PostScriptEvaluator_execute(initialStack) {\n var stack = new PostScriptStack(initialStack);\n var counter = 0;\n var operators = this.operators;\n var length = operators.length;\n var operator, a, b;\n\n while (counter < length) {\n operator = operators[counter++];\n\n if (typeof operator === \"number\") {\n stack.push(operator);\n continue;\n }\n\n switch (operator) {\n case \"jz\":\n b = stack.pop();\n a = stack.pop();\n\n if (!a) {\n counter = b;\n }\n\n break;\n\n case \"j\":\n a = stack.pop();\n counter = a;\n break;\n\n case \"abs\":\n a = stack.pop();\n stack.push(Math.abs(a));\n break;\n\n case \"add\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a + b);\n break;\n\n case \"and\":\n b = stack.pop();\n a = stack.pop();\n\n if ((0, _util.isBool)(a) && (0, _util.isBool)(b)) {\n stack.push(a && b);\n } else {\n stack.push(a & b);\n }\n\n break;\n\n case \"atan\":\n a = stack.pop();\n stack.push(Math.atan(a));\n break;\n\n case \"bitshift\":\n b = stack.pop();\n a = stack.pop();\n\n if (a > 0) {\n stack.push(a << b);\n } else {\n stack.push(a >> b);\n }\n\n break;\n\n case \"ceiling\":\n a = stack.pop();\n stack.push(Math.ceil(a));\n break;\n\n case \"copy\":\n a = stack.pop();\n stack.copy(a);\n break;\n\n case \"cos\":\n a = stack.pop();\n stack.push(Math.cos(a));\n break;\n\n case \"cvi\":\n a = stack.pop() | 0;\n stack.push(a);\n break;\n\n case \"cvr\":\n break;\n\n case \"div\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a / b);\n break;\n\n case \"dup\":\n stack.copy(1);\n break;\n\n case \"eq\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a === b);\n break;\n\n case \"exch\":\n stack.roll(2, 1);\n break;\n\n case \"exp\":\n b = stack.pop();\n a = stack.pop();\n stack.push(Math.pow(a, b));\n break;\n\n case \"false\":\n stack.push(false);\n break;\n\n case \"floor\":\n a = stack.pop();\n stack.push(Math.floor(a));\n break;\n\n case \"ge\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a >= b);\n break;\n\n case \"gt\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a > b);\n break;\n\n case \"idiv\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a / b | 0);\n break;\n\n case \"index\":\n a = stack.pop();\n stack.index(a);\n break;\n\n case \"le\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a <= b);\n break;\n\n case \"ln\":\n a = stack.pop();\n stack.push(Math.log(a));\n break;\n\n case \"log\":\n a = stack.pop();\n stack.push(Math.log(a) / Math.LN10);\n break;\n\n case \"lt\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a < b);\n break;\n\n case \"mod\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a % b);\n break;\n\n case \"mul\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a * b);\n break;\n\n case \"ne\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a !== b);\n break;\n\n case \"neg\":\n a = stack.pop();\n stack.push(-a);\n break;\n\n case \"not\":\n a = stack.pop();\n\n if ((0, _util.isBool)(a)) {\n stack.push(!a);\n } else {\n stack.push(~a);\n }\n\n break;\n\n case \"or\":\n b = stack.pop();\n a = stack.pop();\n\n if ((0, _util.isBool)(a) && (0, _util.isBool)(b)) {\n stack.push(a || b);\n } else {\n stack.push(a | b);\n }\n\n break;\n\n case \"pop\":\n stack.pop();\n break;\n\n case \"roll\":\n b = stack.pop();\n a = stack.pop();\n stack.roll(a, b);\n break;\n\n case \"round\":\n a = stack.pop();\n stack.push(Math.round(a));\n break;\n\n case \"sin\":\n a = stack.pop();\n stack.push(Math.sin(a));\n break;\n\n case \"sqrt\":\n a = stack.pop();\n stack.push(Math.sqrt(a));\n break;\n\n case \"sub\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a - b);\n break;\n\n case \"true\":\n stack.push(true);\n break;\n\n case \"truncate\":\n a = stack.pop();\n a = a < 0 ? Math.ceil(a) : Math.floor(a);\n stack.push(a);\n break;\n\n case \"xor\":\n b = stack.pop();\n a = stack.pop();\n\n if ((0, _util.isBool)(a) && (0, _util.isBool)(b)) {\n stack.push(a !== b);\n } else {\n stack.push(a ^ b);\n }\n\n break;\n\n default:\n throw new _util.FormatError(\"Unknown operator \".concat(operator));\n }\n }\n\n return stack.stack;\n }\n };\n return PostScriptEvaluator;\n}();\n\nexports.PostScriptEvaluator = PostScriptEvaluator;\n\nvar PostScriptCompiler = function PostScriptCompilerClosure() {\n function AstNode(type) {\n this.type = type;\n }\n\n AstNode.prototype.visit = function (visitor) {\n (0, _util.unreachable)(\"abstract method\");\n };\n\n function AstArgument(index, min, max) {\n AstNode.call(this, \"args\");\n this.index = index;\n this.min = min;\n this.max = max;\n }\n\n AstArgument.prototype = Object.create(AstNode.prototype);\n\n AstArgument.prototype.visit = function (visitor) {\n visitor.visitArgument(this);\n };\n\n function AstLiteral(number) {\n AstNode.call(this, \"literal\");\n this.number = number;\n this.min = number;\n this.max = number;\n }\n\n AstLiteral.prototype = Object.create(AstNode.prototype);\n\n AstLiteral.prototype.visit = function (visitor) {\n visitor.visitLiteral(this);\n };\n\n function AstBinaryOperation(op, arg1, arg2, min, max) {\n AstNode.call(this, \"binary\");\n this.op = op;\n this.arg1 = arg1;\n this.arg2 = arg2;\n this.min = min;\n this.max = max;\n }\n\n AstBinaryOperation.prototype = Object.create(AstNode.prototype);\n\n AstBinaryOperation.prototype.visit = function (visitor) {\n visitor.visitBinaryOperation(this);\n };\n\n function AstMin(arg, max) {\n AstNode.call(this, \"max\");\n this.arg = arg;\n this.min = arg.min;\n this.max = max;\n }\n\n AstMin.prototype = Object.create(AstNode.prototype);\n\n AstMin.prototype.visit = function (visitor) {\n visitor.visitMin(this);\n };\n\n function AstVariable(index, min, max) {\n AstNode.call(this, \"var\");\n this.index = index;\n this.min = min;\n this.max = max;\n }\n\n AstVariable.prototype = Object.create(AstNode.prototype);\n\n AstVariable.prototype.visit = function (visitor) {\n visitor.visitVariable(this);\n };\n\n function AstVariableDefinition(variable, arg) {\n AstNode.call(this, \"definition\");\n this.variable = variable;\n this.arg = arg;\n }\n\n AstVariableDefinition.prototype = Object.create(AstNode.prototype);\n\n AstVariableDefinition.prototype.visit = function (visitor) {\n visitor.visitVariableDefinition(this);\n };\n\n function ExpressionBuilderVisitor() {\n this.parts = [];\n }\n\n ExpressionBuilderVisitor.prototype = {\n visitArgument: function visitArgument(arg) {\n this.parts.push(\"Math.max(\", arg.min, \", Math.min(\", arg.max, \", src[srcOffset + \", arg.index, \"]))\");\n },\n visitVariable: function visitVariable(variable) {\n this.parts.push(\"v\", variable.index);\n },\n visitLiteral: function visitLiteral(literal) {\n this.parts.push(literal.number);\n },\n visitBinaryOperation: function visitBinaryOperation(operation) {\n this.parts.push(\"(\");\n operation.arg1.visit(this);\n this.parts.push(\" \", operation.op, \" \");\n operation.arg2.visit(this);\n this.parts.push(\")\");\n },\n visitVariableDefinition: function visitVariableDefinition(definition) {\n this.parts.push(\"var \");\n definition.variable.visit(this);\n this.parts.push(\" = \");\n definition.arg.visit(this);\n this.parts.push(\";\");\n },\n visitMin: function visitMin(max) {\n this.parts.push(\"Math.min(\");\n max.arg.visit(this);\n this.parts.push(\", \", max.max, \")\");\n },\n toString: function toString() {\n return this.parts.join(\"\");\n }\n };\n\n function buildAddOperation(num1, num2) {\n if (num2.type === \"literal\" && num2.number === 0) {\n return num1;\n }\n\n if (num1.type === \"literal\" && num1.number === 0) {\n return num2;\n }\n\n if (num2.type === \"literal\" && num1.type === \"literal\") {\n return new AstLiteral(num1.number + num2.number);\n }\n\n return new AstBinaryOperation(\"+\", num1, num2, num1.min + num2.min, num1.max + num2.max);\n }\n\n function buildMulOperation(num1, num2) {\n if (num2.type === \"literal\") {\n if (num2.number === 0) {\n return new AstLiteral(0);\n } else if (num2.number === 1) {\n return num1;\n } else if (num1.type === \"literal\") {\n return new AstLiteral(num1.number * num2.number);\n }\n }\n\n if (num1.type === \"literal\") {\n if (num1.number === 0) {\n return new AstLiteral(0);\n } else if (num1.number === 1) {\n return num2;\n }\n }\n\n var min = Math.min(num1.min * num2.min, num1.min * num2.max, num1.max * num2.min, num1.max * num2.max);\n var max = Math.max(num1.min * num2.min, num1.min * num2.max, num1.max * num2.min, num1.max * num2.max);\n return new AstBinaryOperation(\"*\", num1, num2, min, max);\n }\n\n function buildSubOperation(num1, num2) {\n if (num2.type === \"literal\") {\n if (num2.number === 0) {\n return num1;\n } else if (num1.type === \"literal\") {\n return new AstLiteral(num1.number - num2.number);\n }\n }\n\n if (num2.type === \"binary\" && num2.op === \"-\" && num1.type === \"literal\" && num1.number === 1 && num2.arg1.type === \"literal\" && num2.arg1.number === 1) {\n return num2.arg2;\n }\n\n return new AstBinaryOperation(\"-\", num1, num2, num1.min - num2.max, num1.max - num2.min);\n }\n\n function buildMinOperation(num1, max) {\n if (num1.min >= max) {\n return new AstLiteral(max);\n } else if (num1.max <= max) {\n return num1;\n }\n\n return new AstMin(num1, max);\n }\n\n function PostScriptCompiler() {}\n\n PostScriptCompiler.prototype = {\n compile: function PostScriptCompiler_compile(code, domain, range) {\n var stack = [];\n var instructions = [];\n var inputSize = domain.length >> 1,\n outputSize = range.length >> 1;\n var lastRegister = 0;\n var n, j;\n var num1, num2, ast1, ast2, tmpVar, item;\n\n for (var i = 0; i < inputSize; i++) {\n stack.push(new AstArgument(i, domain[i * 2], domain[i * 2 + 1]));\n }\n\n for (var _i = 0, ii = code.length; _i < ii; _i++) {\n item = code[_i];\n\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\n num2 = stack.pop();\n num1 = stack.pop();\n stack.push(buildAddOperation(num1, num2));\n break;\n\n case \"cvr\":\n if (stack.length < 1) {\n return null;\n }\n\n break;\n\n case \"mul\":\n if (stack.length < 2) {\n return null;\n }\n\n num2 = stack.pop();\n num1 = stack.pop();\n stack.push(buildMulOperation(num1, num2));\n break;\n\n case \"sub\":\n if (stack.length < 2) {\n return null;\n }\n\n num2 = stack.pop();\n num1 = stack.pop();\n stack.push(buildSubOperation(num1, num2));\n break;\n\n case \"exch\":\n if (stack.length < 2) {\n return null;\n }\n\n ast1 = stack.pop();\n ast2 = stack.pop();\n stack.push(ast1, ast2);\n break;\n\n case \"pop\":\n if (stack.length < 1) {\n return null;\n }\n\n stack.pop();\n break;\n\n case \"index\":\n if (stack.length < 1) {\n return null;\n }\n\n num1 = stack.pop();\n\n if (num1.type !== \"literal\") {\n return null;\n }\n\n n = num1.number;\n\n if (n < 0 || !Number.isInteger(n) || stack.length < n) {\n return null;\n }\n\n ast1 = stack[stack.length - n - 1];\n\n if (ast1.type === \"literal\" || ast1.type === \"var\") {\n stack.push(ast1);\n break;\n }\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\n case \"dup\":\n if (stack.length < 1) {\n return null;\n }\n\n if (typeof code[_i + 1] === \"number\" && code[_i + 2] === \"gt\" && code[_i + 3] === _i + 7 && code[_i + 4] === \"jz\" && code[_i + 5] === \"pop\" && code[_i + 6] === code[_i + 1]) {\n num1 = stack.pop();\n stack.push(buildMinOperation(num1, code[_i + 1]));\n _i += 6;\n break;\n }\n\n ast1 = stack[stack.length - 1];\n\n if (ast1.type === \"literal\" || ast1.type === \"var\") {\n stack.push(ast1);\n break;\n }\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\n case \"roll\":\n if (stack.length < 2) {\n return null;\n }\n\n num2 = stack.pop();\n num1 = stack.pop();\n\n if (num2.type !== \"literal\" || num1.type !== \"literal\") {\n return null;\n }\n\n j = num2.number;\n n = num1.number;\n\n if (n <= 0 || !Number.isInteger(n) || !Number.isInteger(j) || stack.length < n) {\n return null;\n }\n\n j = (j % n + n) % n;\n\n if (j === 0) {\n break;\n }\n\n Array.prototype.push.apply(stack, stack.splice(stack.length - n, n - j));\n break;\n\n default:\n return null;\n }\n }\n\n if (stack.length !== outputSize) {\n return null;\n }\n\n var result = [];\n instructions.forEach(function (instruction) {\n var statementBuilder = new ExpressionBuilderVisitor();\n instruction.visit(statementBuilder);\n result.push(statementBuilder.toString());\n });\n stack.forEach(function (expr, i) {\n var statementBuilder = new ExpressionBuilderVisitor();\n expr.visit(statementBuilder);\n var min = range[i * 2],\n max = range[i * 2 + 1];\n var out = [statementBuilder.toString()];\n\n if (min > expr.min) {\n out.unshift(\"Math.max(\", min, \", \");\n out.push(\")\");\n }\n\n if (max < expr.max) {\n out.unshift(\"Math.min(\", max, \", \");\n out.push(\")\");\n }\n\n out.unshift(\"dest[destOffset + \", i, \"] = \");\n out.push(\";\");\n result.push(out.join(\"\"));\n });\n return result.join(\"\\n\");\n }\n };\n return PostScriptCompiler;\n}();\n\nexports.PostScriptCompiler = PostScriptCompiler;\n\n/***/ }),\n/* 235 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PostScriptParser = exports.PostScriptLexer = void 0;\n\nvar _util = __w_pdfjs_require__(5);\n\nvar _primitives = __w_pdfjs_require__(198);\n\nvar _core_utils = __w_pdfjs_require__(201);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar PostScriptParser = /*#__PURE__*/function () {\n function PostScriptParser(lexer) {\n _classCallCheck(this, PostScriptParser);\n\n this.lexer = lexer;\n this.operators = [];\n this.token = null;\n this.prev = null;\n }\n\n _createClass(PostScriptParser, [{\n key: \"nextToken\",\n value: function nextToken() {\n this.prev = this.token;\n this.token = this.lexer.getToken();\n }\n }, {\n key: \"accept\",\n value: function accept(type) {\n if (this.token.type === type) {\n this.nextToken();\n return true;\n }\n\n return false;\n }\n }, {\n key: \"expect\",\n value: function expect(type) {\n if (this.accept(type)) {\n return true;\n }\n\n throw new _util.FormatError(\"Unexpected symbol: found \".concat(this.token.type, \" expected \").concat(type, \".\"));\n }\n }, {\n key: \"parse\",\n value: function parse() {\n this.nextToken();\n this.expect(PostScriptTokenTypes.LBRACE);\n this.parseBlock();\n this.expect(PostScriptTokenTypes.RBRACE);\n return this.operators;\n }\n }, {\n key: \"parseBlock\",\n value: function 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 key: \"parseCondition\",\n value: function parseCondition() {\n var conditionLocation = this.operators.length;\n this.operators.push(null, null);\n this.parseBlock();\n this.expect(PostScriptTokenTypes.RBRACE);\n\n if (this.accept(PostScriptTokenTypes.IF)) {\n this.operators[conditionLocation] = this.operators.length;\n this.operators[conditionLocation + 1] = \"jz\";\n } else if (this.accept(PostScriptTokenTypes.LBRACE)) {\n var jumpLocation = this.operators.length;\n this.operators.push(null, null);\n var endOfTrue = this.operators.length;\n this.parseBlock();\n this.expect(PostScriptTokenTypes.RBRACE);\n this.expect(PostScriptTokenTypes.IFELSE);\n this.operators[jumpLocation] = this.operators.length;\n this.operators[jumpLocation + 1] = \"j\";\n this.operators[conditionLocation] = endOfTrue;\n this.operators[conditionLocation + 1] = \"jz\";\n } else {\n throw new _util.FormatError(\"PS Function: error parsing conditional.\");\n }\n }\n }]);\n\n return PostScriptParser;\n}();\n\nexports.PostScriptParser = PostScriptParser;\nvar PostScriptTokenTypes = {\n LBRACE: 0,\n RBRACE: 1,\n NUMBER: 2,\n OPERATOR: 3,\n IF: 4,\n IFELSE: 5\n};\n\nvar PostScriptToken = function PostScriptTokenClosure() {\n var opCache = Object.create(null);\n\n var PostScriptToken = /*#__PURE__*/function () {\n function PostScriptToken(type, value) {\n _classCallCheck(this, PostScriptToken);\n\n this.type = type;\n this.value = value;\n }\n\n _createClass(PostScriptToken, null, [{\n key: \"getOperator\",\n value: function getOperator(op) {\n var opValue = opCache[op];\n\n if (opValue) {\n return opValue;\n }\n\n return opCache[op] = new PostScriptToken(PostScriptTokenTypes.OPERATOR, op);\n }\n }, {\n key: \"LBRACE\",\n get: function get() {\n return (0, _util.shadow)(this, \"LBRACE\", new PostScriptToken(PostScriptTokenTypes.LBRACE, \"{\"));\n }\n }, {\n key: \"RBRACE\",\n get: function get() {\n return (0, _util.shadow)(this, \"RBRACE\", new PostScriptToken(PostScriptTokenTypes.RBRACE, \"}\"));\n }\n }, {\n key: \"IF\",\n get: function get() {\n return (0, _util.shadow)(this, \"IF\", new PostScriptToken(PostScriptTokenTypes.IF, \"IF\"));\n }\n }, {\n key: \"IFELSE\",\n get: function get() {\n return (0, _util.shadow)(this, \"IFELSE\", new PostScriptToken(PostScriptTokenTypes.IFELSE, \"IFELSE\"));\n }\n }]);\n\n return PostScriptToken;\n }();\n\n return PostScriptToken;\n}();\n\nvar PostScriptLexer = /*#__PURE__*/function () {\n function PostScriptLexer(stream) {\n _classCallCheck(this, PostScriptLexer);\n\n this.stream = stream;\n this.nextChar();\n this.strBuf = [];\n }\n\n _createClass(PostScriptLexer, [{\n key: \"nextChar\",\n value: function nextChar() {\n return this.currentChar = this.stream.getByte();\n }\n }, {\n key: \"getToken\",\n value: function getToken() {\n var comment = false;\n var ch = this.currentChar;\n\n while (true) {\n if (ch < 0) {\n return _primitives.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 (!(0, _core_utils.isWhiteSpace)(ch)) {\n break;\n }\n\n ch = this.nextChar();\n }\n\n switch (ch | 0) {\n case 0x30:\n case 0x31:\n case 0x32:\n case 0x33:\n case 0x34:\n case 0x35:\n case 0x36:\n case 0x37:\n case 0x38:\n case 0x39:\n case 0x2b:\n case 0x2d:\n case 0x2e:\n return new PostScriptToken(PostScriptTokenTypes.NUMBER, this.getNumber());\n\n case 0x7b:\n this.nextChar();\n return PostScriptToken.LBRACE;\n\n case 0x7d:\n this.nextChar();\n return PostScriptToken.RBRACE;\n }\n\n var strBuf = this.strBuf;\n strBuf.length = 0;\n strBuf[0] = String.fromCharCode(ch);\n\n while ((ch = this.nextChar()) >= 0 && (ch >= 0x41 && ch <= 0x5a || ch >= 0x61 && ch <= 0x7a)) {\n strBuf.push(String.fromCharCode(ch));\n }\n\n var str = strBuf.join(\"\");\n\n switch (str.toLowerCase()) {\n case \"if\":\n return PostScriptToken.IF;\n\n case \"ifelse\":\n return PostScriptToken.IFELSE;\n\n default:\n return PostScriptToken.getOperator(str);\n }\n }\n }, {\n key: \"getNumber\",\n value: function getNumber() {\n var ch = this.currentChar;\n var strBuf = this.strBuf;\n strBuf.length = 0;\n strBuf[0] = String.fromCharCode(ch);\n\n while ((ch = this.nextChar()) >= 0) {\n if (ch >= 0x30 && ch <= 0x39 || ch === 0x2d || ch === 0x2e) {\n strBuf.push(String.fromCharCode(ch));\n } else {\n break;\n }\n }\n\n var value = parseFloat(strBuf.join(\"\"));\n\n if (isNaN(value)) {\n throw new _util.FormatError(\"Invalid floating point number: \".concat(value));\n }\n\n return value;\n }\n }]);\n\n return PostScriptLexer;\n}();\n\nexports.PostScriptLexer = PostScriptLexer;\n\n/***/ }),\n/* 236 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MurmurHash3_64 = void 0;\n\nvar _util = __w_pdfjs_require__(5);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar SEED = 0xc3d2e1f0;\nvar MASK_HIGH = 0xffff0000;\nvar MASK_LOW = 0xffff;\n\nvar MurmurHash3_64 = /*#__PURE__*/function () {\n function MurmurHash3_64(seed) {\n _classCallCheck(this, MurmurHash3_64);\n\n this.h1 = seed ? seed & 0xffffffff : SEED;\n this.h2 = seed ? seed & 0xffffffff : SEED;\n }\n\n _createClass(MurmurHash3_64, [{\n key: \"update\",\n value: function update(input) {\n var data, length;\n\n if ((0, _util.isString)(input)) {\n data = new Uint8Array(input.length * 2);\n length = 0;\n\n for (var i = 0, ii = input.length; i < ii; i++) {\n var code = input.charCodeAt(i);\n\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 ((0, _util.isArrayBuffer)(input)) {\n data = input;\n length = data.byteLength;\n } else {\n throw new Error(\"Wrong data format in MurmurHash3_64_update. \" + \"Input must be a string or array.\");\n }\n\n var blockCounts = length >> 2;\n var tailLength = length - blockCounts * 4;\n var dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n var k1 = 0,\n k2 = 0;\n var h1 = this.h1,\n h2 = this.h2;\n var C1 = 0xcc9e2d51,\n C2 = 0x1b873593;\n var C1_LOW = C1 & MASK_LOW,\n C2_LOW = C2 & MASK_LOW;\n\n for (var _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\n case 2:\n k1 ^= data[blockCounts * 4 + 1] << 8;\n\n case 1:\n k1 ^= data[blockCounts * 4];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n\n if (blockCounts & 1) {\n h1 ^= k1;\n } else {\n h2 ^= k1;\n }\n\n }\n\n this.h1 = h1;\n this.h2 = h2;\n }\n }, {\n key: \"hexdigest\",\n value: function hexdigest() {\n var h1 = this.h1,\n h2 = this.h2;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW;\n h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW;\n h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n var hex1 = (h1 >>> 0).toString(16),\n hex2 = (h2 >>> 0).toString(16);\n return hex1.padStart(8, \"0\") + hex2.padStart(8, \"0\");\n }\n }]);\n\n return MurmurHash3_64;\n}();\n\nexports.MurmurHash3_64 = MurmurHash3_64;\n\n/***/ }),\n/* 237 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PDFImage = void 0;\n\nvar _util = __w_pdfjs_require__(5);\n\nvar _primitives = __w_pdfjs_require__(198);\n\nvar _colorspace = __w_pdfjs_require__(216);\n\nvar _stream = __w_pdfjs_require__(205);\n\nvar _jpeg_stream = __w_pdfjs_require__(211);\n\nvar _jpx = __w_pdfjs_require__(214);\n\nvar PDFImage = function PDFImageClosure() {\n function decodeAndClamp(value, addend, coefficient, max) {\n value = addend + value * coefficient;\n\n if (value < 0) {\n value = 0;\n } else if (value > max) {\n value = max;\n }\n\n return value;\n }\n\n function resizeImageMask(src, bpc, w1, h1, w2, h2) {\n var length = w2 * h2;\n var dest;\n\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\n var xRatio = w1 / w2;\n var yRatio = h1 / h2;\n var i,\n j,\n py,\n newIndex = 0,\n oldIndex;\n var xScaled = new Uint16Array(w2);\n var w1Scanline = w1;\n\n for (i = 0; i < w2; i++) {\n xScaled[i] = Math.floor(i * xRatio);\n }\n\n for (i = 0; i < h2; i++) {\n py = Math.floor(i * yRatio) * w1Scanline;\n\n for (j = 0; j < w2; j++) {\n oldIndex = py + xScaled[j];\n dest[newIndex++] = src[oldIndex];\n }\n }\n\n return dest;\n }\n\n function PDFImage(_ref) {\n var xref = _ref.xref,\n res = _ref.res,\n image = _ref.image,\n _ref$isInline = _ref.isInline,\n isInline = _ref$isInline === void 0 ? false : _ref$isInline,\n _ref$smask = _ref.smask,\n smask = _ref$smask === void 0 ? null : _ref$smask,\n _ref$mask = _ref.mask,\n mask = _ref$mask === void 0 ? null : _ref$mask,\n _ref$isMask = _ref.isMask,\n isMask = _ref$isMask === void 0 ? false : _ref$isMask,\n pdfFunctionFactory = _ref.pdfFunctionFactory;\n this.image = image;\n var dict = image.dict;\n var filter = dict.get(\"Filter\");\n\n if ((0, _primitives.isName)(filter)) {\n switch (filter.name) {\n case \"JPXDecode\":\n var jpxImage = new _jpx.JpxImage();\n jpxImage.parseImageProperties(image.stream);\n image.stream.reset();\n image.width = jpxImage.width;\n image.height = jpxImage.height;\n image.bitsPerComponent = jpxImage.bitsPerComponent;\n image.numComps = jpxImage.componentsCount;\n break;\n\n case \"JBIG2Decode\":\n image.bitsPerComponent = 1;\n image.numComps = 1;\n break;\n }\n }\n\n var width = dict.get(\"Width\", \"W\");\n var height = dict.get(\"Height\", \"H\");\n\n if (Number.isInteger(image.width) && image.width > 0 && Number.isInteger(image.height) && image.height > 0 && (image.width !== width || image.height !== height)) {\n (0, _util.warn)(\"PDFImage - using the Width/Height of the image data, \" + \"rather than the image dictionary.\");\n width = image.width;\n height = image.height;\n }\n\n if (width < 1 || height < 1) {\n throw new _util.FormatError(\"Invalid image width: \".concat(width, \" or height: \").concat(height));\n }\n\n this.width = width;\n this.height = height;\n this.interpolate = dict.get(\"Interpolate\", \"I\") || false;\n this.imageMask = dict.get(\"ImageMask\", \"IM\") || false;\n this.matte = dict.get(\"Matte\") || false;\n var bitsPerComponent = image.bitsPerComponent;\n\n if (!bitsPerComponent) {\n bitsPerComponent = dict.get(\"BitsPerComponent\", \"BPC\");\n\n if (!bitsPerComponent) {\n if (this.imageMask) {\n bitsPerComponent = 1;\n } else {\n throw new _util.FormatError(\"Bits per component missing in image: \".concat(this.imageMask));\n }\n }\n }\n\n this.bpc = bitsPerComponent;\n\n if (!this.imageMask) {\n var colorSpace = dict.get(\"ColorSpace\", \"CS\");\n\n if (!colorSpace) {\n (0, _util.info)(\"JPX images (which do not require color spaces)\");\n\n switch (image.numComps) {\n case 1:\n colorSpace = _primitives.Name.get(\"DeviceGray\");\n break;\n\n case 3:\n colorSpace = _primitives.Name.get(\"DeviceRGB\");\n break;\n\n case 4:\n colorSpace = _primitives.Name.get(\"DeviceCMYK\");\n break;\n\n default:\n throw new Error(\"JPX images with \".concat(image.numComps, \" \") + \"color components not supported.\");\n }\n }\n\n var resources = isInline ? res : null;\n this.colorSpace = _colorspace.ColorSpace.parse(colorSpace, xref, resources, pdfFunctionFactory);\n this.numComps = this.colorSpace.numComps;\n }\n\n this.decode = dict.getArray(\"Decode\", \"D\");\n this.needsDecode = false;\n\n if (this.decode && (this.colorSpace && !this.colorSpace.isDefaultDecode(this.decode, bitsPerComponent) || isMask && !_colorspace.ColorSpace.isDefaultDecode(this.decode, 1))) {\n this.needsDecode = true;\n var max = (1 << bitsPerComponent) - 1;\n this.decodeCoefficients = [];\n this.decodeAddends = [];\n var isIndexed = this.colorSpace && this.colorSpace.name === \"Indexed\";\n\n for (var i = 0, j = 0; i < this.decode.length; i += 2, ++j) {\n var dmin = this.decode[i];\n var dmax = this.decode[i + 1];\n this.decodeCoefficients[j] = isIndexed ? (dmax - dmin) / max : dmax - dmin;\n this.decodeAddends[j] = isIndexed ? dmin : max * dmin;\n }\n }\n\n if (smask) {\n this.smask = new PDFImage({\n xref: xref,\n res: res,\n image: smask,\n isInline: isInline,\n pdfFunctionFactory: pdfFunctionFactory\n });\n } else if (mask) {\n if ((0, _primitives.isStream)(mask)) {\n var maskDict = mask.dict,\n imageMask = maskDict.get(\"ImageMask\", \"IM\");\n\n if (!imageMask) {\n (0, _util.warn)(\"Ignoring /Mask in image without /ImageMask.\");\n } else {\n this.mask = new PDFImage({\n xref: xref,\n res: res,\n image: mask,\n isInline: isInline,\n isMask: true,\n pdfFunctionFactory: pdfFunctionFactory\n });\n }\n } else {\n this.mask = mask;\n }\n }\n }\n\n PDFImage.buildImage = function (_ref2) {\n var xref = _ref2.xref,\n res = _ref2.res,\n image = _ref2.image,\n _ref2$isInline = _ref2.isInline,\n isInline = _ref2$isInline === void 0 ? false : _ref2$isInline,\n pdfFunctionFactory = _ref2.pdfFunctionFactory;\n var imageData = image;\n var smaskData = null;\n var maskData = null;\n var smask = image.dict.get(\"SMask\");\n var mask = image.dict.get(\"Mask\");\n\n if (smask) {\n smaskData = smask;\n } else if (mask) {\n if ((0, _primitives.isStream)(mask) || Array.isArray(mask)) {\n maskData = mask;\n } else {\n (0, _util.warn)(\"Unsupported mask format.\");\n }\n }\n\n return Promise.resolve(new PDFImage({\n xref: xref,\n res: res,\n image: imageData,\n isInline: isInline,\n smask: smaskData,\n mask: maskData,\n pdfFunctionFactory: pdfFunctionFactory\n }));\n };\n\n PDFImage.createMask = function (_ref3) {\n var imgArray = _ref3.imgArray,\n width = _ref3.width,\n height = _ref3.height,\n imageIsFromDecodeStream = _ref3.imageIsFromDecodeStream,\n inverseDecode = _ref3.inverseDecode;\n var computedLength = (width + 7 >> 3) * height;\n var actualLength = imgArray.byteLength;\n var haveFullData = computedLength === actualLength;\n var data, i;\n\n if (imageIsFromDecodeStream && (!inverseDecode || haveFullData)) {\n 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\n for (i = actualLength; i < computedLength; i++) {\n data[i] = 0xff;\n }\n }\n\n if (inverseDecode) {\n for (i = 0; i < actualLength; i++) {\n data[i] ^= 0xff;\n }\n }\n\n return {\n data: data,\n width: width,\n height: height\n };\n };\n\n PDFImage.prototype = {\n get drawWidth() {\n return Math.max(this.width, this.smask && this.smask.width || 0, this.mask && this.mask.width || 0);\n },\n\n get drawHeight() {\n return Math.max(this.height, this.smask && this.smask.height || 0, this.mask && this.mask.height || 0);\n },\n\n decodeBuffer: function decodeBuffer(buffer) {\n var bpc = this.bpc;\n var numComps = this.numComps;\n var decodeAddends = this.decodeAddends;\n var decodeCoefficients = this.decodeCoefficients;\n var max = (1 << bpc) - 1;\n var i, ii;\n\n if (bpc === 1) {\n for (i = 0, ii = buffer.length; i < ii; i++) {\n buffer[i] = +!buffer[i];\n }\n\n return;\n }\n\n var index = 0;\n\n for (i = 0, ii = this.width * this.height; i < ii; i++) {\n for (var j = 0; j < numComps; j++) {\n buffer[index] = decodeAndClamp(buffer[index], decodeAddends[j], decodeCoefficients[j], max);\n index++;\n }\n }\n },\n getComponents: function getComponents(buffer) {\n var bpc = this.bpc;\n\n if (bpc === 8) {\n return buffer;\n }\n\n var width = this.width;\n var height = this.height;\n var numComps = this.numComps;\n var length = width * height * numComps;\n var bufferPos = 0;\n var output;\n\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\n var rowComps = width * numComps;\n var max = (1 << bpc) - 1;\n var i = 0,\n ii,\n buf;\n\n if (bpc === 1) {\n var mask, loop1End, loop2End;\n\n for (var j = 0; j < height; j++) {\n loop1End = i + (rowComps & ~7);\n loop2End = i + rowComps;\n\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 if (i < loop2End) {\n buf = buffer[bufferPos++];\n mask = 128;\n\n while (i < loop2End) {\n output[i++] = +!!(buf & mask);\n mask >>= 1;\n }\n }\n }\n } else {\n var bits = 0;\n buf = 0;\n\n for (i = 0, ii = length; i < ii; ++i) {\n if (i % rowComps === 0) {\n buf = 0;\n bits = 0;\n }\n\n while (bits < bpc) {\n buf = buf << 8 | buffer[bufferPos++];\n bits += 8;\n }\n\n var remainingBits = bits - bpc;\n var value = buf >> remainingBits;\n\n if (value < 0) {\n value = 0;\n } else if (value > max) {\n value = max;\n }\n\n output[i] = value;\n buf = buf & (1 << remainingBits) - 1;\n bits = remainingBits;\n }\n }\n\n return output;\n },\n fillOpacity: function fillOpacity(rgbaBuf, width, height, actualHeight, image) {\n var smask = this.smask;\n var mask = this.mask;\n var alphaBuf, sw, sh, i, ii, j;\n\n if (smask) {\n sw = smask.width;\n sh = smask.height;\n alphaBuf = new Uint8ClampedArray(sw * sh);\n smask.fillGrayBuffer(alphaBuf);\n\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 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 alphaBuf = new Uint8ClampedArray(width * height);\n var numComps = this.numComps;\n\n for (i = 0, ii = width * height; i < ii; ++i) {\n var opacity = 0;\n var imageOffset = i * numComps;\n\n for (j = 0; j < numComps; ++j) {\n var color = image[imageOffset + j];\n var maskOffset = j * 2;\n\n if (color < mask[maskOffset] || color > mask[maskOffset + 1]) {\n opacity = 255;\n break;\n }\n }\n\n alphaBuf[i] = opacity;\n }\n } else {\n throw new _util.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 for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {\n rgbaBuf[j] = 255;\n }\n }\n },\n undoPreblend: function undoPreblend(buffer, width, height) {\n var matte = this.smask && this.smask.matte;\n\n if (!matte) {\n return;\n }\n\n var matteRgb = this.colorSpace.getRgb(matte, 0);\n var matteR = matteRgb[0];\n var matteG = matteRgb[1];\n var matteB = matteRgb[2];\n var length = width * height * 4;\n\n for (var i = 0; i < length; i += 4) {\n var alpha = buffer[i + 3];\n\n if (alpha === 0) {\n buffer[i] = 255;\n buffer[i + 1] = 255;\n buffer[i + 2] = 255;\n continue;\n }\n\n var k = 255 / alpha;\n buffer[i] = (buffer[i] - matteR) * k + matteR;\n buffer[i + 1] = (buffer[i + 1] - matteG) * k + matteG;\n buffer[i + 2] = (buffer[i + 2] - matteB) * k + matteB;\n }\n },\n createImageData: function createImageData() {\n var forceRGBA = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var drawWidth = this.drawWidth;\n var drawHeight = this.drawHeight;\n var imgData = {\n width: drawWidth,\n height: drawHeight,\n kind: 0,\n data: null\n };\n var numComps = this.numComps;\n var originalWidth = this.width;\n var originalHeight = this.height;\n var bpc = this.bpc;\n var rowBytes = originalWidth * numComps * bpc + 7 >> 3;\n var imgArray;\n\n if (!forceRGBA) {\n var kind;\n\n if (this.colorSpace.name === \"DeviceGray\" && bpc === 1) {\n kind = _util.ImageKind.GRAYSCALE_1BPP;\n } else if (this.colorSpace.name === \"DeviceRGB\" && bpc === 8 && !this.needsDecode) {\n kind = _util.ImageKind.RGB_24BPP;\n }\n\n if (kind && !this.smask && !this.mask && drawWidth === originalWidth && drawHeight === originalHeight) {\n imgData.kind = kind;\n imgArray = this.getImageBytes(originalHeight * rowBytes);\n\n if (this.image instanceof _stream.DecodeStream) {\n imgData.data = imgArray;\n } else {\n var newArray = new Uint8ClampedArray(imgArray.length);\n newArray.set(imgArray);\n imgData.data = newArray;\n }\n\n if (this.needsDecode) {\n (0, _util.assert)(kind === _util.ImageKind.GRAYSCALE_1BPP, \"PDFImage.createImageData: The image must be grayscale.\");\n var buffer = imgData.data;\n\n for (var i = 0, ii = buffer.length; i < ii; i++) {\n buffer[i] ^= 0xff;\n }\n }\n\n return imgData;\n }\n\n if (this.image instanceof _jpeg_stream.JpegStream && !this.smask && !this.mask) {\n var imageLength = originalHeight * rowBytes;\n\n switch (this.colorSpace.name) {\n case \"DeviceGray\":\n imageLength *= 3;\n\n case \"DeviceRGB\":\n case \"DeviceCMYK\":\n imgData.kind = _util.ImageKind.RGB_24BPP;\n imgData.data = this.getImageBytes(imageLength, drawWidth, drawHeight, true);\n return imgData;\n }\n }\n }\n\n imgArray = this.getImageBytes(originalHeight * rowBytes);\n var actualHeight = 0 | imgArray.length / rowBytes * drawHeight / originalHeight;\n var comps = this.getComponents(imgArray);\n var alpha01, maybeUndoPreblend;\n\n if (!forceRGBA && !this.smask && !this.mask) {\n imgData.kind = _util.ImageKind.RGB_24BPP;\n imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 3);\n alpha01 = 0;\n maybeUndoPreblend = false;\n } else {\n imgData.kind = _util.ImageKind.RGBA_32BPP;\n imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 4);\n alpha01 = 1;\n maybeUndoPreblend = true;\n this.fillOpacity(imgData.data, drawWidth, drawHeight, actualHeight, comps);\n }\n\n if (this.needsDecode) {\n this.decodeBuffer(comps);\n }\n\n this.colorSpace.fillRgb(imgData.data, originalWidth, originalHeight, drawWidth, drawHeight, actualHeight, bpc, comps, alpha01);\n\n if (maybeUndoPreblend) {\n this.undoPreblend(imgData.data, drawWidth, actualHeight);\n }\n\n return imgData;\n },\n fillGrayBuffer: function fillGrayBuffer(buffer) {\n var numComps = this.numComps;\n\n if (numComps !== 1) {\n throw new _util.FormatError(\"Reading gray scale from a color image: \".concat(numComps));\n }\n\n var width = this.width;\n var height = this.height;\n var bpc = this.bpc;\n var rowBytes = width * numComps * bpc + 7 >> 3;\n var imgArray = this.getImageBytes(height * rowBytes);\n var comps = this.getComponents(imgArray);\n var i, length;\n\n if (bpc === 1) {\n length = width * height;\n\n if (this.needsDecode) {\n for (i = 0; i < length; ++i) {\n buffer[i] = comps[i] - 1 & 255;\n }\n } else {\n for (i = 0; i < length; ++i) {\n buffer[i] = -comps[i] & 255;\n }\n }\n\n return;\n }\n\n if (this.needsDecode) {\n this.decodeBuffer(comps);\n }\n\n length = width * height;\n var scale = 255 / ((1 << bpc) - 1);\n\n for (i = 0; i < length; ++i) {\n buffer[i] = scale * comps[i];\n }\n },\n getImageBytes: function getImageBytes(length, drawWidth, drawHeight) {\n var forceRGB = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 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, true);\n }\n };\n return PDFImage;\n}();\n\nexports.PDFImage = PDFImage;\n\n/***/ }),\n/* 238 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MessageHandler = void 0;\n\nvar _regenerator = _interopRequireDefault(__w_pdfjs_require__(2));\n\nvar _util = __w_pdfjs_require__(5);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar CallbackKind = {\n UNKNOWN: 0,\n DATA: 1,\n ERROR: 2\n};\nvar 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 (_typeof(reason) !== \"object\" || reason === null) {\n return reason;\n }\n\n switch (reason.name) {\n case \"AbortException\":\n return new _util.AbortException(reason.message);\n\n case \"MissingPDFException\":\n return new _util.MissingPDFException(reason.message);\n\n case \"UnexpectedResponseException\":\n return new _util.UnexpectedResponseException(reason.message, reason.status);\n\n case \"UnknownErrorException\":\n return new _util.UnknownErrorException(reason.message, reason.details);\n\n default:\n return new _util.UnknownErrorException(reason.message, reason.toString());\n }\n}\n\nvar MessageHandler = /*#__PURE__*/function () {\n function MessageHandler(sourceName, targetName, comObj) {\n var _this = this;\n\n _classCallCheck(this, MessageHandler);\n\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.postMessageTransfers = true;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n\n this._onComObjOnMessage = function (event) {\n var data = event.data;\n\n if (data.targetName !== _this.sourceName) {\n return;\n }\n\n if (data.stream) {\n _this._processStreamMessage(data);\n\n return;\n }\n\n if (data.callback) {\n var callbackId = data.callbackId;\n var capability = _this.callbackCapabilities[callbackId];\n\n if (!capability) {\n throw new Error(\"Cannot resolve callback \".concat(callbackId));\n }\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\n return;\n }\n\n var action = _this.actionHandler[data.action];\n\n if (!action) {\n throw new Error(\"Unknown action from worker: \".concat(data.action));\n }\n\n if (data.callbackId) {\n var cbSourceName = _this.sourceName;\n var cbTargetName = data.sourceName;\n new Promise(function (resolve) {\n resolve(action(data.data));\n }).then(function (result) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result\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 return;\n }\n\n if (data.streamId) {\n _this._createStreamSink(data);\n\n return;\n }\n\n action(data.data);\n };\n\n comObj.addEventListener(\"message\", this._onComObjOnMessage);\n }\n\n _createClass(MessageHandler, [{\n key: \"on\",\n value: function on(actionName, handler) {\n var ah = this.actionHandler;\n\n if (ah[actionName]) {\n throw new Error(\"There is already an actionName called \\\"\".concat(actionName, \"\\\"\"));\n }\n\n ah[actionName] = handler;\n }\n }, {\n key: \"send\",\n value: function send(actionName, data, transfers) {\n this._postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data: data\n }, transfers);\n }\n }, {\n key: \"sendWithPromise\",\n value: function sendWithPromise(actionName, data, transfers) {\n var callbackId = this.callbackId++;\n var capability = (0, _util.createPromiseCapability)();\n this.callbackCapabilities[callbackId] = capability;\n\n try {\n this._postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId: callbackId,\n data: data\n }, transfers);\n } catch (ex) {\n capability.reject(ex);\n }\n\n return capability.promise;\n }\n }, {\n key: \"sendWithStream\",\n value: function sendWithStream(actionName, data, queueingStrategy, transfers) {\n var _this2 = this;\n\n var streamId = this.streamId++;\n var sourceName = this.sourceName;\n var targetName = this.targetName;\n var comObj = this.comObj;\n return new ReadableStream({\n start: function start(controller) {\n var startCapability = (0, _util.createPromiseCapability)();\n _this2.streamControllers[streamId] = {\n controller: controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false\n };\n\n _this2._postMessage({\n sourceName: sourceName,\n targetName: targetName,\n action: actionName,\n streamId: streamId,\n data: data,\n desiredSize: controller.desiredSize\n }, transfers);\n\n return startCapability.promise;\n },\n pull: function pull(controller) {\n var pullCapability = (0, _util.createPromiseCapability)();\n _this2.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName: sourceName,\n targetName: targetName,\n stream: StreamKind.PULL,\n streamId: streamId,\n desiredSize: controller.desiredSize\n });\n return pullCapability.promise;\n },\n cancel: function cancel(reason) {\n (0, _util.assert)(reason instanceof Error, \"cancel must have a valid reason\");\n var cancelCapability = (0, _util.createPromiseCapability)();\n _this2.streamControllers[streamId].cancelCall = cancelCapability;\n _this2.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName: sourceName,\n targetName: targetName,\n stream: StreamKind.CANCEL,\n streamId: streamId,\n reason: wrapReason(reason)\n });\n return cancelCapability.promise;\n }\n }, queueingStrategy);\n }\n }, {\n key: \"_createStreamSink\",\n value: function _createStreamSink(data) {\n var self = this;\n var action = this.actionHandler[data.action];\n var streamId = data.streamId;\n var sourceName = this.sourceName;\n var targetName = data.sourceName;\n var comObj = this.comObj;\n var streamSink = {\n enqueue: function enqueue(chunk) {\n var size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var transfers = arguments.length > 2 ? arguments[2] : undefined;\n\n if (this.isCancelled) {\n return;\n }\n\n var lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = (0, _util.createPromiseCapability)();\n this.ready = this.sinkCapability.promise;\n }\n\n self._postMessage({\n sourceName: sourceName,\n targetName: targetName,\n stream: StreamKind.ENQUEUE,\n streamId: streamId,\n chunk: chunk\n }, transfers);\n },\n close: function close() {\n if (this.isCancelled) {\n return;\n }\n\n this.isCancelled = true;\n comObj.postMessage({\n sourceName: sourceName,\n targetName: targetName,\n stream: StreamKind.CLOSE,\n streamId: streamId\n });\n delete self.streamSinks[streamId];\n },\n error: function error(reason) {\n (0, _util.assert)(reason instanceof Error, \"error must have a valid reason\");\n\n if (this.isCancelled) {\n return;\n }\n\n this.isCancelled = true;\n comObj.postMessage({\n sourceName: sourceName,\n targetName: targetName,\n stream: StreamKind.ERROR,\n streamId: streamId,\n reason: wrapReason(reason)\n });\n },\n sinkCapability: (0, _util.createPromiseCapability)(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null\n };\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n new Promise(function (resolve) {\n resolve(action(data.data, streamSink));\n }).then(function () {\n comObj.postMessage({\n sourceName: sourceName,\n targetName: targetName,\n stream: StreamKind.START_COMPLETE,\n streamId: streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName: sourceName,\n targetName: targetName,\n stream: StreamKind.START_COMPLETE,\n streamId: streamId,\n reason: wrapReason(reason)\n });\n });\n }\n }, {\n key: \"_processStreamMessage\",\n value: function _processStreamMessage(data) {\n var streamId = data.streamId;\n var sourceName = this.sourceName;\n var targetName = data.sourceName;\n var comObj = this.comObj;\n\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n this.streamControllers[streamId].startCall.resolve();\n } else {\n this.streamControllers[streamId].startCall.reject(wrapReason(data.reason));\n }\n\n break;\n\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n this.streamControllers[streamId].pullCall.resolve();\n } else {\n this.streamControllers[streamId].pullCall.reject(wrapReason(data.reason));\n }\n\n break;\n\n case StreamKind.PULL:\n if (!this.streamSinks[streamId]) {\n comObj.postMessage({\n sourceName: sourceName,\n targetName: targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId: streamId,\n success: true\n });\n break;\n }\n\n if (this.streamSinks[streamId].desiredSize <= 0 && data.desiredSize > 0) {\n this.streamSinks[streamId].sinkCapability.resolve();\n }\n\n this.streamSinks[streamId].desiredSize = data.desiredSize;\n var onPull = this.streamSinks[data.streamId].onPull;\n new Promise(function (resolve) {\n resolve(onPull && onPull());\n }).then(function () {\n comObj.postMessage({\n sourceName: sourceName,\n targetName: targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId: streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName: sourceName,\n targetName: targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId: streamId,\n reason: wrapReason(reason)\n });\n });\n break;\n\n case StreamKind.ENQUEUE:\n (0, _util.assert)(this.streamControllers[streamId], \"enqueue should have stream controller\");\n\n if (this.streamControllers[streamId].isClosed) {\n break;\n }\n\n this.streamControllers[streamId].controller.enqueue(data.chunk);\n break;\n\n case StreamKind.CLOSE:\n (0, _util.assert)(this.streamControllers[streamId], \"close should have stream controller\");\n\n if (this.streamControllers[streamId].isClosed) {\n break;\n }\n\n this.streamControllers[streamId].isClosed = true;\n this.streamControllers[streamId].controller.close();\n\n this._deleteStreamController(streamId);\n\n break;\n\n case StreamKind.ERROR:\n (0, _util.assert)(this.streamControllers[streamId], \"error should have stream controller\");\n this.streamControllers[streamId].controller.error(wrapReason(data.reason));\n\n this._deleteStreamController(streamId);\n\n break;\n\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n this.streamControllers[streamId].cancelCall.resolve();\n } else {\n this.streamControllers[streamId].cancelCall.reject(wrapReason(data.reason));\n }\n\n this._deleteStreamController(streamId);\n\n break;\n\n case StreamKind.CANCEL:\n if (!this.streamSinks[streamId]) {\n break;\n }\n\n var onCancel = this.streamSinks[data.streamId].onCancel;\n new Promise(function (resolve) {\n resolve(onCancel && onCancel(wrapReason(data.reason)));\n }).then(function () {\n comObj.postMessage({\n sourceName: sourceName,\n targetName: targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId: streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName: sourceName,\n targetName: targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId: streamId,\n reason: wrapReason(reason)\n });\n });\n this.streamSinks[streamId].sinkCapability.reject(wrapReason(data.reason));\n this.streamSinks[streamId].isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n }, {\n key: \"_deleteStreamController\",\n value: function () {\n var _deleteStreamController2 = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee(streamId) {\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return Promise.allSettled([this.streamControllers[streamId].startCall, this.streamControllers[streamId].pullCall, this.streamControllers[streamId].cancelCall].map(function (capability) {\n return capability && capability.promise;\n }));\n\n case 2:\n delete this.streamControllers[streamId];\n\n case 3:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function _deleteStreamController(_x) {\n return _deleteStreamController2.apply(this, arguments);\n }\n\n return _deleteStreamController;\n }()\n }, {\n key: \"_postMessage\",\n value: function _postMessage(message, transfers) {\n if (transfers && this.postMessageTransfers) {\n this.comObj.postMessage(message, transfers);\n } else {\n this.comObj.postMessage(message);\n }\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n }\n }]);\n\n return MessageHandler;\n}();\n\nexports.MessageHandler = MessageHandler;\n\n/***/ }),\n/* 239 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PDFWorkerStream = void 0;\n\nvar _regenerator = _interopRequireDefault(__w_pdfjs_require__(2));\n\nvar _util = __w_pdfjs_require__(5);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar PDFWorkerStream = /*#__PURE__*/function () {\n function PDFWorkerStream(msgHandler) {\n _classCallCheck(this, PDFWorkerStream);\n\n this._msgHandler = msgHandler;\n this._contentLength = null;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n _createClass(PDFWorkerStream, [{\n key: \"getFullReader\",\n value: function getFullReader() {\n (0, _util.assert)(!this._fullRequestReader, \"PDFWorkerStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFWorkerStreamReader(this._msgHandler);\n return this._fullRequestReader;\n }\n }, {\n key: \"getRangeReader\",\n value: function getRangeReader(begin, end) {\n var reader = new PDFWorkerStreamRangeReader(begin, end, this._msgHandler);\n\n this._rangeRequestReaders.push(reader);\n\n return reader;\n }\n }, {\n key: \"cancelAllRequests\",\n value: function cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n\n var readers = this._rangeRequestReaders.slice(0);\n\n readers.forEach(function (reader) {\n reader.cancel(reason);\n });\n }\n }]);\n\n return PDFWorkerStream;\n}();\n\nexports.PDFWorkerStream = PDFWorkerStream;\n\nvar PDFWorkerStreamReader = /*#__PURE__*/function () {\n function PDFWorkerStreamReader(msgHandler) {\n var _this = this;\n\n _classCallCheck(this, PDFWorkerStreamReader);\n\n this._msgHandler = msgHandler;\n this.onProgress = null;\n this._contentLength = null;\n this._isRangeSupported = false;\n this._isStreamingSupported = false;\n\n var readableStream = this._msgHandler.sendWithStream(\"GetReader\");\n\n this._reader = readableStream.getReader();\n this._headersReady = this._msgHandler.sendWithPromise(\"ReaderHeadersReady\").then(function (data) {\n _this._isStreamingSupported = data.isStreamingSupported;\n _this._isRangeSupported = data.isRangeSupported;\n _this._contentLength = data.contentLength;\n });\n }\n\n _createClass(PDFWorkerStreamReader, [{\n key: \"read\",\n value: function () {\n var _read = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee() {\n var _yield$this$_reader$r, value, done;\n\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this._reader.read();\n\n case 2:\n _yield$this$_reader$r = _context.sent;\n value = _yield$this$_reader$r.value;\n done = _yield$this$_reader$r.done;\n\n if (!done) {\n _context.next = 7;\n break;\n }\n\n return _context.abrupt(\"return\", {\n value: undefined,\n done: true\n });\n\n case 7:\n return _context.abrupt(\"return\", {\n value: value.buffer,\n done: false\n });\n\n case 8:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function read() {\n return _read.apply(this, arguments);\n }\n\n return read;\n }()\n }, {\n key: \"cancel\",\n value: function cancel(reason) {\n this._reader.cancel(reason);\n }\n }, {\n key: \"headersReady\",\n get: function get() {\n return this._headersReady;\n }\n }, {\n key: \"contentLength\",\n get: function get() {\n return this._contentLength;\n }\n }, {\n key: \"isStreamingSupported\",\n get: function get() {\n return this._isStreamingSupported;\n }\n }, {\n key: \"isRangeSupported\",\n get: function get() {\n return this._isRangeSupported;\n }\n }]);\n\n return PDFWorkerStreamReader;\n}();\n\nvar PDFWorkerStreamRangeReader = /*#__PURE__*/function () {\n function PDFWorkerStreamRangeReader(begin, end, msgHandler) {\n _classCallCheck(this, PDFWorkerStreamRangeReader);\n\n this._msgHandler = msgHandler;\n this.onProgress = null;\n\n var readableStream = this._msgHandler.sendWithStream(\"GetRangeReader\", {\n begin: begin,\n end: end\n });\n\n this._reader = readableStream.getReader();\n }\n\n _createClass(PDFWorkerStreamRangeReader, [{\n key: \"read\",\n value: function () {\n var _read2 = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee2() {\n var _yield$this$_reader$r2, value, done;\n\n return _regenerator[\"default\"].wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this._reader.read();\n\n case 2:\n _yield$this$_reader$r2 = _context2.sent;\n value = _yield$this$_reader$r2.value;\n done = _yield$this$_reader$r2.done;\n\n if (!done) {\n _context2.next = 7;\n break;\n }\n\n return _context2.abrupt(\"return\", {\n value: undefined,\n done: true\n });\n\n case 7:\n return _context2.abrupt(\"return\", {\n value: value.buffer,\n done: false\n });\n\n case 8:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function read() {\n return _read2.apply(this, arguments);\n }\n\n return read;\n }()\n }, {\n key: \"cancel\",\n value: function cancel(reason) {\n this._reader.cancel(reason);\n }\n }, {\n key: \"isStreamingSupported\",\n get: function get() {\n return false;\n }\n }]);\n\n return PDFWorkerStreamRangeReader;\n}();\n\n/***/ })\n/******/ ]);\n});\n//# sourceMappingURL=pdf.worker.js.map","/**\n * @licstart The following is the entire license notice for the\n * Javascript code in this page\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 * @licend The above is the entire license notice for the\n * Javascript code in this page\n */\n\n(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\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf\"] = root.pdfjsLib = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __w_pdfjs_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__w_pdfjs_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__w_pdfjs_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__w_pdfjs_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__w_pdfjs_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__w_pdfjs_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__w_pdfjs_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __w_pdfjs_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__w_pdfjs_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __w_pdfjs_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__w_pdfjs_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__w_pdfjs_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__w_pdfjs_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__w_pdfjs_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __w_pdfjs_require__(__w_pdfjs_require__.s = 0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"addLinkAttributes\", {\n enumerable: true,\n get: function get() {\n return _display_utils.addLinkAttributes;\n }\n});\nObject.defineProperty(exports, \"getFilenameFromUrl\", {\n enumerable: true,\n get: function get() {\n return _display_utils.getFilenameFromUrl;\n }\n});\nObject.defineProperty(exports, \"LinkTarget\", {\n enumerable: true,\n get: function get() {\n return _display_utils.LinkTarget;\n }\n});\nObject.defineProperty(exports, \"loadScript\", {\n enumerable: true,\n get: function get() {\n return _display_utils.loadScript;\n }\n});\nObject.defineProperty(exports, \"PDFDateString\", {\n enumerable: true,\n get: function get() {\n return _display_utils.PDFDateString;\n }\n});\nObject.defineProperty(exports, \"RenderingCancelledException\", {\n enumerable: true,\n get: function get() {\n return _display_utils.RenderingCancelledException;\n }\n});\nObject.defineProperty(exports, \"build\", {\n enumerable: true,\n get: function get() {\n return _api.build;\n }\n});\nObject.defineProperty(exports, \"getDocument\", {\n enumerable: true,\n get: function get() {\n return _api.getDocument;\n }\n});\nObject.defineProperty(exports, \"LoopbackPort\", {\n enumerable: true,\n get: function get() {\n return _api.LoopbackPort;\n }\n});\nObject.defineProperty(exports, \"PDFDataRangeTransport\", {\n enumerable: true,\n get: function get() {\n return _api.PDFDataRangeTransport;\n }\n});\nObject.defineProperty(exports, \"PDFWorker\", {\n enumerable: true,\n get: function get() {\n return _api.PDFWorker;\n }\n});\nObject.defineProperty(exports, \"version\", {\n enumerable: true,\n get: function get() {\n return _api.version;\n }\n});\nObject.defineProperty(exports, \"CMapCompressionType\", {\n enumerable: true,\n get: function get() {\n return _util.CMapCompressionType;\n }\n});\nObject.defineProperty(exports, \"createObjectURL\", {\n enumerable: true,\n get: function get() {\n return _util.createObjectURL;\n }\n});\nObject.defineProperty(exports, \"createPromiseCapability\", {\n enumerable: true,\n get: function get() {\n return _util.createPromiseCapability;\n }\n});\nObject.defineProperty(exports, \"createValidAbsoluteUrl\", {\n enumerable: true,\n get: function get() {\n return _util.createValidAbsoluteUrl;\n }\n});\nObject.defineProperty(exports, \"InvalidPDFException\", {\n enumerable: true,\n get: function get() {\n return _util.InvalidPDFException;\n }\n});\nObject.defineProperty(exports, \"MissingPDFException\", {\n enumerable: true,\n get: function get() {\n return _util.MissingPDFException;\n }\n});\nObject.defineProperty(exports, \"OPS\", {\n enumerable: true,\n get: function get() {\n return _util.OPS;\n }\n});\nObject.defineProperty(exports, \"PasswordResponses\", {\n enumerable: true,\n get: function get() {\n return _util.PasswordResponses;\n }\n});\nObject.defineProperty(exports, \"PermissionFlag\", {\n enumerable: true,\n get: function get() {\n return _util.PermissionFlag;\n }\n});\nObject.defineProperty(exports, \"removeNullCharacters\", {\n enumerable: true,\n get: function get() {\n return _util.removeNullCharacters;\n }\n});\nObject.defineProperty(exports, \"shadow\", {\n enumerable: true,\n get: function get() {\n return _util.shadow;\n }\n});\nObject.defineProperty(exports, \"UnexpectedResponseException\", {\n enumerable: true,\n get: function get() {\n return _util.UnexpectedResponseException;\n }\n});\nObject.defineProperty(exports, \"UNSUPPORTED_FEATURES\", {\n enumerable: true,\n get: function get() {\n return _util.UNSUPPORTED_FEATURES;\n }\n});\nObject.defineProperty(exports, \"Util\", {\n enumerable: true,\n get: function get() {\n return _util.Util;\n }\n});\nObject.defineProperty(exports, \"VerbosityLevel\", {\n enumerable: true,\n get: function get() {\n return _util.VerbosityLevel;\n }\n});\nObject.defineProperty(exports, \"AnnotationLayer\", {\n enumerable: true,\n get: function get() {\n return _annotation_layer.AnnotationLayer;\n }\n});\nObject.defineProperty(exports, \"apiCompatibilityParams\", {\n enumerable: true,\n get: function get() {\n return _api_compatibility.apiCompatibilityParams;\n }\n});\nObject.defineProperty(exports, \"GlobalWorkerOptions\", {\n enumerable: true,\n get: function get() {\n return _worker_options.GlobalWorkerOptions;\n }\n});\nObject.defineProperty(exports, \"renderTextLayer\", {\n enumerable: true,\n get: function get() {\n return _text_layer.renderTextLayer;\n }\n});\nObject.defineProperty(exports, \"SVGGraphics\", {\n enumerable: true,\n get: function get() {\n return _svg.SVGGraphics;\n }\n});\n\nvar _display_utils = __w_pdfjs_require__(1);\n\nvar _api = __w_pdfjs_require__(198);\n\nvar _util = __w_pdfjs_require__(5);\n\nvar _annotation_layer = __w_pdfjs_require__(209);\n\nvar _api_compatibility = __w_pdfjs_require__(200);\n\nvar _worker_options = __w_pdfjs_require__(203);\n\nvar _text_layer = __w_pdfjs_require__(210);\n\nvar _svg = __w_pdfjs_require__(211);\n\nvar pdfjsVersion = '2.5.207';\nvar pdfjsBuild = '0974d605';\n{\n var _require = __w_pdfjs_require__(7),\n isNodeJS = _require.isNodeJS;\n\n if (isNodeJS) {\n var PDFNodeStream = __w_pdfjs_require__(212).PDFNodeStream;\n\n (0, _api.setPDFNetworkStreamFactory)(function (params) {\n return new PDFNodeStream(params);\n });\n } else {\n var PDFNetworkStream = __w_pdfjs_require__(215).PDFNetworkStream;\n\n var PDFFetchStream;\n\n if ((0, _display_utils.isFetchSupported)()) {\n PDFFetchStream = __w_pdfjs_require__(216).PDFFetchStream;\n }\n\n (0, _api.setPDFNetworkStreamFactory)(function (params) {\n if (PDFFetchStream && (0, _display_utils.isValidFetchUrl)(params.url)) {\n return new PDFFetchStream(params);\n }\n\n return new PDFNetworkStream(params);\n });\n }\n}\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.addLinkAttributes = addLinkAttributes;\nexports.getFilenameFromUrl = getFilenameFromUrl;\nexports.isFetchSupported = isFetchSupported;\nexports.isValidFetchUrl = isValidFetchUrl;\nexports.loadScript = loadScript;\nexports.deprecated = deprecated;\nexports.PDFDateString = exports.StatTimer = exports.DOMSVGFactory = exports.DOMCMapReaderFactory = exports.DOMCanvasFactory = exports.DEFAULT_LINK_REL = exports.LinkTarget = exports.RenderingCancelledException = exports.PageViewport = void 0;\n\nvar _regenerator = _interopRequireDefault(__w_pdfjs_require__(2));\n\nvar _util = __w_pdfjs_require__(5);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar DEFAULT_LINK_REL = \"noopener noreferrer nofollow\";\nexports.DEFAULT_LINK_REL = DEFAULT_LINK_REL;\nvar SVG_NS = \"http://www.w3.org/2000/svg\";\n\nvar DOMCanvasFactory = /*#__PURE__*/function () {\n function DOMCanvasFactory() {\n _classCallCheck(this, DOMCanvasFactory);\n }\n\n _createClass(DOMCanvasFactory, [{\n key: \"create\",\n value: function create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n\n var canvas = document.createElement(\"canvas\");\n var context = canvas.getContext(\"2d\");\n canvas.width = width;\n canvas.height = height;\n return {\n canvas: canvas,\n context: context\n };\n }\n }, {\n key: \"reset\",\n value: function reset(canvasAndContext, width, height) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n\n canvasAndContext.canvas.width = width;\n canvasAndContext.canvas.height = height;\n }\n }, {\n key: \"destroy\",\n value: function destroy(canvasAndContext) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n\n canvasAndContext.canvas.width = 0;\n canvasAndContext.canvas.height = 0;\n canvasAndContext.canvas = null;\n canvasAndContext.context = null;\n }\n }]);\n\n return DOMCanvasFactory;\n}();\n\nexports.DOMCanvasFactory = DOMCanvasFactory;\n\nvar DOMCMapReaderFactory = /*#__PURE__*/function () {\n function DOMCMapReaderFactory(_ref) {\n var _ref$baseUrl = _ref.baseUrl,\n baseUrl = _ref$baseUrl === void 0 ? null : _ref$baseUrl,\n _ref$isCompressed = _ref.isCompressed,\n isCompressed = _ref$isCompressed === void 0 ? false : _ref$isCompressed;\n\n _classCallCheck(this, DOMCMapReaderFactory);\n\n this.baseUrl = baseUrl;\n this.isCompressed = isCompressed;\n }\n\n _createClass(DOMCMapReaderFactory, [{\n key: \"fetch\",\n value: function (_fetch) {\n function fetch(_x) {\n return _fetch.apply(this, arguments);\n }\n\n fetch.toString = function () {\n return _fetch.toString();\n };\n\n return fetch;\n }( /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee2(_ref2) {\n var _this = this;\n\n var name, url, compressionType;\n return _regenerator[\"default\"].wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n name = _ref2.name;\n\n if (this.baseUrl) {\n _context2.next = 3;\n break;\n }\n\n throw new Error('The CMap \"baseUrl\" parameter must be specified, ensure that ' + 'the \"cMapUrl\" and \"cMapPacked\" API parameters are provided.');\n\n case 3:\n if (name) {\n _context2.next = 5;\n break;\n }\n\n throw new Error(\"CMap name must be specified.\");\n\n case 5:\n url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n compressionType = this.isCompressed ? _util.CMapCompressionType.BINARY : _util.CMapCompressionType.NONE;\n\n if (!(isFetchSupported() && isValidFetchUrl(url, document.baseURI))) {\n _context2.next = 9;\n break;\n }\n\n return _context2.abrupt(\"return\", fetch(url).then( /*#__PURE__*/function () {\n var _ref4 = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee(response) {\n var cMapData;\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (response.ok) {\n _context.next = 2;\n break;\n }\n\n throw new Error(response.statusText);\n\n case 2:\n if (!_this.isCompressed) {\n _context.next = 10;\n break;\n }\n\n _context.t0 = Uint8Array;\n _context.next = 6;\n return response.arrayBuffer();\n\n case 6:\n _context.t1 = _context.sent;\n cMapData = new _context.t0(_context.t1);\n _context.next = 15;\n break;\n\n case 10:\n _context.t2 = _util.stringToBytes;\n _context.next = 13;\n return response.text();\n\n case 13:\n _context.t3 = _context.sent;\n cMapData = (0, _context.t2)(_context.t3);\n\n case 15:\n return _context.abrupt(\"return\", {\n cMapData: cMapData,\n compressionType: compressionType\n });\n\n case 16:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function (_x3) {\n return _ref4.apply(this, arguments);\n };\n }())[\"catch\"](function (reason) {\n throw new Error(\"Unable to load \".concat(_this.isCompressed ? \"binary \" : \"\") + \"CMap at: \".concat(url));\n }));\n\n case 9:\n return _context2.abrupt(\"return\", new Promise(function (resolve, reject) {\n var request = new XMLHttpRequest();\n request.open(\"GET\", url, true);\n\n if (_this.isCompressed) {\n request.responseType = \"arraybuffer\";\n }\n\n request.onreadystatechange = function () {\n if (request.readyState !== XMLHttpRequest.DONE) {\n return;\n }\n\n if (request.status === 200 || request.status === 0) {\n var cMapData;\n\n if (_this.isCompressed && request.response) {\n cMapData = new Uint8Array(request.response);\n } else if (!_this.isCompressed && request.responseText) {\n cMapData = (0, _util.stringToBytes)(request.responseText);\n }\n\n if (cMapData) {\n resolve({\n cMapData: cMapData,\n compressionType: compressionType\n });\n return;\n }\n }\n\n reject(new Error(request.statusText));\n };\n\n request.send(null);\n })[\"catch\"](function (reason) {\n throw new Error(\"Unable to load \".concat(_this.isCompressed ? \"binary \" : \"\") + \"CMap at: \".concat(url));\n }));\n\n case 10:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n return function (_x2) {\n return _ref3.apply(this, arguments);\n };\n }())\n }]);\n\n return DOMCMapReaderFactory;\n}();\n\nexports.DOMCMapReaderFactory = DOMCMapReaderFactory;\n\nvar DOMSVGFactory = /*#__PURE__*/function () {\n function DOMSVGFactory() {\n _classCallCheck(this, DOMSVGFactory);\n }\n\n _createClass(DOMSVGFactory, [{\n key: \"create\",\n value: function create(width, height) {\n (0, _util.assert)(width > 0 && height > 0, \"Invalid SVG dimensions\");\n var svg = document.createElementNS(SVG_NS, \"svg:svg\");\n svg.setAttribute(\"version\", \"1.1\");\n svg.setAttribute(\"width\", width + \"px\");\n svg.setAttribute(\"height\", height + \"px\");\n svg.setAttribute(\"preserveAspectRatio\", \"none\");\n svg.setAttribute(\"viewBox\", \"0 0 \" + width + \" \" + height);\n return svg;\n }\n }, {\n key: \"createElement\",\n value: function createElement(type) {\n (0, _util.assert)(typeof type === \"string\", \"Invalid SVG element type\");\n return document.createElementNS(SVG_NS, type);\n }\n }]);\n\n return DOMSVGFactory;\n}();\n\nexports.DOMSVGFactory = DOMSVGFactory;\n\nvar PageViewport = /*#__PURE__*/function () {\n function PageViewport(_ref5) {\n var viewBox = _ref5.viewBox,\n scale = _ref5.scale,\n rotation = _ref5.rotation,\n _ref5$offsetX = _ref5.offsetX,\n offsetX = _ref5$offsetX === void 0 ? 0 : _ref5$offsetX,\n _ref5$offsetY = _ref5.offsetY,\n offsetY = _ref5$offsetY === void 0 ? 0 : _ref5$offsetY,\n _ref5$dontFlip = _ref5.dontFlip,\n dontFlip = _ref5$dontFlip === void 0 ? false : _ref5$dontFlip;\n\n _classCallCheck(this, PageViewport);\n\n this.viewBox = viewBox;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n var centerX = (viewBox[2] + viewBox[0]) / 2;\n var centerY = (viewBox[3] + viewBox[1]) / 2;\n var rotateA, rotateB, rotateC, rotateD;\n rotation = rotation % 360;\n rotation = rotation < 0 ? rotation + 360 : rotation;\n\n switch (rotation) {\n case 180:\n rotateA = -1;\n rotateB = 0;\n rotateC = 0;\n rotateD = 1;\n break;\n\n case 90:\n rotateA = 0;\n rotateB = 1;\n rotateC = 1;\n rotateD = 0;\n break;\n\n case 270:\n rotateA = 0;\n rotateB = -1;\n rotateC = -1;\n rotateD = 0;\n break;\n\n case 0:\n rotateA = 1;\n rotateB = 0;\n rotateC = 0;\n rotateD = -1;\n break;\n\n default:\n throw new Error(\"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\");\n }\n\n if (dontFlip) {\n rotateC = -rotateC;\n rotateD = -rotateD;\n }\n\n var offsetCanvasX, offsetCanvasY;\n var width, height;\n\n if (rotateA === 0) {\n offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n width = Math.abs(viewBox[3] - viewBox[1]) * scale;\n height = Math.abs(viewBox[2] - viewBox[0]) * scale;\n } else {\n offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n width = Math.abs(viewBox[2] - viewBox[0]) * scale;\n height = Math.abs(viewBox[3] - viewBox[1]) * scale;\n }\n\n this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY];\n this.width = width;\n this.height = height;\n }\n\n _createClass(PageViewport, [{\n key: \"clone\",\n value: function clone() {\n var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref6$scale = _ref6.scale,\n scale = _ref6$scale === void 0 ? this.scale : _ref6$scale,\n _ref6$rotation = _ref6.rotation,\n rotation = _ref6$rotation === void 0 ? this.rotation : _ref6$rotation,\n _ref6$offsetX = _ref6.offsetX,\n offsetX = _ref6$offsetX === void 0 ? this.offsetX : _ref6$offsetX,\n _ref6$offsetY = _ref6.offsetY,\n offsetY = _ref6$offsetY === void 0 ? this.offsetY : _ref6$offsetY,\n _ref6$dontFlip = _ref6.dontFlip,\n dontFlip = _ref6$dontFlip === void 0 ? false : _ref6$dontFlip;\n\n return new PageViewport({\n viewBox: this.viewBox.slice(),\n scale: scale,\n rotation: rotation,\n offsetX: offsetX,\n offsetY: offsetY,\n dontFlip: dontFlip\n });\n }\n }, {\n key: \"convertToViewportPoint\",\n value: function convertToViewportPoint(x, y) {\n return _util.Util.applyTransform([x, y], this.transform);\n }\n }, {\n key: \"convertToViewportRectangle\",\n value: function convertToViewportRectangle(rect) {\n var topLeft = _util.Util.applyTransform([rect[0], rect[1]], this.transform);\n\n var bottomRight = _util.Util.applyTransform([rect[2], rect[3]], this.transform);\n\n return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n }\n }, {\n key: \"convertToPdfPoint\",\n value: function convertToPdfPoint(x, y) {\n return _util.Util.applyInverseTransform([x, y], this.transform);\n }\n }]);\n\n return PageViewport;\n}();\n\nexports.PageViewport = PageViewport;\n\nvar RenderingCancelledException = /*#__PURE__*/function (_BaseException) {\n _inherits(RenderingCancelledException, _BaseException);\n\n var _super = _createSuper(RenderingCancelledException);\n\n function RenderingCancelledException(msg, type) {\n var _this2;\n\n _classCallCheck(this, RenderingCancelledException);\n\n _this2 = _super.call(this, msg);\n _this2.type = type;\n return _this2;\n }\n\n return RenderingCancelledException;\n}(_util.BaseException);\n\nexports.RenderingCancelledException = RenderingCancelledException;\nvar LinkTarget = {\n NONE: 0,\n SELF: 1,\n BLANK: 2,\n PARENT: 3,\n TOP: 4\n};\nexports.LinkTarget = LinkTarget;\n\nfunction addLinkAttributes(link) {\n var _ref7 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n url = _ref7.url,\n target = _ref7.target,\n rel = _ref7.rel,\n _ref7$enabled = _ref7.enabled,\n enabled = _ref7$enabled === void 0 ? true : _ref7$enabled;\n\n (0, _util.assert)(url && typeof url === \"string\", 'addLinkAttributes: A valid \"url\" parameter must provided.');\n var urlNullRemoved = (0, _util.removeNullCharacters)(url);\n\n if (enabled) {\n link.href = link.title = urlNullRemoved;\n } else {\n link.href = \"\";\n link.title = \"Disabled: \".concat(urlNullRemoved);\n\n link.onclick = function () {\n return false;\n };\n }\n\n var targetStr = \"\";\n\n switch (target) {\n case LinkTarget.NONE:\n break;\n\n case LinkTarget.SELF:\n targetStr = \"_self\";\n break;\n\n case LinkTarget.BLANK:\n targetStr = \"_blank\";\n break;\n\n case LinkTarget.PARENT:\n targetStr = \"_parent\";\n break;\n\n case LinkTarget.TOP:\n targetStr = \"_top\";\n break;\n }\n\n link.target = targetStr;\n link.rel = typeof rel === \"string\" ? rel : DEFAULT_LINK_REL;\n}\n\nfunction getFilenameFromUrl(url) {\n var anchor = url.indexOf(\"#\");\n var query = url.indexOf(\"?\");\n var end = Math.min(anchor > 0 ? anchor : url.length, query > 0 ? query : url.length);\n return url.substring(url.lastIndexOf(\"/\", end) + 1, end);\n}\n\nvar StatTimer = /*#__PURE__*/function () {\n function StatTimer() {\n _classCallCheck(this, StatTimer);\n\n this.started = Object.create(null);\n this.times = [];\n }\n\n _createClass(StatTimer, [{\n key: \"time\",\n value: function time(name) {\n if (name in this.started) {\n (0, _util.warn)(\"Timer is already running for \".concat(name));\n }\n\n this.started[name] = Date.now();\n }\n }, {\n key: \"timeEnd\",\n value: function timeEnd(name) {\n if (!(name in this.started)) {\n (0, _util.warn)(\"Timer has not been started for \".concat(name));\n }\n\n this.times.push({\n name: name,\n start: this.started[name],\n end: Date.now()\n });\n delete this.started[name];\n }\n }, {\n key: \"toString\",\n value: function toString() {\n var outBuf = [];\n var longest = 0;\n\n var _iterator = _createForOfIteratorHelper(this.times),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var time = _step.value;\n var name = time.name;\n\n if (name.length > longest) {\n longest = name.length;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n var _iterator2 = _createForOfIteratorHelper(this.times),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _time = _step2.value;\n var duration = _time.end - _time.start;\n outBuf.push(\"\".concat(_time.name.padEnd(longest), \" \").concat(duration, \"ms\\n\"));\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n return outBuf.join(\"\");\n }\n }]);\n\n return StatTimer;\n}();\n\nexports.StatTimer = StatTimer;\n\nfunction isFetchSupported() {\n return typeof fetch !== \"undefined\" && typeof Response !== \"undefined\" && \"body\" in Response.prototype && typeof ReadableStream !== \"undefined\";\n}\n\nfunction isValidFetchUrl(url, baseUrl) {\n try {\n var _ref8 = baseUrl ? new URL(url, baseUrl) : new URL(url),\n protocol = _ref8.protocol;\n\n return protocol === \"http:\" || protocol === \"https:\";\n } catch (ex) {\n return false;\n }\n}\n\nfunction loadScript(src) {\n return new Promise(function (resolve, reject) {\n var script = document.createElement(\"script\");\n script.src = src;\n script.onload = resolve;\n\n script.onerror = function () {\n reject(new Error(\"Cannot load script at: \".concat(script.src)));\n };\n\n (document.head || document.documentElement).appendChild(script);\n });\n}\n\nfunction deprecated(details) {\n console.log(\"Deprecated API usage: \" + details);\n}\n\nvar pdfDateStringRegex;\n\nvar PDFDateString = /*#__PURE__*/function () {\n function PDFDateString() {\n _classCallCheck(this, PDFDateString);\n }\n\n _createClass(PDFDateString, null, [{\n key: \"toDateObject\",\n value: function toDateObject(input) {\n if (!input || !(0, _util.isString)(input)) {\n return null;\n }\n\n if (!pdfDateStringRegex) {\n pdfDateStringRegex = new RegExp(\"^D:\" + \"(\\\\d{4})\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"([Z|+|-])?\" + \"(\\\\d{2})?\" + \"'?\" + \"(\\\\d{2})?\" + \"'?\");\n }\n\n var matches = pdfDateStringRegex.exec(input);\n\n if (!matches) {\n return null;\n }\n\n var year = parseInt(matches[1], 10);\n var month = parseInt(matches[2], 10);\n month = month >= 1 && month <= 12 ? month - 1 : 0;\n var day = parseInt(matches[3], 10);\n day = day >= 1 && day <= 31 ? day : 1;\n var hour = parseInt(matches[4], 10);\n hour = hour >= 0 && hour <= 23 ? hour : 0;\n var minute = parseInt(matches[5], 10);\n minute = minute >= 0 && minute <= 59 ? minute : 0;\n var second = parseInt(matches[6], 10);\n second = second >= 0 && second <= 59 ? second : 0;\n var universalTimeRelation = matches[7] || \"Z\";\n var offsetHour = parseInt(matches[8], 10);\n offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;\n var offsetMinute = parseInt(matches[9], 10) || 0;\n offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;\n\n if (universalTimeRelation === \"-\") {\n hour += offsetHour;\n minute += offsetMinute;\n } else if (universalTimeRelation === \"+\") {\n hour -= offsetHour;\n minute -= offsetMinute;\n }\n\n return new Date(Date.UTC(year, month, day, hour, minute, second));\n }\n }]);\n\n return PDFDateString;\n}();\n\nexports.PDFDateString = PDFDateString;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nmodule.exports = __w_pdfjs_require__(3);\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(module) {\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar runtime = function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined;\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n return generator;\n }\n\n exports.wrap = wrap;\n\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n var ContinueSentinel = {};\n\n function Generator() {}\n\n function GeneratorFunction() {}\n\n function GeneratorFunctionPrototype() {}\n\n var IteratorPrototype = {};\n\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n\n if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] = GeneratorFunction.displayName = \"GeneratorFunction\";\n\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n prototype[method] = function (arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n exports.isGeneratorFunction = function (genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor ? ctor === GeneratorFunction || (ctor.displayName || ctor.name) === \"GeneratorFunction\" : false;\n };\n\n exports.mark = function (genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n exports.awrap = function (arg) {\n return {\n __await: arg\n };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n\n if (value && _typeof(value) === \"object\" && hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped;\n resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n\n exports.AsyncIterator = AsyncIterator;\n\n exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n context.sent = context._sent = context.arg;\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n var record = tryCatch(innerFn, self, context);\n\n if (record.type === \"normal\") {\n state = context.done ? GenStateCompleted : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n\n if (method === undefined) {\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator[\"return\"]) {\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (!info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n context[delegate.resultName] = info.value;\n context.next = delegate.nextLoc;\n\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n } else {\n return info;\n }\n\n context.delegate = null;\n return ContinueSentinel;\n }\n\n defineIteratorMethods(Gp);\n Gp[toStringTagSymbol] = \"Generator\";\n\n Gp[iteratorSymbol] = function () {\n return this;\n };\n\n Gp.toString = function () {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function (object) {\n var keys = [];\n\n for (var key in object) {\n keys.push(key);\n }\n\n keys.reverse();\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n return next;\n };\n\n return next.next = next;\n }\n }\n\n return {\n next: doneResult\n };\n }\n\n exports.values = values;\n\n function doneResult() {\n return {\n value: undefined,\n done: true\n };\n }\n\n Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n this.method = \"next\";\n this.arg = undefined;\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n if (name.charAt(0) === \"t\" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n stop: function stop() {\n this.done = true;\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !!caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry && (type === \"break\" || type === \"continue\") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) {\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" || record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n\n return thrown;\n }\n }\n\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n return exports;\n}(( false ? undefined : _typeof(module)) === \"object\" ? module.exports : {});\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n/* WEBPACK VAR INJECTION */}.call(this, __w_pdfjs_require__(4)(module)))\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function (module) {\n if (!module.webpackPolyfill) {\n module.deprecate = function () {};\n\n module.paths = [];\n if (!module.children) module.children = [];\n Object.defineProperty(module, \"loaded\", {\n enumerable: true,\n get: function get() {\n return module.l;\n }\n });\n Object.defineProperty(module, \"id\", {\n enumerable: true,\n get: function get() {\n return module.i;\n }\n });\n module.webpackPolyfill = 1;\n }\n\n return module;\n};\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.arrayByteLength = arrayByteLength;\nexports.arraysToBytes = arraysToBytes;\nexports.assert = assert;\nexports.bytesToString = bytesToString;\nexports.createPromiseCapability = createPromiseCapability;\nexports.getVerbosityLevel = getVerbosityLevel;\nexports.info = info;\nexports.isArrayBuffer = isArrayBuffer;\nexports.isArrayEqual = isArrayEqual;\nexports.isBool = isBool;\nexports.isEmptyObj = isEmptyObj;\nexports.isNum = isNum;\nexports.isString = isString;\nexports.isSameOrigin = isSameOrigin;\nexports.createValidAbsoluteUrl = createValidAbsoluteUrl;\nexports.removeNullCharacters = removeNullCharacters;\nexports.setVerbosityLevel = setVerbosityLevel;\nexports.shadow = shadow;\nexports.string32 = string32;\nexports.stringToBytes = stringToBytes;\nexports.stringToPDFString = stringToPDFString;\nexports.stringToUTF8String = stringToUTF8String;\nexports.utf8StringToString = utf8StringToString;\nexports.warn = warn;\nexports.unreachable = unreachable;\nexports.IsEvalSupportedCached = exports.IsLittleEndianCached = exports.createObjectURL = exports.FormatError = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.MissingPDFException = exports.InvalidPDFException = exports.AbortException = exports.CMapCompressionType = exports.ImageKind = exports.FontType = exports.AnnotationType = exports.AnnotationStateModelType = exports.AnnotationReviewState = exports.AnnotationReplyType = exports.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.UNSUPPORTED_FEATURES = exports.VerbosityLevel = exports.OPS = exports.IDENTITY_MATRIX = exports.FONT_IDENTITY_MATRIX = exports.BaseException = void 0;\n\n__w_pdfjs_require__(6);\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nexports.IDENTITY_MATRIX = IDENTITY_MATRIX;\nvar FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\nexports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX;\nvar 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};\nexports.PermissionFlag = PermissionFlag;\nvar 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};\nexports.TextRenderingMode = TextRenderingMode;\nvar ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3\n};\nexports.ImageKind = ImageKind;\nvar 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};\nexports.AnnotationType = AnnotationType;\nvar AnnotationStateModelType = {\n MARKED: \"Marked\",\n REVIEW: \"Review\"\n};\nexports.AnnotationStateModelType = AnnotationStateModelType;\nvar AnnotationMarkedState = {\n MARKED: \"Marked\",\n UNMARKED: \"Unmarked\"\n};\nexports.AnnotationMarkedState = AnnotationMarkedState;\nvar AnnotationReviewState = {\n ACCEPTED: \"Accepted\",\n REJECTED: \"Rejected\",\n CANCELLED: \"Cancelled\",\n COMPLETED: \"Completed\",\n NONE: \"None\"\n};\nexports.AnnotationReviewState = AnnotationReviewState;\nvar AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\"\n};\nexports.AnnotationReplyType = AnnotationReplyType;\nvar 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};\nexports.AnnotationFlag = AnnotationFlag;\nvar 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};\nexports.AnnotationFieldFlag = AnnotationFieldFlag;\nvar AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5\n};\nexports.AnnotationBorderStyleType = AnnotationBorderStyleType;\nvar 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\"\n};\nexports.StreamType = StreamType;\nvar FontType = {\n UNKNOWN: \"UNKNOWN\",\n TYPE1: \"TYPE1\",\n TYPE1C: \"TYPE1C\",\n CIDFONTTYPE0: \"CIDFONTTYPE0\",\n CIDFONTTYPE0C: \"CIDFONTTYPE0C\",\n TRUETYPE: \"TRUETYPE\",\n CIDFONTTYPE2: \"CIDFONTTYPE2\",\n TYPE3: \"TYPE3\",\n OPENTYPE: \"OPENTYPE\",\n TYPE0: \"TYPE0\",\n MMTYPE1: \"MMTYPE1\"\n};\nexports.FontType = FontType;\nvar VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5\n};\nexports.VerbosityLevel = VerbosityLevel;\nvar CMapCompressionType = {\n NONE: 0,\n BINARY: 1,\n STREAM: 2\n};\nexports.CMapCompressionType = CMapCompressionType;\nvar OPS = {\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotations: 78,\n endAnnotations: 79,\n beginAnnotation: 80,\n endAnnotation: 81,\n paintJpegXObject: 82,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91\n};\nexports.OPS = OPS;\nvar UNSUPPORTED_FEATURES = {\n unknown: \"unknown\",\n forms: \"forms\",\n javaScript: \"javaScript\",\n smask: \"smask\",\n shadingPattern: \"shadingPattern\",\n font: \"font\",\n errorTilingPattern: \"errorTilingPattern\",\n errorExtGState: \"errorExtGState\",\n errorXObject: \"errorXObject\",\n errorFontLoadType3: \"errorFontLoadType3\",\n errorFontState: \"errorFontState\",\n errorFontMissing: \"errorFontMissing\",\n errorFontTranslate: \"errorFontTranslate\",\n errorColorSpace: \"errorColorSpace\",\n errorOperatorList: \"errorOperatorList\",\n errorFontToUnicode: \"errorFontToUnicode\",\n errorFontLoadNative: \"errorFontLoadNative\",\n errorFontGetPath: \"errorFontGetPath\"\n};\nexports.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES;\nvar PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2\n};\nexports.PasswordResponses = PasswordResponses;\nvar 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\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(\"Info: \".concat(msg));\n }\n}\n\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(\"Warning: \".concat(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\nfunction isSameOrigin(baseUrl, otherUrl) {\n var base;\n\n try {\n base = new URL(baseUrl);\n\n if (!base.origin || base.origin === \"null\") {\n return false;\n }\n } catch (e) {\n return false;\n }\n\n var other = new URL(otherUrl, base);\n return base.origin === other.origin;\n}\n\nfunction _isValidProtocol(url) {\n if (!url) {\n return false;\n }\n\n switch (url.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n\n default:\n return false;\n }\n}\n\nfunction createValidAbsoluteUrl(url, baseUrl) {\n if (!url) {\n return null;\n }\n\n try {\n var absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch (ex) {}\n\n return null;\n}\n\nfunction shadow(obj, prop, value) {\n Object.defineProperty(obj, prop, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: false\n });\n return value;\n}\n\nvar BaseException = function BaseExceptionClosure() {\n function BaseException(message) {\n if (this.constructor === BaseException) {\n unreachable(\"Cannot initialize BaseException.\");\n }\n\n this.message = message;\n this.name = this.constructor.name;\n }\n\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n return BaseException;\n}();\n\nexports.BaseException = BaseException;\n\nvar PasswordException = /*#__PURE__*/function (_BaseException) {\n _inherits(PasswordException, _BaseException);\n\n var _super = _createSuper(PasswordException);\n\n function PasswordException(msg, code) {\n var _this;\n\n _classCallCheck(this, PasswordException);\n\n _this = _super.call(this, msg);\n _this.code = code;\n return _this;\n }\n\n return PasswordException;\n}(BaseException);\n\nexports.PasswordException = PasswordException;\n\nvar UnknownErrorException = /*#__PURE__*/function (_BaseException2) {\n _inherits(UnknownErrorException, _BaseException2);\n\n var _super2 = _createSuper(UnknownErrorException);\n\n function UnknownErrorException(msg, details) {\n var _this2;\n\n _classCallCheck(this, UnknownErrorException);\n\n _this2 = _super2.call(this, msg);\n _this2.details = details;\n return _this2;\n }\n\n return UnknownErrorException;\n}(BaseException);\n\nexports.UnknownErrorException = UnknownErrorException;\n\nvar InvalidPDFException = /*#__PURE__*/function (_BaseException3) {\n _inherits(InvalidPDFException, _BaseException3);\n\n var _super3 = _createSuper(InvalidPDFException);\n\n function InvalidPDFException() {\n _classCallCheck(this, InvalidPDFException);\n\n return _super3.apply(this, arguments);\n }\n\n return InvalidPDFException;\n}(BaseException);\n\nexports.InvalidPDFException = InvalidPDFException;\n\nvar MissingPDFException = /*#__PURE__*/function (_BaseException4) {\n _inherits(MissingPDFException, _BaseException4);\n\n var _super4 = _createSuper(MissingPDFException);\n\n function MissingPDFException() {\n _classCallCheck(this, MissingPDFException);\n\n return _super4.apply(this, arguments);\n }\n\n return MissingPDFException;\n}(BaseException);\n\nexports.MissingPDFException = MissingPDFException;\n\nvar UnexpectedResponseException = /*#__PURE__*/function (_BaseException5) {\n _inherits(UnexpectedResponseException, _BaseException5);\n\n var _super5 = _createSuper(UnexpectedResponseException);\n\n function UnexpectedResponseException(msg, status) {\n var _this3;\n\n _classCallCheck(this, UnexpectedResponseException);\n\n _this3 = _super5.call(this, msg);\n _this3.status = status;\n return _this3;\n }\n\n return UnexpectedResponseException;\n}(BaseException);\n\nexports.UnexpectedResponseException = UnexpectedResponseException;\n\nvar FormatError = /*#__PURE__*/function (_BaseException6) {\n _inherits(FormatError, _BaseException6);\n\n var _super6 = _createSuper(FormatError);\n\n function FormatError() {\n _classCallCheck(this, FormatError);\n\n return _super6.apply(this, arguments);\n }\n\n return FormatError;\n}(BaseException);\n\nexports.FormatError = FormatError;\n\nvar AbortException = /*#__PURE__*/function (_BaseException7) {\n _inherits(AbortException, _BaseException7);\n\n var _super7 = _createSuper(AbortException);\n\n function AbortException() {\n _classCallCheck(this, AbortException);\n\n return _super7.apply(this, arguments);\n }\n\n return AbortException;\n}(BaseException);\n\nexports.AbortException = AbortException;\nvar NullCharactersRegExp = /\\x00/g;\n\nfunction removeNullCharacters(str) {\n if (typeof str !== \"string\") {\n warn(\"The argument for removeNullCharacters must be a string.\");\n return str;\n }\n\n return str.replace(NullCharactersRegExp, \"\");\n}\n\nfunction bytesToString(bytes) {\n assert(bytes !== null && _typeof(bytes) === \"object\" && bytes.length !== undefined, \"Invalid argument for bytesToString\");\n var length = bytes.length;\n var MAX_ARGUMENT_COUNT = 8192;\n\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n\n var strBuf = [];\n\n for (var i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n var chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n var chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n\n return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n assert(typeof str === \"string\", \"Invalid argument for stringToBytes\");\n var length = str.length;\n var bytes = new Uint8Array(length);\n\n for (var i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n\n return bytes;\n}\n\nfunction arrayByteLength(arr) {\n if (arr.length !== undefined) {\n return arr.length;\n }\n\n assert(arr.byteLength !== undefined, \"arrayByteLength - invalid argument.\");\n return arr.byteLength;\n}\n\nfunction arraysToBytes(arr) {\n var length = arr.length;\n\n if (length === 1 && arr[0] instanceof Uint8Array) {\n return arr[0];\n }\n\n var resultLength = 0;\n\n for (var i = 0; i < length; i++) {\n resultLength += arrayByteLength(arr[i]);\n }\n\n var pos = 0;\n var data = new Uint8Array(resultLength);\n\n for (var _i = 0; _i < length; _i++) {\n var item = arr[_i];\n\n if (!(item instanceof Uint8Array)) {\n if (typeof item === \"string\") {\n item = stringToBytes(item);\n } else {\n item = new Uint8Array(item);\n }\n }\n\n var itemLength = item.byteLength;\n data.set(item, pos);\n pos += itemLength;\n }\n\n return data;\n}\n\nfunction string32(value) {\n return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n}\n\nfunction isLittleEndian() {\n var buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n var view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\n\nvar IsLittleEndianCached = {\n get value() {\n return shadow(this, \"value\", isLittleEndian());\n }\n\n};\nexports.IsLittleEndianCached = IsLittleEndianCached;\n\nfunction isEvalSupported() {\n try {\n new Function(\"\");\n return true;\n } catch (e) {\n return false;\n }\n}\n\nvar IsEvalSupportedCached = {\n get value() {\n return shadow(this, \"value\", isEvalSupported());\n }\n\n};\nexports.IsEvalSupportedCached = IsEvalSupportedCached;\nvar rgbBuf = [\"rgb(\", 0, \",\", 0, \",\", 0, \")\"];\n\nvar Util = /*#__PURE__*/function () {\n function Util() {\n _classCallCheck(this, Util);\n }\n\n _createClass(Util, null, [{\n key: \"makeCssRgb\",\n value: function makeCssRgb(r, g, b) {\n rgbBuf[1] = r;\n rgbBuf[3] = g;\n rgbBuf[5] = b;\n return rgbBuf.join(\"\");\n }\n }, {\n key: \"transform\",\n value: function transform(m1, m2) {\n return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];\n }\n }, {\n key: \"applyTransform\",\n value: function applyTransform(p, m) {\n var xt = p[0] * m[0] + p[1] * m[2] + m[4];\n var yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n }\n }, {\n key: \"applyInverseTransform\",\n value: function applyInverseTransform(p, m) {\n var d = m[0] * m[3] - m[1] * m[2];\n var xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n var 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 key: \"getAxialAlignedBoundingBox\",\n value: function getAxialAlignedBoundingBox(r, m) {\n var p1 = Util.applyTransform(r, m);\n var p2 = Util.applyTransform(r.slice(2, 4), m);\n var p3 = Util.applyTransform([r[0], r[3]], m);\n var p4 = Util.applyTransform([r[2], r[1]], m);\n return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])];\n }\n }, {\n key: \"inverseTransform\",\n value: function inverseTransform(m) {\n var d = m[0] * m[3] - m[1] * m[2];\n return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n }\n }, {\n key: \"apply3dTransform\",\n value: function apply3dTransform(m, v) {\n return [m[0] * v[0] + m[1] * v[1] + m[2] * v[2], m[3] * v[0] + m[4] * v[1] + m[5] * v[2], m[6] * v[0] + m[7] * v[1] + m[8] * v[2]];\n }\n }, {\n key: \"singularValueDecompose2dScale\",\n value: function singularValueDecompose2dScale(m) {\n var transpose = [m[0], m[2], m[1], m[3]];\n var a = m[0] * transpose[0] + m[1] * transpose[2];\n var b = m[0] * transpose[1] + m[1] * transpose[3];\n var c = m[2] * transpose[0] + m[3] * transpose[2];\n var d = m[2] * transpose[1] + m[3] * transpose[3];\n var first = (a + d) / 2;\n var second = Math.sqrt((a + d) * (a + d) - 4 * (a * d - c * b)) / 2;\n var sx = first + second || 1;\n var sy = first - second || 1;\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n }, {\n key: \"normalizeRect\",\n value: function normalizeRect(rect) {\n var r = rect.slice(0);\n\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n\n return r;\n }\n }, {\n key: \"intersect\",\n value: function intersect(rect1, rect2) {\n function compare(a, b) {\n return a - b;\n }\n\n var orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare);\n var orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare);\n var result = [];\n rect1 = Util.normalizeRect(rect1);\n rect2 = Util.normalizeRect(rect2);\n\n if (orderedX[0] === rect1[0] && orderedX[1] === rect2[0] || orderedX[0] === rect2[0] && orderedX[1] === rect1[0]) {\n result[0] = orderedX[1];\n result[2] = orderedX[2];\n } else {\n return null;\n }\n\n if (orderedY[0] === rect1[1] && orderedY[1] === rect2[1] || orderedY[0] === rect2[1] && orderedY[1] === rect1[1]) {\n result[1] = orderedY[1];\n result[3] = orderedY[2];\n } else {\n return null;\n }\n\n return result;\n }\n }]);\n\n return Util;\n}();\n\nexports.Util = Util;\nvar PDFStringTranslateTable = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2D8, 0x2C7, 0x2C6, 0x2D9, 0x2DD, 0x2DB, 0x2DA, 0x2DC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203A, 0x2212, 0x2030, 0x201E, 0x201C, 0x201D, 0x2018, 0x2019, 0x201A, 0x2122, 0xFB01, 0xFB02, 0x141, 0x152, 0x160, 0x178, 0x17D, 0x131, 0x142, 0x153, 0x161, 0x17E, 0, 0x20AC];\n\nfunction stringToPDFString(str) {\n var length = str.length,\n strBuf = [];\n\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n for (var i = 2; i < length; i += 2) {\n strBuf.push(String.fromCharCode(str.charCodeAt(i) << 8 | str.charCodeAt(i + 1)));\n }\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n for (var _i2 = 2; _i2 < length; _i2 += 2) {\n strBuf.push(String.fromCharCode(str.charCodeAt(_i2 + 1) << 8 | str.charCodeAt(_i2)));\n }\n } else {\n for (var _i3 = 0; _i3 < length; ++_i3) {\n var code = PDFStringTranslateTable[str.charCodeAt(_i3)];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(_i3));\n }\n }\n\n return strBuf.join(\"\");\n}\n\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\n\nfunction isEmptyObj(obj) {\n for (var key in obj) {\n return false;\n }\n\n return true;\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\n return arr1.every(function (element, index) {\n return element === arr2[index];\n });\n}\n\nfunction createPromiseCapability() {\n var capability = Object.create(null);\n var isSettled = false;\n Object.defineProperty(capability, \"settled\", {\n get: function 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\n capability.reject = function (reason) {\n isSettled = true;\n reject(reason);\n };\n });\n return capability;\n}\n\nvar createObjectURL = function createObjectURLClosure() {\n var digits = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n return function createObjectURL(data, contentType) {\n var forceDataSchema = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (!forceDataSchema && URL.createObjectURL) {\n var blob = new Blob([data], {\n type: contentType\n });\n return URL.createObjectURL(blob);\n }\n\n var buffer = \"data:\".concat(contentType, \";base64,\");\n\n for (var i = 0, ii = data.length; i < ii; i += 3) {\n var b1 = data[i] & 0xff;\n var b2 = data[i + 1] & 0xff;\n var b3 = data[i + 2] & 0xff;\n var d1 = b1 >> 2,\n d2 = (b1 & 3) << 4 | b2 >> 4;\n var d3 = i + 1 < ii ? (b2 & 0xf) << 2 | b3 >> 6 : 64;\n var d4 = i + 2 < ii ? b3 & 0x3f : 64;\n buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];\n }\n\n return buffer;\n };\n}();\n\nexports.createObjectURL = createObjectURL;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _is_node = __w_pdfjs_require__(7);\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nif (typeof globalThis === \"undefined\" || !globalThis._pdfjsCompatibilityChecked) {\n if (typeof globalThis === \"undefined\" || globalThis.Math !== Math) {\n globalThis = __w_pdfjs_require__(8);\n }\n\n globalThis._pdfjsCompatibilityChecked = true;\n var hasDOM = (typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\" && (typeof document === \"undefined\" ? \"undefined\" : _typeof(document)) === \"object\";\n var userAgent = typeof navigator !== \"undefined\" && navigator.userAgent || \"\";\n var isIE = /Trident/.test(userAgent);\n\n (function checkNodeBtoa() {\n if (globalThis.btoa || !_is_node.isNodeJS) {\n return;\n }\n\n globalThis.btoa = function (chars) {\n return Buffer.from(chars, \"binary\").toString(\"base64\");\n };\n })();\n\n (function checkNodeAtob() {\n if (globalThis.atob || !_is_node.isNodeJS) {\n return;\n }\n\n globalThis.atob = function (input) {\n return Buffer.from(input, \"base64\").toString(\"binary\");\n };\n })();\n\n (function checkChildNodeRemove() {\n if (!hasDOM) {\n return;\n }\n\n if (typeof Element.prototype.remove !== \"undefined\") {\n return;\n }\n\n Element.prototype.remove = function () {\n if (this.parentNode) {\n this.parentNode.removeChild(this);\n }\n };\n })();\n\n (function checkDOMTokenListAddRemove() {\n if (!hasDOM || _is_node.isNodeJS) {\n return;\n }\n\n var div = document.createElement(\"div\");\n div.classList.add(\"testOne\", \"testTwo\");\n\n if (div.classList.contains(\"testOne\") === true && div.classList.contains(\"testTwo\") === true) {\n return;\n }\n\n var OriginalDOMTokenListAdd = DOMTokenList.prototype.add;\n var OriginalDOMTokenListRemove = DOMTokenList.prototype.remove;\n\n DOMTokenList.prototype.add = function () {\n for (var _len = arguments.length, tokens = new Array(_len), _key = 0; _key < _len; _key++) {\n tokens[_key] = arguments[_key];\n }\n\n for (var _i = 0, _tokens = tokens; _i < _tokens.length; _i++) {\n var token = _tokens[_i];\n OriginalDOMTokenListAdd.call(this, token);\n }\n };\n\n DOMTokenList.prototype.remove = function () {\n for (var _len2 = arguments.length, tokens = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n tokens[_key2] = arguments[_key2];\n }\n\n for (var _i2 = 0, _tokens2 = tokens; _i2 < _tokens2.length; _i2++) {\n var token = _tokens2[_i2];\n OriginalDOMTokenListRemove.call(this, token);\n }\n };\n })();\n\n (function checkDOMTokenListToggle() {\n if (!hasDOM || _is_node.isNodeJS) {\n return;\n }\n\n var div = document.createElement(\"div\");\n\n if (div.classList.toggle(\"test\", 0) === false) {\n return;\n }\n\n DOMTokenList.prototype.toggle = function (token) {\n var force = arguments.length > 1 ? !!arguments[1] : !this.contains(token);\n return this[force ? \"add\" : \"remove\"](token), force;\n };\n })();\n\n (function checkWindowHistoryPushStateReplaceState() {\n if (!hasDOM || !isIE) {\n return;\n }\n\n var OriginalPushState = window.history.pushState;\n var OriginalReplaceState = window.history.replaceState;\n\n window.history.pushState = function (state, title, url) {\n var args = url === undefined ? [state, title] : [state, title, url];\n OriginalPushState.apply(this, args);\n };\n\n window.history.replaceState = function (state, title, url) {\n var args = url === undefined ? [state, title] : [state, title, url];\n OriginalReplaceState.apply(this, args);\n };\n })();\n\n (function checkStringStartsWith() {\n if (String.prototype.startsWith) {\n return;\n }\n\n __w_pdfjs_require__(53);\n })();\n\n (function checkStringEndsWith() {\n if (String.prototype.endsWith) {\n return;\n }\n\n __w_pdfjs_require__(64);\n })();\n\n (function checkStringIncludes() {\n if (String.prototype.includes) {\n return;\n }\n\n __w_pdfjs_require__(66);\n })();\n\n (function checkArrayIncludes() {\n if (Array.prototype.includes) {\n return;\n }\n\n __w_pdfjs_require__(68);\n })();\n\n (function checkArrayFrom() {\n if (Array.from) {\n return;\n }\n\n __w_pdfjs_require__(76);\n })();\n\n (function checkObjectAssign() {\n if (Object.assign) {\n return;\n }\n\n __w_pdfjs_require__(98);\n })();\n\n (function checkMathLog2() {\n if (Math.log2) {\n return;\n }\n\n Math.log2 = __w_pdfjs_require__(101);\n })();\n\n (function checkNumberIsNaN() {\n if (Number.isNaN) {\n return;\n }\n\n Number.isNaN = __w_pdfjs_require__(103);\n })();\n\n (function checkNumberIsInteger() {\n if (Number.isInteger) {\n return;\n }\n\n Number.isInteger = __w_pdfjs_require__(105);\n })();\n\n (function checkTypedArraySlice() {\n if (Uint8Array.prototype.slice) {\n return;\n }\n\n __w_pdfjs_require__(108);\n })();\n\n (function checkPromise() {\n if (globalThis.Promise && globalThis.Promise.allSettled) {\n return;\n }\n\n globalThis.Promise = __w_pdfjs_require__(113);\n })();\n\n (function checkURL() {\n globalThis.URL = __w_pdfjs_require__(136);\n })();\n\n (function checkReadableStream() {\n var isReadableStreamSupported = false;\n\n if (typeof ReadableStream !== \"undefined\") {\n try {\n new ReadableStream({\n start: function start(controller) {\n controller.close();\n }\n });\n isReadableStreamSupported = true;\n } catch (e) {}\n }\n\n if (isReadableStreamSupported) {\n return;\n }\n\n globalThis.ReadableStream = __w_pdfjs_require__(143).ReadableStream;\n })();\n\n (function checkMapEntries() {\n if (globalThis.Map && globalThis.Map.prototype.entries) {\n return;\n }\n\n globalThis.Map = __w_pdfjs_require__(144);\n })();\n\n (function checkSetEntries() {\n if (globalThis.Set && globalThis.Set.prototype.entries) {\n return;\n }\n\n globalThis.Set = __w_pdfjs_require__(151);\n })();\n\n (function checkWeakMap() {\n if (globalThis.WeakMap) {\n return;\n }\n\n globalThis.WeakMap = __w_pdfjs_require__(153);\n })();\n\n (function checkWeakSet() {\n if (globalThis.WeakSet) {\n return;\n }\n\n globalThis.WeakSet = __w_pdfjs_require__(159);\n })();\n\n (function checkStringCodePointAt() {\n if (String.prototype.codePointAt) {\n return;\n }\n\n __w_pdfjs_require__(161);\n })();\n\n (function checkStringFromCodePoint() {\n if (String.fromCodePoint) {\n return;\n }\n\n String.fromCodePoint = __w_pdfjs_require__(163);\n })();\n\n (function checkSymbol() {\n if (globalThis.Symbol) {\n return;\n }\n\n __w_pdfjs_require__(165);\n })();\n\n (function checkStringPadStart() {\n if (String.prototype.padStart) {\n return;\n }\n\n __w_pdfjs_require__(188);\n })();\n\n (function checkStringPadEnd() {\n if (String.prototype.padEnd) {\n return;\n }\n\n __w_pdfjs_require__(193);\n })();\n\n (function checkObjectValues() {\n if (Object.values) {\n return;\n }\n\n Object.values = __w_pdfjs_require__(195);\n })();\n}\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isNodeJS = void 0;\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar isNodeJS = (typeof process === \"undefined\" ? \"undefined\" : _typeof(process)) === \"object\" && process + \"\" === \"[object process]\" && !process.versions.nw && !process.versions.electron;\nexports.isNodeJS = isNodeJS;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(9);\nmodule.exports = __w_pdfjs_require__(11);\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar $ = __w_pdfjs_require__(10);\nvar global = __w_pdfjs_require__(11);\n$({ global: true }, { globalThis: global });\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar global = __w_pdfjs_require__(11);\nvar getOwnPropertyDescriptor = __w_pdfjs_require__(12).f;\nvar createNonEnumerableProperty = __w_pdfjs_require__(26);\nvar redefine = __w_pdfjs_require__(29);\nvar setGlobal = __w_pdfjs_require__(30);\nvar copyConstructorProperties = __w_pdfjs_require__(40);\nvar isForced = __w_pdfjs_require__(52);\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target)\n for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else\n targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty)\n continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n if (options.sham || targetProperty && targetProperty.sham) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n redefine(target, key, sourceProperty, options);\n }\n};\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports) {\n\nvar check = function (it) {\n return it && it.Math == Math && it;\n};\nmodule.exports = check(typeof globalThis == 'object' && globalThis) || check(typeof window == 'object' && window) || check(typeof self == 'object' && self) || check(typeof global == 'object' && global) || Function('return this')();\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar DESCRIPTORS = __w_pdfjs_require__(13);\nvar propertyIsEnumerableModule = __w_pdfjs_require__(15);\nvar createPropertyDescriptor = __w_pdfjs_require__(16);\nvar toIndexedObject = __w_pdfjs_require__(17);\nvar toPrimitive = __w_pdfjs_require__(21);\nvar has = __w_pdfjs_require__(23);\nvar IE8_DOM_DEFINE = __w_pdfjs_require__(24);\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE)\n try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) {\n }\n if (has(O, P))\n return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar fails = __w_pdfjs_require__(14);\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 1, {\n get: function () {\n return 7;\n }\n })[1] != 7;\n});\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar IndexedObject = __w_pdfjs_require__(18);\nvar requireObjectCoercible = __w_pdfjs_require__(20);\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar fails = __w_pdfjs_require__(14);\nvar classof = __w_pdfjs_require__(19);\nvar split = ''.split;\nmodule.exports = fails(function () {\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n if (it == undefined)\n throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar isObject = __w_pdfjs_require__(22);\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input))\n return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input)))\n return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input)))\n return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input)))\n return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports) {\n\nvar hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar DESCRIPTORS = __w_pdfjs_require__(13);\nvar fails = __w_pdfjs_require__(14);\nvar createElement = __w_pdfjs_require__(25);\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () {\n return 7;\n }\n }).a != 7;\n});\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar global = __w_pdfjs_require__(11);\nvar isObject = __w_pdfjs_require__(22);\nvar document = global.document;\nvar EXISTS = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar DESCRIPTORS = __w_pdfjs_require__(13);\nvar definePropertyModule = __w_pdfjs_require__(27);\nvar createPropertyDescriptor = __w_pdfjs_require__(16);\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar DESCRIPTORS = __w_pdfjs_require__(13);\nvar IE8_DOM_DEFINE = __w_pdfjs_require__(24);\nvar anObject = __w_pdfjs_require__(28);\nvar toPrimitive = __w_pdfjs_require__(21);\nvar nativeDefineProperty = Object.defineProperty;\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE)\n try {\n return nativeDefineProperty(O, P, Attributes);\n } catch (error) {\n }\n if ('get' in Attributes || 'set' in Attributes)\n throw TypeError('Accessors not supported');\n if ('value' in Attributes)\n O[P] = Attributes.value;\n return O;\n};\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar isObject = __w_pdfjs_require__(22);\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n }\n return it;\n};\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar global = __w_pdfjs_require__(11);\nvar createNonEnumerableProperty = __w_pdfjs_require__(26);\nvar has = __w_pdfjs_require__(23);\nvar setGlobal = __w_pdfjs_require__(30);\nvar inspectSource = __w_pdfjs_require__(31);\nvar InternalStateModule = __w_pdfjs_require__(33);\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name'))\n createNonEnumerableProperty(value, 'name', key);\n enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n if (O === global) {\n if (simple)\n O[key] = value;\n else\n setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple)\n O[key] = value;\n else\n createNonEnumerableProperty(O, key, value);\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar global = __w_pdfjs_require__(11);\nvar createNonEnumerableProperty = __w_pdfjs_require__(26);\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n }\n return value;\n};\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar store = __w_pdfjs_require__(32);\nvar functionToString = Function.toString;\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\nmodule.exports = store.inspectSource;\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar global = __w_pdfjs_require__(11);\nvar setGlobal = __w_pdfjs_require__(30);\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\nmodule.exports = store;\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar NATIVE_WEAK_MAP = __w_pdfjs_require__(34);\nvar global = __w_pdfjs_require__(11);\nvar isObject = __w_pdfjs_require__(22);\nvar createNonEnumerableProperty = __w_pdfjs_require__(26);\nvar objectHas = __w_pdfjs_require__(23);\nvar sharedKey = __w_pdfjs_require__(35);\nvar hiddenKeys = __w_pdfjs_require__(39);\nvar WeakMap = global.WeakMap;\nvar set, get, has;\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n }\n return state;\n };\n};\nif (NATIVE_WEAK_MAP) {\n var store = new WeakMap();\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar global = __w_pdfjs_require__(11);\nvar inspectSource = __w_pdfjs_require__(31);\nvar WeakMap = global.WeakMap;\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar shared = __w_pdfjs_require__(36);\nvar uid = __w_pdfjs_require__(38);\nvar keys = shared('keys');\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar IS_PURE = __w_pdfjs_require__(37);\nvar store = __w_pdfjs_require__(32);\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.6.5',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports) {\n\nmodule.exports = false;\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports) {\n\nvar id = 0;\nvar postfix = Math.random();\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar has = __w_pdfjs_require__(23);\nvar ownKeys = __w_pdfjs_require__(41);\nvar getOwnPropertyDescriptorModule = __w_pdfjs_require__(12);\nvar definePropertyModule = __w_pdfjs_require__(27);\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key))\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar getBuiltIn = __w_pdfjs_require__(42);\nvar getOwnPropertyNamesModule = __w_pdfjs_require__(44);\nvar getOwnPropertySymbolsModule = __w_pdfjs_require__(51);\nvar anObject = __w_pdfjs_require__(28);\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar path = __w_pdfjs_require__(43);\nvar global = __w_pdfjs_require__(11);\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace]) : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar global = __w_pdfjs_require__(11);\nmodule.exports = global;\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar internalObjectKeys = __w_pdfjs_require__(45);\nvar enumBugKeys = __w_pdfjs_require__(50);\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar has = __w_pdfjs_require__(23);\nvar toIndexedObject = __w_pdfjs_require__(17);\nvar indexOf = __w_pdfjs_require__(46).indexOf;\nvar hiddenKeys = __w_pdfjs_require__(39);\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O)\n !has(hiddenKeys, key) && has(O, key) && result.push(key);\n while (names.length > i)\n if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar toIndexedObject = __w_pdfjs_require__(17);\nvar toLength = __w_pdfjs_require__(47);\nvar toAbsoluteIndex = __w_pdfjs_require__(49);\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n if (IS_INCLUDES && el != el)\n while (length > index) {\n value = O[index++];\n if (value != value)\n return true;\n }\n else\n for (; length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el)\n return IS_INCLUDES || index || 0;\n }\n return !IS_INCLUDES && -1;\n };\n};\nmodule.exports = {\n includes: createMethod(true),\n indexOf: createMethod(false)\n};\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar toInteger = __w_pdfjs_require__(48);\nvar min = Math.min;\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0;\n};\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports) {\n\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar toInteger = __w_pdfjs_require__(48);\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports) {\n\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports) {\n\nexports.f = Object.getOwnPropertySymbols;\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar fails = __w_pdfjs_require__(14);\nvar replacement = /#|\\.prototype\\./;\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true : value == NATIVE ? false : typeof detection == 'function' ? fails(detection) : !!detection;\n};\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\nmodule.exports = isForced;\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(54);\nvar entryUnbind = __w_pdfjs_require__(61);\nmodule.exports = entryUnbind('String', 'startsWith');\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar $ = __w_pdfjs_require__(10);\nvar getOwnPropertyDescriptor = __w_pdfjs_require__(12).f;\nvar toLength = __w_pdfjs_require__(47);\nvar notARegExp = __w_pdfjs_require__(55);\nvar requireObjectCoercible = __w_pdfjs_require__(20);\nvar correctIsRegExpLogic = __w_pdfjs_require__(60);\nvar IS_PURE = __w_pdfjs_require__(37);\nvar nativeStartsWith = ''.startsWith;\nvar min = Math.min;\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\n return descriptor && !descriptor.writable;\n}();\n$({\n target: 'String',\n proto: true,\n forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC\n}, {\n startsWith: function startsWith(searchString) {\n var that = String(requireObjectCoercible(this));\n notARegExp(searchString);\n var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return nativeStartsWith ? nativeStartsWith.call(that, search, index) : that.slice(index, index + search.length) === search;\n }\n});\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar isRegExp = __w_pdfjs_require__(56);\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n }\n return it;\n};\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar isObject = __w_pdfjs_require__(22);\nvar classof = __w_pdfjs_require__(19);\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar MATCH = wellKnownSymbol('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar global = __w_pdfjs_require__(11);\nvar shared = __w_pdfjs_require__(36);\nvar has = __w_pdfjs_require__(23);\nvar uid = __w_pdfjs_require__(38);\nvar NATIVE_SYMBOL = __w_pdfjs_require__(58);\nvar USE_SYMBOL_AS_UID = __w_pdfjs_require__(59);\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name)) {\n if (NATIVE_SYMBOL && has(Symbol, name))\n WellKnownSymbolsStore[name] = Symbol[name];\n else\n WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n }\n return WellKnownSymbolsStore[name];\n};\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar fails = __w_pdfjs_require__(14);\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n return !String(Symbol());\n});\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar NATIVE_SYMBOL = __w_pdfjs_require__(58);\nmodule.exports = NATIVE_SYMBOL && !Symbol.sham && typeof Symbol.iterator == 'symbol';\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar MATCH = wellKnownSymbol('match');\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (e) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (f) {\n }\n }\n return false;\n};\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar global = __w_pdfjs_require__(11);\nvar bind = __w_pdfjs_require__(62);\nvar call = Function.call;\nmodule.exports = function (CONSTRUCTOR, METHOD, length) {\n return bind(call, global[CONSTRUCTOR].prototype[METHOD], length);\n};\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar aFunction = __w_pdfjs_require__(63);\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined)\n return fn;\n switch (length) {\n case 0:\n return function () {\n return fn.call(that);\n };\n case 1:\n return function (a) {\n return fn.call(that, a);\n };\n case 2:\n return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3:\n return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function () {\n return fn.apply(that, arguments);\n };\n};\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n }\n return it;\n};\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(65);\nvar entryUnbind = __w_pdfjs_require__(61);\nmodule.exports = entryUnbind('String', 'endsWith');\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar $ = __w_pdfjs_require__(10);\nvar getOwnPropertyDescriptor = __w_pdfjs_require__(12).f;\nvar toLength = __w_pdfjs_require__(47);\nvar notARegExp = __w_pdfjs_require__(55);\nvar requireObjectCoercible = __w_pdfjs_require__(20);\nvar correctIsRegExpLogic = __w_pdfjs_require__(60);\nvar IS_PURE = __w_pdfjs_require__(37);\nvar nativeEndsWith = ''.endsWith;\nvar min = Math.min;\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith');\n return descriptor && !descriptor.writable;\n}();\n$({\n target: 'String',\n proto: true,\n forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC\n}, {\n endsWith: function endsWith(searchString) {\n var that = String(requireObjectCoercible(this));\n notARegExp(searchString);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = toLength(that.length);\n var end = endPosition === undefined ? len : min(toLength(endPosition), len);\n var search = String(searchString);\n return nativeEndsWith ? nativeEndsWith.call(that, search, end) : that.slice(end - search.length, end) === search;\n }\n});\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(67);\nvar entryUnbind = __w_pdfjs_require__(61);\nmodule.exports = entryUnbind('String', 'includes');\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar $ = __w_pdfjs_require__(10);\nvar notARegExp = __w_pdfjs_require__(55);\nvar requireObjectCoercible = __w_pdfjs_require__(20);\nvar correctIsRegExpLogic = __w_pdfjs_require__(60);\n$({\n target: 'String',\n proto: true,\n forced: !correctIsRegExpLogic('includes')\n}, {\n includes: function includes(searchString) {\n return !!~String(requireObjectCoercible(this)).indexOf(notARegExp(searchString), arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(69);\nvar entryUnbind = __w_pdfjs_require__(61);\nmodule.exports = entryUnbind('Array', 'includes');\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar $ = __w_pdfjs_require__(10);\nvar $includes = __w_pdfjs_require__(46).includes;\nvar addToUnscopables = __w_pdfjs_require__(70);\nvar arrayMethodUsesToLength = __w_pdfjs_require__(75);\nvar USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', {\n ACCESSORS: true,\n 1: 0\n});\n$({\n target: 'Array',\n proto: true,\n forced: !USES_TO_LENGTH\n}, {\n includes: function includes(el) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\naddToUnscopables('includes');\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar create = __w_pdfjs_require__(71);\nvar definePropertyModule = __w_pdfjs_require__(27);\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar anObject = __w_pdfjs_require__(28);\nvar defineProperties = __w_pdfjs_require__(72);\nvar enumBugKeys = __w_pdfjs_require__(50);\nvar hiddenKeys = __w_pdfjs_require__(39);\nvar html = __w_pdfjs_require__(74);\nvar documentCreateElement = __w_pdfjs_require__(25);\nvar sharedKey = __w_pdfjs_require__(35);\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar EmptyConstructor = function () {\n};\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null;\n return temp;\n};\nvar NullProtoObjectViaIFrame = function () {\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = document.domain && new ActiveXObject('htmlfile');\n } catch (error) {\n }\n NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n var length = enumBugKeys.length;\n while (length--)\n delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\nhiddenKeys[IE_PROTO] = true;\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n result[IE_PROTO] = O;\n } else\n result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar DESCRIPTORS = __w_pdfjs_require__(13);\nvar definePropertyModule = __w_pdfjs_require__(27);\nvar anObject = __w_pdfjs_require__(28);\nvar objectKeys = __w_pdfjs_require__(73);\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index)\n definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar internalObjectKeys = __w_pdfjs_require__(45);\nvar enumBugKeys = __w_pdfjs_require__(50);\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar getBuiltIn = __w_pdfjs_require__(42);\nmodule.exports = getBuiltIn('document', 'documentElement');\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar DESCRIPTORS = __w_pdfjs_require__(13);\nvar fails = __w_pdfjs_require__(14);\nvar has = __w_pdfjs_require__(23);\nvar defineProperty = Object.defineProperty;\nvar cache = {};\nvar thrower = function (it) {\n throw it;\n};\nmodule.exports = function (METHOD_NAME, options) {\n if (has(cache, METHOD_NAME))\n return cache[METHOD_NAME];\n if (!options)\n options = {};\n var method = [][METHOD_NAME];\n var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false;\n var argument0 = has(options, 0) ? options[0] : thrower;\n var argument1 = has(options, 1) ? options[1] : undefined;\n return cache[METHOD_NAME] = !!method && !fails(function () {\n if (ACCESSORS && !DESCRIPTORS)\n return true;\n var O = { length: -1 };\n if (ACCESSORS)\n defineProperty(O, 1, {\n enumerable: true,\n get: thrower\n });\n else\n O[1] = 1;\n method.call(O, argument0, argument1);\n });\n};\n\n/***/ }),\n/* 76 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(77);\n__w_pdfjs_require__(89);\nvar path = __w_pdfjs_require__(43);\nmodule.exports = path.Array.from;\n\n/***/ }),\n/* 77 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar charAt = __w_pdfjs_require__(78).charAt;\nvar InternalStateModule = __w_pdfjs_require__(33);\nvar defineIterator = __w_pdfjs_require__(79);\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length)\n return {\n value: undefined,\n done: true\n };\n point = charAt(string, index);\n state.index += point.length;\n return {\n value: point,\n done: false\n };\n});\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar toInteger = __w_pdfjs_require__(48);\nvar requireObjectCoercible = __w_pdfjs_require__(20);\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = String(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size)\n return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF ? CONVERT_TO_STRING ? S.charAt(position) : first : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\nmodule.exports = {\n codeAt: createMethod(false),\n charAt: createMethod(true)\n};\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar $ = __w_pdfjs_require__(10);\nvar createIteratorConstructor = __w_pdfjs_require__(80);\nvar getPrototypeOf = __w_pdfjs_require__(82);\nvar setPrototypeOf = __w_pdfjs_require__(87);\nvar setToStringTag = __w_pdfjs_require__(85);\nvar createNonEnumerableProperty = __w_pdfjs_require__(26);\nvar redefine = __w_pdfjs_require__(29);\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar IS_PURE = __w_pdfjs_require__(37);\nvar Iterators = __w_pdfjs_require__(86);\nvar IteratorsCore = __w_pdfjs_require__(81);\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\nvar returnThis = function () {\n return this;\n};\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator)\n return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype)\n return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS:\n return function keys() {\n return new IteratorConstructor(this, KIND);\n };\n case VALUES:\n return function values() {\n return new IteratorConstructor(this, KIND);\n };\n case ENTRIES:\n return function entries() {\n return new IteratorConstructor(this, KIND);\n };\n }\n return function () {\n return new IteratorConstructor(this);\n };\n };\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR] || IterablePrototype['@@iterator'] || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE)\n Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() {\n return nativeIterator.call(this);\n };\n }\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED)\n for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n }\n else\n $({\n target: NAME,\n proto: true,\n forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME\n }, methods);\n }\n return methods;\n};\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar IteratorPrototype = __w_pdfjs_require__(81).IteratorPrototype;\nvar create = __w_pdfjs_require__(71);\nvar createPropertyDescriptor = __w_pdfjs_require__(16);\nvar setToStringTag = __w_pdfjs_require__(85);\nvar Iterators = __w_pdfjs_require__(86);\nvar returnThis = function () {\n return this;\n};\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar getPrototypeOf = __w_pdfjs_require__(82);\nvar createNonEnumerableProperty = __w_pdfjs_require__(26);\nvar has = __w_pdfjs_require__(23);\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar IS_PURE = __w_pdfjs_require__(37);\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\nvar returnThis = function () {\n return this;\n};\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\nif ([].keys) {\n arrayIterator = [].keys();\n if (!('next' in arrayIterator))\n BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype)\n IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\nif (IteratorPrototype == undefined)\n IteratorPrototype = {};\nif (!IS_PURE && !has(IteratorPrototype, ITERATOR)) {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar has = __w_pdfjs_require__(23);\nvar toObject = __w_pdfjs_require__(83);\nvar sharedKey = __w_pdfjs_require__(35);\nvar CORRECT_PROTOTYPE_GETTER = __w_pdfjs_require__(84);\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO))\n return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n }\n return O instanceof Object ? ObjectPrototype : null;\n};\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar requireObjectCoercible = __w_pdfjs_require__(20);\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar fails = __w_pdfjs_require__(14);\nmodule.exports = !fails(function () {\n function F() {\n }\n F.prototype.constructor = null;\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar defineProperty = __w_pdfjs_require__(27).f;\nvar has = __w_pdfjs_require__(23);\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, {\n configurable: true,\n value: TAG\n });\n }\n};\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n/***/ }),\n/* 87 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar anObject = __w_pdfjs_require__(28);\nvar aPossiblePrototype = __w_pdfjs_require__(88);\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) {\n }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER)\n setter.call(O, proto);\n else\n O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n\n/***/ }),\n/* 88 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar isObject = __w_pdfjs_require__(22);\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n }\n return it;\n};\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar $ = __w_pdfjs_require__(10);\nvar from = __w_pdfjs_require__(90);\nvar checkCorrectnessOfIteration = __w_pdfjs_require__(97);\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n Array.from(iterable);\n});\n$({\n target: 'Array',\n stat: true,\n forced: INCORRECT_ITERATION\n}, { from: from });\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar bind = __w_pdfjs_require__(62);\nvar toObject = __w_pdfjs_require__(83);\nvar callWithSafeIterationClosing = __w_pdfjs_require__(91);\nvar isArrayIteratorMethod = __w_pdfjs_require__(92);\nvar toLength = __w_pdfjs_require__(47);\nvar createProperty = __w_pdfjs_require__(93);\nvar getIteratorMethod = __w_pdfjs_require__(94);\nmodule.exports = function from(arrayLike) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n if (mapping)\n mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n result = new C();\n for (; !(step = next.call(iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [\n step.value,\n index\n ], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = toLength(O.length);\n result = new C(length);\n for (; length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar anObject = __w_pdfjs_require__(28);\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined)\n anObject(returnMethod.call(iterator));\n throw error;\n }\n};\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar Iterators = __w_pdfjs_require__(86);\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar toPrimitive = __w_pdfjs_require__(21);\nvar definePropertyModule = __w_pdfjs_require__(27);\nvar createPropertyDescriptor = __w_pdfjs_require__(16);\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object)\n definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else\n object[propertyKey] = value;\n};\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar classof = __w_pdfjs_require__(95);\nvar Iterators = __w_pdfjs_require__(86);\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar ITERATOR = wellKnownSymbol('iterator');\nmodule.exports = function (it) {\n if (it != undefined)\n return it[ITERATOR] || it['@@iterator'] || Iterators[classof(it)];\n};\n\n/***/ }),\n/* 95 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar TO_STRING_TAG_SUPPORT = __w_pdfjs_require__(96);\nvar classofRaw = __w_pdfjs_require__(19);\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar CORRECT_ARGUMENTS = classofRaw(function () {\n return arguments;\n}()) == 'Arguments';\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) {\n }\n};\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null' : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag : CORRECT_ARGUMENTS ? classofRaw(O) : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\ntest[TO_STRING_TAG] = 'z';\nmodule.exports = String(test) === '[object z]';\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n Array.from(iteratorWithReturn, function () {\n throw 2;\n });\n} catch (error) {\n}\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING)\n return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) {\n }\n return ITERATION_SUPPORT;\n};\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(99);\nvar path = __w_pdfjs_require__(43);\nmodule.exports = path.Object.assign;\n\n/***/ }),\n/* 99 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar $ = __w_pdfjs_require__(10);\nvar assign = __w_pdfjs_require__(100);\n$({\n target: 'Object',\n stat: true,\n forced: Object.assign !== assign\n}, { assign: assign });\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar DESCRIPTORS = __w_pdfjs_require__(13);\nvar fails = __w_pdfjs_require__(14);\nvar objectKeys = __w_pdfjs_require__(73);\nvar getOwnPropertySymbolsModule = __w_pdfjs_require__(51);\nvar propertyIsEnumerableModule = __w_pdfjs_require__(15);\nvar toObject = __w_pdfjs_require__(83);\nvar IndexedObject = __w_pdfjs_require__(18);\nvar nativeAssign = Object.assign;\nvar defineProperty = Object.defineProperty;\nmodule.exports = !nativeAssign || fails(function () {\n if (DESCRIPTORS && nativeAssign({ b: 1 }, nativeAssign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1)\n return true;\n var A = {};\n var B = {};\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) {\n B[chr] = chr;\n });\n return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) {\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(S, key))\n T[key] = S[key];\n }\n }\n return T;\n} : nativeAssign;\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(102);\nvar path = __w_pdfjs_require__(43);\nmodule.exports = path.Math.log2;\n\n/***/ }),\n/* 102 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar $ = __w_pdfjs_require__(10);\nvar log = Math.log;\nvar LN2 = Math.LN2;\n$({\n target: 'Math',\n stat: true\n}, {\n log2: function log2(x) {\n return log(x) / LN2;\n }\n});\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(104);\nvar path = __w_pdfjs_require__(43);\nmodule.exports = path.Number.isNaN;\n\n/***/ }),\n/* 104 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar $ = __w_pdfjs_require__(10);\n$({\n target: 'Number',\n stat: true\n}, {\n isNaN: function isNaN(number) {\n return number != number;\n }\n});\n\n/***/ }),\n/* 105 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(106);\nvar path = __w_pdfjs_require__(43);\nmodule.exports = path.Number.isInteger;\n\n/***/ }),\n/* 106 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar $ = __w_pdfjs_require__(10);\nvar isInteger = __w_pdfjs_require__(107);\n$({\n target: 'Number',\n stat: true\n}, { isInteger: isInteger });\n\n/***/ }),\n/* 107 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar isObject = __w_pdfjs_require__(22);\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n\n/***/ }),\n/* 108 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(109);\n\n/***/ }),\n/* 109 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __w_pdfjs_require__(110);\nvar speciesConstructor = __w_pdfjs_require__(112);\nvar fails = __w_pdfjs_require__(14);\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $slice = [].slice;\nvar FORCED = fails(function () {\n new Int8Array(1).slice();\n});\nexportTypedArrayMethod('slice', function slice(start, end) {\n var list = $slice.call(aTypedArray(this), start, end);\n var C = speciesConstructor(this, this.constructor);\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index)\n result[index] = list[index++];\n return result;\n}, FORCED);\n\n/***/ }),\n/* 110 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar NATIVE_ARRAY_BUFFER = __w_pdfjs_require__(111);\nvar DESCRIPTORS = __w_pdfjs_require__(13);\nvar global = __w_pdfjs_require__(11);\nvar isObject = __w_pdfjs_require__(22);\nvar has = __w_pdfjs_require__(23);\nvar classof = __w_pdfjs_require__(95);\nvar createNonEnumerableProperty = __w_pdfjs_require__(26);\nvar redefine = __w_pdfjs_require__(29);\nvar defineProperty = __w_pdfjs_require__(27).f;\nvar getPrototypeOf = __w_pdfjs_require__(82);\nvar setPrototypeOf = __w_pdfjs_require__(87);\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar uid = __w_pdfjs_require__(38);\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar isPrototypeOf = ObjectPrototype.isPrototypeOf;\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQIRED = false;\nvar NAME;\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\nvar isView = function isView(it) {\n var klass = classof(it);\n return klass === 'DataView' || has(TypedArrayConstructorsList, klass);\n};\nvar isTypedArray = function (it) {\n return isObject(it) && has(TypedArrayConstructorsList, classof(it));\n};\nvar aTypedArray = function (it) {\n if (isTypedArray(it))\n return it;\n throw TypeError('Target is not a typed array');\n};\nvar aTypedArrayConstructor = function (C) {\n if (setPrototypeOf) {\n if (isPrototypeOf.call(TypedArray, C))\n return C;\n } else\n for (var ARRAY in TypedArrayConstructorsList)\n if (has(TypedArrayConstructorsList, NAME)) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (C === TypedArrayConstructor || isPrototypeOf.call(TypedArrayConstructor, C))) {\n return C;\n }\n }\n throw TypeError('Target is not a typed array constructor');\n};\nvar exportTypedArrayMethod = function (KEY, property, forced) {\n if (!DESCRIPTORS)\n return;\n if (forced)\n for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor.prototype, KEY)) {\n delete TypedArrayConstructor.prototype[KEY];\n }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n redefine(TypedArrayPrototype, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property);\n }\n};\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS)\n return;\n if (setPrototypeOf) {\n if (forced)\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor, KEY)) {\n delete TypedArrayConstructor[KEY];\n }\n }\n if (!TypedArray[KEY] || forced) {\n try {\n return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && Int8Array[KEY] || property);\n } catch (error) {\n }\n } else\n return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n redefine(TypedArrayConstructor, KEY, property);\n }\n }\n};\nfor (NAME in TypedArrayConstructorsList) {\n if (!global[NAME])\n NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\nif (!NATIVE_ARRAY_BUFFER_VIEWS || typeof TypedArray != 'function' || TypedArray === Function.prototype) {\n TypedArray = function TypedArray() {\n throw TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS)\n for (NAME in TypedArrayConstructorsList) {\n if (global[NAME])\n setPrototypeOf(global[NAME], TypedArray);\n }\n}\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS)\n for (NAME in TypedArrayConstructorsList) {\n if (global[NAME])\n setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n }\n}\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\nif (DESCRIPTORS && !has(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQIRED = true;\n defineProperty(TypedArrayPrototype, TO_STRING_TAG, {\n get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n }\n });\n for (NAME in TypedArrayConstructorsList)\n if (global[NAME]) {\n createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\nmodule.exports = {\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportTypedArrayMethod: exportTypedArrayMethod,\n exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n\n/***/ }),\n/* 111 */\n/***/ (function(module, exports) {\n\nmodule.exports = typeof ArrayBuffer !== 'undefined' && typeof DataView !== 'undefined';\n\n/***/ }),\n/* 112 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar anObject = __w_pdfjs_require__(28);\nvar aFunction = __w_pdfjs_require__(63);\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar SPECIES = wellKnownSymbol('species');\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n\n/***/ }),\n/* 113 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(114);\n__w_pdfjs_require__(77);\n__w_pdfjs_require__(116);\n__w_pdfjs_require__(119);\n__w_pdfjs_require__(134);\n__w_pdfjs_require__(135);\nvar path = __w_pdfjs_require__(43);\nmodule.exports = path.Promise;\n\n/***/ }),\n/* 114 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar TO_STRING_TAG_SUPPORT = __w_pdfjs_require__(96);\nvar redefine = __w_pdfjs_require__(29);\nvar toString = __w_pdfjs_require__(115);\nif (!TO_STRING_TAG_SUPPORT) {\n redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n\n/***/ }),\n/* 115 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar TO_STRING_TAG_SUPPORT = __w_pdfjs_require__(96);\nvar classof = __w_pdfjs_require__(95);\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n\n/***/ }),\n/* 116 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar global = __w_pdfjs_require__(11);\nvar DOMIterables = __w_pdfjs_require__(117);\nvar ArrayIteratorMethods = __w_pdfjs_require__(118);\nvar createNonEnumerableProperty = __w_pdfjs_require__(26);\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype) {\n if (CollectionPrototype[ITERATOR] !== ArrayValues)\n try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME])\n for (var METHOD_NAME in ArrayIteratorMethods) {\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME])\n try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n}\n\n/***/ }),\n/* 117 */\n/***/ (function(module, exports) {\n\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n\n/***/ }),\n/* 118 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar toIndexedObject = __w_pdfjs_require__(17);\nvar addToUnscopables = __w_pdfjs_require__(70);\nvar Iterators = __w_pdfjs_require__(86);\nvar InternalStateModule = __w_pdfjs_require__(33);\nvar defineIterator = __w_pdfjs_require__(79);\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated),\n index: 0,\n kind: kind\n });\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return {\n value: undefined,\n done: true\n };\n }\n if (kind == 'keys')\n return {\n value: index,\n done: false\n };\n if (kind == 'values')\n return {\n value: target[index],\n done: false\n };\n return {\n value: [\n index,\n target[index]\n ],\n done: false\n };\n}, 'values');\nIterators.Arguments = Iterators.Array;\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n/***/ }),\n/* 119 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar $ = __w_pdfjs_require__(10);\nvar IS_PURE = __w_pdfjs_require__(37);\nvar global = __w_pdfjs_require__(11);\nvar getBuiltIn = __w_pdfjs_require__(42);\nvar NativePromise = __w_pdfjs_require__(120);\nvar redefine = __w_pdfjs_require__(29);\nvar redefineAll = __w_pdfjs_require__(121);\nvar setToStringTag = __w_pdfjs_require__(85);\nvar setSpecies = __w_pdfjs_require__(122);\nvar isObject = __w_pdfjs_require__(22);\nvar aFunction = __w_pdfjs_require__(63);\nvar anInstance = __w_pdfjs_require__(123);\nvar classof = __w_pdfjs_require__(19);\nvar inspectSource = __w_pdfjs_require__(31);\nvar iterate = __w_pdfjs_require__(124);\nvar checkCorrectnessOfIteration = __w_pdfjs_require__(97);\nvar speciesConstructor = __w_pdfjs_require__(112);\nvar task = __w_pdfjs_require__(125).set;\nvar microtask = __w_pdfjs_require__(128);\nvar promiseResolve = __w_pdfjs_require__(129);\nvar hostReportErrors = __w_pdfjs_require__(131);\nvar newPromiseCapabilityModule = __w_pdfjs_require__(130);\nvar perform = __w_pdfjs_require__(132);\nvar InternalStateModule = __w_pdfjs_require__(33);\nvar isForced = __w_pdfjs_require__(52);\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar V8_VERSION = __w_pdfjs_require__(133);\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar PromiseConstructor = NativePromise;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar $fetch = getBuiltIn('fetch');\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\nvar IS_NODE = classof(process) == 'process';\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\nvar FORCED = isForced(PROMISE, function () {\n var GLOBAL_CORE_JS_PROMISE = inspectSource(PromiseConstructor) !== String(PromiseConstructor);\n if (!GLOBAL_CORE_JS_PROMISE) {\n if (V8_VERSION === 66)\n return true;\n if (!IS_NODE && typeof PromiseRejectionEvent != 'function')\n return true;\n }\n if (IS_PURE && !PromiseConstructor.prototype['finally'])\n return true;\n if (V8_VERSION >= 51 && /native code/.test(PromiseConstructor))\n return false;\n var promise = PromiseConstructor.resolve(1);\n var FakePromise = function (exec) {\n exec(function () {\n }, function () {\n });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n return !(promise.then(function () {\n }) instanceof FakePromise);\n});\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n PromiseConstructor.all(iterable)['catch'](function () {\n });\n});\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, state, isReject) {\n if (state.notified)\n return;\n state.notified = true;\n var chain = state.reactions;\n microtask(function () {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var index = 0;\n while (chain.length > index) {\n var reaction = chain[index++];\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED)\n onHandleUnhandled(promise, state);\n state.rejection = HANDLED;\n }\n if (handler === true)\n result = value;\n else {\n if (domain)\n domain.enter();\n result = handler(value);\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else\n resolve(result);\n } else\n reject(value);\n } catch (error) {\n if (domain && !exited)\n domain.exit();\n reject(error);\n }\n }\n state.reactions = [];\n state.notified = false;\n if (isReject && !state.rejection)\n onUnhandled(promise, state);\n });\n};\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else\n event = {\n promise: promise,\n reason: reason\n };\n if (handler = global['on' + name])\n handler(event);\n else if (name === UNHANDLED_REJECTION)\n hostReportErrors('Unhandled promise rejection', reason);\n};\nvar onUnhandled = function (promise, state) {\n task.call(global, function () {\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else\n dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error)\n throw result.value;\n }\n });\n};\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\nvar onHandleUnhandled = function (promise, state) {\n task.call(global, function () {\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else\n dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\nvar bind = function (fn, promise, state, unwrap) {\n return function (value) {\n fn(promise, state, value, unwrap);\n };\n};\nvar internalReject = function (promise, state, value, unwrap) {\n if (state.done)\n return;\n state.done = true;\n if (unwrap)\n state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(promise, state, true);\n};\nvar internalResolve = function (promise, state, value, unwrap) {\n if (state.done)\n return;\n state.done = true;\n if (unwrap)\n state = unwrap;\n try {\n if (promise === value)\n throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n then.call(value, bind(internalResolve, promise, wrapper, state), bind(internalReject, promise, wrapper, state));\n } catch (error) {\n internalReject(promise, wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(promise, state, false);\n }\n } catch (error) {\n internalReject(promise, { done: false }, error, state);\n }\n};\nif (FORCED) {\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromiseConstructor, PROMISE);\n aFunction(executor);\n Internal.call(this);\n var state = getInternalState(this);\n try {\n executor(bind(internalResolve, this, state), bind(internalReject, this, state));\n } catch (error) {\n internalReject(this, state, error);\n }\n };\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: [],\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n Internal.prototype = redefineAll(PromiseConstructor.prototype, {\n then: function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n state.parent = true;\n state.reactions.push(reaction);\n if (state.state != PENDING)\n notify(this, state, false);\n return reaction.promise;\n },\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, promise, state);\n this.reject = bind(internalReject, promise, state);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper ? new OwnPromiseCapability(C) : newGenericPromiseCapability(C);\n };\n if (!IS_PURE && typeof NativePromise == 'function') {\n nativeThen = NativePromise.prototype.then;\n redefine(NativePromise.prototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n nativeThen.call(that, resolve, reject);\n }).then(onFulfilled, onRejected);\n }, { unsafe: true });\n if (typeof $fetch == 'function')\n $({\n global: true,\n enumerable: true,\n forced: true\n }, {\n fetch: function fetch(input) {\n return promiseResolve(PromiseConstructor, $fetch.apply(global, arguments));\n }\n });\n }\n}\n$({\n global: true,\n wrap: true,\n forced: FORCED\n}, { Promise: PromiseConstructor });\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\nPromiseWrapper = getBuiltIn(PROMISE);\n$({\n target: PROMISE,\n stat: true,\n forced: FORCED\n}, {\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n capability.reject.call(undefined, r);\n return capability.promise;\n }\n});\n$({\n target: PROMISE,\n stat: true,\n forced: IS_PURE || FORCED\n}, {\n resolve: function resolve(x) {\n return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n }\n});\n$({\n target: PROMISE,\n stat: true,\n forced: INCORRECT_ITERATION\n}, {\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n $promiseResolve.call(C, promise).then(function (value) {\n if (alreadyCalled)\n return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error)\n reject(result.value);\n return capability.promise;\n },\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n iterate(iterable, function (promise) {\n $promiseResolve.call(C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error)\n reject(result.value);\n return capability.promise;\n }\n});\n\n/***/ }),\n/* 120 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar global = __w_pdfjs_require__(11);\nmodule.exports = global.Promise;\n\n/***/ }),\n/* 121 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar redefine = __w_pdfjs_require__(29);\nmodule.exports = function (target, src, options) {\n for (var key in src)\n redefine(target, key, src[key], options);\n return target;\n};\n\n/***/ }),\n/* 122 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar getBuiltIn = __w_pdfjs_require__(42);\nvar definePropertyModule = __w_pdfjs_require__(27);\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar DESCRIPTORS = __w_pdfjs_require__(13);\nvar SPECIES = wellKnownSymbol('species');\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () {\n return this;\n }\n });\n }\n};\n\n/***/ }),\n/* 123 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n }\n return it;\n};\n\n/***/ }),\n/* 124 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar anObject = __w_pdfjs_require__(28);\nvar isArrayIteratorMethod = __w_pdfjs_require__(92);\nvar toLength = __w_pdfjs_require__(47);\nvar bind = __w_pdfjs_require__(62);\nvar getIteratorMethod = __w_pdfjs_require__(94);\nvar callWithSafeIterationClosing = __w_pdfjs_require__(91);\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\nvar iterate = module.exports = function (iterable, fn, that, AS_ENTRIES, IS_ITERATOR) {\n var boundFunction = bind(fn, that, AS_ENTRIES ? 2 : 1);\n var iterator, iterFn, index, length, result, next, step;\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (typeof iterFn != 'function')\n throw TypeError('Target is not iterable');\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = toLength(iterable.length); length > index; index++) {\n result = AS_ENTRIES ? boundFunction(anObject(step = iterable[index])[0], step[1]) : boundFunction(iterable[index]);\n if (result && result instanceof Result)\n return result;\n }\n return new Result(false);\n }\n iterator = iterFn.call(iterable);\n }\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n result = callWithSafeIterationClosing(iterator, boundFunction, step.value, AS_ENTRIES);\n if (typeof result == 'object' && result && result instanceof Result)\n return result;\n }\n return new Result(false);\n};\niterate.stop = function (result) {\n return new Result(true, result);\n};\n\n/***/ }),\n/* 125 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar global = __w_pdfjs_require__(11);\nvar fails = __w_pdfjs_require__(14);\nvar classof = __w_pdfjs_require__(19);\nvar bind = __w_pdfjs_require__(62);\nvar html = __w_pdfjs_require__(74);\nvar createElement = __w_pdfjs_require__(25);\nvar IS_IOS = __w_pdfjs_require__(126);\nvar location = global.location;\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function (id) {\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\nvar listener = function (event) {\n run(event.data);\n};\nvar post = function (id) {\n global.postMessage(id + '', location.protocol + '//' + location.host);\n};\nif (!set || !clear) {\n set = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i)\n args.push(arguments[i++]);\n queue[++counter] = function () {\n (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n if (classof(process) == 'process') {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port, 1);\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts && !fails(post) && location.protocol !== 'file:') {\n defer = post;\n global.addEventListener('message', listener, false);\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\nmodule.exports = {\n set: set,\n clear: clear\n};\n\n/***/ }),\n/* 126 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar userAgent = __w_pdfjs_require__(127);\nmodule.exports = /(iphone|ipod|ipad).*applewebkit/i.test(userAgent);\n\n/***/ }),\n/* 127 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar getBuiltIn = __w_pdfjs_require__(42);\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n\n/***/ }),\n/* 128 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar global = __w_pdfjs_require__(11);\nvar getOwnPropertyDescriptor = __w_pdfjs_require__(12).f;\nvar classof = __w_pdfjs_require__(19);\nvar macrotask = __w_pdfjs_require__(125).set;\nvar IS_IOS = __w_pdfjs_require__(126);\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar IS_NODE = classof(process) == 'process';\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\nvar flush, head, last, notify, toggle, node, promise, then;\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain))\n parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head)\n notify();\n else\n last = undefined;\n throw error;\n }\n }\n last = undefined;\n if (parent)\n parent.enter();\n };\n if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n } else if (MutationObserver && !IS_IOS) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n } else if (Promise && Promise.resolve) {\n promise = Promise.resolve(undefined);\n then = promise.then;\n notify = function () {\n then.call(promise, flush);\n };\n } else {\n notify = function () {\n macrotask.call(global, flush);\n };\n }\n}\nmodule.exports = queueMicrotask || function (fn) {\n var task = {\n fn: fn,\n next: undefined\n };\n if (last)\n last.next = task;\n if (!head) {\n head = task;\n notify();\n }\n last = task;\n};\n\n/***/ }),\n/* 129 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar anObject = __w_pdfjs_require__(28);\nvar isObject = __w_pdfjs_require__(22);\nvar newPromiseCapability = __w_pdfjs_require__(130);\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C)\n return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n\n/***/ }),\n/* 130 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar aFunction = __w_pdfjs_require__(63);\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined)\n throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n};\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n\n/***/ }),\n/* 131 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar global = __w_pdfjs_require__(11);\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length === 1 ? console.error(a) : console.error(a, b);\n }\n};\n\n/***/ }),\n/* 132 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n try {\n return {\n error: false,\n value: exec()\n };\n } catch (error) {\n return {\n error: true,\n value: error\n };\n }\n};\n\n/***/ }),\n/* 133 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar global = __w_pdfjs_require__(11);\nvar userAgent = __w_pdfjs_require__(127);\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\nif (v8) {\n match = v8.split('.');\n version = match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match)\n version = match[1];\n }\n}\nmodule.exports = version && +version;\n\n/***/ }),\n/* 134 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar $ = __w_pdfjs_require__(10);\nvar aFunction = __w_pdfjs_require__(63);\nvar newPromiseCapabilityModule = __w_pdfjs_require__(130);\nvar perform = __w_pdfjs_require__(132);\nvar iterate = __w_pdfjs_require__(124);\n$({\n target: 'Promise',\n stat: true\n}, {\n allSettled: function allSettled(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var promiseResolve = aFunction(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n promiseResolve.call(C, promise).then(function (value) {\n if (alreadyCalled)\n return;\n alreadyCalled = true;\n values[index] = {\n status: 'fulfilled',\n value: value\n };\n --remaining || resolve(values);\n }, function (e) {\n if (alreadyCalled)\n return;\n alreadyCalled = true;\n values[index] = {\n status: 'rejected',\n reason: e\n };\n --remaining || resolve(values);\n });\n });\n --remaining || resolve(values);\n });\n if (result.error)\n reject(result.value);\n return capability.promise;\n }\n});\n\n/***/ }),\n/* 135 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar $ = __w_pdfjs_require__(10);\nvar IS_PURE = __w_pdfjs_require__(37);\nvar NativePromise = __w_pdfjs_require__(120);\nvar fails = __w_pdfjs_require__(14);\nvar getBuiltIn = __w_pdfjs_require__(42);\nvar speciesConstructor = __w_pdfjs_require__(112);\nvar promiseResolve = __w_pdfjs_require__(129);\nvar redefine = __w_pdfjs_require__(29);\nvar NON_GENERIC = !!NativePromise && fails(function () {\n NativePromise.prototype['finally'].call({\n then: function () {\n }\n }, function () {\n });\n});\n$({\n target: 'Promise',\n proto: true,\n real: true,\n forced: NON_GENERIC\n}, {\n 'finally': function (onFinally) {\n var C = speciesConstructor(this, getBuiltIn('Promise'));\n var isFunction = typeof onFinally == 'function';\n return this.then(isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () {\n return x;\n });\n } : onFinally, isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () {\n throw e;\n });\n } : onFinally);\n }\n});\nif (!IS_PURE && typeof NativePromise == 'function' && !NativePromise.prototype['finally']) {\n redefine(NativePromise.prototype, 'finally', getBuiltIn('Promise').prototype['finally']);\n}\n\n/***/ }),\n/* 136 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(137);\n__w_pdfjs_require__(142);\n__w_pdfjs_require__(140);\nvar path = __w_pdfjs_require__(43);\nmodule.exports = path.URL;\n\n/***/ }),\n/* 137 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n__w_pdfjs_require__(77);\nvar $ = __w_pdfjs_require__(10);\nvar DESCRIPTORS = __w_pdfjs_require__(13);\nvar USE_NATIVE_URL = __w_pdfjs_require__(138);\nvar global = __w_pdfjs_require__(11);\nvar defineProperties = __w_pdfjs_require__(72);\nvar redefine = __w_pdfjs_require__(29);\nvar anInstance = __w_pdfjs_require__(123);\nvar has = __w_pdfjs_require__(23);\nvar assign = __w_pdfjs_require__(100);\nvar arrayFrom = __w_pdfjs_require__(90);\nvar codeAt = __w_pdfjs_require__(78).codeAt;\nvar toASCII = __w_pdfjs_require__(139);\nvar setToStringTag = __w_pdfjs_require__(85);\nvar URLSearchParamsModule = __w_pdfjs_require__(140);\nvar InternalStateModule = __w_pdfjs_require__(33);\nvar NativeURL = global.URL;\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar floor = Math.floor;\nvar pow = Math.pow;\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\nvar ALPHA = /[A-Za-z]/;\nvar ALPHANUMERIC = /[\\d+-.A-Za-z]/;\nvar DIGIT = /\\d/;\nvar HEX_START = /^(0x|0X)/;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\dA-Fa-f]+$/;\nvar FORBIDDEN_HOST_CODE_POINT = /[\\u0000\\u0009\\u000A\\u000D #%/:?@[\\\\]]/;\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\u0000\\u0009\\u000A\\u000D #/:?@[\\\\]]/;\nvar LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u001F ]+|[\\u0000-\\u001F ]+$/g;\nvar TAB_AND_NEW_LINE = /[\\u0009\\u000A\\u000D]/g;\nvar EOF;\nvar parseHost = function (url, input) {\n var result, codePoints, index;\n if (input.charAt(0) == '[') {\n if (input.charAt(input.length - 1) != ']')\n return INVALID_HOST;\n result = parseIPv6(input.slice(1, -1));\n if (!result)\n return INVALID_HOST;\n url.host = result;\n } else if (!isSpecial(url)) {\n if (FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT.test(input))\n return INVALID_HOST;\n result = '';\n codePoints = arrayFrom(input);\n for (index = 0; index < codePoints.length; index++) {\n result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n }\n url.host = result;\n } else {\n input = toASCII(input);\n if (FORBIDDEN_HOST_CODE_POINT.test(input))\n return INVALID_HOST;\n result = parseIPv4(input);\n if (result === null)\n return INVALID_HOST;\n url.host = result;\n }\n};\nvar parseIPv4 = function (input) {\n var parts = input.split('.');\n var partsLength, numbers, index, part, radix, number, ipv4;\n if (parts.length && parts[parts.length - 1] == '') {\n parts.pop();\n }\n partsLength = parts.length;\n if (partsLength > 4)\n return input;\n numbers = [];\n for (index = 0; index < partsLength; index++) {\n part = parts[index];\n if (part == '')\n return input;\n radix = 10;\n if (part.length > 1 && part.charAt(0) == '0') {\n radix = HEX_START.test(part) ? 16 : 8;\n part = part.slice(radix == 8 ? 1 : 2);\n }\n if (part === '') {\n number = 0;\n } else {\n if (!(radix == 10 ? DEC : radix == 8 ? OCT : HEX).test(part))\n return input;\n number = parseInt(part, radix);\n }\n numbers.push(number);\n }\n for (index = 0; index < partsLength; index++) {\n number = numbers[index];\n if (index == partsLength - 1) {\n if (number >= pow(256, 5 - partsLength))\n return null;\n } else if (number > 255)\n return null;\n }\n ipv4 = numbers.pop();\n for (index = 0; index < numbers.length; index++) {\n ipv4 += numbers[index] * pow(256, 3 - index);\n }\n return ipv4;\n};\nvar parseIPv6 = function (input) {\n var address = [\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0\n ];\n var pieceIndex = 0;\n var compress = null;\n var pointer = 0;\n var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n var char = function () {\n return input.charAt(pointer);\n };\n if (char() == ':') {\n if (input.charAt(1) != ':')\n return;\n pointer += 2;\n pieceIndex++;\n compress = pieceIndex;\n }\n while (char()) {\n if (pieceIndex == 8)\n return;\n if (char() == ':') {\n if (compress !== null)\n return;\n pointer++;\n pieceIndex++;\n compress = pieceIndex;\n continue;\n }\n value = length = 0;\n while (length < 4 && HEX.test(char())) {\n value = value * 16 + parseInt(char(), 16);\n pointer++;\n length++;\n }\n if (char() == '.') {\n if (length == 0)\n return;\n pointer -= length;\n if (pieceIndex > 6)\n return;\n numbersSeen = 0;\n while (char()) {\n ipv4Piece = null;\n if (numbersSeen > 0) {\n if (char() == '.' && numbersSeen < 4)\n pointer++;\n else\n return;\n }\n if (!DIGIT.test(char()))\n return;\n while (DIGIT.test(char())) {\n number = parseInt(char(), 10);\n if (ipv4Piece === null)\n ipv4Piece = number;\n else if (ipv4Piece == 0)\n return;\n else\n ipv4Piece = ipv4Piece * 10 + number;\n if (ipv4Piece > 255)\n return;\n pointer++;\n }\n address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n numbersSeen++;\n if (numbersSeen == 2 || numbersSeen == 4)\n pieceIndex++;\n }\n if (numbersSeen != 4)\n return;\n break;\n } else if (char() == ':') {\n pointer++;\n if (!char())\n return;\n } else if (char())\n return;\n address[pieceIndex++] = value;\n }\n if (compress !== null) {\n swaps = pieceIndex - compress;\n pieceIndex = 7;\n while (pieceIndex != 0 && swaps > 0) {\n swap = address[pieceIndex];\n address[pieceIndex--] = address[compress + swaps - 1];\n address[compress + --swaps] = swap;\n }\n } else if (pieceIndex != 8)\n return;\n return address;\n};\nvar findLongestZeroSequence = function (ipv6) {\n var maxIndex = null;\n var maxLength = 1;\n var currStart = null;\n var currLength = 0;\n var index = 0;\n for (; index < 8; index++) {\n if (ipv6[index] !== 0) {\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n currStart = null;\n currLength = 0;\n } else {\n if (currStart === null)\n currStart = index;\n ++currLength;\n }\n }\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n return maxIndex;\n};\nvar serializeHost = function (host) {\n var result, index, compress, ignore0;\n if (typeof host == 'number') {\n result = [];\n for (index = 0; index < 4; index++) {\n result.unshift(host % 256);\n host = floor(host / 256);\n }\n return result.join('.');\n } else if (typeof host == 'object') {\n result = '';\n compress = findLongestZeroSequence(host);\n for (index = 0; index < 8; index++) {\n if (ignore0 && host[index] === 0)\n continue;\n if (ignore0)\n ignore0 = false;\n if (compress === index) {\n result += index ? ':' : '::';\n ignore0 = true;\n } else {\n result += host[index].toString(16);\n if (index < 7)\n result += ':';\n }\n }\n return '[' + result + ']';\n }\n return host;\n};\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n ' ': 1,\n '\"': 1,\n '<': 1,\n '>': 1,\n '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n '#': 1,\n '?': 1,\n '{': 1,\n '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n '/': 1,\n ':': 1,\n ';': 1,\n '=': 1,\n '@': 1,\n '[': 1,\n '\\\\': 1,\n ']': 1,\n '^': 1,\n '|': 1\n});\nvar percentEncode = function (char, set) {\n var code = codeAt(char, 0);\n return code > 0x20 && code < 0x7F && !has(set, char) ? char : encodeURIComponent(char);\n};\nvar specialSchemes = {\n ftp: 21,\n file: null,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443\n};\nvar isSpecial = function (url) {\n return has(specialSchemes, url.scheme);\n};\nvar includesCredentials = function (url) {\n return url.username != '' || url.password != '';\n};\nvar cannotHaveUsernamePasswordPort = function (url) {\n return !url.host || url.cannotBeABaseURL || url.scheme == 'file';\n};\nvar isWindowsDriveLetter = function (string, normalized) {\n var second;\n return string.length == 2 && ALPHA.test(string.charAt(0)) && ((second = string.charAt(1)) == ':' || !normalized && second == '|');\n};\nvar startsWithWindowsDriveLetter = function (string) {\n var third;\n return string.length > 1 && isWindowsDriveLetter(string.slice(0, 2)) && (string.length == 2 || ((third = string.charAt(2)) === '/' || third === '\\\\' || third === '?' || third === '#'));\n};\nvar shortenURLsPath = function (url) {\n var path = url.path;\n var pathSize = path.length;\n if (pathSize && (url.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\n path.pop();\n }\n};\nvar isSingleDot = function (segment) {\n return segment === '.' || segment.toLowerCase() === '%2e';\n};\nvar isDoubleDot = function (segment) {\n segment = segment.toLowerCase();\n return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\nvar parseURL = function (url, input, stateOverride, base) {\n var state = stateOverride || SCHEME_START;\n var pointer = 0;\n var buffer = '';\n var seenAt = false;\n var seenBracket = false;\n var seenPasswordToken = false;\n var codePoints, char, bufferCodePoints, failure;\n if (!stateOverride) {\n url.scheme = '';\n url.username = '';\n url.password = '';\n url.host = null;\n url.port = null;\n url.path = [];\n url.query = null;\n url.fragment = null;\n url.cannotBeABaseURL = false;\n input = input.replace(LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');\n }\n input = input.replace(TAB_AND_NEW_LINE, '');\n codePoints = arrayFrom(input);\n while (pointer <= codePoints.length) {\n char = codePoints[pointer];\n switch (state) {\n case SCHEME_START:\n if (char && ALPHA.test(char)) {\n buffer += char.toLowerCase();\n state = SCHEME;\n } else if (!stateOverride) {\n state = NO_SCHEME;\n continue;\n } else\n return INVALID_SCHEME;\n break;\n case SCHEME:\n if (char && (ALPHANUMERIC.test(char) || char == '+' || char == '-' || char == '.')) {\n buffer += char.toLowerCase();\n } else if (char == ':') {\n if (stateOverride && (isSpecial(url) != has(specialSchemes, buffer) || buffer == 'file' && (includesCredentials(url) || url.port !== null) || url.scheme == 'file' && !url.host))\n return;\n url.scheme = buffer;\n if (stateOverride) {\n if (isSpecial(url) && specialSchemes[url.scheme] == url.port)\n url.port = null;\n return;\n }\n buffer = '';\n if (url.scheme == 'file') {\n state = FILE;\n } else if (isSpecial(url) && base && base.scheme == url.scheme) {\n state = SPECIAL_RELATIVE_OR_AUTHORITY;\n } else if (isSpecial(url)) {\n state = SPECIAL_AUTHORITY_SLASHES;\n } else if (codePoints[pointer + 1] == '/') {\n state = PATH_OR_AUTHORITY;\n pointer++;\n } else {\n url.cannotBeABaseURL = true;\n url.path.push('');\n state = CANNOT_BE_A_BASE_URL_PATH;\n }\n } else if (!stateOverride) {\n buffer = '';\n state = NO_SCHEME;\n pointer = 0;\n continue;\n } else\n return INVALID_SCHEME;\n break;\n case NO_SCHEME:\n if (!base || base.cannotBeABaseURL && char != '#')\n return INVALID_SCHEME;\n if (base.cannotBeABaseURL && char == '#') {\n url.scheme = base.scheme;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n url.cannotBeABaseURL = true;\n state = FRAGMENT;\n break;\n }\n state = base.scheme == 'file' ? FILE : RELATIVE;\n continue;\n case SPECIAL_RELATIVE_OR_AUTHORITY:\n if (char == '/' && codePoints[pointer + 1] == '/') {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n pointer++;\n } else {\n state = RELATIVE;\n continue;\n }\n break;\n case PATH_OR_AUTHORITY:\n if (char == '/') {\n state = AUTHORITY;\n break;\n } else {\n state = PATH;\n continue;\n }\n case RELATIVE:\n url.scheme = base.scheme;\n if (char == EOF) {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '/' || char == '\\\\' && isSpecial(url)) {\n state = RELATIVE_SLASH;\n } else if (char == '?') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.path.pop();\n state = PATH;\n continue;\n }\n break;\n case RELATIVE_SLASH:\n if (isSpecial(url) && (char == '/' || char == '\\\\')) {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n } else if (char == '/') {\n state = AUTHORITY;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n state = PATH;\n continue;\n }\n break;\n case SPECIAL_AUTHORITY_SLASHES:\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n if (char != '/' || buffer.charAt(pointer + 1) != '/')\n continue;\n pointer++;\n break;\n case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n if (char != '/' && char != '\\\\') {\n state = AUTHORITY;\n continue;\n }\n break;\n case AUTHORITY:\n if (char == '@') {\n if (seenAt)\n buffer = '%40' + buffer;\n seenAt = true;\n bufferCodePoints = arrayFrom(buffer);\n for (var i = 0; i < bufferCodePoints.length; i++) {\n var codePoint = bufferCodePoints[i];\n if (codePoint == ':' && !seenPasswordToken) {\n seenPasswordToken = true;\n continue;\n }\n var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n if (seenPasswordToken)\n url.password += encodedCodePoints;\n else\n url.username += encodedCodePoints;\n }\n buffer = '';\n } else if (char == EOF || char == '/' || char == '?' || char == '#' || char == '\\\\' && isSpecial(url)) {\n if (seenAt && buffer == '')\n return INVALID_AUTHORITY;\n pointer -= arrayFrom(buffer).length + 1;\n buffer = '';\n state = HOST;\n } else\n buffer += char;\n break;\n case HOST:\n case HOSTNAME:\n if (stateOverride && url.scheme == 'file') {\n state = FILE_HOST;\n continue;\n } else if (char == ':' && !seenBracket) {\n if (buffer == '')\n return INVALID_HOST;\n failure = parseHost(url, buffer);\n if (failure)\n return failure;\n buffer = '';\n state = PORT;\n if (stateOverride == HOSTNAME)\n return;\n } else if (char == EOF || char == '/' || char == '?' || char == '#' || char == '\\\\' && isSpecial(url)) {\n if (isSpecial(url) && buffer == '')\n return INVALID_HOST;\n if (stateOverride && buffer == '' && (includesCredentials(url) || url.port !== null))\n return;\n failure = parseHost(url, buffer);\n if (failure)\n return failure;\n buffer = '';\n state = PATH_START;\n if (stateOverride)\n return;\n continue;\n } else {\n if (char == '[')\n seenBracket = true;\n else if (char == ']')\n seenBracket = false;\n buffer += char;\n }\n break;\n case PORT:\n if (DIGIT.test(char)) {\n buffer += char;\n } else if (char == EOF || char == '/' || char == '?' || char == '#' || char == '\\\\' && isSpecial(url) || stateOverride) {\n if (buffer != '') {\n var port = parseInt(buffer, 10);\n if (port > 0xFFFF)\n return INVALID_PORT;\n url.port = isSpecial(url) && port === specialSchemes[url.scheme] ? null : port;\n buffer = '';\n }\n if (stateOverride)\n return;\n state = PATH_START;\n continue;\n } else\n return INVALID_PORT;\n break;\n case FILE:\n url.scheme = 'file';\n if (char == '/' || char == '\\\\')\n state = FILE_SLASH;\n else if (base && base.scheme == 'file') {\n if (char == EOF) {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '?') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n if (!startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n url.host = base.host;\n url.path = base.path.slice();\n shortenURLsPath(url);\n }\n state = PATH;\n continue;\n }\n } else {\n state = PATH;\n continue;\n }\n break;\n case FILE_SLASH:\n if (char == '/' || char == '\\\\') {\n state = FILE_HOST;\n break;\n }\n if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n if (isWindowsDriveLetter(base.path[0], true))\n url.path.push(base.path[0]);\n else\n url.host = base.host;\n }\n state = PATH;\n continue;\n case FILE_HOST:\n if (char == EOF || char == '/' || char == '\\\\' || char == '?' || char == '#') {\n if (!stateOverride && isWindowsDriveLetter(buffer)) {\n state = PATH;\n } else if (buffer == '') {\n url.host = '';\n if (stateOverride)\n return;\n state = PATH_START;\n } else {\n failure = parseHost(url, buffer);\n if (failure)\n return failure;\n if (url.host == 'localhost')\n url.host = '';\n if (stateOverride)\n return;\n buffer = '';\n state = PATH_START;\n }\n continue;\n } else\n buffer += char;\n break;\n case PATH_START:\n if (isSpecial(url)) {\n state = PATH;\n if (char != '/' && char != '\\\\')\n continue;\n } else if (!stateOverride && char == '?') {\n url.query = '';\n state = QUERY;\n } else if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n state = PATH;\n if (char != '/')\n continue;\n }\n break;\n case PATH:\n if (char == EOF || char == '/' || char == '\\\\' && isSpecial(url) || !stateOverride && (char == '?' || char == '#')) {\n if (isDoubleDot(buffer)) {\n shortenURLsPath(url);\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else if (isSingleDot(buffer)) {\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else {\n if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n if (url.host)\n url.host = '';\n buffer = buffer.charAt(0) + ':';\n }\n url.path.push(buffer);\n }\n buffer = '';\n if (url.scheme == 'file' && (char == EOF || char == '?' || char == '#')) {\n while (url.path.length > 1 && url.path[0] === '') {\n url.path.shift();\n }\n }\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n }\n } else {\n buffer += percentEncode(char, pathPercentEncodeSet);\n }\n break;\n case CANNOT_BE_A_BASE_URL_PATH:\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n url.path[0] += percentEncode(char, C0ControlPercentEncodeSet);\n }\n break;\n case QUERY:\n if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n if (char == \"'\" && isSpecial(url))\n url.query += '%27';\n else if (char == '#')\n url.query += '%23';\n else\n url.query += percentEncode(char, C0ControlPercentEncodeSet);\n }\n break;\n case FRAGMENT:\n if (char != EOF)\n url.fragment += percentEncode(char, fragmentPercentEncodeSet);\n break;\n }\n pointer++;\n }\n};\nvar URLConstructor = function URL(url) {\n var that = anInstance(this, URLConstructor, 'URL');\n var base = arguments.length > 1 ? arguments[1] : undefined;\n var urlString = String(url);\n var state = setInternalState(that, { type: 'URL' });\n var baseState, failure;\n if (base !== undefined) {\n if (base instanceof URLConstructor)\n baseState = getInternalURLState(base);\n else {\n failure = parseURL(baseState = {}, String(base));\n if (failure)\n throw TypeError(failure);\n }\n }\n failure = parseURL(state, urlString, null, baseState);\n if (failure)\n throw TypeError(failure);\n var searchParams = state.searchParams = new URLSearchParams();\n var searchParamsState = getInternalSearchParamsState(searchParams);\n searchParamsState.updateSearchParams(state.query);\n searchParamsState.updateURL = function () {\n state.query = String(searchParams) || null;\n };\n if (!DESCRIPTORS) {\n that.href = serializeURL.call(that);\n that.origin = getOrigin.call(that);\n that.protocol = getProtocol.call(that);\n that.username = getUsername.call(that);\n that.password = getPassword.call(that);\n that.host = getHost.call(that);\n that.hostname = getHostname.call(that);\n that.port = getPort.call(that);\n that.pathname = getPathname.call(that);\n that.search = getSearch.call(that);\n that.searchParams = getSearchParams.call(that);\n that.hash = getHash.call(that);\n }\n};\nvar URLPrototype = URLConstructor.prototype;\nvar serializeURL = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var username = url.username;\n var password = url.password;\n var host = url.host;\n var port = url.port;\n var path = url.path;\n var query = url.query;\n var fragment = url.fragment;\n var output = scheme + ':';\n if (host !== null) {\n output += '//';\n if (includesCredentials(url)) {\n output += username + (password ? ':' + password : '') + '@';\n }\n output += serializeHost(host);\n if (port !== null)\n output += ':' + port;\n } else if (scheme == 'file')\n output += '//';\n output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n if (query !== null)\n output += '?' + query;\n if (fragment !== null)\n output += '#' + fragment;\n return output;\n};\nvar getOrigin = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var port = url.port;\n if (scheme == 'blob')\n try {\n return new URL(scheme.path[0]).origin;\n } catch (error) {\n return 'null';\n }\n if (scheme == 'file' || !isSpecial(url))\n return 'null';\n return scheme + '://' + serializeHost(url.host) + (port !== null ? ':' + port : '');\n};\nvar getProtocol = function () {\n return getInternalURLState(this).scheme + ':';\n};\nvar getUsername = function () {\n return getInternalURLState(this).username;\n};\nvar getPassword = function () {\n return getInternalURLState(this).password;\n};\nvar getHost = function () {\n var url = getInternalURLState(this);\n var host = url.host;\n var port = url.port;\n return host === null ? '' : port === null ? serializeHost(host) : serializeHost(host) + ':' + port;\n};\nvar getHostname = function () {\n var host = getInternalURLState(this).host;\n return host === null ? '' : serializeHost(host);\n};\nvar getPort = function () {\n var port = getInternalURLState(this).port;\n return port === null ? '' : String(port);\n};\nvar getPathname = function () {\n var url = getInternalURLState(this);\n var path = url.path;\n return url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n};\nvar getSearch = function () {\n var query = getInternalURLState(this).query;\n return query ? '?' + query : '';\n};\nvar getSearchParams = function () {\n return getInternalURLState(this).searchParams;\n};\nvar getHash = function () {\n var fragment = getInternalURLState(this).fragment;\n return fragment ? '#' + fragment : '';\n};\nvar accessorDescriptor = function (getter, setter) {\n return {\n get: getter,\n set: setter,\n configurable: true,\n enumerable: true\n };\n};\nif (DESCRIPTORS) {\n defineProperties(URLPrototype, {\n href: accessorDescriptor(serializeURL, function (href) {\n var url = getInternalURLState(this);\n var urlString = String(href);\n var failure = parseURL(url, urlString);\n if (failure)\n throw TypeError(failure);\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n origin: accessorDescriptor(getOrigin),\n protocol: accessorDescriptor(getProtocol, function (protocol) {\n var url = getInternalURLState(this);\n parseURL(url, String(protocol) + ':', SCHEME_START);\n }),\n username: accessorDescriptor(getUsername, function (username) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(username));\n if (cannotHaveUsernamePasswordPort(url))\n return;\n url.username = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n password: accessorDescriptor(getPassword, function (password) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(password));\n if (cannotHaveUsernamePasswordPort(url))\n return;\n url.password = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n host: accessorDescriptor(getHost, function (host) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL)\n return;\n parseURL(url, String(host), HOST);\n }),\n hostname: accessorDescriptor(getHostname, function (hostname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL)\n return;\n parseURL(url, String(hostname), HOSTNAME);\n }),\n port: accessorDescriptor(getPort, function (port) {\n var url = getInternalURLState(this);\n if (cannotHaveUsernamePasswordPort(url))\n return;\n port = String(port);\n if (port == '')\n url.port = null;\n else\n parseURL(url, port, PORT);\n }),\n pathname: accessorDescriptor(getPathname, function (pathname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL)\n return;\n url.path = [];\n parseURL(url, pathname + '', PATH_START);\n }),\n search: accessorDescriptor(getSearch, function (search) {\n var url = getInternalURLState(this);\n search = String(search);\n if (search == '') {\n url.query = null;\n } else {\n if ('?' == search.charAt(0))\n search = search.slice(1);\n url.query = '';\n parseURL(url, search, QUERY);\n }\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n searchParams: accessorDescriptor(getSearchParams),\n hash: accessorDescriptor(getHash, function (hash) {\n var url = getInternalURLState(this);\n hash = String(hash);\n if (hash == '') {\n url.fragment = null;\n return;\n }\n if ('#' == hash.charAt(0))\n hash = hash.slice(1);\n url.fragment = '';\n parseURL(url, hash, FRAGMENT);\n })\n });\n}\nredefine(URLPrototype, 'toJSON', function toJSON() {\n return serializeURL.call(this);\n}, { enumerable: true });\nredefine(URLPrototype, 'toString', function toString() {\n return serializeURL.call(this);\n}, { enumerable: true });\nif (NativeURL) {\n var nativeCreateObjectURL = NativeURL.createObjectURL;\n var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n if (nativeCreateObjectURL)\n redefine(URLConstructor, 'createObjectURL', function createObjectURL(blob) {\n return nativeCreateObjectURL.apply(NativeURL, arguments);\n });\n if (nativeRevokeObjectURL)\n redefine(URLConstructor, 'revokeObjectURL', function revokeObjectURL(url) {\n return nativeRevokeObjectURL.apply(NativeURL, arguments);\n });\n}\nsetToStringTag(URLConstructor, 'URL');\n$({\n global: true,\n forced: !USE_NATIVE_URL,\n sham: !DESCRIPTORS\n}, { URL: URLConstructor });\n\n/***/ }),\n/* 138 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar fails = __w_pdfjs_require__(14);\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar IS_PURE = __w_pdfjs_require__(37);\nvar ITERATOR = wellKnownSymbol('iterator');\nmodule.exports = !fails(function () {\n var url = new URL('b?a=1&b=2&c=3', 'http://a');\n var searchParams = url.searchParams;\n var result = '';\n url.pathname = 'c%20d';\n searchParams.forEach(function (value, key) {\n searchParams['delete']('b');\n result += key + value;\n });\n return IS_PURE && !url.toJSON || !searchParams.sort || url.href !== 'http://a/c%20d?a=1&c=3' || searchParams.get('c') !== '3' || String(new URLSearchParams('?a=1')) !== 'a=1' || !searchParams[ITERATOR] || new URL('https://a@b').username !== 'a' || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b' || new URL('http://тест').host !== 'xn--e1aybc' || new URL('http://a#б').hash !== '#%D0%B1' || result !== 'a1c3' || new URL('http://x', undefined).host !== 'x';\n});\n\n/***/ }),\n/* 139 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar maxInt = 2147483647;\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128;\nvar delimiter = '-';\nvar regexNonASCII = /[^\\0-\\u007E]/;\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g;\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\nvar floor = Math.floor;\nvar stringFromCharCode = String.fromCharCode;\nvar ucs2decode = function (string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n while (counter < length) {\n var value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n var extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) {\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n};\nvar digitToBasic = function (digit) {\n return digit + 22 + 75 * (digit < 26);\n};\nvar adapt = function (delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n for (; delta > baseMinusTMin * tMax >> 1; k += base) {\n delta = floor(delta / baseMinusTMin);\n }\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\nvar encode = function (input) {\n var output = [];\n input = ucs2decode(input);\n var inputLength = input.length;\n var n = initialN;\n var delta = 0;\n var bias = initialBias;\n var i, currentValue;\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < 0x80) {\n output.push(stringFromCharCode(currentValue));\n }\n }\n var basicLength = output.length;\n var handledCPCount = basicLength;\n if (basicLength) {\n output.push(delimiter);\n }\n while (handledCPCount < inputLength) {\n var m = maxInt;\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n }\n var handledCPCountPlusOne = handledCPCount + 1;\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n throw RangeError(OVERFLOW_ERROR);\n }\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < n && ++delta > maxInt) {\n throw RangeError(OVERFLOW_ERROR);\n }\n if (currentValue == n) {\n var q = delta;\n for (var k = base;; k += base) {\n var t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n if (q < t)\n break;\n var qMinusT = q - t;\n var baseMinusT = base - t;\n output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n q = floor(qMinusT / baseMinusT);\n }\n output.push(stringFromCharCode(digitToBasic(q)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n delta = 0;\n ++handledCPCount;\n }\n }\n ++delta;\n ++n;\n }\n return output.join('');\n};\nmodule.exports = function (input) {\n var encoded = [];\n var labels = input.toLowerCase().replace(regexSeparators, '\\u002E').split('.');\n var i, label;\n for (i = 0; i < labels.length; i++) {\n label = labels[i];\n encoded.push(regexNonASCII.test(label) ? 'xn--' + encode(label) : label);\n }\n return encoded.join('.');\n};\n\n/***/ }),\n/* 140 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n__w_pdfjs_require__(118);\nvar $ = __w_pdfjs_require__(10);\nvar getBuiltIn = __w_pdfjs_require__(42);\nvar USE_NATIVE_URL = __w_pdfjs_require__(138);\nvar redefine = __w_pdfjs_require__(29);\nvar redefineAll = __w_pdfjs_require__(121);\nvar setToStringTag = __w_pdfjs_require__(85);\nvar createIteratorConstructor = __w_pdfjs_require__(80);\nvar InternalStateModule = __w_pdfjs_require__(33);\nvar anInstance = __w_pdfjs_require__(123);\nvar hasOwn = __w_pdfjs_require__(23);\nvar bind = __w_pdfjs_require__(62);\nvar classof = __w_pdfjs_require__(95);\nvar anObject = __w_pdfjs_require__(28);\nvar isObject = __w_pdfjs_require__(22);\nvar create = __w_pdfjs_require__(71);\nvar createPropertyDescriptor = __w_pdfjs_require__(16);\nvar getIterator = __w_pdfjs_require__(141);\nvar getIteratorMethod = __w_pdfjs_require__(94);\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar $fetch = getBuiltIn('fetch');\nvar Headers = getBuiltIn('Headers');\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\nvar plus = /\\+/g;\nvar sequences = Array(4);\nvar percentSequence = function (bytes) {\n return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\nvar percentDecode = function (sequence) {\n try {\n return decodeURIComponent(sequence);\n } catch (error) {\n return sequence;\n }\n};\nvar deserialize = function (it) {\n var result = it.replace(plus, ' ');\n var bytes = 4;\n try {\n return decodeURIComponent(result);\n } catch (error) {\n while (bytes) {\n result = result.replace(percentSequence(bytes--), percentDecode);\n }\n return result;\n }\n};\nvar find = /[!'()~]|%20/g;\nvar replace = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+'\n};\nvar replacer = function (match) {\n return replace[match];\n};\nvar serialize = function (it) {\n return encodeURIComponent(it).replace(find, replacer);\n};\nvar parseSearchParams = function (result, query) {\n if (query) {\n var attributes = query.split('&');\n var index = 0;\n var attribute, entry;\n while (index < attributes.length) {\n attribute = attributes[index++];\n if (attribute.length) {\n entry = attribute.split('=');\n result.push({\n key: deserialize(entry.shift()),\n value: deserialize(entry.join('='))\n });\n }\n }\n }\n};\nvar updateSearchParams = function (query) {\n this.entries.length = 0;\n parseSearchParams(this.entries, query);\n};\nvar validateArgumentsLength = function (passed, required) {\n if (passed < required)\n throw TypeError('Not enough arguments');\n};\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n setInternalState(this, {\n type: URL_SEARCH_PARAMS_ITERATOR,\n iterator: getIterator(getInternalParamsState(params).entries),\n kind: kind\n });\n}, 'Iterator', function next() {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var step = state.iterator.next();\n var entry = step.value;\n if (!step.done) {\n step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [\n entry.key,\n entry.value\n ];\n }\n return step;\n});\nvar URLSearchParamsConstructor = function URLSearchParams() {\n anInstance(this, URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n var init = arguments.length > 0 ? arguments[0] : undefined;\n var that = this;\n var entries = [];\n var iteratorMethod, iterator, next, step, entryIterator, entryNext, first, second, key;\n setInternalState(that, {\n type: URL_SEARCH_PARAMS,\n entries: entries,\n updateURL: function () {\n },\n updateSearchParams: updateSearchParams\n });\n if (init !== undefined) {\n if (isObject(init)) {\n iteratorMethod = getIteratorMethod(init);\n if (typeof iteratorMethod === 'function') {\n iterator = iteratorMethod.call(init);\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n entryIterator = getIterator(anObject(step.value));\n entryNext = entryIterator.next;\n if ((first = entryNext.call(entryIterator)).done || (second = entryNext.call(entryIterator)).done || !entryNext.call(entryIterator).done)\n throw TypeError('Expected sequence with length 2');\n entries.push({\n key: first.value + '',\n value: second.value + ''\n });\n }\n } else\n for (key in init)\n if (hasOwn(init, key))\n entries.push({\n key: key,\n value: init[key] + ''\n });\n } else {\n parseSearchParams(entries, typeof init === 'string' ? init.charAt(0) === '?' ? init.slice(1) : init : init + '');\n }\n }\n};\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\nredefineAll(URLSearchParamsPrototype, {\n append: function append(name, value) {\n validateArgumentsLength(arguments.length, 2);\n var state = getInternalParamsState(this);\n state.entries.push({\n key: name + '',\n value: value + ''\n });\n state.updateURL();\n },\n 'delete': function (name) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index].key === key)\n entries.splice(index, 1);\n else\n index++;\n }\n state.updateURL();\n },\n get: function get(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key)\n return entries[index].value;\n }\n return null;\n },\n getAll: function getAll(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var result = [];\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key)\n result.push(entries[index].value);\n }\n return result;\n },\n has: function has(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index++].key === key)\n return true;\n }\n return false;\n },\n set: function set(name, value) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var found = false;\n var key = name + '';\n var val = value + '';\n var index = 0;\n var entry;\n for (; index < entries.length; index++) {\n entry = entries[index];\n if (entry.key === key) {\n if (found)\n entries.splice(index--, 1);\n else {\n found = true;\n entry.value = val;\n }\n }\n }\n if (!found)\n entries.push({\n key: key,\n value: val\n });\n state.updateURL();\n },\n sort: function sort() {\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var slice = entries.slice();\n var entry, entriesIndex, sliceIndex;\n entries.length = 0;\n for (sliceIndex = 0; sliceIndex < slice.length; sliceIndex++) {\n entry = slice[sliceIndex];\n for (entriesIndex = 0; entriesIndex < sliceIndex; entriesIndex++) {\n if (entries[entriesIndex].key > entry.key) {\n entries.splice(entriesIndex, 0, entry);\n break;\n }\n }\n if (entriesIndex === sliceIndex)\n entries.push(entry);\n }\n state.updateURL();\n },\n forEach: function forEach(callback) {\n var entries = getInternalParamsState(this).entries;\n var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined, 3);\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n boundFunction(entry.value, entry.key, this);\n }\n },\n keys: function keys() {\n return new URLSearchParamsIterator(this, 'keys');\n },\n values: function values() {\n return new URLSearchParamsIterator(this, 'values');\n },\n entries: function entries() {\n return new URLSearchParamsIterator(this, 'entries');\n }\n}, { enumerable: true });\nredefine(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries);\nredefine(URLSearchParamsPrototype, 'toString', function toString() {\n var entries = getInternalParamsState(this).entries;\n var result = [];\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n result.push(serialize(entry.key) + '=' + serialize(entry.value));\n }\n return result.join('&');\n}, { enumerable: true });\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n$({\n global: true,\n forced: !USE_NATIVE_URL\n}, { URLSearchParams: URLSearchParamsConstructor });\nif (!USE_NATIVE_URL && typeof $fetch == 'function' && typeof Headers == 'function') {\n $({\n global: true,\n enumerable: true,\n forced: true\n }, {\n fetch: function fetch(input) {\n var args = [input];\n var init, body, headers;\n if (arguments.length > 1) {\n init = arguments[1];\n if (isObject(init)) {\n body = init.body;\n if (classof(body) === URL_SEARCH_PARAMS) {\n headers = init.headers ? new Headers(init.headers) : new Headers();\n if (!headers.has('content-type')) {\n headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n init = create(init, {\n body: createPropertyDescriptor(0, String(body)),\n headers: createPropertyDescriptor(0, headers)\n });\n }\n }\n args.push(init);\n }\n return $fetch.apply(this, args);\n }\n });\n}\nmodule.exports = {\n URLSearchParams: URLSearchParamsConstructor,\n getState: getInternalParamsState\n};\n\n/***/ }),\n/* 141 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar anObject = __w_pdfjs_require__(28);\nvar getIteratorMethod = __w_pdfjs_require__(94);\nmodule.exports = function (it) {\n var iteratorMethod = getIteratorMethod(it);\n if (typeof iteratorMethod != 'function') {\n throw TypeError(String(it) + ' is not iterable');\n }\n return anObject(iteratorMethod.call(it));\n};\n\n/***/ }),\n/* 142 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar $ = __w_pdfjs_require__(10);\n$({\n target: 'URL',\n proto: true,\n enumerable: true\n}, {\n toJSON: function toJSON() {\n return URL.prototype.toString.call(this);\n }\n});\n\n/***/ }),\n/* 143 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n(function (global, factory) {\n true ? factory(exports) : undefined;\n}(this, function (exports) {\n 'use strict';\n var SymbolPolyfill = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol : function (description) {\n return \"Symbol(\" + description + \")\";\n };\n function noop() {\n }\n var NumberIsNaN = Number.isNaN || function (x) {\n return x !== x;\n };\n var rethrowAssertionErrorRejection = noop;\n function typeIsObject(x) {\n return typeof x === 'object' && x !== null || typeof x === 'function';\n }\n function createArrayFromList(elements) {\n return elements.slice();\n }\n function ArrayBufferCopy(dest, destOffset, src, srcOffset, n) {\n new Uint8Array(dest).set(new Uint8Array(src, srcOffset, n), destOffset);\n }\n function IsFiniteNonNegativeNumber(v) {\n if (IsNonNegativeNumber(v) === false) {\n return false;\n }\n if (v === Infinity) {\n return false;\n }\n return true;\n }\n function IsNonNegativeNumber(v) {\n if (typeof v !== 'number') {\n return false;\n }\n if (NumberIsNaN(v)) {\n return false;\n }\n if (v < 0) {\n return false;\n }\n return true;\n }\n function Call(F, V, args) {\n if (typeof F !== 'function') {\n throw new TypeError('Argument is not a function');\n }\n return Function.prototype.apply.call(F, V, args);\n }\n function CreateAlgorithmFromUnderlyingMethod(underlyingObject, methodName, algoArgCount, extraArgs) {\n var method = underlyingObject[methodName];\n if (method !== undefined) {\n if (typeof method !== 'function') {\n throw new TypeError(method + \" is not a method\");\n }\n switch (algoArgCount) {\n case 0: {\n return function () {\n return PromiseCall(method, underlyingObject, extraArgs);\n };\n }\n case 1: {\n return function (arg) {\n var fullArgs = [arg].concat(extraArgs);\n return PromiseCall(method, underlyingObject, fullArgs);\n };\n }\n }\n }\n return function () {\n return promiseResolvedWith(undefined);\n };\n }\n function InvokeOrNoop(O, P, args) {\n var method = O[P];\n if (method === undefined) {\n return undefined;\n }\n return Call(method, O, args);\n }\n function PromiseCall(F, V, args) {\n try {\n return promiseResolvedWith(Call(F, V, args));\n } catch (value) {\n return promiseRejectedWith(value);\n }\n }\n function TransferArrayBuffer(O) {\n return O;\n }\n function IsDetachedBuffer(O) {\n return false;\n }\n function ValidateAndNormalizeHighWaterMark(highWaterMark) {\n highWaterMark = Number(highWaterMark);\n if (NumberIsNaN(highWaterMark) || highWaterMark < 0) {\n throw new RangeError('highWaterMark property of a queuing strategy must be non-negative and non-NaN');\n }\n return highWaterMark;\n }\n function MakeSizeAlgorithmFromSizeFunction(size) {\n if (size === undefined) {\n return function () {\n return 1;\n };\n }\n if (typeof size !== 'function') {\n throw new TypeError('size property of a queuing strategy must be a function');\n }\n return function (chunk) {\n return size(chunk);\n };\n }\n var originalPromise = Promise;\n var originalPromiseThen = Promise.prototype.then;\n var originalPromiseResolve = Promise.resolve.bind(originalPromise);\n var originalPromiseReject = Promise.reject.bind(originalPromise);\n function newPromise(executor) {\n return new originalPromise(executor);\n }\n function promiseResolvedWith(value) {\n return originalPromiseResolve(value);\n }\n function promiseRejectedWith(reason) {\n return originalPromiseReject(reason);\n }\n function PerformPromiseThen(promise, onFulfilled, onRejected) {\n return originalPromiseThen.call(promise, onFulfilled, onRejected);\n }\n function uponPromise(promise, onFulfilled, onRejected) {\n PerformPromiseThen(PerformPromiseThen(promise, onFulfilled, onRejected), undefined, rethrowAssertionErrorRejection);\n }\n function uponFulfillment(promise, onFulfilled) {\n uponPromise(promise, onFulfilled);\n }\n function uponRejection(promise, onRejected) {\n uponPromise(promise, undefined, onRejected);\n }\n function transformPromiseWith(promise, fulfillmentHandler, rejectionHandler) {\n return PerformPromiseThen(promise, fulfillmentHandler, rejectionHandler);\n }\n function setPromiseIsHandledToTrue(promise) {\n PerformPromiseThen(promise, undefined, rethrowAssertionErrorRejection);\n }\n var QUEUE_MAX_ARRAY_SIZE = 16384;\n var SimpleQueue = function () {\n function SimpleQueue() {\n this._cursor = 0;\n this._size = 0;\n this._front = {\n _elements: [],\n _next: undefined\n };\n this._back = this._front;\n this._cursor = 0;\n this._size = 0;\n }\n Object.defineProperty(SimpleQueue.prototype, \"length\", {\n get: function () {\n return this._size;\n },\n enumerable: true,\n configurable: true\n });\n SimpleQueue.prototype.push = function (element) {\n var oldBack = this._back;\n var newBack = oldBack;\n if (oldBack._elements.length === QUEUE_MAX_ARRAY_SIZE - 1) {\n newBack = {\n _elements: [],\n _next: undefined\n };\n }\n oldBack._elements.push(element);\n if (newBack !== oldBack) {\n this._back = newBack;\n oldBack._next = newBack;\n }\n ++this._size;\n };\n SimpleQueue.prototype.shift = function () {\n var oldFront = this._front;\n var newFront = oldFront;\n var oldCursor = this._cursor;\n var newCursor = oldCursor + 1;\n var elements = oldFront._elements;\n var element = elements[oldCursor];\n if (newCursor === QUEUE_MAX_ARRAY_SIZE) {\n newFront = oldFront._next;\n newCursor = 0;\n }\n --this._size;\n this._cursor = newCursor;\n if (oldFront !== newFront) {\n this._front = newFront;\n }\n elements[oldCursor] = undefined;\n return element;\n };\n SimpleQueue.prototype.forEach = function (callback) {\n var i = this._cursor;\n var node = this._front;\n var elements = node._elements;\n while (i !== elements.length || node._next !== undefined) {\n if (i === elements.length) {\n node = node._next;\n elements = node._elements;\n i = 0;\n if (elements.length === 0) {\n break;\n }\n }\n callback(elements[i]);\n ++i;\n }\n };\n SimpleQueue.prototype.peek = function () {\n var front = this._front;\n var cursor = this._cursor;\n return front._elements[cursor];\n };\n return SimpleQueue;\n }();\n function ReadableStreamCreateReadResult(value, done, forAuthorCode) {\n var prototype = null;\n if (forAuthorCode === true) {\n prototype = Object.prototype;\n }\n var obj = Object.create(prototype);\n obj.value = value;\n obj.done = done;\n return obj;\n }\n function ReadableStreamReaderGenericInitialize(reader, stream) {\n reader._forAuthorCode = true;\n reader._ownerReadableStream = stream;\n stream._reader = reader;\n if (stream._state === 'readable') {\n defaultReaderClosedPromiseInitialize(reader);\n } else if (stream._state === 'closed') {\n defaultReaderClosedPromiseInitializeAsResolved(reader);\n } else {\n defaultReaderClosedPromiseInitializeAsRejected(reader, stream._storedError);\n }\n }\n function ReadableStreamReaderGenericCancel(reader, reason) {\n var stream = reader._ownerReadableStream;\n return ReadableStreamCancel(stream, reason);\n }\n function ReadableStreamReaderGenericRelease(reader) {\n if (reader._ownerReadableStream._state === 'readable') {\n defaultReaderClosedPromiseReject(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\\'s closedness'));\n } else {\n defaultReaderClosedPromiseResetToRejected(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\\'s closedness'));\n }\n reader._ownerReadableStream._reader = undefined;\n reader._ownerReadableStream = undefined;\n }\n function readerLockException(name) {\n return new TypeError('Cannot ' + name + ' a stream using a released reader');\n }\n function defaultReaderClosedPromiseInitialize(reader) {\n reader._closedPromise = newPromise(function (resolve, reject) {\n reader._closedPromise_resolve = resolve;\n reader._closedPromise_reject = reject;\n });\n }\n function defaultReaderClosedPromiseInitializeAsRejected(reader, reason) {\n defaultReaderClosedPromiseInitialize(reader);\n defaultReaderClosedPromiseReject(reader, reason);\n }\n function defaultReaderClosedPromiseInitializeAsResolved(reader) {\n defaultReaderClosedPromiseInitialize(reader);\n defaultReaderClosedPromiseResolve(reader);\n }\n function defaultReaderClosedPromiseReject(reader, reason) {\n setPromiseIsHandledToTrue(reader._closedPromise);\n reader._closedPromise_reject(reason);\n reader._closedPromise_resolve = undefined;\n reader._closedPromise_reject = undefined;\n }\n function defaultReaderClosedPromiseResetToRejected(reader, reason) {\n defaultReaderClosedPromiseInitializeAsRejected(reader, reason);\n }\n function defaultReaderClosedPromiseResolve(reader) {\n reader._closedPromise_resolve(undefined);\n reader._closedPromise_resolve = undefined;\n reader._closedPromise_reject = undefined;\n }\n var CancelSteps = SymbolPolyfill('[[CancelSteps]]');\n var PullSteps = SymbolPolyfill('[[PullSteps]]');\n function AcquireReadableStreamDefaultReader(stream, forAuthorCode) {\n if (forAuthorCode === void 0) {\n forAuthorCode = false;\n }\n var reader = new ReadableStreamDefaultReader(stream);\n reader._forAuthorCode = forAuthorCode;\n return reader;\n }\n function ReadableStreamAddReadRequest(stream) {\n var promise = newPromise(function (resolve, reject) {\n var readRequest = {\n _resolve: resolve,\n _reject: reject\n };\n stream._reader._readRequests.push(readRequest);\n });\n return promise;\n }\n function ReadableStreamFulfillReadRequest(stream, chunk, done) {\n var reader = stream._reader;\n var readRequest = reader._readRequests.shift();\n readRequest._resolve(ReadableStreamCreateReadResult(chunk, done, reader._forAuthorCode));\n }\n function ReadableStreamGetNumReadRequests(stream) {\n return stream._reader._readRequests.length;\n }\n function ReadableStreamHasDefaultReader(stream) {\n var reader = stream._reader;\n if (reader === undefined) {\n return false;\n }\n if (!IsReadableStreamDefaultReader(reader)) {\n return false;\n }\n return true;\n }\n var ReadableStreamDefaultReader = function () {\n function ReadableStreamDefaultReader(stream) {\n if (IsReadableStream(stream) === false) {\n throw new TypeError('ReadableStreamDefaultReader can only be constructed with a ReadableStream instance');\n }\n if (IsReadableStreamLocked(stream) === true) {\n throw new TypeError('This stream has already been locked for exclusive reading by another reader');\n }\n ReadableStreamReaderGenericInitialize(this, stream);\n this._readRequests = new SimpleQueue();\n }\n Object.defineProperty(ReadableStreamDefaultReader.prototype, \"closed\", {\n get: function () {\n if (!IsReadableStreamDefaultReader(this)) {\n return promiseRejectedWith(defaultReaderBrandCheckException('closed'));\n }\n return this._closedPromise;\n },\n enumerable: true,\n configurable: true\n });\n ReadableStreamDefaultReader.prototype.cancel = function (reason) {\n if (!IsReadableStreamDefaultReader(this)) {\n return promiseRejectedWith(defaultReaderBrandCheckException('cancel'));\n }\n if (this._ownerReadableStream === undefined) {\n return promiseRejectedWith(readerLockException('cancel'));\n }\n return ReadableStreamReaderGenericCancel(this, reason);\n };\n ReadableStreamDefaultReader.prototype.read = function () {\n if (!IsReadableStreamDefaultReader(this)) {\n return promiseRejectedWith(defaultReaderBrandCheckException('read'));\n }\n if (this._ownerReadableStream === undefined) {\n return promiseRejectedWith(readerLockException('read from'));\n }\n return ReadableStreamDefaultReaderRead(this);\n };\n ReadableStreamDefaultReader.prototype.releaseLock = function () {\n if (!IsReadableStreamDefaultReader(this)) {\n throw defaultReaderBrandCheckException('releaseLock');\n }\n if (this._ownerReadableStream === undefined) {\n return;\n }\n if (this._readRequests.length > 0) {\n throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled');\n }\n ReadableStreamReaderGenericRelease(this);\n };\n return ReadableStreamDefaultReader;\n }();\n function IsReadableStreamDefaultReader(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_readRequests')) {\n return false;\n }\n return true;\n }\n function ReadableStreamDefaultReaderRead(reader) {\n var stream = reader._ownerReadableStream;\n stream._disturbed = true;\n if (stream._state === 'closed') {\n return promiseResolvedWith(ReadableStreamCreateReadResult(undefined, true, reader._forAuthorCode));\n }\n if (stream._state === 'errored') {\n return promiseRejectedWith(stream._storedError);\n }\n return stream._readableStreamController[PullSteps]();\n }\n function defaultReaderBrandCheckException(name) {\n return new TypeError(\"ReadableStreamDefaultReader.prototype.\" + name + \" can only be used on a ReadableStreamDefaultReader\");\n }\n var _a;\n var AsyncIteratorPrototype;\n if (typeof SymbolPolyfill.asyncIterator === 'symbol') {\n AsyncIteratorPrototype = (_a = {}, _a[SymbolPolyfill.asyncIterator] = function () {\n return this;\n }, _a);\n Object.defineProperty(AsyncIteratorPrototype, SymbolPolyfill.asyncIterator, { enumerable: false });\n }\n var ReadableStreamAsyncIteratorPrototype = {\n next: function () {\n if (IsReadableStreamAsyncIterator(this) === false) {\n return promiseRejectedWith(streamAsyncIteratorBrandCheckException('next'));\n }\n var reader = this._asyncIteratorReader;\n if (reader._ownerReadableStream === undefined) {\n return promiseRejectedWith(readerLockException('iterate'));\n }\n return transformPromiseWith(ReadableStreamDefaultReaderRead(reader), function (result) {\n var done = result.done;\n if (done) {\n ReadableStreamReaderGenericRelease(reader);\n }\n var value = result.value;\n return ReadableStreamCreateReadResult(value, done, true);\n });\n },\n return: function (value) {\n if (IsReadableStreamAsyncIterator(this) === false) {\n return promiseRejectedWith(streamAsyncIteratorBrandCheckException('next'));\n }\n var reader = this._asyncIteratorReader;\n if (reader._ownerReadableStream === undefined) {\n return promiseRejectedWith(readerLockException('finish iterating'));\n }\n if (reader._readRequests.length > 0) {\n return promiseRejectedWith(new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled'));\n }\n if (this._preventCancel === false) {\n var result = ReadableStreamReaderGenericCancel(reader, value);\n ReadableStreamReaderGenericRelease(reader);\n return transformPromiseWith(result, function () {\n return ReadableStreamCreateReadResult(value, true, true);\n });\n }\n ReadableStreamReaderGenericRelease(reader);\n return promiseResolvedWith(ReadableStreamCreateReadResult(value, true, true));\n }\n };\n if (AsyncIteratorPrototype !== undefined) {\n Object.setPrototypeOf(ReadableStreamAsyncIteratorPrototype, AsyncIteratorPrototype);\n }\n Object.defineProperty(ReadableStreamAsyncIteratorPrototype, 'next', { enumerable: false });\n Object.defineProperty(ReadableStreamAsyncIteratorPrototype, 'return', { enumerable: false });\n function AcquireReadableStreamAsyncIterator(stream, preventCancel) {\n if (preventCancel === void 0) {\n preventCancel = false;\n }\n var reader = AcquireReadableStreamDefaultReader(stream);\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype);\n iterator._asyncIteratorReader = reader;\n iterator._preventCancel = Boolean(preventCancel);\n return iterator;\n }\n function IsReadableStreamAsyncIterator(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_asyncIteratorReader')) {\n return false;\n }\n return true;\n }\n function streamAsyncIteratorBrandCheckException(name) {\n return new TypeError(\"ReadableStreamAsyncIterator.\" + name + \" can only be used on a ReadableSteamAsyncIterator\");\n }\n function DequeueValue(container) {\n var pair = container._queue.shift();\n container._queueTotalSize -= pair.size;\n if (container._queueTotalSize < 0) {\n container._queueTotalSize = 0;\n }\n return pair.value;\n }\n function EnqueueValueWithSize(container, value, size) {\n size = Number(size);\n if (!IsFiniteNonNegativeNumber(size)) {\n throw new RangeError('Size must be a finite, non-NaN, non-negative number.');\n }\n container._queue.push({\n value: value,\n size: size\n });\n container._queueTotalSize += size;\n }\n function PeekQueueValue(container) {\n var pair = container._queue.peek();\n return pair.value;\n }\n function ResetQueue(container) {\n container._queue = new SimpleQueue();\n container._queueTotalSize = 0;\n }\n var AbortSteps = SymbolPolyfill('[[AbortSteps]]');\n var ErrorSteps = SymbolPolyfill('[[ErrorSteps]]');\n var WritableStream = function () {\n function WritableStream(underlyingSink, strategy) {\n if (underlyingSink === void 0) {\n underlyingSink = {};\n }\n if (strategy === void 0) {\n strategy = {};\n }\n InitializeWritableStream(this);\n var size = strategy.size;\n var highWaterMark = strategy.highWaterMark;\n var type = underlyingSink.type;\n if (type !== undefined) {\n throw new RangeError('Invalid type is specified');\n }\n var sizeAlgorithm = MakeSizeAlgorithmFromSizeFunction(size);\n if (highWaterMark === undefined) {\n highWaterMark = 1;\n }\n highWaterMark = ValidateAndNormalizeHighWaterMark(highWaterMark);\n SetUpWritableStreamDefaultControllerFromUnderlyingSink(this, underlyingSink, highWaterMark, sizeAlgorithm);\n }\n Object.defineProperty(WritableStream.prototype, \"locked\", {\n get: function () {\n if (IsWritableStream(this) === false) {\n throw streamBrandCheckException('locked');\n }\n return IsWritableStreamLocked(this);\n },\n enumerable: true,\n configurable: true\n });\n WritableStream.prototype.abort = function (reason) {\n if (IsWritableStream(this) === false) {\n return promiseRejectedWith(streamBrandCheckException('abort'));\n }\n if (IsWritableStreamLocked(this) === true) {\n return promiseRejectedWith(new TypeError('Cannot abort a stream that already has a writer'));\n }\n return WritableStreamAbort(this, reason);\n };\n WritableStream.prototype.close = function () {\n if (IsWritableStream(this) === false) {\n return promiseRejectedWith(streamBrandCheckException('close'));\n }\n if (IsWritableStreamLocked(this) === true) {\n return promiseRejectedWith(new TypeError('Cannot close a stream that already has a writer'));\n }\n if (WritableStreamCloseQueuedOrInFlight(this) === true) {\n return promiseRejectedWith(new TypeError('Cannot close an already-closing stream'));\n }\n return WritableStreamClose(this);\n };\n WritableStream.prototype.getWriter = function () {\n if (IsWritableStream(this) === false) {\n throw streamBrandCheckException('getWriter');\n }\n return AcquireWritableStreamDefaultWriter(this);\n };\n return WritableStream;\n }();\n function AcquireWritableStreamDefaultWriter(stream) {\n return new WritableStreamDefaultWriter(stream);\n }\n function CreateWritableStream(startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm) {\n if (highWaterMark === void 0) {\n highWaterMark = 1;\n }\n if (sizeAlgorithm === void 0) {\n sizeAlgorithm = function () {\n return 1;\n };\n }\n var stream = Object.create(WritableStream.prototype);\n InitializeWritableStream(stream);\n var controller = Object.create(WritableStreamDefaultController.prototype);\n SetUpWritableStreamDefaultController(stream, controller, startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm);\n return stream;\n }\n function InitializeWritableStream(stream) {\n stream._state = 'writable';\n stream._storedError = undefined;\n stream._writer = undefined;\n stream._writableStreamController = undefined;\n stream._writeRequests = new SimpleQueue();\n stream._inFlightWriteRequest = undefined;\n stream._closeRequest = undefined;\n stream._inFlightCloseRequest = undefined;\n stream._pendingAbortRequest = undefined;\n stream._backpressure = false;\n }\n function IsWritableStream(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_writableStreamController')) {\n return false;\n }\n return true;\n }\n function IsWritableStreamLocked(stream) {\n if (stream._writer === undefined) {\n return false;\n }\n return true;\n }\n function WritableStreamAbort(stream, reason) {\n var state = stream._state;\n if (state === 'closed' || state === 'errored') {\n return promiseResolvedWith(undefined);\n }\n if (stream._pendingAbortRequest !== undefined) {\n return stream._pendingAbortRequest._promise;\n }\n var wasAlreadyErroring = false;\n if (state === 'erroring') {\n wasAlreadyErroring = true;\n reason = undefined;\n }\n var promise = newPromise(function (resolve, reject) {\n stream._pendingAbortRequest = {\n _promise: undefined,\n _resolve: resolve,\n _reject: reject,\n _reason: reason,\n _wasAlreadyErroring: wasAlreadyErroring\n };\n });\n stream._pendingAbortRequest._promise = promise;\n if (wasAlreadyErroring === false) {\n WritableStreamStartErroring(stream, reason);\n }\n return promise;\n }\n function WritableStreamClose(stream) {\n var state = stream._state;\n if (state === 'closed' || state === 'errored') {\n return promiseRejectedWith(new TypeError(\"The stream (in \" + state + \" state) is not in the writable state and cannot be closed\"));\n }\n var promise = newPromise(function (resolve, reject) {\n var closeRequest = {\n _resolve: resolve,\n _reject: reject\n };\n stream._closeRequest = closeRequest;\n });\n var writer = stream._writer;\n if (writer !== undefined && stream._backpressure === true && state === 'writable') {\n defaultWriterReadyPromiseResolve(writer);\n }\n WritableStreamDefaultControllerClose(stream._writableStreamController);\n return promise;\n }\n function WritableStreamAddWriteRequest(stream) {\n var promise = newPromise(function (resolve, reject) {\n var writeRequest = {\n _resolve: resolve,\n _reject: reject\n };\n stream._writeRequests.push(writeRequest);\n });\n return promise;\n }\n function WritableStreamDealWithRejection(stream, error) {\n var state = stream._state;\n if (state === 'writable') {\n WritableStreamStartErroring(stream, error);\n return;\n }\n WritableStreamFinishErroring(stream);\n }\n function WritableStreamStartErroring(stream, reason) {\n var controller = stream._writableStreamController;\n stream._state = 'erroring';\n stream._storedError = reason;\n var writer = stream._writer;\n if (writer !== undefined) {\n WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, reason);\n }\n if (WritableStreamHasOperationMarkedInFlight(stream) === false && controller._started === true) {\n WritableStreamFinishErroring(stream);\n }\n }\n function WritableStreamFinishErroring(stream) {\n stream._state = 'errored';\n stream._writableStreamController[ErrorSteps]();\n var storedError = stream._storedError;\n stream._writeRequests.forEach(function (writeRequest) {\n writeRequest._reject(storedError);\n });\n stream._writeRequests = new SimpleQueue();\n if (stream._pendingAbortRequest === undefined) {\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n return;\n }\n var abortRequest = stream._pendingAbortRequest;\n stream._pendingAbortRequest = undefined;\n if (abortRequest._wasAlreadyErroring === true) {\n abortRequest._reject(storedError);\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n return;\n }\n var promise = stream._writableStreamController[AbortSteps](abortRequest._reason);\n uponPromise(promise, function () {\n abortRequest._resolve();\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n }, function (reason) {\n abortRequest._reject(reason);\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n });\n }\n function WritableStreamFinishInFlightWrite(stream) {\n stream._inFlightWriteRequest._resolve(undefined);\n stream._inFlightWriteRequest = undefined;\n }\n function WritableStreamFinishInFlightWriteWithError(stream, error) {\n stream._inFlightWriteRequest._reject(error);\n stream._inFlightWriteRequest = undefined;\n WritableStreamDealWithRejection(stream, error);\n }\n function WritableStreamFinishInFlightClose(stream) {\n stream._inFlightCloseRequest._resolve(undefined);\n stream._inFlightCloseRequest = undefined;\n var state = stream._state;\n if (state === 'erroring') {\n stream._storedError = undefined;\n if (stream._pendingAbortRequest !== undefined) {\n stream._pendingAbortRequest._resolve();\n stream._pendingAbortRequest = undefined;\n }\n }\n stream._state = 'closed';\n var writer = stream._writer;\n if (writer !== undefined) {\n defaultWriterClosedPromiseResolve(writer);\n }\n }\n function WritableStreamFinishInFlightCloseWithError(stream, error) {\n stream._inFlightCloseRequest._reject(error);\n stream._inFlightCloseRequest = undefined;\n if (stream._pendingAbortRequest !== undefined) {\n stream._pendingAbortRequest._reject(error);\n stream._pendingAbortRequest = undefined;\n }\n WritableStreamDealWithRejection(stream, error);\n }\n function WritableStreamCloseQueuedOrInFlight(stream) {\n if (stream._closeRequest === undefined && stream._inFlightCloseRequest === undefined) {\n return false;\n }\n return true;\n }\n function WritableStreamHasOperationMarkedInFlight(stream) {\n if (stream._inFlightWriteRequest === undefined && stream._inFlightCloseRequest === undefined) {\n return false;\n }\n return true;\n }\n function WritableStreamMarkCloseRequestInFlight(stream) {\n stream._inFlightCloseRequest = stream._closeRequest;\n stream._closeRequest = undefined;\n }\n function WritableStreamMarkFirstWriteRequestInFlight(stream) {\n stream._inFlightWriteRequest = stream._writeRequests.shift();\n }\n function WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream) {\n if (stream._closeRequest !== undefined) {\n stream._closeRequest._reject(stream._storedError);\n stream._closeRequest = undefined;\n }\n var writer = stream._writer;\n if (writer !== undefined) {\n defaultWriterClosedPromiseReject(writer, stream._storedError);\n }\n }\n function WritableStreamUpdateBackpressure(stream, backpressure) {\n var writer = stream._writer;\n if (writer !== undefined && backpressure !== stream._backpressure) {\n if (backpressure === true) {\n defaultWriterReadyPromiseReset(writer);\n } else {\n defaultWriterReadyPromiseResolve(writer);\n }\n }\n stream._backpressure = backpressure;\n }\n var WritableStreamDefaultWriter = function () {\n function WritableStreamDefaultWriter(stream) {\n if (IsWritableStream(stream) === false) {\n throw new TypeError('WritableStreamDefaultWriter can only be constructed with a WritableStream instance');\n }\n if (IsWritableStreamLocked(stream) === true) {\n throw new TypeError('This stream has already been locked for exclusive writing by another writer');\n }\n this._ownerWritableStream = stream;\n stream._writer = this;\n var state = stream._state;\n if (state === 'writable') {\n if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._backpressure === true) {\n defaultWriterReadyPromiseInitialize(this);\n } else {\n defaultWriterReadyPromiseInitializeAsResolved(this);\n }\n defaultWriterClosedPromiseInitialize(this);\n } else if (state === 'erroring') {\n defaultWriterReadyPromiseInitializeAsRejected(this, stream._storedError);\n defaultWriterClosedPromiseInitialize(this);\n } else if (state === 'closed') {\n defaultWriterReadyPromiseInitializeAsResolved(this);\n defaultWriterClosedPromiseInitializeAsResolved(this);\n } else {\n var storedError = stream._storedError;\n defaultWriterReadyPromiseInitializeAsRejected(this, storedError);\n defaultWriterClosedPromiseInitializeAsRejected(this, storedError);\n }\n }\n Object.defineProperty(WritableStreamDefaultWriter.prototype, \"closed\", {\n get: function () {\n if (IsWritableStreamDefaultWriter(this) === false) {\n return promiseRejectedWith(defaultWriterBrandCheckException('closed'));\n }\n return this._closedPromise;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(WritableStreamDefaultWriter.prototype, \"desiredSize\", {\n get: function () {\n if (IsWritableStreamDefaultWriter(this) === false) {\n throw defaultWriterBrandCheckException('desiredSize');\n }\n if (this._ownerWritableStream === undefined) {\n throw defaultWriterLockException('desiredSize');\n }\n return WritableStreamDefaultWriterGetDesiredSize(this);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(WritableStreamDefaultWriter.prototype, \"ready\", {\n get: function () {\n if (IsWritableStreamDefaultWriter(this) === false) {\n return promiseRejectedWith(defaultWriterBrandCheckException('ready'));\n }\n return this._readyPromise;\n },\n enumerable: true,\n configurable: true\n });\n WritableStreamDefaultWriter.prototype.abort = function (reason) {\n if (IsWritableStreamDefaultWriter(this) === false) {\n return promiseRejectedWith(defaultWriterBrandCheckException('abort'));\n }\n if (this._ownerWritableStream === undefined) {\n return promiseRejectedWith(defaultWriterLockException('abort'));\n }\n return WritableStreamDefaultWriterAbort(this, reason);\n };\n WritableStreamDefaultWriter.prototype.close = function () {\n if (IsWritableStreamDefaultWriter(this) === false) {\n return promiseRejectedWith(defaultWriterBrandCheckException('close'));\n }\n var stream = this._ownerWritableStream;\n if (stream === undefined) {\n return promiseRejectedWith(defaultWriterLockException('close'));\n }\n if (WritableStreamCloseQueuedOrInFlight(stream) === true) {\n return promiseRejectedWith(new TypeError('Cannot close an already-closing stream'));\n }\n return WritableStreamDefaultWriterClose(this);\n };\n WritableStreamDefaultWriter.prototype.releaseLock = function () {\n if (IsWritableStreamDefaultWriter(this) === false) {\n throw defaultWriterBrandCheckException('releaseLock');\n }\n var stream = this._ownerWritableStream;\n if (stream === undefined) {\n return;\n }\n WritableStreamDefaultWriterRelease(this);\n };\n WritableStreamDefaultWriter.prototype.write = function (chunk) {\n if (IsWritableStreamDefaultWriter(this) === false) {\n return promiseRejectedWith(defaultWriterBrandCheckException('write'));\n }\n if (this._ownerWritableStream === undefined) {\n return promiseRejectedWith(defaultWriterLockException('write to'));\n }\n return WritableStreamDefaultWriterWrite(this, chunk);\n };\n return WritableStreamDefaultWriter;\n }();\n function IsWritableStreamDefaultWriter(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_ownerWritableStream')) {\n return false;\n }\n return true;\n }\n function WritableStreamDefaultWriterAbort(writer, reason) {\n var stream = writer._ownerWritableStream;\n return WritableStreamAbort(stream, reason);\n }\n function WritableStreamDefaultWriterClose(writer) {\n var stream = writer._ownerWritableStream;\n return WritableStreamClose(stream);\n }\n function WritableStreamDefaultWriterCloseWithErrorPropagation(writer) {\n var stream = writer._ownerWritableStream;\n var state = stream._state;\n if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') {\n return promiseResolvedWith(undefined);\n }\n if (state === 'errored') {\n return promiseRejectedWith(stream._storedError);\n }\n return WritableStreamDefaultWriterClose(writer);\n }\n function WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, error) {\n if (writer._closedPromiseState === 'pending') {\n defaultWriterClosedPromiseReject(writer, error);\n } else {\n defaultWriterClosedPromiseResetToRejected(writer, error);\n }\n }\n function WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, error) {\n if (writer._readyPromiseState === 'pending') {\n defaultWriterReadyPromiseReject(writer, error);\n } else {\n defaultWriterReadyPromiseResetToRejected(writer, error);\n }\n }\n function WritableStreamDefaultWriterGetDesiredSize(writer) {\n var stream = writer._ownerWritableStream;\n var state = stream._state;\n if (state === 'errored' || state === 'erroring') {\n return null;\n }\n if (state === 'closed') {\n return 0;\n }\n return WritableStreamDefaultControllerGetDesiredSize(stream._writableStreamController);\n }\n function WritableStreamDefaultWriterRelease(writer) {\n var stream = writer._ownerWritableStream;\n var releasedError = new TypeError('Writer was released and can no longer be used to monitor the stream\\'s closedness');\n WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, releasedError);\n WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, releasedError);\n stream._writer = undefined;\n writer._ownerWritableStream = undefined;\n }\n function WritableStreamDefaultWriterWrite(writer, chunk) {\n var stream = writer._ownerWritableStream;\n var controller = stream._writableStreamController;\n var chunkSize = WritableStreamDefaultControllerGetChunkSize(controller, chunk);\n if (stream !== writer._ownerWritableStream) {\n return promiseRejectedWith(defaultWriterLockException('write to'));\n }\n var state = stream._state;\n if (state === 'errored') {\n return promiseRejectedWith(stream._storedError);\n }\n if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') {\n return promiseRejectedWith(new TypeError('The stream is closing or closed and cannot be written to'));\n }\n if (state === 'erroring') {\n return promiseRejectedWith(stream._storedError);\n }\n var promise = WritableStreamAddWriteRequest(stream);\n WritableStreamDefaultControllerWrite(controller, chunk, chunkSize);\n return promise;\n }\n var WritableStreamDefaultController = function () {\n function WritableStreamDefaultController() {\n throw new TypeError('WritableStreamDefaultController cannot be constructed explicitly');\n }\n WritableStreamDefaultController.prototype.error = function (e) {\n if (IsWritableStreamDefaultController(this) === false) {\n throw new TypeError('WritableStreamDefaultController.prototype.error can only be used on a WritableStreamDefaultController');\n }\n var state = this._controlledWritableStream._state;\n if (state !== 'writable') {\n return;\n }\n WritableStreamDefaultControllerError(this, e);\n };\n WritableStreamDefaultController.prototype[AbortSteps] = function (reason) {\n var result = this._abortAlgorithm(reason);\n WritableStreamDefaultControllerClearAlgorithms(this);\n return result;\n };\n WritableStreamDefaultController.prototype[ErrorSteps] = function () {\n ResetQueue(this);\n };\n return WritableStreamDefaultController;\n }();\n function IsWritableStreamDefaultController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_controlledWritableStream')) {\n return false;\n }\n return true;\n }\n function SetUpWritableStreamDefaultController(stream, controller, startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm) {\n controller._controlledWritableStream = stream;\n stream._writableStreamController = controller;\n controller._queue = undefined;\n controller._queueTotalSize = undefined;\n ResetQueue(controller);\n controller._started = false;\n controller._strategySizeAlgorithm = sizeAlgorithm;\n controller._strategyHWM = highWaterMark;\n controller._writeAlgorithm = writeAlgorithm;\n controller._closeAlgorithm = closeAlgorithm;\n controller._abortAlgorithm = abortAlgorithm;\n var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n WritableStreamUpdateBackpressure(stream, backpressure);\n var startResult = startAlgorithm();\n var startPromise = promiseResolvedWith(startResult);\n uponPromise(startPromise, function () {\n controller._started = true;\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n }, function (r) {\n controller._started = true;\n WritableStreamDealWithRejection(stream, r);\n });\n }\n function SetUpWritableStreamDefaultControllerFromUnderlyingSink(stream, underlyingSink, highWaterMark, sizeAlgorithm) {\n var controller = Object.create(WritableStreamDefaultController.prototype);\n function startAlgorithm() {\n return InvokeOrNoop(underlyingSink, 'start', [controller]);\n }\n var writeAlgorithm = CreateAlgorithmFromUnderlyingMethod(underlyingSink, 'write', 1, [controller]);\n var closeAlgorithm = CreateAlgorithmFromUnderlyingMethod(underlyingSink, 'close', 0, []);\n var abortAlgorithm = CreateAlgorithmFromUnderlyingMethod(underlyingSink, 'abort', 1, []);\n SetUpWritableStreamDefaultController(stream, controller, startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm);\n }\n function WritableStreamDefaultControllerClearAlgorithms(controller) {\n controller._writeAlgorithm = undefined;\n controller._closeAlgorithm = undefined;\n controller._abortAlgorithm = undefined;\n controller._strategySizeAlgorithm = undefined;\n }\n function WritableStreamDefaultControllerClose(controller) {\n EnqueueValueWithSize(controller, 'close', 0);\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n }\n function WritableStreamDefaultControllerGetChunkSize(controller, chunk) {\n try {\n return controller._strategySizeAlgorithm(chunk);\n } catch (chunkSizeE) {\n WritableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE);\n return 1;\n }\n }\n function WritableStreamDefaultControllerGetDesiredSize(controller) {\n return controller._strategyHWM - controller._queueTotalSize;\n }\n function WritableStreamDefaultControllerWrite(controller, chunk, chunkSize) {\n var writeRecord = { chunk: chunk };\n try {\n EnqueueValueWithSize(controller, writeRecord, chunkSize);\n } catch (enqueueE) {\n WritableStreamDefaultControllerErrorIfNeeded(controller, enqueueE);\n return;\n }\n var stream = controller._controlledWritableStream;\n if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._state === 'writable') {\n var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n WritableStreamUpdateBackpressure(stream, backpressure);\n }\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n }\n function WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller) {\n var stream = controller._controlledWritableStream;\n if (controller._started === false) {\n return;\n }\n if (stream._inFlightWriteRequest !== undefined) {\n return;\n }\n var state = stream._state;\n if (state === 'erroring') {\n WritableStreamFinishErroring(stream);\n return;\n }\n if (controller._queue.length === 0) {\n return;\n }\n var writeRecord = PeekQueueValue(controller);\n if (writeRecord === 'close') {\n WritableStreamDefaultControllerProcessClose(controller);\n } else {\n WritableStreamDefaultControllerProcessWrite(controller, writeRecord.chunk);\n }\n }\n function WritableStreamDefaultControllerErrorIfNeeded(controller, error) {\n if (controller._controlledWritableStream._state === 'writable') {\n WritableStreamDefaultControllerError(controller, error);\n }\n }\n function WritableStreamDefaultControllerProcessClose(controller) {\n var stream = controller._controlledWritableStream;\n WritableStreamMarkCloseRequestInFlight(stream);\n DequeueValue(controller);\n var sinkClosePromise = controller._closeAlgorithm();\n WritableStreamDefaultControllerClearAlgorithms(controller);\n uponPromise(sinkClosePromise, function () {\n WritableStreamFinishInFlightClose(stream);\n }, function (reason) {\n WritableStreamFinishInFlightCloseWithError(stream, reason);\n });\n }\n function WritableStreamDefaultControllerProcessWrite(controller, chunk) {\n var stream = controller._controlledWritableStream;\n WritableStreamMarkFirstWriteRequestInFlight(stream);\n var sinkWritePromise = controller._writeAlgorithm(chunk);\n uponPromise(sinkWritePromise, function () {\n WritableStreamFinishInFlightWrite(stream);\n var state = stream._state;\n DequeueValue(controller);\n if (WritableStreamCloseQueuedOrInFlight(stream) === false && state === 'writable') {\n var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n WritableStreamUpdateBackpressure(stream, backpressure);\n }\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n }, function (reason) {\n if (stream._state === 'writable') {\n WritableStreamDefaultControllerClearAlgorithms(controller);\n }\n WritableStreamFinishInFlightWriteWithError(stream, reason);\n });\n }\n function WritableStreamDefaultControllerGetBackpressure(controller) {\n var desiredSize = WritableStreamDefaultControllerGetDesiredSize(controller);\n return desiredSize <= 0;\n }\n function WritableStreamDefaultControllerError(controller, error) {\n var stream = controller._controlledWritableStream;\n WritableStreamDefaultControllerClearAlgorithms(controller);\n WritableStreamStartErroring(stream, error);\n }\n function streamBrandCheckException(name) {\n return new TypeError(\"WritableStream.prototype.\" + name + \" can only be used on a WritableStream\");\n }\n function defaultWriterBrandCheckException(name) {\n return new TypeError(\"WritableStreamDefaultWriter.prototype.\" + name + \" can only be used on a WritableStreamDefaultWriter\");\n }\n function defaultWriterLockException(name) {\n return new TypeError('Cannot ' + name + ' a stream using a released writer');\n }\n function defaultWriterClosedPromiseInitialize(writer) {\n writer._closedPromise = newPromise(function (resolve, reject) {\n writer._closedPromise_resolve = resolve;\n writer._closedPromise_reject = reject;\n writer._closedPromiseState = 'pending';\n });\n }\n function defaultWriterClosedPromiseInitializeAsRejected(writer, reason) {\n defaultWriterClosedPromiseInitialize(writer);\n defaultWriterClosedPromiseReject(writer, reason);\n }\n function defaultWriterClosedPromiseInitializeAsResolved(writer) {\n defaultWriterClosedPromiseInitialize(writer);\n defaultWriterClosedPromiseResolve(writer);\n }\n function defaultWriterClosedPromiseReject(writer, reason) {\n setPromiseIsHandledToTrue(writer._closedPromise);\n writer._closedPromise_reject(reason);\n writer._closedPromise_resolve = undefined;\n writer._closedPromise_reject = undefined;\n writer._closedPromiseState = 'rejected';\n }\n function defaultWriterClosedPromiseResetToRejected(writer, reason) {\n defaultWriterClosedPromiseInitializeAsRejected(writer, reason);\n }\n function defaultWriterClosedPromiseResolve(writer) {\n writer._closedPromise_resolve(undefined);\n writer._closedPromise_resolve = undefined;\n writer._closedPromise_reject = undefined;\n writer._closedPromiseState = 'resolved';\n }\n function defaultWriterReadyPromiseInitialize(writer) {\n writer._readyPromise = newPromise(function (resolve, reject) {\n writer._readyPromise_resolve = resolve;\n writer._readyPromise_reject = reject;\n });\n writer._readyPromiseState = 'pending';\n }\n function defaultWriterReadyPromiseInitializeAsRejected(writer, reason) {\n defaultWriterReadyPromiseInitialize(writer);\n defaultWriterReadyPromiseReject(writer, reason);\n }\n function defaultWriterReadyPromiseInitializeAsResolved(writer) {\n defaultWriterReadyPromiseInitialize(writer);\n defaultWriterReadyPromiseResolve(writer);\n }\n function defaultWriterReadyPromiseReject(writer, reason) {\n setPromiseIsHandledToTrue(writer._readyPromise);\n writer._readyPromise_reject(reason);\n writer._readyPromise_resolve = undefined;\n writer._readyPromise_reject = undefined;\n writer._readyPromiseState = 'rejected';\n }\n function defaultWriterReadyPromiseReset(writer) {\n defaultWriterReadyPromiseInitialize(writer);\n }\n function defaultWriterReadyPromiseResetToRejected(writer, reason) {\n defaultWriterReadyPromiseInitializeAsRejected(writer, reason);\n }\n function defaultWriterReadyPromiseResolve(writer) {\n writer._readyPromise_resolve(undefined);\n writer._readyPromise_resolve = undefined;\n writer._readyPromise_reject = undefined;\n writer._readyPromiseState = 'fulfilled';\n }\n function isAbortSignal(value) {\n if (typeof value !== 'object' || value === null) {\n return false;\n }\n try {\n return typeof value.aborted === 'boolean';\n } catch (_a) {\n return false;\n }\n }\n var NativeDOMException = typeof DOMException !== 'undefined' ? DOMException : undefined;\n function isDOMExceptionConstructor(ctor) {\n if (!(typeof ctor === 'function' || typeof ctor === 'object')) {\n return false;\n }\n try {\n new ctor();\n return true;\n } catch (_a) {\n return false;\n }\n }\n function createDOMExceptionPolyfill() {\n var ctor = function DOMException(message, name) {\n this.message = message || '';\n this.name = name || 'Error';\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n };\n ctor.prototype = Object.create(Error.prototype);\n Object.defineProperty(ctor.prototype, 'constructor', {\n value: ctor,\n writable: true,\n configurable: true\n });\n return ctor;\n }\n var DOMException$1 = isDOMExceptionConstructor(NativeDOMException) ? NativeDOMException : createDOMExceptionPolyfill();\n function ReadableStreamPipeTo(source, dest, preventClose, preventAbort, preventCancel, signal) {\n var reader = AcquireReadableStreamDefaultReader(source);\n var writer = AcquireWritableStreamDefaultWriter(dest);\n source._disturbed = true;\n var shuttingDown = false;\n var currentWrite = promiseResolvedWith(undefined);\n return newPromise(function (resolve, reject) {\n var abortAlgorithm;\n if (signal !== undefined) {\n abortAlgorithm = function () {\n var error = new DOMException$1('Aborted', 'AbortError');\n var actions = [];\n if (preventAbort === false) {\n actions.push(function () {\n if (dest._state === 'writable') {\n return WritableStreamAbort(dest, error);\n }\n return promiseResolvedWith(undefined);\n });\n }\n if (preventCancel === false) {\n actions.push(function () {\n if (source._state === 'readable') {\n return ReadableStreamCancel(source, error);\n }\n return promiseResolvedWith(undefined);\n });\n }\n shutdownWithAction(function () {\n return Promise.all(actions.map(function (action) {\n return action();\n }));\n }, true, error);\n };\n if (signal.aborted === true) {\n abortAlgorithm();\n return;\n }\n signal.addEventListener('abort', abortAlgorithm);\n }\n function pipeLoop() {\n return newPromise(function (resolveLoop, rejectLoop) {\n function next(done) {\n if (done) {\n resolveLoop();\n } else {\n PerformPromiseThen(pipeStep(), next, rejectLoop);\n }\n }\n next(false);\n });\n }\n function pipeStep() {\n if (shuttingDown === true) {\n return promiseResolvedWith(true);\n }\n return PerformPromiseThen(writer._readyPromise, function () {\n return PerformPromiseThen(ReadableStreamDefaultReaderRead(reader), function (result) {\n if (result.done === true) {\n return true;\n }\n currentWrite = PerformPromiseThen(WritableStreamDefaultWriterWrite(writer, result.value), undefined, noop);\n return false;\n });\n });\n }\n isOrBecomesErrored(source, reader._closedPromise, function (storedError) {\n if (preventAbort === false) {\n shutdownWithAction(function () {\n return WritableStreamAbort(dest, storedError);\n }, true, storedError);\n } else {\n shutdown(true, storedError);\n }\n });\n isOrBecomesErrored(dest, writer._closedPromise, function (storedError) {\n if (preventCancel === false) {\n shutdownWithAction(function () {\n return ReadableStreamCancel(source, storedError);\n }, true, storedError);\n } else {\n shutdown(true, storedError);\n }\n });\n isOrBecomesClosed(source, reader._closedPromise, function () {\n if (preventClose === false) {\n shutdownWithAction(function () {\n return WritableStreamDefaultWriterCloseWithErrorPropagation(writer);\n });\n } else {\n shutdown();\n }\n });\n if (WritableStreamCloseQueuedOrInFlight(dest) === true || dest._state === 'closed') {\n var destClosed_1 = new TypeError('the destination writable stream closed before all data could be piped to it');\n if (preventCancel === false) {\n shutdownWithAction(function () {\n return ReadableStreamCancel(source, destClosed_1);\n }, true, destClosed_1);\n } else {\n shutdown(true, destClosed_1);\n }\n }\n setPromiseIsHandledToTrue(pipeLoop());\n function waitForWritesToFinish() {\n var oldCurrentWrite = currentWrite;\n return PerformPromiseThen(currentWrite, function () {\n return oldCurrentWrite !== currentWrite ? waitForWritesToFinish() : undefined;\n });\n }\n function isOrBecomesErrored(stream, promise, action) {\n if (stream._state === 'errored') {\n action(stream._storedError);\n } else {\n uponRejection(promise, action);\n }\n }\n function isOrBecomesClosed(stream, promise, action) {\n if (stream._state === 'closed') {\n action();\n } else {\n uponFulfillment(promise, action);\n }\n }\n function shutdownWithAction(action, originalIsError, originalError) {\n if (shuttingDown === true) {\n return;\n }\n shuttingDown = true;\n if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) {\n uponFulfillment(waitForWritesToFinish(), doTheRest);\n } else {\n doTheRest();\n }\n function doTheRest() {\n uponPromise(action(), function () {\n return finalize(originalIsError, originalError);\n }, function (newError) {\n return finalize(true, newError);\n });\n }\n }\n function shutdown(isError, error) {\n if (shuttingDown === true) {\n return;\n }\n shuttingDown = true;\n if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) {\n uponFulfillment(waitForWritesToFinish(), function () {\n return finalize(isError, error);\n });\n } else {\n finalize(isError, error);\n }\n }\n function finalize(isError, error) {\n WritableStreamDefaultWriterRelease(writer);\n ReadableStreamReaderGenericRelease(reader);\n if (signal !== undefined) {\n signal.removeEventListener('abort', abortAlgorithm);\n }\n if (isError) {\n reject(error);\n } else {\n resolve(undefined);\n }\n }\n });\n }\n var ReadableStreamDefaultController = function () {\n function ReadableStreamDefaultController() {\n throw new TypeError();\n }\n Object.defineProperty(ReadableStreamDefaultController.prototype, \"desiredSize\", {\n get: function () {\n if (IsReadableStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('desiredSize');\n }\n return ReadableStreamDefaultControllerGetDesiredSize(this);\n },\n enumerable: true,\n configurable: true\n });\n ReadableStreamDefaultController.prototype.close = function () {\n if (IsReadableStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('close');\n }\n if (ReadableStreamDefaultControllerCanCloseOrEnqueue(this) === false) {\n throw new TypeError('The stream is not in a state that permits close');\n }\n ReadableStreamDefaultControllerClose(this);\n };\n ReadableStreamDefaultController.prototype.enqueue = function (chunk) {\n if (IsReadableStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('enqueue');\n }\n if (ReadableStreamDefaultControllerCanCloseOrEnqueue(this) === false) {\n throw new TypeError('The stream is not in a state that permits enqueue');\n }\n return ReadableStreamDefaultControllerEnqueue(this, chunk);\n };\n ReadableStreamDefaultController.prototype.error = function (e) {\n if (IsReadableStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('error');\n }\n ReadableStreamDefaultControllerError(this, e);\n };\n ReadableStreamDefaultController.prototype[CancelSteps] = function (reason) {\n ResetQueue(this);\n var result = this._cancelAlgorithm(reason);\n ReadableStreamDefaultControllerClearAlgorithms(this);\n return result;\n };\n ReadableStreamDefaultController.prototype[PullSteps] = function () {\n var stream = this._controlledReadableStream;\n if (this._queue.length > 0) {\n var chunk = DequeueValue(this);\n if (this._closeRequested === true && this._queue.length === 0) {\n ReadableStreamDefaultControllerClearAlgorithms(this);\n ReadableStreamClose(stream);\n } else {\n ReadableStreamDefaultControllerCallPullIfNeeded(this);\n }\n return promiseResolvedWith(ReadableStreamCreateReadResult(chunk, false, stream._reader._forAuthorCode));\n }\n var pendingPromise = ReadableStreamAddReadRequest(stream);\n ReadableStreamDefaultControllerCallPullIfNeeded(this);\n return pendingPromise;\n };\n return ReadableStreamDefaultController;\n }();\n function IsReadableStreamDefaultController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_controlledReadableStream')) {\n return false;\n }\n return true;\n }\n function ReadableStreamDefaultControllerCallPullIfNeeded(controller) {\n var shouldPull = ReadableStreamDefaultControllerShouldCallPull(controller);\n if (shouldPull === false) {\n return;\n }\n if (controller._pulling === true) {\n controller._pullAgain = true;\n return;\n }\n controller._pulling = true;\n var pullPromise = controller._pullAlgorithm();\n uponPromise(pullPromise, function () {\n controller._pulling = false;\n if (controller._pullAgain === true) {\n controller._pullAgain = false;\n ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n }\n }, function (e) {\n ReadableStreamDefaultControllerError(controller, e);\n });\n }\n function ReadableStreamDefaultControllerShouldCallPull(controller) {\n var stream = controller._controlledReadableStream;\n if (ReadableStreamDefaultControllerCanCloseOrEnqueue(controller) === false) {\n return false;\n }\n if (controller._started === false) {\n return false;\n }\n if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {\n return true;\n }\n var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller);\n if (desiredSize > 0) {\n return true;\n }\n return false;\n }\n function ReadableStreamDefaultControllerClearAlgorithms(controller) {\n controller._pullAlgorithm = undefined;\n controller._cancelAlgorithm = undefined;\n controller._strategySizeAlgorithm = undefined;\n }\n function ReadableStreamDefaultControllerClose(controller) {\n var stream = controller._controlledReadableStream;\n controller._closeRequested = true;\n if (controller._queue.length === 0) {\n ReadableStreamDefaultControllerClearAlgorithms(controller);\n ReadableStreamClose(stream);\n }\n }\n function ReadableStreamDefaultControllerEnqueue(controller, chunk) {\n var stream = controller._controlledReadableStream;\n if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {\n ReadableStreamFulfillReadRequest(stream, chunk, false);\n } else {\n var chunkSize = void 0;\n try {\n chunkSize = controller._strategySizeAlgorithm(chunk);\n } catch (chunkSizeE) {\n ReadableStreamDefaultControllerError(controller, chunkSizeE);\n throw chunkSizeE;\n }\n try {\n EnqueueValueWithSize(controller, chunk, chunkSize);\n } catch (enqueueE) {\n ReadableStreamDefaultControllerError(controller, enqueueE);\n throw enqueueE;\n }\n }\n ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n }\n function ReadableStreamDefaultControllerError(controller, e) {\n var stream = controller._controlledReadableStream;\n if (stream._state !== 'readable') {\n return;\n }\n ResetQueue(controller);\n ReadableStreamDefaultControllerClearAlgorithms(controller);\n ReadableStreamError(stream, e);\n }\n function ReadableStreamDefaultControllerGetDesiredSize(controller) {\n var stream = controller._controlledReadableStream;\n var state = stream._state;\n if (state === 'errored') {\n return null;\n }\n if (state === 'closed') {\n return 0;\n }\n return controller._strategyHWM - controller._queueTotalSize;\n }\n function ReadableStreamDefaultControllerHasBackpressure(controller) {\n if (ReadableStreamDefaultControllerShouldCallPull(controller) === true) {\n return false;\n }\n return true;\n }\n function ReadableStreamDefaultControllerCanCloseOrEnqueue(controller) {\n var state = controller._controlledReadableStream._state;\n if (controller._closeRequested === false && state === 'readable') {\n return true;\n }\n return false;\n }\n function SetUpReadableStreamDefaultController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm) {\n controller._controlledReadableStream = stream;\n controller._queue = undefined;\n controller._queueTotalSize = undefined;\n ResetQueue(controller);\n controller._started = false;\n controller._closeRequested = false;\n controller._pullAgain = false;\n controller._pulling = false;\n controller._strategySizeAlgorithm = sizeAlgorithm;\n controller._strategyHWM = highWaterMark;\n controller._pullAlgorithm = pullAlgorithm;\n controller._cancelAlgorithm = cancelAlgorithm;\n stream._readableStreamController = controller;\n var startResult = startAlgorithm();\n uponPromise(promiseResolvedWith(startResult), function () {\n controller._started = true;\n ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n }, function (r) {\n ReadableStreamDefaultControllerError(controller, r);\n });\n }\n function SetUpReadableStreamDefaultControllerFromUnderlyingSource(stream, underlyingSource, highWaterMark, sizeAlgorithm) {\n var controller = Object.create(ReadableStreamDefaultController.prototype);\n function startAlgorithm() {\n return InvokeOrNoop(underlyingSource, 'start', [controller]);\n }\n var pullAlgorithm = CreateAlgorithmFromUnderlyingMethod(underlyingSource, 'pull', 0, [controller]);\n var cancelAlgorithm = CreateAlgorithmFromUnderlyingMethod(underlyingSource, 'cancel', 1, []);\n SetUpReadableStreamDefaultController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm);\n }\n function defaultControllerBrandCheckException(name) {\n return new TypeError(\"ReadableStreamDefaultController.prototype.\" + name + \" can only be used on a ReadableStreamDefaultController\");\n }\n function ReadableStreamTee(stream, cloneForBranch2) {\n var reader = AcquireReadableStreamDefaultReader(stream);\n var reading = false;\n var canceled1 = false;\n var canceled2 = false;\n var reason1;\n var reason2;\n var branch1;\n var branch2;\n var resolveCancelPromise;\n var cancelPromise = newPromise(function (resolve) {\n resolveCancelPromise = resolve;\n });\n function pullAlgorithm() {\n if (reading === true) {\n return promiseResolvedWith(undefined);\n }\n reading = true;\n var readPromise = transformPromiseWith(ReadableStreamDefaultReaderRead(reader), function (result) {\n reading = false;\n var done = result.done;\n if (done === true) {\n if (canceled1 === false) {\n ReadableStreamDefaultControllerClose(branch1._readableStreamController);\n }\n if (canceled2 === false) {\n ReadableStreamDefaultControllerClose(branch2._readableStreamController);\n }\n return;\n }\n var value = result.value;\n var value1 = value;\n var value2 = value;\n if (canceled1 === false) {\n ReadableStreamDefaultControllerEnqueue(branch1._readableStreamController, value1);\n }\n if (canceled2 === false) {\n ReadableStreamDefaultControllerEnqueue(branch2._readableStreamController, value2);\n }\n });\n setPromiseIsHandledToTrue(readPromise);\n return promiseResolvedWith(undefined);\n }\n function cancel1Algorithm(reason) {\n canceled1 = true;\n reason1 = reason;\n if (canceled2 === true) {\n var compositeReason = createArrayFromList([\n reason1,\n reason2\n ]);\n var cancelResult = ReadableStreamCancel(stream, compositeReason);\n resolveCancelPromise(cancelResult);\n }\n return cancelPromise;\n }\n function cancel2Algorithm(reason) {\n canceled2 = true;\n reason2 = reason;\n if (canceled1 === true) {\n var compositeReason = createArrayFromList([\n reason1,\n reason2\n ]);\n var cancelResult = ReadableStreamCancel(stream, compositeReason);\n resolveCancelPromise(cancelResult);\n }\n return cancelPromise;\n }\n function startAlgorithm() {\n }\n branch1 = CreateReadableStream(startAlgorithm, pullAlgorithm, cancel1Algorithm);\n branch2 = CreateReadableStream(startAlgorithm, pullAlgorithm, cancel2Algorithm);\n uponRejection(reader._closedPromise, function (r) {\n ReadableStreamDefaultControllerError(branch1._readableStreamController, r);\n ReadableStreamDefaultControllerError(branch2._readableStreamController, r);\n });\n return [\n branch1,\n branch2\n ];\n }\n var NumberIsInteger = Number.isInteger || function (value) {\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n };\n var ReadableStreamBYOBRequest = function () {\n function ReadableStreamBYOBRequest() {\n throw new TypeError('ReadableStreamBYOBRequest cannot be used directly');\n }\n Object.defineProperty(ReadableStreamBYOBRequest.prototype, \"view\", {\n get: function () {\n if (IsReadableStreamBYOBRequest(this) === false) {\n throw byobRequestBrandCheckException('view');\n }\n return this._view;\n },\n enumerable: true,\n configurable: true\n });\n ReadableStreamBYOBRequest.prototype.respond = function (bytesWritten) {\n if (IsReadableStreamBYOBRequest(this) === false) {\n throw byobRequestBrandCheckException('respond');\n }\n if (this._associatedReadableByteStreamController === undefined) {\n throw new TypeError('This BYOB request has been invalidated');\n }\n if (IsDetachedBuffer(this._view.buffer) === true);\n ReadableByteStreamControllerRespond(this._associatedReadableByteStreamController, bytesWritten);\n };\n ReadableStreamBYOBRequest.prototype.respondWithNewView = function (view) {\n if (IsReadableStreamBYOBRequest(this) === false) {\n throw byobRequestBrandCheckException('respond');\n }\n if (this._associatedReadableByteStreamController === undefined) {\n throw new TypeError('This BYOB request has been invalidated');\n }\n if (!ArrayBuffer.isView(view)) {\n throw new TypeError('You can only respond with array buffer views');\n }\n if (IsDetachedBuffer(view.buffer) === true);\n ReadableByteStreamControllerRespondWithNewView(this._associatedReadableByteStreamController, view);\n };\n return ReadableStreamBYOBRequest;\n }();\n var ReadableByteStreamController = function () {\n function ReadableByteStreamController() {\n throw new TypeError('ReadableByteStreamController constructor cannot be used directly');\n }\n Object.defineProperty(ReadableByteStreamController.prototype, \"byobRequest\", {\n get: function () {\n if (IsReadableByteStreamController(this) === false) {\n throw byteStreamControllerBrandCheckException('byobRequest');\n }\n if (this._byobRequest === undefined && this._pendingPullIntos.length > 0) {\n var firstDescriptor = this._pendingPullIntos.peek();\n var view = new Uint8Array(firstDescriptor.buffer, firstDescriptor.byteOffset + firstDescriptor.bytesFilled, firstDescriptor.byteLength - firstDescriptor.bytesFilled);\n var byobRequest = Object.create(ReadableStreamBYOBRequest.prototype);\n SetUpReadableStreamBYOBRequest(byobRequest, this, view);\n this._byobRequest = byobRequest;\n }\n return this._byobRequest;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ReadableByteStreamController.prototype, \"desiredSize\", {\n get: function () {\n if (IsReadableByteStreamController(this) === false) {\n throw byteStreamControllerBrandCheckException('desiredSize');\n }\n return ReadableByteStreamControllerGetDesiredSize(this);\n },\n enumerable: true,\n configurable: true\n });\n ReadableByteStreamController.prototype.close = function () {\n if (IsReadableByteStreamController(this) === false) {\n throw byteStreamControllerBrandCheckException('close');\n }\n if (this._closeRequested === true) {\n throw new TypeError('The stream has already been closed; do not close it again!');\n }\n var state = this._controlledReadableByteStream._state;\n if (state !== 'readable') {\n throw new TypeError(\"The stream (in \" + state + \" state) is not in the readable state and cannot be closed\");\n }\n ReadableByteStreamControllerClose(this);\n };\n ReadableByteStreamController.prototype.enqueue = function (chunk) {\n if (IsReadableByteStreamController(this) === false) {\n throw byteStreamControllerBrandCheckException('enqueue');\n }\n if (this._closeRequested === true) {\n throw new TypeError('stream is closed or draining');\n }\n var state = this._controlledReadableByteStream._state;\n if (state !== 'readable') {\n throw new TypeError(\"The stream (in \" + state + \" state) is not in the readable state and cannot be enqueued to\");\n }\n if (!ArrayBuffer.isView(chunk)) {\n throw new TypeError('You can only enqueue array buffer views when using a ReadableByteStreamController');\n }\n if (IsDetachedBuffer(chunk.buffer) === true);\n ReadableByteStreamControllerEnqueue(this, chunk);\n };\n ReadableByteStreamController.prototype.error = function (e) {\n if (IsReadableByteStreamController(this) === false) {\n throw byteStreamControllerBrandCheckException('error');\n }\n ReadableByteStreamControllerError(this, e);\n };\n ReadableByteStreamController.prototype[CancelSteps] = function (reason) {\n if (this._pendingPullIntos.length > 0) {\n var firstDescriptor = this._pendingPullIntos.peek();\n firstDescriptor.bytesFilled = 0;\n }\n ResetQueue(this);\n var result = this._cancelAlgorithm(reason);\n ReadableByteStreamControllerClearAlgorithms(this);\n return result;\n };\n ReadableByteStreamController.prototype[PullSteps] = function () {\n var stream = this._controlledReadableByteStream;\n if (this._queueTotalSize > 0) {\n var entry = this._queue.shift();\n this._queueTotalSize -= entry.byteLength;\n ReadableByteStreamControllerHandleQueueDrain(this);\n var view = void 0;\n try {\n view = new Uint8Array(entry.buffer, entry.byteOffset, entry.byteLength);\n } catch (viewE) {\n return promiseRejectedWith(viewE);\n }\n return promiseResolvedWith(ReadableStreamCreateReadResult(view, false, stream._reader._forAuthorCode));\n }\n var autoAllocateChunkSize = this._autoAllocateChunkSize;\n if (autoAllocateChunkSize !== undefined) {\n var buffer = void 0;\n try {\n buffer = new ArrayBuffer(autoAllocateChunkSize);\n } catch (bufferE) {\n return promiseRejectedWith(bufferE);\n }\n var pullIntoDescriptor = {\n buffer: buffer,\n byteOffset: 0,\n byteLength: autoAllocateChunkSize,\n bytesFilled: 0,\n elementSize: 1,\n ctor: Uint8Array,\n readerType: 'default'\n };\n this._pendingPullIntos.push(pullIntoDescriptor);\n }\n var promise = ReadableStreamAddReadRequest(stream);\n ReadableByteStreamControllerCallPullIfNeeded(this);\n return promise;\n };\n return ReadableByteStreamController;\n }();\n function IsReadableByteStreamController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_controlledReadableByteStream')) {\n return false;\n }\n return true;\n }\n function IsReadableStreamBYOBRequest(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_associatedReadableByteStreamController')) {\n return false;\n }\n return true;\n }\n function ReadableByteStreamControllerCallPullIfNeeded(controller) {\n var shouldPull = ReadableByteStreamControllerShouldCallPull(controller);\n if (shouldPull === false) {\n return;\n }\n if (controller._pulling === true) {\n controller._pullAgain = true;\n return;\n }\n controller._pulling = true;\n var pullPromise = controller._pullAlgorithm();\n uponPromise(pullPromise, function () {\n controller._pulling = false;\n if (controller._pullAgain === true) {\n controller._pullAgain = false;\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }\n }, function (e) {\n ReadableByteStreamControllerError(controller, e);\n });\n }\n function ReadableByteStreamControllerClearPendingPullIntos(controller) {\n ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n controller._pendingPullIntos = new SimpleQueue();\n }\n function ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor) {\n var done = false;\n if (stream._state === 'closed') {\n done = true;\n }\n var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);\n if (pullIntoDescriptor.readerType === 'default') {\n ReadableStreamFulfillReadRequest(stream, filledView, done);\n } else {\n ReadableStreamFulfillReadIntoRequest(stream, filledView, done);\n }\n }\n function ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor) {\n var bytesFilled = pullIntoDescriptor.bytesFilled;\n var elementSize = pullIntoDescriptor.elementSize;\n return new pullIntoDescriptor.ctor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, bytesFilled / elementSize);\n }\n function ReadableByteStreamControllerEnqueueChunkToQueue(controller, buffer, byteOffset, byteLength) {\n controller._queue.push({\n buffer: buffer,\n byteOffset: byteOffset,\n byteLength: byteLength\n });\n controller._queueTotalSize += byteLength;\n }\n function ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) {\n var elementSize = pullIntoDescriptor.elementSize;\n var currentAlignedBytes = pullIntoDescriptor.bytesFilled - pullIntoDescriptor.bytesFilled % elementSize;\n var maxBytesToCopy = Math.min(controller._queueTotalSize, pullIntoDescriptor.byteLength - pullIntoDescriptor.bytesFilled);\n var maxBytesFilled = pullIntoDescriptor.bytesFilled + maxBytesToCopy;\n var maxAlignedBytes = maxBytesFilled - maxBytesFilled % elementSize;\n var totalBytesToCopyRemaining = maxBytesToCopy;\n var ready = false;\n if (maxAlignedBytes > currentAlignedBytes) {\n totalBytesToCopyRemaining = maxAlignedBytes - pullIntoDescriptor.bytesFilled;\n ready = true;\n }\n var queue = controller._queue;\n while (totalBytesToCopyRemaining > 0) {\n var headOfQueue = queue.peek();\n var bytesToCopy = Math.min(totalBytesToCopyRemaining, headOfQueue.byteLength);\n var destStart = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;\n ArrayBufferCopy(pullIntoDescriptor.buffer, destStart, headOfQueue.buffer, headOfQueue.byteOffset, bytesToCopy);\n if (headOfQueue.byteLength === bytesToCopy) {\n queue.shift();\n } else {\n headOfQueue.byteOffset += bytesToCopy;\n headOfQueue.byteLength -= bytesToCopy;\n }\n controller._queueTotalSize -= bytesToCopy;\n ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesToCopy, pullIntoDescriptor);\n totalBytesToCopyRemaining -= bytesToCopy;\n }\n return ready;\n }\n function ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, size, pullIntoDescriptor) {\n ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n pullIntoDescriptor.bytesFilled += size;\n }\n function ReadableByteStreamControllerHandleQueueDrain(controller) {\n if (controller._queueTotalSize === 0 && controller._closeRequested === true) {\n ReadableByteStreamControllerClearAlgorithms(controller);\n ReadableStreamClose(controller._controlledReadableByteStream);\n } else {\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }\n }\n function ReadableByteStreamControllerInvalidateBYOBRequest(controller) {\n if (controller._byobRequest === undefined) {\n return;\n }\n controller._byobRequest._associatedReadableByteStreamController = undefined;\n controller._byobRequest._view = undefined;\n controller._byobRequest = undefined;\n }\n function ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller) {\n while (controller._pendingPullIntos.length > 0) {\n if (controller._queueTotalSize === 0) {\n return;\n }\n var pullIntoDescriptor = controller._pendingPullIntos.peek();\n if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) {\n ReadableByteStreamControllerShiftPendingPullInto(controller);\n ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableByteStream, pullIntoDescriptor);\n }\n }\n }\n function ReadableByteStreamControllerPullInto(controller, view) {\n var stream = controller._controlledReadableByteStream;\n var elementSize = 1;\n if (view.constructor !== DataView) {\n elementSize = view.constructor.BYTES_PER_ELEMENT;\n }\n var ctor = view.constructor;\n var buffer = TransferArrayBuffer(view.buffer);\n var pullIntoDescriptor = {\n buffer: buffer,\n byteOffset: view.byteOffset,\n byteLength: view.byteLength,\n bytesFilled: 0,\n elementSize: elementSize,\n ctor: ctor,\n readerType: 'byob'\n };\n if (controller._pendingPullIntos.length > 0) {\n controller._pendingPullIntos.push(pullIntoDescriptor);\n return ReadableStreamAddReadIntoRequest(stream);\n }\n if (stream._state === 'closed') {\n var emptyView = new ctor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, 0);\n return promiseResolvedWith(ReadableStreamCreateReadResult(emptyView, true, stream._reader._forAuthorCode));\n }\n if (controller._queueTotalSize > 0) {\n if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) {\n var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);\n ReadableByteStreamControllerHandleQueueDrain(controller);\n return promiseResolvedWith(ReadableStreamCreateReadResult(filledView, false, stream._reader._forAuthorCode));\n }\n if (controller._closeRequested === true) {\n var e = new TypeError('Insufficient bytes to fill elements in the given buffer');\n ReadableByteStreamControllerError(controller, e);\n return promiseRejectedWith(e);\n }\n }\n controller._pendingPullIntos.push(pullIntoDescriptor);\n var promise = ReadableStreamAddReadIntoRequest(stream);\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n return promise;\n }\n function ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor) {\n firstDescriptor.buffer = TransferArrayBuffer(firstDescriptor.buffer);\n var stream = controller._controlledReadableByteStream;\n if (ReadableStreamHasBYOBReader(stream) === true) {\n while (ReadableStreamGetNumReadIntoRequests(stream) > 0) {\n var pullIntoDescriptor = ReadableByteStreamControllerShiftPendingPullInto(controller);\n ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor);\n }\n }\n }\n function ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, pullIntoDescriptor) {\n if (pullIntoDescriptor.bytesFilled + bytesWritten > pullIntoDescriptor.byteLength) {\n throw new RangeError('bytesWritten out of range');\n }\n ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesWritten, pullIntoDescriptor);\n if (pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize) {\n return;\n }\n ReadableByteStreamControllerShiftPendingPullInto(controller);\n var remainderSize = pullIntoDescriptor.bytesFilled % pullIntoDescriptor.elementSize;\n if (remainderSize > 0) {\n var end = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;\n var remainder = pullIntoDescriptor.buffer.slice(end - remainderSize, end);\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, remainder, 0, remainder.byteLength);\n }\n pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);\n pullIntoDescriptor.bytesFilled -= remainderSize;\n ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableByteStream, pullIntoDescriptor);\n ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);\n }\n function ReadableByteStreamControllerRespondInternal(controller, bytesWritten) {\n var firstDescriptor = controller._pendingPullIntos.peek();\n var stream = controller._controlledReadableByteStream;\n if (stream._state === 'closed') {\n if (bytesWritten !== 0) {\n throw new TypeError('bytesWritten must be 0 when calling respond() on a closed stream');\n }\n ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor);\n } else {\n ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, firstDescriptor);\n }\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }\n function ReadableByteStreamControllerShiftPendingPullInto(controller) {\n var descriptor = controller._pendingPullIntos.shift();\n ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n return descriptor;\n }\n function ReadableByteStreamControllerShouldCallPull(controller) {\n var stream = controller._controlledReadableByteStream;\n if (stream._state !== 'readable') {\n return false;\n }\n if (controller._closeRequested === true) {\n return false;\n }\n if (controller._started === false) {\n return false;\n }\n if (ReadableStreamHasDefaultReader(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {\n return true;\n }\n if (ReadableStreamHasBYOBReader(stream) === true && ReadableStreamGetNumReadIntoRequests(stream) > 0) {\n return true;\n }\n var desiredSize = ReadableByteStreamControllerGetDesiredSize(controller);\n if (desiredSize > 0) {\n return true;\n }\n return false;\n }\n function ReadableByteStreamControllerClearAlgorithms(controller) {\n controller._pullAlgorithm = undefined;\n controller._cancelAlgorithm = undefined;\n }\n function ReadableByteStreamControllerClose(controller) {\n var stream = controller._controlledReadableByteStream;\n if (controller._queueTotalSize > 0) {\n controller._closeRequested = true;\n return;\n }\n if (controller._pendingPullIntos.length > 0) {\n var firstPendingPullInto = controller._pendingPullIntos.peek();\n if (firstPendingPullInto.bytesFilled > 0) {\n var e = new TypeError('Insufficient bytes to fill elements in the given buffer');\n ReadableByteStreamControllerError(controller, e);\n throw e;\n }\n }\n ReadableByteStreamControllerClearAlgorithms(controller);\n ReadableStreamClose(stream);\n }\n function ReadableByteStreamControllerEnqueue(controller, chunk) {\n var stream = controller._controlledReadableByteStream;\n var buffer = chunk.buffer;\n var byteOffset = chunk.byteOffset;\n var byteLength = chunk.byteLength;\n var transferredBuffer = TransferArrayBuffer(buffer);\n if (ReadableStreamHasDefaultReader(stream) === true) {\n if (ReadableStreamGetNumReadRequests(stream) === 0) {\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n } else {\n var transferredView = new Uint8Array(transferredBuffer, byteOffset, byteLength);\n ReadableStreamFulfillReadRequest(stream, transferredView, false);\n }\n } else if (ReadableStreamHasBYOBReader(stream) === true) {\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);\n } else {\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n }\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }\n function ReadableByteStreamControllerError(controller, e) {\n var stream = controller._controlledReadableByteStream;\n if (stream._state !== 'readable') {\n return;\n }\n ReadableByteStreamControllerClearPendingPullIntos(controller);\n ResetQueue(controller);\n ReadableByteStreamControllerClearAlgorithms(controller);\n ReadableStreamError(stream, e);\n }\n function ReadableByteStreamControllerGetDesiredSize(controller) {\n var stream = controller._controlledReadableByteStream;\n var state = stream._state;\n if (state === 'errored') {\n return null;\n }\n if (state === 'closed') {\n return 0;\n }\n return controller._strategyHWM - controller._queueTotalSize;\n }\n function ReadableByteStreamControllerRespond(controller, bytesWritten) {\n bytesWritten = Number(bytesWritten);\n if (IsFiniteNonNegativeNumber(bytesWritten) === false) {\n throw new RangeError('bytesWritten must be a finite');\n }\n ReadableByteStreamControllerRespondInternal(controller, bytesWritten);\n }\n function ReadableByteStreamControllerRespondWithNewView(controller, view) {\n var firstDescriptor = controller._pendingPullIntos.peek();\n if (firstDescriptor.byteOffset + firstDescriptor.bytesFilled !== view.byteOffset) {\n throw new RangeError('The region specified by view does not match byobRequest');\n }\n if (firstDescriptor.byteLength !== view.byteLength) {\n throw new RangeError('The buffer of view has different capacity than byobRequest');\n }\n firstDescriptor.buffer = view.buffer;\n ReadableByteStreamControllerRespondInternal(controller, view.byteLength);\n }\n function SetUpReadableByteStreamController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, autoAllocateChunkSize) {\n controller._controlledReadableByteStream = stream;\n controller._pullAgain = false;\n controller._pulling = false;\n controller._byobRequest = undefined;\n controller._queue = controller._queueTotalSize = undefined;\n ResetQueue(controller);\n controller._closeRequested = false;\n controller._started = false;\n controller._strategyHWM = ValidateAndNormalizeHighWaterMark(highWaterMark);\n controller._pullAlgorithm = pullAlgorithm;\n controller._cancelAlgorithm = cancelAlgorithm;\n controller._autoAllocateChunkSize = autoAllocateChunkSize;\n controller._pendingPullIntos = new SimpleQueue();\n stream._readableStreamController = controller;\n var startResult = startAlgorithm();\n uponPromise(promiseResolvedWith(startResult), function () {\n controller._started = true;\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }, function (r) {\n ReadableByteStreamControllerError(controller, r);\n });\n }\n function SetUpReadableByteStreamControllerFromUnderlyingSource(stream, underlyingByteSource, highWaterMark) {\n var controller = Object.create(ReadableByteStreamController.prototype);\n function startAlgorithm() {\n return InvokeOrNoop(underlyingByteSource, 'start', [controller]);\n }\n var pullAlgorithm = CreateAlgorithmFromUnderlyingMethod(underlyingByteSource, 'pull', 0, [controller]);\n var cancelAlgorithm = CreateAlgorithmFromUnderlyingMethod(underlyingByteSource, 'cancel', 1, []);\n var autoAllocateChunkSize = underlyingByteSource.autoAllocateChunkSize;\n if (autoAllocateChunkSize !== undefined) {\n autoAllocateChunkSize = Number(autoAllocateChunkSize);\n if (NumberIsInteger(autoAllocateChunkSize) === false || autoAllocateChunkSize <= 0) {\n throw new RangeError('autoAllocateChunkSize must be a positive integer');\n }\n }\n SetUpReadableByteStreamController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, autoAllocateChunkSize);\n }\n function SetUpReadableStreamBYOBRequest(request, controller, view) {\n request._associatedReadableByteStreamController = controller;\n request._view = view;\n }\n function byobRequestBrandCheckException(name) {\n return new TypeError(\"ReadableStreamBYOBRequest.prototype.\" + name + \" can only be used on a ReadableStreamBYOBRequest\");\n }\n function byteStreamControllerBrandCheckException(name) {\n return new TypeError(\"ReadableByteStreamController.prototype.\" + name + \" can only be used on a ReadableByteStreamController\");\n }\n function AcquireReadableStreamBYOBReader(stream, forAuthorCode) {\n if (forAuthorCode === void 0) {\n forAuthorCode = false;\n }\n var reader = new ReadableStreamBYOBReader(stream);\n reader._forAuthorCode = forAuthorCode;\n return reader;\n }\n function ReadableStreamAddReadIntoRequest(stream) {\n var promise = newPromise(function (resolve, reject) {\n var readIntoRequest = {\n _resolve: resolve,\n _reject: reject\n };\n stream._reader._readIntoRequests.push(readIntoRequest);\n });\n return promise;\n }\n function ReadableStreamFulfillReadIntoRequest(stream, chunk, done) {\n var reader = stream._reader;\n var readIntoRequest = reader._readIntoRequests.shift();\n readIntoRequest._resolve(ReadableStreamCreateReadResult(chunk, done, reader._forAuthorCode));\n }\n function ReadableStreamGetNumReadIntoRequests(stream) {\n return stream._reader._readIntoRequests.length;\n }\n function ReadableStreamHasBYOBReader(stream) {\n var reader = stream._reader;\n if (reader === undefined) {\n return false;\n }\n if (!IsReadableStreamBYOBReader(reader)) {\n return false;\n }\n return true;\n }\n var ReadableStreamBYOBReader = function () {\n function ReadableStreamBYOBReader(stream) {\n if (!IsReadableStream(stream)) {\n throw new TypeError('ReadableStreamBYOBReader can only be constructed with a ReadableStream instance given a ' + 'byte source');\n }\n if (IsReadableByteStreamController(stream._readableStreamController) === false) {\n throw new TypeError('Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte ' + 'source');\n }\n if (IsReadableStreamLocked(stream)) {\n throw new TypeError('This stream has already been locked for exclusive reading by another reader');\n }\n ReadableStreamReaderGenericInitialize(this, stream);\n this._readIntoRequests = new SimpleQueue();\n }\n Object.defineProperty(ReadableStreamBYOBReader.prototype, \"closed\", {\n get: function () {\n if (!IsReadableStreamBYOBReader(this)) {\n return promiseRejectedWith(byobReaderBrandCheckException('closed'));\n }\n return this._closedPromise;\n },\n enumerable: true,\n configurable: true\n });\n ReadableStreamBYOBReader.prototype.cancel = function (reason) {\n if (!IsReadableStreamBYOBReader(this)) {\n return promiseRejectedWith(byobReaderBrandCheckException('cancel'));\n }\n if (this._ownerReadableStream === undefined) {\n return promiseRejectedWith(readerLockException('cancel'));\n }\n return ReadableStreamReaderGenericCancel(this, reason);\n };\n ReadableStreamBYOBReader.prototype.read = function (view) {\n if (!IsReadableStreamBYOBReader(this)) {\n return promiseRejectedWith(byobReaderBrandCheckException('read'));\n }\n if (this._ownerReadableStream === undefined) {\n return promiseRejectedWith(readerLockException('read from'));\n }\n if (!ArrayBuffer.isView(view)) {\n return promiseRejectedWith(new TypeError('view must be an array buffer view'));\n }\n if (IsDetachedBuffer(view.buffer) === true);\n if (view.byteLength === 0) {\n return promiseRejectedWith(new TypeError('view must have non-zero byteLength'));\n }\n return ReadableStreamBYOBReaderRead(this, view);\n };\n ReadableStreamBYOBReader.prototype.releaseLock = function () {\n if (!IsReadableStreamBYOBReader(this)) {\n throw byobReaderBrandCheckException('releaseLock');\n }\n if (this._ownerReadableStream === undefined) {\n return;\n }\n if (this._readIntoRequests.length > 0) {\n throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled');\n }\n ReadableStreamReaderGenericRelease(this);\n };\n return ReadableStreamBYOBReader;\n }();\n function IsReadableStreamBYOBReader(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_readIntoRequests')) {\n return false;\n }\n return true;\n }\n function ReadableStreamBYOBReaderRead(reader, view) {\n var stream = reader._ownerReadableStream;\n stream._disturbed = true;\n if (stream._state === 'errored') {\n return promiseRejectedWith(stream._storedError);\n }\n return ReadableByteStreamControllerPullInto(stream._readableStreamController, view);\n }\n function byobReaderBrandCheckException(name) {\n return new TypeError(\"ReadableStreamBYOBReader.prototype.\" + name + \" can only be used on a ReadableStreamBYOBReader\");\n }\n var ReadableStream = function () {\n function ReadableStream(underlyingSource, strategy) {\n if (underlyingSource === void 0) {\n underlyingSource = {};\n }\n if (strategy === void 0) {\n strategy = {};\n }\n InitializeReadableStream(this);\n var size = strategy.size;\n var highWaterMark = strategy.highWaterMark;\n var type = underlyingSource.type;\n var typeString = String(type);\n if (typeString === 'bytes') {\n if (size !== undefined) {\n throw new RangeError('The strategy for a byte stream cannot have a size function');\n }\n if (highWaterMark === undefined) {\n highWaterMark = 0;\n }\n highWaterMark = ValidateAndNormalizeHighWaterMark(highWaterMark);\n SetUpReadableByteStreamControllerFromUnderlyingSource(this, underlyingSource, highWaterMark);\n } else if (type === undefined) {\n var sizeAlgorithm = MakeSizeAlgorithmFromSizeFunction(size);\n if (highWaterMark === undefined) {\n highWaterMark = 1;\n }\n highWaterMark = ValidateAndNormalizeHighWaterMark(highWaterMark);\n SetUpReadableStreamDefaultControllerFromUnderlyingSource(this, underlyingSource, highWaterMark, sizeAlgorithm);\n } else {\n throw new RangeError('Invalid type is specified');\n }\n }\n Object.defineProperty(ReadableStream.prototype, \"locked\", {\n get: function () {\n if (IsReadableStream(this) === false) {\n throw streamBrandCheckException$1('locked');\n }\n return IsReadableStreamLocked(this);\n },\n enumerable: true,\n configurable: true\n });\n ReadableStream.prototype.cancel = function (reason) {\n if (IsReadableStream(this) === false) {\n return promiseRejectedWith(streamBrandCheckException$1('cancel'));\n }\n if (IsReadableStreamLocked(this) === true) {\n return promiseRejectedWith(new TypeError('Cannot cancel a stream that already has a reader'));\n }\n return ReadableStreamCancel(this, reason);\n };\n ReadableStream.prototype.getReader = function (_a) {\n var mode = (_a === void 0 ? {} : _a).mode;\n if (IsReadableStream(this) === false) {\n throw streamBrandCheckException$1('getReader');\n }\n if (mode === undefined) {\n return AcquireReadableStreamDefaultReader(this, true);\n }\n mode = String(mode);\n if (mode === 'byob') {\n return AcquireReadableStreamBYOBReader(this, true);\n }\n throw new RangeError('Invalid mode is specified');\n };\n ReadableStream.prototype.pipeThrough = function (_a, _b) {\n var writable = _a.writable, readable = _a.readable;\n var _c = _b === void 0 ? {} : _b, preventClose = _c.preventClose, preventAbort = _c.preventAbort, preventCancel = _c.preventCancel, signal = _c.signal;\n if (IsReadableStream(this) === false) {\n throw streamBrandCheckException$1('pipeThrough');\n }\n if (IsWritableStream(writable) === false) {\n throw new TypeError('writable argument to pipeThrough must be a WritableStream');\n }\n if (IsReadableStream(readable) === false) {\n throw new TypeError('readable argument to pipeThrough must be a ReadableStream');\n }\n preventClose = Boolean(preventClose);\n preventAbort = Boolean(preventAbort);\n preventCancel = Boolean(preventCancel);\n if (signal !== undefined && !isAbortSignal(signal)) {\n throw new TypeError('ReadableStream.prototype.pipeThrough\\'s signal option must be an AbortSignal');\n }\n if (IsReadableStreamLocked(this) === true) {\n throw new TypeError('ReadableStream.prototype.pipeThrough cannot be used on a locked ReadableStream');\n }\n if (IsWritableStreamLocked(writable) === true) {\n throw new TypeError('ReadableStream.prototype.pipeThrough cannot be used on a locked WritableStream');\n }\n var promise = ReadableStreamPipeTo(this, writable, preventClose, preventAbort, preventCancel, signal);\n setPromiseIsHandledToTrue(promise);\n return readable;\n };\n ReadableStream.prototype.pipeTo = function (dest, _a) {\n var _b = _a === void 0 ? {} : _a, preventClose = _b.preventClose, preventAbort = _b.preventAbort, preventCancel = _b.preventCancel, signal = _b.signal;\n if (IsReadableStream(this) === false) {\n return promiseRejectedWith(streamBrandCheckException$1('pipeTo'));\n }\n if (IsWritableStream(dest) === false) {\n return promiseRejectedWith(new TypeError('ReadableStream.prototype.pipeTo\\'s first argument must be a WritableStream'));\n }\n preventClose = Boolean(preventClose);\n preventAbort = Boolean(preventAbort);\n preventCancel = Boolean(preventCancel);\n if (signal !== undefined && !isAbortSignal(signal)) {\n return promiseRejectedWith(new TypeError('ReadableStream.prototype.pipeTo\\'s signal option must be an AbortSignal'));\n }\n if (IsReadableStreamLocked(this) === true) {\n return promiseRejectedWith(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream'));\n }\n if (IsWritableStreamLocked(dest) === true) {\n return promiseRejectedWith(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream'));\n }\n return ReadableStreamPipeTo(this, dest, preventClose, preventAbort, preventCancel, signal);\n };\n ReadableStream.prototype.tee = function () {\n if (IsReadableStream(this) === false) {\n throw streamBrandCheckException$1('tee');\n }\n var branches = ReadableStreamTee(this);\n return createArrayFromList(branches);\n };\n ReadableStream.prototype.getIterator = function (_a) {\n var _b = (_a === void 0 ? {} : _a).preventCancel, preventCancel = _b === void 0 ? false : _b;\n if (IsReadableStream(this) === false) {\n throw streamBrandCheckException$1('getIterator');\n }\n return AcquireReadableStreamAsyncIterator(this, preventCancel);\n };\n return ReadableStream;\n }();\n if (typeof SymbolPolyfill.asyncIterator === 'symbol') {\n Object.defineProperty(ReadableStream.prototype, SymbolPolyfill.asyncIterator, {\n value: ReadableStream.prototype.getIterator,\n enumerable: false,\n writable: true,\n configurable: true\n });\n }\n function CreateReadableStream(startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm) {\n if (highWaterMark === void 0) {\n highWaterMark = 1;\n }\n if (sizeAlgorithm === void 0) {\n sizeAlgorithm = function () {\n return 1;\n };\n }\n var stream = Object.create(ReadableStream.prototype);\n InitializeReadableStream(stream);\n var controller = Object.create(ReadableStreamDefaultController.prototype);\n SetUpReadableStreamDefaultController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm);\n return stream;\n }\n function InitializeReadableStream(stream) {\n stream._state = 'readable';\n stream._reader = undefined;\n stream._storedError = undefined;\n stream._disturbed = false;\n }\n function IsReadableStream(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_readableStreamController')) {\n return false;\n }\n return true;\n }\n function IsReadableStreamLocked(stream) {\n if (stream._reader === undefined) {\n return false;\n }\n return true;\n }\n function ReadableStreamCancel(stream, reason) {\n stream._disturbed = true;\n if (stream._state === 'closed') {\n return promiseResolvedWith(undefined);\n }\n if (stream._state === 'errored') {\n return promiseRejectedWith(stream._storedError);\n }\n ReadableStreamClose(stream);\n var sourceCancelPromise = stream._readableStreamController[CancelSteps](reason);\n return transformPromiseWith(sourceCancelPromise, noop);\n }\n function ReadableStreamClose(stream) {\n stream._state = 'closed';\n var reader = stream._reader;\n if (reader === undefined) {\n return;\n }\n if (IsReadableStreamDefaultReader(reader)) {\n reader._readRequests.forEach(function (readRequest) {\n readRequest._resolve(ReadableStreamCreateReadResult(undefined, true, reader._forAuthorCode));\n });\n reader._readRequests = new SimpleQueue();\n }\n defaultReaderClosedPromiseResolve(reader);\n }\n function ReadableStreamError(stream, e) {\n stream._state = 'errored';\n stream._storedError = e;\n var reader = stream._reader;\n if (reader === undefined) {\n return;\n }\n if (IsReadableStreamDefaultReader(reader)) {\n reader._readRequests.forEach(function (readRequest) {\n readRequest._reject(e);\n });\n reader._readRequests = new SimpleQueue();\n } else {\n reader._readIntoRequests.forEach(function (readIntoRequest) {\n readIntoRequest._reject(e);\n });\n reader._readIntoRequests = new SimpleQueue();\n }\n defaultReaderClosedPromiseReject(reader, e);\n }\n function streamBrandCheckException$1(name) {\n return new TypeError(\"ReadableStream.prototype.\" + name + \" can only be used on a ReadableStream\");\n }\n var ByteLengthQueuingStrategy = function () {\n function ByteLengthQueuingStrategy(_a) {\n var highWaterMark = _a.highWaterMark;\n this.highWaterMark = highWaterMark;\n }\n ByteLengthQueuingStrategy.prototype.size = function (chunk) {\n return chunk.byteLength;\n };\n return ByteLengthQueuingStrategy;\n }();\n var CountQueuingStrategy = function () {\n function CountQueuingStrategy(_a) {\n var highWaterMark = _a.highWaterMark;\n this.highWaterMark = highWaterMark;\n }\n CountQueuingStrategy.prototype.size = function () {\n return 1;\n };\n return CountQueuingStrategy;\n }();\n var TransformStream = function () {\n function TransformStream(transformer, writableStrategy, readableStrategy) {\n if (transformer === void 0) {\n transformer = {};\n }\n if (writableStrategy === void 0) {\n writableStrategy = {};\n }\n if (readableStrategy === void 0) {\n readableStrategy = {};\n }\n var writableSizeFunction = writableStrategy.size;\n var writableHighWaterMark = writableStrategy.highWaterMark;\n var readableSizeFunction = readableStrategy.size;\n var readableHighWaterMark = readableStrategy.highWaterMark;\n var writableType = transformer.writableType;\n if (writableType !== undefined) {\n throw new RangeError('Invalid writable type specified');\n }\n var writableSizeAlgorithm = MakeSizeAlgorithmFromSizeFunction(writableSizeFunction);\n if (writableHighWaterMark === undefined) {\n writableHighWaterMark = 1;\n }\n writableHighWaterMark = ValidateAndNormalizeHighWaterMark(writableHighWaterMark);\n var readableType = transformer.readableType;\n if (readableType !== undefined) {\n throw new RangeError('Invalid readable type specified');\n }\n var readableSizeAlgorithm = MakeSizeAlgorithmFromSizeFunction(readableSizeFunction);\n if (readableHighWaterMark === undefined) {\n readableHighWaterMark = 0;\n }\n readableHighWaterMark = ValidateAndNormalizeHighWaterMark(readableHighWaterMark);\n var startPromise_resolve;\n var startPromise = newPromise(function (resolve) {\n startPromise_resolve = resolve;\n });\n InitializeTransformStream(this, startPromise, writableHighWaterMark, writableSizeAlgorithm, readableHighWaterMark, readableSizeAlgorithm);\n SetUpTransformStreamDefaultControllerFromTransformer(this, transformer);\n var startResult = InvokeOrNoop(transformer, 'start', [this._transformStreamController]);\n startPromise_resolve(startResult);\n }\n Object.defineProperty(TransformStream.prototype, \"readable\", {\n get: function () {\n if (IsTransformStream(this) === false) {\n throw streamBrandCheckException$2('readable');\n }\n return this._readable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TransformStream.prototype, \"writable\", {\n get: function () {\n if (IsTransformStream(this) === false) {\n throw streamBrandCheckException$2('writable');\n }\n return this._writable;\n },\n enumerable: true,\n configurable: true\n });\n return TransformStream;\n }();\n function InitializeTransformStream(stream, startPromise, writableHighWaterMark, writableSizeAlgorithm, readableHighWaterMark, readableSizeAlgorithm) {\n function startAlgorithm() {\n return startPromise;\n }\n function writeAlgorithm(chunk) {\n return TransformStreamDefaultSinkWriteAlgorithm(stream, chunk);\n }\n function abortAlgorithm(reason) {\n return TransformStreamDefaultSinkAbortAlgorithm(stream, reason);\n }\n function closeAlgorithm() {\n return TransformStreamDefaultSinkCloseAlgorithm(stream);\n }\n stream._writable = CreateWritableStream(startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, writableHighWaterMark, writableSizeAlgorithm);\n function pullAlgorithm() {\n return TransformStreamDefaultSourcePullAlgorithm(stream);\n }\n function cancelAlgorithm(reason) {\n TransformStreamErrorWritableAndUnblockWrite(stream, reason);\n return promiseResolvedWith(undefined);\n }\n stream._readable = CreateReadableStream(startAlgorithm, pullAlgorithm, cancelAlgorithm, readableHighWaterMark, readableSizeAlgorithm);\n stream._backpressure = undefined;\n stream._backpressureChangePromise = undefined;\n stream._backpressureChangePromise_resolve = undefined;\n TransformStreamSetBackpressure(stream, true);\n stream._transformStreamController = undefined;\n }\n function IsTransformStream(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_transformStreamController')) {\n return false;\n }\n return true;\n }\n function TransformStreamError(stream, e) {\n ReadableStreamDefaultControllerError(stream._readable._readableStreamController, e);\n TransformStreamErrorWritableAndUnblockWrite(stream, e);\n }\n function TransformStreamErrorWritableAndUnblockWrite(stream, e) {\n TransformStreamDefaultControllerClearAlgorithms(stream._transformStreamController);\n WritableStreamDefaultControllerErrorIfNeeded(stream._writable._writableStreamController, e);\n if (stream._backpressure === true) {\n TransformStreamSetBackpressure(stream, false);\n }\n }\n function TransformStreamSetBackpressure(stream, backpressure) {\n if (stream._backpressureChangePromise !== undefined) {\n stream._backpressureChangePromise_resolve();\n }\n stream._backpressureChangePromise = newPromise(function (resolve) {\n stream._backpressureChangePromise_resolve = resolve;\n });\n stream._backpressure = backpressure;\n }\n var TransformStreamDefaultController = function () {\n function TransformStreamDefaultController() {\n throw new TypeError('TransformStreamDefaultController instances cannot be created directly');\n }\n Object.defineProperty(TransformStreamDefaultController.prototype, \"desiredSize\", {\n get: function () {\n if (IsTransformStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException$1('desiredSize');\n }\n var readableController = this._controlledTransformStream._readable._readableStreamController;\n return ReadableStreamDefaultControllerGetDesiredSize(readableController);\n },\n enumerable: true,\n configurable: true\n });\n TransformStreamDefaultController.prototype.enqueue = function (chunk) {\n if (IsTransformStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException$1('enqueue');\n }\n TransformStreamDefaultControllerEnqueue(this, chunk);\n };\n TransformStreamDefaultController.prototype.error = function (reason) {\n if (IsTransformStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException$1('error');\n }\n TransformStreamDefaultControllerError(this, reason);\n };\n TransformStreamDefaultController.prototype.terminate = function () {\n if (IsTransformStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException$1('terminate');\n }\n TransformStreamDefaultControllerTerminate(this);\n };\n return TransformStreamDefaultController;\n }();\n function IsTransformStreamDefaultController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_controlledTransformStream')) {\n return false;\n }\n return true;\n }\n function SetUpTransformStreamDefaultController(stream, controller, transformAlgorithm, flushAlgorithm) {\n controller._controlledTransformStream = stream;\n stream._transformStreamController = controller;\n controller._transformAlgorithm = transformAlgorithm;\n controller._flushAlgorithm = flushAlgorithm;\n }\n function SetUpTransformStreamDefaultControllerFromTransformer(stream, transformer) {\n var controller = Object.create(TransformStreamDefaultController.prototype);\n var transformAlgorithm = function (chunk) {\n try {\n TransformStreamDefaultControllerEnqueue(controller, chunk);\n return promiseResolvedWith(undefined);\n } catch (transformResultE) {\n return promiseRejectedWith(transformResultE);\n }\n };\n var transformMethod = transformer.transform;\n if (transformMethod !== undefined) {\n if (typeof transformMethod !== 'function') {\n throw new TypeError('transform is not a method');\n }\n transformAlgorithm = function (chunk) {\n return PromiseCall(transformMethod, transformer, [\n chunk,\n controller\n ]);\n };\n }\n var flushAlgorithm = CreateAlgorithmFromUnderlyingMethod(transformer, 'flush', 0, [controller]);\n SetUpTransformStreamDefaultController(stream, controller, transformAlgorithm, flushAlgorithm);\n }\n function TransformStreamDefaultControllerClearAlgorithms(controller) {\n controller._transformAlgorithm = undefined;\n controller._flushAlgorithm = undefined;\n }\n function TransformStreamDefaultControllerEnqueue(controller, chunk) {\n var stream = controller._controlledTransformStream;\n var readableController = stream._readable._readableStreamController;\n if (ReadableStreamDefaultControllerCanCloseOrEnqueue(readableController) === false) {\n throw new TypeError('Readable side is not in a state that permits enqueue');\n }\n try {\n ReadableStreamDefaultControllerEnqueue(readableController, chunk);\n } catch (e) {\n TransformStreamErrorWritableAndUnblockWrite(stream, e);\n throw stream._readable._storedError;\n }\n var backpressure = ReadableStreamDefaultControllerHasBackpressure(readableController);\n if (backpressure !== stream._backpressure) {\n TransformStreamSetBackpressure(stream, true);\n }\n }\n function TransformStreamDefaultControllerError(controller, e) {\n TransformStreamError(controller._controlledTransformStream, e);\n }\n function TransformStreamDefaultControllerPerformTransform(controller, chunk) {\n var transformPromise = controller._transformAlgorithm(chunk);\n return transformPromiseWith(transformPromise, undefined, function (r) {\n TransformStreamError(controller._controlledTransformStream, r);\n throw r;\n });\n }\n function TransformStreamDefaultControllerTerminate(controller) {\n var stream = controller._controlledTransformStream;\n var readableController = stream._readable._readableStreamController;\n if (ReadableStreamDefaultControllerCanCloseOrEnqueue(readableController) === true) {\n ReadableStreamDefaultControllerClose(readableController);\n }\n var error = new TypeError('TransformStream terminated');\n TransformStreamErrorWritableAndUnblockWrite(stream, error);\n }\n function TransformStreamDefaultSinkWriteAlgorithm(stream, chunk) {\n var controller = stream._transformStreamController;\n if (stream._backpressure === true) {\n var backpressureChangePromise = stream._backpressureChangePromise;\n return transformPromiseWith(backpressureChangePromise, function () {\n var writable = stream._writable;\n var state = writable._state;\n if (state === 'erroring') {\n throw writable._storedError;\n }\n return TransformStreamDefaultControllerPerformTransform(controller, chunk);\n });\n }\n return TransformStreamDefaultControllerPerformTransform(controller, chunk);\n }\n function TransformStreamDefaultSinkAbortAlgorithm(stream, reason) {\n TransformStreamError(stream, reason);\n return promiseResolvedWith(undefined);\n }\n function TransformStreamDefaultSinkCloseAlgorithm(stream) {\n var readable = stream._readable;\n var controller = stream._transformStreamController;\n var flushPromise = controller._flushAlgorithm();\n TransformStreamDefaultControllerClearAlgorithms(controller);\n return transformPromiseWith(flushPromise, function () {\n if (readable._state === 'errored') {\n throw readable._storedError;\n }\n var readableController = readable._readableStreamController;\n if (ReadableStreamDefaultControllerCanCloseOrEnqueue(readableController) === true) {\n ReadableStreamDefaultControllerClose(readableController);\n }\n }, function (r) {\n TransformStreamError(stream, r);\n throw readable._storedError;\n });\n }\n function TransformStreamDefaultSourcePullAlgorithm(stream) {\n TransformStreamSetBackpressure(stream, false);\n return stream._backpressureChangePromise;\n }\n function defaultControllerBrandCheckException$1(name) {\n return new TypeError(\"TransformStreamDefaultController.prototype.\" + name + \" can only be used on a TransformStreamDefaultController\");\n }\n function streamBrandCheckException$2(name) {\n return new TypeError(\"TransformStream.prototype.\" + name + \" can only be used on a TransformStream\");\n }\n exports.ByteLengthQueuingStrategy = ByteLengthQueuingStrategy;\n exports.CountQueuingStrategy = CountQueuingStrategy;\n exports.ReadableStream = ReadableStream;\n exports.TransformStream = TransformStream;\n exports.WritableStream = WritableStream;\n Object.defineProperty(exports, '__esModule', { value: true });\n}));\n\n/***/ }),\n/* 144 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(145);\n__w_pdfjs_require__(114);\n__w_pdfjs_require__(77);\n__w_pdfjs_require__(116);\nvar path = __w_pdfjs_require__(43);\nmodule.exports = path.Map;\n\n/***/ }),\n/* 145 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar collection = __w_pdfjs_require__(146);\nvar collectionStrong = __w_pdfjs_require__(150);\nmodule.exports = collection('Map', function (init) {\n return function Map() {\n return init(this, arguments.length ? arguments[0] : undefined);\n };\n}, collectionStrong);\n\n/***/ }),\n/* 146 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar $ = __w_pdfjs_require__(10);\nvar global = __w_pdfjs_require__(11);\nvar isForced = __w_pdfjs_require__(52);\nvar redefine = __w_pdfjs_require__(29);\nvar InternalMetadataModule = __w_pdfjs_require__(147);\nvar iterate = __w_pdfjs_require__(124);\nvar anInstance = __w_pdfjs_require__(123);\nvar isObject = __w_pdfjs_require__(22);\nvar fails = __w_pdfjs_require__(14);\nvar checkCorrectnessOfIteration = __w_pdfjs_require__(97);\nvar setToStringTag = __w_pdfjs_require__(85);\nvar inheritIfRequired = __w_pdfjs_require__(149);\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n var ADDER = IS_MAP ? 'set' : 'add';\n var NativeConstructor = global[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var Constructor = NativeConstructor;\n var exported = {};\n var fixMethod = function (KEY) {\n var nativeMethod = NativePrototype[KEY];\n redefine(NativePrototype, KEY, KEY == 'add' ? function add(value) {\n nativeMethod.call(this, value === 0 ? 0 : value);\n return this;\n } : KEY == 'delete' ? function (key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'get' ? function get(key) {\n return IS_WEAK && !isObject(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'has' ? function has(key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : function set(key, value) {\n nativeMethod.call(this, key === 0 ? 0 : key, value);\n return this;\n });\n };\n if (isForced(CONSTRUCTOR_NAME, typeof NativeConstructor != 'function' || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n new NativeConstructor().entries().next();\n })))) {\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.REQUIRED = true;\n } else if (isForced(CONSTRUCTOR_NAME, true)) {\n var instance = new Constructor();\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n var THROWS_ON_PRIMITIVES = fails(function () {\n instance.has(1);\n });\n var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) {\n new NativeConstructor(iterable);\n });\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n var $instance = new NativeConstructor();\n var index = 5;\n while (index--)\n $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n if (!ACCEPT_ITERABLES) {\n Constructor = wrapper(function (dummy, iterable) {\n anInstance(dummy, Constructor, CONSTRUCTOR_NAME);\n var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n if (iterable != undefined)\n iterate(iterable, that[ADDER], that, IS_MAP);\n return that;\n });\n Constructor.prototype = NativePrototype;\n NativePrototype.constructor = Constructor;\n }\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n if (BUGGY_ZERO || HASNT_CHAINING)\n fixMethod(ADDER);\n if (IS_WEAK && NativePrototype.clear)\n delete NativePrototype.clear;\n }\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({\n global: true,\n forced: Constructor != NativeConstructor\n }, exported);\n setToStringTag(Constructor, CONSTRUCTOR_NAME);\n if (!IS_WEAK)\n common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n return Constructor;\n};\n\n/***/ }),\n/* 147 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar hiddenKeys = __w_pdfjs_require__(39);\nvar isObject = __w_pdfjs_require__(22);\nvar has = __w_pdfjs_require__(23);\nvar defineProperty = __w_pdfjs_require__(27).f;\nvar uid = __w_pdfjs_require__(38);\nvar FREEZING = __w_pdfjs_require__(148);\nvar METADATA = uid('meta');\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar setMetadata = function (it) {\n defineProperty(it, METADATA, {\n value: {\n objectID: 'O' + ++id,\n weakData: {}\n }\n });\n};\nvar fastKey = function (it, create) {\n if (!isObject(it))\n return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, METADATA)) {\n if (!isExtensible(it))\n return 'F';\n if (!create)\n return 'E';\n setMetadata(it);\n }\n return it[METADATA].objectID;\n};\nvar getWeakData = function (it, create) {\n if (!has(it, METADATA)) {\n if (!isExtensible(it))\n return true;\n if (!create)\n return false;\n setMetadata(it);\n }\n return it[METADATA].weakData;\n};\nvar onFreeze = function (it) {\n if (FREEZING && meta.REQUIRED && isExtensible(it) && !has(it, METADATA))\n setMetadata(it);\n return it;\n};\nvar meta = module.exports = {\n REQUIRED: false,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\nhiddenKeys[METADATA] = true;\n\n/***/ }),\n/* 148 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar fails = __w_pdfjs_require__(14);\nmodule.exports = !fails(function () {\n return Object.isExtensible(Object.preventExtensions({}));\n});\n\n/***/ }),\n/* 149 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar isObject = __w_pdfjs_require__(22);\nvar setPrototypeOf = __w_pdfjs_require__(87);\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (setPrototypeOf && typeof (NewTarget = dummy.constructor) == 'function' && NewTarget !== Wrapper && isObject(NewTargetPrototype = NewTarget.prototype) && NewTargetPrototype !== Wrapper.prototype)\n setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n\n/***/ }),\n/* 150 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar defineProperty = __w_pdfjs_require__(27).f;\nvar create = __w_pdfjs_require__(71);\nvar redefineAll = __w_pdfjs_require__(121);\nvar bind = __w_pdfjs_require__(62);\nvar anInstance = __w_pdfjs_require__(123);\nvar iterate = __w_pdfjs_require__(124);\nvar defineIterator = __w_pdfjs_require__(79);\nvar setSpecies = __w_pdfjs_require__(122);\nvar DESCRIPTORS = __w_pdfjs_require__(13);\nvar fastKey = __w_pdfjs_require__(147).fastKey;\nvar InternalStateModule = __w_pdfjs_require__(33);\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, CONSTRUCTOR_NAME);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n index: create(null),\n first: undefined,\n last: undefined,\n size: 0\n });\n if (!DESCRIPTORS)\n that.size = 0;\n if (iterable != undefined)\n iterate(iterable, that[ADDER], that, IS_MAP);\n });\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n var previous, index;\n if (entry) {\n entry.value = value;\n } else {\n state.last = entry = {\n index: index = fastKey(key, true),\n key: key,\n value: value,\n previous: previous = state.last,\n next: undefined,\n removed: false\n };\n if (!state.first)\n state.first = entry;\n if (previous)\n previous.next = entry;\n if (DESCRIPTORS)\n state.size++;\n else\n that.size++;\n if (index !== 'F')\n state.index[index] = entry;\n }\n return that;\n };\n var getEntry = function (that, key) {\n var state = getInternalState(that);\n var index = fastKey(key);\n var entry;\n if (index !== 'F')\n return state.index[index];\n for (entry = state.first; entry; entry = entry.next) {\n if (entry.key == key)\n return entry;\n }\n };\n redefineAll(C.prototype, {\n clear: function clear() {\n var that = this;\n var state = getInternalState(that);\n var data = state.index;\n var entry = state.first;\n while (entry) {\n entry.removed = true;\n if (entry.previous)\n entry.previous = entry.previous.next = undefined;\n delete data[entry.index];\n entry = entry.next;\n }\n state.first = state.last = undefined;\n if (DESCRIPTORS)\n state.size = 0;\n else\n that.size = 0;\n },\n 'delete': function (key) {\n var that = this;\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.next;\n var prev = entry.previous;\n delete state.index[entry.index];\n entry.removed = true;\n if (prev)\n prev.next = next;\n if (next)\n next.previous = prev;\n if (state.first == entry)\n state.first = next;\n if (state.last == entry)\n state.last = prev;\n if (DESCRIPTORS)\n state.size--;\n else\n that.size--;\n }\n return !!entry;\n },\n forEach: function forEach(callbackfn) {\n var state = getInternalState(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.next : state.first) {\n boundFunction(entry.value, entry.key, this);\n while (entry && entry.removed)\n entry = entry.previous;\n }\n },\n has: function has(key) {\n return !!getEntry(this, key);\n }\n });\n redefineAll(C.prototype, IS_MAP ? {\n get: function get(key) {\n var entry = getEntry(this, key);\n return entry && entry.value;\n },\n set: function set(key, value) {\n return define(this, key === 0 ? 0 : key, value);\n }\n } : {\n add: function add(value) {\n return define(this, value = value === 0 ? 0 : value, value);\n }\n });\n if (DESCRIPTORS)\n defineProperty(C.prototype, 'size', {\n get: function () {\n return getInternalState(this).size;\n }\n });\n return C;\n },\n setStrong: function (C, CONSTRUCTOR_NAME, IS_MAP) {\n var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n defineIterator(C, CONSTRUCTOR_NAME, function (iterated, kind) {\n setInternalState(this, {\n type: ITERATOR_NAME,\n target: iterated,\n state: getInternalCollectionState(iterated),\n kind: kind,\n last: undefined\n });\n }, function () {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var entry = state.last;\n while (entry && entry.removed)\n entry = entry.previous;\n if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n state.target = undefined;\n return {\n value: undefined,\n done: true\n };\n }\n if (kind == 'keys')\n return {\n value: entry.key,\n done: false\n };\n if (kind == 'values')\n return {\n value: entry.value,\n done: false\n };\n return {\n value: [\n entry.key,\n entry.value\n ],\n done: false\n };\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n setSpecies(CONSTRUCTOR_NAME);\n }\n};\n\n/***/ }),\n/* 151 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(152);\n__w_pdfjs_require__(114);\n__w_pdfjs_require__(77);\n__w_pdfjs_require__(116);\nvar path = __w_pdfjs_require__(43);\nmodule.exports = path.Set;\n\n/***/ }),\n/* 152 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar collection = __w_pdfjs_require__(146);\nvar collectionStrong = __w_pdfjs_require__(150);\nmodule.exports = collection('Set', function (init) {\n return function Set() {\n return init(this, arguments.length ? arguments[0] : undefined);\n };\n}, collectionStrong);\n\n/***/ }),\n/* 153 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(114);\n__w_pdfjs_require__(154);\n__w_pdfjs_require__(116);\nvar path = __w_pdfjs_require__(43);\nmodule.exports = path.WeakMap;\n\n/***/ }),\n/* 154 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar global = __w_pdfjs_require__(11);\nvar redefineAll = __w_pdfjs_require__(121);\nvar InternalMetadataModule = __w_pdfjs_require__(147);\nvar collection = __w_pdfjs_require__(146);\nvar collectionWeak = __w_pdfjs_require__(155);\nvar isObject = __w_pdfjs_require__(22);\nvar enforceIternalState = __w_pdfjs_require__(33).enforce;\nvar NATIVE_WEAK_MAP = __w_pdfjs_require__(34);\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\nvar isExtensible = Object.isExtensible;\nvar InternalWeakMap;\nvar wrapper = function (init) {\n return function WeakMap() {\n return init(this, arguments.length ? arguments[0] : undefined);\n };\n};\nvar $WeakMap = module.exports = collection('WeakMap', wrapper, collectionWeak);\nif (NATIVE_WEAK_MAP && IS_IE11) {\n InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true);\n InternalMetadataModule.REQUIRED = true;\n var WeakMapPrototype = $WeakMap.prototype;\n var nativeDelete = WeakMapPrototype['delete'];\n var nativeHas = WeakMapPrototype.has;\n var nativeGet = WeakMapPrototype.get;\n var nativeSet = WeakMapPrototype.set;\n redefineAll(WeakMapPrototype, {\n 'delete': function (key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceIternalState(this);\n if (!state.frozen)\n state.frozen = new InternalWeakMap();\n return nativeDelete.call(this, key) || state.frozen['delete'](key);\n }\n return nativeDelete.call(this, key);\n },\n has: function has(key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceIternalState(this);\n if (!state.frozen)\n state.frozen = new InternalWeakMap();\n return nativeHas.call(this, key) || state.frozen.has(key);\n }\n return nativeHas.call(this, key);\n },\n get: function get(key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceIternalState(this);\n if (!state.frozen)\n state.frozen = new InternalWeakMap();\n return nativeHas.call(this, key) ? nativeGet.call(this, key) : state.frozen.get(key);\n }\n return nativeGet.call(this, key);\n },\n set: function set(key, value) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceIternalState(this);\n if (!state.frozen)\n state.frozen = new InternalWeakMap();\n nativeHas.call(this, key) ? nativeSet.call(this, key, value) : state.frozen.set(key, value);\n } else\n nativeSet.call(this, key, value);\n return this;\n }\n });\n}\n\n/***/ }),\n/* 155 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar redefineAll = __w_pdfjs_require__(121);\nvar getWeakData = __w_pdfjs_require__(147).getWeakData;\nvar anObject = __w_pdfjs_require__(28);\nvar isObject = __w_pdfjs_require__(22);\nvar anInstance = __w_pdfjs_require__(123);\nvar iterate = __w_pdfjs_require__(124);\nvar ArrayIterationModule = __w_pdfjs_require__(156);\nvar $has = __w_pdfjs_require__(23);\nvar InternalStateModule = __w_pdfjs_require__(33);\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\nvar find = ArrayIterationModule.find;\nvar findIndex = ArrayIterationModule.findIndex;\nvar id = 0;\nvar uncaughtFrozenStore = function (store) {\n return store.frozen || (store.frozen = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n this.entries = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n return find(store.entries, function (it) {\n return it[0] === key;\n });\n};\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry)\n return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry)\n entry[1] = value;\n else\n this.entries.push([\n key,\n value\n ]);\n },\n 'delete': function (key) {\n var index = findIndex(this.entries, function (it) {\n return it[0] === key;\n });\n if (~index)\n this.entries.splice(index, 1);\n return !!~index;\n }\n};\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, CONSTRUCTOR_NAME);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n id: id++,\n frozen: undefined\n });\n if (iterable != undefined)\n iterate(iterable, that[ADDER], that, IS_MAP);\n });\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var data = getWeakData(anObject(key), true);\n if (data === true)\n uncaughtFrozenStore(state).set(key, value);\n else\n data[state.id] = value;\n return that;\n };\n redefineAll(C.prototype, {\n 'delete': function (key) {\n var state = getInternalState(this);\n if (!isObject(key))\n return false;\n var data = getWeakData(key);\n if (data === true)\n return uncaughtFrozenStore(state)['delete'](key);\n return data && $has(data, state.id) && delete data[state.id];\n },\n has: function has(key) {\n var state = getInternalState(this);\n if (!isObject(key))\n return false;\n var data = getWeakData(key);\n if (data === true)\n return uncaughtFrozenStore(state).has(key);\n return data && $has(data, state.id);\n }\n });\n redefineAll(C.prototype, IS_MAP ? {\n get: function get(key) {\n var state = getInternalState(this);\n if (isObject(key)) {\n var data = getWeakData(key);\n if (data === true)\n return uncaughtFrozenStore(state).get(key);\n return data ? data[state.id] : undefined;\n }\n },\n set: function set(key, value) {\n return define(this, key, value);\n }\n } : {\n add: function add(value) {\n return define(this, value, true);\n }\n });\n return C;\n }\n};\n\n/***/ }),\n/* 156 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar bind = __w_pdfjs_require__(62);\nvar IndexedObject = __w_pdfjs_require__(18);\nvar toObject = __w_pdfjs_require__(83);\nvar toLength = __w_pdfjs_require__(47);\nvar arraySpeciesCreate = __w_pdfjs_require__(157);\nvar push = [].push;\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var value, result;\n for (; length > index; index++)\n if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP)\n target[index] = result;\n else if (result)\n switch (TYPE) {\n case 3:\n return true;\n case 5:\n return value;\n case 6:\n return index;\n case 2:\n push.call(target, value);\n }\n else if (IS_EVERY)\n return false;\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\nmodule.exports = {\n forEach: createMethod(0),\n map: createMethod(1),\n filter: createMethod(2),\n some: createMethod(3),\n every: createMethod(4),\n find: createMethod(5),\n findIndex: createMethod(6)\n};\n\n/***/ }),\n/* 157 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar isObject = __w_pdfjs_require__(22);\nvar isArray = __w_pdfjs_require__(158);\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar SPECIES = wellKnownSymbol('species');\nmodule.exports = function (originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n if (typeof C == 'function' && (C === Array || isArray(C.prototype)))\n C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null)\n C = undefined;\n }\n }\n return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n\n/***/ }),\n/* 158 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar classof = __w_pdfjs_require__(19);\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n\n/***/ }),\n/* 159 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(114);\n__w_pdfjs_require__(160);\n__w_pdfjs_require__(116);\nvar path = __w_pdfjs_require__(43);\nmodule.exports = path.WeakSet;\n\n/***/ }),\n/* 160 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar collection = __w_pdfjs_require__(146);\nvar collectionWeak = __w_pdfjs_require__(155);\ncollection('WeakSet', function (init) {\n return function WeakSet() {\n return init(this, arguments.length ? arguments[0] : undefined);\n };\n}, collectionWeak);\n\n/***/ }),\n/* 161 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(162);\nvar entryUnbind = __w_pdfjs_require__(61);\nmodule.exports = entryUnbind('String', 'codePointAt');\n\n/***/ }),\n/* 162 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar $ = __w_pdfjs_require__(10);\nvar codeAt = __w_pdfjs_require__(78).codeAt;\n$({\n target: 'String',\n proto: true\n}, {\n codePointAt: function codePointAt(pos) {\n return codeAt(this, pos);\n }\n});\n\n/***/ }),\n/* 163 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(164);\nvar path = __w_pdfjs_require__(43);\nmodule.exports = path.String.fromCodePoint;\n\n/***/ }),\n/* 164 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar $ = __w_pdfjs_require__(10);\nvar toAbsoluteIndex = __w_pdfjs_require__(49);\nvar fromCharCode = String.fromCharCode;\nvar nativeFromCodePoint = String.fromCodePoint;\nvar INCORRECT_LENGTH = !!nativeFromCodePoint && nativeFromCodePoint.length != 1;\n$({\n target: 'String',\n stat: true,\n forced: INCORRECT_LENGTH\n}, {\n fromCodePoint: function fromCodePoint(x) {\n var elements = [];\n var length = arguments.length;\n var i = 0;\n var code;\n while (length > i) {\n code = +arguments[i++];\n if (toAbsoluteIndex(code, 0x10FFFF) !== code)\n throw RangeError(code + ' is not a valid code point');\n elements.push(code < 0x10000 ? fromCharCode(code) : fromCharCode(((code -= 0x10000) >> 10) + 0xD800, code % 0x400 + 0xDC00));\n }\n return elements.join('');\n }\n});\n\n/***/ }),\n/* 165 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(166);\n__w_pdfjs_require__(114);\n__w_pdfjs_require__(168);\n__w_pdfjs_require__(172);\n__w_pdfjs_require__(173);\n__w_pdfjs_require__(174);\n__w_pdfjs_require__(175);\n__w_pdfjs_require__(176);\n__w_pdfjs_require__(177);\n__w_pdfjs_require__(178);\n__w_pdfjs_require__(179);\n__w_pdfjs_require__(180);\n__w_pdfjs_require__(181);\n__w_pdfjs_require__(182);\n__w_pdfjs_require__(183);\n__w_pdfjs_require__(184);\n__w_pdfjs_require__(185);\n__w_pdfjs_require__(186);\n__w_pdfjs_require__(187);\nvar path = __w_pdfjs_require__(43);\nmodule.exports = path.Symbol;\n\n/***/ }),\n/* 166 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar $ = __w_pdfjs_require__(10);\nvar fails = __w_pdfjs_require__(14);\nvar isArray = __w_pdfjs_require__(158);\nvar isObject = __w_pdfjs_require__(22);\nvar toObject = __w_pdfjs_require__(83);\nvar toLength = __w_pdfjs_require__(47);\nvar createProperty = __w_pdfjs_require__(93);\nvar arraySpeciesCreate = __w_pdfjs_require__(157);\nvar arrayMethodHasSpeciesSupport = __w_pdfjs_require__(167);\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar V8_VERSION = __w_pdfjs_require__(133);\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\nvar isConcatSpreadable = function (O) {\n if (!isObject(O))\n return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n$({\n target: 'Array',\n proto: true,\n forced: FORCED\n}, {\n concat: function concat(arg) {\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = toLength(E.length);\n if (n + len > MAX_SAFE_INTEGER)\n throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++)\n if (k in E)\n createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER)\n throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n\n/***/ }),\n/* 167 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar fails = __w_pdfjs_require__(14);\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar V8_VERSION = __w_pdfjs_require__(133);\nvar SPECIES = wellKnownSymbol('species');\nmodule.exports = function (METHOD_NAME) {\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n\n/***/ }),\n/* 168 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar $ = __w_pdfjs_require__(10);\nvar global = __w_pdfjs_require__(11);\nvar getBuiltIn = __w_pdfjs_require__(42);\nvar IS_PURE = __w_pdfjs_require__(37);\nvar DESCRIPTORS = __w_pdfjs_require__(13);\nvar NATIVE_SYMBOL = __w_pdfjs_require__(58);\nvar USE_SYMBOL_AS_UID = __w_pdfjs_require__(59);\nvar fails = __w_pdfjs_require__(14);\nvar has = __w_pdfjs_require__(23);\nvar isArray = __w_pdfjs_require__(158);\nvar isObject = __w_pdfjs_require__(22);\nvar anObject = __w_pdfjs_require__(28);\nvar toObject = __w_pdfjs_require__(83);\nvar toIndexedObject = __w_pdfjs_require__(17);\nvar toPrimitive = __w_pdfjs_require__(21);\nvar createPropertyDescriptor = __w_pdfjs_require__(16);\nvar nativeObjectCreate = __w_pdfjs_require__(71);\nvar objectKeys = __w_pdfjs_require__(73);\nvar getOwnPropertyNamesModule = __w_pdfjs_require__(44);\nvar getOwnPropertyNamesExternal = __w_pdfjs_require__(169);\nvar getOwnPropertySymbolsModule = __w_pdfjs_require__(51);\nvar getOwnPropertyDescriptorModule = __w_pdfjs_require__(12);\nvar definePropertyModule = __w_pdfjs_require__(27);\nvar propertyIsEnumerableModule = __w_pdfjs_require__(15);\nvar createNonEnumerableProperty = __w_pdfjs_require__(26);\nvar redefine = __w_pdfjs_require__(29);\nvar shared = __w_pdfjs_require__(36);\nvar sharedKey = __w_pdfjs_require__(35);\nvar hiddenKeys = __w_pdfjs_require__(39);\nvar uid = __w_pdfjs_require__(38);\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nvar wrappedWellKnownSymbolModule = __w_pdfjs_require__(170);\nvar defineWellKnownSymbol = __w_pdfjs_require__(171);\nvar setToStringTag = __w_pdfjs_require__(85);\nvar InternalStateModule = __w_pdfjs_require__(33);\nvar $forEach = __w_pdfjs_require__(156).forEach;\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\nvar QObject = global.QObject;\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () {\n return nativeDefineProperty(this, 'a', { value: 7 }).a;\n }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor)\n delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS)\n symbol.description = description;\n return symbol;\n};\nvar isSymbol = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return Object(it) instanceof $Symbol;\n};\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype)\n $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPrimitive(P, true);\n anObject(Attributes);\n if (has(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!has(O, HIDDEN))\n nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (has(O, HIDDEN) && O[HIDDEN][key])\n O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n }\n return setSymbolDescriptor(O, key, Attributes);\n }\n return nativeDefineProperty(O, key, Attributes);\n};\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key))\n $defineProperty(O, key, properties[key]);\n });\n return O;\n};\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPrimitive(V, true);\n var enumerable = nativePropertyIsEnumerable.call(this, P);\n if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P))\n return false;\n return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPrimitive(P, true);\n if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key))\n return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!has(AllSymbols, key) && !has(hiddenKeys, key))\n result.push(key);\n });\n return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {\n result.push(AllSymbols[key]);\n }\n });\n return result;\n};\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol)\n throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype)\n setter.call(ObjectPrototypeSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag))\n this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER)\n setSymbolDescriptor(ObjectPrototype, tag, {\n configurable: true,\n set: setter\n });\n return wrap(tag, description);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return getInternalState(this).tag;\n });\n redefine($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n if (DESCRIPTORS) {\n nativeDefineProperty($Symbol[PROTOTYPE], 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n$({\n global: true,\n wrap: true,\n forced: !NATIVE_SYMBOL,\n sham: !NATIVE_SYMBOL\n}, { Symbol: $Symbol });\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n$({\n target: SYMBOL,\n stat: true,\n forced: !NATIVE_SYMBOL\n}, {\n 'for': function (key) {\n var string = String(key);\n if (has(StringToSymbolRegistry, string))\n return StringToSymbolRegistry[string];\n var symbol = $Symbol(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n },\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym))\n throw TypeError(sym + ' is not a symbol');\n if (has(SymbolToStringRegistry, sym))\n return SymbolToStringRegistry[sym];\n },\n useSetter: function () {\n USE_SETTER = true;\n },\n useSimple: function () {\n USE_SETTER = false;\n }\n});\n$({\n target: 'Object',\n stat: true,\n forced: !NATIVE_SYMBOL,\n sham: !DESCRIPTORS\n}, {\n create: $create,\n defineProperty: $defineProperty,\n defineProperties: $defineProperties,\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n$({\n target: 'Object',\n stat: true,\n forced: !NATIVE_SYMBOL\n}, {\n getOwnPropertyNames: $getOwnPropertyNames,\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n$({\n target: 'Object',\n stat: true,\n forced: fails(function () {\n getOwnPropertySymbolsModule.f(1);\n })\n}, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return getOwnPropertySymbolsModule.f(toObject(it));\n }\n});\nif ($stringify) {\n var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {\n var symbol = $Symbol();\n return $stringify([symbol]) != '[null]' || $stringify({ a: symbol }) != '{}' || $stringify(Object(symbol)) != '{}';\n });\n $({\n target: 'JSON',\n stat: true,\n forced: FORCED_JSON_STRINGIFY\n }, {\n stringify: function stringify(it, replacer, space) {\n var args = [it];\n var index = 1;\n var $replacer;\n while (arguments.length > index)\n args.push(arguments[index++]);\n $replacer = replacer;\n if (!isObject(replacer) && it === undefined || isSymbol(it))\n return;\n if (!isArray(replacer))\n replacer = function (key, value) {\n if (typeof $replacer == 'function')\n value = $replacer.call(this, key, value);\n if (!isSymbol(value))\n return value;\n };\n args[1] = replacer;\n return $stringify.apply(null, args);\n }\n });\n}\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {\n createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n}\nsetToStringTag($Symbol, SYMBOL);\nhiddenKeys[HIDDEN] = true;\n\n/***/ }),\n/* 169 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar toIndexedObject = __w_pdfjs_require__(17);\nvar nativeGetOwnPropertyNames = __w_pdfjs_require__(44).f;\nvar toString = {}.toString;\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [];\nvar getWindowNames = function (it) {\n try {\n return nativeGetOwnPropertyNames(it);\n } catch (error) {\n return windowNames.slice();\n }\n};\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : nativeGetOwnPropertyNames(toIndexedObject(it));\n};\n\n/***/ }),\n/* 170 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar wellKnownSymbol = __w_pdfjs_require__(57);\nexports.f = wellKnownSymbol;\n\n/***/ }),\n/* 171 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar path = __w_pdfjs_require__(43);\nvar has = __w_pdfjs_require__(23);\nvar wrappedWellKnownSymbolModule = __w_pdfjs_require__(170);\nvar defineProperty = __w_pdfjs_require__(27).f;\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!has(Symbol, NAME))\n defineProperty(Symbol, NAME, { value: wrappedWellKnownSymbolModule.f(NAME) });\n};\n\n/***/ }),\n/* 172 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar defineWellKnownSymbol = __w_pdfjs_require__(171);\ndefineWellKnownSymbol('asyncIterator');\n\n/***/ }),\n/* 173 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar $ = __w_pdfjs_require__(10);\nvar DESCRIPTORS = __w_pdfjs_require__(13);\nvar global = __w_pdfjs_require__(11);\nvar has = __w_pdfjs_require__(23);\nvar isObject = __w_pdfjs_require__(22);\nvar defineProperty = __w_pdfjs_require__(27).f;\nvar copyConstructorProperties = __w_pdfjs_require__(40);\nvar NativeSymbol = global.Symbol;\nif (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) || NativeSymbol().description !== undefined)) {\n var EmptyStringDescriptionStore = {};\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);\n var result = this instanceof SymbolWrapper ? new NativeSymbol(description) : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '')\n EmptyStringDescriptionStore[result] = true;\n return result;\n };\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;\n symbolPrototype.constructor = SymbolWrapper;\n var symbolToString = symbolPrototype.toString;\n var native = String(NativeSymbol('test')) == 'Symbol(test)';\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n defineProperty(symbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = isObject(this) ? this.valueOf() : this;\n var string = symbolToString.call(symbol);\n if (has(EmptyStringDescriptionStore, symbol))\n return '';\n var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n $({\n global: true,\n forced: true\n }, { Symbol: SymbolWrapper });\n}\n\n/***/ }),\n/* 174 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar defineWellKnownSymbol = __w_pdfjs_require__(171);\ndefineWellKnownSymbol('hasInstance');\n\n/***/ }),\n/* 175 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar defineWellKnownSymbol = __w_pdfjs_require__(171);\ndefineWellKnownSymbol('isConcatSpreadable');\n\n/***/ }),\n/* 176 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar defineWellKnownSymbol = __w_pdfjs_require__(171);\ndefineWellKnownSymbol('iterator');\n\n/***/ }),\n/* 177 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar defineWellKnownSymbol = __w_pdfjs_require__(171);\ndefineWellKnownSymbol('match');\n\n/***/ }),\n/* 178 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar defineWellKnownSymbol = __w_pdfjs_require__(171);\ndefineWellKnownSymbol('matchAll');\n\n/***/ }),\n/* 179 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar defineWellKnownSymbol = __w_pdfjs_require__(171);\ndefineWellKnownSymbol('replace');\n\n/***/ }),\n/* 180 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar defineWellKnownSymbol = __w_pdfjs_require__(171);\ndefineWellKnownSymbol('search');\n\n/***/ }),\n/* 181 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar defineWellKnownSymbol = __w_pdfjs_require__(171);\ndefineWellKnownSymbol('species');\n\n/***/ }),\n/* 182 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar defineWellKnownSymbol = __w_pdfjs_require__(171);\ndefineWellKnownSymbol('split');\n\n/***/ }),\n/* 183 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar defineWellKnownSymbol = __w_pdfjs_require__(171);\ndefineWellKnownSymbol('toPrimitive');\n\n/***/ }),\n/* 184 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar defineWellKnownSymbol = __w_pdfjs_require__(171);\ndefineWellKnownSymbol('toStringTag');\n\n/***/ }),\n/* 185 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar defineWellKnownSymbol = __w_pdfjs_require__(171);\ndefineWellKnownSymbol('unscopables');\n\n/***/ }),\n/* 186 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar setToStringTag = __w_pdfjs_require__(85);\nsetToStringTag(Math, 'Math', true);\n\n/***/ }),\n/* 187 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar global = __w_pdfjs_require__(11);\nvar setToStringTag = __w_pdfjs_require__(85);\nsetToStringTag(global.JSON, 'JSON', true);\n\n/***/ }),\n/* 188 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(189);\nvar entryUnbind = __w_pdfjs_require__(61);\nmodule.exports = entryUnbind('String', 'padStart');\n\n/***/ }),\n/* 189 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar $ = __w_pdfjs_require__(10);\nvar $padStart = __w_pdfjs_require__(190).start;\nvar WEBKIT_BUG = __w_pdfjs_require__(192);\n$({\n target: 'String',\n proto: true,\n forced: WEBKIT_BUG\n}, {\n padStart: function padStart(maxLength) {\n return $padStart(this, maxLength, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n/***/ }),\n/* 190 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar toLength = __w_pdfjs_require__(47);\nvar repeat = __w_pdfjs_require__(191);\nvar requireObjectCoercible = __w_pdfjs_require__(20);\nvar ceil = Math.ceil;\nvar createMethod = function (IS_END) {\n return function ($this, maxLength, fillString) {\n var S = String(requireObjectCoercible($this));\n var stringLength = S.length;\n var fillStr = fillString === undefined ? ' ' : String(fillString);\n var intMaxLength = toLength(maxLength);\n var fillLen, stringFiller;\n if (intMaxLength <= stringLength || fillStr == '')\n return S;\n fillLen = intMaxLength - stringLength;\n stringFiller = repeat.call(fillStr, ceil(fillLen / fillStr.length));\n if (stringFiller.length > fillLen)\n stringFiller = stringFiller.slice(0, fillLen);\n return IS_END ? S + stringFiller : stringFiller + S;\n };\n};\nmodule.exports = {\n start: createMethod(false),\n end: createMethod(true)\n};\n\n/***/ }),\n/* 191 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar toInteger = __w_pdfjs_require__(48);\nvar requireObjectCoercible = __w_pdfjs_require__(20);\nmodule.exports = ''.repeat || function repeat(count) {\n var str = String(requireObjectCoercible(this));\n var result = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity)\n throw RangeError('Wrong number of repetitions');\n for (; n > 0; (n >>>= 1) && (str += str))\n if (n & 1)\n result += str;\n return result;\n};\n\n/***/ }),\n/* 192 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar userAgent = __w_pdfjs_require__(127);\nmodule.exports = /Version\\/10\\.\\d+(\\.\\d+)?( Mobile\\/\\w+)? Safari\\//.test(userAgent);\n\n/***/ }),\n/* 193 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(194);\nvar entryUnbind = __w_pdfjs_require__(61);\nmodule.exports = entryUnbind('String', 'padEnd');\n\n/***/ }),\n/* 194 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\nvar $ = __w_pdfjs_require__(10);\nvar $padEnd = __w_pdfjs_require__(190).end;\nvar WEBKIT_BUG = __w_pdfjs_require__(192);\n$({\n target: 'String',\n proto: true,\n forced: WEBKIT_BUG\n}, {\n padEnd: function padEnd(maxLength) {\n return $padEnd(this, maxLength, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n/***/ }),\n/* 195 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n__w_pdfjs_require__(196);\nvar path = __w_pdfjs_require__(43);\nmodule.exports = path.Object.values;\n\n/***/ }),\n/* 196 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar $ = __w_pdfjs_require__(10);\nvar $values = __w_pdfjs_require__(197).values;\n$({\n target: 'Object',\n stat: true\n}, {\n values: function values(O) {\n return $values(O);\n }\n});\n\n/***/ }),\n/* 197 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar DESCRIPTORS = __w_pdfjs_require__(13);\nvar objectKeys = __w_pdfjs_require__(73);\nvar toIndexedObject = __w_pdfjs_require__(17);\nvar propertyIsEnumerable = __w_pdfjs_require__(15).f;\nvar createMethod = function (TO_ENTRIES) {\n return function (it) {\n var O = toIndexedObject(it);\n var keys = objectKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(O, key)) {\n result.push(TO_ENTRIES ? [\n key,\n O[key]\n ] : O[key]);\n }\n }\n return result;\n };\n};\nmodule.exports = {\n entries: createMethod(true),\n values: createMethod(false)\n};\n\n/***/ }),\n/* 198 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getDocument = getDocument;\nexports.setPDFNetworkStreamFactory = setPDFNetworkStreamFactory;\nexports.build = exports.version = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFWorker = exports.PDFDataRangeTransport = exports.LoopbackPort = void 0;\n\nvar _regenerator = _interopRequireDefault(__w_pdfjs_require__(2));\n\nvar _util = __w_pdfjs_require__(5);\n\nvar _display_utils = __w_pdfjs_require__(1);\n\nvar _font_loader = __w_pdfjs_require__(199);\n\nvar _api_compatibility = __w_pdfjs_require__(200);\n\nvar _canvas = __w_pdfjs_require__(201);\n\nvar _worker_options = __w_pdfjs_require__(203);\n\nvar _is_node = __w_pdfjs_require__(7);\n\nvar _message_handler = __w_pdfjs_require__(204);\n\nvar _metadata = __w_pdfjs_require__(205);\n\nvar _transport_stream = __w_pdfjs_require__(207);\n\nvar _webgl = __w_pdfjs_require__(208);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar DEFAULT_RANGE_CHUNK_SIZE = 65536;\nvar RENDERING_CANCELLED_TIMEOUT = 100;\nvar createPDFNetworkStream;\n\nfunction setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {\n createPDFNetworkStream = pdfNetworkStreamFactory;\n}\n\nfunction getDocument(src) {\n var task = new PDFDocumentLoadingTask();\n var source;\n\n if (typeof src === \"string\") {\n source = {\n url: src\n };\n } else if ((0, _util.isArrayBuffer)(src)) {\n source = {\n data: src\n };\n } else if (src instanceof PDFDataRangeTransport) {\n source = {\n range: src\n };\n } else {\n if (_typeof(src) !== \"object\") {\n throw new Error(\"Invalid parameter in getDocument, \" + \"need either Uint8Array, string or a parameter object\");\n }\n\n if (!src.url && !src.data && !src.range) {\n throw new Error(\"Invalid parameter object: need either .data, .range or .url\");\n }\n\n source = src;\n }\n\n var params = Object.create(null);\n var rangeTransport = null,\n worker = null;\n\n for (var key in source) {\n if (key === \"url\" && typeof window !== \"undefined\") {\n params[key] = new URL(source[key], window.location).href;\n continue;\n } else if (key === \"range\") {\n rangeTransport = source[key];\n continue;\n } else if (key === \"worker\") {\n worker = source[key];\n continue;\n } else if (key === \"data\" && !(source[key] instanceof Uint8Array)) {\n var pdfBytes = source[key];\n\n if (typeof pdfBytes === \"string\") {\n params[key] = (0, _util.stringToBytes)(pdfBytes);\n } else if (_typeof(pdfBytes) === \"object\" && pdfBytes !== null && !isNaN(pdfBytes.length)) {\n params[key] = new Uint8Array(pdfBytes);\n } else if ((0, _util.isArrayBuffer)(pdfBytes)) {\n params[key] = new Uint8Array(pdfBytes);\n } else {\n throw new Error(\"Invalid PDF binary data: either typed array, \" + \"string or array-like object is expected in the \" + \"data property.\");\n }\n\n continue;\n }\n\n params[key] = source[key];\n }\n\n params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE;\n params.CMapReaderFactory = params.CMapReaderFactory || _display_utils.DOMCMapReaderFactory;\n params.ignoreErrors = params.stopAtErrors !== true;\n params.fontExtraProperties = params.fontExtraProperties === true;\n params.pdfBug = params.pdfBug === true;\n\n if (!Number.isInteger(params.maxImageSize)) {\n params.maxImageSize = -1;\n }\n\n if (typeof params.isEvalSupported !== \"boolean\") {\n params.isEvalSupported = true;\n }\n\n if (typeof params.disableFontFace !== \"boolean\") {\n params.disableFontFace = _api_compatibility.apiCompatibilityParams.disableFontFace || false;\n }\n\n if (typeof params.disableRange !== \"boolean\") {\n params.disableRange = false;\n }\n\n if (typeof params.disableStream !== \"boolean\") {\n params.disableStream = false;\n }\n\n if (typeof params.disableAutoFetch !== \"boolean\") {\n params.disableAutoFetch = false;\n }\n\n (0, _util.setVerbosityLevel)(params.verbosity);\n\n if (!worker) {\n var workerParams = {\n verbosity: params.verbosity,\n port: _worker_options.GlobalWorkerOptions.workerPort\n };\n worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams);\n task._worker = worker;\n }\n\n var docId = task.docId;\n worker.promise.then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n var workerIdPromise = _fetchDocument(worker, params, rangeTransport, docId);\n\n var networkStreamPromise = new Promise(function (resolve) {\n var networkStream;\n\n if (rangeTransport) {\n networkStream = new _transport_stream.PDFDataTransportStream({\n length: params.length,\n initialData: params.initialData,\n progressiveDone: params.progressiveDone,\n disableRange: params.disableRange,\n disableStream: params.disableStream\n }, rangeTransport);\n } else if (!params.data) {\n networkStream = createPDFNetworkStream({\n url: params.url,\n length: params.length,\n httpHeaders: params.httpHeaders,\n withCredentials: params.withCredentials,\n rangeChunkSize: params.rangeChunkSize,\n disableRange: params.disableRange,\n disableStream: params.disableStream\n });\n }\n\n resolve(networkStream);\n });\n return Promise.all([workerIdPromise, networkStreamPromise]).then(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n workerId = _ref2[0],\n networkStream = _ref2[1];\n\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n var messageHandler = new _message_handler.MessageHandler(docId, workerId, worker.port);\n messageHandler.postMessageTransfers = worker.postMessageTransfers;\n var transport = new WorkerTransport(messageHandler, task, networkStream, params);\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n });\n })[\"catch\"](task._capability.reject);\n return task;\n}\n\nfunction _fetchDocument(worker, source, pdfDataRangeTransport, docId) {\n if (worker.destroyed) {\n return Promise.reject(new Error(\"Worker was destroyed\"));\n }\n\n if (pdfDataRangeTransport) {\n source.length = pdfDataRangeTransport.length;\n source.initialData = pdfDataRangeTransport.initialData;\n source.progressiveDone = pdfDataRangeTransport.progressiveDone;\n }\n\n return worker.messageHandler.sendWithPromise(\"GetDocRequest\", {\n docId: docId,\n apiVersion: '2.5.207',\n source: {\n data: source.data,\n url: source.url,\n password: source.password,\n disableAutoFetch: source.disableAutoFetch,\n rangeChunkSize: source.rangeChunkSize,\n length: source.length\n },\n maxImageSize: source.maxImageSize,\n disableFontFace: source.disableFontFace,\n postMessageTransfers: worker.postMessageTransfers,\n docBaseUrl: source.docBaseUrl,\n ignoreErrors: source.ignoreErrors,\n isEvalSupported: source.isEvalSupported,\n fontExtraProperties: source.fontExtraProperties\n }).then(function (workerId) {\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n\n return workerId;\n });\n}\n\nvar PDFDocumentLoadingTask = function PDFDocumentLoadingTaskClosure() {\n var nextDocumentId = 0;\n\n var PDFDocumentLoadingTask = /*#__PURE__*/function () {\n function PDFDocumentLoadingTask() {\n _classCallCheck(this, PDFDocumentLoadingTask);\n\n this._capability = (0, _util.createPromiseCapability)();\n this._transport = null;\n this._worker = null;\n this.docId = \"d\" + nextDocumentId++;\n this.destroyed = false;\n this.onPassword = null;\n this.onProgress = null;\n this.onUnsupportedFeature = null;\n }\n\n _createClass(PDFDocumentLoadingTask, [{\n key: \"destroy\",\n value: function destroy() {\n var _this = this;\n\n this.destroyed = true;\n var transportDestroyed = !this._transport ? Promise.resolve() : this._transport.destroy();\n return transportDestroyed.then(function () {\n _this._transport = null;\n\n if (_this._worker) {\n _this._worker.destroy();\n\n _this._worker = null;\n }\n });\n }\n }, {\n key: \"promise\",\n get: function get() {\n return this._capability.promise;\n }\n }]);\n\n return PDFDocumentLoadingTask;\n }();\n\n return PDFDocumentLoadingTask;\n}();\n\nvar PDFDataRangeTransport = /*#__PURE__*/function () {\n function PDFDataRangeTransport(length, initialData) {\n var progressiveDone = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n _classCallCheck(this, PDFDataRangeTransport);\n\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._progressiveDoneListeners = [];\n this._readyCapability = (0, _util.createPromiseCapability)();\n }\n\n _createClass(PDFDataRangeTransport, [{\n key: \"addRangeListener\",\n value: function addRangeListener(listener) {\n this._rangeListeners.push(listener);\n }\n }, {\n key: \"addProgressListener\",\n value: function addProgressListener(listener) {\n this._progressListeners.push(listener);\n }\n }, {\n key: \"addProgressiveReadListener\",\n value: function addProgressiveReadListener(listener) {\n this._progressiveReadListeners.push(listener);\n }\n }, {\n key: \"addProgressiveDoneListener\",\n value: function addProgressiveDoneListener(listener) {\n this._progressiveDoneListeners.push(listener);\n }\n }, {\n key: \"onDataRange\",\n value: function onDataRange(begin, chunk) {\n var _iterator = _createForOfIteratorHelper(this._rangeListeners),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var listener = _step.value;\n listener(begin, chunk);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n }, {\n key: \"onDataProgress\",\n value: function onDataProgress(loaded, total) {\n var _this2 = this;\n\n this._readyCapability.promise.then(function () {\n var _iterator2 = _createForOfIteratorHelper(_this2._progressListeners),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var listener = _step2.value;\n listener(loaded, total);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n });\n }\n }, {\n key: \"onDataProgressiveRead\",\n value: function onDataProgressiveRead(chunk) {\n var _this3 = this;\n\n this._readyCapability.promise.then(function () {\n var _iterator3 = _createForOfIteratorHelper(_this3._progressiveReadListeners),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var listener = _step3.value;\n listener(chunk);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n });\n }\n }, {\n key: \"onDataProgressiveDone\",\n value: function onDataProgressiveDone() {\n var _this4 = this;\n\n this._readyCapability.promise.then(function () {\n var _iterator4 = _createForOfIteratorHelper(_this4._progressiveDoneListeners),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var listener = _step4.value;\n listener();\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n });\n }\n }, {\n key: \"transportReady\",\n value: function transportReady() {\n this._readyCapability.resolve();\n }\n }, {\n key: \"requestDataRange\",\n value: function requestDataRange(begin, end) {\n (0, _util.unreachable)(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n }, {\n key: \"abort\",\n value: function abort() {}\n }]);\n\n return PDFDataRangeTransport;\n}();\n\nexports.PDFDataRangeTransport = PDFDataRangeTransport;\n\nvar PDFDocumentProxy = /*#__PURE__*/function () {\n function PDFDocumentProxy(pdfInfo, transport) {\n _classCallCheck(this, PDFDocumentProxy);\n\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n }\n\n _createClass(PDFDocumentProxy, [{\n key: \"getPage\",\n value: function getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n }, {\n key: \"getPageIndex\",\n value: function getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n }, {\n key: \"getDestinations\",\n value: function getDestinations() {\n return this._transport.getDestinations();\n }\n }, {\n key: \"getDestination\",\n value: function getDestination(id) {\n return this._transport.getDestination(id);\n }\n }, {\n key: \"getPageLabels\",\n value: function getPageLabels() {\n return this._transport.getPageLabels();\n }\n }, {\n key: \"getPageLayout\",\n value: function getPageLayout() {\n return this._transport.getPageLayout();\n }\n }, {\n key: \"getPageMode\",\n value: function getPageMode() {\n return this._transport.getPageMode();\n }\n }, {\n key: \"getViewerPreferences\",\n value: function getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n }, {\n key: \"getOpenAction\",\n value: function getOpenAction() {\n return this._transport.getOpenAction();\n }\n }, {\n key: \"getOpenActionDestination\",\n value: function getOpenActionDestination() {\n (0, _display_utils.deprecated)(\"getOpenActionDestination, use getOpenAction instead.\");\n return this.getOpenAction().then(function (openAction) {\n return openAction && openAction.dest ? openAction.dest : null;\n });\n }\n }, {\n key: \"getAttachments\",\n value: function getAttachments() {\n return this._transport.getAttachments();\n }\n }, {\n key: \"getJavaScript\",\n value: function getJavaScript() {\n return this._transport.getJavaScript();\n }\n }, {\n key: \"getOutline\",\n value: function getOutline() {\n return this._transport.getOutline();\n }\n }, {\n key: \"getPermissions\",\n value: function getPermissions() {\n return this._transport.getPermissions();\n }\n }, {\n key: \"getMetadata\",\n value: function getMetadata() {\n return this._transport.getMetadata();\n }\n }, {\n key: \"getData\",\n value: function getData() {\n return this._transport.getData();\n }\n }, {\n key: \"getDownloadInfo\",\n value: function getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n }, {\n key: \"getStats\",\n value: function getStats() {\n return this._transport.getStats();\n }\n }, {\n key: \"cleanup\",\n value: function cleanup() {\n return this._transport.startCleanup();\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n return this.loadingTask.destroy();\n }\n }, {\n key: \"numPages\",\n get: function get() {\n return this._pdfInfo.numPages;\n }\n }, {\n key: \"fingerprint\",\n get: function get() {\n return this._pdfInfo.fingerprint;\n }\n }, {\n key: \"loadingParams\",\n get: function get() {\n return this._transport.loadingParams;\n }\n }, {\n key: \"loadingTask\",\n get: function get() {\n return this._transport.loadingTask;\n }\n }]);\n\n return PDFDocumentProxy;\n}();\n\nexports.PDFDocumentProxy = PDFDocumentProxy;\n\nvar PDFPageProxy = /*#__PURE__*/function () {\n function PDFPageProxy(pageIndex, pageInfo, transport) {\n var pdfBug = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n _classCallCheck(this, PDFPageProxy);\n\n this._pageIndex = pageIndex;\n this._pageInfo = pageInfo;\n this._transport = transport;\n this._stats = pdfBug ? new _display_utils.StatTimer() : null;\n this._pdfBug = pdfBug;\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n this.cleanupAfterRender = false;\n this.pendingCleanup = false;\n this.intentStates = Object.create(null);\n this.destroyed = false;\n }\n\n _createClass(PDFPageProxy, [{\n key: \"getViewport\",\n value: function getViewport() {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n scale = _ref3.scale,\n _ref3$rotation = _ref3.rotation,\n rotation = _ref3$rotation === void 0 ? this.rotate : _ref3$rotation,\n _ref3$offsetX = _ref3.offsetX,\n offsetX = _ref3$offsetX === void 0 ? 0 : _ref3$offsetX,\n _ref3$offsetY = _ref3.offsetY,\n offsetY = _ref3$offsetY === void 0 ? 0 : _ref3$offsetY,\n _ref3$dontFlip = _ref3.dontFlip,\n dontFlip = _ref3$dontFlip === void 0 ? false : _ref3$dontFlip;\n\n return new _display_utils.PageViewport({\n viewBox: this.view,\n scale: scale,\n rotation: rotation,\n offsetX: offsetX,\n offsetY: offsetY,\n dontFlip: dontFlip\n });\n }\n }, {\n key: \"getAnnotations\",\n value: function getAnnotations() {\n var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref4$intent = _ref4.intent,\n intent = _ref4$intent === void 0 ? null : _ref4$intent;\n\n if (!this.annotationsPromise || this.annotationsIntent !== intent) {\n this.annotationsPromise = this._transport.getAnnotations(this._pageIndex, intent);\n this.annotationsIntent = intent;\n }\n\n return this.annotationsPromise;\n }\n }, {\n key: \"render\",\n value: function render(_ref5) {\n var _this5 = this;\n\n var canvasContext = _ref5.canvasContext,\n viewport = _ref5.viewport,\n _ref5$intent = _ref5.intent,\n intent = _ref5$intent === void 0 ? \"display\" : _ref5$intent,\n _ref5$enableWebGL = _ref5.enableWebGL,\n enableWebGL = _ref5$enableWebGL === void 0 ? false : _ref5$enableWebGL,\n _ref5$renderInteracti = _ref5.renderInteractiveForms,\n renderInteractiveForms = _ref5$renderInteracti === void 0 ? false : _ref5$renderInteracti,\n _ref5$transform = _ref5.transform,\n transform = _ref5$transform === void 0 ? null : _ref5$transform,\n _ref5$imageLayer = _ref5.imageLayer,\n imageLayer = _ref5$imageLayer === void 0 ? null : _ref5$imageLayer,\n _ref5$canvasFactory = _ref5.canvasFactory,\n canvasFactory = _ref5$canvasFactory === void 0 ? null : _ref5$canvasFactory,\n _ref5$background = _ref5.background,\n background = _ref5$background === void 0 ? null : _ref5$background;\n\n if (this._stats) {\n this._stats.time(\"Overall\");\n }\n\n var renderingIntent = intent === \"print\" ? \"print\" : \"display\";\n this.pendingCleanup = false;\n\n if (!this.intentStates[renderingIntent]) {\n this.intentStates[renderingIntent] = Object.create(null);\n }\n\n var intentState = this.intentStates[renderingIntent];\n\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n\n var canvasFactoryInstance = canvasFactory || new _display_utils.DOMCanvasFactory();\n var webGLContext = new _webgl.WebGLContext({\n enable: enableWebGL\n });\n\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = (0, _util.createPromiseCapability)();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false\n };\n\n if (this._stats) {\n this._stats.time(\"Page Request\");\n }\n\n this._pumpOperatorList({\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n renderInteractiveForms: renderInteractiveForms === true\n });\n }\n\n var complete = function complete(error) {\n var i = intentState.renderTasks.indexOf(internalRenderTask);\n\n if (i >= 0) {\n intentState.renderTasks.splice(i, 1);\n }\n\n if (_this5.cleanupAfterRender || renderingIntent === \"print\") {\n _this5.pendingCleanup = true;\n }\n\n _this5._tryCleanup();\n\n if (error) {\n internalRenderTask.capability.reject(error);\n\n _this5._abortOperatorList({\n intentState: intentState,\n reason: error\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n\n if (_this5._stats) {\n _this5._stats.timeEnd(\"Rendering\");\n\n _this5._stats.timeEnd(\"Overall\");\n }\n };\n\n var internalRenderTask = new InternalRenderTask({\n callback: complete,\n params: {\n canvasContext: canvasContext,\n viewport: viewport,\n transform: transform,\n imageLayer: imageLayer,\n background: background\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n operatorList: intentState.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: canvasFactoryInstance,\n webGLContext: webGLContext,\n useRequestAnimationFrame: renderingIntent !== \"print\",\n pdfBug: this._pdfBug\n });\n\n if (!intentState.renderTasks) {\n intentState.renderTasks = [];\n }\n\n intentState.renderTasks.push(internalRenderTask);\n var renderTask = internalRenderTask.task;\n intentState.displayReadyCapability.promise.then(function (transparency) {\n if (_this5.pendingCleanup) {\n complete();\n return;\n }\n\n if (_this5._stats) {\n _this5._stats.time(\"Rendering\");\n }\n\n internalRenderTask.initializeGraphics(transparency);\n internalRenderTask.operatorListChanged();\n })[\"catch\"](complete);\n return renderTask;\n }\n }, {\n key: \"getOperatorList\",\n value: function getOperatorList() {\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n var i = intentState.renderTasks.indexOf(opListTask);\n\n if (i >= 0) {\n intentState.renderTasks.splice(i, 1);\n }\n }\n }\n\n var renderingIntent = \"oplist\";\n\n if (!this.intentStates[renderingIntent]) {\n this.intentStates[renderingIntent] = Object.create(null);\n }\n\n var intentState = this.intentStates[renderingIntent];\n var opListTask;\n\n if (!intentState.opListReadCapability) {\n opListTask = {};\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = (0, _util.createPromiseCapability)();\n intentState.renderTasks = [];\n intentState.renderTasks.push(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false\n };\n\n if (this._stats) {\n this._stats.time(\"Page Request\");\n }\n\n this._pumpOperatorList({\n pageIndex: this._pageIndex,\n intent: renderingIntent\n });\n }\n\n return intentState.opListReadCapability.promise;\n }\n }, {\n key: \"streamTextContent\",\n value: function streamTextContent() {\n var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref6$normalizeWhites = _ref6.normalizeWhitespace,\n normalizeWhitespace = _ref6$normalizeWhites === void 0 ? false : _ref6$normalizeWhites,\n _ref6$disableCombineT = _ref6.disableCombineTextItems,\n disableCombineTextItems = _ref6$disableCombineT === void 0 ? false : _ref6$disableCombineT;\n\n var TEXT_CONTENT_CHUNK_SIZE = 100;\n return this._transport.messageHandler.sendWithStream(\"GetTextContent\", {\n pageIndex: this._pageIndex,\n normalizeWhitespace: normalizeWhitespace === true,\n combineTextItems: disableCombineTextItems !== true\n }, {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size: function size(textContent) {\n return textContent.items.length;\n }\n });\n }\n }, {\n key: \"getTextContent\",\n value: function getTextContent() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var readableStream = this.streamTextContent(params);\n return new Promise(function (resolve, reject) {\n function pump() {\n reader.read().then(function (_ref7) {\n var _textContent$items;\n\n var value = _ref7.value,\n done = _ref7.done;\n\n if (done) {\n resolve(textContent);\n return;\n }\n\n Object.assign(textContent.styles, value.styles);\n\n (_textContent$items = textContent.items).push.apply(_textContent$items, _toConsumableArray(value.items));\n\n pump();\n }, reject);\n }\n\n var reader = readableStream.getReader();\n var textContent = {\n items: [],\n styles: Object.create(null)\n };\n pump();\n });\n }\n }, {\n key: \"_destroy\",\n value: function _destroy() {\n var _this6 = this;\n\n this.destroyed = true;\n this._transport.pageCache[this._pageIndex] = null;\n var waitOn = [];\n Object.keys(this.intentStates).forEach(function (intent) {\n var intentState = _this6.intentStates[intent];\n\n _this6._abortOperatorList({\n intentState: intentState,\n reason: new Error(\"Page was destroyed.\"),\n force: true\n });\n\n if (intent === \"oplist\") {\n return;\n }\n\n intentState.renderTasks.forEach(function (renderTask) {\n var renderCompleted = renderTask.capability.promise[\"catch\"](function () {});\n waitOn.push(renderCompleted);\n renderTask.cancel();\n });\n });\n this.objs.clear();\n this.annotationsPromise = null;\n this.pendingCleanup = false;\n return Promise.all(waitOn);\n }\n }, {\n key: \"cleanup\",\n value: function cleanup() {\n var resetStats = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n this.pendingCleanup = true;\n return this._tryCleanup(resetStats);\n }\n }, {\n key: \"_tryCleanup\",\n value: function _tryCleanup() {\n var _this7 = this;\n\n var resetStats = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (!this.pendingCleanup || Object.keys(this.intentStates).some(function (intent) {\n var intentState = _this7.intentStates[intent];\n return intentState.renderTasks.length !== 0 || !intentState.operatorList.lastChunk;\n })) {\n return false;\n }\n\n Object.keys(this.intentStates).forEach(function (intent) {\n delete _this7.intentStates[intent];\n });\n this.objs.clear();\n this.annotationsPromise = null;\n\n if (resetStats && this._stats) {\n this._stats = new _display_utils.StatTimer();\n }\n\n this.pendingCleanup = false;\n return true;\n }\n }, {\n key: \"_startRenderPage\",\n value: function _startRenderPage(transparency, intent) {\n var intentState = this.intentStates[intent];\n\n if (!intentState) {\n return;\n }\n\n if (this._stats) {\n this._stats.timeEnd(\"Page Request\");\n }\n\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.resolve(transparency);\n }\n }\n }, {\n key: \"_renderPageChunk\",\n value: function _renderPageChunk(operatorListChunk, intentState) {\n for (var i = 0, ii = operatorListChunk.length; i < ii; i++) {\n intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n }\n\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n\n for (var _i2 = 0; _i2 < intentState.renderTasks.length; _i2++) {\n intentState.renderTasks[_i2].operatorListChanged();\n }\n\n if (operatorListChunk.lastChunk) {\n this._tryCleanup();\n }\n }\n }, {\n key: \"_pumpOperatorList\",\n value: function _pumpOperatorList(args) {\n var _this8 = this;\n\n (0, _util.assert)(args.intent, 'PDFPageProxy._pumpOperatorList: Expected \"intent\" argument.');\n\n var readableStream = this._transport.messageHandler.sendWithStream(\"GetOperatorList\", args);\n\n var reader = readableStream.getReader();\n var intentState = this.intentStates[args.intent];\n intentState.streamReader = reader;\n\n var pump = function pump() {\n reader.read().then(function (_ref8) {\n var value = _ref8.value,\n done = _ref8.done;\n\n if (done) {\n intentState.streamReader = null;\n return;\n }\n\n if (_this8._transport.destroyed) {\n return;\n }\n\n _this8._renderPageChunk(value, intentState);\n\n pump();\n }, function (reason) {\n intentState.streamReader = null;\n\n if (_this8._transport.destroyed) {\n return;\n }\n\n if (intentState.operatorList) {\n intentState.operatorList.lastChunk = true;\n\n for (var i = 0; i < intentState.renderTasks.length; i++) {\n intentState.renderTasks[i].operatorListChanged();\n }\n\n _this8._tryCleanup();\n }\n\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.reject(reason);\n } else if (intentState.opListReadCapability) {\n intentState.opListReadCapability.reject(reason);\n } else {\n throw reason;\n }\n });\n };\n\n pump();\n }\n }, {\n key: \"_abortOperatorList\",\n value: function _abortOperatorList(_ref9) {\n var _this9 = this;\n\n var intentState = _ref9.intentState,\n reason = _ref9.reason,\n _ref9$force = _ref9.force,\n force = _ref9$force === void 0 ? false : _ref9$force;\n (0, _util.assert)(reason instanceof Error || _typeof(reason) === \"object\" && reason !== null, 'PDFPageProxy._abortOperatorList: Expected \"reason\" argument.');\n\n if (!intentState.streamReader) {\n return;\n }\n\n if (!force) {\n if (intentState.renderTasks.length !== 0) {\n return;\n }\n\n if (reason instanceof _display_utils.RenderingCancelledException) {\n intentState.streamReaderCancelTimeout = setTimeout(function () {\n _this9._abortOperatorList({\n intentState: intentState,\n reason: reason,\n force: true\n });\n\n intentState.streamReaderCancelTimeout = null;\n }, RENDERING_CANCELLED_TIMEOUT);\n return;\n }\n }\n\n intentState.streamReader.cancel(new _util.AbortException(reason && reason.message));\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return;\n }\n\n Object.keys(this.intentStates).some(function (intent) {\n if (_this9.intentStates[intent] === intentState) {\n delete _this9.intentStates[intent];\n return true;\n }\n\n return false;\n });\n this.cleanup();\n }\n }, {\n key: \"pageNumber\",\n get: function get() {\n return this._pageIndex + 1;\n }\n }, {\n key: \"rotate\",\n get: function get() {\n return this._pageInfo.rotate;\n }\n }, {\n key: \"ref\",\n get: function get() {\n return this._pageInfo.ref;\n }\n }, {\n key: \"userUnit\",\n get: function get() {\n return this._pageInfo.userUnit;\n }\n }, {\n key: \"view\",\n get: function get() {\n return this._pageInfo.view;\n }\n }, {\n key: \"stats\",\n get: function get() {\n return this._stats;\n }\n }]);\n\n return PDFPageProxy;\n}();\n\nexports.PDFPageProxy = PDFPageProxy;\n\nvar LoopbackPort = /*#__PURE__*/function () {\n function LoopbackPort() {\n var defer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n _classCallCheck(this, LoopbackPort);\n\n this._listeners = [];\n this._defer = defer;\n this._deferred = Promise.resolve(undefined);\n }\n\n _createClass(LoopbackPort, [{\n key: \"postMessage\",\n value: function postMessage(obj, transfers) {\n var _this10 = this;\n\n function cloneValue(value) {\n if (_typeof(value) !== \"object\" || value === null) {\n return value;\n }\n\n if (cloned.has(value)) {\n return cloned.get(value);\n }\n\n var buffer, result;\n\n if ((buffer = value.buffer) && (0, _util.isArrayBuffer)(buffer)) {\n var transferable = transfers && transfers.includes(buffer);\n\n if (transferable) {\n result = new value.constructor(buffer, value.byteOffset, value.byteLength);\n } else {\n result = new value.constructor(value);\n }\n\n cloned.set(value, result);\n return result;\n }\n\n result = Array.isArray(value) ? [] : {};\n cloned.set(value, result);\n\n for (var i in value) {\n var desc = void 0,\n p = value;\n\n while (!(desc = Object.getOwnPropertyDescriptor(p, i))) {\n p = Object.getPrototypeOf(p);\n }\n\n if (typeof desc.value === \"undefined\") {\n continue;\n }\n\n if (typeof desc.value === \"function\") {\n if (value.hasOwnProperty && value.hasOwnProperty(i)) {\n throw new Error(\"LoopbackPort.postMessage - cannot clone: \".concat(value[i]));\n }\n\n continue;\n }\n\n result[i] = cloneValue(desc.value);\n }\n\n return result;\n }\n\n if (!this._defer) {\n this._listeners.forEach(function (listener) {\n listener.call(_this10, {\n data: obj\n });\n });\n\n return;\n }\n\n var cloned = new WeakMap();\n var e = {\n data: cloneValue(obj)\n };\n\n this._deferred.then(function () {\n _this10._listeners.forEach(function (listener) {\n listener.call(_this10, e);\n });\n });\n }\n }, {\n key: \"addEventListener\",\n value: function addEventListener(name, listener) {\n this._listeners.push(listener);\n }\n }, {\n key: \"removeEventListener\",\n value: function removeEventListener(name, listener) {\n var i = this._listeners.indexOf(listener);\n\n this._listeners.splice(i, 1);\n }\n }, {\n key: \"terminate\",\n value: function terminate() {\n this._listeners.length = 0;\n }\n }]);\n\n return LoopbackPort;\n}();\n\nexports.LoopbackPort = LoopbackPort;\n\nvar PDFWorker = function PDFWorkerClosure() {\n var pdfWorkerPorts = new WeakMap();\n var isWorkerDisabled = false;\n var fallbackWorkerSrc;\n var nextFakeWorkerId = 0;\n var fakeWorkerCapability;\n\n if (_is_node.isNodeJS && typeof require === \"function\") {\n isWorkerDisabled = true;\n fallbackWorkerSrc = \"./pdf.worker.js\";\n } else if ((typeof document === \"undefined\" ? \"undefined\" : _typeof(document)) === \"object\" && \"currentScript\" in document) {\n var pdfjsFilePath = document.currentScript && document.currentScript.src;\n\n if (pdfjsFilePath) {\n fallbackWorkerSrc = pdfjsFilePath.replace(/(\\.(?:min\\.)?js)(\\?.*)?$/i, \".worker$1$2\");\n }\n }\n\n function _getWorkerSrc() {\n if (_worker_options.GlobalWorkerOptions.workerSrc) {\n return _worker_options.GlobalWorkerOptions.workerSrc;\n }\n\n if (typeof fallbackWorkerSrc !== \"undefined\") {\n if (!_is_node.isNodeJS) {\n (0, _display_utils.deprecated)('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n\n return fallbackWorkerSrc;\n }\n\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n\n function getMainThreadWorkerMessageHandler() {\n var mainWorkerMessageHandler;\n\n try {\n mainWorkerMessageHandler = globalThis.pdfjsWorker && globalThis.pdfjsWorker.WorkerMessageHandler;\n } catch (ex) {}\n\n return mainWorkerMessageHandler || null;\n }\n\n function setupFakeWorkerGlobal() {\n if (fakeWorkerCapability) {\n return fakeWorkerCapability.promise;\n }\n\n fakeWorkerCapability = (0, _util.createPromiseCapability)();\n\n var loader = /*#__PURE__*/function () {\n var _ref10 = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee() {\n var mainWorkerMessageHandler, worker;\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n mainWorkerMessageHandler = getMainThreadWorkerMessageHandler();\n\n if (!mainWorkerMessageHandler) {\n _context.next = 3;\n break;\n }\n\n return _context.abrupt(\"return\", mainWorkerMessageHandler);\n\n case 3:\n if (!(_is_node.isNodeJS && typeof require === \"function\")) {\n _context.next = 6;\n break;\n }\n\n worker = eval(\"require\")(_getWorkerSrc());\n return _context.abrupt(\"return\", worker.WorkerMessageHandler);\n\n case 6:\n _context.next = 8;\n return (0, _display_utils.loadScript)(_getWorkerSrc());\n\n case 8:\n return _context.abrupt(\"return\", window.pdfjsWorker.WorkerMessageHandler);\n\n case 9:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function loader() {\n return _ref10.apply(this, arguments);\n };\n }();\n\n loader().then(fakeWorkerCapability.resolve, fakeWorkerCapability.reject);\n return fakeWorkerCapability.promise;\n }\n\n function createCDNWrapper(url) {\n var wrapper = \"importScripts('\" + url + \"');\";\n return URL.createObjectURL(new Blob([wrapper]));\n }\n\n var PDFWorker = /*#__PURE__*/function () {\n function PDFWorker() {\n var _ref11 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref11$name = _ref11.name,\n name = _ref11$name === void 0 ? null : _ref11$name,\n _ref11$port = _ref11.port,\n port = _ref11$port === void 0 ? null : _ref11$port,\n _ref11$verbosity = _ref11.verbosity,\n verbosity = _ref11$verbosity === void 0 ? (0, _util.getVerbosityLevel)() : _ref11$verbosity;\n\n _classCallCheck(this, PDFWorker);\n\n if (port && pdfWorkerPorts.has(port)) {\n throw new Error(\"Cannot use more than one PDFWorker per port\");\n }\n\n this.name = name;\n this.destroyed = false;\n this.postMessageTransfers = true;\n this.verbosity = verbosity;\n this._readyCapability = (0, _util.createPromiseCapability)();\n this._port = null;\n this._webWorker = null;\n this._messageHandler = null;\n\n if (port) {\n pdfWorkerPorts.set(port, this);\n\n this._initializeFromPort(port);\n\n return;\n }\n\n this._initialize();\n }\n\n _createClass(PDFWorker, [{\n key: \"_initializeFromPort\",\n value: function _initializeFromPort(port) {\n this._port = port;\n this._messageHandler = new _message_handler.MessageHandler(\"main\", \"worker\", port);\n\n this._messageHandler.on(\"ready\", function () {});\n\n this._readyCapability.resolve();\n }\n }, {\n key: \"_initialize\",\n value: function _initialize() {\n var _this11 = this;\n\n if (typeof Worker !== \"undefined\" && !isWorkerDisabled && !getMainThreadWorkerMessageHandler()) {\n var workerSrc = _getWorkerSrc();\n\n try {\n if (!(0, _util.isSameOrigin)(window.location.href, workerSrc)) {\n workerSrc = createCDNWrapper(new URL(workerSrc, window.location).href);\n }\n\n var worker = new Worker(workerSrc);\n var messageHandler = new _message_handler.MessageHandler(\"main\", \"worker\", worker);\n\n var terminateEarly = function terminateEarly() {\n worker.removeEventListener(\"error\", onWorkerError);\n messageHandler.destroy();\n worker.terminate();\n\n if (_this11.destroyed) {\n _this11._readyCapability.reject(new Error(\"Worker was destroyed\"));\n } else {\n _this11._setupFakeWorker();\n }\n };\n\n var onWorkerError = function onWorkerError() {\n if (!_this11._webWorker) {\n terminateEarly();\n }\n };\n\n worker.addEventListener(\"error\", onWorkerError);\n messageHandler.on(\"test\", function (data) {\n worker.removeEventListener(\"error\", onWorkerError);\n\n if (_this11.destroyed) {\n terminateEarly();\n return;\n }\n\n if (data) {\n _this11._messageHandler = messageHandler;\n _this11._port = worker;\n _this11._webWorker = worker;\n\n if (!data.supportTransfers) {\n _this11.postMessageTransfers = false;\n }\n\n _this11._readyCapability.resolve();\n\n messageHandler.send(\"configure\", {\n verbosity: _this11.verbosity\n });\n } else {\n _this11._setupFakeWorker();\n\n messageHandler.destroy();\n worker.terminate();\n }\n });\n messageHandler.on(\"ready\", function (data) {\n worker.removeEventListener(\"error\", onWorkerError);\n\n if (_this11.destroyed) {\n terminateEarly();\n return;\n }\n\n try {\n sendTest();\n } catch (e) {\n _this11._setupFakeWorker();\n }\n });\n\n var sendTest = function sendTest() {\n var testObj = new Uint8Array([_this11.postMessageTransfers ? 255 : 0]);\n\n try {\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\n } catch (ex) {\n (0, _util.warn)(\"Cannot use postMessage transfers.\");\n testObj[0] = 0;\n messageHandler.send(\"test\", testObj);\n }\n };\n\n sendTest();\n return;\n } catch (e) {\n (0, _util.info)(\"The worker has been disabled.\");\n }\n }\n\n this._setupFakeWorker();\n }\n }, {\n key: \"_setupFakeWorker\",\n value: function _setupFakeWorker() {\n var _this12 = this;\n\n if (!isWorkerDisabled) {\n (0, _util.warn)(\"Setting up fake worker.\");\n isWorkerDisabled = true;\n }\n\n setupFakeWorkerGlobal().then(function (WorkerMessageHandler) {\n if (_this12.destroyed) {\n _this12._readyCapability.reject(new Error(\"Worker was destroyed\"));\n\n return;\n }\n\n var port = new LoopbackPort();\n _this12._port = port;\n var id = \"fake\" + nextFakeWorkerId++;\n var workerHandler = new _message_handler.MessageHandler(id + \"_worker\", id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n var messageHandler = new _message_handler.MessageHandler(id, id + \"_worker\", port);\n _this12._messageHandler = messageHandler;\n\n _this12._readyCapability.resolve();\n\n messageHandler.send(\"configure\", {\n verbosity: _this12.verbosity\n });\n })[\"catch\"](function (reason) {\n _this12._readyCapability.reject(new Error(\"Setting up fake worker failed: \\\"\".concat(reason.message, \"\\\".\")));\n });\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.destroyed = true;\n\n if (this._webWorker) {\n this._webWorker.terminate();\n\n this._webWorker = null;\n }\n\n pdfWorkerPorts[\"delete\"](this._port);\n this._port = null;\n\n if (this._messageHandler) {\n this._messageHandler.destroy();\n\n this._messageHandler = null;\n }\n }\n }, {\n key: \"promise\",\n get: function get() {\n return this._readyCapability.promise;\n }\n }, {\n key: \"port\",\n get: function get() {\n return this._port;\n }\n }, {\n key: \"messageHandler\",\n get: function get() {\n return this._messageHandler;\n }\n }], [{\n key: \"fromPort\",\n value: function fromPort(params) {\n if (!params || !params.port) {\n throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n }\n\n if (pdfWorkerPorts.has(params.port)) {\n return pdfWorkerPorts.get(params.port);\n }\n\n return new PDFWorker(params);\n }\n }, {\n key: \"getWorkerSrc\",\n value: function getWorkerSrc() {\n return _getWorkerSrc();\n }\n }]);\n\n return PDFWorker;\n }();\n\n return PDFWorker;\n}();\n\nexports.PDFWorker = PDFWorker;\n\nvar WorkerTransport = /*#__PURE__*/function () {\n function WorkerTransport(messageHandler, loadingTask, networkStream, params) {\n _classCallCheck(this, WorkerTransport);\n\n this.messageHandler = messageHandler;\n this.loadingTask = loadingTask;\n this.commonObjs = new PDFObjects();\n this.fontLoader = new _font_loader.FontLoader({\n docId: loadingTask.docId,\n onUnsupportedFeature: this._onUnsupportedFeature.bind(this)\n });\n this._params = params;\n this.CMapReaderFactory = new params.CMapReaderFactory({\n baseUrl: params.cMapUrl,\n isCompressed: params.cMapPacked\n });\n this.destroyed = false;\n this.destroyCapability = null;\n this._passwordCapability = null;\n this._networkStream = networkStream;\n this._fullReader = null;\n this._lastProgress = null;\n this.pageCache = [];\n this.pagePromises = [];\n this.downloadInfoCapability = (0, _util.createPromiseCapability)();\n this.setupMessageHandler();\n }\n\n _createClass(WorkerTransport, [{\n key: \"destroy\",\n value: function destroy() {\n var _this13 = this;\n\n if (this.destroyCapability) {\n return this.destroyCapability.promise;\n }\n\n this.destroyed = true;\n this.destroyCapability = (0, _util.createPromiseCapability)();\n\n if (this._passwordCapability) {\n this._passwordCapability.reject(new Error(\"Worker was destroyed during onPassword callback\"));\n }\n\n var waitOn = [];\n this.pageCache.forEach(function (page) {\n if (page) {\n waitOn.push(page._destroy());\n }\n });\n this.pageCache.length = 0;\n this.pagePromises.length = 0;\n var terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n waitOn.push(terminated);\n Promise.all(waitOn).then(function () {\n _this13.fontLoader.clear();\n\n if (_this13._networkStream) {\n _this13._networkStream.cancelAllRequests(new _util.AbortException(\"Worker was terminated.\"));\n }\n\n if (_this13.messageHandler) {\n _this13.messageHandler.destroy();\n\n _this13.messageHandler = null;\n }\n\n _this13.destroyCapability.resolve();\n }, this.destroyCapability.reject);\n return this.destroyCapability.promise;\n }\n }, {\n key: \"setupMessageHandler\",\n value: function setupMessageHandler() {\n var _this14 = this;\n\n var messageHandler = this.messageHandler,\n loadingTask = this.loadingTask;\n messageHandler.on(\"GetReader\", function (data, sink) {\n (0, _util.assert)(_this14._networkStream, \"GetReader - no `IPDFStream` instance available.\");\n _this14._fullReader = _this14._networkStream.getFullReader();\n\n _this14._fullReader.onProgress = function (evt) {\n _this14._lastProgress = {\n loaded: evt.loaded,\n total: evt.total\n };\n };\n\n sink.onPull = function () {\n _this14._fullReader.read().then(function (_ref12) {\n var value = _ref12.value,\n done = _ref12.done;\n\n if (done) {\n sink.close();\n return;\n }\n\n (0, _util.assert)((0, _util.isArrayBuffer)(value), \"GetReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n })[\"catch\"](function (reason) {\n sink.error(reason);\n });\n };\n\n sink.onCancel = function (reason) {\n _this14._fullReader.cancel(reason);\n };\n });\n messageHandler.on(\"ReaderHeadersReady\", function (data) {\n var headersCapability = (0, _util.createPromiseCapability)();\n var fullReader = _this14._fullReader;\n fullReader.headersReady.then(function () {\n if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {\n if (_this14._lastProgress && loadingTask.onProgress) {\n loadingTask.onProgress(_this14._lastProgress);\n }\n\n fullReader.onProgress = function (evt) {\n if (loadingTask.onProgress) {\n loadingTask.onProgress({\n loaded: evt.loaded,\n total: evt.total\n });\n }\n };\n }\n\n headersCapability.resolve({\n isStreamingSupported: fullReader.isStreamingSupported,\n isRangeSupported: fullReader.isRangeSupported,\n contentLength: fullReader.contentLength\n });\n }, headersCapability.reject);\n return headersCapability.promise;\n });\n messageHandler.on(\"GetRangeReader\", function (data, sink) {\n (0, _util.assert)(_this14._networkStream, \"GetRangeReader - no `IPDFStream` instance available.\");\n\n var rangeReader = _this14._networkStream.getRangeReader(data.begin, data.end);\n\n if (!rangeReader) {\n sink.close();\n return;\n }\n\n sink.onPull = function () {\n rangeReader.read().then(function (_ref13) {\n var value = _ref13.value,\n done = _ref13.done;\n\n if (done) {\n sink.close();\n return;\n }\n\n (0, _util.assert)((0, _util.isArrayBuffer)(value), \"GetRangeReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n })[\"catch\"](function (reason) {\n sink.error(reason);\n });\n };\n\n sink.onCancel = function (reason) {\n rangeReader.cancel(reason);\n };\n });\n messageHandler.on(\"GetDoc\", function (_ref14) {\n var pdfInfo = _ref14.pdfInfo;\n _this14._numPages = pdfInfo.numPages;\n\n loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, _this14));\n });\n messageHandler.on(\"DocException\", function (ex) {\n var reason;\n\n switch (ex.name) {\n case \"PasswordException\":\n reason = new _util.PasswordException(ex.message, ex.code);\n break;\n\n case \"InvalidPDFException\":\n reason = new _util.InvalidPDFException(ex.message);\n break;\n\n case \"MissingPDFException\":\n reason = new _util.MissingPDFException(ex.message);\n break;\n\n case \"UnexpectedResponseException\":\n reason = new _util.UnexpectedResponseException(ex.message, ex.status);\n break;\n\n case \"UnknownErrorException\":\n reason = new _util.UnknownErrorException(ex.message, ex.details);\n break;\n }\n\n loadingTask._capability.reject(reason);\n });\n messageHandler.on(\"PasswordRequest\", function (exception) {\n _this14._passwordCapability = (0, _util.createPromiseCapability)();\n\n if (loadingTask.onPassword) {\n var updatePassword = function updatePassword(password) {\n _this14._passwordCapability.resolve({\n password: password\n });\n };\n\n try {\n loadingTask.onPassword(updatePassword, exception.code);\n } catch (ex) {\n _this14._passwordCapability.reject(ex);\n }\n } else {\n _this14._passwordCapability.reject(new _util.PasswordException(exception.message, exception.code));\n }\n\n return _this14._passwordCapability.promise;\n });\n messageHandler.on(\"DataLoaded\", function (data) {\n if (loadingTask.onProgress) {\n loadingTask.onProgress({\n loaded: data.length,\n total: data.length\n });\n }\n\n _this14.downloadInfoCapability.resolve(data);\n });\n messageHandler.on(\"StartRenderPage\", function (data) {\n if (_this14.destroyed) {\n return;\n }\n\n var page = _this14.pageCache[data.pageIndex];\n\n page._startRenderPage(data.transparency, data.intent);\n });\n messageHandler.on(\"commonobj\", function (data) {\n if (_this14.destroyed) {\n return;\n }\n\n var _data = _slicedToArray(data, 3),\n id = _data[0],\n type = _data[1],\n exportedData = _data[2];\n\n if (_this14.commonObjs.has(id)) {\n return;\n }\n\n switch (type) {\n case \"Font\":\n var params = _this14._params;\n\n if (\"error\" in exportedData) {\n var exportedError = exportedData.error;\n (0, _util.warn)(\"Error during font loading: \".concat(exportedError));\n\n _this14.commonObjs.resolve(id, exportedError);\n\n break;\n }\n\n var fontRegistry = null;\n\n if (params.pdfBug && globalThis.FontInspector && globalThis.FontInspector.enabled) {\n fontRegistry = {\n registerFont: function registerFont(font, url) {\n globalThis.FontInspector.fontAdded(font, url);\n }\n };\n }\n\n var font = new _font_loader.FontFaceObject(exportedData, {\n isEvalSupported: params.isEvalSupported,\n disableFontFace: params.disableFontFace,\n ignoreErrors: params.ignoreErrors,\n onUnsupportedFeature: _this14._onUnsupportedFeature.bind(_this14),\n fontRegistry: fontRegistry\n });\n\n _this14.fontLoader.bind(font)[\"catch\"](function (reason) {\n return messageHandler.sendWithPromise(\"FontFallback\", {\n id: id\n });\n })[\"finally\"](function () {\n if (!params.fontExtraProperties && font.data) {\n font.data = null;\n }\n\n _this14.commonObjs.resolve(id, font);\n });\n\n break;\n\n case \"FontPath\":\n case \"FontType3Res\":\n case \"Image\":\n _this14.commonObjs.resolve(id, exportedData);\n\n break;\n\n default:\n throw new Error(\"Got unknown common object type \".concat(type));\n }\n });\n messageHandler.on(\"obj\", function (data) {\n if (_this14.destroyed) {\n return undefined;\n }\n\n var _data2 = _slicedToArray(data, 4),\n id = _data2[0],\n pageIndex = _data2[1],\n type = _data2[2],\n imageData = _data2[3];\n\n var pageProxy = _this14.pageCache[pageIndex];\n\n if (pageProxy.objs.has(id)) {\n return undefined;\n }\n\n switch (type) {\n case \"Image\":\n pageProxy.objs.resolve(id, imageData);\n var MAX_IMAGE_SIZE_TO_STORE = 8000000;\n\n if (imageData && \"data\" in imageData && imageData.data.length > MAX_IMAGE_SIZE_TO_STORE) {\n pageProxy.cleanupAfterRender = true;\n }\n\n break;\n\n default:\n throw new Error(\"Got unknown object type \".concat(type));\n }\n\n return undefined;\n });\n messageHandler.on(\"DocProgress\", function (data) {\n if (_this14.destroyed) {\n return;\n }\n\n if (loadingTask.onProgress) {\n loadingTask.onProgress({\n loaded: data.loaded,\n total: data.total\n });\n }\n });\n messageHandler.on(\"UnsupportedFeature\", this._onUnsupportedFeature.bind(this));\n messageHandler.on(\"FetchBuiltInCMap\", function (data, sink) {\n if (_this14.destroyed) {\n sink.error(new Error(\"Worker was destroyed\"));\n return;\n }\n\n var fetched = false;\n\n sink.onPull = function () {\n if (fetched) {\n sink.close();\n return;\n }\n\n fetched = true;\n\n _this14.CMapReaderFactory.fetch(data).then(function (builtInCMap) {\n sink.enqueue(builtInCMap, 1, [builtInCMap.cMapData.buffer]);\n })[\"catch\"](function (reason) {\n sink.error(reason);\n });\n };\n });\n }\n }, {\n key: \"_onUnsupportedFeature\",\n value: function _onUnsupportedFeature(_ref15) {\n var featureId = _ref15.featureId;\n\n if (this.destroyed) {\n return;\n }\n\n if (this.loadingTask.onUnsupportedFeature) {\n this.loadingTask.onUnsupportedFeature(featureId);\n }\n }\n }, {\n key: \"getData\",\n value: function getData() {\n return this.messageHandler.sendWithPromise(\"GetData\", null);\n }\n }, {\n key: \"getPage\",\n value: function getPage(pageNumber) {\n var _this15 = this;\n\n if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) {\n return Promise.reject(new Error(\"Invalid page request\"));\n }\n\n var pageIndex = pageNumber - 1;\n\n if (pageIndex in this.pagePromises) {\n return this.pagePromises[pageIndex];\n }\n\n var promise = this.messageHandler.sendWithPromise(\"GetPage\", {\n pageIndex: pageIndex\n }).then(function (pageInfo) {\n if (_this15.destroyed) {\n throw new Error(\"Transport destroyed\");\n }\n\n var page = new PDFPageProxy(pageIndex, pageInfo, _this15, _this15._params.pdfBug);\n _this15.pageCache[pageIndex] = page;\n return page;\n });\n this.pagePromises[pageIndex] = promise;\n return promise;\n }\n }, {\n key: \"getPageIndex\",\n value: function getPageIndex(ref) {\n return this.messageHandler.sendWithPromise(\"GetPageIndex\", {\n ref: ref\n })[\"catch\"](function (reason) {\n return Promise.reject(new Error(reason));\n });\n }\n }, {\n key: \"getAnnotations\",\n value: function getAnnotations(pageIndex, intent) {\n return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n pageIndex: pageIndex,\n intent: intent\n });\n }\n }, {\n key: \"getDestinations\",\n value: function getDestinations() {\n return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\n }\n }, {\n key: \"getDestination\",\n value: function getDestination(id) {\n if (typeof id !== \"string\") {\n return Promise.reject(new Error(\"Invalid destination request.\"));\n }\n\n return this.messageHandler.sendWithPromise(\"GetDestination\", {\n id: id\n });\n }\n }, {\n key: \"getPageLabels\",\n value: function getPageLabels() {\n return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n }\n }, {\n key: \"getPageLayout\",\n value: function getPageLayout() {\n return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n }\n }, {\n key: \"getPageMode\",\n value: function getPageMode() {\n return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n }\n }, {\n key: \"getViewerPreferences\",\n value: function getViewerPreferences() {\n return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n }\n }, {\n key: \"getOpenAction\",\n value: function getOpenAction() {\n return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n }\n }, {\n key: \"getAttachments\",\n value: function getAttachments() {\n return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n }\n }, {\n key: \"getJavaScript\",\n value: function getJavaScript() {\n return this.messageHandler.sendWithPromise(\"GetJavaScript\", null);\n }\n }, {\n key: \"getOutline\",\n value: function getOutline() {\n return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n }\n }, {\n key: \"getPermissions\",\n value: function getPermissions() {\n return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n }\n }, {\n key: \"getMetadata\",\n value: function getMetadata() {\n var _this16 = this;\n\n return this.messageHandler.sendWithPromise(\"GetMetadata\", null).then(function (results) {\n return {\n info: results[0],\n metadata: results[1] ? new _metadata.Metadata(results[1]) : null,\n contentDispositionFilename: _this16._fullReader ? _this16._fullReader.filename : null\n };\n });\n }\n }, {\n key: \"getStats\",\n value: function getStats() {\n return this.messageHandler.sendWithPromise(\"GetStats\", null);\n }\n }, {\n key: \"startCleanup\",\n value: function startCleanup() {\n var _this17 = this;\n\n return this.messageHandler.sendWithPromise(\"Cleanup\", null).then(function () {\n for (var i = 0, ii = _this17.pageCache.length; i < ii; i++) {\n var page = _this17.pageCache[i];\n\n if (page) {\n var cleanupSuccessful = page.cleanup();\n\n if (!cleanupSuccessful) {\n throw new Error(\"startCleanup: Page \".concat(i + 1, \" is currently rendering.\"));\n }\n }\n }\n\n _this17.commonObjs.clear();\n\n _this17.fontLoader.clear();\n });\n }\n }, {\n key: \"loadingParams\",\n get: function get() {\n var params = this._params;\n return (0, _util.shadow)(this, \"loadingParams\", {\n disableAutoFetch: params.disableAutoFetch,\n disableFontFace: params.disableFontFace\n });\n }\n }]);\n\n return WorkerTransport;\n}();\n\nvar PDFObjects = /*#__PURE__*/function () {\n function PDFObjects() {\n _classCallCheck(this, PDFObjects);\n\n this._objs = Object.create(null);\n }\n\n _createClass(PDFObjects, [{\n key: \"_ensureObj\",\n value: function _ensureObj(objId) {\n if (this._objs[objId]) {\n return this._objs[objId];\n }\n\n return this._objs[objId] = {\n capability: (0, _util.createPromiseCapability)(),\n data: null,\n resolved: false\n };\n }\n }, {\n key: \"get\",\n value: function get(objId) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n if (callback) {\n this._ensureObj(objId).capability.promise.then(callback);\n\n return null;\n }\n\n var obj = this._objs[objId];\n\n if (!obj || !obj.resolved) {\n throw new Error(\"Requesting object that isn't resolved yet \".concat(objId, \".\"));\n }\n\n return obj.data;\n }\n }, {\n key: \"has\",\n value: function has(objId) {\n var obj = this._objs[objId];\n return obj ? obj.resolved : false;\n }\n }, {\n key: \"resolve\",\n value: function resolve(objId, data) {\n var obj = this._ensureObj(objId);\n\n obj.resolved = true;\n obj.data = data;\n obj.capability.resolve(data);\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this._objs = Object.create(null);\n }\n }]);\n\n return PDFObjects;\n}();\n\nvar RenderTask = /*#__PURE__*/function () {\n function RenderTask(internalRenderTask) {\n _classCallCheck(this, RenderTask);\n\n this._internalRenderTask = internalRenderTask;\n this.onContinue = null;\n }\n\n _createClass(RenderTask, [{\n key: \"cancel\",\n value: function cancel() {\n this._internalRenderTask.cancel();\n }\n }, {\n key: \"promise\",\n get: function get() {\n return this._internalRenderTask.capability.promise;\n }\n }]);\n\n return RenderTask;\n}();\n\nvar InternalRenderTask = function InternalRenderTaskClosure() {\n var canvasInRendering = new WeakSet();\n\n var InternalRenderTask = /*#__PURE__*/function () {\n function InternalRenderTask(_ref16) {\n var callback = _ref16.callback,\n params = _ref16.params,\n objs = _ref16.objs,\n commonObjs = _ref16.commonObjs,\n operatorList = _ref16.operatorList,\n pageIndex = _ref16.pageIndex,\n canvasFactory = _ref16.canvasFactory,\n webGLContext = _ref16.webGLContext,\n _ref16$useRequestAnim = _ref16.useRequestAnimationFrame,\n useRequestAnimationFrame = _ref16$useRequestAnim === void 0 ? false : _ref16$useRequestAnim,\n _ref16$pdfBug = _ref16.pdfBug,\n pdfBug = _ref16$pdfBug === void 0 ? false : _ref16$pdfBug;\n\n _classCallCheck(this, InternalRenderTask);\n\n this.callback = callback;\n this.params = params;\n this.objs = objs;\n this.commonObjs = commonObjs;\n this.operatorListIdx = null;\n this.operatorList = operatorList;\n this._pageIndex = pageIndex;\n this.canvasFactory = canvasFactory;\n this.webGLContext = webGLContext;\n this._pdfBug = pdfBug;\n this.running = false;\n this.graphicsReadyCallback = null;\n this.graphicsReady = false;\n this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== \"undefined\";\n this.cancelled = false;\n this.capability = (0, _util.createPromiseCapability)();\n this.task = new RenderTask(this);\n this._continueBound = this._continue.bind(this);\n this._scheduleNextBound = this._scheduleNext.bind(this);\n this._nextBound = this._next.bind(this);\n this._canvas = params.canvasContext.canvas;\n }\n\n _createClass(InternalRenderTask, [{\n key: \"initializeGraphics\",\n value: function initializeGraphics() {\n var transparency = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (this.cancelled) {\n return;\n }\n\n if (this._canvas) {\n if (canvasInRendering.has(this._canvas)) {\n throw new Error(\"Cannot use the same canvas during multiple render() operations. \" + \"Use different canvas or ensure previous operations were \" + \"cancelled or completed.\");\n }\n\n canvasInRendering.add(this._canvas);\n }\n\n if (this._pdfBug && globalThis.StepperManager && globalThis.StepperManager.enabled) {\n this.stepper = globalThis.StepperManager.create(this._pageIndex);\n this.stepper.init(this.operatorList);\n this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n }\n\n var _this$params = this.params,\n canvasContext = _this$params.canvasContext,\n viewport = _this$params.viewport,\n transform = _this$params.transform,\n imageLayer = _this$params.imageLayer,\n background = _this$params.background;\n this.gfx = new _canvas.CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.webGLContext, imageLayer);\n this.gfx.beginDrawing({\n transform: transform,\n viewport: viewport,\n transparency: transparency,\n background: background\n });\n this.operatorListIdx = 0;\n this.graphicsReady = true;\n\n if (this.graphicsReadyCallback) {\n this.graphicsReadyCallback();\n }\n }\n }, {\n key: \"cancel\",\n value: function cancel() {\n var error = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n this.running = false;\n this.cancelled = true;\n\n if (this.gfx) {\n this.gfx.endDrawing();\n }\n\n if (this._canvas) {\n canvasInRendering[\"delete\"](this._canvas);\n }\n\n this.callback(error || new _display_utils.RenderingCancelledException(\"Rendering cancelled, page \".concat(this._pageIndex + 1), \"canvas\"));\n }\n }, {\n key: \"operatorListChanged\",\n value: function operatorListChanged() {\n if (!this.graphicsReady) {\n if (!this.graphicsReadyCallback) {\n this.graphicsReadyCallback = this._continueBound;\n }\n\n return;\n }\n\n if (this.stepper) {\n this.stepper.updateOperatorList(this.operatorList);\n }\n\n if (this.running) {\n return;\n }\n\n this._continue();\n }\n }, {\n key: \"_continue\",\n value: function _continue() {\n this.running = true;\n\n if (this.cancelled) {\n return;\n }\n\n if (this.task.onContinue) {\n this.task.onContinue(this._scheduleNextBound);\n } else {\n this._scheduleNext();\n }\n }\n }, {\n key: \"_scheduleNext\",\n value: function _scheduleNext() {\n var _this18 = this;\n\n if (this._useRequestAnimationFrame) {\n window.requestAnimationFrame(function () {\n _this18._nextBound()[\"catch\"](_this18.cancel.bind(_this18));\n });\n } else {\n Promise.resolve().then(this._nextBound)[\"catch\"](this.cancel.bind(this));\n }\n }\n }, {\n key: \"_next\",\n value: function () {\n var _next2 = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee2() {\n return _regenerator[\"default\"].wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!this.cancelled) {\n _context2.next = 2;\n break;\n }\n\n return _context2.abrupt(\"return\");\n\n case 2:\n this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);\n\n if (this.operatorListIdx === this.operatorList.argsArray.length) {\n this.running = false;\n\n if (this.operatorList.lastChunk) {\n this.gfx.endDrawing();\n\n if (this._canvas) {\n canvasInRendering[\"delete\"](this._canvas);\n }\n\n this.callback();\n }\n }\n\n case 4:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function _next() {\n return _next2.apply(this, arguments);\n }\n\n return _next;\n }()\n }]);\n\n return InternalRenderTask;\n }();\n\n return InternalRenderTask;\n}();\n\nvar version = '2.5.207';\nexports.version = version;\nvar build = '0974d605';\nexports.build = build;\n\n/***/ }),\n/* 199 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FontLoader = exports.FontFaceObject = void 0;\n\nvar _regenerator = _interopRequireDefault(__w_pdfjs_require__(2));\n\nvar _util = __w_pdfjs_require__(5);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar BaseFontLoader = /*#__PURE__*/function () {\n function BaseFontLoader(_ref) {\n var docId = _ref.docId,\n onUnsupportedFeature = _ref.onUnsupportedFeature;\n\n _classCallCheck(this, BaseFontLoader);\n\n if (this.constructor === BaseFontLoader) {\n (0, _util.unreachable)(\"Cannot initialize BaseFontLoader.\");\n }\n\n this.docId = docId;\n this._onUnsupportedFeature = onUnsupportedFeature;\n this.nativeFontFaces = [];\n this.styleElement = null;\n }\n\n _createClass(BaseFontLoader, [{\n key: \"addNativeFontFace\",\n value: function addNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.push(nativeFontFace);\n document.fonts.add(nativeFontFace);\n }\n }, {\n key: \"insertRule\",\n value: function insertRule(rule) {\n var styleElement = this.styleElement;\n\n if (!styleElement) {\n styleElement = this.styleElement = document.createElement(\"style\");\n styleElement.id = \"PDFJS_FONT_STYLE_TAG_\".concat(this.docId);\n document.documentElement.getElementsByTagName(\"head\")[0].appendChild(styleElement);\n }\n\n var styleSheet = styleElement.sheet;\n styleSheet.insertRule(rule, styleSheet.cssRules.length);\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.nativeFontFaces.forEach(function (nativeFontFace) {\n document.fonts[\"delete\"](nativeFontFace);\n });\n this.nativeFontFaces.length = 0;\n\n if (this.styleElement) {\n this.styleElement.remove();\n this.styleElement = null;\n }\n }\n }, {\n key: \"bind\",\n value: function () {\n var _bind = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee(font) {\n var _this = this;\n\n var nativeFontFace, rule;\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!(font.attached || font.missingFile)) {\n _context.next = 2;\n break;\n }\n\n return _context.abrupt(\"return\");\n\n case 2:\n font.attached = true;\n\n if (!this.isFontLoadingAPISupported) {\n _context.next = 19;\n break;\n }\n\n nativeFontFace = font.createNativeFontFace();\n\n if (!nativeFontFace) {\n _context.next = 18;\n break;\n }\n\n this.addNativeFontFace(nativeFontFace);\n _context.prev = 7;\n _context.next = 10;\n return nativeFontFace.loaded;\n\n case 10:\n _context.next = 18;\n break;\n\n case 12:\n _context.prev = 12;\n _context.t0 = _context[\"catch\"](7);\n\n this._onUnsupportedFeature({\n featureId: _util.UNSUPPORTED_FEATURES.errorFontLoadNative\n });\n\n (0, _util.warn)(\"Failed to load font '\".concat(nativeFontFace.family, \"': '\").concat(_context.t0, \"'.\"));\n font.disableFontFace = true;\n throw _context.t0;\n\n case 18:\n return _context.abrupt(\"return\");\n\n case 19:\n rule = font.createFontFaceRule();\n\n if (!rule) {\n _context.next = 26;\n break;\n }\n\n this.insertRule(rule);\n\n if (!this.isSyncFontLoadingSupported) {\n _context.next = 24;\n break;\n }\n\n return _context.abrupt(\"return\");\n\n case 24:\n _context.next = 26;\n return new Promise(function (resolve) {\n var request = _this._queueLoadingCallback(resolve);\n\n _this._prepareFontLoadEvent([rule], [font], request);\n });\n\n case 26:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this, [[7, 12]]);\n }));\n\n function bind(_x) {\n return _bind.apply(this, arguments);\n }\n\n return bind;\n }()\n }, {\n key: \"_queueLoadingCallback\",\n value: function _queueLoadingCallback(callback) {\n (0, _util.unreachable)(\"Abstract method `_queueLoadingCallback`.\");\n }\n }, {\n key: \"_prepareFontLoadEvent\",\n value: function _prepareFontLoadEvent(rules, fontsToLoad, request) {\n (0, _util.unreachable)(\"Abstract method `_prepareFontLoadEvent`.\");\n }\n }, {\n key: \"isFontLoadingAPISupported\",\n get: function get() {\n var supported = typeof document !== \"undefined\" && !!document.fonts;\n return (0, _util.shadow)(this, \"isFontLoadingAPISupported\", supported);\n }\n }, {\n key: \"isSyncFontLoadingSupported\",\n get: function get() {\n (0, _util.unreachable)(\"Abstract method `isSyncFontLoadingSupported`.\");\n }\n }, {\n key: \"_loadTestFont\",\n get: function get() {\n (0, _util.unreachable)(\"Abstract method `_loadTestFont`.\");\n }\n }]);\n\n return BaseFontLoader;\n}();\n\nvar FontLoader;\nexports.FontLoader = FontLoader;\n{\n exports.FontLoader = FontLoader = /*#__PURE__*/function (_BaseFontLoader) {\n _inherits(GenericFontLoader, _BaseFontLoader);\n\n var _super = _createSuper(GenericFontLoader);\n\n function GenericFontLoader(docId) {\n var _this2;\n\n _classCallCheck(this, GenericFontLoader);\n\n _this2 = _super.call(this, docId);\n _this2.loadingContext = {\n requests: [],\n nextRequestId: 0\n };\n _this2.loadTestFontId = 0;\n return _this2;\n }\n\n _createClass(GenericFontLoader, [{\n key: \"_queueLoadingCallback\",\n value: function _queueLoadingCallback(callback) {\n function completeRequest() {\n (0, _util.assert)(!request.done, \"completeRequest() cannot be called twice.\");\n request.done = true;\n\n while (context.requests.length > 0 && context.requests[0].done) {\n var otherRequest = context.requests.shift();\n setTimeout(otherRequest.callback, 0);\n }\n }\n\n var context = this.loadingContext;\n var request = {\n id: \"pdfjs-font-loading-\".concat(context.nextRequestId++),\n done: false,\n complete: completeRequest,\n callback: callback\n };\n context.requests.push(request);\n return request;\n }\n }, {\n key: \"_prepareFontLoadEvent\",\n value: function _prepareFontLoadEvent(rules, fonts, request) {\n function int32(data, offset) {\n return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff;\n }\n\n function spliceString(s, offset, remove, insert) {\n var chunk1 = s.substring(0, offset);\n var chunk2 = s.substring(offset + remove);\n return chunk1 + insert + chunk2;\n }\n\n var i, ii;\n var canvas = document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = 1;\n var ctx = canvas.getContext(\"2d\");\n var called = 0;\n\n function isFontReady(name, callback) {\n called++;\n\n if (called > 30) {\n (0, _util.warn)(\"Load test font never loaded.\");\n callback();\n return;\n }\n\n ctx.font = \"30px \" + name;\n ctx.fillText(\".\", 0, 20);\n var imageData = ctx.getImageData(0, 0, 1, 1);\n\n if (imageData.data[3] > 0) {\n callback();\n return;\n }\n\n setTimeout(isFontReady.bind(null, name, callback));\n }\n\n var loadTestFontId = \"lt\".concat(Date.now()).concat(this.loadTestFontId++);\n var data = this._loadTestFont;\n var COMMENT_OFFSET = 976;\n data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId);\n var CFF_CHECKSUM_OFFSET = 16;\n var XXXX_VALUE = 0x58585858;\n var checksum = int32(data, CFF_CHECKSUM_OFFSET);\n\n for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0;\n }\n\n if (i < loadTestFontId.length) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i) | 0;\n }\n\n data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, (0, _util.string32)(checksum));\n var url = \"url(data:font/opentype;base64,\".concat(btoa(data), \");\");\n var rule = \"@font-face {font-family:\\\"\".concat(loadTestFontId, \"\\\";src:\").concat(url, \"}\");\n this.insertRule(rule);\n var names = [];\n\n for (i = 0, ii = fonts.length; i < ii; i++) {\n names.push(fonts[i].loadedName);\n }\n\n names.push(loadTestFontId);\n var div = document.createElement(\"div\");\n div.style.visibility = \"hidden\";\n div.style.width = div.style.height = \"10px\";\n div.style.position = \"absolute\";\n div.style.top = div.style.left = \"0px\";\n\n for (i = 0, ii = names.length; i < ii; ++i) {\n var span = document.createElement(\"span\");\n span.textContent = \"Hi\";\n span.style.fontFamily = names[i];\n div.appendChild(span);\n }\n\n document.body.appendChild(div);\n isFontReady(loadTestFontId, function () {\n document.body.removeChild(div);\n request.complete();\n });\n }\n }, {\n key: \"isSyncFontLoadingSupported\",\n get: function get() {\n var supported = false;\n\n if (typeof navigator === \"undefined\") {\n supported = true;\n } else {\n var m = /Mozilla\\/5.0.*?rv:(\\d+).*? Gecko/.exec(navigator.userAgent);\n\n if (m && m[1] >= 14) {\n supported = true;\n }\n }\n\n return (0, _util.shadow)(this, \"isSyncFontLoadingSupported\", supported);\n }\n }, {\n key: \"_loadTestFont\",\n get: function get() {\n var getLoadTestFont = function getLoadTestFont() {\n return atob(\"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA\" + \"FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA\" + \"ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA\" + \"AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1\" + \"AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD\" + \"6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM\" + \"AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D\" + \"IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA\" + \"AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA\" + \"AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB\" + \"AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY\" + \"AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA\" + \"AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA\" + \"AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC\" + \"AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3\" + \"Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj\" + \"FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\");\n };\n\n return (0, _util.shadow)(this, \"_loadTestFont\", getLoadTestFont());\n }\n }]);\n\n return GenericFontLoader;\n }(BaseFontLoader);\n}\n\nvar FontFaceObject = /*#__PURE__*/function () {\n function FontFaceObject(translatedData, _ref2) {\n var _ref2$isEvalSupported = _ref2.isEvalSupported,\n isEvalSupported = _ref2$isEvalSupported === void 0 ? true : _ref2$isEvalSupported,\n _ref2$disableFontFace = _ref2.disableFontFace,\n disableFontFace = _ref2$disableFontFace === void 0 ? false : _ref2$disableFontFace,\n _ref2$ignoreErrors = _ref2.ignoreErrors,\n ignoreErrors = _ref2$ignoreErrors === void 0 ? false : _ref2$ignoreErrors,\n _ref2$onUnsupportedFe = _ref2.onUnsupportedFeature,\n onUnsupportedFeature = _ref2$onUnsupportedFe === void 0 ? null : _ref2$onUnsupportedFe,\n _ref2$fontRegistry = _ref2.fontRegistry,\n fontRegistry = _ref2$fontRegistry === void 0 ? null : _ref2$fontRegistry;\n\n _classCallCheck(this, FontFaceObject);\n\n this.compiledGlyphs = Object.create(null);\n\n for (var i in translatedData) {\n this[i] = translatedData[i];\n }\n\n this.isEvalSupported = isEvalSupported !== false;\n this.disableFontFace = disableFontFace === true;\n this.ignoreErrors = ignoreErrors === true;\n this._onUnsupportedFeature = onUnsupportedFeature;\n this.fontRegistry = fontRegistry;\n }\n\n _createClass(FontFaceObject, [{\n key: \"createNativeFontFace\",\n value: function createNativeFontFace() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n\n var nativeFontFace = new FontFace(this.loadedName, this.data, {});\n\n if (this.fontRegistry) {\n this.fontRegistry.registerFont(this);\n }\n\n return nativeFontFace;\n }\n }, {\n key: \"createFontFaceRule\",\n value: function createFontFaceRule() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n\n var data = (0, _util.bytesToString)(new Uint8Array(this.data));\n var url = \"url(data:\".concat(this.mimetype, \";base64,\").concat(btoa(data), \");\");\n var rule = \"@font-face {font-family:\\\"\".concat(this.loadedName, \"\\\";src:\").concat(url, \"}\");\n\n if (this.fontRegistry) {\n this.fontRegistry.registerFont(this, url);\n }\n\n return rule;\n }\n }, {\n key: \"getPathGenerator\",\n value: function getPathGenerator(objs, character) {\n if (this.compiledGlyphs[character] !== undefined) {\n return this.compiledGlyphs[character];\n }\n\n var cmds, current;\n\n try {\n cmds = objs.get(this.loadedName + \"_path_\" + character);\n } catch (ex) {\n if (!this.ignoreErrors) {\n throw ex;\n }\n\n if (this._onUnsupportedFeature) {\n this._onUnsupportedFeature({\n featureId: _util.UNSUPPORTED_FEATURES.errorFontGetPath\n });\n }\n\n (0, _util.warn)(\"getPathGenerator - ignoring character: \\\"\".concat(ex, \"\\\".\"));\n return this.compiledGlyphs[character] = function (c, size) {};\n }\n\n if (this.isEvalSupported && _util.IsEvalSupportedCached.value) {\n var args,\n js = \"\";\n\n for (var i = 0, ii = cmds.length; i < ii; i++) {\n current = cmds[i];\n\n if (current.args !== undefined) {\n args = current.args.join(\",\");\n } else {\n args = \"\";\n }\n\n js += \"c.\" + current.cmd + \"(\" + args + \");\\n\";\n }\n\n return this.compiledGlyphs[character] = new Function(\"c\", \"size\", js);\n }\n\n return this.compiledGlyphs[character] = function (c, size) {\n for (var _i = 0, _ii = cmds.length; _i < _ii; _i++) {\n current = cmds[_i];\n\n if (current.cmd === \"scale\") {\n current.args = [size, -size];\n }\n\n c[current.cmd].apply(c, current.args);\n }\n };\n }\n }]);\n\n return FontFaceObject;\n}();\n\nexports.FontFaceObject = FontFaceObject;\n\n/***/ }),\n/* 200 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.apiCompatibilityParams = void 0;\n\nvar _is_node = __w_pdfjs_require__(7);\n\nvar compatibilityParams = Object.create(null);\n{\n (function checkFontFace() {\n if (_is_node.isNodeJS) {\n compatibilityParams.disableFontFace = true;\n }\n })();\n}\nvar apiCompatibilityParams = Object.freeze(compatibilityParams);\nexports.apiCompatibilityParams = apiCompatibilityParams;\n\n/***/ }),\n/* 201 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CanvasGraphics = void 0;\n\nvar _util = __w_pdfjs_require__(5);\n\nvar _pattern_helper = __w_pdfjs_require__(202);\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nvar MIN_FONT_SIZE = 16;\nvar MAX_FONT_SIZE = 100;\nvar MAX_GROUP_SIZE = 4096;\nvar MIN_WIDTH_FACTOR = 0.65;\nvar COMPILE_TYPE3_GLYPHS = true;\nvar MAX_SIZE_TO_COMPILE = 1000;\nvar FULL_CHUNK_HEIGHT = 16;\n\nfunction addContextCurrentTransform(ctx) {\n if (!ctx.mozCurrentTransform) {\n ctx._originalSave = ctx.save;\n ctx._originalRestore = ctx.restore;\n ctx._originalRotate = ctx.rotate;\n ctx._originalScale = ctx.scale;\n ctx._originalTranslate = ctx.translate;\n ctx._originalTransform = ctx.transform;\n ctx._originalSetTransform = ctx.setTransform;\n ctx._transformMatrix = ctx._transformMatrix || [1, 0, 0, 1, 0, 0];\n ctx._transformStack = [];\n Object.defineProperty(ctx, \"mozCurrentTransform\", {\n get: function getCurrentTransform() {\n return this._transformMatrix;\n }\n });\n Object.defineProperty(ctx, \"mozCurrentTransformInverse\", {\n get: function getCurrentTransformInverse() {\n var m = this._transformMatrix;\n var a = m[0],\n b = m[1],\n c = m[2],\n d = m[3],\n e = m[4],\n f = m[5];\n var ad_bc = a * d - b * c;\n var bc_ad = b * c - a * d;\n return [d / ad_bc, b / bc_ad, c / bc_ad, a / ad_bc, (d * e - c * f) / bc_ad, (b * e - a * f) / ad_bc];\n }\n });\n\n ctx.save = function ctxSave() {\n var old = this._transformMatrix;\n\n this._transformStack.push(old);\n\n this._transformMatrix = old.slice(0, 6);\n\n this._originalSave();\n };\n\n ctx.restore = function ctxRestore() {\n var prev = this._transformStack.pop();\n\n if (prev) {\n this._transformMatrix = prev;\n\n this._originalRestore();\n }\n };\n\n ctx.translate = function ctxTranslate(x, y) {\n var m = this._transformMatrix;\n m[4] = m[0] * x + m[2] * y + m[4];\n m[5] = m[1] * x + m[3] * y + m[5];\n\n this._originalTranslate(x, y);\n };\n\n ctx.scale = function ctxScale(x, y) {\n var m = this._transformMatrix;\n m[0] = m[0] * x;\n m[1] = m[1] * x;\n m[2] = m[2] * y;\n m[3] = m[3] * y;\n\n this._originalScale(x, y);\n };\n\n ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n var m = this._transformMatrix;\n this._transformMatrix = [m[0] * a + m[2] * b, m[1] * a + m[3] * b, m[0] * c + m[2] * d, m[1] * c + m[3] * d, m[0] * e + m[2] * f + m[4], m[1] * e + m[3] * f + m[5]];\n\n ctx._originalTransform(a, b, c, d, e, f);\n };\n\n ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n this._transformMatrix = [a, b, c, d, e, f];\n\n ctx._originalSetTransform(a, b, c, d, e, f);\n };\n\n ctx.rotate = function ctxRotate(angle) {\n var cosValue = Math.cos(angle);\n var sinValue = Math.sin(angle);\n var m = this._transformMatrix;\n this._transformMatrix = [m[0] * cosValue + m[2] * sinValue, m[1] * cosValue + m[3] * sinValue, m[0] * -sinValue + m[2] * cosValue, m[1] * -sinValue + m[3] * cosValue, m[4], m[5]];\n\n this._originalRotate(angle);\n };\n }\n}\n\nvar CachedCanvases = function CachedCanvasesClosure() {\n function CachedCanvases(canvasFactory) {\n this.canvasFactory = canvasFactory;\n this.cache = Object.create(null);\n }\n\n CachedCanvases.prototype = {\n getCanvas: function CachedCanvases_getCanvas(id, width, height, trackTransform) {\n var canvasEntry;\n\n if (this.cache[id] !== undefined) {\n canvasEntry = this.cache[id];\n this.canvasFactory.reset(canvasEntry, width, height);\n canvasEntry.context.setTransform(1, 0, 0, 1, 0, 0);\n } else {\n canvasEntry = this.canvasFactory.create(width, height);\n this.cache[id] = canvasEntry;\n }\n\n if (trackTransform) {\n addContextCurrentTransform(canvasEntry.context);\n }\n\n return canvasEntry;\n },\n clear: function clear() {\n for (var id in this.cache) {\n var canvasEntry = this.cache[id];\n this.canvasFactory.destroy(canvasEntry);\n delete this.cache[id];\n }\n }\n };\n return CachedCanvases;\n}();\n\nfunction compileType3Glyph(imgData) {\n var POINT_TO_PROCESS_LIMIT = 1000;\n var width = imgData.width,\n height = imgData.height;\n var i,\n j,\n j0,\n width1 = width + 1;\n var points = new Uint8Array(width1 * (height + 1));\n var POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);\n var lineSize = width + 7 & ~7,\n data0 = imgData.data;\n var data = new Uint8Array(lineSize * height),\n pos = 0,\n ii;\n\n for (i = 0, ii = data0.length; i < ii; i++) {\n var mask = 128,\n elem = data0[i];\n\n while (mask > 0) {\n data[pos++] = elem & mask ? 0 : 255;\n mask >>= 1;\n }\n }\n\n var count = 0;\n pos = 0;\n\n if (data[pos] !== 0) {\n points[0] = 1;\n ++count;\n }\n\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j] = data[pos] ? 2 : 1;\n ++count;\n }\n\n pos++;\n }\n\n if (data[pos] !== 0) {\n points[j] = 2;\n ++count;\n }\n\n for (i = 1; i < height; i++) {\n pos = i * lineSize;\n j0 = i * width1;\n\n if (data[pos - lineSize] !== data[pos]) {\n points[j0] = data[pos] ? 1 : 8;\n ++count;\n }\n\n var sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n\n for (j = 1; j < width; j++) {\n sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0);\n\n if (POINT_TYPES[sum]) {\n points[j0 + j] = POINT_TYPES[sum];\n ++count;\n }\n\n pos++;\n }\n\n if (data[pos - lineSize] !== data[pos]) {\n points[j0 + j] = data[pos] ? 2 : 4;\n ++count;\n }\n\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n }\n\n pos = lineSize * (height - 1);\n j0 = i * width1;\n\n if (data[pos] !== 0) {\n points[j0] = 8;\n ++count;\n }\n\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j0 + j] = data[pos] ? 4 : 8;\n ++count;\n }\n\n pos++;\n }\n\n if (data[pos] !== 0) {\n points[j0 + j] = 4;\n ++count;\n }\n\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n\n var steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n var outlines = [];\n\n for (i = 0; count && i <= height; i++) {\n var p = i * width1;\n var end = p + width;\n\n while (p < end && !points[p]) {\n p++;\n }\n\n if (p === end) {\n continue;\n }\n\n var coords = [p % width1, i];\n var type = points[p],\n p0 = p,\n pp;\n\n do {\n var step = steps[type];\n\n do {\n p += step;\n } while (!points[p]);\n\n pp = points[p];\n\n if (pp !== 5 && pp !== 10) {\n type = pp;\n points[p] = 0;\n } else {\n type = pp & 0x33 * type >> 4;\n points[p] &= type >> 2 | type << 2;\n }\n\n coords.push(p % width1);\n coords.push(p / width1 | 0);\n\n if (!points[p]) {\n --count;\n }\n } while (p0 !== p);\n\n outlines.push(coords);\n --i;\n }\n\n var drawOutline = function drawOutline(c) {\n c.save();\n c.scale(1 / width, -1 / height);\n c.translate(0, -height);\n c.beginPath();\n\n for (var k = 0, kk = outlines.length; k < kk; k++) {\n var o = outlines[k];\n c.moveTo(o[0], o[1]);\n\n for (var l = 2, ll = o.length; l < ll; l += 2) {\n c.lineTo(o[l], o[l + 1]);\n }\n }\n\n c.fill();\n c.beginPath();\n c.restore();\n };\n\n return drawOutline;\n}\n\nvar CanvasExtraState = function CanvasExtraStateClosure() {\n function CanvasExtraState() {\n this.alphaIsShape = false;\n this.fontSize = 0;\n this.fontSizeScale = 1;\n this.textMatrix = _util.IDENTITY_MATRIX;\n this.textMatrixScale = 1;\n this.fontMatrix = _util.FONT_IDENTITY_MATRIX;\n this.leading = 0;\n this.x = 0;\n this.y = 0;\n this.lineX = 0;\n this.lineY = 0;\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRenderingMode = _util.TextRenderingMode.FILL;\n this.textRise = 0;\n this.fillColor = \"#000000\";\n this.strokeColor = \"#000000\";\n this.patternFill = false;\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.activeSMask = null;\n this.resumeSMaskCtx = null;\n }\n\n CanvasExtraState.prototype = {\n clone: function CanvasExtraState_clone() {\n return Object.create(this);\n },\n setCurrentPoint: function CanvasExtraState_setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\n };\n return CanvasExtraState;\n}();\n\nvar CanvasGraphics = function CanvasGraphicsClosure() {\n var EXECUTION_TIME = 15;\n var EXECUTION_STEPS = 10;\n\n function CanvasGraphics(canvasCtx, commonObjs, objs, canvasFactory, webGLContext, imageLayer) {\n this.ctx = canvasCtx;\n this.current = new CanvasExtraState();\n this.stateStack = [];\n this.pendingClip = null;\n this.pendingEOFill = false;\n this.res = null;\n this.xobjs = null;\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.canvasFactory = canvasFactory;\n this.webGLContext = webGLContext;\n this.imageLayer = imageLayer;\n this.groupStack = [];\n this.processingType3 = null;\n this.baseTransform = null;\n this.baseTransformStack = [];\n this.groupLevel = 0;\n this.smaskStack = [];\n this.smaskCounter = 0;\n this.tempSMask = null;\n this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n\n if (canvasCtx) {\n addContextCurrentTransform(canvasCtx);\n }\n\n this._cachedGetSinglePixelWidth = null;\n }\n\n function putBinaryImageData(ctx, imgData) {\n if (typeof ImageData !== \"undefined\" && imgData instanceof ImageData) {\n ctx.putImageData(imgData, 0, 0);\n return;\n }\n\n var height = imgData.height,\n width = imgData.width;\n var partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n var srcPos = 0,\n destPos;\n var src = imgData.data;\n var dest = chunkImgData.data;\n var i, j, thisChunkHeight, elemsInThisChunk;\n\n if (imgData.kind === _util.ImageKind.GRAYSCALE_1BPP) {\n var srcLength = src.byteLength;\n var dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n var dest32DataLength = dest32.length;\n var fullSrcDiff = width + 7 >> 3;\n var white = 0xffffffff;\n var black = _util.IsLittleEndianCached.value ? 0xff000000 : 0x000000ff;\n\n for (i = 0; i < totalChunks; i++) {\n thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n destPos = 0;\n\n for (j = 0; j < thisChunkHeight; j++) {\n var srcDiff = srcLength - srcPos;\n var k = 0;\n var kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;\n var kEndUnrolled = kEnd & ~7;\n var mask = 0;\n var srcByte = 0;\n\n for (; k < kEndUnrolled; k += 8) {\n srcByte = src[srcPos++];\n dest32[destPos++] = srcByte & 128 ? white : black;\n dest32[destPos++] = srcByte & 64 ? white : black;\n dest32[destPos++] = srcByte & 32 ? white : black;\n dest32[destPos++] = srcByte & 16 ? white : black;\n dest32[destPos++] = srcByte & 8 ? white : black;\n dest32[destPos++] = srcByte & 4 ? white : black;\n dest32[destPos++] = srcByte & 2 ? white : black;\n dest32[destPos++] = srcByte & 1 ? white : black;\n }\n\n for (; k < kEnd; k++) {\n if (mask === 0) {\n srcByte = src[srcPos++];\n mask = 128;\n }\n\n dest32[destPos++] = srcByte & mask ? white : black;\n mask >>= 1;\n }\n }\n\n while (destPos < dest32DataLength) {\n dest32[destPos++] = 0;\n }\n\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else if (imgData.kind === _util.ImageKind.RGBA_32BPP) {\n j = 0;\n elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n\n for (i = 0; i < fullChunks; i++) {\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n srcPos += elemsInThisChunk;\n ctx.putImageData(chunkImgData, 0, j);\n j += FULL_CHUNK_HEIGHT;\n }\n\n if (i < totalChunks) {\n elemsInThisChunk = width * partialChunkHeight * 4;\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n ctx.putImageData(chunkImgData, 0, j);\n }\n } else if (imgData.kind === _util.ImageKind.RGB_24BPP) {\n thisChunkHeight = FULL_CHUNK_HEIGHT;\n elemsInThisChunk = width * thisChunkHeight;\n\n for (i = 0; i < totalChunks; i++) {\n if (i >= fullChunks) {\n thisChunkHeight = partialChunkHeight;\n elemsInThisChunk = width * thisChunkHeight;\n }\n\n destPos = 0;\n\n for (j = elemsInThisChunk; j--;) {\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = 255;\n }\n\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else {\n throw new Error(\"bad image kind: \".concat(imgData.kind));\n }\n }\n\n function putBinaryImageMask(ctx, imgData) {\n var height = imgData.height,\n width = imgData.width;\n var partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n var srcPos = 0;\n var src = imgData.data;\n var dest = chunkImgData.data;\n\n for (var i = 0; i < totalChunks; i++) {\n var thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n var destPos = 3;\n\n for (var j = 0; j < thisChunkHeight; j++) {\n var mask = 0;\n\n for (var k = 0; k < width; k++) {\n if (!mask) {\n var elem = src[srcPos++];\n mask = 128;\n }\n\n dest[destPos] = elem & mask ? 0 : 255;\n destPos += 4;\n mask >>= 1;\n }\n }\n\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n }\n\n function copyCtxState(sourceCtx, destCtx) {\n var properties = [\"strokeStyle\", \"fillStyle\", \"fillRule\", \"globalAlpha\", \"lineWidth\", \"lineCap\", \"lineJoin\", \"miterLimit\", \"globalCompositeOperation\", \"font\"];\n\n for (var i = 0, ii = properties.length; i < ii; i++) {\n var property = properties[i];\n\n if (sourceCtx[property] !== undefined) {\n destCtx[property] = sourceCtx[property];\n }\n }\n\n if (sourceCtx.setLineDash !== undefined) {\n destCtx.setLineDash(sourceCtx.getLineDash());\n destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n }\n }\n\n function resetCtxToDefault(ctx) {\n ctx.strokeStyle = \"#000000\";\n ctx.fillStyle = \"#000000\";\n ctx.fillRule = \"nonzero\";\n ctx.globalAlpha = 1;\n ctx.lineWidth = 1;\n ctx.lineCap = \"butt\";\n ctx.lineJoin = \"miter\";\n ctx.miterLimit = 10;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.font = \"10px sans-serif\";\n\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash([]);\n ctx.lineDashOffset = 0;\n }\n }\n\n function composeSMaskBackdrop(bytes, r0, g0, b0) {\n var length = bytes.length;\n\n for (var i = 3; i < length; i += 4) {\n var alpha = bytes[i];\n\n if (alpha === 0) {\n bytes[i - 3] = r0;\n bytes[i - 2] = g0;\n bytes[i - 1] = b0;\n } else if (alpha < 255) {\n var alpha_ = 255 - alpha;\n bytes[i - 3] = bytes[i - 3] * alpha + r0 * alpha_ >> 8;\n bytes[i - 2] = bytes[i - 2] * alpha + g0 * alpha_ >> 8;\n bytes[i - 1] = bytes[i - 1] * alpha + b0 * alpha_ >> 8;\n }\n }\n }\n\n function composeSMaskAlpha(maskData, layerData, transferMap) {\n var length = maskData.length;\n var scale = 1 / 255;\n\n for (var i = 3; i < length; i += 4) {\n var alpha = transferMap ? transferMap[maskData[i]] : maskData[i];\n layerData[i] = layerData[i] * alpha * scale | 0;\n }\n }\n\n function composeSMaskLuminosity(maskData, layerData, transferMap) {\n var length = maskData.length;\n\n for (var i = 3; i < length; i += 4) {\n var y = maskData[i - 3] * 77 + maskData[i - 2] * 152 + maskData[i - 1] * 28;\n layerData[i] = transferMap ? layerData[i] * transferMap[y >> 8] >> 8 : layerData[i] * y >> 16;\n }\n }\n\n function genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap) {\n var hasBackdrop = !!backdrop;\n var r0 = hasBackdrop ? backdrop[0] : 0;\n var g0 = hasBackdrop ? backdrop[1] : 0;\n var b0 = hasBackdrop ? backdrop[2] : 0;\n var composeFn;\n\n if (subtype === \"Luminosity\") {\n composeFn = composeSMaskLuminosity;\n } else {\n composeFn = composeSMaskAlpha;\n }\n\n var PIXELS_TO_PROCESS = 1048576;\n var chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));\n\n for (var row = 0; row < height; row += chunkSize) {\n var chunkHeight = Math.min(chunkSize, height - row);\n var maskData = maskCtx.getImageData(0, row, width, chunkHeight);\n var layerData = layerCtx.getImageData(0, row, width, chunkHeight);\n\n if (hasBackdrop) {\n composeSMaskBackdrop(maskData.data, r0, g0, b0);\n }\n\n composeFn(maskData.data, layerData.data, transferMap);\n maskCtx.putImageData(layerData, 0, row);\n }\n }\n\n function composeSMask(ctx, smask, layerCtx, webGLContext) {\n var mask = smask.canvas;\n var maskCtx = smask.context;\n ctx.setTransform(smask.scaleX, 0, 0, smask.scaleY, smask.offsetX, smask.offsetY);\n var backdrop = smask.backdrop || null;\n\n if (!smask.transferMap && webGLContext.isEnabled) {\n var composed = webGLContext.composeSMask({\n layer: layerCtx.canvas,\n mask: mask,\n properties: {\n subtype: smask.subtype,\n backdrop: backdrop\n }\n });\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(composed, smask.offsetX, smask.offsetY);\n return;\n }\n\n genericComposeSMask(maskCtx, layerCtx, mask.width, mask.height, smask.subtype, backdrop, smask.transferMap);\n ctx.drawImage(mask, 0, 0);\n }\n\n var LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\n var LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\n var NORMAL_CLIP = {};\n var EO_CLIP = {};\n CanvasGraphics.prototype = {\n beginDrawing: function beginDrawing(_ref) {\n var transform = _ref.transform,\n viewport = _ref.viewport,\n _ref$transparency = _ref.transparency,\n transparency = _ref$transparency === void 0 ? false : _ref$transparency,\n _ref$background = _ref.background,\n background = _ref$background === void 0 ? null : _ref$background;\n var width = this.ctx.canvas.width;\n var height = this.ctx.canvas.height;\n this.ctx.save();\n this.ctx.fillStyle = background || \"rgb(255, 255, 255)\";\n this.ctx.fillRect(0, 0, width, height);\n this.ctx.restore();\n\n if (transparency) {\n var transparentCanvas = this.cachedCanvases.getCanvas(\"transparent\", width, height, true);\n this.compositeCtx = this.ctx;\n this.transparentCanvas = transparentCanvas.canvas;\n this.ctx = transparentCanvas.context;\n this.ctx.save();\n this.ctx.transform.apply(this.ctx, this.compositeCtx.mozCurrentTransform);\n }\n\n this.ctx.save();\n resetCtxToDefault(this.ctx);\n\n if (transform) {\n this.ctx.transform.apply(this.ctx, transform);\n }\n\n this.ctx.transform.apply(this.ctx, viewport.transform);\n this.baseTransform = this.ctx.mozCurrentTransform.slice();\n\n if (this.imageLayer) {\n this.imageLayer.beginLayout();\n }\n },\n executeOperatorList: function CanvasGraphics_executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) {\n var argsArray = operatorList.argsArray;\n var fnArray = operatorList.fnArray;\n var i = executionStartIdx || 0;\n var argsArrayLen = argsArray.length;\n\n if (argsArrayLen === i) {\n return i;\n }\n\n var chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === \"function\";\n var endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n var steps = 0;\n var commonObjs = this.commonObjs;\n var objs = this.objs;\n var fnId;\n\n while (true) {\n if (stepper !== undefined && i === stepper.nextBreakPoint) {\n stepper.breakIt(i, continueCallback);\n return i;\n }\n\n fnId = fnArray[i];\n\n if (fnId !== _util.OPS.dependency) {\n this[fnId].apply(this, argsArray[i]);\n } else {\n var _iterator = _createForOfIteratorHelper(argsArray[i]),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var depObjId = _step.value;\n var objsPool = depObjId.startsWith(\"g_\") ? commonObjs : objs;\n\n if (!objsPool.has(depObjId)) {\n objsPool.get(depObjId, continueCallback);\n return i;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n\n i++;\n\n if (i === argsArrayLen) {\n return i;\n }\n\n if (chunkOperations && ++steps > EXECUTION_STEPS) {\n if (Date.now() > endTime) {\n continueCallback();\n return i;\n }\n\n steps = 0;\n }\n }\n },\n endDrawing: function CanvasGraphics_endDrawing() {\n if (this.current.activeSMask !== null) {\n this.endSMaskGroup();\n }\n\n this.ctx.restore();\n\n if (this.transparentCanvas) {\n this.ctx = this.compositeCtx;\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.drawImage(this.transparentCanvas, 0, 0);\n this.ctx.restore();\n this.transparentCanvas = null;\n }\n\n this.cachedCanvases.clear();\n this.webGLContext.clear();\n\n if (this.imageLayer) {\n this.imageLayer.endLayout();\n }\n },\n setLineWidth: function CanvasGraphics_setLineWidth(width) {\n this.current.lineWidth = width;\n this.ctx.lineWidth = width;\n },\n setLineCap: function CanvasGraphics_setLineCap(style) {\n this.ctx.lineCap = LINE_CAP_STYLES[style];\n },\n setLineJoin: function CanvasGraphics_setLineJoin(style) {\n this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n },\n setMiterLimit: function CanvasGraphics_setMiterLimit(limit) {\n this.ctx.miterLimit = limit;\n },\n setDash: function CanvasGraphics_setDash(dashArray, dashPhase) {\n var ctx = this.ctx;\n\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash(dashArray);\n ctx.lineDashOffset = dashPhase;\n }\n },\n setRenderingIntent: function setRenderingIntent(intent) {},\n setFlatness: function setFlatness(flatness) {},\n setGState: function CanvasGraphics_setGState(states) {\n for (var i = 0, ii = states.length; i < ii; i++) {\n var state = states[i];\n var key = state[0];\n var value = state[1];\n\n switch (key) {\n case \"LW\":\n this.setLineWidth(value);\n break;\n\n case \"LC\":\n this.setLineCap(value);\n break;\n\n case \"LJ\":\n this.setLineJoin(value);\n break;\n\n case \"ML\":\n this.setMiterLimit(value);\n break;\n\n case \"D\":\n this.setDash(value[0], value[1]);\n break;\n\n case \"RI\":\n this.setRenderingIntent(value);\n break;\n\n case \"FL\":\n this.setFlatness(value);\n break;\n\n case \"Font\":\n this.setFont(value[0], value[1]);\n break;\n\n case \"CA\":\n this.current.strokeAlpha = state[1];\n break;\n\n case \"ca\":\n this.current.fillAlpha = state[1];\n this.ctx.globalAlpha = state[1];\n break;\n\n case \"BM\":\n this.ctx.globalCompositeOperation = value;\n break;\n\n case \"SMask\":\n if (this.current.activeSMask) {\n if (this.stateStack.length > 0 && this.stateStack[this.stateStack.length - 1].activeSMask === this.current.activeSMask) {\n this.suspendSMaskGroup();\n } else {\n this.endSMaskGroup();\n }\n }\n\n this.current.activeSMask = value ? this.tempSMask : null;\n\n if (this.current.activeSMask) {\n this.beginSMaskGroup();\n }\n\n this.tempSMask = null;\n break;\n }\n }\n },\n beginSMaskGroup: function CanvasGraphics_beginSMaskGroup() {\n var activeSMask = this.current.activeSMask;\n var drawnWidth = activeSMask.canvas.width;\n var drawnHeight = activeSMask.canvas.height;\n var cacheId = \"smaskGroupAt\" + this.groupLevel;\n var scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true);\n var currentCtx = this.ctx;\n var currentTransform = currentCtx.mozCurrentTransform;\n this.ctx.save();\n var groupCtx = scratchCanvas.context;\n groupCtx.scale(1 / activeSMask.scaleX, 1 / activeSMask.scaleY);\n groupCtx.translate(-activeSMask.offsetX, -activeSMask.offsetY);\n groupCtx.transform.apply(groupCtx, currentTransform);\n activeSMask.startTransformInverse = groupCtx.mozCurrentTransformInverse;\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n },\n suspendSMaskGroup: function CanvasGraphics_endSMaskGroup() {\n var groupCtx = this.ctx;\n this.groupLevel--;\n this.ctx = this.groupStack.pop();\n composeSMask(this.ctx, this.current.activeSMask, groupCtx, this.webGLContext);\n this.ctx.restore();\n this.ctx.save();\n copyCtxState(groupCtx, this.ctx);\n this.current.resumeSMaskCtx = groupCtx;\n\n var deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform);\n\n this.ctx.transform.apply(this.ctx, deltaTransform);\n groupCtx.save();\n groupCtx.setTransform(1, 0, 0, 1, 0, 0);\n groupCtx.clearRect(0, 0, groupCtx.canvas.width, groupCtx.canvas.height);\n groupCtx.restore();\n },\n resumeSMaskGroup: function CanvasGraphics_endSMaskGroup() {\n var groupCtx = this.current.resumeSMaskCtx;\n var currentCtx = this.ctx;\n this.ctx = groupCtx;\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n },\n endSMaskGroup: function CanvasGraphics_endSMaskGroup() {\n var groupCtx = this.ctx;\n this.groupLevel--;\n this.ctx = this.groupStack.pop();\n composeSMask(this.ctx, this.current.activeSMask, groupCtx, this.webGLContext);\n this.ctx.restore();\n copyCtxState(groupCtx, this.ctx);\n\n var deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform);\n\n this.ctx.transform.apply(this.ctx, deltaTransform);\n },\n save: function CanvasGraphics_save() {\n this.ctx.save();\n var old = this.current;\n this.stateStack.push(old);\n this.current = old.clone();\n this.current.resumeSMaskCtx = null;\n },\n restore: function CanvasGraphics_restore() {\n if (this.current.resumeSMaskCtx) {\n this.resumeSMaskGroup();\n }\n\n if (this.current.activeSMask !== null && (this.stateStack.length === 0 || this.stateStack[this.stateStack.length - 1].activeSMask !== this.current.activeSMask)) {\n this.endSMaskGroup();\n }\n\n if (this.stateStack.length !== 0) {\n this.current = this.stateStack.pop();\n this.ctx.restore();\n this.pendingClip = null;\n this._cachedGetSinglePixelWidth = null;\n }\n },\n transform: function CanvasGraphics_transform(a, b, c, d, e, f) {\n this.ctx.transform(a, b, c, d, e, f);\n this._cachedGetSinglePixelWidth = null;\n },\n constructPath: function CanvasGraphics_constructPath(ops, args) {\n var ctx = this.ctx;\n var current = this.current;\n var x = current.x,\n y = current.y;\n\n for (var i = 0, j = 0, ii = ops.length; i < ii; i++) {\n switch (ops[i] | 0) {\n case _util.OPS.rectangle:\n x = args[j++];\n y = args[j++];\n var width = args[j++];\n var height = args[j++];\n\n if (width === 0) {\n width = this.getSinglePixelWidth();\n }\n\n if (height === 0) {\n height = this.getSinglePixelWidth();\n }\n\n var xw = x + width;\n var yh = y + height;\n this.ctx.moveTo(x, y);\n this.ctx.lineTo(xw, y);\n this.ctx.lineTo(xw, yh);\n this.ctx.lineTo(x, yh);\n this.ctx.lineTo(x, y);\n this.ctx.closePath();\n break;\n\n case _util.OPS.moveTo:\n x = args[j++];\n y = args[j++];\n ctx.moveTo(x, y);\n break;\n\n case _util.OPS.lineTo:\n x = args[j++];\n y = args[j++];\n ctx.lineTo(x, y);\n break;\n\n case _util.OPS.curveTo:\n x = args[j + 4];\n y = args[j + 5];\n ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y);\n j += 6;\n break;\n\n case _util.OPS.curveTo2:\n ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]);\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n\n case _util.OPS.curveTo3:\n x = args[j + 2];\n y = args[j + 3];\n ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);\n j += 4;\n break;\n\n case _util.OPS.closePath:\n ctx.closePath();\n break;\n }\n }\n\n current.setCurrentPoint(x, y);\n },\n closePath: function CanvasGraphics_closePath() {\n this.ctx.closePath();\n },\n stroke: function CanvasGraphics_stroke(consumePath) {\n consumePath = typeof consumePath !== \"undefined\" ? consumePath : true;\n var ctx = this.ctx;\n var strokeColor = this.current.strokeColor;\n ctx.globalAlpha = this.current.strokeAlpha;\n\n if (strokeColor && strokeColor.hasOwnProperty(\"type\") && strokeColor.type === \"Pattern\") {\n ctx.save();\n var transform = ctx.mozCurrentTransform;\n\n var scale = _util.Util.singularValueDecompose2dScale(transform)[0];\n\n ctx.strokeStyle = strokeColor.getPattern(ctx, this);\n ctx.lineWidth = Math.max(this.getSinglePixelWidth() * MIN_WIDTH_FACTOR, this.current.lineWidth * scale);\n ctx.stroke();\n ctx.restore();\n } else {\n ctx.lineWidth = Math.max(this.getSinglePixelWidth() * MIN_WIDTH_FACTOR, this.current.lineWidth);\n ctx.stroke();\n }\n\n if (consumePath) {\n this.consumePath();\n }\n\n ctx.globalAlpha = this.current.fillAlpha;\n },\n closeStroke: function CanvasGraphics_closeStroke() {\n this.closePath();\n this.stroke();\n },\n fill: function CanvasGraphics_fill(consumePath) {\n consumePath = typeof consumePath !== \"undefined\" ? consumePath : true;\n var ctx = this.ctx;\n var fillColor = this.current.fillColor;\n var isPatternFill = this.current.patternFill;\n var needRestore = false;\n\n if (isPatternFill) {\n ctx.save();\n\n if (this.baseTransform) {\n ctx.setTransform.apply(ctx, this.baseTransform);\n }\n\n ctx.fillStyle = fillColor.getPattern(ctx, this);\n needRestore = true;\n }\n\n if (this.pendingEOFill) {\n ctx.fill(\"evenodd\");\n this.pendingEOFill = false;\n } else {\n ctx.fill();\n }\n\n if (needRestore) {\n ctx.restore();\n }\n\n if (consumePath) {\n this.consumePath();\n }\n },\n eoFill: function CanvasGraphics_eoFill() {\n this.pendingEOFill = true;\n this.fill();\n },\n fillStroke: function CanvasGraphics_fillStroke() {\n this.fill(false);\n this.stroke(false);\n this.consumePath();\n },\n eoFillStroke: function CanvasGraphics_eoFillStroke() {\n this.pendingEOFill = true;\n this.fillStroke();\n },\n closeFillStroke: function CanvasGraphics_closeFillStroke() {\n this.closePath();\n this.fillStroke();\n },\n closeEOFillStroke: function CanvasGraphics_closeEOFillStroke() {\n this.pendingEOFill = true;\n this.closePath();\n this.fillStroke();\n },\n endPath: function CanvasGraphics_endPath() {\n this.consumePath();\n },\n clip: function CanvasGraphics_clip() {\n this.pendingClip = NORMAL_CLIP;\n },\n eoClip: function CanvasGraphics_eoClip() {\n this.pendingClip = EO_CLIP;\n },\n beginText: function CanvasGraphics_beginText() {\n this.current.textMatrix = _util.IDENTITY_MATRIX;\n this.current.textMatrixScale = 1;\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n },\n endText: function CanvasGraphics_endText() {\n var paths = this.pendingTextPaths;\n var ctx = this.ctx;\n\n if (paths === undefined) {\n ctx.beginPath();\n return;\n }\n\n ctx.save();\n ctx.beginPath();\n\n for (var i = 0; i < paths.length; i++) {\n var path = paths[i];\n ctx.setTransform.apply(ctx, path.transform);\n ctx.translate(path.x, path.y);\n path.addToPath(ctx, path.fontSize);\n }\n\n ctx.restore();\n ctx.clip();\n ctx.beginPath();\n delete this.pendingTextPaths;\n },\n setCharSpacing: function CanvasGraphics_setCharSpacing(spacing) {\n this.current.charSpacing = spacing;\n },\n setWordSpacing: function CanvasGraphics_setWordSpacing(spacing) {\n this.current.wordSpacing = spacing;\n },\n setHScale: function CanvasGraphics_setHScale(scale) {\n this.current.textHScale = scale / 100;\n },\n setLeading: function CanvasGraphics_setLeading(leading) {\n this.current.leading = -leading;\n },\n setFont: function CanvasGraphics_setFont(fontRefName, size) {\n var fontObj = this.commonObjs.get(fontRefName);\n var current = this.current;\n\n if (!fontObj) {\n throw new Error(\"Can't find font for \".concat(fontRefName));\n }\n\n current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : _util.FONT_IDENTITY_MATRIX;\n\n if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n (0, _util.warn)(\"Invalid font matrix for font \" + fontRefName);\n }\n\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n\n this.current.font = fontObj;\n this.current.fontSize = size;\n\n if (fontObj.isType3Font) {\n return;\n }\n\n var name = fontObj.loadedName || \"sans-serif\";\n var bold = \"normal\";\n\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n\n var italic = fontObj.italic ? \"italic\" : \"normal\";\n var typeface = \"\\\"\".concat(name, \"\\\", \").concat(fontObj.fallbackName);\n var browserFontSize = size;\n\n if (size < MIN_FONT_SIZE) {\n browserFontSize = MIN_FONT_SIZE;\n } else if (size > MAX_FONT_SIZE) {\n browserFontSize = MAX_FONT_SIZE;\n }\n\n this.current.fontSizeScale = size / browserFontSize;\n this.ctx.font = \"\".concat(italic, \" \").concat(bold, \" \").concat(browserFontSize, \"px \").concat(typeface);\n },\n setTextRenderingMode: function CanvasGraphics_setTextRenderingMode(mode) {\n this.current.textRenderingMode = mode;\n },\n setTextRise: function CanvasGraphics_setTextRise(rise) {\n this.current.textRise = rise;\n },\n moveText: function CanvasGraphics_moveText(x, y) {\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n },\n setLeadingMoveText: function CanvasGraphics_setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n },\n setTextMatrix: function CanvasGraphics_setTextMatrix(a, b, c, d, e, f) {\n this.current.textMatrix = [a, b, c, d, e, f];\n this.current.textMatrixScale = Math.sqrt(a * a + b * b);\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n },\n nextLine: function CanvasGraphics_nextLine() {\n this.moveText(0, this.current.leading);\n },\n paintChar: function paintChar(character, x, y, patternTransform) {\n var ctx = this.ctx;\n var current = this.current;\n var font = current.font;\n var textRenderingMode = current.textRenderingMode;\n var fontSize = current.fontSize / current.fontSizeScale;\n var fillStrokeMode = textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;\n var isAddToPathSet = !!(textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG);\n var patternFill = current.patternFill && !font.missingFile;\n var addToPath;\n\n if (font.disableFontFace || isAddToPathSet || patternFill) {\n addToPath = font.getPathGenerator(this.commonObjs, character);\n }\n\n if (font.disableFontFace || patternFill) {\n ctx.save();\n ctx.translate(x, y);\n ctx.beginPath();\n addToPath(ctx, fontSize);\n\n if (patternTransform) {\n ctx.setTransform.apply(ctx, patternTransform);\n }\n\n if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n ctx.fill();\n }\n\n if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n ctx.stroke();\n }\n\n ctx.restore();\n } else {\n if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n ctx.fillText(character, x, y);\n }\n\n if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n ctx.strokeText(character, x, y);\n }\n }\n\n if (isAddToPathSet) {\n var paths = this.pendingTextPaths || (this.pendingTextPaths = []);\n paths.push({\n transform: ctx.mozCurrentTransform,\n x: x,\n y: y,\n fontSize: fontSize,\n addToPath: addToPath\n });\n }\n },\n\n get isFontSubpixelAAEnabled() {\n var _this$cachedCanvases$ = this.cachedCanvases.getCanvas(\"isFontSubpixelAAEnabled\", 10, 10),\n ctx = _this$cachedCanvases$.context;\n\n ctx.scale(1.5, 1);\n ctx.fillText(\"I\", 0, 10);\n var data = ctx.getImageData(0, 0, 10, 10).data;\n var enabled = false;\n\n for (var i = 3; i < data.length; i += 4) {\n if (data[i] > 0 && data[i] < 255) {\n enabled = true;\n break;\n }\n }\n\n return (0, _util.shadow)(this, \"isFontSubpixelAAEnabled\", enabled);\n },\n\n showText: function CanvasGraphics_showText(glyphs) {\n var current = this.current;\n var font = current.font;\n\n if (font.isType3Font) {\n return this.showType3Text(glyphs);\n }\n\n var fontSize = current.fontSize;\n\n if (fontSize === 0) {\n return undefined;\n }\n\n var ctx = this.ctx;\n var fontSizeScale = current.fontSizeScale;\n var charSpacing = current.charSpacing;\n var wordSpacing = current.wordSpacing;\n var fontDirection = current.fontDirection;\n var textHScale = current.textHScale * fontDirection;\n var glyphsLength = glyphs.length;\n var vertical = font.vertical;\n var spacingDir = vertical ? 1 : -1;\n var defaultVMetrics = font.defaultVMetrics;\n var widthAdvanceScale = fontSize * current.fontMatrix[0];\n var simpleFillText = current.textRenderingMode === _util.TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill;\n ctx.save();\n var patternTransform;\n\n if (current.patternFill) {\n ctx.save();\n var pattern = current.fillColor.getPattern(ctx, this);\n patternTransform = ctx.mozCurrentTransform;\n ctx.restore();\n ctx.fillStyle = pattern;\n }\n\n ctx.transform.apply(ctx, current.textMatrix);\n ctx.translate(current.x, current.y + current.textRise);\n\n if (fontDirection > 0) {\n ctx.scale(textHScale, -1);\n } else {\n ctx.scale(textHScale, 1);\n }\n\n var lineWidth = current.lineWidth;\n var scale = current.textMatrixScale;\n\n if (scale === 0 || lineWidth === 0) {\n var fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;\n\n if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n this._cachedGetSinglePixelWidth = null;\n lineWidth = this.getSinglePixelWidth() * MIN_WIDTH_FACTOR;\n }\n } else {\n lineWidth /= scale;\n }\n\n if (fontSizeScale !== 1.0) {\n ctx.scale(fontSizeScale, fontSizeScale);\n lineWidth /= fontSizeScale;\n }\n\n ctx.lineWidth = lineWidth;\n var x = 0,\n i;\n\n for (i = 0; i < glyphsLength; ++i) {\n var glyph = glyphs[i];\n\n if ((0, _util.isNum)(glyph)) {\n x += spacingDir * glyph * fontSize / 1000;\n continue;\n }\n\n var restoreNeeded = false;\n var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n var character = glyph.fontChar;\n var accent = glyph.accent;\n var scaledX, scaledY, scaledAccentX, scaledAccentY;\n var width = glyph.width;\n\n if (vertical) {\n var vmetric, vx, vy;\n vmetric = glyph.vmetric || defaultVMetrics;\n vx = glyph.vmetric ? vmetric[1] : width * 0.5;\n vx = -vx * widthAdvanceScale;\n vy = vmetric[2] * widthAdvanceScale;\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n\n if (font.remeasure && width > 0) {\n var measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale;\n\n if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n var characterScaleX = width / measuredWidth;\n restoreNeeded = true;\n ctx.save();\n ctx.scale(characterScaleX, 1);\n scaledX /= characterScaleX;\n } else if (width !== measuredWidth) {\n scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale;\n }\n }\n\n if (glyph.isInFont || font.missingFile) {\n if (simpleFillText && !accent) {\n ctx.fillText(character, scaledX, scaledY);\n } else {\n this.paintChar(character, scaledX, scaledY, patternTransform);\n\n if (accent) {\n scaledAccentX = scaledX + accent.offset.x / fontSizeScale;\n scaledAccentY = scaledY - accent.offset.y / fontSizeScale;\n this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform);\n }\n }\n }\n\n var charWidth;\n\n if (vertical) {\n charWidth = width * widthAdvanceScale - spacing * fontDirection;\n } else {\n charWidth = width * widthAdvanceScale + spacing * fontDirection;\n }\n\n x += charWidth;\n\n if (restoreNeeded) {\n ctx.restore();\n }\n }\n\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n\n ctx.restore();\n },\n showType3Text: function CanvasGraphics_showType3Text(glyphs) {\n var ctx = this.ctx;\n var current = this.current;\n var font = current.font;\n var fontSize = current.fontSize;\n var fontDirection = current.fontDirection;\n var spacingDir = font.vertical ? 1 : -1;\n var charSpacing = current.charSpacing;\n var wordSpacing = current.wordSpacing;\n var textHScale = current.textHScale * fontDirection;\n var fontMatrix = current.fontMatrix || _util.FONT_IDENTITY_MATRIX;\n var glyphsLength = glyphs.length;\n var isTextInvisible = current.textRenderingMode === _util.TextRenderingMode.INVISIBLE;\n var i, glyph, width, spacingLength;\n\n if (isTextInvisible || fontSize === 0) {\n return;\n }\n\n this._cachedGetSinglePixelWidth = null;\n ctx.save();\n ctx.transform.apply(ctx, current.textMatrix);\n ctx.translate(current.x, current.y);\n ctx.scale(textHScale, fontDirection);\n\n for (i = 0; i < glyphsLength; ++i) {\n glyph = glyphs[i];\n\n if ((0, _util.isNum)(glyph)) {\n spacingLength = spacingDir * glyph * fontSize / 1000;\n this.ctx.translate(spacingLength, 0);\n current.x += spacingLength * textHScale;\n continue;\n }\n\n var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n var operatorList = font.charProcOperatorList[glyph.operatorListId];\n\n if (!operatorList) {\n (0, _util.warn)(\"Type3 character \\\"\".concat(glyph.operatorListId, \"\\\" is not available.\"));\n continue;\n }\n\n this.processingType3 = glyph;\n this.save();\n ctx.scale(fontSize, fontSize);\n ctx.transform.apply(ctx, fontMatrix);\n this.executeOperatorList(operatorList);\n this.restore();\n\n var transformed = _util.Util.applyTransform([glyph.width, 0], fontMatrix);\n\n width = transformed[0] * fontSize + spacing;\n ctx.translate(width, 0);\n current.x += width * textHScale;\n }\n\n ctx.restore();\n this.processingType3 = null;\n },\n setCharWidth: function CanvasGraphics_setCharWidth(xWidth, yWidth) {},\n setCharWidthAndBounds: function CanvasGraphics_setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {\n this.ctx.rect(llx, lly, urx - llx, ury - lly);\n this.clip();\n this.endPath();\n },\n getColorN_Pattern: function CanvasGraphics_getColorN_Pattern(IR) {\n var _this = this;\n\n var pattern;\n\n if (IR[0] === \"TilingPattern\") {\n var color = IR[1];\n var baseTransform = this.baseTransform || this.ctx.mozCurrentTransform.slice();\n var canvasGraphicsFactory = {\n createCanvasGraphics: function createCanvasGraphics(ctx) {\n return new CanvasGraphics(ctx, _this.commonObjs, _this.objs, _this.canvasFactory, _this.webGLContext);\n }\n };\n pattern = new _pattern_helper.TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform);\n } else {\n pattern = (0, _pattern_helper.getShadingPatternFromIR)(IR);\n }\n\n return pattern;\n },\n setStrokeColorN: function CanvasGraphics_setStrokeColorN() {\n this.current.strokeColor = this.getColorN_Pattern(arguments);\n },\n setFillColorN: function CanvasGraphics_setFillColorN() {\n this.current.fillColor = this.getColorN_Pattern(arguments);\n this.current.patternFill = true;\n },\n setStrokeRGBColor: function CanvasGraphics_setStrokeRGBColor(r, g, b) {\n var color = _util.Util.makeCssRgb(r, g, b);\n\n this.ctx.strokeStyle = color;\n this.current.strokeColor = color;\n },\n setFillRGBColor: function CanvasGraphics_setFillRGBColor(r, g, b) {\n var color = _util.Util.makeCssRgb(r, g, b);\n\n this.ctx.fillStyle = color;\n this.current.fillColor = color;\n this.current.patternFill = false;\n },\n shadingFill: function CanvasGraphics_shadingFill(patternIR) {\n var ctx = this.ctx;\n this.save();\n var pattern = (0, _pattern_helper.getShadingPatternFromIR)(patternIR);\n ctx.fillStyle = pattern.getPattern(ctx, this, true);\n var inv = ctx.mozCurrentTransformInverse;\n\n if (inv) {\n var canvas = ctx.canvas;\n var width = canvas.width;\n var height = canvas.height;\n\n var bl = _util.Util.applyTransform([0, 0], inv);\n\n var br = _util.Util.applyTransform([0, height], inv);\n\n var ul = _util.Util.applyTransform([width, 0], inv);\n\n var ur = _util.Util.applyTransform([width, height], inv);\n\n var x0 = Math.min(bl[0], br[0], ul[0], ur[0]);\n var y0 = Math.min(bl[1], br[1], ul[1], ur[1]);\n var x1 = Math.max(bl[0], br[0], ul[0], ur[0]);\n var y1 = Math.max(bl[1], br[1], ul[1], ur[1]);\n this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n } else {\n this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n }\n\n this.restore();\n },\n beginInlineImage: function CanvasGraphics_beginInlineImage() {\n (0, _util.unreachable)(\"Should not call beginInlineImage\");\n },\n beginImageData: function CanvasGraphics_beginImageData() {\n (0, _util.unreachable)(\"Should not call beginImageData\");\n },\n paintFormXObjectBegin: function CanvasGraphics_paintFormXObjectBegin(matrix, bbox) {\n this.save();\n this.baseTransformStack.push(this.baseTransform);\n\n if (Array.isArray(matrix) && matrix.length === 6) {\n this.transform.apply(this, matrix);\n }\n\n this.baseTransform = this.ctx.mozCurrentTransform;\n\n if (bbox) {\n var width = bbox[2] - bbox[0];\n var height = bbox[3] - bbox[1];\n this.ctx.rect(bbox[0], bbox[1], width, height);\n this.clip();\n this.endPath();\n }\n },\n paintFormXObjectEnd: function CanvasGraphics_paintFormXObjectEnd() {\n this.restore();\n this.baseTransform = this.baseTransformStack.pop();\n },\n beginGroup: function CanvasGraphics_beginGroup(group) {\n this.save();\n var currentCtx = this.ctx;\n\n if (!group.isolated) {\n (0, _util.info)(\"TODO: Support non-isolated groups.\");\n }\n\n if (group.knockout) {\n (0, _util.warn)(\"Knockout groups not supported.\");\n }\n\n var currentTransform = currentCtx.mozCurrentTransform;\n\n if (group.matrix) {\n currentCtx.transform.apply(currentCtx, group.matrix);\n }\n\n if (!group.bbox) {\n throw new Error(\"Bounding box is required.\");\n }\n\n var bounds = _util.Util.getAxialAlignedBoundingBox(group.bbox, currentCtx.mozCurrentTransform);\n\n var canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];\n bounds = _util.Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n var offsetX = Math.floor(bounds[0]);\n var offsetY = Math.floor(bounds[1]);\n var drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n var drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n var scaleX = 1,\n scaleY = 1;\n\n if (drawnWidth > MAX_GROUP_SIZE) {\n scaleX = drawnWidth / MAX_GROUP_SIZE;\n drawnWidth = MAX_GROUP_SIZE;\n }\n\n if (drawnHeight > MAX_GROUP_SIZE) {\n scaleY = drawnHeight / MAX_GROUP_SIZE;\n drawnHeight = MAX_GROUP_SIZE;\n }\n\n var cacheId = \"groupAt\" + this.groupLevel;\n\n if (group.smask) {\n cacheId += \"_smask_\" + this.smaskCounter++ % 2;\n }\n\n var scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true);\n var groupCtx = scratchCanvas.context;\n groupCtx.scale(1 / scaleX, 1 / scaleY);\n groupCtx.translate(-offsetX, -offsetY);\n groupCtx.transform.apply(groupCtx, currentTransform);\n\n if (group.smask) {\n this.smaskStack.push({\n canvas: scratchCanvas.canvas,\n context: groupCtx,\n offsetX: offsetX,\n offsetY: offsetY,\n scaleX: scaleX,\n scaleY: scaleY,\n subtype: group.smask.subtype,\n backdrop: group.smask.backdrop,\n transferMap: group.smask.transferMap || null,\n startTransformInverse: null\n });\n } else {\n currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n currentCtx.translate(offsetX, offsetY);\n currentCtx.scale(scaleX, scaleY);\n }\n\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n this.current.activeSMask = null;\n },\n endGroup: function CanvasGraphics_endGroup(group) {\n this.groupLevel--;\n var groupCtx = this.ctx;\n this.ctx = this.groupStack.pop();\n\n if (this.ctx.imageSmoothingEnabled !== undefined) {\n this.ctx.imageSmoothingEnabled = false;\n } else {\n this.ctx.mozImageSmoothingEnabled = false;\n }\n\n if (group.smask) {\n this.tempSMask = this.smaskStack.pop();\n } else {\n this.ctx.drawImage(groupCtx.canvas, 0, 0);\n }\n\n this.restore();\n },\n beginAnnotations: function CanvasGraphics_beginAnnotations() {\n this.save();\n\n if (this.baseTransform) {\n this.ctx.setTransform.apply(this.ctx, this.baseTransform);\n }\n },\n endAnnotations: function CanvasGraphics_endAnnotations() {\n this.restore();\n },\n beginAnnotation: function CanvasGraphics_beginAnnotation(rect, transform, matrix) {\n this.save();\n resetCtxToDefault(this.ctx);\n this.current = new CanvasExtraState();\n\n if (Array.isArray(rect) && rect.length === 4) {\n var width = rect[2] - rect[0];\n var height = rect[3] - rect[1];\n this.ctx.rect(rect[0], rect[1], width, height);\n this.clip();\n this.endPath();\n }\n\n this.transform.apply(this, transform);\n this.transform.apply(this, matrix);\n },\n endAnnotation: function CanvasGraphics_endAnnotation() {\n this.restore();\n },\n paintImageMaskXObject: function CanvasGraphics_paintImageMaskXObject(img) {\n var ctx = this.ctx;\n var width = img.width,\n height = img.height;\n var fillColor = this.current.fillColor;\n var isPatternFill = this.current.patternFill;\n var glyph = this.processingType3;\n\n if (COMPILE_TYPE3_GLYPHS && glyph && glyph.compiled === undefined) {\n if (width <= MAX_SIZE_TO_COMPILE && height <= MAX_SIZE_TO_COMPILE) {\n glyph.compiled = compileType3Glyph({\n data: img.data,\n width: width,\n height: height\n });\n } else {\n glyph.compiled = null;\n }\n }\n\n if (glyph && glyph.compiled) {\n glyph.compiled(ctx);\n return;\n }\n\n var maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n var maskCtx = maskCanvas.context;\n maskCtx.save();\n putBinaryImageMask(maskCtx, img);\n maskCtx.globalCompositeOperation = \"source-in\";\n maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n maskCtx.restore();\n this.paintInlineImageXObject(maskCanvas.canvas);\n },\n paintImageMaskXObjectRepeat: function CanvasGraphics_paintImageMaskXObjectRepeat(imgData, scaleX, scaleY, positions) {\n var width = imgData.width;\n var height = imgData.height;\n var fillColor = this.current.fillColor;\n var isPatternFill = this.current.patternFill;\n var maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n var maskCtx = maskCanvas.context;\n maskCtx.save();\n putBinaryImageMask(maskCtx, imgData);\n maskCtx.globalCompositeOperation = \"source-in\";\n maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n maskCtx.restore();\n var ctx = this.ctx;\n\n for (var i = 0, ii = positions.length; i < ii; i += 2) {\n ctx.save();\n ctx.transform(scaleX, 0, 0, scaleY, positions[i], positions[i + 1]);\n ctx.scale(1, -1);\n ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);\n ctx.restore();\n }\n },\n paintImageMaskXObjectGroup: function CanvasGraphics_paintImageMaskXObjectGroup(images) {\n var ctx = this.ctx;\n var fillColor = this.current.fillColor;\n var isPatternFill = this.current.patternFill;\n\n for (var i = 0, ii = images.length; i < ii; i++) {\n var image = images[i];\n var width = image.width,\n height = image.height;\n var maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n var maskCtx = maskCanvas.context;\n maskCtx.save();\n putBinaryImageMask(maskCtx, image);\n maskCtx.globalCompositeOperation = \"source-in\";\n maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n maskCtx.restore();\n ctx.save();\n ctx.transform.apply(ctx, image.transform);\n ctx.scale(1, -1);\n ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);\n ctx.restore();\n }\n },\n paintImageXObject: function CanvasGraphics_paintImageXObject(objId) {\n var imgData = objId.startsWith(\"g_\") ? this.commonObjs.get(objId) : this.objs.get(objId);\n\n if (!imgData) {\n (0, _util.warn)(\"Dependent image isn't ready yet\");\n return;\n }\n\n this.paintInlineImageXObject(imgData);\n },\n paintImageXObjectRepeat: function CanvasGraphics_paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {\n var imgData = objId.startsWith(\"g_\") ? this.commonObjs.get(objId) : this.objs.get(objId);\n\n if (!imgData) {\n (0, _util.warn)(\"Dependent image isn't ready yet\");\n return;\n }\n\n var width = imgData.width;\n var height = imgData.height;\n var map = [];\n\n for (var i = 0, ii = positions.length; i < ii; i += 2) {\n map.push({\n transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],\n x: 0,\n y: 0,\n w: width,\n h: height\n });\n }\n\n this.paintInlineImageXObjectGroup(imgData, map);\n },\n paintInlineImageXObject: function CanvasGraphics_paintInlineImageXObject(imgData) {\n var width = imgData.width;\n var height = imgData.height;\n var ctx = this.ctx;\n this.save();\n ctx.scale(1 / width, -1 / height);\n var currentTransform = ctx.mozCurrentTransformInverse;\n var a = currentTransform[0],\n b = currentTransform[1];\n var widthScale = Math.max(Math.sqrt(a * a + b * b), 1);\n var c = currentTransform[2],\n d = currentTransform[3];\n var heightScale = Math.max(Math.sqrt(c * c + d * d), 1);\n var imgToPaint, tmpCanvas;\n\n if (typeof HTMLElement === \"function\" && imgData instanceof HTMLElement || !imgData.data) {\n imgToPaint = imgData;\n } else {\n tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n var tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = tmpCanvas.canvas;\n }\n\n var paintWidth = width,\n paintHeight = height;\n var tmpCanvasId = \"prescale1\";\n\n while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {\n var newWidth = paintWidth,\n newHeight = paintHeight;\n\n if (widthScale > 2 && paintWidth > 1) {\n newWidth = Math.ceil(paintWidth / 2);\n widthScale /= paintWidth / newWidth;\n }\n\n if (heightScale > 2 && paintHeight > 1) {\n newHeight = Math.ceil(paintHeight / 2);\n heightScale /= paintHeight / newHeight;\n }\n\n tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight);\n tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, newWidth, newHeight);\n tmpCtx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);\n imgToPaint = tmpCanvas.canvas;\n paintWidth = newWidth;\n paintHeight = newHeight;\n tmpCanvasId = tmpCanvasId === \"prescale1\" ? \"prescale2\" : \"prescale1\";\n }\n\n ctx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight, 0, -height, width, height);\n\n if (this.imageLayer) {\n var position = this.getCanvasPosition(0, -height);\n this.imageLayer.appendImage({\n imgData: imgData,\n left: position[0],\n top: position[1],\n width: width / currentTransform[0],\n height: height / currentTransform[3]\n });\n }\n\n this.restore();\n },\n paintInlineImageXObjectGroup: function CanvasGraphics_paintInlineImageXObjectGroup(imgData, map) {\n var ctx = this.ctx;\n var w = imgData.width;\n var h = imgData.height;\n var tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", w, h);\n var tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n\n for (var i = 0, ii = map.length; i < ii; i++) {\n var entry = map[i];\n ctx.save();\n ctx.transform.apply(ctx, entry.transform);\n ctx.scale(1, -1);\n ctx.drawImage(tmpCanvas.canvas, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1);\n\n if (this.imageLayer) {\n var position = this.getCanvasPosition(entry.x, entry.y);\n this.imageLayer.appendImage({\n imgData: imgData,\n left: position[0],\n top: position[1],\n width: w,\n height: h\n });\n }\n\n ctx.restore();\n }\n },\n paintSolidColorImageMask: function CanvasGraphics_paintSolidColorImageMask() {\n this.ctx.fillRect(0, 0, 1, 1);\n },\n paintXObject: function CanvasGraphics_paintXObject() {\n (0, _util.warn)(\"Unsupported 'paintXObject' command.\");\n },\n markPoint: function CanvasGraphics_markPoint(tag) {},\n markPointProps: function CanvasGraphics_markPointProps(tag, properties) {},\n beginMarkedContent: function CanvasGraphics_beginMarkedContent(tag) {},\n beginMarkedContentProps: function CanvasGraphics_beginMarkedContentProps(tag, properties) {},\n endMarkedContent: function CanvasGraphics_endMarkedContent() {},\n beginCompat: function CanvasGraphics_beginCompat() {},\n endCompat: function CanvasGraphics_endCompat() {},\n consumePath: function CanvasGraphics_consumePath() {\n var ctx = this.ctx;\n\n if (this.pendingClip) {\n if (this.pendingClip === EO_CLIP) {\n ctx.clip(\"evenodd\");\n } else {\n ctx.clip();\n }\n\n this.pendingClip = null;\n }\n\n ctx.beginPath();\n },\n getSinglePixelWidth: function getSinglePixelWidth(scale) {\n if (this._cachedGetSinglePixelWidth === null) {\n var inverse = this.ctx.mozCurrentTransformInverse;\n this._cachedGetSinglePixelWidth = Math.sqrt(Math.max(inverse[0] * inverse[0] + inverse[1] * inverse[1], inverse[2] * inverse[2] + inverse[3] * inverse[3]));\n }\n\n return this._cachedGetSinglePixelWidth;\n },\n getCanvasPosition: function CanvasGraphics_getCanvasPosition(x, y) {\n var transform = this.ctx.mozCurrentTransform;\n return [transform[0] * x + transform[2] * y + transform[4], transform[1] * x + transform[3] * y + transform[5]];\n }\n };\n\n for (var op in _util.OPS) {\n CanvasGraphics.prototype[_util.OPS[op]] = CanvasGraphics.prototype[op];\n }\n\n return CanvasGraphics;\n}();\n\nexports.CanvasGraphics = CanvasGraphics;\n\n/***/ }),\n/* 202 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getShadingPatternFromIR = getShadingPatternFromIR;\nexports.TilingPattern = void 0;\n\nvar _util = __w_pdfjs_require__(5);\n\nvar ShadingIRs = {};\n\nfunction applyBoundingBox(ctx, bbox) {\n if (!bbox || typeof Path2D === \"undefined\") {\n return;\n }\n\n var width = bbox[2] - bbox[0];\n var height = bbox[3] - bbox[1];\n var region = new Path2D();\n region.rect(bbox[0], bbox[1], width, height);\n ctx.clip(region);\n}\n\nShadingIRs.RadialAxial = {\n fromIR: function RadialAxial_fromIR(raw) {\n var type = raw[1];\n var bbox = raw[2];\n var colorStops = raw[3];\n var p0 = raw[4];\n var p1 = raw[5];\n var r0 = raw[6];\n var r1 = raw[7];\n return {\n type: \"Pattern\",\n getPattern: function RadialAxial_getPattern(ctx) {\n applyBoundingBox(ctx, bbox);\n var grad;\n\n if (type === \"axial\") {\n grad = ctx.createLinearGradient(p0[0], p0[1], p1[0], p1[1]);\n } else if (type === \"radial\") {\n grad = ctx.createRadialGradient(p0[0], p0[1], r0, p1[0], p1[1], r1);\n }\n\n for (var i = 0, ii = colorStops.length; i < ii; ++i) {\n var c = colorStops[i];\n grad.addColorStop(c[0], c[1]);\n }\n\n return grad;\n }\n };\n }\n};\n\nvar createMeshCanvas = function createMeshCanvasClosure() {\n function drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n var coords = context.coords,\n colors = context.colors;\n var bytes = data.data,\n rowSize = data.width * 4;\n var tmp;\n\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n\n if (coords[p2 + 1] > coords[p3 + 1]) {\n tmp = p2;\n p2 = p3;\n p3 = tmp;\n tmp = c2;\n c2 = c3;\n c3 = tmp;\n }\n\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n\n var x1 = (coords[p1] + context.offsetX) * context.scaleX;\n var y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\n var x2 = (coords[p2] + context.offsetX) * context.scaleX;\n var y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\n var x3 = (coords[p3] + context.offsetX) * context.scaleX;\n var y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\n\n if (y1 >= y3) {\n return;\n }\n\n var c1r = colors[c1],\n c1g = colors[c1 + 1],\n c1b = colors[c1 + 2];\n var c2r = colors[c2],\n c2g = colors[c2 + 1],\n c2b = colors[c2 + 2];\n var c3r = colors[c3],\n c3g = colors[c3 + 1],\n c3b = colors[c3 + 2];\n var minY = Math.round(y1),\n maxY = Math.round(y3);\n var xa, car, cag, cab;\n var xb, cbr, cbg, cbb;\n\n for (var y = minY; y <= maxY; y++) {\n if (y < y2) {\n var _k = void 0;\n\n if (y < y1) {\n _k = 0;\n } else if (y1 === y2) {\n _k = 1;\n } else {\n _k = (y1 - y) / (y1 - y2);\n }\n\n xa = x1 - (x1 - x2) * _k;\n car = c1r - (c1r - c2r) * _k;\n cag = c1g - (c1g - c2g) * _k;\n cab = c1b - (c1b - c2b) * _k;\n } else {\n var _k2 = void 0;\n\n if (y > y3) {\n _k2 = 1;\n } else if (y2 === y3) {\n _k2 = 0;\n } else {\n _k2 = (y2 - y) / (y2 - y3);\n }\n\n xa = x2 - (x2 - x3) * _k2;\n car = c2r - (c2r - c3r) * _k2;\n cag = c2g - (c2g - c3g) * _k2;\n cab = c2b - (c2b - c3b) * _k2;\n }\n\n var k = void 0;\n\n if (y < y1) {\n k = 0;\n } else if (y > y3) {\n k = 1;\n } else {\n k = (y1 - y) / (y1 - y3);\n }\n\n xb = x1 - (x1 - x3) * k;\n cbr = c1r - (c1r - c3r) * k;\n cbg = c1g - (c1g - c3g) * k;\n cbb = c1b - (c1b - c3b) * k;\n var x1_ = Math.round(Math.min(xa, xb));\n var x2_ = Math.round(Math.max(xa, xb));\n var j = rowSize * y + x1_ * 4;\n\n for (var x = x1_; x <= x2_; x++) {\n k = (xa - x) / (xa - xb);\n\n if (k < 0) {\n k = 0;\n } else if (k > 1) {\n k = 1;\n }\n\n bytes[j++] = car - (car - cbr) * k | 0;\n bytes[j++] = cag - (cag - cbg) * k | 0;\n bytes[j++] = cab - (cab - cbb) * k | 0;\n bytes[j++] = 255;\n }\n }\n }\n\n function drawFigure(data, figure, context) {\n var ps = figure.coords;\n var cs = figure.colors;\n var i, ii;\n\n switch (figure.type) {\n case \"lattice\":\n var verticesPerRow = figure.verticesPerRow;\n var rows = Math.floor(ps.length / verticesPerRow) - 1;\n var cols = verticesPerRow - 1;\n\n for (i = 0; i < rows; i++) {\n var q = i * verticesPerRow;\n\n for (var j = 0; j < cols; j++, q++) {\n drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]);\n drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);\n }\n }\n\n break;\n\n case \"triangles\":\n for (i = 0, ii = ps.length; i < ii; i += 3) {\n drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]);\n }\n\n break;\n\n default:\n throw new Error(\"illegal figure\");\n }\n }\n\n function createMeshCanvas(bounds, combinesScale, coords, colors, figures, backgroundColor, cachedCanvases, webGLContext) {\n var EXPECTED_SCALE = 1.1;\n var MAX_PATTERN_SIZE = 3000;\n var BORDER_SIZE = 2;\n var offsetX = Math.floor(bounds[0]);\n var offsetY = Math.floor(bounds[1]);\n var boundsWidth = Math.ceil(bounds[2]) - offsetX;\n var boundsHeight = Math.ceil(bounds[3]) - offsetY;\n var width = Math.min(Math.ceil(Math.abs(boundsWidth * combinesScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n var height = Math.min(Math.ceil(Math.abs(boundsHeight * combinesScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n var scaleX = boundsWidth / width;\n var scaleY = boundsHeight / height;\n var context = {\n coords: coords,\n colors: colors,\n offsetX: -offsetX,\n offsetY: -offsetY,\n scaleX: 1 / scaleX,\n scaleY: 1 / scaleY\n };\n var paddedWidth = width + BORDER_SIZE * 2;\n var paddedHeight = height + BORDER_SIZE * 2;\n var canvas, tmpCanvas, i, ii;\n\n if (webGLContext.isEnabled) {\n canvas = webGLContext.drawFigures({\n width: width,\n height: height,\n backgroundColor: backgroundColor,\n figures: figures,\n context: context\n });\n tmpCanvas = cachedCanvases.getCanvas(\"mesh\", paddedWidth, paddedHeight, false);\n tmpCanvas.context.drawImage(canvas, BORDER_SIZE, BORDER_SIZE);\n canvas = tmpCanvas.canvas;\n } else {\n tmpCanvas = cachedCanvases.getCanvas(\"mesh\", paddedWidth, paddedHeight, false);\n var tmpCtx = tmpCanvas.context;\n var data = tmpCtx.createImageData(width, height);\n\n if (backgroundColor) {\n var bytes = data.data;\n\n for (i = 0, ii = bytes.length; i < ii; i += 4) {\n bytes[i] = backgroundColor[0];\n bytes[i + 1] = backgroundColor[1];\n bytes[i + 2] = backgroundColor[2];\n bytes[i + 3] = 255;\n }\n }\n\n for (i = 0; i < figures.length; i++) {\n drawFigure(data, figures[i], context);\n }\n\n tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n canvas = tmpCanvas.canvas;\n }\n\n return {\n canvas: canvas,\n offsetX: offsetX - BORDER_SIZE * scaleX,\n offsetY: offsetY - BORDER_SIZE * scaleY,\n scaleX: scaleX,\n scaleY: scaleY\n };\n }\n\n return createMeshCanvas;\n}();\n\nShadingIRs.Mesh = {\n fromIR: function Mesh_fromIR(raw) {\n var coords = raw[2];\n var colors = raw[3];\n var figures = raw[4];\n var bounds = raw[5];\n var matrix = raw[6];\n var bbox = raw[7];\n var background = raw[8];\n return {\n type: \"Pattern\",\n getPattern: function Mesh_getPattern(ctx, owner, shadingFill) {\n applyBoundingBox(ctx, bbox);\n var scale;\n\n if (shadingFill) {\n scale = _util.Util.singularValueDecompose2dScale(ctx.mozCurrentTransform);\n } else {\n scale = _util.Util.singularValueDecompose2dScale(owner.baseTransform);\n\n if (matrix) {\n var matrixScale = _util.Util.singularValueDecompose2dScale(matrix);\n\n scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];\n }\n }\n\n var temporaryPatternCanvas = createMeshCanvas(bounds, scale, coords, colors, figures, shadingFill ? null : background, owner.cachedCanvases, owner.webGLContext);\n\n if (!shadingFill) {\n ctx.setTransform.apply(ctx, owner.baseTransform);\n\n if (matrix) {\n ctx.transform.apply(ctx, matrix);\n }\n }\n\n ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n return ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n }\n };\n }\n};\nShadingIRs.Dummy = {\n fromIR: function Dummy_fromIR() {\n return {\n type: \"Pattern\",\n getPattern: function Dummy_fromIR_getPattern() {\n return \"hotpink\";\n }\n };\n }\n};\n\nfunction getShadingPatternFromIR(raw) {\n var shadingIR = ShadingIRs[raw[0]];\n\n if (!shadingIR) {\n throw new Error(\"Unknown IR type: \".concat(raw[0]));\n }\n\n return shadingIR.fromIR(raw);\n}\n\nvar TilingPattern = function TilingPatternClosure() {\n var PaintType = {\n COLORED: 1,\n UNCOLORED: 2\n };\n var MAX_PATTERN_SIZE = 3000;\n\n function TilingPattern(IR, color, ctx, canvasGraphicsFactory, baseTransform) {\n this.operatorList = IR[2];\n this.matrix = IR[3] || [1, 0, 0, 1, 0, 0];\n this.bbox = IR[4];\n this.xstep = IR[5];\n this.ystep = IR[6];\n this.paintType = IR[7];\n this.tilingType = IR[8];\n this.color = color;\n this.canvasGraphicsFactory = canvasGraphicsFactory;\n this.baseTransform = baseTransform;\n this.type = \"Pattern\";\n this.ctx = ctx;\n }\n\n TilingPattern.prototype = {\n createPatternCanvas: function TilinPattern_createPatternCanvas(owner) {\n var operatorList = this.operatorList;\n var bbox = this.bbox;\n var xstep = this.xstep;\n var ystep = this.ystep;\n var paintType = this.paintType;\n var tilingType = this.tilingType;\n var color = this.color;\n var canvasGraphicsFactory = this.canvasGraphicsFactory;\n (0, _util.info)(\"TilingType: \" + tilingType);\n var x0 = bbox[0],\n y0 = bbox[1],\n x1 = bbox[2],\n y1 = bbox[3];\n\n var matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix);\n\n var curMatrixScale = _util.Util.singularValueDecompose2dScale(this.baseTransform);\n\n var combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]];\n var dimx = this.getSizeAndScale(xstep, this.ctx.canvas.width, combinedScale[0]);\n var dimy = this.getSizeAndScale(ystep, this.ctx.canvas.height, combinedScale[1]);\n var tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", dimx.size, dimy.size, true);\n var tmpCtx = tmpCanvas.context;\n var graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\n graphics.groupLevel = owner.groupLevel;\n this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);\n graphics.transform(1, 0, 0, 1, -x0, -y0);\n this.clipBbox(graphics, bbox, x0, y0, x1, y1);\n graphics.executeOperatorList(operatorList);\n this.ctx.transform(1, 0, 0, 1, x0, y0);\n this.ctx.scale(1 / dimx.scale, 1 / dimy.scale);\n return tmpCanvas.canvas;\n },\n getSizeAndScale: function TilingPattern_getSizeAndScale(step, realOutputSize, scale) {\n step = Math.abs(step);\n var maxSize = Math.max(MAX_PATTERN_SIZE, realOutputSize);\n var size = Math.ceil(step * scale);\n\n if (size >= maxSize) {\n size = maxSize;\n } else {\n scale = size / step;\n }\n\n return {\n scale: scale,\n size: size\n };\n },\n clipBbox: function clipBbox(graphics, bbox, x0, y0, x1, y1) {\n if (Array.isArray(bbox) && bbox.length === 4) {\n var bboxWidth = x1 - x0;\n var bboxHeight = y1 - y0;\n graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n graphics.clip();\n graphics.endPath();\n }\n },\n setFillAndStrokeStyleToContext: function setFillAndStrokeStyleToContext(graphics, paintType, color) {\n var context = graphics.ctx,\n current = graphics.current;\n\n switch (paintType) {\n case PaintType.COLORED:\n var ctx = this.ctx;\n context.fillStyle = ctx.fillStyle;\n context.strokeStyle = ctx.strokeStyle;\n current.fillColor = ctx.fillStyle;\n current.strokeColor = ctx.strokeStyle;\n break;\n\n case PaintType.UNCOLORED:\n var cssColor = _util.Util.makeCssRgb(color[0], color[1], color[2]);\n\n context.fillStyle = cssColor;\n context.strokeStyle = cssColor;\n current.fillColor = cssColor;\n current.strokeColor = cssColor;\n break;\n\n default:\n throw new _util.FormatError(\"Unsupported paint type: \".concat(paintType));\n }\n },\n getPattern: function TilingPattern_getPattern(ctx, owner) {\n ctx = this.ctx;\n ctx.setTransform.apply(ctx, this.baseTransform);\n ctx.transform.apply(ctx, this.matrix);\n var temporaryPatternCanvas = this.createPatternCanvas(owner);\n return ctx.createPattern(temporaryPatternCanvas, \"repeat\");\n }\n };\n return TilingPattern;\n}();\n\nexports.TilingPattern = TilingPattern;\n\n/***/ }),\n/* 203 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.GlobalWorkerOptions = void 0;\nvar GlobalWorkerOptions = Object.create(null);\nexports.GlobalWorkerOptions = GlobalWorkerOptions;\nGlobalWorkerOptions.workerPort = GlobalWorkerOptions.workerPort === undefined ? null : GlobalWorkerOptions.workerPort;\nGlobalWorkerOptions.workerSrc = GlobalWorkerOptions.workerSrc === undefined ? \"\" : GlobalWorkerOptions.workerSrc;\n\n/***/ }),\n/* 204 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MessageHandler = void 0;\n\nvar _regenerator = _interopRequireDefault(__w_pdfjs_require__(2));\n\nvar _util = __w_pdfjs_require__(5);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar CallbackKind = {\n UNKNOWN: 0,\n DATA: 1,\n ERROR: 2\n};\nvar 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 (_typeof(reason) !== \"object\" || reason === null) {\n return reason;\n }\n\n switch (reason.name) {\n case \"AbortException\":\n return new _util.AbortException(reason.message);\n\n case \"MissingPDFException\":\n return new _util.MissingPDFException(reason.message);\n\n case \"UnexpectedResponseException\":\n return new _util.UnexpectedResponseException(reason.message, reason.status);\n\n case \"UnknownErrorException\":\n return new _util.UnknownErrorException(reason.message, reason.details);\n\n default:\n return new _util.UnknownErrorException(reason.message, reason.toString());\n }\n}\n\nvar MessageHandler = /*#__PURE__*/function () {\n function MessageHandler(sourceName, targetName, comObj) {\n var _this = this;\n\n _classCallCheck(this, MessageHandler);\n\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.postMessageTransfers = true;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n\n this._onComObjOnMessage = function (event) {\n var data = event.data;\n\n if (data.targetName !== _this.sourceName) {\n return;\n }\n\n if (data.stream) {\n _this._processStreamMessage(data);\n\n return;\n }\n\n if (data.callback) {\n var callbackId = data.callbackId;\n var capability = _this.callbackCapabilities[callbackId];\n\n if (!capability) {\n throw new Error(\"Cannot resolve callback \".concat(callbackId));\n }\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\n return;\n }\n\n var action = _this.actionHandler[data.action];\n\n if (!action) {\n throw new Error(\"Unknown action from worker: \".concat(data.action));\n }\n\n if (data.callbackId) {\n var cbSourceName = _this.sourceName;\n var cbTargetName = data.sourceName;\n new Promise(function (resolve) {\n resolve(action(data.data));\n }).then(function (result) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result\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 return;\n }\n\n if (data.streamId) {\n _this._createStreamSink(data);\n\n return;\n }\n\n action(data.data);\n };\n\n comObj.addEventListener(\"message\", this._onComObjOnMessage);\n }\n\n _createClass(MessageHandler, [{\n key: \"on\",\n value: function on(actionName, handler) {\n var ah = this.actionHandler;\n\n if (ah[actionName]) {\n throw new Error(\"There is already an actionName called \\\"\".concat(actionName, \"\\\"\"));\n }\n\n ah[actionName] = handler;\n }\n }, {\n key: \"send\",\n value: function send(actionName, data, transfers) {\n this._postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data: data\n }, transfers);\n }\n }, {\n key: \"sendWithPromise\",\n value: function sendWithPromise(actionName, data, transfers) {\n var callbackId = this.callbackId++;\n var capability = (0, _util.createPromiseCapability)();\n this.callbackCapabilities[callbackId] = capability;\n\n try {\n this._postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId: callbackId,\n data: data\n }, transfers);\n } catch (ex) {\n capability.reject(ex);\n }\n\n return capability.promise;\n }\n }, {\n key: \"sendWithStream\",\n value: function sendWithStream(actionName, data, queueingStrategy, transfers) {\n var _this2 = this;\n\n var streamId = this.streamId++;\n var sourceName = this.sourceName;\n var targetName = this.targetName;\n var comObj = this.comObj;\n return new ReadableStream({\n start: function start(controller) {\n var startCapability = (0, _util.createPromiseCapability)();\n _this2.streamControllers[streamId] = {\n controller: controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false\n };\n\n _this2._postMessage({\n sourceName: sourceName,\n targetName: targetName,\n action: actionName,\n streamId: streamId,\n data: data,\n desiredSize: controller.desiredSize\n }, transfers);\n\n return startCapability.promise;\n },\n pull: function pull(controller) {\n var pullCapability = (0, _util.createPromiseCapability)();\n _this2.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName: sourceName,\n targetName: targetName,\n stream: StreamKind.PULL,\n streamId: streamId,\n desiredSize: controller.desiredSize\n });\n return pullCapability.promise;\n },\n cancel: function cancel(reason) {\n (0, _util.assert)(reason instanceof Error, \"cancel must have a valid reason\");\n var cancelCapability = (0, _util.createPromiseCapability)();\n _this2.streamControllers[streamId].cancelCall = cancelCapability;\n _this2.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName: sourceName,\n targetName: targetName,\n stream: StreamKind.CANCEL,\n streamId: streamId,\n reason: wrapReason(reason)\n });\n return cancelCapability.promise;\n }\n }, queueingStrategy);\n }\n }, {\n key: \"_createStreamSink\",\n value: function _createStreamSink(data) {\n var self = this;\n var action = this.actionHandler[data.action];\n var streamId = data.streamId;\n var sourceName = this.sourceName;\n var targetName = data.sourceName;\n var comObj = this.comObj;\n var streamSink = {\n enqueue: function enqueue(chunk) {\n var size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var transfers = arguments.length > 2 ? arguments[2] : undefined;\n\n if (this.isCancelled) {\n return;\n }\n\n var lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = (0, _util.createPromiseCapability)();\n this.ready = this.sinkCapability.promise;\n }\n\n self._postMessage({\n sourceName: sourceName,\n targetName: targetName,\n stream: StreamKind.ENQUEUE,\n streamId: streamId,\n chunk: chunk\n }, transfers);\n },\n close: function close() {\n if (this.isCancelled) {\n return;\n }\n\n this.isCancelled = true;\n comObj.postMessage({\n sourceName: sourceName,\n targetName: targetName,\n stream: StreamKind.CLOSE,\n streamId: streamId\n });\n delete self.streamSinks[streamId];\n },\n error: function error(reason) {\n (0, _util.assert)(reason instanceof Error, \"error must have a valid reason\");\n\n if (this.isCancelled) {\n return;\n }\n\n this.isCancelled = true;\n comObj.postMessage({\n sourceName: sourceName,\n targetName: targetName,\n stream: StreamKind.ERROR,\n streamId: streamId,\n reason: wrapReason(reason)\n });\n },\n sinkCapability: (0, _util.createPromiseCapability)(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null\n };\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n new Promise(function (resolve) {\n resolve(action(data.data, streamSink));\n }).then(function () {\n comObj.postMessage({\n sourceName: sourceName,\n targetName: targetName,\n stream: StreamKind.START_COMPLETE,\n streamId: streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName: sourceName,\n targetName: targetName,\n stream: StreamKind.START_COMPLETE,\n streamId: streamId,\n reason: wrapReason(reason)\n });\n });\n }\n }, {\n key: \"_processStreamMessage\",\n value: function _processStreamMessage(data) {\n var streamId = data.streamId;\n var sourceName = this.sourceName;\n var targetName = data.sourceName;\n var comObj = this.comObj;\n\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n this.streamControllers[streamId].startCall.resolve();\n } else {\n this.streamControllers[streamId].startCall.reject(wrapReason(data.reason));\n }\n\n break;\n\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n this.streamControllers[streamId].pullCall.resolve();\n } else {\n this.streamControllers[streamId].pullCall.reject(wrapReason(data.reason));\n }\n\n break;\n\n case StreamKind.PULL:\n if (!this.streamSinks[streamId]) {\n comObj.postMessage({\n sourceName: sourceName,\n targetName: targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId: streamId,\n success: true\n });\n break;\n }\n\n if (this.streamSinks[streamId].desiredSize <= 0 && data.desiredSize > 0) {\n this.streamSinks[streamId].sinkCapability.resolve();\n }\n\n this.streamSinks[streamId].desiredSize = data.desiredSize;\n var onPull = this.streamSinks[data.streamId].onPull;\n new Promise(function (resolve) {\n resolve(onPull && onPull());\n }).then(function () {\n comObj.postMessage({\n sourceName: sourceName,\n targetName: targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId: streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName: sourceName,\n targetName: targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId: streamId,\n reason: wrapReason(reason)\n });\n });\n break;\n\n case StreamKind.ENQUEUE:\n (0, _util.assert)(this.streamControllers[streamId], \"enqueue should have stream controller\");\n\n if (this.streamControllers[streamId].isClosed) {\n break;\n }\n\n this.streamControllers[streamId].controller.enqueue(data.chunk);\n break;\n\n case StreamKind.CLOSE:\n (0, _util.assert)(this.streamControllers[streamId], \"close should have stream controller\");\n\n if (this.streamControllers[streamId].isClosed) {\n break;\n }\n\n this.streamControllers[streamId].isClosed = true;\n this.streamControllers[streamId].controller.close();\n\n this._deleteStreamController(streamId);\n\n break;\n\n case StreamKind.ERROR:\n (0, _util.assert)(this.streamControllers[streamId], \"error should have stream controller\");\n this.streamControllers[streamId].controller.error(wrapReason(data.reason));\n\n this._deleteStreamController(streamId);\n\n break;\n\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n this.streamControllers[streamId].cancelCall.resolve();\n } else {\n this.streamControllers[streamId].cancelCall.reject(wrapReason(data.reason));\n }\n\n this._deleteStreamController(streamId);\n\n break;\n\n case StreamKind.CANCEL:\n if (!this.streamSinks[streamId]) {\n break;\n }\n\n var onCancel = this.streamSinks[data.streamId].onCancel;\n new Promise(function (resolve) {\n resolve(onCancel && onCancel(wrapReason(data.reason)));\n }).then(function () {\n comObj.postMessage({\n sourceName: sourceName,\n targetName: targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId: streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName: sourceName,\n targetName: targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId: streamId,\n reason: wrapReason(reason)\n });\n });\n this.streamSinks[streamId].sinkCapability.reject(wrapReason(data.reason));\n this.streamSinks[streamId].isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n }, {\n key: \"_deleteStreamController\",\n value: function () {\n var _deleteStreamController2 = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee(streamId) {\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return Promise.allSettled([this.streamControllers[streamId].startCall, this.streamControllers[streamId].pullCall, this.streamControllers[streamId].cancelCall].map(function (capability) {\n return capability && capability.promise;\n }));\n\n case 2:\n delete this.streamControllers[streamId];\n\n case 3:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function _deleteStreamController(_x) {\n return _deleteStreamController2.apply(this, arguments);\n }\n\n return _deleteStreamController;\n }()\n }, {\n key: \"_postMessage\",\n value: function _postMessage(message, transfers) {\n if (transfers && this.postMessageTransfers) {\n this.comObj.postMessage(message, transfers);\n } else {\n this.comObj.postMessage(message);\n }\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n }\n }]);\n\n return MessageHandler;\n}();\n\nexports.MessageHandler = MessageHandler;\n\n/***/ }),\n/* 205 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Metadata = void 0;\n\nvar _util = __w_pdfjs_require__(5);\n\nvar _xml_parser = __w_pdfjs_require__(206);\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar Metadata = /*#__PURE__*/function () {\n function Metadata(data) {\n _classCallCheck(this, Metadata);\n\n (0, _util.assert)(typeof data === \"string\", \"Metadata: input is not a string\");\n data = this._repair(data);\n var parser = new _xml_parser.SimpleXMLParser();\n var xmlDocument = parser.parseFromString(data);\n this._metadataMap = new Map();\n\n if (xmlDocument) {\n this._parse(xmlDocument);\n }\n }\n\n _createClass(Metadata, [{\n key: \"_repair\",\n value: function _repair(data) {\n return data.replace(/^[^<]+/, \"\").replace(/>\\\\376\\\\377([^<]+)/g, function (all, codes) {\n var bytes = codes.replace(/\\\\([0-3])([0-7])([0-7])/g, function (code, d1, d2, d3) {\n return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1);\n }).replace(/&(amp|apos|gt|lt|quot);/g, function (str, name) {\n switch (name) {\n case \"amp\":\n return \"&\";\n\n case \"apos\":\n return \"'\";\n\n case \"gt\":\n return \">\";\n\n case \"lt\":\n return \"<\";\n\n case \"quot\":\n return '\"';\n }\n\n throw new Error(\"_repair: \".concat(name, \" isn't defined.\"));\n });\n var chars = \"\";\n\n for (var i = 0, ii = bytes.length; i < ii; i += 2) {\n var code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1);\n\n if (code >= 32 && code < 127 && code !== 60 && code !== 62 && code !== 38) {\n chars += String.fromCharCode(code);\n } else {\n chars += \"&#x\" + (0x10000 + code).toString(16).substring(1) + \";\";\n }\n }\n\n return \">\" + chars;\n });\n }\n }, {\n key: \"_parse\",\n value: function _parse(xmlDocument) {\n var rdf = xmlDocument.documentElement;\n\n if (rdf.nodeName.toLowerCase() !== \"rdf:rdf\") {\n rdf = rdf.firstChild;\n\n while (rdf && rdf.nodeName.toLowerCase() !== \"rdf:rdf\") {\n rdf = rdf.nextSibling;\n }\n }\n\n var nodeName = rdf ? rdf.nodeName.toLowerCase() : null;\n\n if (!rdf || nodeName !== \"rdf:rdf\" || !rdf.hasChildNodes()) {\n return;\n }\n\n var children = rdf.childNodes;\n\n for (var i = 0, ii = children.length; i < ii; i++) {\n var desc = children[i];\n\n if (desc.nodeName.toLowerCase() !== \"rdf:description\") {\n continue;\n }\n\n for (var j = 0, jj = desc.childNodes.length; j < jj; j++) {\n if (desc.childNodes[j].nodeName.toLowerCase() !== \"#text\") {\n var entry = desc.childNodes[j];\n var name = entry.nodeName.toLowerCase();\n\n this._metadataMap.set(name, entry.textContent.trim());\n }\n }\n }\n }\n }, {\n key: \"get\",\n value: function get(name) {\n return this._metadataMap.has(name) ? this._metadataMap.get(name) : null;\n }\n }, {\n key: \"getAll\",\n value: function getAll() {\n var obj = Object.create(null);\n\n var _iterator = _createForOfIteratorHelper(this._metadataMap),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _step$value = _slicedToArray(_step.value, 2),\n key = _step$value[0],\n value = _step$value[1];\n\n obj[key] = value;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return obj;\n }\n }, {\n key: \"has\",\n value: function has(name) {\n return this._metadataMap.has(name);\n }\n }]);\n\n return Metadata;\n}();\n\nexports.Metadata = Metadata;\n\n/***/ }),\n/* 206 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SimpleXMLParser = void 0;\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar 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 var ch = s[index];\n return ch === \" \" || ch === \"\\n\" || ch === \"\\r\" || ch === \"\\t\";\n}\n\nfunction isWhitespaceString(s) {\n for (var i = 0, ii = s.length; i < ii; i++) {\n if (!isWhitespace(s, i)) {\n return false;\n }\n }\n\n return true;\n}\n\nvar XMLParserBase = /*#__PURE__*/function () {\n function XMLParserBase() {\n _classCallCheck(this, XMLParserBase);\n }\n\n _createClass(XMLParserBase, [{\n key: \"_resolveEntities\",\n value: function _resolveEntities(s) {\n var _this = this;\n\n return s.replace(/&([^;]+);/g, function (all, entity) {\n if (entity.substring(0, 2) === \"#x\") {\n return String.fromCharCode(parseInt(entity.substring(2), 16));\n } else if (entity.substring(0, 1) === \"#\") {\n return String.fromCharCode(parseInt(entity.substring(1), 10));\n }\n\n switch (entity) {\n case \"lt\":\n return \"<\";\n\n case \"gt\":\n return \">\";\n\n case \"amp\":\n return \"&\";\n\n case \"quot\":\n return '\"';\n }\n\n return _this.onResolveEntity(entity);\n });\n }\n }, {\n key: \"_parseContent\",\n value: function _parseContent(s, start) {\n var attributes = [];\n var pos = start;\n\n function skipWs() {\n while (pos < s.length && isWhitespace(s, pos)) {\n ++pos;\n }\n }\n\n while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== \">\" && s[pos] !== \"/\") {\n ++pos;\n }\n\n var name = s.substring(start, pos);\n skipWs();\n\n while (pos < s.length && s[pos] !== \">\" && s[pos] !== \"/\" && s[pos] !== \"?\") {\n skipWs();\n var attrName = \"\",\n attrValue = \"\";\n\n while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== \"=\") {\n attrName += s[pos];\n ++pos;\n }\n\n skipWs();\n\n if (s[pos] !== \"=\") {\n return null;\n }\n\n ++pos;\n skipWs();\n var attrEndChar = s[pos];\n\n if (attrEndChar !== '\"' && attrEndChar !== \"'\") {\n return null;\n }\n\n var attrEndIndex = s.indexOf(attrEndChar, ++pos);\n\n if (attrEndIndex < 0) {\n return null;\n }\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\n return {\n name: name,\n attributes: attributes,\n parsed: pos - start\n };\n }\n }, {\n key: \"_parseProcessingInstruction\",\n value: function _parseProcessingInstruction(s, start) {\n var pos = start;\n\n function skipWs() {\n while (pos < s.length && isWhitespace(s, pos)) {\n ++pos;\n }\n }\n\n while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== \">\" && s[pos] !== \"/\") {\n ++pos;\n }\n\n var name = s.substring(start, pos);\n skipWs();\n var attrStart = pos;\n\n while (pos < s.length && (s[pos] !== \"?\" || s[pos + 1] !== \">\")) {\n ++pos;\n }\n\n var value = s.substring(attrStart, pos);\n return {\n name: name,\n value: value,\n parsed: pos - start\n };\n }\n }, {\n key: \"parseXml\",\n value: function parseXml(s) {\n var i = 0;\n\n while (i < s.length) {\n var ch = s[i];\n var j = i;\n\n if (ch === \"<\") {\n ++j;\n var ch2 = s[j];\n var q = void 0;\n\n switch (ch2) {\n case \"/\":\n ++j;\n q = s.indexOf(\">\", j);\n\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedElement);\n return;\n }\n\n this.onEndElement(s.substring(j, q));\n j = q + 1;\n break;\n\n case \"?\":\n ++j;\n\n var pi = this._parseProcessingInstruction(s, j);\n\n if (s.substring(j + pi.parsed, j + pi.parsed + 2) !== \"?>\") {\n this.onError(XMLParserErrorCode.UnterminatedXmlDeclaration);\n return;\n }\n\n this.onPi(pi.name, pi.value);\n j += pi.parsed + 2;\n break;\n\n case \"!\":\n if (s.substring(j + 1, j + 3) === \"--\") {\n q = s.indexOf(\"-->\", j + 3);\n\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedComment);\n return;\n }\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\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedCdat);\n return;\n }\n\n this.onCdata(s.substring(j + 8, q));\n j = q + 3;\n } else if (s.substring(j + 1, j + 8) === \"DOCTYPE\") {\n var q2 = s.indexOf(\"[\", j + 8);\n var complexDoctype = false;\n q = s.indexOf(\">\", j + 8);\n\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);\n return;\n }\n\n if (q2 > 0 && q > q2) {\n q = s.indexOf(\"]>\", j + 8);\n\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);\n return;\n }\n\n complexDoctype = true;\n }\n\n var doctypeContent = s.substring(j + 8, q + (complexDoctype ? 1 : 0));\n this.onDoctype(doctypeContent);\n j = q + (complexDoctype ? 2 : 1);\n } else {\n this.onError(XMLParserErrorCode.MalformedElement);\n return;\n }\n\n break;\n\n default:\n var content = this._parseContent(s, j);\n\n if (content === null) {\n this.onError(XMLParserErrorCode.MalformedElement);\n return;\n }\n\n var isClosed = false;\n\n if (s.substring(j + content.parsed, j + content.parsed + 2) === \"/>\") {\n isClosed = true;\n } else if (s.substring(j + content.parsed, j + content.parsed + 1) !== \">\") {\n this.onError(XMLParserErrorCode.UnterminatedElement);\n return;\n }\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\n var text = s.substring(i, j);\n this.onText(this._resolveEntities(text));\n }\n\n i = j;\n }\n }\n }, {\n key: \"onResolveEntity\",\n value: function onResolveEntity(name) {\n return \"&\".concat(name, \";\");\n }\n }, {\n key: \"onPi\",\n value: function onPi(name, value) {}\n }, {\n key: \"onComment\",\n value: function onComment(text) {}\n }, {\n key: \"onCdata\",\n value: function onCdata(text) {}\n }, {\n key: \"onDoctype\",\n value: function onDoctype(doctypeContent) {}\n }, {\n key: \"onText\",\n value: function onText(text) {}\n }, {\n key: \"onBeginElement\",\n value: function onBeginElement(name, attributes, isEmpty) {}\n }, {\n key: \"onEndElement\",\n value: function onEndElement(name) {}\n }, {\n key: \"onError\",\n value: function onError(code) {}\n }]);\n\n return XMLParserBase;\n}();\n\nvar SimpleDOMNode = /*#__PURE__*/function () {\n function SimpleDOMNode(nodeName, nodeValue) {\n _classCallCheck(this, SimpleDOMNode);\n\n this.nodeName = nodeName;\n this.nodeValue = nodeValue;\n Object.defineProperty(this, \"parentNode\", {\n value: null,\n writable: true\n });\n }\n\n _createClass(SimpleDOMNode, [{\n key: \"hasChildNodes\",\n value: function hasChildNodes() {\n return this.childNodes && this.childNodes.length > 0;\n }\n }, {\n key: \"firstChild\",\n get: function get() {\n return this.childNodes && this.childNodes[0];\n }\n }, {\n key: \"nextSibling\",\n get: function get() {\n var childNodes = this.parentNode.childNodes;\n\n if (!childNodes) {\n return undefined;\n }\n\n var index = childNodes.indexOf(this);\n\n if (index === -1) {\n return undefined;\n }\n\n return childNodes[index + 1];\n }\n }, {\n key: \"textContent\",\n get: function get() {\n if (!this.childNodes) {\n return this.nodeValue || \"\";\n }\n\n return this.childNodes.map(function (child) {\n return child.textContent;\n }).join(\"\");\n }\n }]);\n\n return SimpleDOMNode;\n}();\n\nvar SimpleXMLParser = /*#__PURE__*/function (_XMLParserBase) {\n _inherits(SimpleXMLParser, _XMLParserBase);\n\n var _super = _createSuper(SimpleXMLParser);\n\n function SimpleXMLParser() {\n var _this2;\n\n _classCallCheck(this, SimpleXMLParser);\n\n _this2 = _super.call(this);\n _this2._currentFragment = null;\n _this2._stack = null;\n _this2._errorCode = XMLParserErrorCode.NoError;\n return _this2;\n }\n\n _createClass(SimpleXMLParser, [{\n key: \"parseFromString\",\n value: function parseFromString(data) {\n this._currentFragment = [];\n this._stack = [];\n this._errorCode = XMLParserErrorCode.NoError;\n this.parseXml(data);\n\n if (this._errorCode !== XMLParserErrorCode.NoError) {\n return undefined;\n }\n\n var _this$_currentFragmen = _slicedToArray(this._currentFragment, 1),\n documentElement = _this$_currentFragmen[0];\n\n if (!documentElement) {\n return undefined;\n }\n\n return {\n documentElement: documentElement\n };\n }\n }, {\n key: \"onResolveEntity\",\n value: function onResolveEntity(name) {\n switch (name) {\n case \"apos\":\n return \"'\";\n }\n\n return _get(_getPrototypeOf(SimpleXMLParser.prototype), \"onResolveEntity\", this).call(this, name);\n }\n }, {\n key: \"onText\",\n value: function onText(text) {\n if (isWhitespaceString(text)) {\n return;\n }\n\n var node = new SimpleDOMNode(\"#text\", text);\n\n this._currentFragment.push(node);\n }\n }, {\n key: \"onCdata\",\n value: function onCdata(text) {\n var node = new SimpleDOMNode(\"#text\", text);\n\n this._currentFragment.push(node);\n }\n }, {\n key: \"onBeginElement\",\n value: function onBeginElement(name, attributes, isEmpty) {\n var node = new SimpleDOMNode(name);\n node.childNodes = [];\n\n this._currentFragment.push(node);\n\n if (isEmpty) {\n return;\n }\n\n this._stack.push(this._currentFragment);\n\n this._currentFragment = node.childNodes;\n }\n }, {\n key: \"onEndElement\",\n value: function onEndElement(name) {\n this._currentFragment = this._stack.pop() || [];\n var lastElement = this._currentFragment[this._currentFragment.length - 1];\n\n if (!lastElement) {\n return;\n }\n\n for (var i = 0, ii = lastElement.childNodes.length; i < ii; i++) {\n lastElement.childNodes[i].parentNode = lastElement;\n }\n }\n }, {\n key: \"onError\",\n value: function onError(code) {\n this._errorCode = code;\n }\n }]);\n\n return SimpleXMLParser;\n}(XMLParserBase);\n\nexports.SimpleXMLParser = SimpleXMLParser;\n\n/***/ }),\n/* 207 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PDFDataTransportStream = void 0;\n\nvar _regenerator = _interopRequireDefault(__w_pdfjs_require__(2));\n\nvar _util = __w_pdfjs_require__(5);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar PDFDataTransportStream = /*#__PURE__*/function () {\n function PDFDataTransportStream(params, pdfDataRangeTransport) {\n var _this = this;\n\n _classCallCheck(this, PDFDataTransportStream);\n\n (0, _util.assert)(pdfDataRangeTransport, 'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.');\n this._queuedChunks = [];\n this._progressiveDone = params.progressiveDone || false;\n var initialData = params.initialData;\n\n if (initialData && initialData.length > 0) {\n var buffer = new Uint8Array(initialData).buffer;\n\n this._queuedChunks.push(buffer);\n }\n\n this._pdfDataRangeTransport = pdfDataRangeTransport;\n this._isStreamingSupported = !params.disableStream;\n this._isRangeSupported = !params.disableRange;\n this._contentLength = params.length;\n this._fullRequestReader = null;\n this._rangeReaders = [];\n\n this._pdfDataRangeTransport.addRangeListener(function (begin, chunk) {\n _this._onReceiveData({\n begin: begin,\n chunk: chunk\n });\n });\n\n this._pdfDataRangeTransport.addProgressListener(function (loaded, total) {\n _this._onProgress({\n loaded: loaded,\n total: total\n });\n });\n\n this._pdfDataRangeTransport.addProgressiveReadListener(function (chunk) {\n _this._onReceiveData({\n chunk: chunk\n });\n });\n\n this._pdfDataRangeTransport.addProgressiveDoneListener(function () {\n _this._onProgressiveDone();\n });\n\n this._pdfDataRangeTransport.transportReady();\n }\n\n _createClass(PDFDataTransportStream, [{\n key: \"_onReceiveData\",\n value: function _onReceiveData(args) {\n var buffer = new Uint8Array(args.chunk).buffer;\n\n if (args.begin === undefined) {\n if (this._fullRequestReader) {\n this._fullRequestReader._enqueue(buffer);\n } else {\n this._queuedChunks.push(buffer);\n }\n } else {\n var found = this._rangeReaders.some(function (rangeReader) {\n if (rangeReader._begin !== args.begin) {\n return false;\n }\n\n rangeReader._enqueue(buffer);\n\n return true;\n });\n\n (0, _util.assert)(found, \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\");\n }\n }\n }, {\n key: \"_onProgress\",\n value: function _onProgress(evt) {\n if (evt.total === undefined) {\n var firstReader = this._rangeReaders[0];\n\n if (firstReader && firstReader.onProgress) {\n firstReader.onProgress({\n loaded: evt.loaded\n });\n }\n } else {\n var fullReader = this._fullRequestReader;\n\n if (fullReader && fullReader.onProgress) {\n fullReader.onProgress({\n loaded: evt.loaded,\n total: evt.total\n });\n }\n }\n }\n }, {\n key: \"_onProgressiveDone\",\n value: function _onProgressiveDone() {\n if (this._fullRequestReader) {\n this._fullRequestReader.progressiveDone();\n }\n\n this._progressiveDone = true;\n }\n }, {\n key: \"_removeRangeReader\",\n value: function _removeRangeReader(reader) {\n var i = this._rangeReaders.indexOf(reader);\n\n if (i >= 0) {\n this._rangeReaders.splice(i, 1);\n }\n }\n }, {\n key: \"getFullReader\",\n value: function getFullReader() {\n (0, _util.assert)(!this._fullRequestReader, \"PDFDataTransportStream.getFullReader can only be called once.\");\n var queuedChunks = this._queuedChunks;\n this._queuedChunks = null;\n return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone);\n }\n }, {\n key: \"getRangeReader\",\n value: function getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n\n var reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n\n this._pdfDataRangeTransport.requestDataRange(begin, end);\n\n this._rangeReaders.push(reader);\n\n return reader;\n }\n }, {\n key: \"cancelAllRequests\",\n value: function cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n\n var readers = this._rangeReaders.slice(0);\n\n readers.forEach(function (rangeReader) {\n rangeReader.cancel(reason);\n });\n\n this._pdfDataRangeTransport.abort();\n }\n }, {\n key: \"_progressiveDataLength\",\n get: function get() {\n return this._fullRequestReader ? this._fullRequestReader._loaded : 0;\n }\n }]);\n\n return PDFDataTransportStream;\n}();\n\nexports.PDFDataTransportStream = PDFDataTransportStream;\n\nvar PDFDataTransportStreamReader = /*#__PURE__*/function () {\n function PDFDataTransportStreamReader(stream, queuedChunks) {\n var progressiveDone = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n _classCallCheck(this, PDFDataTransportStreamReader);\n\n this._stream = stream;\n this._done = progressiveDone || false;\n this._filename = null;\n this._queuedChunks = queuedChunks || [];\n this._loaded = 0;\n\n var _iterator = _createForOfIteratorHelper(this._queuedChunks),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var chunk = _step.value;\n this._loaded += chunk.byteLength;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n this._requests = [];\n this._headersReady = Promise.resolve();\n stream._fullRequestReader = this;\n this.onProgress = null;\n }\n\n _createClass(PDFDataTransportStreamReader, [{\n key: \"_enqueue\",\n value: function _enqueue(chunk) {\n if (this._done) {\n return;\n }\n\n if (this._requests.length > 0) {\n var requestCapability = this._requests.shift();\n\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunks.push(chunk);\n }\n\n this._loaded += chunk.byteLength;\n }\n }, {\n key: \"read\",\n value: function () {\n var _read = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee() {\n var chunk, requestCapability;\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!(this._queuedChunks.length > 0)) {\n _context.next = 3;\n break;\n }\n\n chunk = this._queuedChunks.shift();\n return _context.abrupt(\"return\", {\n value: chunk,\n done: false\n });\n\n case 3:\n if (!this._done) {\n _context.next = 5;\n break;\n }\n\n return _context.abrupt(\"return\", {\n value: undefined,\n done: true\n });\n\n case 5:\n requestCapability = (0, _util.createPromiseCapability)();\n\n this._requests.push(requestCapability);\n\n return _context.abrupt(\"return\", requestCapability.promise);\n\n case 8:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function read() {\n return _read.apply(this, arguments);\n }\n\n return read;\n }()\n }, {\n key: \"cancel\",\n value: function cancel(reason) {\n this._done = true;\n\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n });\n\n this._requests = [];\n }\n }, {\n key: \"progressiveDone\",\n value: function progressiveDone() {\n if (this._done) {\n return;\n }\n\n this._done = true;\n }\n }, {\n key: \"headersReady\",\n get: function get() {\n return this._headersReady;\n }\n }, {\n key: \"filename\",\n get: function get() {\n return this._filename;\n }\n }, {\n key: \"isRangeSupported\",\n get: function get() {\n return this._stream._isRangeSupported;\n }\n }, {\n key: \"isStreamingSupported\",\n get: function get() {\n return this._stream._isStreamingSupported;\n }\n }, {\n key: \"contentLength\",\n get: function get() {\n return this._stream._contentLength;\n }\n }]);\n\n return PDFDataTransportStreamReader;\n}();\n\nvar PDFDataTransportStreamRangeReader = /*#__PURE__*/function () {\n function PDFDataTransportStreamRangeReader(stream, begin, end) {\n _classCallCheck(this, PDFDataTransportStreamRangeReader);\n\n this._stream = stream;\n this._begin = begin;\n this._end = end;\n this._queuedChunk = null;\n this._requests = [];\n this._done = false;\n this.onProgress = null;\n }\n\n _createClass(PDFDataTransportStreamRangeReader, [{\n key: \"_enqueue\",\n value: function _enqueue(chunk) {\n if (this._done) {\n return;\n }\n\n if (this._requests.length === 0) {\n this._queuedChunk = chunk;\n } else {\n var requestsCapability = this._requests.shift();\n\n requestsCapability.resolve({\n value: chunk,\n done: false\n });\n\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n });\n\n this._requests = [];\n }\n\n this._done = true;\n\n this._stream._removeRangeReader(this);\n }\n }, {\n key: \"read\",\n value: function () {\n var _read2 = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee2() {\n var chunk, requestCapability;\n return _regenerator[\"default\"].wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!this._queuedChunk) {\n _context2.next = 4;\n break;\n }\n\n chunk = this._queuedChunk;\n this._queuedChunk = null;\n return _context2.abrupt(\"return\", {\n value: chunk,\n done: false\n });\n\n case 4:\n if (!this._done) {\n _context2.next = 6;\n break;\n }\n\n return _context2.abrupt(\"return\", {\n value: undefined,\n done: true\n });\n\n case 6:\n requestCapability = (0, _util.createPromiseCapability)();\n\n this._requests.push(requestCapability);\n\n return _context2.abrupt(\"return\", requestCapability.promise);\n\n case 9:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function read() {\n return _read2.apply(this, arguments);\n }\n\n return read;\n }()\n }, {\n key: \"cancel\",\n value: function cancel(reason) {\n this._done = true;\n\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n });\n\n this._requests = [];\n\n this._stream._removeRangeReader(this);\n }\n }, {\n key: \"isStreamingSupported\",\n get: function get() {\n return false;\n }\n }]);\n\n return PDFDataTransportStreamRangeReader;\n}();\n\n/***/ }),\n/* 208 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.WebGLContext = void 0;\n\nvar _util = __w_pdfjs_require__(5);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar WebGLContext = /*#__PURE__*/function () {\n function WebGLContext(_ref) {\n var _ref$enable = _ref.enable,\n enable = _ref$enable === void 0 ? false : _ref$enable;\n\n _classCallCheck(this, WebGLContext);\n\n this._enabled = enable === true;\n }\n\n _createClass(WebGLContext, [{\n key: \"composeSMask\",\n value: function composeSMask(_ref2) {\n var layer = _ref2.layer,\n mask = _ref2.mask,\n properties = _ref2.properties;\n return WebGLUtils.composeSMask(layer, mask, properties);\n }\n }, {\n key: \"drawFigures\",\n value: function drawFigures(_ref3) {\n var width = _ref3.width,\n height = _ref3.height,\n backgroundColor = _ref3.backgroundColor,\n figures = _ref3.figures,\n context = _ref3.context;\n return WebGLUtils.drawFigures(width, height, backgroundColor, figures, context);\n }\n }, {\n key: \"clear\",\n value: function clear() {\n WebGLUtils.cleanup();\n }\n }, {\n key: \"isEnabled\",\n get: function get() {\n var enabled = this._enabled;\n\n if (enabled) {\n enabled = WebGLUtils.tryInitGL();\n }\n\n return (0, _util.shadow)(this, \"isEnabled\", enabled);\n }\n }]);\n\n return WebGLContext;\n}();\n\nexports.WebGLContext = WebGLContext;\n\nvar WebGLUtils = function WebGLUtilsClosure() {\n function loadShader(gl, code, shaderType) {\n var shader = gl.createShader(shaderType);\n gl.shaderSource(shader, code);\n gl.compileShader(shader);\n var compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS);\n\n if (!compiled) {\n var errorMsg = gl.getShaderInfoLog(shader);\n throw new Error(\"Error during shader compilation: \" + errorMsg);\n }\n\n return shader;\n }\n\n function createVertexShader(gl, code) {\n return loadShader(gl, code, gl.VERTEX_SHADER);\n }\n\n function createFragmentShader(gl, code) {\n return loadShader(gl, code, gl.FRAGMENT_SHADER);\n }\n\n function createProgram(gl, shaders) {\n var program = gl.createProgram();\n\n for (var i = 0, ii = shaders.length; i < ii; ++i) {\n gl.attachShader(program, shaders[i]);\n }\n\n gl.linkProgram(program);\n var linked = gl.getProgramParameter(program, gl.LINK_STATUS);\n\n if (!linked) {\n var errorMsg = gl.getProgramInfoLog(program);\n throw new Error(\"Error during program linking: \" + errorMsg);\n }\n\n return program;\n }\n\n function createTexture(gl, image, textureId) {\n gl.activeTexture(textureId);\n var texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n return texture;\n }\n\n var currentGL, currentCanvas;\n\n function generateGL() {\n if (currentGL) {\n return;\n }\n\n currentCanvas = document.createElement(\"canvas\");\n currentGL = currentCanvas.getContext(\"webgl\", {\n premultipliedalpha: false\n });\n }\n\n var smaskVertexShaderCode = \"\\\n attribute vec2 a_position; \\\n attribute vec2 a_texCoord; \\\n \\\n uniform vec2 u_resolution; \\\n \\\n varying vec2 v_texCoord; \\\n \\\n void main() { \\\n vec2 clipSpace = (a_position / u_resolution) * 2.0 - 1.0; \\\n gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1); \\\n \\\n v_texCoord = a_texCoord; \\\n } \";\n var smaskFragmentShaderCode = \"\\\n precision mediump float; \\\n \\\n uniform vec4 u_backdrop; \\\n uniform int u_subtype; \\\n uniform sampler2D u_image; \\\n uniform sampler2D u_mask; \\\n \\\n varying vec2 v_texCoord; \\\n \\\n void main() { \\\n vec4 imageColor = texture2D(u_image, v_texCoord); \\\n vec4 maskColor = texture2D(u_mask, v_texCoord); \\\n if (u_backdrop.a > 0.0) { \\\n maskColor.rgb = maskColor.rgb * maskColor.a + \\\n u_backdrop.rgb * (1.0 - maskColor.a); \\\n } \\\n float lum; \\\n if (u_subtype == 0) { \\\n lum = maskColor.a; \\\n } else { \\\n lum = maskColor.r * 0.3 + maskColor.g * 0.59 + \\\n maskColor.b * 0.11; \\\n } \\\n imageColor.a *= lum; \\\n imageColor.rgb *= imageColor.a; \\\n gl_FragColor = imageColor; \\\n } \";\n var smaskCache = null;\n\n function initSmaskGL() {\n var canvas, gl;\n generateGL();\n canvas = currentCanvas;\n currentCanvas = null;\n gl = currentGL;\n currentGL = null;\n var vertexShader = createVertexShader(gl, smaskVertexShaderCode);\n var fragmentShader = createFragmentShader(gl, smaskFragmentShaderCode);\n var program = createProgram(gl, [vertexShader, fragmentShader]);\n gl.useProgram(program);\n var cache = {};\n cache.gl = gl;\n cache.canvas = canvas;\n cache.resolutionLocation = gl.getUniformLocation(program, \"u_resolution\");\n cache.positionLocation = gl.getAttribLocation(program, \"a_position\");\n cache.backdropLocation = gl.getUniformLocation(program, \"u_backdrop\");\n cache.subtypeLocation = gl.getUniformLocation(program, \"u_subtype\");\n var texCoordLocation = gl.getAttribLocation(program, \"a_texCoord\");\n var texLayerLocation = gl.getUniformLocation(program, \"u_image\");\n var texMaskLocation = gl.getUniformLocation(program, \"u_mask\");\n var texCoordBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0]), gl.STATIC_DRAW);\n gl.enableVertexAttribArray(texCoordLocation);\n gl.vertexAttribPointer(texCoordLocation, 2, gl.FLOAT, false, 0, 0);\n gl.uniform1i(texLayerLocation, 0);\n gl.uniform1i(texMaskLocation, 1);\n smaskCache = cache;\n }\n\n function composeSMask(layer, mask, properties) {\n var width = layer.width,\n height = layer.height;\n\n if (!smaskCache) {\n initSmaskGL();\n }\n\n var cache = smaskCache,\n canvas = cache.canvas,\n gl = cache.gl;\n canvas.width = width;\n canvas.height = height;\n gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\n gl.uniform2f(cache.resolutionLocation, width, height);\n\n if (properties.backdrop) {\n gl.uniform4f(cache.resolutionLocation, properties.backdrop[0], properties.backdrop[1], properties.backdrop[2], 1);\n } else {\n gl.uniform4f(cache.resolutionLocation, 0, 0, 0, 0);\n }\n\n gl.uniform1i(cache.subtypeLocation, properties.subtype === \"Luminosity\" ? 1 : 0);\n var texture = createTexture(gl, layer, gl.TEXTURE0);\n var maskTexture = createTexture(gl, mask, gl.TEXTURE1);\n var buffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([0, 0, width, 0, 0, height, 0, height, width, 0, width, height]), gl.STATIC_DRAW);\n gl.enableVertexAttribArray(cache.positionLocation);\n gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0);\n gl.clearColor(0, 0, 0, 0);\n gl.enable(gl.BLEND);\n gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);\n gl.clear(gl.COLOR_BUFFER_BIT);\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n gl.flush();\n gl.deleteTexture(texture);\n gl.deleteTexture(maskTexture);\n gl.deleteBuffer(buffer);\n return canvas;\n }\n\n var figuresVertexShaderCode = \"\\\n attribute vec2 a_position; \\\n attribute vec3 a_color; \\\n \\\n uniform vec2 u_resolution; \\\n uniform vec2 u_scale; \\\n uniform vec2 u_offset; \\\n \\\n varying vec4 v_color; \\\n \\\n void main() { \\\n vec2 position = (a_position + u_offset) * u_scale; \\\n vec2 clipSpace = (position / u_resolution) * 2.0 - 1.0; \\\n gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1); \\\n \\\n v_color = vec4(a_color / 255.0, 1.0); \\\n } \";\n var figuresFragmentShaderCode = \"\\\n precision mediump float; \\\n \\\n varying vec4 v_color; \\\n \\\n void main() { \\\n gl_FragColor = v_color; \\\n } \";\n var figuresCache = null;\n\n function initFiguresGL() {\n var canvas, gl;\n generateGL();\n canvas = currentCanvas;\n currentCanvas = null;\n gl = currentGL;\n currentGL = null;\n var vertexShader = createVertexShader(gl, figuresVertexShaderCode);\n var fragmentShader = createFragmentShader(gl, figuresFragmentShaderCode);\n var program = createProgram(gl, [vertexShader, fragmentShader]);\n gl.useProgram(program);\n var cache = {};\n cache.gl = gl;\n cache.canvas = canvas;\n cache.resolutionLocation = gl.getUniformLocation(program, \"u_resolution\");\n cache.scaleLocation = gl.getUniformLocation(program, \"u_scale\");\n cache.offsetLocation = gl.getUniformLocation(program, \"u_offset\");\n cache.positionLocation = gl.getAttribLocation(program, \"a_position\");\n cache.colorLocation = gl.getAttribLocation(program, \"a_color\");\n figuresCache = cache;\n }\n\n function drawFigures(width, height, backgroundColor, figures, context) {\n if (!figuresCache) {\n initFiguresGL();\n }\n\n var cache = figuresCache,\n canvas = cache.canvas,\n gl = cache.gl;\n canvas.width = width;\n canvas.height = height;\n gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\n gl.uniform2f(cache.resolutionLocation, width, height);\n var count = 0;\n var i, ii, rows;\n\n for (i = 0, ii = figures.length; i < ii; i++) {\n switch (figures[i].type) {\n case \"lattice\":\n rows = figures[i].coords.length / figures[i].verticesPerRow | 0;\n count += (rows - 1) * (figures[i].verticesPerRow - 1) * 6;\n break;\n\n case \"triangles\":\n count += figures[i].coords.length;\n break;\n }\n }\n\n var coords = new Float32Array(count * 2);\n var colors = new Uint8Array(count * 3);\n var coordsMap = context.coords,\n colorsMap = context.colors;\n var pIndex = 0,\n cIndex = 0;\n\n for (i = 0, ii = figures.length; i < ii; i++) {\n var figure = figures[i],\n ps = figure.coords,\n cs = figure.colors;\n\n switch (figure.type) {\n case \"lattice\":\n var cols = figure.verticesPerRow;\n rows = ps.length / cols | 0;\n\n for (var row = 1; row < rows; row++) {\n var offset = row * cols + 1;\n\n for (var col = 1; col < cols; col++, offset++) {\n coords[pIndex] = coordsMap[ps[offset - cols - 1]];\n coords[pIndex + 1] = coordsMap[ps[offset - cols - 1] + 1];\n coords[pIndex + 2] = coordsMap[ps[offset - cols]];\n coords[pIndex + 3] = coordsMap[ps[offset - cols] + 1];\n coords[pIndex + 4] = coordsMap[ps[offset - 1]];\n coords[pIndex + 5] = coordsMap[ps[offset - 1] + 1];\n colors[cIndex] = colorsMap[cs[offset - cols - 1]];\n colors[cIndex + 1] = colorsMap[cs[offset - cols - 1] + 1];\n colors[cIndex + 2] = colorsMap[cs[offset - cols - 1] + 2];\n colors[cIndex + 3] = colorsMap[cs[offset - cols]];\n colors[cIndex + 4] = colorsMap[cs[offset - cols] + 1];\n colors[cIndex + 5] = colorsMap[cs[offset - cols] + 2];\n colors[cIndex + 6] = colorsMap[cs[offset - 1]];\n colors[cIndex + 7] = colorsMap[cs[offset - 1] + 1];\n colors[cIndex + 8] = colorsMap[cs[offset - 1] + 2];\n coords[pIndex + 6] = coords[pIndex + 2];\n coords[pIndex + 7] = coords[pIndex + 3];\n coords[pIndex + 8] = coords[pIndex + 4];\n coords[pIndex + 9] = coords[pIndex + 5];\n coords[pIndex + 10] = coordsMap[ps[offset]];\n coords[pIndex + 11] = coordsMap[ps[offset] + 1];\n colors[cIndex + 9] = colors[cIndex + 3];\n colors[cIndex + 10] = colors[cIndex + 4];\n colors[cIndex + 11] = colors[cIndex + 5];\n colors[cIndex + 12] = colors[cIndex + 6];\n colors[cIndex + 13] = colors[cIndex + 7];\n colors[cIndex + 14] = colors[cIndex + 8];\n colors[cIndex + 15] = colorsMap[cs[offset]];\n colors[cIndex + 16] = colorsMap[cs[offset] + 1];\n colors[cIndex + 17] = colorsMap[cs[offset] + 2];\n pIndex += 12;\n cIndex += 18;\n }\n }\n\n break;\n\n case \"triangles\":\n for (var j = 0, jj = ps.length; j < jj; j++) {\n coords[pIndex] = coordsMap[ps[j]];\n coords[pIndex + 1] = coordsMap[ps[j] + 1];\n colors[cIndex] = colorsMap[cs[j]];\n colors[cIndex + 1] = colorsMap[cs[j] + 1];\n colors[cIndex + 2] = colorsMap[cs[j] + 2];\n pIndex += 2;\n cIndex += 3;\n }\n\n break;\n }\n }\n\n if (backgroundColor) {\n gl.clearColor(backgroundColor[0] / 255, backgroundColor[1] / 255, backgroundColor[2] / 255, 1.0);\n } else {\n gl.clearColor(0, 0, 0, 0);\n }\n\n gl.clear(gl.COLOR_BUFFER_BIT);\n var coordsBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, coordsBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, coords, gl.STATIC_DRAW);\n gl.enableVertexAttribArray(cache.positionLocation);\n gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0);\n var colorsBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, colorsBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, colors, gl.STATIC_DRAW);\n gl.enableVertexAttribArray(cache.colorLocation);\n gl.vertexAttribPointer(cache.colorLocation, 3, gl.UNSIGNED_BYTE, false, 0, 0);\n gl.uniform2f(cache.scaleLocation, context.scaleX, context.scaleY);\n gl.uniform2f(cache.offsetLocation, context.offsetX, context.offsetY);\n gl.drawArrays(gl.TRIANGLES, 0, count);\n gl.flush();\n gl.deleteBuffer(coordsBuffer);\n gl.deleteBuffer(colorsBuffer);\n return canvas;\n }\n\n return {\n tryInitGL: function tryInitGL() {\n try {\n generateGL();\n return !!currentGL;\n } catch (ex) {}\n\n return false;\n },\n composeSMask: composeSMask,\n drawFigures: drawFigures,\n cleanup: function cleanup() {\n if (smaskCache && smaskCache.canvas) {\n smaskCache.canvas.width = 0;\n smaskCache.canvas.height = 0;\n }\n\n if (figuresCache && figuresCache.canvas) {\n figuresCache.canvas.width = 0;\n figuresCache.canvas.height = 0;\n }\n\n smaskCache = null;\n figuresCache = null;\n }\n };\n}();\n\n/***/ }),\n/* 209 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.AnnotationLayer = void 0;\n\nvar _display_utils = __w_pdfjs_require__(1);\n\nvar _util = __w_pdfjs_require__(5);\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar AnnotationElementFactory = /*#__PURE__*/function () {\n function AnnotationElementFactory() {\n _classCallCheck(this, AnnotationElementFactory);\n }\n\n _createClass(AnnotationElementFactory, null, [{\n key: \"create\",\n value: function create(parameters) {\n var subtype = parameters.data.annotationType;\n\n switch (subtype) {\n case _util.AnnotationType.LINK:\n return new LinkAnnotationElement(parameters);\n\n case _util.AnnotationType.TEXT:\n return new TextAnnotationElement(parameters);\n\n case _util.AnnotationType.WIDGET:\n var fieldType = parameters.data.fieldType;\n\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotationElement(parameters);\n\n case \"Btn\":\n if (parameters.data.radioButton) {\n return new RadioButtonWidgetAnnotationElement(parameters);\n } else if (parameters.data.checkBox) {\n return new CheckboxWidgetAnnotationElement(parameters);\n }\n\n return new PushButtonWidgetAnnotationElement(parameters);\n\n case \"Ch\":\n return new ChoiceWidgetAnnotationElement(parameters);\n }\n\n return new WidgetAnnotationElement(parameters);\n\n case _util.AnnotationType.POPUP:\n return new PopupAnnotationElement(parameters);\n\n case _util.AnnotationType.FREETEXT:\n return new FreeTextAnnotationElement(parameters);\n\n case _util.AnnotationType.LINE:\n return new LineAnnotationElement(parameters);\n\n case _util.AnnotationType.SQUARE:\n return new SquareAnnotationElement(parameters);\n\n case _util.AnnotationType.CIRCLE:\n return new CircleAnnotationElement(parameters);\n\n case _util.AnnotationType.POLYLINE:\n return new PolylineAnnotationElement(parameters);\n\n case _util.AnnotationType.CARET:\n return new CaretAnnotationElement(parameters);\n\n case _util.AnnotationType.INK:\n return new InkAnnotationElement(parameters);\n\n case _util.AnnotationType.POLYGON:\n return new PolygonAnnotationElement(parameters);\n\n case _util.AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(parameters);\n\n case _util.AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(parameters);\n\n case _util.AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(parameters);\n\n case _util.AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(parameters);\n\n case _util.AnnotationType.STAMP:\n return new StampAnnotationElement(parameters);\n\n case _util.AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(parameters);\n\n default:\n return new AnnotationElement(parameters);\n }\n }\n }]);\n\n return AnnotationElementFactory;\n}();\n\nvar AnnotationElement = /*#__PURE__*/function () {\n function AnnotationElement(parameters) {\n var isRenderable = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var ignoreBorder = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n _classCallCheck(this, AnnotationElement);\n\n this.isRenderable = isRenderable;\n this.data = parameters.data;\n this.layer = parameters.layer;\n this.page = parameters.page;\n this.viewport = parameters.viewport;\n this.linkService = parameters.linkService;\n this.downloadManager = parameters.downloadManager;\n this.imageResourcesPath = parameters.imageResourcesPath;\n this.renderInteractiveForms = parameters.renderInteractiveForms;\n this.svgFactory = parameters.svgFactory;\n\n if (isRenderable) {\n this.container = this._createContainer(ignoreBorder);\n }\n }\n\n _createClass(AnnotationElement, [{\n key: \"_createContainer\",\n value: function _createContainer() {\n var ignoreBorder = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var data = this.data,\n page = this.page,\n viewport = this.viewport;\n var container = document.createElement(\"section\");\n var width = data.rect[2] - data.rect[0];\n var height = data.rect[3] - data.rect[1];\n container.setAttribute(\"data-annotation-id\", data.id);\n\n var rect = _util.Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]);\n\n container.style.transform = \"matrix(\".concat(viewport.transform.join(\",\"), \")\");\n container.style.transformOrigin = \"-\".concat(rect[0], \"px -\").concat(rect[1], \"px\");\n\n if (!ignoreBorder && data.borderStyle.width > 0) {\n container.style.borderWidth = \"\".concat(data.borderStyle.width, \"px\");\n\n if (data.borderStyle.style !== _util.AnnotationBorderStyleType.UNDERLINE) {\n width = width - 2 * data.borderStyle.width;\n height = height - 2 * data.borderStyle.width;\n }\n\n var horizontalRadius = data.borderStyle.horizontalCornerRadius;\n var verticalRadius = data.borderStyle.verticalCornerRadius;\n\n if (horizontalRadius > 0 || verticalRadius > 0) {\n var radius = \"\".concat(horizontalRadius, \"px / \").concat(verticalRadius, \"px\");\n container.style.borderRadius = radius;\n }\n\n switch (data.borderStyle.style) {\n case _util.AnnotationBorderStyleType.SOLID:\n container.style.borderStyle = \"solid\";\n break;\n\n case _util.AnnotationBorderStyleType.DASHED:\n container.style.borderStyle = \"dashed\";\n break;\n\n case _util.AnnotationBorderStyleType.BEVELED:\n (0, _util.warn)(\"Unimplemented border style: beveled\");\n break;\n\n case _util.AnnotationBorderStyleType.INSET:\n (0, _util.warn)(\"Unimplemented border style: inset\");\n break;\n\n case _util.AnnotationBorderStyleType.UNDERLINE:\n container.style.borderBottomStyle = \"solid\";\n break;\n\n default:\n break;\n }\n\n if (data.color) {\n container.style.borderColor = _util.Util.makeCssRgb(data.color[0] | 0, data.color[1] | 0, data.color[2] | 0);\n } else {\n container.style.borderWidth = 0;\n }\n }\n\n container.style.left = \"\".concat(rect[0], \"px\");\n container.style.top = \"\".concat(rect[1], \"px\");\n container.style.width = \"\".concat(width, \"px\");\n container.style.height = \"\".concat(height, \"px\");\n return container;\n }\n }, {\n key: \"_createPopup\",\n value: function _createPopup(container, trigger, data) {\n if (!trigger) {\n trigger = document.createElement(\"div\");\n trigger.style.height = container.style.height;\n trigger.style.width = container.style.width;\n container.appendChild(trigger);\n }\n\n var popupElement = new PopupElement({\n container: container,\n trigger: trigger,\n color: data.color,\n title: data.title,\n modificationDate: data.modificationDate,\n contents: data.contents,\n hideWrapper: true\n });\n var popup = popupElement.render();\n popup.style.left = container.style.width;\n container.appendChild(popup);\n }\n }, {\n key: \"render\",\n value: function render() {\n (0, _util.unreachable)(\"Abstract method `AnnotationElement.render` called\");\n }\n }]);\n\n return AnnotationElement;\n}();\n\nvar LinkAnnotationElement = /*#__PURE__*/function (_AnnotationElement) {\n _inherits(LinkAnnotationElement, _AnnotationElement);\n\n var _super = _createSuper(LinkAnnotationElement);\n\n function LinkAnnotationElement(parameters) {\n _classCallCheck(this, LinkAnnotationElement);\n\n var isRenderable = !!(parameters.data.url || parameters.data.dest || parameters.data.action);\n return _super.call(this, parameters, isRenderable);\n }\n\n _createClass(LinkAnnotationElement, [{\n key: \"render\",\n value: function render() {\n this.container.className = \"linkAnnotation\";\n var data = this.data,\n linkService = this.linkService;\n var link = document.createElement(\"a\");\n\n if (data.url) {\n (0, _display_utils.addLinkAttributes)(link, {\n url: data.url,\n target: data.newWindow ? _display_utils.LinkTarget.BLANK : linkService.externalLinkTarget,\n rel: linkService.externalLinkRel,\n enabled: linkService.externalLinkEnabled\n });\n } else if (data.action) {\n this._bindNamedAction(link, data.action);\n } else {\n this._bindLink(link, data.dest);\n }\n\n this.container.appendChild(link);\n return this.container;\n }\n }, {\n key: \"_bindLink\",\n value: function _bindLink(link, destination) {\n var _this = this;\n\n link.href = this.linkService.getDestinationHash(destination);\n\n link.onclick = function () {\n if (destination) {\n _this.linkService.navigateTo(destination);\n }\n\n return false;\n };\n\n if (destination) {\n link.className = \"internalLink\";\n }\n }\n }, {\n key: \"_bindNamedAction\",\n value: function _bindNamedAction(link, action) {\n var _this2 = this;\n\n link.href = this.linkService.getAnchorUrl(\"\");\n\n link.onclick = function () {\n _this2.linkService.executeNamedAction(action);\n\n return false;\n };\n\n link.className = \"internalLink\";\n }\n }]);\n\n return LinkAnnotationElement;\n}(AnnotationElement);\n\nvar TextAnnotationElement = /*#__PURE__*/function (_AnnotationElement2) {\n _inherits(TextAnnotationElement, _AnnotationElement2);\n\n var _super2 = _createSuper(TextAnnotationElement);\n\n function TextAnnotationElement(parameters) {\n _classCallCheck(this, TextAnnotationElement);\n\n var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n return _super2.call(this, parameters, isRenderable);\n }\n\n _createClass(TextAnnotationElement, [{\n key: \"render\",\n value: function render() {\n this.container.className = \"textAnnotation\";\n var image = document.createElement(\"img\");\n image.style.height = this.container.style.height;\n image.style.width = this.container.style.width;\n image.src = this.imageResourcesPath + \"annotation-\" + this.data.name.toLowerCase() + \".svg\";\n image.alt = \"[{{type}} Annotation]\";\n image.dataset.l10nId = \"text_annotation_type\";\n image.dataset.l10nArgs = JSON.stringify({\n type: this.data.name\n });\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, image, this.data);\n }\n\n this.container.appendChild(image);\n return this.container;\n }\n }]);\n\n return TextAnnotationElement;\n}(AnnotationElement);\n\nvar WidgetAnnotationElement = /*#__PURE__*/function (_AnnotationElement3) {\n _inherits(WidgetAnnotationElement, _AnnotationElement3);\n\n var _super3 = _createSuper(WidgetAnnotationElement);\n\n function WidgetAnnotationElement() {\n _classCallCheck(this, WidgetAnnotationElement);\n\n return _super3.apply(this, arguments);\n }\n\n _createClass(WidgetAnnotationElement, [{\n key: \"render\",\n value: function render() {\n return this.container;\n }\n }]);\n\n return WidgetAnnotationElement;\n}(AnnotationElement);\n\nvar TextWidgetAnnotationElement = /*#__PURE__*/function (_WidgetAnnotationElem) {\n _inherits(TextWidgetAnnotationElement, _WidgetAnnotationElem);\n\n var _super4 = _createSuper(TextWidgetAnnotationElement);\n\n function TextWidgetAnnotationElement(parameters) {\n _classCallCheck(this, TextWidgetAnnotationElement);\n\n var isRenderable = parameters.renderInteractiveForms || !parameters.data.hasAppearance && !!parameters.data.fieldValue;\n return _super4.call(this, parameters, isRenderable);\n }\n\n _createClass(TextWidgetAnnotationElement, [{\n key: \"render\",\n value: function render() {\n var TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n this.container.className = \"textWidgetAnnotation\";\n var element = null;\n\n if (this.renderInteractiveForms) {\n if (this.data.multiLine) {\n element = document.createElement(\"textarea\");\n element.textContent = this.data.fieldValue;\n } else {\n element = document.createElement(\"input\");\n element.type = \"text\";\n element.setAttribute(\"value\", this.data.fieldValue);\n }\n\n element.disabled = this.data.readOnly;\n element.name = this.data.fieldName;\n\n if (this.data.maxLen !== null) {\n element.maxLength = this.data.maxLen;\n }\n\n if (this.data.comb) {\n var fieldWidth = this.data.rect[2] - this.data.rect[0];\n var combWidth = fieldWidth / this.data.maxLen;\n element.classList.add(\"comb\");\n element.style.letterSpacing = \"calc(\".concat(combWidth, \"px - 1ch)\");\n }\n } else {\n element = document.createElement(\"div\");\n element.textContent = this.data.fieldValue;\n element.style.verticalAlign = \"middle\";\n element.style.display = \"table-cell\";\n var font = null;\n\n if (this.data.fontRefName && this.page.commonObjs.has(this.data.fontRefName)) {\n font = this.page.commonObjs.get(this.data.fontRefName);\n }\n\n this._setTextStyle(element, font);\n }\n\n if (this.data.textAlignment !== null) {\n element.style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n }\n\n this.container.appendChild(element);\n return this.container;\n }\n }, {\n key: \"_setTextStyle\",\n value: function _setTextStyle(element, font) {\n var style = element.style;\n style.fontSize = \"\".concat(this.data.fontSize, \"px\");\n style.direction = this.data.fontDirection < 0 ? \"rtl\" : \"ltr\";\n\n if (!font) {\n return;\n }\n\n var bold = \"normal\";\n\n if (font.black) {\n bold = \"900\";\n } else if (font.bold) {\n bold = \"bold\";\n }\n\n style.fontWeight = bold;\n style.fontStyle = font.italic ? \"italic\" : \"normal\";\n var fontFamily = font.loadedName ? \"\\\"\".concat(font.loadedName, \"\\\", \") : \"\";\n var fallbackName = font.fallbackName || \"Helvetica, sans-serif\";\n style.fontFamily = fontFamily + fallbackName;\n }\n }]);\n\n return TextWidgetAnnotationElement;\n}(WidgetAnnotationElement);\n\nvar CheckboxWidgetAnnotationElement = /*#__PURE__*/function (_WidgetAnnotationElem2) {\n _inherits(CheckboxWidgetAnnotationElement, _WidgetAnnotationElem2);\n\n var _super5 = _createSuper(CheckboxWidgetAnnotationElement);\n\n function CheckboxWidgetAnnotationElement(parameters) {\n _classCallCheck(this, CheckboxWidgetAnnotationElement);\n\n return _super5.call(this, parameters, parameters.renderInteractiveForms);\n }\n\n _createClass(CheckboxWidgetAnnotationElement, [{\n key: \"render\",\n value: function render() {\n this.container.className = \"buttonWidgetAnnotation checkBox\";\n var element = document.createElement(\"input\");\n element.disabled = this.data.readOnly;\n element.type = \"checkbox\";\n element.name = this.data.fieldName;\n\n if (this.data.fieldValue && this.data.fieldValue !== \"Off\") {\n element.setAttribute(\"checked\", true);\n }\n\n this.container.appendChild(element);\n return this.container;\n }\n }]);\n\n return CheckboxWidgetAnnotationElement;\n}(WidgetAnnotationElement);\n\nvar RadioButtonWidgetAnnotationElement = /*#__PURE__*/function (_WidgetAnnotationElem3) {\n _inherits(RadioButtonWidgetAnnotationElement, _WidgetAnnotationElem3);\n\n var _super6 = _createSuper(RadioButtonWidgetAnnotationElement);\n\n function RadioButtonWidgetAnnotationElement(parameters) {\n _classCallCheck(this, RadioButtonWidgetAnnotationElement);\n\n return _super6.call(this, parameters, parameters.renderInteractiveForms);\n }\n\n _createClass(RadioButtonWidgetAnnotationElement, [{\n key: \"render\",\n value: function render() {\n this.container.className = \"buttonWidgetAnnotation radioButton\";\n var element = document.createElement(\"input\");\n element.disabled = this.data.readOnly;\n element.type = \"radio\";\n element.name = this.data.fieldName;\n\n if (this.data.fieldValue === this.data.buttonValue) {\n element.setAttribute(\"checked\", true);\n }\n\n this.container.appendChild(element);\n return this.container;\n }\n }]);\n\n return RadioButtonWidgetAnnotationElement;\n}(WidgetAnnotationElement);\n\nvar PushButtonWidgetAnnotationElement = /*#__PURE__*/function (_LinkAnnotationElemen) {\n _inherits(PushButtonWidgetAnnotationElement, _LinkAnnotationElemen);\n\n var _super7 = _createSuper(PushButtonWidgetAnnotationElement);\n\n function PushButtonWidgetAnnotationElement() {\n _classCallCheck(this, PushButtonWidgetAnnotationElement);\n\n return _super7.apply(this, arguments);\n }\n\n _createClass(PushButtonWidgetAnnotationElement, [{\n key: \"render\",\n value: function render() {\n var container = _get(_getPrototypeOf(PushButtonWidgetAnnotationElement.prototype), \"render\", this).call(this);\n\n container.className = \"buttonWidgetAnnotation pushButton\";\n return container;\n }\n }]);\n\n return PushButtonWidgetAnnotationElement;\n}(LinkAnnotationElement);\n\nvar ChoiceWidgetAnnotationElement = /*#__PURE__*/function (_WidgetAnnotationElem4) {\n _inherits(ChoiceWidgetAnnotationElement, _WidgetAnnotationElem4);\n\n var _super8 = _createSuper(ChoiceWidgetAnnotationElement);\n\n function ChoiceWidgetAnnotationElement(parameters) {\n _classCallCheck(this, ChoiceWidgetAnnotationElement);\n\n return _super8.call(this, parameters, parameters.renderInteractiveForms);\n }\n\n _createClass(ChoiceWidgetAnnotationElement, [{\n key: \"render\",\n value: function render() {\n this.container.className = \"choiceWidgetAnnotation\";\n var selectElement = document.createElement(\"select\");\n selectElement.disabled = this.data.readOnly;\n selectElement.name = this.data.fieldName;\n\n if (!this.data.combo) {\n selectElement.size = this.data.options.length;\n\n if (this.data.multiSelect) {\n selectElement.multiple = true;\n }\n }\n\n var _iterator = _createForOfIteratorHelper(this.data.options),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var option = _step.value;\n var optionElement = document.createElement(\"option\");\n optionElement.textContent = option.displayValue;\n optionElement.value = option.exportValue;\n\n if (this.data.fieldValue.includes(option.displayValue)) {\n optionElement.setAttribute(\"selected\", true);\n }\n\n selectElement.appendChild(optionElement);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n this.container.appendChild(selectElement);\n return this.container;\n }\n }]);\n\n return ChoiceWidgetAnnotationElement;\n}(WidgetAnnotationElement);\n\nvar PopupAnnotationElement = /*#__PURE__*/function (_AnnotationElement4) {\n _inherits(PopupAnnotationElement, _AnnotationElement4);\n\n var _super9 = _createSuper(PopupAnnotationElement);\n\n function PopupAnnotationElement(parameters) {\n _classCallCheck(this, PopupAnnotationElement);\n\n var isRenderable = !!(parameters.data.title || parameters.data.contents);\n return _super9.call(this, parameters, isRenderable);\n }\n\n _createClass(PopupAnnotationElement, [{\n key: \"render\",\n value: function render() {\n var IGNORE_TYPES = [\"Line\", \"Square\", \"Circle\", \"PolyLine\", \"Polygon\", \"Ink\"];\n this.container.className = \"popupAnnotation\";\n\n if (IGNORE_TYPES.includes(this.data.parentType)) {\n return this.container;\n }\n\n var selector = \"[data-annotation-id=\\\"\".concat(this.data.parentId, \"\\\"]\");\n var parentElement = this.layer.querySelector(selector);\n\n if (!parentElement) {\n return this.container;\n }\n\n var popup = new PopupElement({\n container: this.container,\n trigger: parentElement,\n color: this.data.color,\n title: this.data.title,\n modificationDate: this.data.modificationDate,\n contents: this.data.contents\n });\n var parentLeft = parseFloat(parentElement.style.left);\n var parentWidth = parseFloat(parentElement.style.width);\n this.container.style.transformOrigin = \"-\".concat(parentLeft + parentWidth, \"px -\").concat(parentElement.style.top);\n this.container.style.left = \"\".concat(parentLeft + parentWidth, \"px\");\n this.container.appendChild(popup.render());\n return this.container;\n }\n }]);\n\n return PopupAnnotationElement;\n}(AnnotationElement);\n\nvar PopupElement = /*#__PURE__*/function () {\n function PopupElement(parameters) {\n _classCallCheck(this, PopupElement);\n\n this.container = parameters.container;\n this.trigger = parameters.trigger;\n this.color = parameters.color;\n this.title = parameters.title;\n this.modificationDate = parameters.modificationDate;\n this.contents = parameters.contents;\n this.hideWrapper = parameters.hideWrapper || false;\n this.pinned = false;\n }\n\n _createClass(PopupElement, [{\n key: \"render\",\n value: function render() {\n var BACKGROUND_ENLIGHT = 0.7;\n var wrapper = document.createElement(\"div\");\n wrapper.className = \"popupWrapper\";\n this.hideElement = this.hideWrapper ? wrapper : this.container;\n this.hideElement.setAttribute(\"hidden\", true);\n var popup = document.createElement(\"div\");\n popup.className = \"popup\";\n var color = this.color;\n\n if (color) {\n var r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0];\n var g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1];\n var b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2];\n popup.style.backgroundColor = _util.Util.makeCssRgb(r | 0, g | 0, b | 0);\n }\n\n var title = document.createElement(\"h1\");\n title.textContent = this.title;\n popup.appendChild(title);\n\n var dateObject = _display_utils.PDFDateString.toDateObject(this.modificationDate);\n\n if (dateObject) {\n var modificationDate = document.createElement(\"span\");\n modificationDate.textContent = \"{{date}}, {{time}}\";\n modificationDate.dataset.l10nId = \"annotation_date_string\";\n modificationDate.dataset.l10nArgs = JSON.stringify({\n date: dateObject.toLocaleDateString(),\n time: dateObject.toLocaleTimeString()\n });\n popup.appendChild(modificationDate);\n }\n\n var contents = this._formatContents(this.contents);\n\n popup.appendChild(contents);\n this.trigger.addEventListener(\"click\", this._toggle.bind(this));\n this.trigger.addEventListener(\"mouseover\", this._show.bind(this, false));\n this.trigger.addEventListener(\"mouseout\", this._hide.bind(this, false));\n popup.addEventListener(\"click\", this._hide.bind(this, true));\n wrapper.appendChild(popup);\n return wrapper;\n }\n }, {\n key: \"_formatContents\",\n value: function _formatContents(contents) {\n var p = document.createElement(\"p\");\n var lines = contents.split(/(?:\\r\\n?|\\n)/);\n\n for (var i = 0, ii = lines.length; i < ii; ++i) {\n var line = lines[i];\n p.appendChild(document.createTextNode(line));\n\n if (i < ii - 1) {\n p.appendChild(document.createElement(\"br\"));\n }\n }\n\n return p;\n }\n }, {\n key: \"_toggle\",\n value: function _toggle() {\n if (this.pinned) {\n this._hide(true);\n } else {\n this._show(true);\n }\n }\n }, {\n key: \"_show\",\n value: function _show() {\n var pin = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (pin) {\n this.pinned = true;\n }\n\n if (this.hideElement.hasAttribute(\"hidden\")) {\n this.hideElement.removeAttribute(\"hidden\");\n this.container.style.zIndex += 1;\n }\n }\n }, {\n key: \"_hide\",\n value: function _hide() {\n var unpin = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n if (unpin) {\n this.pinned = false;\n }\n\n if (!this.hideElement.hasAttribute(\"hidden\") && !this.pinned) {\n this.hideElement.setAttribute(\"hidden\", true);\n this.container.style.zIndex -= 1;\n }\n }\n }]);\n\n return PopupElement;\n}();\n\nvar FreeTextAnnotationElement = /*#__PURE__*/function (_AnnotationElement5) {\n _inherits(FreeTextAnnotationElement, _AnnotationElement5);\n\n var _super10 = _createSuper(FreeTextAnnotationElement);\n\n function FreeTextAnnotationElement(parameters) {\n _classCallCheck(this, FreeTextAnnotationElement);\n\n var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n return _super10.call(this, parameters, isRenderable, true);\n }\n\n _createClass(FreeTextAnnotationElement, [{\n key: \"render\",\n value: function render() {\n this.container.className = \"freeTextAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n\n return this.container;\n }\n }]);\n\n return FreeTextAnnotationElement;\n}(AnnotationElement);\n\nvar LineAnnotationElement = /*#__PURE__*/function (_AnnotationElement6) {\n _inherits(LineAnnotationElement, _AnnotationElement6);\n\n var _super11 = _createSuper(LineAnnotationElement);\n\n function LineAnnotationElement(parameters) {\n _classCallCheck(this, LineAnnotationElement);\n\n var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n return _super11.call(this, parameters, isRenderable, true);\n }\n\n _createClass(LineAnnotationElement, [{\n key: \"render\",\n value: function render() {\n this.container.className = \"lineAnnotation\";\n var data = this.data;\n var width = data.rect[2] - data.rect[0];\n var height = data.rect[3] - data.rect[1];\n var svg = this.svgFactory.create(width, height);\n var line = this.svgFactory.createElement(\"svg:line\");\n line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n line.setAttribute(\"y1\", data.rect[3] - data.lineCoordinates[1]);\n line.setAttribute(\"x2\", data.rect[2] - data.lineCoordinates[2]);\n line.setAttribute(\"y2\", data.rect[3] - data.lineCoordinates[3]);\n line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n line.setAttribute(\"stroke\", \"transparent\");\n svg.appendChild(line);\n this.container.append(svg);\n\n this._createPopup(this.container, line, data);\n\n return this.container;\n }\n }]);\n\n return LineAnnotationElement;\n}(AnnotationElement);\n\nvar SquareAnnotationElement = /*#__PURE__*/function (_AnnotationElement7) {\n _inherits(SquareAnnotationElement, _AnnotationElement7);\n\n var _super12 = _createSuper(SquareAnnotationElement);\n\n function SquareAnnotationElement(parameters) {\n _classCallCheck(this, SquareAnnotationElement);\n\n var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n return _super12.call(this, parameters, isRenderable, true);\n }\n\n _createClass(SquareAnnotationElement, [{\n key: \"render\",\n value: function render() {\n this.container.className = \"squareAnnotation\";\n var data = this.data;\n var width = data.rect[2] - data.rect[0];\n var height = data.rect[3] - data.rect[1];\n var svg = this.svgFactory.create(width, height);\n var borderWidth = data.borderStyle.width;\n var square = this.svgFactory.createElement(\"svg:rect\");\n square.setAttribute(\"x\", borderWidth / 2);\n square.setAttribute(\"y\", borderWidth / 2);\n square.setAttribute(\"width\", width - borderWidth);\n square.setAttribute(\"height\", height - borderWidth);\n square.setAttribute(\"stroke-width\", borderWidth || 1);\n square.setAttribute(\"stroke\", \"transparent\");\n square.setAttribute(\"fill\", \"none\");\n svg.appendChild(square);\n this.container.append(svg);\n\n this._createPopup(this.container, square, data);\n\n return this.container;\n }\n }]);\n\n return SquareAnnotationElement;\n}(AnnotationElement);\n\nvar CircleAnnotationElement = /*#__PURE__*/function (_AnnotationElement8) {\n _inherits(CircleAnnotationElement, _AnnotationElement8);\n\n var _super13 = _createSuper(CircleAnnotationElement);\n\n function CircleAnnotationElement(parameters) {\n _classCallCheck(this, CircleAnnotationElement);\n\n var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n return _super13.call(this, parameters, isRenderable, true);\n }\n\n _createClass(CircleAnnotationElement, [{\n key: \"render\",\n value: function render() {\n this.container.className = \"circleAnnotation\";\n var data = this.data;\n var width = data.rect[2] - data.rect[0];\n var height = data.rect[3] - data.rect[1];\n var svg = this.svgFactory.create(width, height);\n var borderWidth = data.borderStyle.width;\n var circle = this.svgFactory.createElement(\"svg:ellipse\");\n circle.setAttribute(\"cx\", width / 2);\n circle.setAttribute(\"cy\", height / 2);\n circle.setAttribute(\"rx\", width / 2 - borderWidth / 2);\n circle.setAttribute(\"ry\", height / 2 - borderWidth / 2);\n circle.setAttribute(\"stroke-width\", borderWidth || 1);\n circle.setAttribute(\"stroke\", \"transparent\");\n circle.setAttribute(\"fill\", \"none\");\n svg.appendChild(circle);\n this.container.append(svg);\n\n this._createPopup(this.container, circle, data);\n\n return this.container;\n }\n }]);\n\n return CircleAnnotationElement;\n}(AnnotationElement);\n\nvar PolylineAnnotationElement = /*#__PURE__*/function (_AnnotationElement9) {\n _inherits(PolylineAnnotationElement, _AnnotationElement9);\n\n var _super14 = _createSuper(PolylineAnnotationElement);\n\n function PolylineAnnotationElement(parameters) {\n var _this3;\n\n _classCallCheck(this, PolylineAnnotationElement);\n\n var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n _this3 = _super14.call(this, parameters, isRenderable, true);\n _this3.containerClassName = \"polylineAnnotation\";\n _this3.svgElementName = \"svg:polyline\";\n return _this3;\n }\n\n _createClass(PolylineAnnotationElement, [{\n key: \"render\",\n value: function render() {\n this.container.className = this.containerClassName;\n var data = this.data;\n var width = data.rect[2] - data.rect[0];\n var height = data.rect[3] - data.rect[1];\n var svg = this.svgFactory.create(width, height);\n var points = [];\n\n var _iterator2 = _createForOfIteratorHelper(data.vertices),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var coordinate = _step2.value;\n var x = coordinate.x - data.rect[0];\n var y = data.rect[3] - coordinate.y;\n points.push(x + \",\" + y);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n points = points.join(\" \");\n var polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"none\");\n svg.appendChild(polyline);\n this.container.append(svg);\n\n this._createPopup(this.container, polyline, data);\n\n return this.container;\n }\n }]);\n\n return PolylineAnnotationElement;\n}(AnnotationElement);\n\nvar PolygonAnnotationElement = /*#__PURE__*/function (_PolylineAnnotationEl) {\n _inherits(PolygonAnnotationElement, _PolylineAnnotationEl);\n\n var _super15 = _createSuper(PolygonAnnotationElement);\n\n function PolygonAnnotationElement(parameters) {\n var _this4;\n\n _classCallCheck(this, PolygonAnnotationElement);\n\n _this4 = _super15.call(this, parameters);\n _this4.containerClassName = \"polygonAnnotation\";\n _this4.svgElementName = \"svg:polygon\";\n return _this4;\n }\n\n return PolygonAnnotationElement;\n}(PolylineAnnotationElement);\n\nvar CaretAnnotationElement = /*#__PURE__*/function (_AnnotationElement10) {\n _inherits(CaretAnnotationElement, _AnnotationElement10);\n\n var _super16 = _createSuper(CaretAnnotationElement);\n\n function CaretAnnotationElement(parameters) {\n _classCallCheck(this, CaretAnnotationElement);\n\n var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n return _super16.call(this, parameters, isRenderable, true);\n }\n\n _createClass(CaretAnnotationElement, [{\n key: \"render\",\n value: function render() {\n this.container.className = \"caretAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n\n return this.container;\n }\n }]);\n\n return CaretAnnotationElement;\n}(AnnotationElement);\n\nvar InkAnnotationElement = /*#__PURE__*/function (_AnnotationElement11) {\n _inherits(InkAnnotationElement, _AnnotationElement11);\n\n var _super17 = _createSuper(InkAnnotationElement);\n\n function InkAnnotationElement(parameters) {\n var _this5;\n\n _classCallCheck(this, InkAnnotationElement);\n\n var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n _this5 = _super17.call(this, parameters, isRenderable, true);\n _this5.containerClassName = \"inkAnnotation\";\n _this5.svgElementName = \"svg:polyline\";\n return _this5;\n }\n\n _createClass(InkAnnotationElement, [{\n key: \"render\",\n value: function render() {\n this.container.className = this.containerClassName;\n var data = this.data;\n var width = data.rect[2] - data.rect[0];\n var height = data.rect[3] - data.rect[1];\n var svg = this.svgFactory.create(width, height);\n\n var _iterator3 = _createForOfIteratorHelper(data.inkLists),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var inkList = _step3.value;\n var points = [];\n\n var _iterator4 = _createForOfIteratorHelper(inkList),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var coordinate = _step4.value;\n var x = coordinate.x - data.rect[0];\n var y = data.rect[3] - coordinate.y;\n points.push(\"\".concat(x, \",\").concat(y));\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n\n points = points.join(\" \");\n var polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"none\");\n\n this._createPopup(this.container, polyline, data);\n\n svg.appendChild(polyline);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n\n this.container.append(svg);\n return this.container;\n }\n }]);\n\n return InkAnnotationElement;\n}(AnnotationElement);\n\nvar HighlightAnnotationElement = /*#__PURE__*/function (_AnnotationElement12) {\n _inherits(HighlightAnnotationElement, _AnnotationElement12);\n\n var _super18 = _createSuper(HighlightAnnotationElement);\n\n function HighlightAnnotationElement(parameters) {\n _classCallCheck(this, HighlightAnnotationElement);\n\n var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n return _super18.call(this, parameters, isRenderable, true);\n }\n\n _createClass(HighlightAnnotationElement, [{\n key: \"render\",\n value: function render() {\n this.container.className = \"highlightAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n\n return this.container;\n }\n }]);\n\n return HighlightAnnotationElement;\n}(AnnotationElement);\n\nvar UnderlineAnnotationElement = /*#__PURE__*/function (_AnnotationElement13) {\n _inherits(UnderlineAnnotationElement, _AnnotationElement13);\n\n var _super19 = _createSuper(UnderlineAnnotationElement);\n\n function UnderlineAnnotationElement(parameters) {\n _classCallCheck(this, UnderlineAnnotationElement);\n\n var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n return _super19.call(this, parameters, isRenderable, true);\n }\n\n _createClass(UnderlineAnnotationElement, [{\n key: \"render\",\n value: function render() {\n this.container.className = \"underlineAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n\n return this.container;\n }\n }]);\n\n return UnderlineAnnotationElement;\n}(AnnotationElement);\n\nvar SquigglyAnnotationElement = /*#__PURE__*/function (_AnnotationElement14) {\n _inherits(SquigglyAnnotationElement, _AnnotationElement14);\n\n var _super20 = _createSuper(SquigglyAnnotationElement);\n\n function SquigglyAnnotationElement(parameters) {\n _classCallCheck(this, SquigglyAnnotationElement);\n\n var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n return _super20.call(this, parameters, isRenderable, true);\n }\n\n _createClass(SquigglyAnnotationElement, [{\n key: \"render\",\n value: function render() {\n this.container.className = \"squigglyAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n\n return this.container;\n }\n }]);\n\n return SquigglyAnnotationElement;\n}(AnnotationElement);\n\nvar StrikeOutAnnotationElement = /*#__PURE__*/function (_AnnotationElement15) {\n _inherits(StrikeOutAnnotationElement, _AnnotationElement15);\n\n var _super21 = _createSuper(StrikeOutAnnotationElement);\n\n function StrikeOutAnnotationElement(parameters) {\n _classCallCheck(this, StrikeOutAnnotationElement);\n\n var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n return _super21.call(this, parameters, isRenderable, true);\n }\n\n _createClass(StrikeOutAnnotationElement, [{\n key: \"render\",\n value: function render() {\n this.container.className = \"strikeoutAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n\n return this.container;\n }\n }]);\n\n return StrikeOutAnnotationElement;\n}(AnnotationElement);\n\nvar StampAnnotationElement = /*#__PURE__*/function (_AnnotationElement16) {\n _inherits(StampAnnotationElement, _AnnotationElement16);\n\n var _super22 = _createSuper(StampAnnotationElement);\n\n function StampAnnotationElement(parameters) {\n _classCallCheck(this, StampAnnotationElement);\n\n var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n return _super22.call(this, parameters, isRenderable, true);\n }\n\n _createClass(StampAnnotationElement, [{\n key: \"render\",\n value: function render() {\n this.container.className = \"stampAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n\n return this.container;\n }\n }]);\n\n return StampAnnotationElement;\n}(AnnotationElement);\n\nvar FileAttachmentAnnotationElement = /*#__PURE__*/function (_AnnotationElement17) {\n _inherits(FileAttachmentAnnotationElement, _AnnotationElement17);\n\n var _super23 = _createSuper(FileAttachmentAnnotationElement);\n\n function FileAttachmentAnnotationElement(parameters) {\n var _this6;\n\n _classCallCheck(this, FileAttachmentAnnotationElement);\n\n _this6 = _super23.call(this, parameters, true);\n var _this6$data$file = _this6.data.file,\n filename = _this6$data$file.filename,\n content = _this6$data$file.content;\n _this6.filename = (0, _display_utils.getFilenameFromUrl)(filename);\n _this6.content = content;\n\n if (_this6.linkService.eventBus) {\n _this6.linkService.eventBus.dispatch(\"fileattachmentannotation\", {\n source: _assertThisInitialized(_this6),\n id: (0, _util.stringToPDFString)(filename),\n filename: filename,\n content: content\n });\n }\n\n return _this6;\n }\n\n _createClass(FileAttachmentAnnotationElement, [{\n key: \"render\",\n value: function render() {\n this.container.className = \"fileAttachmentAnnotation\";\n var trigger = document.createElement(\"div\");\n trigger.style.height = this.container.style.height;\n trigger.style.width = this.container.style.width;\n trigger.addEventListener(\"dblclick\", this._download.bind(this));\n\n if (!this.data.hasPopup && (this.data.title || this.data.contents)) {\n this._createPopup(this.container, trigger, this.data);\n }\n\n this.container.appendChild(trigger);\n return this.container;\n }\n }, {\n key: \"_download\",\n value: function _download() {\n if (!this.downloadManager) {\n (0, _util.warn)(\"Download cannot be started due to unavailable download manager\");\n return;\n }\n\n this.downloadManager.downloadData(this.content, this.filename, \"\");\n }\n }]);\n\n return FileAttachmentAnnotationElement;\n}(AnnotationElement);\n\nvar AnnotationLayer = /*#__PURE__*/function () {\n function AnnotationLayer() {\n _classCallCheck(this, AnnotationLayer);\n }\n\n _createClass(AnnotationLayer, null, [{\n key: \"render\",\n value: function render(parameters) {\n var sortedAnnotations = [],\n popupAnnotations = [];\n\n var _iterator5 = _createForOfIteratorHelper(parameters.annotations),\n _step5;\n\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var _data = _step5.value;\n\n if (!_data) {\n continue;\n }\n\n if (_data.annotationType === _util.AnnotationType.POPUP) {\n popupAnnotations.push(_data);\n continue;\n }\n\n sortedAnnotations.push(_data);\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n\n if (popupAnnotations.length) {\n sortedAnnotations.push.apply(sortedAnnotations, popupAnnotations);\n }\n\n for (var _i = 0, _sortedAnnotations = sortedAnnotations; _i < _sortedAnnotations.length; _i++) {\n var data = _sortedAnnotations[_i];\n var element = AnnotationElementFactory.create({\n data: data,\n layer: parameters.div,\n page: parameters.page,\n viewport: parameters.viewport,\n linkService: parameters.linkService,\n downloadManager: parameters.downloadManager,\n imageResourcesPath: parameters.imageResourcesPath || \"\",\n renderInteractiveForms: parameters.renderInteractiveForms || false,\n svgFactory: new _display_utils.DOMSVGFactory()\n });\n\n if (element.isRenderable) {\n parameters.div.appendChild(element.render());\n }\n }\n }\n }, {\n key: \"update\",\n value: function update(parameters) {\n var _iterator6 = _createForOfIteratorHelper(parameters.annotations),\n _step6;\n\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var data = _step6.value;\n var element = parameters.div.querySelector(\"[data-annotation-id=\\\"\".concat(data.id, \"\\\"]\"));\n\n if (element) {\n element.style.transform = \"matrix(\".concat(parameters.viewport.transform.join(\",\"), \")\");\n }\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n\n parameters.div.removeAttribute(\"hidden\");\n }\n }]);\n\n return AnnotationLayer;\n}();\n\nexports.AnnotationLayer = AnnotationLayer;\n\n/***/ }),\n/* 210 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.renderTextLayer = void 0;\n\nvar _util = __w_pdfjs_require__(5);\n\nvar renderTextLayer = function renderTextLayerClosure() {\n var MAX_TEXT_DIVS_TO_RENDER = 100000;\n var NonWhitespaceRegexp = /\\S/;\n\n function isAllWhitespace(str) {\n return !NonWhitespaceRegexp.test(str);\n }\n\n function appendText(task, geom, styles) {\n var textDiv = document.createElement(\"span\");\n var textDivProperties = {\n angle: 0,\n canvasWidth: 0,\n isWhitespace: false,\n originalTransform: null,\n paddingBottom: 0,\n paddingLeft: 0,\n paddingRight: 0,\n paddingTop: 0,\n scale: 1\n };\n\n task._textDivs.push(textDiv);\n\n if (isAllWhitespace(geom.str)) {\n textDivProperties.isWhitespace = true;\n\n task._textDivProperties.set(textDiv, textDivProperties);\n\n return;\n }\n\n var tx = _util.Util.transform(task._viewport.transform, geom.transform);\n\n var angle = Math.atan2(tx[1], tx[0]);\n var style = styles[geom.fontName];\n\n if (style.vertical) {\n angle += Math.PI / 2;\n }\n\n var fontHeight = Math.sqrt(tx[2] * tx[2] + tx[3] * tx[3]);\n var fontAscent = fontHeight;\n\n if (style.ascent) {\n fontAscent = style.ascent * fontAscent;\n } else if (style.descent) {\n fontAscent = (1 + style.descent) * fontAscent;\n }\n\n var left, top;\n\n if (angle === 0) {\n left = tx[4];\n top = tx[5] - fontAscent;\n } else {\n left = tx[4] + fontAscent * Math.sin(angle);\n top = tx[5] - fontAscent * Math.cos(angle);\n }\n\n textDiv.style.left = \"\".concat(left, \"px\");\n textDiv.style.top = \"\".concat(top, \"px\");\n textDiv.style.fontSize = \"\".concat(fontHeight, \"px\");\n textDiv.style.fontFamily = style.fontFamily;\n textDiv.textContent = geom.str;\n\n if (task._fontInspectorEnabled) {\n textDiv.dataset.fontName = geom.fontName;\n }\n\n if (angle !== 0) {\n textDivProperties.angle = angle * (180 / Math.PI);\n }\n\n var shouldScaleText = false;\n\n if (geom.str.length > 1) {\n shouldScaleText = true;\n } else if (geom.transform[0] !== geom.transform[3]) {\n var absScaleX = Math.abs(geom.transform[0]),\n absScaleY = Math.abs(geom.transform[3]);\n\n if (absScaleX !== absScaleY && Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5) {\n shouldScaleText = true;\n }\n }\n\n if (shouldScaleText) {\n if (style.vertical) {\n textDivProperties.canvasWidth = geom.height * task._viewport.scale;\n } else {\n textDivProperties.canvasWidth = geom.width * task._viewport.scale;\n }\n }\n\n task._textDivProperties.set(textDiv, textDivProperties);\n\n if (task._textContentStream) {\n task._layoutText(textDiv);\n }\n\n if (task._enhanceTextSelection) {\n var angleCos = 1,\n angleSin = 0;\n\n if (angle !== 0) {\n angleCos = Math.cos(angle);\n angleSin = Math.sin(angle);\n }\n\n var divWidth = (style.vertical ? geom.height : geom.width) * task._viewport.scale;\n var divHeight = fontHeight;\n var m, b;\n\n if (angle !== 0) {\n m = [angleCos, angleSin, -angleSin, angleCos, left, top];\n b = _util.Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m);\n } else {\n b = [left, top, left + divWidth, top + divHeight];\n }\n\n task._bounds.push({\n left: b[0],\n top: b[1],\n right: b[2],\n bottom: b[3],\n div: textDiv,\n size: [divWidth, divHeight],\n m: m\n });\n }\n }\n\n function render(task) {\n if (task._canceled) {\n return;\n }\n\n var textDivs = task._textDivs;\n var capability = task._capability;\n var textDivsLength = textDivs.length;\n\n if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {\n task._renderingDone = true;\n capability.resolve();\n return;\n }\n\n if (!task._textContentStream) {\n for (var i = 0; i < textDivsLength; i++) {\n task._layoutText(textDivs[i]);\n }\n }\n\n task._renderingDone = true;\n capability.resolve();\n }\n\n function findPositiveMin(ts, offset, count) {\n var result = 0;\n\n for (var i = 0; i < count; i++) {\n var t = ts[offset++];\n\n if (t > 0) {\n result = result ? Math.min(t, result) : t;\n }\n }\n\n return result;\n }\n\n function expand(task) {\n var bounds = task._bounds;\n var viewport = task._viewport;\n var expanded = expandBounds(viewport.width, viewport.height, bounds);\n\n for (var i = 0; i < expanded.length; i++) {\n var div = bounds[i].div;\n\n var divProperties = task._textDivProperties.get(div);\n\n if (divProperties.angle === 0) {\n divProperties.paddingLeft = bounds[i].left - expanded[i].left;\n divProperties.paddingTop = bounds[i].top - expanded[i].top;\n divProperties.paddingRight = expanded[i].right - bounds[i].right;\n divProperties.paddingBottom = expanded[i].bottom - bounds[i].bottom;\n\n task._textDivProperties.set(div, divProperties);\n\n continue;\n }\n\n var e = expanded[i],\n b = bounds[i];\n var m = b.m,\n c = m[0],\n s = m[1];\n var points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size];\n var ts = new Float64Array(64);\n points.forEach(function (p, j) {\n var t = _util.Util.applyTransform(p, m);\n\n ts[j + 0] = c && (e.left - t[0]) / c;\n ts[j + 4] = s && (e.top - t[1]) / s;\n ts[j + 8] = c && (e.right - t[0]) / c;\n ts[j + 12] = s && (e.bottom - t[1]) / s;\n ts[j + 16] = s && (e.left - t[0]) / -s;\n ts[j + 20] = c && (e.top - t[1]) / c;\n ts[j + 24] = s && (e.right - t[0]) / -s;\n ts[j + 28] = c && (e.bottom - t[1]) / c;\n ts[j + 32] = c && (e.left - t[0]) / -c;\n ts[j + 36] = s && (e.top - t[1]) / -s;\n ts[j + 40] = c && (e.right - t[0]) / -c;\n ts[j + 44] = s && (e.bottom - t[1]) / -s;\n ts[j + 48] = s && (e.left - t[0]) / s;\n ts[j + 52] = c && (e.top - t[1]) / -c;\n ts[j + 56] = s && (e.right - t[0]) / s;\n ts[j + 60] = c && (e.bottom - t[1]) / -c;\n });\n var boxScale = 1 + Math.min(Math.abs(c), Math.abs(s));\n divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale;\n divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale;\n divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale;\n divProperties.paddingBottom = findPositiveMin(ts, 16, 16) / boxScale;\n\n task._textDivProperties.set(div, divProperties);\n }\n }\n\n function expandBounds(width, height, boxes) {\n var bounds = boxes.map(function (box, i) {\n return {\n x1: box.left,\n y1: box.top,\n x2: box.right,\n y2: box.bottom,\n index: i,\n x1New: undefined,\n x2New: undefined\n };\n });\n expandBoundsLTR(width, bounds);\n var expanded = new Array(boxes.length);\n bounds.forEach(function (b) {\n var i = b.index;\n expanded[i] = {\n left: b.x1New,\n top: 0,\n right: b.x2New,\n bottom: 0\n };\n });\n boxes.map(function (box, i) {\n var e = expanded[i],\n b = bounds[i];\n b.x1 = box.top;\n b.y1 = width - e.right;\n b.x2 = box.bottom;\n b.y2 = width - e.left;\n b.index = i;\n b.x1New = undefined;\n b.x2New = undefined;\n });\n expandBoundsLTR(height, bounds);\n bounds.forEach(function (b) {\n var i = b.index;\n expanded[i].top = b.x1New;\n expanded[i].bottom = b.x2New;\n });\n return expanded;\n }\n\n function expandBoundsLTR(width, bounds) {\n bounds.sort(function (a, b) {\n return a.x1 - b.x1 || a.index - b.index;\n });\n var fakeBoundary = {\n x1: -Infinity,\n y1: -Infinity,\n x2: 0,\n y2: Infinity,\n index: -1,\n x1New: 0,\n x2New: 0\n };\n var horizon = [{\n start: -Infinity,\n end: Infinity,\n boundary: fakeBoundary\n }];\n bounds.forEach(function (boundary) {\n var i = 0;\n\n while (i < horizon.length && horizon[i].end <= boundary.y1) {\n i++;\n }\n\n var j = horizon.length - 1;\n\n while (j >= 0 && horizon[j].start >= boundary.y2) {\n j--;\n }\n\n var horizonPart, affectedBoundary;\n var q,\n k,\n maxXNew = -Infinity;\n\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n var xNew;\n\n if (affectedBoundary.x2 > boundary.x1) {\n xNew = affectedBoundary.index > boundary.index ? affectedBoundary.x1New : boundary.x1;\n } else if (affectedBoundary.x2New === undefined) {\n xNew = (affectedBoundary.x2 + boundary.x1) / 2;\n } else {\n xNew = affectedBoundary.x2New;\n }\n\n if (xNew > maxXNew) {\n maxXNew = xNew;\n }\n }\n\n boundary.x1New = maxXNew;\n\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n\n if (affectedBoundary.x2New === undefined) {\n if (affectedBoundary.x2 > boundary.x1) {\n if (affectedBoundary.index > boundary.index) {\n affectedBoundary.x2New = affectedBoundary.x2;\n }\n } else {\n affectedBoundary.x2New = maxXNew;\n }\n } else if (affectedBoundary.x2New > maxXNew) {\n affectedBoundary.x2New = Math.max(maxXNew, affectedBoundary.x2);\n }\n }\n\n var changedHorizon = [],\n lastBoundary = null;\n\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n var useBoundary = affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary;\n\n if (lastBoundary === useBoundary) {\n changedHorizon[changedHorizon.length - 1].end = horizonPart.end;\n } else {\n changedHorizon.push({\n start: horizonPart.start,\n end: horizonPart.end,\n boundary: useBoundary\n });\n lastBoundary = useBoundary;\n }\n }\n\n if (horizon[i].start < boundary.y1) {\n changedHorizon[0].start = boundary.y1;\n changedHorizon.unshift({\n start: horizon[i].start,\n end: boundary.y1,\n boundary: horizon[i].boundary\n });\n }\n\n if (boundary.y2 < horizon[j].end) {\n changedHorizon[changedHorizon.length - 1].end = boundary.y2;\n changedHorizon.push({\n start: boundary.y2,\n end: horizon[j].end,\n boundary: horizon[j].boundary\n });\n }\n\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n\n if (affectedBoundary.x2New !== undefined) {\n continue;\n }\n\n var used = false;\n\n for (k = i - 1; !used && k >= 0 && horizon[k].start >= affectedBoundary.y1; k--) {\n used = horizon[k].boundary === affectedBoundary;\n }\n\n for (k = j + 1; !used && k < horizon.length && horizon[k].end <= affectedBoundary.y2; k++) {\n used = horizon[k].boundary === affectedBoundary;\n }\n\n for (k = 0; !used && k < changedHorizon.length; k++) {\n used = changedHorizon[k].boundary === affectedBoundary;\n }\n\n if (!used) {\n affectedBoundary.x2New = maxXNew;\n }\n }\n\n Array.prototype.splice.apply(horizon, [i, j - i + 1].concat(changedHorizon));\n });\n horizon.forEach(function (horizonPart) {\n var affectedBoundary = horizonPart.boundary;\n\n if (affectedBoundary.x2New === undefined) {\n affectedBoundary.x2New = Math.max(width, affectedBoundary.x2);\n }\n });\n }\n\n function TextLayerRenderTask(_ref) {\n var _this = this;\n\n var textContent = _ref.textContent,\n textContentStream = _ref.textContentStream,\n container = _ref.container,\n viewport = _ref.viewport,\n textDivs = _ref.textDivs,\n textContentItemsStr = _ref.textContentItemsStr,\n enhanceTextSelection = _ref.enhanceTextSelection;\n this._textContent = textContent;\n this._textContentStream = textContentStream;\n this._container = container;\n this._viewport = viewport;\n this._textDivs = textDivs || [];\n this._textContentItemsStr = textContentItemsStr || [];\n this._enhanceTextSelection = !!enhanceTextSelection;\n this._fontInspectorEnabled = !!(globalThis.FontInspector && globalThis.FontInspector.enabled);\n this._reader = null;\n this._layoutTextLastFontSize = null;\n this._layoutTextLastFontFamily = null;\n this._layoutTextCtx = null;\n this._textDivProperties = new WeakMap();\n this._renderingDone = false;\n this._canceled = false;\n this._capability = (0, _util.createPromiseCapability)();\n this._renderTimer = null;\n this._bounds = [];\n\n this._capability.promise[\"finally\"](function () {\n if (_this._layoutTextCtx) {\n _this._layoutTextCtx.canvas.width = 0;\n _this._layoutTextCtx.canvas.height = 0;\n _this._layoutTextCtx = null;\n }\n })[\"catch\"](function () {});\n }\n\n TextLayerRenderTask.prototype = {\n get promise() {\n return this._capability.promise;\n },\n\n cancel: function TextLayer_cancel() {\n this._canceled = true;\n\n if (this._reader) {\n this._reader.cancel(new _util.AbortException(\"TextLayer task cancelled.\"));\n\n this._reader = null;\n }\n\n if (this._renderTimer !== null) {\n clearTimeout(this._renderTimer);\n this._renderTimer = null;\n }\n\n this._capability.reject(new Error(\"TextLayer task cancelled.\"));\n },\n _processItems: function _processItems(items, styleCache) {\n for (var i = 0, len = items.length; i < len; i++) {\n this._textContentItemsStr.push(items[i].str);\n\n appendText(this, items[i], styleCache);\n }\n },\n _layoutText: function _layoutText(textDiv) {\n var textDivProperties = this._textDivProperties.get(textDiv);\n\n if (textDivProperties.isWhitespace) {\n return;\n }\n\n var transform = \"\";\n\n if (textDivProperties.canvasWidth !== 0) {\n var _textDiv$style = textDiv.style,\n fontSize = _textDiv$style.fontSize,\n fontFamily = _textDiv$style.fontFamily;\n\n if (fontSize !== this._layoutTextLastFontSize || fontFamily !== this._layoutTextLastFontFamily) {\n this._layoutTextCtx.font = \"\".concat(fontSize, \" \").concat(fontFamily);\n this._layoutTextLastFontSize = fontSize;\n this._layoutTextLastFontFamily = fontFamily;\n }\n\n var _this$_layoutTextCtx$ = this._layoutTextCtx.measureText(textDiv.textContent),\n width = _this$_layoutTextCtx$.width;\n\n if (width > 0) {\n textDivProperties.scale = textDivProperties.canvasWidth / width;\n transform = \"scaleX(\".concat(textDivProperties.scale, \")\");\n }\n }\n\n if (textDivProperties.angle !== 0) {\n transform = \"rotate(\".concat(textDivProperties.angle, \"deg) \").concat(transform);\n }\n\n if (transform.length > 0) {\n if (this._enhanceTextSelection) {\n textDivProperties.originalTransform = transform;\n }\n\n textDiv.style.transform = transform;\n }\n\n this._textDivProperties.set(textDiv, textDivProperties);\n\n this._container.appendChild(textDiv);\n },\n _render: function TextLayer_render(timeout) {\n var _this2 = this;\n\n var capability = (0, _util.createPromiseCapability)();\n var styleCache = Object.create(null);\n var canvas = document.createElement(\"canvas\");\n canvas.mozOpaque = true;\n this._layoutTextCtx = canvas.getContext(\"2d\", {\n alpha: false\n });\n\n if (this._textContent) {\n var textItems = this._textContent.items;\n var textStyles = this._textContent.styles;\n\n this._processItems(textItems, textStyles);\n\n capability.resolve();\n } else if (this._textContentStream) {\n var pump = function pump() {\n _this2._reader.read().then(function (_ref2) {\n var value = _ref2.value,\n done = _ref2.done;\n\n if (done) {\n capability.resolve();\n return;\n }\n\n Object.assign(styleCache, value.styles);\n\n _this2._processItems(value.items, styleCache);\n\n pump();\n }, capability.reject);\n };\n\n this._reader = this._textContentStream.getReader();\n pump();\n } else {\n throw new Error('Neither \"textContent\" nor \"textContentStream\"' + \" parameters specified.\");\n }\n\n capability.promise.then(function () {\n styleCache = null;\n\n if (!timeout) {\n render(_this2);\n } else {\n _this2._renderTimer = setTimeout(function () {\n render(_this2);\n _this2._renderTimer = null;\n }, timeout);\n }\n }, this._capability.reject);\n },\n expandTextDivs: function TextLayer_expandTextDivs(expandDivs) {\n if (!this._enhanceTextSelection || !this._renderingDone) {\n return;\n }\n\n if (this._bounds !== null) {\n expand(this);\n this._bounds = null;\n }\n\n var transformBuf = [],\n paddingBuf = [];\n\n for (var i = 0, ii = this._textDivs.length; i < ii; i++) {\n var div = this._textDivs[i];\n\n var divProps = this._textDivProperties.get(div);\n\n if (divProps.isWhitespace) {\n continue;\n }\n\n if (expandDivs) {\n transformBuf.length = 0;\n paddingBuf.length = 0;\n\n if (divProps.originalTransform) {\n transformBuf.push(divProps.originalTransform);\n }\n\n if (divProps.paddingTop > 0) {\n paddingBuf.push(\"\".concat(divProps.paddingTop, \"px\"));\n transformBuf.push(\"translateY(\".concat(-divProps.paddingTop, \"px)\"));\n } else {\n paddingBuf.push(0);\n }\n\n if (divProps.paddingRight > 0) {\n paddingBuf.push(\"\".concat(divProps.paddingRight / divProps.scale, \"px\"));\n } else {\n paddingBuf.push(0);\n }\n\n if (divProps.paddingBottom > 0) {\n paddingBuf.push(\"\".concat(divProps.paddingBottom, \"px\"));\n } else {\n paddingBuf.push(0);\n }\n\n if (divProps.paddingLeft > 0) {\n paddingBuf.push(\"\".concat(divProps.paddingLeft / divProps.scale, \"px\"));\n transformBuf.push(\"translateX(\".concat(-divProps.paddingLeft / divProps.scale, \"px)\"));\n } else {\n paddingBuf.push(0);\n }\n\n div.style.padding = paddingBuf.join(\" \");\n\n if (transformBuf.length) {\n div.style.transform = transformBuf.join(\" \");\n }\n } else {\n div.style.padding = null;\n div.style.transform = divProps.originalTransform;\n }\n }\n }\n };\n\n function renderTextLayer(renderParameters) {\n var task = new TextLayerRenderTask({\n textContent: renderParameters.textContent,\n textContentStream: renderParameters.textContentStream,\n container: renderParameters.container,\n viewport: renderParameters.viewport,\n textDivs: renderParameters.textDivs,\n textContentItemsStr: renderParameters.textContentItemsStr,\n enhanceTextSelection: renderParameters.enhanceTextSelection\n });\n\n task._render(renderParameters.timeout);\n\n return task;\n }\n\n return renderTextLayer;\n}();\n\nexports.renderTextLayer = renderTextLayer;\n\n/***/ }),\n/* 211 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SVGGraphics = void 0;\n\nvar _util = __w_pdfjs_require__(5);\n\nvar _display_utils = __w_pdfjs_require__(1);\n\nvar _is_node = __w_pdfjs_require__(7);\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar SVGGraphics = function SVGGraphics() {\n throw new Error(\"Not implemented: SVGGraphics\");\n};\n\nexports.SVGGraphics = SVGGraphics;\n{\n var opListToTree = function opListToTree(opList) {\n var opTree = [];\n var tmp = [];\n\n var _iterator = _createForOfIteratorHelper(opList),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var opListElement = _step.value;\n\n if (opListElement.fn === \"save\") {\n opTree.push({\n fnId: 92,\n fn: \"group\",\n items: []\n });\n tmp.push(opTree);\n opTree = opTree[opTree.length - 1].items;\n continue;\n }\n\n if (opListElement.fn === \"restore\") {\n opTree = tmp.pop();\n } else {\n opTree.push(opListElement);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return opTree;\n };\n\n var pf = function pf(value) {\n if (Number.isInteger(value)) {\n return value.toString();\n }\n\n var s = value.toFixed(10);\n var i = s.length - 1;\n\n if (s[i] !== \"0\") {\n return s;\n }\n\n do {\n i--;\n } while (s[i] === \"0\");\n\n return s.substring(0, s[i] === \".\" ? i : i + 1);\n };\n\n var pm = function pm(m) {\n if (m[4] === 0 && m[5] === 0) {\n if (m[1] === 0 && m[2] === 0) {\n if (m[0] === 1 && m[3] === 1) {\n return \"\";\n }\n\n return \"scale(\".concat(pf(m[0]), \" \").concat(pf(m[3]), \")\");\n }\n\n if (m[0] === m[3] && m[1] === -m[2]) {\n var a = Math.acos(m[0]) * 180 / Math.PI;\n return \"rotate(\".concat(pf(a), \")\");\n }\n } else {\n if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) {\n return \"translate(\".concat(pf(m[4]), \" \").concat(pf(m[5]), \")\");\n }\n }\n\n return \"matrix(\".concat(pf(m[0]), \" \").concat(pf(m[1]), \" \").concat(pf(m[2]), \" \").concat(pf(m[3]), \" \").concat(pf(m[4]), \" \") + \"\".concat(pf(m[5]), \")\");\n };\n\n var SVG_DEFAULTS = {\n fontStyle: \"normal\",\n fontWeight: \"normal\",\n fillColor: \"#000000\"\n };\n var XML_NS = \"http://www.w3.org/XML/1998/namespace\";\n var XLINK_NS = \"http://www.w3.org/1999/xlink\";\n var LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\n var LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\n\n var convertImgDataToPng = function () {\n var PNG_HEADER = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);\n var CHUNK_WRAPPER_SIZE = 12;\n var crcTable = new Int32Array(256);\n\n for (var i = 0; i < 256; i++) {\n var c = i;\n\n for (var h = 0; h < 8; h++) {\n if (c & 1) {\n c = 0xedb88320 ^ c >> 1 & 0x7fffffff;\n } else {\n c = c >> 1 & 0x7fffffff;\n }\n }\n\n crcTable[i] = c;\n }\n\n function crc32(data, start, end) {\n var crc = -1;\n\n for (var _i = start; _i < end; _i++) {\n var a = (crc ^ data[_i]) & 0xff;\n var b = crcTable[a];\n crc = crc >>> 8 ^ b;\n }\n\n return crc ^ -1;\n }\n\n function writePngChunk(type, body, data, offset) {\n var p = offset;\n var len = body.length;\n data[p] = len >> 24 & 0xff;\n data[p + 1] = len >> 16 & 0xff;\n data[p + 2] = len >> 8 & 0xff;\n data[p + 3] = len & 0xff;\n p += 4;\n data[p] = type.charCodeAt(0) & 0xff;\n data[p + 1] = type.charCodeAt(1) & 0xff;\n data[p + 2] = type.charCodeAt(2) & 0xff;\n data[p + 3] = type.charCodeAt(3) & 0xff;\n p += 4;\n data.set(body, p);\n p += body.length;\n var crc = crc32(data, offset + 4, p);\n data[p] = crc >> 24 & 0xff;\n data[p + 1] = crc >> 16 & 0xff;\n data[p + 2] = crc >> 8 & 0xff;\n data[p + 3] = crc & 0xff;\n }\n\n function adler32(data, start, end) {\n var a = 1;\n var b = 0;\n\n for (var _i2 = start; _i2 < end; ++_i2) {\n a = (a + (data[_i2] & 0xff)) % 65521;\n b = (b + a) % 65521;\n }\n\n return b << 16 | a;\n }\n\n function deflateSync(literals) {\n if (!_is_node.isNodeJS) {\n return deflateSyncUncompressed(literals);\n }\n\n try {\n var input;\n\n if (parseInt(process.versions.node) >= 8) {\n input = literals;\n } else {\n input = Buffer.from(literals);\n }\n\n var output = require(\"zlib\").deflateSync(input, {\n level: 9\n });\n\n return output instanceof Uint8Array ? output : new Uint8Array(output);\n } catch (e) {\n (0, _util.warn)(\"Not compressing PNG because zlib.deflateSync is unavailable: \" + e);\n }\n\n return deflateSyncUncompressed(literals);\n }\n\n function deflateSyncUncompressed(literals) {\n var len = literals.length;\n var maxBlockLength = 0xffff;\n var deflateBlocks = Math.ceil(len / maxBlockLength);\n var idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4);\n var pi = 0;\n idat[pi++] = 0x78;\n idat[pi++] = 0x9c;\n var pos = 0;\n\n while (len > maxBlockLength) {\n idat[pi++] = 0x00;\n idat[pi++] = 0xff;\n idat[pi++] = 0xff;\n idat[pi++] = 0x00;\n idat[pi++] = 0x00;\n idat.set(literals.subarray(pos, pos + maxBlockLength), pi);\n pi += maxBlockLength;\n pos += maxBlockLength;\n len -= maxBlockLength;\n }\n\n idat[pi++] = 0x01;\n idat[pi++] = len & 0xff;\n idat[pi++] = len >> 8 & 0xff;\n idat[pi++] = ~len & 0xffff & 0xff;\n idat[pi++] = (~len & 0xffff) >> 8 & 0xff;\n idat.set(literals.subarray(pos), pi);\n pi += literals.length - pos;\n var adler = adler32(literals, 0, literals.length);\n idat[pi++] = adler >> 24 & 0xff;\n idat[pi++] = adler >> 16 & 0xff;\n idat[pi++] = adler >> 8 & 0xff;\n idat[pi++] = adler & 0xff;\n return idat;\n }\n\n function encode(imgData, kind, forceDataSchema, isMask) {\n var width = imgData.width;\n var height = imgData.height;\n var bitDepth, colorType, lineSize;\n var bytes = imgData.data;\n\n switch (kind) {\n case _util.ImageKind.GRAYSCALE_1BPP:\n colorType = 0;\n bitDepth = 1;\n lineSize = width + 7 >> 3;\n break;\n\n case _util.ImageKind.RGB_24BPP:\n colorType = 2;\n bitDepth = 8;\n lineSize = width * 3;\n break;\n\n case _util.ImageKind.RGBA_32BPP:\n colorType = 6;\n bitDepth = 8;\n lineSize = width * 4;\n break;\n\n default:\n throw new Error(\"invalid format\");\n }\n\n var literals = new Uint8Array((1 + lineSize) * height);\n var offsetLiterals = 0,\n offsetBytes = 0;\n\n for (var y = 0; y < height; ++y) {\n literals[offsetLiterals++] = 0;\n literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize), offsetLiterals);\n offsetBytes += lineSize;\n offsetLiterals += lineSize;\n }\n\n if (kind === _util.ImageKind.GRAYSCALE_1BPP && isMask) {\n offsetLiterals = 0;\n\n for (var _y = 0; _y < height; _y++) {\n offsetLiterals++;\n\n for (var _i3 = 0; _i3 < lineSize; _i3++) {\n literals[offsetLiterals++] ^= 0xff;\n }\n }\n }\n\n var ihdr = new Uint8Array([width >> 24 & 0xff, width >> 16 & 0xff, width >> 8 & 0xff, width & 0xff, height >> 24 & 0xff, height >> 16 & 0xff, height >> 8 & 0xff, height & 0xff, bitDepth, colorType, 0x00, 0x00, 0x00]);\n var idat = deflateSync(literals);\n var pngLength = PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length;\n var data = new Uint8Array(pngLength);\n var offset = 0;\n data.set(PNG_HEADER, offset);\n offset += PNG_HEADER.length;\n writePngChunk(\"IHDR\", ihdr, data, offset);\n offset += CHUNK_WRAPPER_SIZE + ihdr.length;\n writePngChunk(\"IDATA\", idat, data, offset);\n offset += CHUNK_WRAPPER_SIZE + idat.length;\n writePngChunk(\"IEND\", new Uint8Array(0), data, offset);\n return (0, _util.createObjectURL)(data, \"image/png\", forceDataSchema);\n }\n\n return function convertImgDataToPng(imgData, forceDataSchema, isMask) {\n var kind = imgData.kind === undefined ? _util.ImageKind.GRAYSCALE_1BPP : imgData.kind;\n return encode(imgData, kind, forceDataSchema, isMask);\n };\n }();\n\n var SVGExtraState = /*#__PURE__*/function () {\n function SVGExtraState() {\n _classCallCheck(this, SVGExtraState);\n\n this.fontSizeScale = 1;\n this.fontWeight = SVG_DEFAULTS.fontWeight;\n this.fontSize = 0;\n this.textMatrix = _util.IDENTITY_MATRIX;\n this.fontMatrix = _util.FONT_IDENTITY_MATRIX;\n this.leading = 0;\n this.textRenderingMode = _util.TextRenderingMode.FILL;\n this.textMatrixScale = 1;\n this.x = 0;\n this.y = 0;\n this.lineX = 0;\n this.lineY = 0;\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRise = 0;\n this.fillColor = SVG_DEFAULTS.fillColor;\n this.strokeColor = \"#000000\";\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.lineJoin = \"\";\n this.lineCap = \"\";\n this.miterLimit = 0;\n this.dashArray = [];\n this.dashPhase = 0;\n this.dependencies = [];\n this.activeClipUrl = null;\n this.clipGroup = null;\n this.maskId = \"\";\n }\n\n _createClass(SVGExtraState, [{\n key: \"clone\",\n value: function clone() {\n return Object.create(this);\n }\n }, {\n key: \"setCurrentPoint\",\n value: function setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\n }]);\n\n return SVGExtraState;\n }();\n\n var clipCount = 0;\n var maskCount = 0;\n var shadingCount = 0;\n\n exports.SVGGraphics = SVGGraphics = /*#__PURE__*/function () {\n function SVGGraphics(commonObjs, objs) {\n var forceDataSchema = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n _classCallCheck(this, SVGGraphics);\n\n this.svgFactory = new _display_utils.DOMSVGFactory();\n this.current = new SVGExtraState();\n this.transformMatrix = _util.IDENTITY_MATRIX;\n this.transformStack = [];\n this.extraStack = [];\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.pendingClip = null;\n this.pendingEOFill = false;\n this.embedFonts = false;\n this.embeddedFonts = Object.create(null);\n this.cssStyle = null;\n this.forceDataSchema = !!forceDataSchema;\n this._operatorIdMapping = [];\n\n for (var op in _util.OPS) {\n this._operatorIdMapping[_util.OPS[op]] = op;\n }\n }\n\n _createClass(SVGGraphics, [{\n key: \"save\",\n value: function save() {\n this.transformStack.push(this.transformMatrix);\n var old = this.current;\n this.extraStack.push(old);\n this.current = old.clone();\n }\n }, {\n key: \"restore\",\n value: function restore() {\n this.transformMatrix = this.transformStack.pop();\n this.current = this.extraStack.pop();\n this.pendingClip = null;\n this.tgrp = null;\n }\n }, {\n key: \"group\",\n value: function group(items) {\n this.save();\n this.executeOpTree(items);\n this.restore();\n }\n }, {\n key: \"loadDependencies\",\n value: function loadDependencies(operatorList) {\n var _this = this;\n\n var fnArray = operatorList.fnArray;\n var argsArray = operatorList.argsArray;\n\n for (var i = 0, ii = fnArray.length; i < ii; i++) {\n if (fnArray[i] !== _util.OPS.dependency) {\n continue;\n }\n\n var _iterator2 = _createForOfIteratorHelper(argsArray[i]),\n _step2;\n\n try {\n var _loop = function _loop() {\n var obj = _step2.value;\n var objsPool = obj.startsWith(\"g_\") ? _this.commonObjs : _this.objs;\n var promise = new Promise(function (resolve) {\n objsPool.get(obj, resolve);\n });\n\n _this.current.dependencies.push(promise);\n };\n\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n _loop();\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n\n return Promise.all(this.current.dependencies);\n }\n }, {\n key: \"transform\",\n value: function transform(a, b, c, d, e, f) {\n var transformMatrix = [a, b, c, d, e, f];\n this.transformMatrix = _util.Util.transform(this.transformMatrix, transformMatrix);\n this.tgrp = null;\n }\n }, {\n key: \"getSVG\",\n value: function getSVG(operatorList, viewport) {\n var _this2 = this;\n\n this.viewport = viewport;\n\n var svgElement = this._initialize(viewport);\n\n return this.loadDependencies(operatorList).then(function () {\n _this2.transformMatrix = _util.IDENTITY_MATRIX;\n\n _this2.executeOpTree(_this2.convertOpList(operatorList));\n\n return svgElement;\n });\n }\n }, {\n key: \"convertOpList\",\n value: function convertOpList(operatorList) {\n var operatorIdMapping = this._operatorIdMapping;\n var argsArray = operatorList.argsArray;\n var fnArray = operatorList.fnArray;\n var opList = [];\n\n for (var i = 0, ii = fnArray.length; i < ii; i++) {\n var fnId = fnArray[i];\n opList.push({\n fnId: fnId,\n fn: operatorIdMapping[fnId],\n args: argsArray[i]\n });\n }\n\n return opListToTree(opList);\n }\n }, {\n key: \"executeOpTree\",\n value: function executeOpTree(opTree) {\n var _iterator3 = _createForOfIteratorHelper(opTree),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var opTreeElement = _step3.value;\n var fn = opTreeElement.fn;\n var fnId = opTreeElement.fnId;\n var args = opTreeElement.args;\n\n switch (fnId | 0) {\n case _util.OPS.beginText:\n this.beginText();\n break;\n\n case _util.OPS.dependency:\n break;\n\n case _util.OPS.setLeading:\n this.setLeading(args);\n break;\n\n case _util.OPS.setLeadingMoveText:\n this.setLeadingMoveText(args[0], args[1]);\n break;\n\n case _util.OPS.setFont:\n this.setFont(args);\n break;\n\n case _util.OPS.showText:\n this.showText(args[0]);\n break;\n\n case _util.OPS.showSpacedText:\n this.showText(args[0]);\n break;\n\n case _util.OPS.endText:\n this.endText();\n break;\n\n case _util.OPS.moveText:\n this.moveText(args[0], args[1]);\n break;\n\n case _util.OPS.setCharSpacing:\n this.setCharSpacing(args[0]);\n break;\n\n case _util.OPS.setWordSpacing:\n this.setWordSpacing(args[0]);\n break;\n\n case _util.OPS.setHScale:\n this.setHScale(args[0]);\n break;\n\n case _util.OPS.setTextMatrix:\n this.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);\n break;\n\n case _util.OPS.setTextRise:\n this.setTextRise(args[0]);\n break;\n\n case _util.OPS.setTextRenderingMode:\n this.setTextRenderingMode(args[0]);\n break;\n\n case _util.OPS.setLineWidth:\n this.setLineWidth(args[0]);\n break;\n\n case _util.OPS.setLineJoin:\n this.setLineJoin(args[0]);\n break;\n\n case _util.OPS.setLineCap:\n this.setLineCap(args[0]);\n break;\n\n case _util.OPS.setMiterLimit:\n this.setMiterLimit(args[0]);\n break;\n\n case _util.OPS.setFillRGBColor:\n this.setFillRGBColor(args[0], args[1], args[2]);\n break;\n\n case _util.OPS.setStrokeRGBColor:\n this.setStrokeRGBColor(args[0], args[1], args[2]);\n break;\n\n case _util.OPS.setStrokeColorN:\n this.setStrokeColorN(args);\n break;\n\n case _util.OPS.setFillColorN:\n this.setFillColorN(args);\n break;\n\n case _util.OPS.shadingFill:\n this.shadingFill(args[0]);\n break;\n\n case _util.OPS.setDash:\n this.setDash(args[0], args[1]);\n break;\n\n case _util.OPS.setRenderingIntent:\n this.setRenderingIntent(args[0]);\n break;\n\n case _util.OPS.setFlatness:\n this.setFlatness(args[0]);\n break;\n\n case _util.OPS.setGState:\n this.setGState(args[0]);\n break;\n\n case _util.OPS.fill:\n this.fill();\n break;\n\n case _util.OPS.eoFill:\n this.eoFill();\n break;\n\n case _util.OPS.stroke:\n this.stroke();\n break;\n\n case _util.OPS.fillStroke:\n this.fillStroke();\n break;\n\n case _util.OPS.eoFillStroke:\n this.eoFillStroke();\n break;\n\n case _util.OPS.clip:\n this.clip(\"nonzero\");\n break;\n\n case _util.OPS.eoClip:\n this.clip(\"evenodd\");\n break;\n\n case _util.OPS.paintSolidColorImageMask:\n this.paintSolidColorImageMask();\n break;\n\n case _util.OPS.paintImageXObject:\n this.paintImageXObject(args[0]);\n break;\n\n case _util.OPS.paintInlineImageXObject:\n this.paintInlineImageXObject(args[0]);\n break;\n\n case _util.OPS.paintImageMaskXObject:\n this.paintImageMaskXObject(args[0]);\n break;\n\n case _util.OPS.paintFormXObjectBegin:\n this.paintFormXObjectBegin(args[0], args[1]);\n break;\n\n case _util.OPS.paintFormXObjectEnd:\n this.paintFormXObjectEnd();\n break;\n\n case _util.OPS.closePath:\n this.closePath();\n break;\n\n case _util.OPS.closeStroke:\n this.closeStroke();\n break;\n\n case _util.OPS.closeFillStroke:\n this.closeFillStroke();\n break;\n\n case _util.OPS.closeEOFillStroke:\n this.closeEOFillStroke();\n break;\n\n case _util.OPS.nextLine:\n this.nextLine();\n break;\n\n case _util.OPS.transform:\n this.transform(args[0], args[1], args[2], args[3], args[4], args[5]);\n break;\n\n case _util.OPS.constructPath:\n this.constructPath(args[0], args[1]);\n break;\n\n case _util.OPS.endPath:\n this.endPath();\n break;\n\n case 92:\n this.group(opTreeElement.items);\n break;\n\n default:\n (0, _util.warn)(\"Unimplemented operator \".concat(fn));\n break;\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n }, {\n key: \"setWordSpacing\",\n value: function setWordSpacing(wordSpacing) {\n this.current.wordSpacing = wordSpacing;\n }\n }, {\n key: \"setCharSpacing\",\n value: function setCharSpacing(charSpacing) {\n this.current.charSpacing = charSpacing;\n }\n }, {\n key: \"nextLine\",\n value: function nextLine() {\n this.moveText(0, this.current.leading);\n }\n }, {\n key: \"setTextMatrix\",\n value: function setTextMatrix(a, b, c, d, e, f) {\n var current = this.current;\n current.textMatrix = current.lineMatrix = [a, b, c, d, e, f];\n current.textMatrixScale = Math.sqrt(a * a + b * b);\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n current.xcoords = [];\n current.ycoords = [];\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(null, \"font-size\", \"\".concat(pf(current.fontSize), \"px\"));\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n current.txtElement = this.svgFactory.createElement(\"svg:text\");\n current.txtElement.appendChild(current.tspan);\n }\n }, {\n key: \"beginText\",\n value: function beginText() {\n var current = this.current;\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n current.textMatrix = _util.IDENTITY_MATRIX;\n current.lineMatrix = _util.IDENTITY_MATRIX;\n current.textMatrixScale = 1;\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.txtElement = this.svgFactory.createElement(\"svg:text\");\n current.txtgrp = this.svgFactory.createElement(\"svg:g\");\n current.xcoords = [];\n current.ycoords = [];\n }\n }, {\n key: \"moveText\",\n value: function moveText(x, y) {\n var current = this.current;\n current.x = current.lineX += x;\n current.y = current.lineY += y;\n current.xcoords = [];\n current.ycoords = [];\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(null, \"font-size\", \"\".concat(pf(current.fontSize), \"px\"));\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n }\n }, {\n key: \"showText\",\n value: function showText(glyphs) {\n var current = this.current;\n var font = current.font;\n var fontSize = current.fontSize;\n\n if (fontSize === 0) {\n return;\n }\n\n var fontSizeScale = current.fontSizeScale;\n var charSpacing = current.charSpacing;\n var wordSpacing = current.wordSpacing;\n var fontDirection = current.fontDirection;\n var textHScale = current.textHScale * fontDirection;\n var vertical = font.vertical;\n var spacingDir = vertical ? 1 : -1;\n var defaultVMetrics = font.defaultVMetrics;\n var widthAdvanceScale = fontSize * current.fontMatrix[0];\n var x = 0;\n\n var _iterator4 = _createForOfIteratorHelper(glyphs),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var glyph = _step4.value;\n\n if (glyph === null) {\n x += fontDirection * wordSpacing;\n continue;\n } else if ((0, _util.isNum)(glyph)) {\n x += spacingDir * glyph * fontSize / 1000;\n continue;\n }\n\n var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n var character = glyph.fontChar;\n var scaledX = void 0,\n scaledY = void 0;\n var width = glyph.width;\n\n if (vertical) {\n var vx = void 0;\n var vmetric = glyph.vmetric || defaultVMetrics;\n vx = glyph.vmetric ? vmetric[1] : width * 0.5;\n vx = -vx * widthAdvanceScale;\n var vy = vmetric[2] * widthAdvanceScale;\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n\n if (glyph.isInFont || font.missingFile) {\n current.xcoords.push(current.x + scaledX);\n\n if (vertical) {\n current.ycoords.push(-current.y + scaledY);\n }\n\n current.tspan.textContent += character;\n } else {}\n\n var charWidth = void 0;\n\n if (vertical) {\n charWidth = width * widthAdvanceScale - spacing * fontDirection;\n } else {\n charWidth = width * widthAdvanceScale + spacing * fontDirection;\n }\n\n x += charWidth;\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n\n current.tspan.setAttributeNS(null, \"x\", current.xcoords.map(pf).join(\" \"));\n\n if (vertical) {\n current.tspan.setAttributeNS(null, \"y\", current.ycoords.map(pf).join(\" \"));\n } else {\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n }\n\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(null, \"font-size\", \"\".concat(pf(current.fontSize), \"px\"));\n\n if (current.fontStyle !== SVG_DEFAULTS.fontStyle) {\n current.tspan.setAttributeNS(null, \"font-style\", current.fontStyle);\n }\n\n if (current.fontWeight !== SVG_DEFAULTS.fontWeight) {\n current.tspan.setAttributeNS(null, \"font-weight\", current.fontWeight);\n }\n\n var fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;\n\n if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n if (current.fillColor !== SVG_DEFAULTS.fillColor) {\n current.tspan.setAttributeNS(null, \"fill\", current.fillColor);\n }\n\n if (current.fillAlpha < 1) {\n current.tspan.setAttributeNS(null, \"fill-opacity\", current.fillAlpha);\n }\n } else if (current.textRenderingMode === _util.TextRenderingMode.ADD_TO_PATH) {\n current.tspan.setAttributeNS(null, \"fill\", \"transparent\");\n } else {\n current.tspan.setAttributeNS(null, \"fill\", \"none\");\n }\n\n if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n var lineWidthScale = 1 / (current.textMatrixScale || 1);\n\n this._setStrokeAttributes(current.tspan, lineWidthScale);\n }\n\n var textMatrix = current.textMatrix;\n\n if (current.textRise !== 0) {\n textMatrix = textMatrix.slice();\n textMatrix[5] += current.textRise;\n }\n\n current.txtElement.setAttributeNS(null, \"transform\", \"\".concat(pm(textMatrix), \" scale(\").concat(pf(textHScale), \", -1)\"));\n current.txtElement.setAttributeNS(XML_NS, \"xml:space\", \"preserve\");\n current.txtElement.appendChild(current.tspan);\n current.txtgrp.appendChild(current.txtElement);\n\n this._ensureTransformGroup().appendChild(current.txtElement);\n }\n }, {\n key: \"setLeadingMoveText\",\n value: function setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n }\n }, {\n key: \"addFontStyle\",\n value: function addFontStyle(fontObj) {\n if (!fontObj.data) {\n throw new Error(\"addFontStyle: No font data available, \" + 'ensure that the \"fontExtraProperties\" API parameter is set.');\n }\n\n if (!this.cssStyle) {\n this.cssStyle = this.svgFactory.createElement(\"svg:style\");\n this.cssStyle.setAttributeNS(null, \"type\", \"text/css\");\n this.defs.appendChild(this.cssStyle);\n }\n\n var url = (0, _util.createObjectURL)(fontObj.data, fontObj.mimetype, this.forceDataSchema);\n this.cssStyle.textContent += \"@font-face { font-family: \\\"\".concat(fontObj.loadedName, \"\\\";\") + \" src: url(\".concat(url, \"); }\\n\");\n }\n }, {\n key: \"setFont\",\n value: function setFont(details) {\n var current = this.current;\n var fontObj = this.commonObjs.get(details[0]);\n var size = details[1];\n current.font = fontObj;\n\n if (this.embedFonts && !fontObj.missingFile && !this.embeddedFonts[fontObj.loadedName]) {\n this.addFontStyle(fontObj);\n this.embeddedFonts[fontObj.loadedName] = fontObj;\n }\n\n current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : _util.FONT_IDENTITY_MATRIX;\n var bold = \"normal\";\n\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n\n var italic = fontObj.italic ? \"italic\" : \"normal\";\n\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n\n current.fontSize = size;\n current.fontFamily = fontObj.loadedName;\n current.fontWeight = bold;\n current.fontStyle = italic;\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n current.xcoords = [];\n current.ycoords = [];\n }\n }, {\n key: \"endText\",\n value: function endText() {\n var current = this.current;\n\n if (current.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG && current.txtElement && current.txtElement.hasChildNodes()) {\n current.element = current.txtElement;\n this.clip(\"nonzero\");\n this.endPath();\n }\n }\n }, {\n key: \"setLineWidth\",\n value: function setLineWidth(width) {\n if (width > 0) {\n this.current.lineWidth = width;\n }\n }\n }, {\n key: \"setLineCap\",\n value: function setLineCap(style) {\n this.current.lineCap = LINE_CAP_STYLES[style];\n }\n }, {\n key: \"setLineJoin\",\n value: function setLineJoin(style) {\n this.current.lineJoin = LINE_JOIN_STYLES[style];\n }\n }, {\n key: \"setMiterLimit\",\n value: function setMiterLimit(limit) {\n this.current.miterLimit = limit;\n }\n }, {\n key: \"setStrokeAlpha\",\n value: function setStrokeAlpha(strokeAlpha) {\n this.current.strokeAlpha = strokeAlpha;\n }\n }, {\n key: \"setStrokeRGBColor\",\n value: function setStrokeRGBColor(r, g, b) {\n this.current.strokeColor = _util.Util.makeCssRgb(r, g, b);\n }\n }, {\n key: \"setFillAlpha\",\n value: function setFillAlpha(fillAlpha) {\n this.current.fillAlpha = fillAlpha;\n }\n }, {\n key: \"setFillRGBColor\",\n value: function setFillRGBColor(r, g, b) {\n this.current.fillColor = _util.Util.makeCssRgb(r, g, b);\n this.current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n this.current.xcoords = [];\n this.current.ycoords = [];\n }\n }, {\n key: \"setStrokeColorN\",\n value: function setStrokeColorN(args) {\n this.current.strokeColor = this._makeColorN_Pattern(args);\n }\n }, {\n key: \"setFillColorN\",\n value: function setFillColorN(args) {\n this.current.fillColor = this._makeColorN_Pattern(args);\n }\n }, {\n key: \"shadingFill\",\n value: function shadingFill(args) {\n var width = this.viewport.width;\n var height = this.viewport.height;\n\n var inv = _util.Util.inverseTransform(this.transformMatrix);\n\n var bl = _util.Util.applyTransform([0, 0], inv);\n\n var br = _util.Util.applyTransform([0, height], inv);\n\n var ul = _util.Util.applyTransform([width, 0], inv);\n\n var ur = _util.Util.applyTransform([width, height], inv);\n\n var x0 = Math.min(bl[0], br[0], ul[0], ur[0]);\n var y0 = Math.min(bl[1], br[1], ul[1], ur[1]);\n var x1 = Math.max(bl[0], br[0], ul[0], ur[0]);\n var y1 = Math.max(bl[1], br[1], ul[1], ur[1]);\n var rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", x0);\n rect.setAttributeNS(null, \"y\", y0);\n rect.setAttributeNS(null, \"width\", x1 - x0);\n rect.setAttributeNS(null, \"height\", y1 - y0);\n rect.setAttributeNS(null, \"fill\", this._makeShadingPattern(args));\n\n if (this.current.fillAlpha < 1) {\n rect.setAttributeNS(null, \"fill-opacity\", this.current.fillAlpha);\n }\n\n this._ensureTransformGroup().appendChild(rect);\n }\n }, {\n key: \"_makeColorN_Pattern\",\n value: function _makeColorN_Pattern(args) {\n if (args[0] === \"TilingPattern\") {\n return this._makeTilingPattern(args);\n }\n\n return this._makeShadingPattern(args);\n }\n }, {\n key: \"_makeTilingPattern\",\n value: function _makeTilingPattern(args) {\n var color = args[1];\n var operatorList = args[2];\n var matrix = args[3] || _util.IDENTITY_MATRIX;\n\n var _args$ = _slicedToArray(args[4], 4),\n x0 = _args$[0],\n y0 = _args$[1],\n x1 = _args$[2],\n y1 = _args$[3];\n\n var xstep = args[5];\n var ystep = args[6];\n var paintType = args[7];\n var tilingId = \"shading\".concat(shadingCount++);\n\n var _Util$applyTransform = _util.Util.applyTransform([x0, y0], matrix),\n _Util$applyTransform2 = _slicedToArray(_Util$applyTransform, 2),\n tx0 = _Util$applyTransform2[0],\n ty0 = _Util$applyTransform2[1];\n\n var _Util$applyTransform3 = _util.Util.applyTransform([x1, y1], matrix),\n _Util$applyTransform4 = _slicedToArray(_Util$applyTransform3, 2),\n tx1 = _Util$applyTransform4[0],\n ty1 = _Util$applyTransform4[1];\n\n var _Util$singularValueDe = _util.Util.singularValueDecompose2dScale(matrix),\n _Util$singularValueDe2 = _slicedToArray(_Util$singularValueDe, 2),\n xscale = _Util$singularValueDe2[0],\n yscale = _Util$singularValueDe2[1];\n\n var txstep = xstep * xscale;\n var tystep = ystep * yscale;\n var tiling = this.svgFactory.createElement(\"svg:pattern\");\n tiling.setAttributeNS(null, \"id\", tilingId);\n tiling.setAttributeNS(null, \"patternUnits\", \"userSpaceOnUse\");\n tiling.setAttributeNS(null, \"width\", txstep);\n tiling.setAttributeNS(null, \"height\", tystep);\n tiling.setAttributeNS(null, \"x\", \"\".concat(tx0));\n tiling.setAttributeNS(null, \"y\", \"\".concat(ty0));\n var svg = this.svg;\n var transformMatrix = this.transformMatrix;\n var fillColor = this.current.fillColor;\n var strokeColor = this.current.strokeColor;\n var bbox = this.svgFactory.create(tx1 - tx0, ty1 - ty0);\n this.svg = bbox;\n this.transformMatrix = matrix;\n\n if (paintType === 2) {\n var cssColor = _util.Util.makeCssRgb.apply(_util.Util, _toConsumableArray(color));\n\n this.current.fillColor = cssColor;\n this.current.strokeColor = cssColor;\n }\n\n this.executeOpTree(this.convertOpList(operatorList));\n this.svg = svg;\n this.transformMatrix = transformMatrix;\n this.current.fillColor = fillColor;\n this.current.strokeColor = strokeColor;\n tiling.appendChild(bbox.childNodes[0]);\n this.defs.appendChild(tiling);\n return \"url(#\".concat(tilingId, \")\");\n }\n }, {\n key: \"_makeShadingPattern\",\n value: function _makeShadingPattern(args) {\n switch (args[0]) {\n case \"RadialAxial\":\n var shadingId = \"shading\".concat(shadingCount++);\n var colorStops = args[3];\n var gradient;\n\n switch (args[1]) {\n case \"axial\":\n var point0 = args[4];\n var point1 = args[5];\n gradient = this.svgFactory.createElement(\"svg:linearGradient\");\n gradient.setAttributeNS(null, \"id\", shadingId);\n gradient.setAttributeNS(null, \"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttributeNS(null, \"x1\", point0[0]);\n gradient.setAttributeNS(null, \"y1\", point0[1]);\n gradient.setAttributeNS(null, \"x2\", point1[0]);\n gradient.setAttributeNS(null, \"y2\", point1[1]);\n break;\n\n case \"radial\":\n var focalPoint = args[4];\n var circlePoint = args[5];\n var focalRadius = args[6];\n var circleRadius = args[7];\n gradient = this.svgFactory.createElement(\"svg:radialGradient\");\n gradient.setAttributeNS(null, \"id\", shadingId);\n gradient.setAttributeNS(null, \"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttributeNS(null, \"cx\", circlePoint[0]);\n gradient.setAttributeNS(null, \"cy\", circlePoint[1]);\n gradient.setAttributeNS(null, \"r\", circleRadius);\n gradient.setAttributeNS(null, \"fx\", focalPoint[0]);\n gradient.setAttributeNS(null, \"fy\", focalPoint[1]);\n gradient.setAttributeNS(null, \"fr\", focalRadius);\n break;\n\n default:\n throw new Error(\"Unknown RadialAxial type: \".concat(args[1]));\n }\n\n var _iterator5 = _createForOfIteratorHelper(colorStops),\n _step5;\n\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var colorStop = _step5.value;\n var stop = this.svgFactory.createElement(\"svg:stop\");\n stop.setAttributeNS(null, \"offset\", colorStop[0]);\n stop.setAttributeNS(null, \"stop-color\", colorStop[1]);\n gradient.appendChild(stop);\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n\n this.defs.appendChild(gradient);\n return \"url(#\".concat(shadingId, \")\");\n\n case \"Mesh\":\n (0, _util.warn)(\"Unimplemented pattern Mesh\");\n return null;\n\n case \"Dummy\":\n return \"hotpink\";\n\n default:\n throw new Error(\"Unknown IR type: \".concat(args[0]));\n }\n }\n }, {\n key: \"setDash\",\n value: function setDash(dashArray, dashPhase) {\n this.current.dashArray = dashArray;\n this.current.dashPhase = dashPhase;\n }\n }, {\n key: \"constructPath\",\n value: function constructPath(ops, args) {\n var current = this.current;\n var x = current.x,\n y = current.y;\n var d = [];\n var j = 0;\n\n var _iterator6 = _createForOfIteratorHelper(ops),\n _step6;\n\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var op = _step6.value;\n\n switch (op | 0) {\n case _util.OPS.rectangle:\n x = args[j++];\n y = args[j++];\n var width = args[j++];\n var height = args[j++];\n var xw = x + width;\n var yh = y + height;\n d.push(\"M\", pf(x), pf(y), \"L\", pf(xw), pf(y), \"L\", pf(xw), pf(yh), \"L\", pf(x), pf(yh), \"Z\");\n break;\n\n case _util.OPS.moveTo:\n x = args[j++];\n y = args[j++];\n d.push(\"M\", pf(x), pf(y));\n break;\n\n case _util.OPS.lineTo:\n x = args[j++];\n y = args[j++];\n d.push(\"L\", pf(x), pf(y));\n break;\n\n case _util.OPS.curveTo:\n x = args[j + 4];\n y = args[j + 5];\n d.push(\"C\", pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]), pf(x), pf(y));\n j += 6;\n break;\n\n case _util.OPS.curveTo2:\n d.push(\"C\", pf(x), pf(y), pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]));\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n\n case _util.OPS.curveTo3:\n x = args[j + 2];\n y = args[j + 3];\n d.push(\"C\", pf(args[j]), pf(args[j + 1]), pf(x), pf(y), pf(x), pf(y));\n j += 4;\n break;\n\n case _util.OPS.closePath:\n d.push(\"Z\");\n break;\n }\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n\n d = d.join(\" \");\n\n if (current.path && ops.length > 0 && ops[0] !== _util.OPS.rectangle && ops[0] !== _util.OPS.moveTo) {\n d = current.path.getAttributeNS(null, \"d\") + d;\n } else {\n current.path = this.svgFactory.createElement(\"svg:path\");\n\n this._ensureTransformGroup().appendChild(current.path);\n }\n\n current.path.setAttributeNS(null, \"d\", d);\n current.path.setAttributeNS(null, \"fill\", \"none\");\n current.element = current.path;\n current.setCurrentPoint(x, y);\n }\n }, {\n key: \"endPath\",\n value: function endPath() {\n var current = this.current;\n current.path = null;\n\n if (!this.pendingClip) {\n return;\n }\n\n if (!current.element) {\n this.pendingClip = null;\n return;\n }\n\n var clipId = \"clippath\".concat(clipCount++);\n var clipPath = this.svgFactory.createElement(\"svg:clipPath\");\n clipPath.setAttributeNS(null, \"id\", clipId);\n clipPath.setAttributeNS(null, \"transform\", pm(this.transformMatrix));\n var clipElement = current.element.cloneNode(true);\n\n if (this.pendingClip === \"evenodd\") {\n clipElement.setAttributeNS(null, \"clip-rule\", \"evenodd\");\n } else {\n clipElement.setAttributeNS(null, \"clip-rule\", \"nonzero\");\n }\n\n this.pendingClip = null;\n clipPath.appendChild(clipElement);\n this.defs.appendChild(clipPath);\n\n if (current.activeClipUrl) {\n current.clipGroup = null;\n this.extraStack.forEach(function (prev) {\n prev.clipGroup = null;\n });\n clipPath.setAttributeNS(null, \"clip-path\", current.activeClipUrl);\n }\n\n current.activeClipUrl = \"url(#\".concat(clipId, \")\");\n this.tgrp = null;\n }\n }, {\n key: \"clip\",\n value: function clip(type) {\n this.pendingClip = type;\n }\n }, {\n key: \"closePath\",\n value: function closePath() {\n var current = this.current;\n\n if (current.path) {\n var d = \"\".concat(current.path.getAttributeNS(null, \"d\"), \"Z\");\n current.path.setAttributeNS(null, \"d\", d);\n }\n }\n }, {\n key: \"setLeading\",\n value: function setLeading(leading) {\n this.current.leading = -leading;\n }\n }, {\n key: \"setTextRise\",\n value: function setTextRise(textRise) {\n this.current.textRise = textRise;\n }\n }, {\n key: \"setTextRenderingMode\",\n value: function setTextRenderingMode(textRenderingMode) {\n this.current.textRenderingMode = textRenderingMode;\n }\n }, {\n key: \"setHScale\",\n value: function setHScale(scale) {\n this.current.textHScale = scale / 100;\n }\n }, {\n key: \"setRenderingIntent\",\n value: function setRenderingIntent(intent) {}\n }, {\n key: \"setFlatness\",\n value: function setFlatness(flatness) {}\n }, {\n key: \"setGState\",\n value: function setGState(states) {\n var _iterator7 = _createForOfIteratorHelper(states),\n _step7;\n\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var _step7$value = _slicedToArray(_step7.value, 2),\n key = _step7$value[0],\n value = _step7$value[1];\n\n switch (key) {\n case \"LW\":\n this.setLineWidth(value);\n break;\n\n case \"LC\":\n this.setLineCap(value);\n break;\n\n case \"LJ\":\n this.setLineJoin(value);\n break;\n\n case \"ML\":\n this.setMiterLimit(value);\n break;\n\n case \"D\":\n this.setDash(value[0], value[1]);\n break;\n\n case \"RI\":\n this.setRenderingIntent(value);\n break;\n\n case \"FL\":\n this.setFlatness(value);\n break;\n\n case \"Font\":\n this.setFont(value);\n break;\n\n case \"CA\":\n this.setStrokeAlpha(value);\n break;\n\n case \"ca\":\n this.setFillAlpha(value);\n break;\n\n default:\n (0, _util.warn)(\"Unimplemented graphic state operator \".concat(key));\n break;\n }\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n }\n }, {\n key: \"fill\",\n value: function fill() {\n var current = this.current;\n\n if (current.element) {\n current.element.setAttributeNS(null, \"fill\", current.fillColor);\n current.element.setAttributeNS(null, \"fill-opacity\", current.fillAlpha);\n this.endPath();\n }\n }\n }, {\n key: \"stroke\",\n value: function stroke() {\n var current = this.current;\n\n if (current.element) {\n this._setStrokeAttributes(current.element);\n\n current.element.setAttributeNS(null, \"fill\", \"none\");\n this.endPath();\n }\n }\n }, {\n key: \"_setStrokeAttributes\",\n value: function _setStrokeAttributes(element) {\n var lineWidthScale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var current = this.current;\n var dashArray = current.dashArray;\n\n if (lineWidthScale !== 1 && dashArray.length > 0) {\n dashArray = dashArray.map(function (value) {\n return lineWidthScale * value;\n });\n }\n\n element.setAttributeNS(null, \"stroke\", current.strokeColor);\n element.setAttributeNS(null, \"stroke-opacity\", current.strokeAlpha);\n element.setAttributeNS(null, \"stroke-miterlimit\", pf(current.miterLimit));\n element.setAttributeNS(null, \"stroke-linecap\", current.lineCap);\n element.setAttributeNS(null, \"stroke-linejoin\", current.lineJoin);\n element.setAttributeNS(null, \"stroke-width\", pf(lineWidthScale * current.lineWidth) + \"px\");\n element.setAttributeNS(null, \"stroke-dasharray\", dashArray.map(pf).join(\" \"));\n element.setAttributeNS(null, \"stroke-dashoffset\", pf(lineWidthScale * current.dashPhase) + \"px\");\n }\n }, {\n key: \"eoFill\",\n value: function eoFill() {\n if (this.current.element) {\n this.current.element.setAttributeNS(null, \"fill-rule\", \"evenodd\");\n }\n\n this.fill();\n }\n }, {\n key: \"fillStroke\",\n value: function fillStroke() {\n this.stroke();\n this.fill();\n }\n }, {\n key: \"eoFillStroke\",\n value: function eoFillStroke() {\n if (this.current.element) {\n this.current.element.setAttributeNS(null, \"fill-rule\", \"evenodd\");\n }\n\n this.fillStroke();\n }\n }, {\n key: \"closeStroke\",\n value: function closeStroke() {\n this.closePath();\n this.stroke();\n }\n }, {\n key: \"closeFillStroke\",\n value: function closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n }, {\n key: \"closeEOFillStroke\",\n value: function closeEOFillStroke() {\n this.closePath();\n this.eoFillStroke();\n }\n }, {\n key: \"paintSolidColorImageMask\",\n value: function paintSolidColorImageMask() {\n var rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", \"0\");\n rect.setAttributeNS(null, \"y\", \"0\");\n rect.setAttributeNS(null, \"width\", \"1px\");\n rect.setAttributeNS(null, \"height\", \"1px\");\n rect.setAttributeNS(null, \"fill\", this.current.fillColor);\n\n this._ensureTransformGroup().appendChild(rect);\n }\n }, {\n key: \"paintImageXObject\",\n value: function paintImageXObject(objId) {\n var imgData = this.objs.get(objId);\n\n if (!imgData) {\n (0, _util.warn)(\"Dependent image with object ID \".concat(objId, \" is not ready yet\"));\n return;\n }\n\n this.paintInlineImageXObject(imgData);\n }\n }, {\n key: \"paintInlineImageXObject\",\n value: function paintInlineImageXObject(imgData, mask) {\n var width = imgData.width;\n var height = imgData.height;\n var imgSrc = convertImgDataToPng(imgData, this.forceDataSchema, !!mask);\n var cliprect = this.svgFactory.createElement(\"svg:rect\");\n cliprect.setAttributeNS(null, \"x\", \"0\");\n cliprect.setAttributeNS(null, \"y\", \"0\");\n cliprect.setAttributeNS(null, \"width\", pf(width));\n cliprect.setAttributeNS(null, \"height\", pf(height));\n this.current.element = cliprect;\n this.clip(\"nonzero\");\n var imgEl = this.svgFactory.createElement(\"svg:image\");\n imgEl.setAttributeNS(XLINK_NS, \"xlink:href\", imgSrc);\n imgEl.setAttributeNS(null, \"x\", \"0\");\n imgEl.setAttributeNS(null, \"y\", pf(-height));\n imgEl.setAttributeNS(null, \"width\", pf(width) + \"px\");\n imgEl.setAttributeNS(null, \"height\", pf(height) + \"px\");\n imgEl.setAttributeNS(null, \"transform\", \"scale(\".concat(pf(1 / width), \" \").concat(pf(-1 / height), \")\"));\n\n if (mask) {\n mask.appendChild(imgEl);\n } else {\n this._ensureTransformGroup().appendChild(imgEl);\n }\n }\n }, {\n key: \"paintImageMaskXObject\",\n value: function paintImageMaskXObject(imgData) {\n var current = this.current;\n var width = imgData.width;\n var height = imgData.height;\n var fillColor = current.fillColor;\n current.maskId = \"mask\".concat(maskCount++);\n var mask = this.svgFactory.createElement(\"svg:mask\");\n mask.setAttributeNS(null, \"id\", current.maskId);\n var rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", \"0\");\n rect.setAttributeNS(null, \"y\", \"0\");\n rect.setAttributeNS(null, \"width\", pf(width));\n rect.setAttributeNS(null, \"height\", pf(height));\n rect.setAttributeNS(null, \"fill\", fillColor);\n rect.setAttributeNS(null, \"mask\", \"url(#\".concat(current.maskId, \")\"));\n this.defs.appendChild(mask);\n\n this._ensureTransformGroup().appendChild(rect);\n\n this.paintInlineImageXObject(imgData, mask);\n }\n }, {\n key: \"paintFormXObjectBegin\",\n value: function paintFormXObjectBegin(matrix, bbox) {\n if (Array.isArray(matrix) && matrix.length === 6) {\n this.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);\n }\n\n if (bbox) {\n var width = bbox[2] - bbox[0];\n var height = bbox[3] - bbox[1];\n var cliprect = this.svgFactory.createElement(\"svg:rect\");\n cliprect.setAttributeNS(null, \"x\", bbox[0]);\n cliprect.setAttributeNS(null, \"y\", bbox[1]);\n cliprect.setAttributeNS(null, \"width\", pf(width));\n cliprect.setAttributeNS(null, \"height\", pf(height));\n this.current.element = cliprect;\n this.clip(\"nonzero\");\n this.endPath();\n }\n }\n }, {\n key: \"paintFormXObjectEnd\",\n value: function paintFormXObjectEnd() {}\n }, {\n key: \"_initialize\",\n value: function _initialize(viewport) {\n var svg = this.svgFactory.create(viewport.width, viewport.height);\n var definitions = this.svgFactory.createElement(\"svg:defs\");\n svg.appendChild(definitions);\n this.defs = definitions;\n var rootGroup = this.svgFactory.createElement(\"svg:g\");\n rootGroup.setAttributeNS(null, \"transform\", pm(viewport.transform));\n svg.appendChild(rootGroup);\n this.svg = rootGroup;\n return svg;\n }\n }, {\n key: \"_ensureClipGroup\",\n value: function _ensureClipGroup() {\n if (!this.current.clipGroup) {\n var clipGroup = this.svgFactory.createElement(\"svg:g\");\n clipGroup.setAttributeNS(null, \"clip-path\", this.current.activeClipUrl);\n this.svg.appendChild(clipGroup);\n this.current.clipGroup = clipGroup;\n }\n\n return this.current.clipGroup;\n }\n }, {\n key: \"_ensureTransformGroup\",\n value: function _ensureTransformGroup() {\n if (!this.tgrp) {\n this.tgrp = this.svgFactory.createElement(\"svg:g\");\n this.tgrp.setAttributeNS(null, \"transform\", pm(this.transformMatrix));\n\n if (this.current.activeClipUrl) {\n this._ensureClipGroup().appendChild(this.tgrp);\n } else {\n this.svg.appendChild(this.tgrp);\n }\n }\n\n return this.tgrp;\n }\n }]);\n\n return SVGGraphics;\n }();\n}\n\n/***/ }),\n/* 212 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PDFNodeStream = void 0;\n\nvar _regenerator = _interopRequireDefault(__w_pdfjs_require__(2));\n\nvar _util = __w_pdfjs_require__(5);\n\nvar _network_utils = __w_pdfjs_require__(213);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n;\n\nvar fs = require(\"fs\");\n\nvar http = require(\"http\");\n\nvar https = require(\"https\");\n\nvar url = require(\"url\");\n\nvar fileUriRegex = /^file:\\/\\/\\/[a-zA-Z]:\\//;\n\nfunction parseUrl(sourceUrl) {\n var parsedUrl = url.parse(sourceUrl);\n\n if (parsedUrl.protocol === \"file:\" || parsedUrl.host) {\n return parsedUrl;\n }\n\n if (/^[a-z]:[/\\\\]/i.test(sourceUrl)) {\n return url.parse(\"file:///\".concat(sourceUrl));\n }\n\n if (!parsedUrl.host) {\n parsedUrl.protocol = \"file:\";\n }\n\n return parsedUrl;\n}\n\nvar PDFNodeStream = /*#__PURE__*/function () {\n function PDFNodeStream(source) {\n _classCallCheck(this, PDFNodeStream);\n\n this.source = source;\n this.url = parseUrl(source.url);\n this.isHttp = this.url.protocol === \"http:\" || this.url.protocol === \"https:\";\n this.isFsUrl = this.url.protocol === \"file:\";\n this.httpHeaders = this.isHttp && source.httpHeaders || {};\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n _createClass(PDFNodeStream, [{\n key: \"getFullReader\",\n value: function getFullReader() {\n (0, _util.assert)(!this._fullRequestReader, \"PDFNodeStream.getFullReader can only be called once.\");\n this._fullRequestReader = this.isFsUrl ? new PDFNodeStreamFsFullReader(this) : new PDFNodeStreamFullReader(this);\n return this._fullRequestReader;\n }\n }, {\n key: \"getRangeReader\",\n value: function getRangeReader(start, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n\n var rangeReader = this.isFsUrl ? new PDFNodeStreamFsRangeReader(this, start, end) : new PDFNodeStreamRangeReader(this, start, end);\n\n this._rangeRequestReaders.push(rangeReader);\n\n return rangeReader;\n }\n }, {\n key: \"cancelAllRequests\",\n value: function cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n\n var readers = this._rangeRequestReaders.slice(0);\n\n readers.forEach(function (reader) {\n reader.cancel(reason);\n });\n }\n }, {\n key: \"_progressiveDataLength\",\n get: function get() {\n return this._fullRequestReader ? this._fullRequestReader._loaded : 0;\n }\n }]);\n\n return PDFNodeStream;\n}();\n\nexports.PDFNodeStream = PDFNodeStream;\n\nvar BaseFullReader = /*#__PURE__*/function () {\n function BaseFullReader(stream) {\n _classCallCheck(this, BaseFullReader);\n\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n var source = stream.source;\n this._contentLength = source.length;\n this._loaded = 0;\n this._filename = null;\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n this._readableStream = null;\n this._readCapability = (0, _util.createPromiseCapability)();\n this._headersCapability = (0, _util.createPromiseCapability)();\n }\n\n _createClass(BaseFullReader, [{\n key: \"read\",\n value: function () {\n var _read = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee() {\n var chunk, buffer;\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this._readCapability.promise;\n\n case 2:\n if (!this._done) {\n _context.next = 4;\n break;\n }\n\n return _context.abrupt(\"return\", {\n value: undefined,\n done: true\n });\n\n case 4:\n if (!this._storedError) {\n _context.next = 6;\n break;\n }\n\n throw this._storedError;\n\n case 6:\n chunk = this._readableStream.read();\n\n if (!(chunk === null)) {\n _context.next = 10;\n break;\n }\n\n this._readCapability = (0, _util.createPromiseCapability)();\n return _context.abrupt(\"return\", this.read());\n\n case 10:\n this._loaded += chunk.length;\n\n if (this.onProgress) {\n this.onProgress({\n loaded: this._loaded,\n total: this._contentLength\n });\n }\n\n buffer = new Uint8Array(chunk).buffer;\n return _context.abrupt(\"return\", {\n value: buffer,\n done: false\n });\n\n case 14:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function read() {\n return _read.apply(this, arguments);\n }\n\n return read;\n }()\n }, {\n key: \"cancel\",\n value: function cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n\n return;\n }\n\n this._readableStream.destroy(reason);\n }\n }, {\n key: \"_error\",\n value: function _error(reason) {\n this._storedError = reason;\n\n this._readCapability.resolve();\n }\n }, {\n key: \"_setReadableStream\",\n value: function _setReadableStream(readableStream) {\n var _this = this;\n\n this._readableStream = readableStream;\n readableStream.on(\"readable\", function () {\n _this._readCapability.resolve();\n });\n readableStream.on(\"end\", function () {\n readableStream.destroy();\n _this._done = true;\n\n _this._readCapability.resolve();\n });\n readableStream.on(\"error\", function (reason) {\n _this._error(reason);\n });\n\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this._error(new _util.AbortException(\"streaming is disabled\"));\n }\n\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n }, {\n key: \"headersReady\",\n get: function get() {\n return this._headersCapability.promise;\n }\n }, {\n key: \"filename\",\n get: function get() {\n return this._filename;\n }\n }, {\n key: \"contentLength\",\n get: function get() {\n return this._contentLength;\n }\n }, {\n key: \"isRangeSupported\",\n get: function get() {\n return this._isRangeSupported;\n }\n }, {\n key: \"isStreamingSupported\",\n get: function get() {\n return this._isStreamingSupported;\n }\n }]);\n\n return BaseFullReader;\n}();\n\nvar BaseRangeReader = /*#__PURE__*/function () {\n function BaseRangeReader(stream) {\n _classCallCheck(this, BaseRangeReader);\n\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n this._loaded = 0;\n this._readableStream = null;\n this._readCapability = (0, _util.createPromiseCapability)();\n var source = stream.source;\n this._isStreamingSupported = !source.disableStream;\n }\n\n _createClass(BaseRangeReader, [{\n key: \"read\",\n value: function () {\n var _read2 = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee2() {\n var chunk, buffer;\n return _regenerator[\"default\"].wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this._readCapability.promise;\n\n case 2:\n if (!this._done) {\n _context2.next = 4;\n break;\n }\n\n return _context2.abrupt(\"return\", {\n value: undefined,\n done: true\n });\n\n case 4:\n if (!this._storedError) {\n _context2.next = 6;\n break;\n }\n\n throw this._storedError;\n\n case 6:\n chunk = this._readableStream.read();\n\n if (!(chunk === null)) {\n _context2.next = 10;\n break;\n }\n\n this._readCapability = (0, _util.createPromiseCapability)();\n return _context2.abrupt(\"return\", this.read());\n\n case 10:\n this._loaded += chunk.length;\n\n if (this.onProgress) {\n this.onProgress({\n loaded: this._loaded\n });\n }\n\n buffer = new Uint8Array(chunk).buffer;\n return _context2.abrupt(\"return\", {\n value: buffer,\n done: false\n });\n\n case 14:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function read() {\n return _read2.apply(this, arguments);\n }\n\n return read;\n }()\n }, {\n key: \"cancel\",\n value: function cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n\n return;\n }\n\n this._readableStream.destroy(reason);\n }\n }, {\n key: \"_error\",\n value: function _error(reason) {\n this._storedError = reason;\n\n this._readCapability.resolve();\n }\n }, {\n key: \"_setReadableStream\",\n value: function _setReadableStream(readableStream) {\n var _this2 = this;\n\n this._readableStream = readableStream;\n readableStream.on(\"readable\", function () {\n _this2._readCapability.resolve();\n });\n readableStream.on(\"end\", function () {\n readableStream.destroy();\n _this2._done = true;\n\n _this2._readCapability.resolve();\n });\n readableStream.on(\"error\", function (reason) {\n _this2._error(reason);\n });\n\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n }, {\n key: \"isStreamingSupported\",\n get: function get() {\n return this._isStreamingSupported;\n }\n }]);\n\n return BaseRangeReader;\n}();\n\nfunction createRequestOptions(parsedUrl, headers) {\n return {\n protocol: parsedUrl.protocol,\n auth: parsedUrl.auth,\n host: parsedUrl.hostname,\n port: parsedUrl.port,\n path: parsedUrl.path,\n method: \"GET\",\n headers: headers\n };\n}\n\nvar PDFNodeStreamFullReader = /*#__PURE__*/function (_BaseFullReader) {\n _inherits(PDFNodeStreamFullReader, _BaseFullReader);\n\n var _super = _createSuper(PDFNodeStreamFullReader);\n\n function PDFNodeStreamFullReader(stream) {\n var _this3;\n\n _classCallCheck(this, PDFNodeStreamFullReader);\n\n _this3 = _super.call(this, stream);\n\n var handleResponse = function handleResponse(response) {\n if (response.statusCode === 404) {\n var error = new _util.MissingPDFException(\"Missing PDF \\\"\".concat(_this3._url, \"\\\".\"));\n _this3._storedError = error;\n\n _this3._headersCapability.reject(error);\n\n return;\n }\n\n _this3._headersCapability.resolve();\n\n _this3._setReadableStream(response);\n\n var getResponseHeader = function getResponseHeader(name) {\n return _this3._readableStream.headers[name.toLowerCase()];\n };\n\n var _validateRangeRequest = (0, _network_utils.validateRangeRequestCapabilities)({\n getResponseHeader: getResponseHeader,\n isHttp: stream.isHttp,\n rangeChunkSize: _this3._rangeChunkSize,\n disableRange: _this3._disableRange\n }),\n allowRangeRequests = _validateRangeRequest.allowRangeRequests,\n suggestedLength = _validateRangeRequest.suggestedLength;\n\n _this3._isRangeSupported = allowRangeRequests;\n _this3._contentLength = suggestedLength || _this3._contentLength;\n _this3._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);\n };\n\n _this3._request = null;\n\n if (_this3._url.protocol === \"http:\") {\n _this3._request = http.request(createRequestOptions(_this3._url, stream.httpHeaders), handleResponse);\n } else {\n _this3._request = https.request(createRequestOptions(_this3._url, stream.httpHeaders), handleResponse);\n }\n\n _this3._request.on(\"error\", function (reason) {\n _this3._storedError = reason;\n\n _this3._headersCapability.reject(reason);\n });\n\n _this3._request.end();\n\n return _this3;\n }\n\n return PDFNodeStreamFullReader;\n}(BaseFullReader);\n\nvar PDFNodeStreamRangeReader = /*#__PURE__*/function (_BaseRangeReader) {\n _inherits(PDFNodeStreamRangeReader, _BaseRangeReader);\n\n var _super2 = _createSuper(PDFNodeStreamRangeReader);\n\n function PDFNodeStreamRangeReader(stream, start, end) {\n var _this4;\n\n _classCallCheck(this, PDFNodeStreamRangeReader);\n\n _this4 = _super2.call(this, stream);\n _this4._httpHeaders = {};\n\n for (var property in stream.httpHeaders) {\n var value = stream.httpHeaders[property];\n\n if (typeof value === \"undefined\") {\n continue;\n }\n\n _this4._httpHeaders[property] = value;\n }\n\n _this4._httpHeaders.Range = \"bytes=\".concat(start, \"-\").concat(end - 1);\n\n var handleResponse = function handleResponse(response) {\n if (response.statusCode === 404) {\n var error = new _util.MissingPDFException(\"Missing PDF \\\"\".concat(_this4._url, \"\\\".\"));\n _this4._storedError = error;\n return;\n }\n\n _this4._setReadableStream(response);\n };\n\n _this4._request = null;\n\n if (_this4._url.protocol === \"http:\") {\n _this4._request = http.request(createRequestOptions(_this4._url, _this4._httpHeaders), handleResponse);\n } else {\n _this4._request = https.request(createRequestOptions(_this4._url, _this4._httpHeaders), handleResponse);\n }\n\n _this4._request.on(\"error\", function (reason) {\n _this4._storedError = reason;\n });\n\n _this4._request.end();\n\n return _this4;\n }\n\n return PDFNodeStreamRangeReader;\n}(BaseRangeReader);\n\nvar PDFNodeStreamFsFullReader = /*#__PURE__*/function (_BaseFullReader2) {\n _inherits(PDFNodeStreamFsFullReader, _BaseFullReader2);\n\n var _super3 = _createSuper(PDFNodeStreamFsFullReader);\n\n function PDFNodeStreamFsFullReader(stream) {\n var _this5;\n\n _classCallCheck(this, PDFNodeStreamFsFullReader);\n\n _this5 = _super3.call(this, stream);\n var path = decodeURIComponent(_this5._url.path);\n\n if (fileUriRegex.test(_this5._url.href)) {\n path = path.replace(/^\\//, \"\");\n }\n\n fs.lstat(path, function (error, stat) {\n if (error) {\n if (error.code === \"ENOENT\") {\n error = new _util.MissingPDFException(\"Missing PDF \\\"\".concat(path, \"\\\".\"));\n }\n\n _this5._storedError = error;\n\n _this5._headersCapability.reject(error);\n\n return;\n }\n\n _this5._contentLength = stat.size;\n\n _this5._setReadableStream(fs.createReadStream(path));\n\n _this5._headersCapability.resolve();\n });\n return _this5;\n }\n\n return PDFNodeStreamFsFullReader;\n}(BaseFullReader);\n\nvar PDFNodeStreamFsRangeReader = /*#__PURE__*/function (_BaseRangeReader2) {\n _inherits(PDFNodeStreamFsRangeReader, _BaseRangeReader2);\n\n var _super4 = _createSuper(PDFNodeStreamFsRangeReader);\n\n function PDFNodeStreamFsRangeReader(stream, start, end) {\n var _this6;\n\n _classCallCheck(this, PDFNodeStreamFsRangeReader);\n\n _this6 = _super4.call(this, stream);\n var path = decodeURIComponent(_this6._url.path);\n\n if (fileUriRegex.test(_this6._url.href)) {\n path = path.replace(/^\\//, \"\");\n }\n\n _this6._setReadableStream(fs.createReadStream(path, {\n start: start,\n end: end - 1\n }));\n\n return _this6;\n }\n\n return PDFNodeStreamFsRangeReader;\n}(BaseRangeReader);\n\n/***/ }),\n/* 213 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createResponseStatusError = createResponseStatusError;\nexports.extractFilenameFromHeader = extractFilenameFromHeader;\nexports.validateRangeRequestCapabilities = validateRangeRequestCapabilities;\nexports.validateResponseStatus = validateResponseStatus;\n\nvar _util = __w_pdfjs_require__(5);\n\nvar _content_disposition = __w_pdfjs_require__(214);\n\nfunction validateRangeRequestCapabilities(_ref) {\n var getResponseHeader = _ref.getResponseHeader,\n isHttp = _ref.isHttp,\n rangeChunkSize = _ref.rangeChunkSize,\n disableRange = _ref.disableRange;\n (0, _util.assert)(rangeChunkSize > 0, \"Range chunk size must be larger than zero\");\n var returnValues = {\n allowRangeRequests: false,\n suggestedLength: undefined\n };\n var length = parseInt(getResponseHeader(\"Content-Length\"), 10);\n\n if (!Number.isInteger(length)) {\n return returnValues;\n }\n\n returnValues.suggestedLength = length;\n\n if (length <= 2 * rangeChunkSize) {\n return returnValues;\n }\n\n if (disableRange || !isHttp) {\n return returnValues;\n }\n\n if (getResponseHeader(\"Accept-Ranges\") !== \"bytes\") {\n return returnValues;\n }\n\n var contentEncoding = getResponseHeader(\"Content-Encoding\") || \"identity\";\n\n if (contentEncoding !== \"identity\") {\n return returnValues;\n }\n\n returnValues.allowRangeRequests = true;\n return returnValues;\n}\n\nfunction extractFilenameFromHeader(getResponseHeader) {\n var contentDisposition = getResponseHeader(\"Content-Disposition\");\n\n if (contentDisposition) {\n var filename = (0, _content_disposition.getFilenameFromContentDispositionHeader)(contentDisposition);\n\n if (filename.includes(\"%\")) {\n try {\n filename = decodeURIComponent(filename);\n } catch (ex) {}\n }\n\n if (/\\.pdf$/i.test(filename)) {\n return filename;\n }\n }\n\n return null;\n}\n\nfunction createResponseStatusError(status, url) {\n if (status === 404 || status === 0 && url.startsWith(\"file:\")) {\n return new _util.MissingPDFException('Missing PDF \"' + url + '\".');\n }\n\n return new _util.UnexpectedResponseException(\"Unexpected server response (\" + status + ') while retrieving PDF \"' + url + '\".', status);\n}\n\nfunction validateResponseStatus(status) {\n return status === 200 || status === 206;\n}\n\n/***/ }),\n/* 214 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getFilenameFromContentDispositionHeader = getFilenameFromContentDispositionHeader;\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n var needsEncodingFixup = true;\n var tmp = toParamRegExp(\"filename\\\\*\", \"i\").exec(contentDisposition);\n\n if (tmp) {\n tmp = tmp[1];\n var filename = rfc2616unquote(tmp);\n filename = unescape(filename);\n filename = rfc5987decode(filename);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n\n tmp = rfc2231getparam(contentDisposition);\n\n if (tmp) {\n var _filename = rfc2047decode(tmp);\n\n return fixupEncoding(_filename);\n }\n\n tmp = toParamRegExp(\"filename\", \"i\").exec(contentDisposition);\n\n if (tmp) {\n tmp = tmp[1];\n\n var _filename2 = rfc2616unquote(tmp);\n\n _filename2 = rfc2047decode(_filename2);\n return fixupEncoding(_filename2);\n }\n\n function toParamRegExp(attributePattern, flags) {\n return new RegExp(\"(?:^|;)\\\\s*\" + attributePattern + \"\\\\s*=\\\\s*\" + \"(\" + '[^\";\\\\s][^;\\\\s]*' + \"|\" + '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' + \")\", flags);\n }\n\n function textdecode(encoding, value) {\n if (encoding) {\n if (!/^[\\x00-\\xFF]+$/.test(value)) {\n return value;\n }\n\n try {\n var decoder = new TextDecoder(encoding, {\n fatal: true\n });\n var bytes = Array.from(value, function (ch) {\n return ch.charCodeAt(0) & 0xff;\n });\n value = decoder.decode(new Uint8Array(bytes));\n needsEncodingFixup = false;\n } catch (e) {\n if (/^utf-?8$/i.test(encoding)) {\n try {\n value = decodeURIComponent(escape(value));\n needsEncodingFixup = false;\n } catch (err) {}\n }\n }\n }\n\n return value;\n }\n\n function fixupEncoding(value) {\n if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n value = textdecode(\"utf-8\", value);\n\n if (needsEncodingFixup) {\n value = textdecode(\"iso-8859-1\", value);\n }\n }\n\n return value;\n }\n\n function rfc2231getparam(contentDispositionStr) {\n var matches = [];\n var match;\n var iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n\n while ((match = iter.exec(contentDispositionStr)) !== null) {\n var _match = match,\n _match2 = _slicedToArray(_match, 4),\n n = _match2[1],\n quot = _match2[2],\n part = _match2[3];\n\n n = parseInt(n, 10);\n\n if (n in matches) {\n if (n === 0) {\n break;\n }\n\n continue;\n }\n\n matches[n] = [quot, part];\n }\n\n var parts = [];\n\n for (var _n2 = 0; _n2 < matches.length; ++_n2) {\n if (!(_n2 in matches)) {\n break;\n }\n\n var _matches$_n = _slicedToArray(matches[_n2], 2),\n _quot = _matches$_n[0],\n _part = _matches$_n[1];\n\n _part = rfc2616unquote(_part);\n\n if (_quot) {\n _part = unescape(_part);\n\n if (_n2 === 0) {\n _part = rfc5987decode(_part);\n }\n }\n\n parts.push(_part);\n }\n\n return parts.join(\"\");\n }\n\n function rfc2616unquote(value) {\n if (value.startsWith('\"')) {\n var parts = value.slice(1).split('\\\\\"');\n\n for (var i = 0; i < parts.length; ++i) {\n var quotindex = parts[i].indexOf('\"');\n\n if (quotindex !== -1) {\n parts[i] = parts[i].slice(0, quotindex);\n parts.length = i + 1;\n }\n\n parts[i] = parts[i].replace(/\\\\(.)/g, \"$1\");\n }\n\n value = parts.join('\"');\n }\n\n return value;\n }\n\n function rfc5987decode(extvalue) {\n var encodingend = extvalue.indexOf(\"'\");\n\n if (encodingend === -1) {\n return extvalue;\n }\n\n var encoding = extvalue.slice(0, encodingend);\n var langvalue = extvalue.slice(encodingend + 1);\n var value = langvalue.replace(/^[^']*'/, \"\");\n return textdecode(encoding, value);\n }\n\n function rfc2047decode(value) {\n if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n return value;\n }\n\n return value.replace(/=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g, function (matches, charset, encoding, text) {\n if (encoding === \"q\" || encoding === \"Q\") {\n text = text.replace(/_/g, \" \");\n text = text.replace(/=([0-9a-fA-F]{2})/g, function (match, hex) {\n return String.fromCharCode(parseInt(hex, 16));\n });\n return textdecode(charset, text);\n }\n\n try {\n text = atob(text);\n } catch (e) {}\n\n return textdecode(charset, text);\n });\n }\n\n return \"\";\n}\n\n/***/ }),\n/* 215 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PDFNetworkStream = void 0;\n\nvar _regenerator = _interopRequireDefault(__w_pdfjs_require__(2));\n\nvar _util = __w_pdfjs_require__(5);\n\nvar _network_utils = __w_pdfjs_require__(213);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n;\nvar OK_RESPONSE = 200;\nvar PARTIAL_CONTENT_RESPONSE = 206;\n\nfunction getArrayBuffer(xhr) {\n var data = xhr.response;\n\n if (typeof data !== \"string\") {\n return data;\n }\n\n var array = (0, _util.stringToBytes)(data);\n return array.buffer;\n}\n\nvar NetworkManager = /*#__PURE__*/function () {\n function NetworkManager(url, args) {\n _classCallCheck(this, NetworkManager);\n\n this.url = url;\n args = args || {};\n this.isHttp = /^https?:/i.test(url);\n this.httpHeaders = this.isHttp && args.httpHeaders || {};\n this.withCredentials = args.withCredentials || false;\n\n this.getXhr = args.getXhr || function NetworkManager_getXhr() {\n return new XMLHttpRequest();\n };\n\n this.currXhrId = 0;\n this.pendingRequests = Object.create(null);\n }\n\n _createClass(NetworkManager, [{\n key: \"requestRange\",\n value: function requestRange(begin, end, listeners) {\n var args = {\n begin: begin,\n end: end\n };\n\n for (var prop in listeners) {\n args[prop] = listeners[prop];\n }\n\n return this.request(args);\n }\n }, {\n key: \"requestFull\",\n value: function requestFull(listeners) {\n return this.request(listeners);\n }\n }, {\n key: \"request\",\n value: function request(args) {\n var xhr = this.getXhr();\n var xhrId = this.currXhrId++;\n var pendingRequest = this.pendingRequests[xhrId] = {\n xhr: xhr\n };\n xhr.open(\"GET\", this.url);\n xhr.withCredentials = this.withCredentials;\n\n for (var property in this.httpHeaders) {\n var value = this.httpHeaders[property];\n\n if (typeof value === \"undefined\") {\n continue;\n }\n\n xhr.setRequestHeader(property, value);\n }\n\n if (this.isHttp && \"begin\" in args && \"end\" in args) {\n xhr.setRequestHeader(\"Range\", \"bytes=\".concat(args.begin, \"-\").concat(args.end - 1));\n pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;\n } else {\n pendingRequest.expectedStatus = OK_RESPONSE;\n }\n\n xhr.responseType = \"arraybuffer\";\n\n if (args.onError) {\n xhr.onerror = function (evt) {\n args.onError(xhr.status);\n };\n }\n\n xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n xhr.onprogress = this.onProgress.bind(this, xhrId);\n pendingRequest.onHeadersReceived = args.onHeadersReceived;\n pendingRequest.onDone = args.onDone;\n pendingRequest.onError = args.onError;\n pendingRequest.onProgress = args.onProgress;\n xhr.send(null);\n return xhrId;\n }\n }, {\n key: \"onProgress\",\n value: function onProgress(xhrId, evt) {\n var pendingRequest = this.pendingRequests[xhrId];\n\n if (!pendingRequest) {\n return;\n }\n\n if (pendingRequest.onProgress) {\n pendingRequest.onProgress(evt);\n }\n }\n }, {\n key: \"onStateChange\",\n value: function onStateChange(xhrId, evt) {\n var pendingRequest = this.pendingRequests[xhrId];\n\n if (!pendingRequest) {\n return;\n }\n\n var xhr = pendingRequest.xhr;\n\n if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n pendingRequest.onHeadersReceived();\n delete pendingRequest.onHeadersReceived;\n }\n\n if (xhr.readyState !== 4) {\n return;\n }\n\n if (!(xhrId in this.pendingRequests)) {\n return;\n }\n\n delete this.pendingRequests[xhrId];\n\n if (xhr.status === 0 && this.isHttp) {\n if (pendingRequest.onError) {\n pendingRequest.onError(xhr.status);\n }\n\n return;\n }\n\n var xhrStatus = xhr.status || OK_RESPONSE;\n var ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n\n if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) {\n if (pendingRequest.onError) {\n pendingRequest.onError(xhr.status);\n }\n\n return;\n }\n\n var chunk = getArrayBuffer(xhr);\n\n if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n var rangeHeader = xhr.getResponseHeader(\"Content-Range\");\n var matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n pendingRequest.onDone({\n begin: parseInt(matches[1], 10),\n chunk: chunk\n });\n } else if (chunk) {\n pendingRequest.onDone({\n begin: 0,\n chunk: chunk\n });\n } else if (pendingRequest.onError) {\n pendingRequest.onError(xhr.status);\n }\n }\n }, {\n key: \"hasPendingRequests\",\n value: function hasPendingRequests() {\n for (var xhrId in this.pendingRequests) {\n return true;\n }\n\n return false;\n }\n }, {\n key: \"getRequestXhr\",\n value: function getRequestXhr(xhrId) {\n return this.pendingRequests[xhrId].xhr;\n }\n }, {\n key: \"isPendingRequest\",\n value: function isPendingRequest(xhrId) {\n return xhrId in this.pendingRequests;\n }\n }, {\n key: \"abortAllRequests\",\n value: function abortAllRequests() {\n for (var xhrId in this.pendingRequests) {\n this.abortRequest(xhrId | 0);\n }\n }\n }, {\n key: \"abortRequest\",\n value: function abortRequest(xhrId) {\n var xhr = this.pendingRequests[xhrId].xhr;\n delete this.pendingRequests[xhrId];\n xhr.abort();\n }\n }]);\n\n return NetworkManager;\n}();\n\nvar PDFNetworkStream = /*#__PURE__*/function () {\n function PDFNetworkStream(source) {\n _classCallCheck(this, PDFNetworkStream);\n\n this._source = source;\n this._manager = new NetworkManager(source.url, {\n httpHeaders: source.httpHeaders,\n withCredentials: source.withCredentials\n });\n this._rangeChunkSize = source.rangeChunkSize;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n _createClass(PDFNetworkStream, [{\n key: \"_onRangeRequestReaderClosed\",\n value: function _onRangeRequestReaderClosed(reader) {\n var i = this._rangeRequestReaders.indexOf(reader);\n\n if (i >= 0) {\n this._rangeRequestReaders.splice(i, 1);\n }\n }\n }, {\n key: \"getFullReader\",\n value: function getFullReader() {\n (0, _util.assert)(!this._fullRequestReader, \"PDFNetworkStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source);\n return this._fullRequestReader;\n }\n }, {\n key: \"getRangeReader\",\n value: function getRangeReader(begin, end) {\n var reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end);\n reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n\n this._rangeRequestReaders.push(reader);\n\n return reader;\n }\n }, {\n key: \"cancelAllRequests\",\n value: function cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n\n var readers = this._rangeRequestReaders.slice(0);\n\n readers.forEach(function (reader) {\n reader.cancel(reason);\n });\n }\n }]);\n\n return PDFNetworkStream;\n}();\n\nexports.PDFNetworkStream = PDFNetworkStream;\n\nvar PDFNetworkStreamFullRequestReader = /*#__PURE__*/function () {\n function PDFNetworkStreamFullRequestReader(manager, source) {\n _classCallCheck(this, PDFNetworkStreamFullRequestReader);\n\n this._manager = manager;\n var args = {\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n };\n this._url = source.url;\n this._fullRequestId = manager.requestFull(args);\n this._headersReceivedCapability = (0, _util.createPromiseCapability)();\n this._disableRange = source.disableRange || false;\n this._contentLength = source.length;\n this._rangeChunkSize = source.rangeChunkSize;\n\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n this._isStreamingSupported = false;\n this._isRangeSupported = false;\n this._cachedChunks = [];\n this._requests = [];\n this._done = false;\n this._storedError = undefined;\n this._filename = null;\n this.onProgress = null;\n }\n\n _createClass(PDFNetworkStreamFullRequestReader, [{\n key: \"_onHeadersReceived\",\n value: function _onHeadersReceived() {\n var fullRequestXhrId = this._fullRequestId;\n\n var fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n\n var getResponseHeader = function getResponseHeader(name) {\n return fullRequestXhr.getResponseHeader(name);\n };\n\n var _validateRangeRequest = (0, _network_utils.validateRangeRequestCapabilities)({\n getResponseHeader: getResponseHeader,\n isHttp: this._manager.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n }),\n allowRangeRequests = _validateRangeRequest.allowRangeRequests,\n suggestedLength = _validateRangeRequest.suggestedLength;\n\n if (allowRangeRequests) {\n this._isRangeSupported = true;\n }\n\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);\n\n if (this._isRangeSupported) {\n this._manager.abortRequest(fullRequestXhrId);\n }\n\n this._headersReceivedCapability.resolve();\n }\n }, {\n key: \"_onDone\",\n value: function _onDone(args) {\n if (args) {\n if (this._requests.length > 0) {\n var requestCapability = this._requests.shift();\n\n requestCapability.resolve({\n value: args.chunk,\n done: false\n });\n } else {\n this._cachedChunks.push(args.chunk);\n }\n }\n\n this._done = true;\n\n if (this._cachedChunks.length > 0) {\n return;\n }\n\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n });\n\n this._requests = [];\n }\n }, {\n key: \"_onError\",\n value: function _onError(status) {\n var url = this._url;\n var exception = (0, _network_utils.createResponseStatusError)(status, url);\n this._storedError = exception;\n\n this._headersReceivedCapability.reject(exception);\n\n this._requests.forEach(function (requestCapability) {\n requestCapability.reject(exception);\n });\n\n this._requests = [];\n this._cachedChunks = [];\n }\n }, {\n key: \"_onProgress\",\n value: function _onProgress(data) {\n if (this.onProgress) {\n this.onProgress({\n loaded: data.loaded,\n total: data.lengthComputable ? data.total : this._contentLength\n });\n }\n }\n }, {\n key: \"read\",\n value: function () {\n var _read = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee() {\n var chunk, requestCapability;\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!this._storedError) {\n _context.next = 2;\n break;\n }\n\n throw this._storedError;\n\n case 2:\n if (!(this._cachedChunks.length > 0)) {\n _context.next = 5;\n break;\n }\n\n chunk = this._cachedChunks.shift();\n return _context.abrupt(\"return\", {\n value: chunk,\n done: false\n });\n\n case 5:\n if (!this._done) {\n _context.next = 7;\n break;\n }\n\n return _context.abrupt(\"return\", {\n value: undefined,\n done: true\n });\n\n case 7:\n requestCapability = (0, _util.createPromiseCapability)();\n\n this._requests.push(requestCapability);\n\n return _context.abrupt(\"return\", requestCapability.promise);\n\n case 10:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function read() {\n return _read.apply(this, arguments);\n }\n\n return read;\n }()\n }, {\n key: \"cancel\",\n value: function cancel(reason) {\n this._done = true;\n\n this._headersReceivedCapability.reject(reason);\n\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n });\n\n this._requests = [];\n\n if (this._manager.isPendingRequest(this._fullRequestId)) {\n this._manager.abortRequest(this._fullRequestId);\n }\n\n this._fullRequestReader = null;\n }\n }, {\n key: \"filename\",\n get: function get() {\n return this._filename;\n }\n }, {\n key: \"isRangeSupported\",\n get: function get() {\n return this._isRangeSupported;\n }\n }, {\n key: \"isStreamingSupported\",\n get: function get() {\n return this._isStreamingSupported;\n }\n }, {\n key: \"contentLength\",\n get: function get() {\n return this._contentLength;\n }\n }, {\n key: \"headersReady\",\n get: function get() {\n return this._headersReceivedCapability.promise;\n }\n }]);\n\n return PDFNetworkStreamFullRequestReader;\n}();\n\nvar PDFNetworkStreamRangeRequestReader = /*#__PURE__*/function () {\n function PDFNetworkStreamRangeRequestReader(manager, begin, end) {\n _classCallCheck(this, PDFNetworkStreamRangeRequestReader);\n\n this._manager = manager;\n var args = {\n onDone: this._onDone.bind(this),\n onProgress: this._onProgress.bind(this)\n };\n this._requestId = manager.requestRange(begin, end, args);\n this._requests = [];\n this._queuedChunk = null;\n this._done = false;\n this.onProgress = null;\n this.onClosed = null;\n }\n\n _createClass(PDFNetworkStreamRangeRequestReader, [{\n key: \"_close\",\n value: function _close() {\n if (this.onClosed) {\n this.onClosed(this);\n }\n }\n }, {\n key: \"_onDone\",\n value: function _onDone(data) {\n var chunk = data.chunk;\n\n if (this._requests.length > 0) {\n var requestCapability = this._requests.shift();\n\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunk = chunk;\n }\n\n this._done = true;\n\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n });\n\n this._requests = [];\n\n this._close();\n }\n }, {\n key: \"_onProgress\",\n value: function _onProgress(evt) {\n if (!this.isStreamingSupported && this.onProgress) {\n this.onProgress({\n loaded: evt.loaded\n });\n }\n }\n }, {\n key: \"read\",\n value: function () {\n var _read2 = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee2() {\n var chunk, requestCapability;\n return _regenerator[\"default\"].wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!(this._queuedChunk !== null)) {\n _context2.next = 4;\n break;\n }\n\n chunk = this._queuedChunk;\n this._queuedChunk = null;\n return _context2.abrupt(\"return\", {\n value: chunk,\n done: false\n });\n\n case 4:\n if (!this._done) {\n _context2.next = 6;\n break;\n }\n\n return _context2.abrupt(\"return\", {\n value: undefined,\n done: true\n });\n\n case 6:\n requestCapability = (0, _util.createPromiseCapability)();\n\n this._requests.push(requestCapability);\n\n return _context2.abrupt(\"return\", requestCapability.promise);\n\n case 9:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function read() {\n return _read2.apply(this, arguments);\n }\n\n return read;\n }()\n }, {\n key: \"cancel\",\n value: function cancel(reason) {\n this._done = true;\n\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n });\n\n this._requests = [];\n\n if (this._manager.isPendingRequest(this._requestId)) {\n this._manager.abortRequest(this._requestId);\n }\n\n this._close();\n }\n }, {\n key: \"isStreamingSupported\",\n get: function get() {\n return false;\n }\n }]);\n\n return PDFNetworkStreamRangeRequestReader;\n}();\n\n/***/ }),\n/* 216 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PDFFetchStream = void 0;\n\nvar _regenerator = _interopRequireDefault(__w_pdfjs_require__(2));\n\nvar _util = __w_pdfjs_require__(5);\n\nvar _network_utils = __w_pdfjs_require__(213);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n;\n\nfunction createFetchOptions(headers, withCredentials, abortController) {\n return {\n method: \"GET\",\n headers: headers,\n signal: abortController && abortController.signal,\n mode: \"cors\",\n credentials: withCredentials ? \"include\" : \"same-origin\",\n redirect: \"follow\"\n };\n}\n\nfunction createHeaders(httpHeaders) {\n var headers = new Headers();\n\n for (var property in httpHeaders) {\n var value = httpHeaders[property];\n\n if (typeof value === \"undefined\") {\n continue;\n }\n\n headers.append(property, value);\n }\n\n return headers;\n}\n\nvar PDFFetchStream = /*#__PURE__*/function () {\n function PDFFetchStream(source) {\n _classCallCheck(this, PDFFetchStream);\n\n this.source = source;\n this.isHttp = /^https?:/i.test(source.url);\n this.httpHeaders = this.isHttp && source.httpHeaders || {};\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n _createClass(PDFFetchStream, [{\n key: \"getFullReader\",\n value: function getFullReader() {\n (0, _util.assert)(!this._fullRequestReader, \"PDFFetchStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFFetchStreamReader(this);\n return this._fullRequestReader;\n }\n }, {\n key: \"getRangeReader\",\n value: function getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n\n var reader = new PDFFetchStreamRangeReader(this, begin, end);\n\n this._rangeRequestReaders.push(reader);\n\n return reader;\n }\n }, {\n key: \"cancelAllRequests\",\n value: function cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n\n var readers = this._rangeRequestReaders.slice(0);\n\n readers.forEach(function (reader) {\n reader.cancel(reason);\n });\n }\n }, {\n key: \"_progressiveDataLength\",\n get: function get() {\n return this._fullRequestReader ? this._fullRequestReader._loaded : 0;\n }\n }]);\n\n return PDFFetchStream;\n}();\n\nexports.PDFFetchStream = PDFFetchStream;\n\nvar PDFFetchStreamReader = /*#__PURE__*/function () {\n function PDFFetchStreamReader(stream) {\n var _this = this;\n\n _classCallCheck(this, PDFFetchStreamReader);\n\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n this._filename = null;\n var source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._contentLength = source.length;\n this._headersCapability = (0, _util.createPromiseCapability)();\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n if (typeof AbortController !== \"undefined\") {\n this._abortController = new AbortController();\n }\n\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n this._headers = createHeaders(this._stream.httpHeaders);\n var url = source.url;\n fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(function (response) {\n if (!(0, _network_utils.validateResponseStatus)(response.status)) {\n throw (0, _network_utils.createResponseStatusError)(response.status, url);\n }\n\n _this._reader = response.body.getReader();\n\n _this._headersCapability.resolve();\n\n var getResponseHeader = function getResponseHeader(name) {\n return response.headers.get(name);\n };\n\n var _validateRangeRequest = (0, _network_utils.validateRangeRequestCapabilities)({\n getResponseHeader: getResponseHeader,\n isHttp: _this._stream.isHttp,\n rangeChunkSize: _this._rangeChunkSize,\n disableRange: _this._disableRange\n }),\n allowRangeRequests = _validateRangeRequest.allowRangeRequests,\n suggestedLength = _validateRangeRequest.suggestedLength;\n\n _this._isRangeSupported = allowRangeRequests;\n _this._contentLength = suggestedLength || _this._contentLength;\n _this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);\n\n if (!_this._isStreamingSupported && _this._isRangeSupported) {\n _this.cancel(new _util.AbortException(\"Streaming is disabled.\"));\n }\n })[\"catch\"](this._headersCapability.reject);\n this.onProgress = null;\n }\n\n _createClass(PDFFetchStreamReader, [{\n key: \"read\",\n value: function () {\n var _read = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee() {\n var _yield$this$_reader$r, value, done, buffer;\n\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this._headersCapability.promise;\n\n case 2:\n _context.next = 4;\n return this._reader.read();\n\n case 4:\n _yield$this$_reader$r = _context.sent;\n value = _yield$this$_reader$r.value;\n done = _yield$this$_reader$r.done;\n\n if (!done) {\n _context.next = 9;\n break;\n }\n\n return _context.abrupt(\"return\", {\n value: value,\n done: done\n });\n\n case 9:\n this._loaded += value.byteLength;\n\n if (this.onProgress) {\n this.onProgress({\n loaded: this._loaded,\n total: this._contentLength\n });\n }\n\n buffer = new Uint8Array(value).buffer;\n return _context.abrupt(\"return\", {\n value: buffer,\n done: false\n });\n\n case 13:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function read() {\n return _read.apply(this, arguments);\n }\n\n return read;\n }()\n }, {\n key: \"cancel\",\n value: function cancel(reason) {\n if (this._reader) {\n this._reader.cancel(reason);\n }\n\n if (this._abortController) {\n this._abortController.abort();\n }\n }\n }, {\n key: \"headersReady\",\n get: function get() {\n return this._headersCapability.promise;\n }\n }, {\n key: \"filename\",\n get: function get() {\n return this._filename;\n }\n }, {\n key: \"contentLength\",\n get: function get() {\n return this._contentLength;\n }\n }, {\n key: \"isRangeSupported\",\n get: function get() {\n return this._isRangeSupported;\n }\n }, {\n key: \"isStreamingSupported\",\n get: function get() {\n return this._isStreamingSupported;\n }\n }]);\n\n return PDFFetchStreamReader;\n}();\n\nvar PDFFetchStreamRangeReader = /*#__PURE__*/function () {\n function PDFFetchStreamRangeReader(stream, begin, end) {\n var _this2 = this;\n\n _classCallCheck(this, PDFFetchStreamRangeReader);\n\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n var source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._readCapability = (0, _util.createPromiseCapability)();\n this._isStreamingSupported = !source.disableStream;\n\n if (typeof AbortController !== \"undefined\") {\n this._abortController = new AbortController();\n }\n\n this._headers = createHeaders(this._stream.httpHeaders);\n\n this._headers.append(\"Range\", \"bytes=\".concat(begin, \"-\").concat(end - 1));\n\n var url = source.url;\n fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(function (response) {\n if (!(0, _network_utils.validateResponseStatus)(response.status)) {\n throw (0, _network_utils.createResponseStatusError)(response.status, url);\n }\n\n _this2._readCapability.resolve();\n\n _this2._reader = response.body.getReader();\n });\n this.onProgress = null;\n }\n\n _createClass(PDFFetchStreamRangeReader, [{\n key: \"read\",\n value: function () {\n var _read2 = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee2() {\n var _yield$this$_reader$r2, value, done, buffer;\n\n return _regenerator[\"default\"].wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this._readCapability.promise;\n\n case 2:\n _context2.next = 4;\n return this._reader.read();\n\n case 4:\n _yield$this$_reader$r2 = _context2.sent;\n value = _yield$this$_reader$r2.value;\n done = _yield$this$_reader$r2.done;\n\n if (!done) {\n _context2.next = 9;\n break;\n }\n\n return _context2.abrupt(\"return\", {\n value: value,\n done: done\n });\n\n case 9:\n this._loaded += value.byteLength;\n\n if (this.onProgress) {\n this.onProgress({\n loaded: this._loaded\n });\n }\n\n buffer = new Uint8Array(value).buffer;\n return _context2.abrupt(\"return\", {\n value: buffer,\n done: false\n });\n\n case 13:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function read() {\n return _read2.apply(this, arguments);\n }\n\n return read;\n }()\n }, {\n key: \"cancel\",\n value: function cancel(reason) {\n if (this._reader) {\n this._reader.cancel(reason);\n }\n\n if (this._abortController) {\n this._abortController.abort();\n }\n }\n }, {\n key: \"isStreamingSupported\",\n get: function get() {\n return this._isStreamingSupported;\n }\n }]);\n\n return PDFFetchStreamRangeReader;\n}();\n\n/***/ })\n/******/ ]);\n});\n//# sourceMappingURL=pdf.js.map","var win;\n\nif (typeof window !== \"undefined\") {\n win = window;\n} else if (typeof global !== \"undefined\") {\n win = global;\n} else if (typeof self !== \"undefined\"){\n win = self;\n} else {\n win = {};\n}\n\nmodule.exports = win;\n","var topLevel = typeof global !== 'undefined' ? global :\n typeof window !== 'undefined' ? window : {}\nvar minDoc = require('min-document');\n\nvar doccy;\n\nif (typeof document !== 'undefined') {\n doccy = document;\n} else {\n doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'];\n\n if (!doccy) {\n doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'] = minDoc;\n }\n}\n\nmodule.exports = doccy;\n","function _extends() {\n return module.exports = _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _extends.apply(null, arguments);\n}\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","module.exports = isFunction\n\nvar toString = Object.prototype.toString\n\nfunction isFunction (fn) {\n if (!fn) {\n return false\n }\n var string = toString.call(fn)\n return string === '[object Function]' ||\n (typeof fn === 'function' && string !== '[object RegExp]') ||\n (typeof window !== 'undefined' &&\n // IE8 and below\n (fn === window.setTimeout ||\n fn === window.alert ||\n fn === window.confirm ||\n fn === window.prompt))\n};\n","\"use strict\";\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nvar InterceptorsStorage = /*#__PURE__*/function () {\n function InterceptorsStorage() {\n this.typeToInterceptorsMap_ = new Map();\n this.enabled_ = false;\n }\n\n var _proto = InterceptorsStorage.prototype;\n\n _proto.getIsEnabled = function getIsEnabled() {\n return this.enabled_;\n };\n\n _proto.enable = function enable() {\n this.enabled_ = true;\n };\n\n _proto.disable = function disable() {\n this.enabled_ = false;\n };\n\n _proto.reset = function reset() {\n this.typeToInterceptorsMap_ = new Map();\n this.enabled_ = false;\n };\n\n _proto.addInterceptor = function addInterceptor(type, interceptor) {\n if (!this.typeToInterceptorsMap_.has(type)) {\n this.typeToInterceptorsMap_.set(type, new Set());\n }\n\n var interceptorsSet = this.typeToInterceptorsMap_.get(type);\n\n if (interceptorsSet.has(interceptor)) {\n // already have this interceptor\n return false;\n }\n\n interceptorsSet.add(interceptor);\n return true;\n };\n\n _proto.removeInterceptor = function removeInterceptor(type, interceptor) {\n var interceptorsSet = this.typeToInterceptorsMap_.get(type);\n\n if (interceptorsSet && interceptorsSet.has(interceptor)) {\n interceptorsSet.delete(interceptor);\n return true;\n }\n\n return false;\n };\n\n _proto.clearInterceptorsByType = function clearInterceptorsByType(type) {\n var interceptorsSet = this.typeToInterceptorsMap_.get(type);\n\n if (!interceptorsSet) {\n return false;\n }\n\n this.typeToInterceptorsMap_.delete(type);\n this.typeToInterceptorsMap_.set(type, new Set());\n return true;\n };\n\n _proto.clear = function clear() {\n if (!this.typeToInterceptorsMap_.size) {\n return false;\n }\n\n this.typeToInterceptorsMap_ = new Map();\n return true;\n };\n\n _proto.getForType = function getForType(type) {\n return this.typeToInterceptorsMap_.get(type) || new Set();\n };\n\n _proto.execute = function execute(type, payload) {\n var interceptors = this.getForType(type);\n\n for (var _iterator = _createForOfIteratorHelperLoose(interceptors), _step; !(_step = _iterator()).done;) {\n var interceptor = _step.value;\n\n try {\n payload = interceptor(payload);\n } catch (e) {//ignore\n }\n }\n\n return payload;\n };\n\n return InterceptorsStorage;\n}();\n\nmodule.exports = InterceptorsStorage;","\"use strict\";\n\nvar RetryManager = /*#__PURE__*/function () {\n function RetryManager() {\n this.maxAttempts_ = 1;\n this.delayFactor_ = 0.1;\n this.fuzzFactor_ = 0.1;\n this.initialDelay_ = 1000;\n this.enabled_ = false;\n }\n\n var _proto = RetryManager.prototype;\n\n _proto.getIsEnabled = function getIsEnabled() {\n return this.enabled_;\n };\n\n _proto.enable = function enable() {\n this.enabled_ = true;\n };\n\n _proto.disable = function disable() {\n this.enabled_ = false;\n };\n\n _proto.reset = function reset() {\n this.maxAttempts_ = 1;\n this.delayFactor_ = 0.1;\n this.fuzzFactor_ = 0.1;\n this.initialDelay_ = 1000;\n this.enabled_ = false;\n };\n\n _proto.getMaxAttempts = function getMaxAttempts() {\n return this.maxAttempts_;\n };\n\n _proto.setMaxAttempts = function setMaxAttempts(maxAttempts) {\n this.maxAttempts_ = maxAttempts;\n };\n\n _proto.getDelayFactor = function getDelayFactor() {\n return this.delayFactor_;\n };\n\n _proto.setDelayFactor = function setDelayFactor(delayFactor) {\n this.delayFactor_ = delayFactor;\n };\n\n _proto.getFuzzFactor = function getFuzzFactor() {\n return this.fuzzFactor_;\n };\n\n _proto.setFuzzFactor = function setFuzzFactor(fuzzFactor) {\n this.fuzzFactor_ = fuzzFactor;\n };\n\n _proto.getInitialDelay = function getInitialDelay() {\n return this.initialDelay_;\n };\n\n _proto.setInitialDelay = function setInitialDelay(initialDelay) {\n this.initialDelay_ = initialDelay;\n };\n\n _proto.createRetry = function createRetry(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n maxAttempts = _ref.maxAttempts,\n delayFactor = _ref.delayFactor,\n fuzzFactor = _ref.fuzzFactor,\n initialDelay = _ref.initialDelay;\n\n return new Retry({\n maxAttempts: maxAttempts || this.maxAttempts_,\n delayFactor: delayFactor || this.delayFactor_,\n fuzzFactor: fuzzFactor || this.fuzzFactor_,\n initialDelay: initialDelay || this.initialDelay_\n });\n };\n\n return RetryManager;\n}();\n\nvar Retry = /*#__PURE__*/function () {\n function Retry(options) {\n this.maxAttempts_ = options.maxAttempts;\n this.delayFactor_ = options.delayFactor;\n this.fuzzFactor_ = options.fuzzFactor;\n this.currentDelay_ = options.initialDelay;\n this.currentAttempt_ = 1;\n }\n\n var _proto2 = Retry.prototype;\n\n _proto2.moveToNextAttempt = function moveToNextAttempt() {\n this.currentAttempt_++;\n var delayDelta = this.currentDelay_ * this.delayFactor_;\n this.currentDelay_ = this.currentDelay_ + delayDelta;\n };\n\n _proto2.shouldRetry = function shouldRetry() {\n return this.currentAttempt_ < this.maxAttempts_;\n };\n\n _proto2.getCurrentDelay = function getCurrentDelay() {\n return this.currentDelay_;\n };\n\n _proto2.getCurrentMinPossibleDelay = function getCurrentMinPossibleDelay() {\n return (1 - this.fuzzFactor_) * this.currentDelay_;\n };\n\n _proto2.getCurrentMaxPossibleDelay = function getCurrentMaxPossibleDelay() {\n return (1 + this.fuzzFactor_) * this.currentDelay_;\n }\n /**\n * For example fuzzFactor is 0.1\n * This means ±10% deviation\n * So if we have delay as 1000\n * This function can generate any value from 900 to 1100\n */\n ;\n\n _proto2.getCurrentFuzzedDelay = function getCurrentFuzzedDelay() {\n var lowValue = this.getCurrentMinPossibleDelay();\n var highValue = this.getCurrentMaxPossibleDelay();\n return lowValue + Math.random() * (highValue - lowValue);\n };\n\n return Retry;\n}();\n\nmodule.exports = RetryManager;","\"use strict\";\n\nvar window = require('global/window');\n\nvar httpResponseHandler = function httpResponseHandler(callback, decodeResponseBody) {\n if (decodeResponseBody === void 0) {\n decodeResponseBody = false;\n }\n\n return function (err, response, responseBody) {\n // if the XHR failed, return that error\n if (err) {\n callback(err);\n return;\n } // if the HTTP status code is 4xx or 5xx, the request also failed\n\n\n if (response.statusCode >= 400 && response.statusCode <= 599) {\n var cause = responseBody;\n\n if (decodeResponseBody) {\n if (window.TextDecoder) {\n var charset = getCharset(response.headers && response.headers['content-type']);\n\n try {\n cause = new TextDecoder(charset).decode(responseBody);\n } catch (e) {}\n } else {\n cause = String.fromCharCode.apply(null, new Uint8Array(responseBody));\n }\n }\n\n callback({\n cause: cause\n });\n return;\n } // otherwise, request succeeded\n\n\n callback(null, responseBody);\n };\n};\n\nfunction getCharset(contentTypeHeader) {\n if (contentTypeHeader === void 0) {\n contentTypeHeader = '';\n }\n\n return contentTypeHeader.toLowerCase().split(';').reduce(function (charset, contentType) {\n var _contentType$split = contentType.split('='),\n type = _contentType$split[0],\n value = _contentType$split[1];\n\n if (type.trim() === 'charset') {\n return value.trim();\n }\n\n return charset;\n }, 'utf-8');\n}\n\nmodule.exports = httpResponseHandler;","\"use strict\";\n\nvar window = require(\"global/window\");\n\nvar _extends = require(\"@babel/runtime/helpers/extends\");\n\nvar isFunction = require('is-function');\n\nvar InterceptorsStorage = require('./interceptors.js');\n\nvar RetryManager = require(\"./retry.js\");\n\ncreateXHR.httpHandler = require('./http-handler.js');\ncreateXHR.requestInterceptorsStorage = new InterceptorsStorage();\ncreateXHR.responseInterceptorsStorage = new InterceptorsStorage();\ncreateXHR.retryManager = new RetryManager();\n/**\n * @license\n * slighly modified parse-headers 2.0.2 \n * Copyright (c) 2014 David Björklund\n * Available under the MIT license\n * \n */\n\nvar parseHeaders = function parseHeaders(headers) {\n var result = {};\n\n if (!headers) {\n return result;\n }\n\n headers.trim().split('\\n').forEach(function (row) {\n var index = row.indexOf(':');\n var key = row.slice(0, index).trim().toLowerCase();\n var value = row.slice(index + 1).trim();\n\n if (typeof result[key] === 'undefined') {\n result[key] = value;\n } else if (Array.isArray(result[key])) {\n result[key].push(value);\n } else {\n result[key] = [result[key], value];\n }\n });\n return result;\n};\n\nmodule.exports = createXHR; // Allow use of default import syntax in TypeScript\n\nmodule.exports.default = createXHR;\ncreateXHR.XMLHttpRequest = window.XMLHttpRequest || noop;\ncreateXHR.XDomainRequest = \"withCredentials\" in new createXHR.XMLHttpRequest() ? createXHR.XMLHttpRequest : window.XDomainRequest;\nforEachArray([\"get\", \"put\", \"post\", \"patch\", \"head\", \"delete\"], function (method) {\n createXHR[method === \"delete\" ? \"del\" : method] = function (uri, options, callback) {\n options = initParams(uri, options, callback);\n options.method = method.toUpperCase();\n return _createXHR(options);\n };\n});\n\nfunction forEachArray(array, iterator) {\n for (var i = 0; i < array.length; i++) {\n iterator(array[i]);\n }\n}\n\nfunction isEmpty(obj) {\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) return false;\n }\n\n return true;\n}\n\nfunction initParams(uri, options, callback) {\n var params = uri;\n\n if (isFunction(options)) {\n callback = options;\n\n if (typeof uri === \"string\") {\n params = {\n uri: uri\n };\n }\n } else {\n params = _extends({}, options, {\n uri: uri\n });\n }\n\n params.callback = callback;\n return params;\n}\n\nfunction createXHR(uri, options, callback) {\n options = initParams(uri, options, callback);\n return _createXHR(options);\n}\n\nfunction _createXHR(options) {\n if (typeof options.callback === \"undefined\") {\n throw new Error(\"callback argument missing\");\n } // call all registered request interceptors for a given request type:\n\n\n if (options.requestType && createXHR.requestInterceptorsStorage.getIsEnabled()) {\n var requestInterceptorPayload = {\n uri: options.uri || options.url,\n headers: options.headers || {},\n body: options.body,\n metadata: options.metadata || {},\n retry: options.retry,\n timeout: options.timeout\n };\n var updatedPayload = createXHR.requestInterceptorsStorage.execute(options.requestType, requestInterceptorPayload);\n options.uri = updatedPayload.uri;\n options.headers = updatedPayload.headers;\n options.body = updatedPayload.body;\n options.metadata = updatedPayload.metadata;\n options.retry = updatedPayload.retry;\n options.timeout = updatedPayload.timeout;\n }\n\n var called = false;\n\n var callback = function cbOnce(err, response, body) {\n if (!called) {\n called = true;\n options.callback(err, response, body);\n }\n };\n\n function readystatechange() {\n // do not call load 2 times when response interceptors are enabled\n // why do we even need this 2nd load?\n if (xhr.readyState === 4 && !createXHR.responseInterceptorsStorage.getIsEnabled()) {\n setTimeout(loadFunc, 0);\n }\n }\n\n function getBody() {\n // Chrome with requestType=blob throws errors arround when even testing access to responseText\n var body = undefined;\n\n if (xhr.response) {\n body = xhr.response;\n } else {\n body = xhr.responseText || getXml(xhr);\n }\n\n if (isJson) {\n try {\n body = JSON.parse(body);\n } catch (e) {}\n }\n\n return body;\n }\n\n function errorFunc(evt) {\n clearTimeout(timeoutTimer);\n clearTimeout(options.retryTimeout);\n\n if (!(evt instanceof Error)) {\n evt = new Error(\"\" + (evt || \"Unknown XMLHttpRequest Error\"));\n }\n\n evt.statusCode = 0; // we would like to retry on error:\n\n if (!aborted && createXHR.retryManager.getIsEnabled() && options.retry && options.retry.shouldRetry()) {\n options.retryTimeout = setTimeout(function () {\n options.retry.moveToNextAttempt(); // we want to re-use the same options and the same xhr object:\n\n options.xhr = xhr;\n\n _createXHR(options);\n }, options.retry.getCurrentFuzzedDelay());\n return;\n } // call all registered response interceptors for a given request type:\n\n\n if (options.requestType && createXHR.responseInterceptorsStorage.getIsEnabled()) {\n var responseInterceptorPayload = {\n headers: failureResponse.headers || {},\n body: failureResponse.body,\n responseUrl: xhr.responseURL,\n responseType: xhr.responseType\n };\n\n var _updatedPayload = createXHR.responseInterceptorsStorage.execute(options.requestType, responseInterceptorPayload);\n\n failureResponse.body = _updatedPayload.body;\n failureResponse.headers = _updatedPayload.headers;\n }\n\n return callback(evt, failureResponse);\n } // will load the data & process the response in a special response object\n\n\n function loadFunc() {\n if (aborted) return;\n var status;\n clearTimeout(timeoutTimer);\n clearTimeout(options.retryTimeout);\n\n if (options.useXDR && xhr.status === undefined) {\n //IE8 CORS GET successful response doesn't have a status field, but body is fine\n status = 200;\n } else {\n status = xhr.status === 1223 ? 204 : xhr.status;\n }\n\n var response = failureResponse;\n var err = null;\n\n if (status !== 0) {\n response = {\n body: getBody(),\n statusCode: status,\n method: method,\n headers: {},\n url: uri,\n rawRequest: xhr\n };\n\n if (xhr.getAllResponseHeaders) {\n //remember xhr can in fact be XDR for CORS in IE\n response.headers = parseHeaders(xhr.getAllResponseHeaders());\n }\n } else {\n err = new Error(\"Internal XMLHttpRequest Error\");\n } // call all registered response interceptors for a given request type:\n\n\n if (options.requestType && createXHR.responseInterceptorsStorage.getIsEnabled()) {\n var responseInterceptorPayload = {\n headers: response.headers || {},\n body: response.body,\n responseUrl: xhr.responseURL,\n responseType: xhr.responseType\n };\n\n var _updatedPayload2 = createXHR.responseInterceptorsStorage.execute(options.requestType, responseInterceptorPayload);\n\n response.body = _updatedPayload2.body;\n response.headers = _updatedPayload2.headers;\n }\n\n return callback(err, response, response.body);\n }\n\n var xhr = options.xhr || null;\n\n if (!xhr) {\n if (options.cors || options.useXDR) {\n xhr = new createXHR.XDomainRequest();\n } else {\n xhr = new createXHR.XMLHttpRequest();\n }\n }\n\n var key;\n var aborted;\n var uri = xhr.url = options.uri || options.url;\n var method = xhr.method = options.method || \"GET\";\n var body = options.body || options.data;\n var headers = xhr.headers = options.headers || {};\n var sync = !!options.sync;\n var isJson = false;\n var timeoutTimer;\n var failureResponse = {\n body: undefined,\n headers: {},\n statusCode: 0,\n method: method,\n url: uri,\n rawRequest: xhr\n };\n\n if (\"json\" in options && options.json !== false) {\n isJson = true;\n headers[\"accept\"] || headers[\"Accept\"] || (headers[\"Accept\"] = \"application/json\"); //Don't override existing accept header declared by user\n\n if (method !== \"GET\" && method !== \"HEAD\") {\n headers[\"content-type\"] || headers[\"Content-Type\"] || (headers[\"Content-Type\"] = \"application/json\"); //Don't override existing accept header declared by user\n\n body = JSON.stringify(options.json === true ? body : options.json);\n }\n }\n\n xhr.onreadystatechange = readystatechange;\n xhr.onload = loadFunc;\n xhr.onerror = errorFunc; // IE9 must have onprogress be set to a unique function.\n\n xhr.onprogress = function () {// IE must die\n };\n\n xhr.onabort = function () {\n aborted = true;\n clearTimeout(options.retryTimeout);\n };\n\n xhr.ontimeout = errorFunc;\n xhr.open(method, uri, !sync, options.username, options.password); //has to be after open\n\n if (!sync) {\n xhr.withCredentials = !!options.withCredentials;\n } // Cannot set timeout with sync request\n // not setting timeout on the xhr object, because of old webkits etc. not handling that correctly\n // both npm's request and jquery 1.x use this kind of timeout, so this is being consistent\n\n\n if (!sync && options.timeout > 0) {\n timeoutTimer = setTimeout(function () {\n if (aborted) return;\n aborted = true; //IE9 may still call readystatechange\n\n xhr.abort(\"timeout\");\n var e = new Error(\"XMLHttpRequest timeout\");\n e.code = \"ETIMEDOUT\";\n errorFunc(e);\n }, options.timeout);\n }\n\n if (xhr.setRequestHeader) {\n for (key in headers) {\n if (headers.hasOwnProperty(key)) {\n xhr.setRequestHeader(key, headers[key]);\n }\n }\n } else if (options.headers && !isEmpty(options.headers)) {\n throw new Error(\"Headers cannot be set on an XDomainRequest object\");\n }\n\n if (\"responseType\" in options) {\n xhr.responseType = options.responseType;\n }\n\n if (\"beforeSend\" in options && typeof options.beforeSend === \"function\") {\n options.beforeSend(xhr);\n } // Microsoft Edge browser sends \"undefined\" when send is called with undefined value.\n // XMLHttpRequest spec says to pass null as body to indicate no body\n // See https://github.com/naugtur/xhr/issues/100.\n\n\n xhr.send(body || null);\n return xhr;\n}\n\nfunction getXml(xhr) {\n // xhr.responseXML will throw Exception \"InvalidStateError\" or \"DOMException\"\n // See https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseXML.\n try {\n if (xhr.responseType === \"document\") {\n return xhr.responseXML;\n }\n\n var firefoxBugTakenEffect = xhr.responseXML && xhr.responseXML.documentElement.nodeName === \"parsererror\";\n\n if (xhr.responseType === \"\" && !firefoxBugTakenEffect) {\n return xhr.responseXML;\n }\n } catch (e) {}\n\n return null;\n}\n\nfunction noop() {}","/**\n * Copyright 2013 vtt.js Contributors\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/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */\nvar document = require('global/document');\n\nvar _objCreate = Object.create || (function() {\n function F() {}\n return function(o) {\n if (arguments.length !== 1) {\n throw new Error('Object.create shim only accepts one parameter.');\n }\n F.prototype = o;\n return new F();\n };\n})();\n\n// Creates a new ParserError object from an errorData object. The errorData\n// object should have default code and message properties. The default message\n// property can be overriden by passing in a message parameter.\n// See ParsingError.Errors below for acceptable errors.\nfunction ParsingError(errorData, message) {\n this.name = \"ParsingError\";\n this.code = errorData.code;\n this.message = message || errorData.message;\n}\nParsingError.prototype = _objCreate(Error.prototype);\nParsingError.prototype.constructor = ParsingError;\n\n// ParsingError metadata for acceptable ParsingErrors.\nParsingError.Errors = {\n BadSignature: {\n code: 0,\n message: \"Malformed WebVTT signature.\"\n },\n BadTimeStamp: {\n code: 1,\n message: \"Malformed time stamp.\"\n }\n};\n\n// Try to parse input as a time stamp.\nfunction parseTimeStamp(input) {\n\n function computeSeconds(h, m, s, f) {\n return (h | 0) * 3600 + (m | 0) * 60 + (s | 0) + (f | 0) / 1000;\n }\n\n var m = input.match(/^(\\d+):(\\d{1,2})(:\\d{1,2})?\\.(\\d{3})/);\n if (!m) {\n return null;\n }\n\n if (m[3]) {\n // Timestamp takes the form of [hours]:[minutes]:[seconds].[milliseconds]\n return computeSeconds(m[1], m[2], m[3].replace(\":\", \"\"), m[4]);\n } else if (m[1] > 59) {\n // Timestamp takes the form of [hours]:[minutes].[milliseconds]\n // First position is hours as it's over 59.\n return computeSeconds(m[1], m[2], 0, m[4]);\n } else {\n // Timestamp takes the form of [minutes]:[seconds].[milliseconds]\n return computeSeconds(0, m[1], m[2], m[4]);\n }\n}\n\n// A settings object holds key/value pairs and will ignore anything but the first\n// assignment to a specific key.\nfunction Settings() {\n this.values = _objCreate(null);\n}\n\nSettings.prototype = {\n // Only accept the first assignment to any key.\n set: function(k, v) {\n if (!this.get(k) && v !== \"\") {\n this.values[k] = v;\n }\n },\n // Return the value for a key, or a default value.\n // If 'defaultKey' is passed then 'dflt' is assumed to be an object with\n // a number of possible default values as properties where 'defaultKey' is\n // the key of the property that will be chosen; otherwise it's assumed to be\n // a single value.\n get: function(k, dflt, defaultKey) {\n if (defaultKey) {\n return this.has(k) ? this.values[k] : dflt[defaultKey];\n }\n return this.has(k) ? this.values[k] : dflt;\n },\n // Check whether we have a value for a key.\n has: function(k) {\n return k in this.values;\n },\n // Accept a setting if its one of the given alternatives.\n alt: function(k, v, a) {\n for (var n = 0; n < a.length; ++n) {\n if (v === a[n]) {\n this.set(k, v);\n break;\n }\n }\n },\n // Accept a setting if its a valid (signed) integer.\n integer: function(k, v) {\n if (/^-?\\d+$/.test(v)) { // integer\n this.set(k, parseInt(v, 10));\n }\n },\n // Accept a setting if its a valid percentage.\n percent: function(k, v) {\n var m;\n if ((m = v.match(/^([\\d]{1,3})(\\.[\\d]*)?%$/))) {\n v = parseFloat(v);\n if (v >= 0 && v <= 100) {\n this.set(k, v);\n return true;\n }\n }\n return false;\n }\n};\n\n// Helper function to parse input into groups separated by 'groupDelim', and\n// interprete each group as a key/value pair separated by 'keyValueDelim'.\nfunction parseOptions(input, callback, keyValueDelim, groupDelim) {\n var groups = groupDelim ? input.split(groupDelim) : [input];\n for (var i in groups) {\n if (typeof groups[i] !== \"string\") {\n continue;\n }\n var kv = groups[i].split(keyValueDelim);\n if (kv.length !== 2) {\n continue;\n }\n var k = kv[0].trim();\n var v = kv[1].trim();\n callback(k, v);\n }\n}\n\nfunction parseCue(input, cue, regionList) {\n // Remember the original input if we need to throw an error.\n var oInput = input;\n // 4.1 WebVTT timestamp\n function consumeTimeStamp() {\n var ts = parseTimeStamp(input);\n if (ts === null) {\n throw new ParsingError(ParsingError.Errors.BadTimeStamp,\n \"Malformed timestamp: \" + oInput);\n }\n // Remove time stamp from input.\n input = input.replace(/^[^\\sa-zA-Z-]+/, \"\");\n return ts;\n }\n\n // 4.4.2 WebVTT cue settings\n function consumeCueSettings(input, cue) {\n var settings = new Settings();\n\n parseOptions(input, function (k, v) {\n switch (k) {\n case \"region\":\n // Find the last region we parsed with the same region id.\n for (var i = regionList.length - 1; i >= 0; i--) {\n if (regionList[i].id === v) {\n settings.set(k, regionList[i].region);\n break;\n }\n }\n break;\n case \"vertical\":\n settings.alt(k, v, [\"rl\", \"lr\"]);\n break;\n case \"line\":\n var vals = v.split(\",\"),\n vals0 = vals[0];\n settings.integer(k, vals0);\n settings.percent(k, vals0) ? settings.set(\"snapToLines\", false) : null;\n settings.alt(k, vals0, [\"auto\"]);\n if (vals.length === 2) {\n settings.alt(\"lineAlign\", vals[1], [\"start\", \"center\", \"end\"]);\n }\n break;\n case \"position\":\n vals = v.split(\",\");\n settings.percent(k, vals[0]);\n if (vals.length === 2) {\n settings.alt(\"positionAlign\", vals[1], [\"start\", \"center\", \"end\"]);\n }\n break;\n case \"size\":\n settings.percent(k, v);\n break;\n case \"align\":\n settings.alt(k, v, [\"start\", \"center\", \"end\", \"left\", \"right\"]);\n break;\n }\n }, /:/, /\\s/);\n\n // Apply default values for any missing fields.\n cue.region = settings.get(\"region\", null);\n cue.vertical = settings.get(\"vertical\", \"\");\n try {\n cue.line = settings.get(\"line\", \"auto\");\n } catch (e) {}\n cue.lineAlign = settings.get(\"lineAlign\", \"start\");\n cue.snapToLines = settings.get(\"snapToLines\", true);\n cue.size = settings.get(\"size\", 100);\n // Safari still uses the old middle value and won't accept center\n try {\n cue.align = settings.get(\"align\", \"center\");\n } catch (e) {\n cue.align = settings.get(\"align\", \"middle\");\n }\n try {\n cue.position = settings.get(\"position\", \"auto\");\n } catch (e) {\n cue.position = settings.get(\"position\", {\n start: 0,\n left: 0,\n center: 50,\n middle: 50,\n end: 100,\n right: 100\n }, cue.align);\n }\n\n\n cue.positionAlign = settings.get(\"positionAlign\", {\n start: \"start\",\n left: \"start\",\n center: \"center\",\n middle: \"center\",\n end: \"end\",\n right: \"end\"\n }, cue.align);\n }\n\n function skipWhitespace() {\n input = input.replace(/^\\s+/, \"\");\n }\n\n // 4.1 WebVTT cue timings.\n skipWhitespace();\n cue.startTime = consumeTimeStamp(); // (1) collect cue start time\n skipWhitespace();\n if (input.substr(0, 3) !== \"-->\") { // (3) next characters must match \"-->\"\n throw new ParsingError(ParsingError.Errors.BadTimeStamp,\n \"Malformed time stamp (time stamps must be separated by '-->'): \" +\n oInput);\n }\n input = input.substr(3);\n skipWhitespace();\n cue.endTime = consumeTimeStamp(); // (5) collect cue end time\n\n // 4.1 WebVTT cue settings list.\n skipWhitespace();\n consumeCueSettings(input, cue);\n}\n\n// When evaluating this file as part of a Webpack bundle for server\n// side rendering, `document` is an empty object.\nvar TEXTAREA_ELEMENT = document.createElement && document.createElement(\"textarea\");\n\nvar TAG_NAME = {\n c: \"span\",\n i: \"i\",\n b: \"b\",\n u: \"u\",\n ruby: \"ruby\",\n rt: \"rt\",\n v: \"span\",\n lang: \"span\"\n};\n\n// 5.1 default text color\n// 5.2 default text background color is equivalent to text color with bg_ prefix\nvar DEFAULT_COLOR_CLASS = {\n white: 'rgba(255,255,255,1)',\n lime: 'rgba(0,255,0,1)',\n cyan: 'rgba(0,255,255,1)',\n red: 'rgba(255,0,0,1)',\n yellow: 'rgba(255,255,0,1)',\n magenta: 'rgba(255,0,255,1)',\n blue: 'rgba(0,0,255,1)',\n black: 'rgba(0,0,0,1)'\n};\n\nvar TAG_ANNOTATION = {\n v: \"title\",\n lang: \"lang\"\n};\n\nvar NEEDS_PARENT = {\n rt: \"ruby\"\n};\n\n// Parse content into a document fragment.\nfunction parseContent(window, input) {\n function nextToken() {\n // Check for end-of-string.\n if (!input) {\n return null;\n }\n\n // Consume 'n' characters from the input.\n function consume(result) {\n input = input.substr(result.length);\n return result;\n }\n\n var m = input.match(/^([^<]*)(<[^>]*>?)?/);\n // If there is some text before the next tag, return it, otherwise return\n // the tag.\n return consume(m[1] ? m[1] : m[2]);\n }\n\n function unescape(s) {\n TEXTAREA_ELEMENT.innerHTML = s;\n s = TEXTAREA_ELEMENT.textContent;\n TEXTAREA_ELEMENT.textContent = \"\";\n return s;\n }\n\n function shouldAdd(current, element) {\n return !NEEDS_PARENT[element.localName] ||\n NEEDS_PARENT[element.localName] === current.localName;\n }\n\n // Create an element for this tag.\n function createElement(type, annotation) {\n var tagName = TAG_NAME[type];\n if (!tagName) {\n return null;\n }\n var element = window.document.createElement(tagName);\n var name = TAG_ANNOTATION[type];\n if (name && annotation) {\n element[name] = annotation.trim();\n }\n return element;\n }\n\n var rootDiv = window.document.createElement(\"div\"),\n current = rootDiv,\n t,\n tagStack = [];\n\n while ((t = nextToken()) !== null) {\n if (t[0] === '<') {\n if (t[1] === \"/\") {\n // If the closing tag matches, move back up to the parent node.\n if (tagStack.length &&\n tagStack[tagStack.length - 1] === t.substr(2).replace(\">\", \"\")) {\n tagStack.pop();\n current = current.parentNode;\n }\n // Otherwise just ignore the end tag.\n continue;\n }\n var ts = parseTimeStamp(t.substr(1, t.length - 2));\n var node;\n if (ts) {\n // Timestamps are lead nodes as well.\n node = window.document.createProcessingInstruction(\"timestamp\", ts);\n current.appendChild(node);\n continue;\n }\n var m = t.match(/^<([^.\\s/0-9>]+)(\\.[^\\s\\\\>]+)?([^>\\\\]+)?(\\\\?)>?$/);\n // If we can't parse the tag, skip to the next tag.\n if (!m) {\n continue;\n }\n // Try to construct an element, and ignore the tag if we couldn't.\n node = createElement(m[1], m[3]);\n if (!node) {\n continue;\n }\n // Determine if the tag should be added based on the context of where it\n // is placed in the cuetext.\n if (!shouldAdd(current, node)) {\n continue;\n }\n // Set the class list (as a list of classes, separated by space).\n if (m[2]) {\n var classes = m[2].split('.');\n\n classes.forEach(function(cl) {\n var bgColor = /^bg_/.test(cl);\n // slice out `bg_` if it's a background color\n var colorName = bgColor ? cl.slice(3) : cl;\n\n if (DEFAULT_COLOR_CLASS.hasOwnProperty(colorName)) {\n var propName = bgColor ? 'background-color' : 'color';\n var propValue = DEFAULT_COLOR_CLASS[colorName];\n\n node.style[propName] = propValue;\n }\n });\n\n node.className = classes.join(' ');\n }\n // Append the node to the current node, and enter the scope of the new\n // node.\n tagStack.push(m[1]);\n current.appendChild(node);\n current = node;\n continue;\n }\n\n // Text nodes are leaf nodes.\n current.appendChild(window.document.createTextNode(unescape(t)));\n }\n\n return rootDiv;\n}\n\n// This is a list of all the Unicode characters that have a strong\n// right-to-left category. What this means is that these characters are\n// written right-to-left for sure. It was generated by pulling all the strong\n// right-to-left characters out of the Unicode data table. That table can\n// found at: http://www.unicode.org/Public/UNIDATA/UnicodeData.txt\nvar strongRTLRanges = [[0x5be, 0x5be], [0x5c0, 0x5c0], [0x5c3, 0x5c3], [0x5c6, 0x5c6],\n [0x5d0, 0x5ea], [0x5f0, 0x5f4], [0x608, 0x608], [0x60b, 0x60b], [0x60d, 0x60d],\n [0x61b, 0x61b], [0x61e, 0x64a], [0x66d, 0x66f], [0x671, 0x6d5], [0x6e5, 0x6e6],\n [0x6ee, 0x6ef], [0x6fa, 0x70d], [0x70f, 0x710], [0x712, 0x72f], [0x74d, 0x7a5],\n [0x7b1, 0x7b1], [0x7c0, 0x7ea], [0x7f4, 0x7f5], [0x7fa, 0x7fa], [0x800, 0x815],\n [0x81a, 0x81a], [0x824, 0x824], [0x828, 0x828], [0x830, 0x83e], [0x840, 0x858],\n [0x85e, 0x85e], [0x8a0, 0x8a0], [0x8a2, 0x8ac], [0x200f, 0x200f],\n [0xfb1d, 0xfb1d], [0xfb1f, 0xfb28], [0xfb2a, 0xfb36], [0xfb38, 0xfb3c],\n [0xfb3e, 0xfb3e], [0xfb40, 0xfb41], [0xfb43, 0xfb44], [0xfb46, 0xfbc1],\n [0xfbd3, 0xfd3d], [0xfd50, 0xfd8f], [0xfd92, 0xfdc7], [0xfdf0, 0xfdfc],\n [0xfe70, 0xfe74], [0xfe76, 0xfefc], [0x10800, 0x10805], [0x10808, 0x10808],\n [0x1080a, 0x10835], [0x10837, 0x10838], [0x1083c, 0x1083c], [0x1083f, 0x10855],\n [0x10857, 0x1085f], [0x10900, 0x1091b], [0x10920, 0x10939], [0x1093f, 0x1093f],\n [0x10980, 0x109b7], [0x109be, 0x109bf], [0x10a00, 0x10a00], [0x10a10, 0x10a13],\n [0x10a15, 0x10a17], [0x10a19, 0x10a33], [0x10a40, 0x10a47], [0x10a50, 0x10a58],\n [0x10a60, 0x10a7f], [0x10b00, 0x10b35], [0x10b40, 0x10b55], [0x10b58, 0x10b72],\n [0x10b78, 0x10b7f], [0x10c00, 0x10c48], [0x1ee00, 0x1ee03], [0x1ee05, 0x1ee1f],\n [0x1ee21, 0x1ee22], [0x1ee24, 0x1ee24], [0x1ee27, 0x1ee27], [0x1ee29, 0x1ee32],\n [0x1ee34, 0x1ee37], [0x1ee39, 0x1ee39], [0x1ee3b, 0x1ee3b], [0x1ee42, 0x1ee42],\n [0x1ee47, 0x1ee47], [0x1ee49, 0x1ee49], [0x1ee4b, 0x1ee4b], [0x1ee4d, 0x1ee4f],\n [0x1ee51, 0x1ee52], [0x1ee54, 0x1ee54], [0x1ee57, 0x1ee57], [0x1ee59, 0x1ee59],\n [0x1ee5b, 0x1ee5b], [0x1ee5d, 0x1ee5d], [0x1ee5f, 0x1ee5f], [0x1ee61, 0x1ee62],\n [0x1ee64, 0x1ee64], [0x1ee67, 0x1ee6a], [0x1ee6c, 0x1ee72], [0x1ee74, 0x1ee77],\n [0x1ee79, 0x1ee7c], [0x1ee7e, 0x1ee7e], [0x1ee80, 0x1ee89], [0x1ee8b, 0x1ee9b],\n [0x1eea1, 0x1eea3], [0x1eea5, 0x1eea9], [0x1eeab, 0x1eebb], [0x10fffd, 0x10fffd]];\n\nfunction isStrongRTLChar(charCode) {\n for (var i = 0; i < strongRTLRanges.length; i++) {\n var currentRange = strongRTLRanges[i];\n if (charCode >= currentRange[0] && charCode <= currentRange[1]) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction determineBidi(cueDiv) {\n var nodeStack = [],\n text = \"\",\n charCode;\n\n if (!cueDiv || !cueDiv.childNodes) {\n return \"ltr\";\n }\n\n function pushNodes(nodeStack, node) {\n for (var i = node.childNodes.length - 1; i >= 0; i--) {\n nodeStack.push(node.childNodes[i]);\n }\n }\n\n function nextTextNode(nodeStack) {\n if (!nodeStack || !nodeStack.length) {\n return null;\n }\n\n var node = nodeStack.pop(),\n text = node.textContent || node.innerText;\n if (text) {\n // TODO: This should match all unicode type B characters (paragraph\n // separator characters). See issue #115.\n var m = text.match(/^.*(\\n|\\r)/);\n if (m) {\n nodeStack.length = 0;\n return m[0];\n }\n return text;\n }\n if (node.tagName === \"ruby\") {\n return nextTextNode(nodeStack);\n }\n if (node.childNodes) {\n pushNodes(nodeStack, node);\n return nextTextNode(nodeStack);\n }\n }\n\n pushNodes(nodeStack, cueDiv);\n while ((text = nextTextNode(nodeStack))) {\n for (var i = 0; i < text.length; i++) {\n charCode = text.charCodeAt(i);\n if (isStrongRTLChar(charCode)) {\n return \"rtl\";\n }\n }\n }\n return \"ltr\";\n}\n\nfunction computeLinePos(cue) {\n if (typeof cue.line === \"number\" &&\n (cue.snapToLines || (cue.line >= 0 && cue.line <= 100))) {\n return cue.line;\n }\n if (!cue.track || !cue.track.textTrackList ||\n !cue.track.textTrackList.mediaElement) {\n return -1;\n }\n var track = cue.track,\n trackList = track.textTrackList,\n count = 0;\n for (var i = 0; i < trackList.length && trackList[i] !== track; i++) {\n if (trackList[i].mode === \"showing\") {\n count++;\n }\n }\n return ++count * -1;\n}\n\nfunction StyleBox() {\n}\n\n// Apply styles to a div. If there is no div passed then it defaults to the\n// div on 'this'.\nStyleBox.prototype.applyStyles = function(styles, div) {\n div = div || this.div;\n for (var prop in styles) {\n if (styles.hasOwnProperty(prop)) {\n div.style[prop] = styles[prop];\n }\n }\n};\n\nStyleBox.prototype.formatStyle = function(val, unit) {\n return val === 0 ? 0 : val + unit;\n};\n\n// Constructs the computed display state of the cue (a div). Places the div\n// into the overlay which should be a block level element (usually a div).\nfunction CueStyleBox(window, cue, styleOptions) {\n StyleBox.call(this);\n this.cue = cue;\n\n // Parse our cue's text into a DOM tree rooted at 'cueDiv'. This div will\n // have inline positioning and will function as the cue background box.\n this.cueDiv = parseContent(window, cue.text);\n var styles = {\n color: \"rgba(255, 255, 255, 1)\",\n backgroundColor: \"rgba(0, 0, 0, 0.8)\",\n position: \"relative\",\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n display: \"inline\",\n writingMode: cue.vertical === \"\" ? \"horizontal-tb\"\n : cue.vertical === \"lr\" ? \"vertical-lr\"\n : \"vertical-rl\",\n unicodeBidi: \"plaintext\"\n };\n\n this.applyStyles(styles, this.cueDiv);\n\n // Create an absolutely positioned div that will be used to position the cue\n // div. Note, all WebVTT cue-setting alignments are equivalent to the CSS\n // mirrors of them except middle instead of center on Safari.\n this.div = window.document.createElement(\"div\");\n styles = {\n direction: determineBidi(this.cueDiv),\n writingMode: cue.vertical === \"\" ? \"horizontal-tb\"\n : cue.vertical === \"lr\" ? \"vertical-lr\"\n : \"vertical-rl\",\n unicodeBidi: \"plaintext\",\n textAlign: cue.align === \"middle\" ? \"center\" : cue.align,\n font: styleOptions.font,\n whiteSpace: \"pre-line\",\n position: \"absolute\"\n };\n\n this.applyStyles(styles);\n this.div.appendChild(this.cueDiv);\n\n // Calculate the distance from the reference edge of the viewport to the text\n // position of the cue box. The reference edge will be resolved later when\n // the box orientation styles are applied.\n var textPos = 0;\n switch (cue.positionAlign) {\n case \"start\":\n case \"line-left\":\n textPos = cue.position;\n break;\n case \"center\":\n textPos = cue.position - (cue.size / 2);\n break;\n case \"end\":\n case \"line-right\":\n textPos = cue.position - cue.size;\n break;\n }\n\n // Horizontal box orientation; textPos is the distance from the left edge of the\n // area to the left edge of the box and cue.size is the distance extending to\n // the right from there.\n if (cue.vertical === \"\") {\n this.applyStyles({\n left: this.formatStyle(textPos, \"%\"),\n width: this.formatStyle(cue.size, \"%\")\n });\n // Vertical box orientation; textPos is the distance from the top edge of the\n // area to the top edge of the box and cue.size is the height extending\n // downwards from there.\n } else {\n this.applyStyles({\n top: this.formatStyle(textPos, \"%\"),\n height: this.formatStyle(cue.size, \"%\")\n });\n }\n\n this.move = function(box) {\n this.applyStyles({\n top: this.formatStyle(box.top, \"px\"),\n bottom: this.formatStyle(box.bottom, \"px\"),\n left: this.formatStyle(box.left, \"px\"),\n right: this.formatStyle(box.right, \"px\"),\n height: this.formatStyle(box.height, \"px\"),\n width: this.formatStyle(box.width, \"px\")\n });\n };\n}\nCueStyleBox.prototype = _objCreate(StyleBox.prototype);\nCueStyleBox.prototype.constructor = CueStyleBox;\n\n// Represents the co-ordinates of an Element in a way that we can easily\n// compute things with such as if it overlaps or intersects with another Element.\n// Can initialize it with either a StyleBox or another BoxPosition.\nfunction BoxPosition(obj) {\n // Either a BoxPosition was passed in and we need to copy it, or a StyleBox\n // was passed in and we need to copy the results of 'getBoundingClientRect'\n // as the object returned is readonly. All co-ordinate values are in reference\n // to the viewport origin (top left).\n var lh, height, width, top;\n if (obj.div) {\n height = obj.div.offsetHeight;\n width = obj.div.offsetWidth;\n top = obj.div.offsetTop;\n\n var rects = (rects = obj.div.childNodes) && (rects = rects[0]) &&\n rects.getClientRects && rects.getClientRects();\n obj = obj.div.getBoundingClientRect();\n // In certain cases the outter div will be slightly larger then the sum of\n // the inner div's lines. This could be due to bold text, etc, on some platforms.\n // In this case we should get the average line height and use that. This will\n // result in the desired behaviour.\n lh = rects ? Math.max((rects[0] && rects[0].height) || 0, obj.height / rects.length)\n : 0;\n\n }\n this.left = obj.left;\n this.right = obj.right;\n this.top = obj.top || top;\n this.height = obj.height || height;\n this.bottom = obj.bottom || (top + (obj.height || height));\n this.width = obj.width || width;\n this.lineHeight = lh !== undefined ? lh : obj.lineHeight;\n}\n\n// Move the box along a particular axis. Optionally pass in an amount to move\n// the box. If no amount is passed then the default is the line height of the\n// box.\nBoxPosition.prototype.move = function(axis, toMove) {\n toMove = toMove !== undefined ? toMove : this.lineHeight;\n switch (axis) {\n case \"+x\":\n this.left += toMove;\n this.right += toMove;\n break;\n case \"-x\":\n this.left -= toMove;\n this.right -= toMove;\n break;\n case \"+y\":\n this.top += toMove;\n this.bottom += toMove;\n break;\n case \"-y\":\n this.top -= toMove;\n this.bottom -= toMove;\n break;\n }\n};\n\n// Check if this box overlaps another box, b2.\nBoxPosition.prototype.overlaps = function(b2) {\n return this.left < b2.right &&\n this.right > b2.left &&\n this.top < b2.bottom &&\n this.bottom > b2.top;\n};\n\n// Check if this box overlaps any other boxes in boxes.\nBoxPosition.prototype.overlapsAny = function(boxes) {\n for (var i = 0; i < boxes.length; i++) {\n if (this.overlaps(boxes[i])) {\n return true;\n }\n }\n return false;\n};\n\n// Check if this box is within another box.\nBoxPosition.prototype.within = function(container) {\n return this.top >= container.top &&\n this.bottom <= container.bottom &&\n this.left >= container.left &&\n this.right <= container.right;\n};\n\n// Check if this box is entirely within the container or it is overlapping\n// on the edge opposite of the axis direction passed. For example, if \"+x\" is\n// passed and the box is overlapping on the left edge of the container, then\n// return true.\nBoxPosition.prototype.overlapsOppositeAxis = function(container, axis) {\n switch (axis) {\n case \"+x\":\n return this.left < container.left;\n case \"-x\":\n return this.right > container.right;\n case \"+y\":\n return this.top < container.top;\n case \"-y\":\n return this.bottom > container.bottom;\n }\n};\n\n// Find the percentage of the area that this box is overlapping with another\n// box.\nBoxPosition.prototype.intersectPercentage = function(b2) {\n var x = Math.max(0, Math.min(this.right, b2.right) - Math.max(this.left, b2.left)),\n y = Math.max(0, Math.min(this.bottom, b2.bottom) - Math.max(this.top, b2.top)),\n intersectArea = x * y;\n return intersectArea / (this.height * this.width);\n};\n\n// Convert the positions from this box to CSS compatible positions using\n// the reference container's positions. This has to be done because this\n// box's positions are in reference to the viewport origin, whereas, CSS\n// values are in referecne to their respective edges.\nBoxPosition.prototype.toCSSCompatValues = function(reference) {\n return {\n top: this.top - reference.top,\n bottom: reference.bottom - this.bottom,\n left: this.left - reference.left,\n right: reference.right - this.right,\n height: this.height,\n width: this.width\n };\n};\n\n// Get an object that represents the box's position without anything extra.\n// Can pass a StyleBox, HTMLElement, or another BoxPositon.\nBoxPosition.getSimpleBoxPosition = function(obj) {\n var height = obj.div ? obj.div.offsetHeight : obj.tagName ? obj.offsetHeight : 0;\n var width = obj.div ? obj.div.offsetWidth : obj.tagName ? obj.offsetWidth : 0;\n var top = obj.div ? obj.div.offsetTop : obj.tagName ? obj.offsetTop : 0;\n\n obj = obj.div ? obj.div.getBoundingClientRect() :\n obj.tagName ? obj.getBoundingClientRect() : obj;\n var ret = {\n left: obj.left,\n right: obj.right,\n top: obj.top || top,\n height: obj.height || height,\n bottom: obj.bottom || (top + (obj.height || height)),\n width: obj.width || width\n };\n return ret;\n};\n\n// Move a StyleBox to its specified, or next best, position. The containerBox\n// is the box that contains the StyleBox, such as a div. boxPositions are\n// a list of other boxes that the styleBox can't overlap with.\nfunction moveBoxToLinePosition(window, styleBox, containerBox, boxPositions) {\n\n // Find the best position for a cue box, b, on the video. The axis parameter\n // is a list of axis, the order of which, it will move the box along. For example:\n // Passing [\"+x\", \"-x\"] will move the box first along the x axis in the positive\n // direction. If it doesn't find a good position for it there it will then move\n // it along the x axis in the negative direction.\n function findBestPosition(b, axis) {\n var bestPosition,\n specifiedPosition = new BoxPosition(b),\n percentage = 1; // Highest possible so the first thing we get is better.\n\n for (var i = 0; i < axis.length; i++) {\n while (b.overlapsOppositeAxis(containerBox, axis[i]) ||\n (b.within(containerBox) && b.overlapsAny(boxPositions))) {\n b.move(axis[i]);\n }\n // We found a spot where we aren't overlapping anything. This is our\n // best position.\n if (b.within(containerBox)) {\n return b;\n }\n var p = b.intersectPercentage(containerBox);\n // If we're outside the container box less then we were on our last try\n // then remember this position as the best position.\n if (percentage > p) {\n bestPosition = new BoxPosition(b);\n percentage = p;\n }\n // Reset the box position to the specified position.\n b = new BoxPosition(specifiedPosition);\n }\n return bestPosition || specifiedPosition;\n }\n\n var boxPosition = new BoxPosition(styleBox),\n cue = styleBox.cue,\n linePos = computeLinePos(cue),\n axis = [];\n\n // If we have a line number to align the cue to.\n if (cue.snapToLines) {\n var size;\n switch (cue.vertical) {\n case \"\":\n axis = [ \"+y\", \"-y\" ];\n size = \"height\";\n break;\n case \"rl\":\n axis = [ \"+x\", \"-x\" ];\n size = \"width\";\n break;\n case \"lr\":\n axis = [ \"-x\", \"+x\" ];\n size = \"width\";\n break;\n }\n\n var step = boxPosition.lineHeight,\n position = step * Math.round(linePos),\n maxPosition = containerBox[size] + step,\n initialAxis = axis[0];\n\n // If the specified intial position is greater then the max position then\n // clamp the box to the amount of steps it would take for the box to\n // reach the max position.\n if (Math.abs(position) > maxPosition) {\n position = position < 0 ? -1 : 1;\n position *= Math.ceil(maxPosition / step) * step;\n }\n\n // If computed line position returns negative then line numbers are\n // relative to the bottom of the video instead of the top. Therefore, we\n // need to increase our initial position by the length or width of the\n // video, depending on the writing direction, and reverse our axis directions.\n if (linePos < 0) {\n position += cue.vertical === \"\" ? containerBox.height : containerBox.width;\n axis = axis.reverse();\n }\n\n // Move the box to the specified position. This may not be its best\n // position.\n boxPosition.move(initialAxis, position);\n\n } else {\n // If we have a percentage line value for the cue.\n var calculatedPercentage = (boxPosition.lineHeight / containerBox.height) * 100;\n\n switch (cue.lineAlign) {\n case \"center\":\n linePos -= (calculatedPercentage / 2);\n break;\n case \"end\":\n linePos -= calculatedPercentage;\n break;\n }\n\n // Apply initial line position to the cue box.\n switch (cue.vertical) {\n case \"\":\n styleBox.applyStyles({\n top: styleBox.formatStyle(linePos, \"%\")\n });\n break;\n case \"rl\":\n styleBox.applyStyles({\n left: styleBox.formatStyle(linePos, \"%\")\n });\n break;\n case \"lr\":\n styleBox.applyStyles({\n right: styleBox.formatStyle(linePos, \"%\")\n });\n break;\n }\n\n axis = [ \"+y\", \"-x\", \"+x\", \"-y\" ];\n\n // Get the box position again after we've applied the specified positioning\n // to it.\n boxPosition = new BoxPosition(styleBox);\n }\n\n var bestPosition = findBestPosition(boxPosition, axis);\n styleBox.move(bestPosition.toCSSCompatValues(containerBox));\n}\n\nfunction WebVTT() {\n // Nothing\n}\n\n// Helper to allow strings to be decoded instead of the default binary utf8 data.\nWebVTT.StringDecoder = function() {\n return {\n decode: function(data) {\n if (!data) {\n return \"\";\n }\n if (typeof data !== \"string\") {\n throw new Error(\"Error - expected string data.\");\n }\n return decodeURIComponent(encodeURIComponent(data));\n }\n };\n};\n\nWebVTT.convertCueToDOMTree = function(window, cuetext) {\n if (!window || !cuetext) {\n return null;\n }\n return parseContent(window, cuetext);\n};\n\nvar FONT_SIZE_PERCENT = 0.05;\nvar FONT_STYLE = \"sans-serif\";\nvar CUE_BACKGROUND_PADDING = \"1.5%\";\n\n// Runs the processing model over the cues and regions passed to it.\n// @param overlay A block level element (usually a div) that the computed cues\n// and regions will be placed into.\nWebVTT.processCues = function(window, cues, overlay) {\n if (!window || !cues || !overlay) {\n return null;\n }\n\n // Remove all previous children.\n while (overlay.firstChild) {\n overlay.removeChild(overlay.firstChild);\n }\n\n var paddedOverlay = window.document.createElement(\"div\");\n paddedOverlay.style.position = \"absolute\";\n paddedOverlay.style.left = \"0\";\n paddedOverlay.style.right = \"0\";\n paddedOverlay.style.top = \"0\";\n paddedOverlay.style.bottom = \"0\";\n paddedOverlay.style.margin = CUE_BACKGROUND_PADDING;\n overlay.appendChild(paddedOverlay);\n\n // Determine if we need to compute the display states of the cues. This could\n // be the case if a cue's state has been changed since the last computation or\n // if it has not been computed yet.\n function shouldCompute(cues) {\n for (var i = 0; i < cues.length; i++) {\n if (cues[i].hasBeenReset || !cues[i].displayState) {\n return true;\n }\n }\n return false;\n }\n\n // We don't need to recompute the cues' display states. Just reuse them.\n if (!shouldCompute(cues)) {\n for (var i = 0; i < cues.length; i++) {\n paddedOverlay.appendChild(cues[i].displayState);\n }\n return;\n }\n\n var boxPositions = [],\n containerBox = BoxPosition.getSimpleBoxPosition(paddedOverlay),\n fontSize = Math.round(containerBox.height * FONT_SIZE_PERCENT * 100) / 100;\n var styleOptions = {\n font: fontSize + \"px \" + FONT_STYLE\n };\n\n (function() {\n var styleBox, cue;\n\n for (var i = 0; i < cues.length; i++) {\n cue = cues[i];\n\n // Compute the intial position and styles of the cue div.\n styleBox = new CueStyleBox(window, cue, styleOptions);\n paddedOverlay.appendChild(styleBox.div);\n\n // Move the cue div to it's correct line position.\n moveBoxToLinePosition(window, styleBox, containerBox, boxPositions);\n\n // Remember the computed div so that we don't have to recompute it later\n // if we don't have too.\n cue.displayState = styleBox.div;\n\n boxPositions.push(BoxPosition.getSimpleBoxPosition(styleBox));\n }\n })();\n};\n\nWebVTT.Parser = function(window, vttjs, decoder) {\n if (!decoder) {\n decoder = vttjs;\n vttjs = {};\n }\n if (!vttjs) {\n vttjs = {};\n }\n\n this.window = window;\n this.vttjs = vttjs;\n this.state = \"INITIAL\";\n this.buffer = \"\";\n this.decoder = decoder || new TextDecoder(\"utf8\");\n this.regionList = [];\n};\n\nWebVTT.Parser.prototype = {\n // If the error is a ParsingError then report it to the consumer if\n // possible. If it's not a ParsingError then throw it like normal.\n reportOrThrowError: function(e) {\n if (e instanceof ParsingError) {\n this.onparsingerror && this.onparsingerror(e);\n } else {\n throw e;\n }\n },\n parse: function (data) {\n var self = this;\n\n // If there is no data then we won't decode it, but will just try to parse\n // whatever is in buffer already. This may occur in circumstances, for\n // example when flush() is called.\n if (data) {\n // Try to decode the data that we received.\n self.buffer += self.decoder.decode(data, {stream: true});\n }\n\n function collectNextLine() {\n var buffer = self.buffer;\n var pos = 0;\n while (pos < buffer.length && buffer[pos] !== '\\r' && buffer[pos] !== '\\n') {\n ++pos;\n }\n var line = buffer.substr(0, pos);\n // Advance the buffer early in case we fail below.\n if (buffer[pos] === '\\r') {\n ++pos;\n }\n if (buffer[pos] === '\\n') {\n ++pos;\n }\n self.buffer = buffer.substr(pos);\n return line;\n }\n\n // 3.4 WebVTT region and WebVTT region settings syntax\n function parseRegion(input) {\n var settings = new Settings();\n\n parseOptions(input, function (k, v) {\n switch (k) {\n case \"id\":\n settings.set(k, v);\n break;\n case \"width\":\n settings.percent(k, v);\n break;\n case \"lines\":\n settings.integer(k, v);\n break;\n case \"regionanchor\":\n case \"viewportanchor\":\n var xy = v.split(',');\n if (xy.length !== 2) {\n break;\n }\n // We have to make sure both x and y parse, so use a temporary\n // settings object here.\n var anchor = new Settings();\n anchor.percent(\"x\", xy[0]);\n anchor.percent(\"y\", xy[1]);\n if (!anchor.has(\"x\") || !anchor.has(\"y\")) {\n break;\n }\n settings.set(k + \"X\", anchor.get(\"x\"));\n settings.set(k + \"Y\", anchor.get(\"y\"));\n break;\n case \"scroll\":\n settings.alt(k, v, [\"up\"]);\n break;\n }\n }, /=/, /\\s/);\n\n // Create the region, using default values for any values that were not\n // specified.\n if (settings.has(\"id\")) {\n var region = new (self.vttjs.VTTRegion || self.window.VTTRegion)();\n region.width = settings.get(\"width\", 100);\n region.lines = settings.get(\"lines\", 3);\n region.regionAnchorX = settings.get(\"regionanchorX\", 0);\n region.regionAnchorY = settings.get(\"regionanchorY\", 100);\n region.viewportAnchorX = settings.get(\"viewportanchorX\", 0);\n region.viewportAnchorY = settings.get(\"viewportanchorY\", 100);\n region.scroll = settings.get(\"scroll\", \"\");\n // Register the region.\n self.onregion && self.onregion(region);\n // Remember the VTTRegion for later in case we parse any VTTCues that\n // reference it.\n self.regionList.push({\n id: settings.get(\"id\"),\n region: region\n });\n }\n }\n\n // draft-pantos-http-live-streaming-20\n // https://tools.ietf.org/html/draft-pantos-http-live-streaming-20#section-3.5\n // 3.5 WebVTT\n function parseTimestampMap(input) {\n var settings = new Settings();\n\n parseOptions(input, function(k, v) {\n switch(k) {\n case \"MPEGT\":\n settings.integer(k + 'S', v);\n break;\n case \"LOCA\":\n settings.set(k + 'L', parseTimeStamp(v));\n break;\n }\n }, /[^\\d]:/, /,/);\n\n self.ontimestampmap && self.ontimestampmap({\n \"MPEGTS\": settings.get(\"MPEGTS\"),\n \"LOCAL\": settings.get(\"LOCAL\")\n });\n }\n\n // 3.2 WebVTT metadata header syntax\n function parseHeader(input) {\n if (input.match(/X-TIMESTAMP-MAP/)) {\n // This line contains HLS X-TIMESTAMP-MAP metadata\n parseOptions(input, function(k, v) {\n switch(k) {\n case \"X-TIMESTAMP-MAP\":\n parseTimestampMap(v);\n break;\n }\n }, /=/);\n } else {\n parseOptions(input, function (k, v) {\n switch (k) {\n case \"Region\":\n // 3.3 WebVTT region metadata header syntax\n parseRegion(v);\n break;\n }\n }, /:/);\n }\n\n }\n\n // 5.1 WebVTT file parsing.\n try {\n var line;\n if (self.state === \"INITIAL\") {\n // We can't start parsing until we have the first line.\n if (!/\\r\\n|\\n/.test(self.buffer)) {\n return this;\n }\n\n line = collectNextLine();\n\n var m = line.match(/^WEBVTT([ \\t].*)?$/);\n if (!m || !m[0]) {\n throw new ParsingError(ParsingError.Errors.BadSignature);\n }\n\n self.state = \"HEADER\";\n }\n\n var alreadyCollectedLine = false;\n while (self.buffer) {\n // We can't parse a line until we have the full line.\n if (!/\\r\\n|\\n/.test(self.buffer)) {\n return this;\n }\n\n if (!alreadyCollectedLine) {\n line = collectNextLine();\n } else {\n alreadyCollectedLine = false;\n }\n\n switch (self.state) {\n case \"HEADER\":\n // 13-18 - Allow a header (metadata) under the WEBVTT line.\n if (/:/.test(line)) {\n parseHeader(line);\n } else if (!line) {\n // An empty line terminates the header and starts the body (cues).\n self.state = \"ID\";\n }\n continue;\n case \"NOTE\":\n // Ignore NOTE blocks.\n if (!line) {\n self.state = \"ID\";\n }\n continue;\n case \"ID\":\n // Check for the start of NOTE blocks.\n if (/^NOTE($|[ \\t])/.test(line)) {\n self.state = \"NOTE\";\n break;\n }\n // 19-29 - Allow any number of line terminators, then initialize new cue values.\n if (!line) {\n continue;\n }\n self.cue = new (self.vttjs.VTTCue || self.window.VTTCue)(0, 0, \"\");\n // Safari still uses the old middle value and won't accept center\n try {\n self.cue.align = \"center\";\n } catch (e) {\n self.cue.align = \"middle\";\n }\n self.state = \"CUE\";\n // 30-39 - Check if self line contains an optional identifier or timing data.\n if (line.indexOf(\"-->\") === -1) {\n self.cue.id = line;\n continue;\n }\n // Process line as start of a cue.\n /*falls through*/\n case \"CUE\":\n // 40 - Collect cue timings and settings.\n try {\n parseCue(line, self.cue, self.regionList);\n } catch (e) {\n self.reportOrThrowError(e);\n // In case of an error ignore rest of the cue.\n self.cue = null;\n self.state = \"BADCUE\";\n continue;\n }\n self.state = \"CUETEXT\";\n continue;\n case \"CUETEXT\":\n var hasSubstring = line.indexOf(\"-->\") !== -1;\n // 34 - If we have an empty line then report the cue.\n // 35 - If we have the special substring '-->' then report the cue,\n // but do not collect the line as we need to process the current\n // one as a new cue.\n if (!line || hasSubstring && (alreadyCollectedLine = true)) {\n // We are done parsing self cue.\n self.oncue && self.oncue(self.cue);\n self.cue = null;\n self.state = \"ID\";\n continue;\n }\n if (self.cue.text) {\n self.cue.text += \"\\n\";\n }\n self.cue.text += line.replace(/\\u2028/g, '\\n').replace(/u2029/g, '\\n');\n continue;\n case \"BADCUE\": // BADCUE\n // 54-62 - Collect and discard the remaining cue.\n if (!line) {\n self.state = \"ID\";\n }\n continue;\n }\n }\n } catch (e) {\n self.reportOrThrowError(e);\n\n // If we are currently parsing a cue, report what we have.\n if (self.state === \"CUETEXT\" && self.cue && self.oncue) {\n self.oncue(self.cue);\n }\n self.cue = null;\n // Enter BADWEBVTT state if header was not parsed correctly otherwise\n // another exception occurred so enter BADCUE state.\n self.state = self.state === \"INITIAL\" ? \"BADWEBVTT\" : \"BADCUE\";\n }\n return this;\n },\n flush: function () {\n var self = this;\n try {\n // Finish decoding the stream.\n self.buffer += self.decoder.decode();\n // Synthesize the end of the current cue or region.\n if (self.cue || self.state === \"HEADER\") {\n self.buffer += \"\\n\\n\";\n self.parse();\n }\n // If we've flushed, parsed, and we're still on the INITIAL state then\n // that means we don't have enough of the stream to parse the first\n // line.\n if (self.state === \"INITIAL\") {\n throw new ParsingError(ParsingError.Errors.BadSignature);\n }\n } catch(e) {\n self.reportOrThrowError(e);\n }\n self.onflush && self.onflush();\n return this;\n }\n};\n\nmodule.exports = WebVTT;\n","/**\n * Copyright 2013 vtt.js Contributors\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\nvar autoKeyword = \"auto\";\nvar directionSetting = {\n \"\": 1,\n \"lr\": 1,\n \"rl\": 1\n};\nvar alignSetting = {\n \"start\": 1,\n \"center\": 1,\n \"end\": 1,\n \"left\": 1,\n \"right\": 1,\n \"auto\": 1,\n \"line-left\": 1,\n \"line-right\": 1\n};\n\nfunction findDirectionSetting(value) {\n if (typeof value !== \"string\") {\n return false;\n }\n var dir = directionSetting[value.toLowerCase()];\n return dir ? value.toLowerCase() : false;\n}\n\nfunction findAlignSetting(value) {\n if (typeof value !== \"string\") {\n return false;\n }\n var align = alignSetting[value.toLowerCase()];\n return align ? value.toLowerCase() : false;\n}\n\nfunction VTTCue(startTime, endTime, text) {\n /**\n * Shim implementation specific properties. These properties are not in\n * the spec.\n */\n\n // Lets us know when the VTTCue's data has changed in such a way that we need\n // to recompute its display state. This lets us compute its display state\n // lazily.\n this.hasBeenReset = false;\n\n /**\n * VTTCue and TextTrackCue properties\n * http://dev.w3.org/html5/webvtt/#vttcue-interface\n */\n\n var _id = \"\";\n var _pauseOnExit = false;\n var _startTime = startTime;\n var _endTime = endTime;\n var _text = text;\n var _region = null;\n var _vertical = \"\";\n var _snapToLines = true;\n var _line = \"auto\";\n var _lineAlign = \"start\";\n var _position = \"auto\";\n var _positionAlign = \"auto\";\n var _size = 100;\n var _align = \"center\";\n\n Object.defineProperties(this, {\n \"id\": {\n enumerable: true,\n get: function() {\n return _id;\n },\n set: function(value) {\n _id = \"\" + value;\n }\n },\n\n \"pauseOnExit\": {\n enumerable: true,\n get: function() {\n return _pauseOnExit;\n },\n set: function(value) {\n _pauseOnExit = !!value;\n }\n },\n\n \"startTime\": {\n enumerable: true,\n get: function() {\n return _startTime;\n },\n set: function(value) {\n if (typeof value !== \"number\") {\n throw new TypeError(\"Start time must be set to a number.\");\n }\n _startTime = value;\n this.hasBeenReset = true;\n }\n },\n\n \"endTime\": {\n enumerable: true,\n get: function() {\n return _endTime;\n },\n set: function(value) {\n if (typeof value !== \"number\") {\n throw new TypeError(\"End time must be set to a number.\");\n }\n _endTime = value;\n this.hasBeenReset = true;\n }\n },\n\n \"text\": {\n enumerable: true,\n get: function() {\n return _text;\n },\n set: function(value) {\n _text = \"\" + value;\n this.hasBeenReset = true;\n }\n },\n\n \"region\": {\n enumerable: true,\n get: function() {\n return _region;\n },\n set: function(value) {\n _region = value;\n this.hasBeenReset = true;\n }\n },\n\n \"vertical\": {\n enumerable: true,\n get: function() {\n return _vertical;\n },\n set: function(value) {\n var setting = findDirectionSetting(value);\n // Have to check for false because the setting an be an empty string.\n if (setting === false) {\n throw new SyntaxError(\"Vertical: an invalid or illegal direction string was specified.\");\n }\n _vertical = setting;\n this.hasBeenReset = true;\n }\n },\n\n \"snapToLines\": {\n enumerable: true,\n get: function() {\n return _snapToLines;\n },\n set: function(value) {\n _snapToLines = !!value;\n this.hasBeenReset = true;\n }\n },\n\n \"line\": {\n enumerable: true,\n get: function() {\n return _line;\n },\n set: function(value) {\n if (typeof value !== \"number\" && value !== autoKeyword) {\n throw new SyntaxError(\"Line: an invalid number or illegal string was specified.\");\n }\n _line = value;\n this.hasBeenReset = true;\n }\n },\n\n \"lineAlign\": {\n enumerable: true,\n get: function() {\n return _lineAlign;\n },\n set: function(value) {\n var setting = findAlignSetting(value);\n if (!setting) {\n console.warn(\"lineAlign: an invalid or illegal string was specified.\");\n } else {\n _lineAlign = setting;\n this.hasBeenReset = true;\n }\n }\n },\n\n \"position\": {\n enumerable: true,\n get: function() {\n return _position;\n },\n set: function(value) {\n if (value < 0 || value > 100) {\n throw new Error(\"Position must be between 0 and 100.\");\n }\n _position = value;\n this.hasBeenReset = true;\n }\n },\n\n \"positionAlign\": {\n enumerable: true,\n get: function() {\n return _positionAlign;\n },\n set: function(value) {\n var setting = findAlignSetting(value);\n if (!setting) {\n console.warn(\"positionAlign: an invalid or illegal string was specified.\");\n } else {\n _positionAlign = setting;\n this.hasBeenReset = true;\n }\n }\n },\n\n \"size\": {\n enumerable: true,\n get: function() {\n return _size;\n },\n set: function(value) {\n if (value < 0 || value > 100) {\n throw new Error(\"Size must be between 0 and 100.\");\n }\n _size = value;\n this.hasBeenReset = true;\n }\n },\n\n \"align\": {\n enumerable: true,\n get: function() {\n return _align;\n },\n set: function(value) {\n var setting = findAlignSetting(value);\n if (!setting) {\n throw new SyntaxError(\"align: an invalid or illegal alignment string was specified.\");\n }\n _align = setting;\n this.hasBeenReset = true;\n }\n }\n });\n\n /**\n * Other spec defined properties\n */\n\n // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#text-track-cue-display-state\n this.displayState = undefined;\n}\n\n/**\n * VTTCue methods\n */\n\nVTTCue.prototype.getCueAsHTML = function() {\n // Assume WebVTT.convertCueToDOMTree is on the global.\n return WebVTT.convertCueToDOMTree(window, this.text);\n};\n\nmodule.exports = VTTCue;\n","/**\n * Copyright 2013 vtt.js Contributors\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\nvar scrollSetting = {\n \"\": true,\n \"up\": true\n};\n\nfunction findScrollSetting(value) {\n if (typeof value !== \"string\") {\n return false;\n }\n var scroll = scrollSetting[value.toLowerCase()];\n return scroll ? value.toLowerCase() : false;\n}\n\nfunction isValidPercentValue(value) {\n return typeof value === \"number\" && (value >= 0 && value <= 100);\n}\n\n// VTTRegion shim http://dev.w3.org/html5/webvtt/#vttregion-interface\nfunction VTTRegion() {\n var _width = 100;\n var _lines = 3;\n var _regionAnchorX = 0;\n var _regionAnchorY = 100;\n var _viewportAnchorX = 0;\n var _viewportAnchorY = 100;\n var _scroll = \"\";\n\n Object.defineProperties(this, {\n \"width\": {\n enumerable: true,\n get: function() {\n return _width;\n },\n set: function(value) {\n if (!isValidPercentValue(value)) {\n throw new Error(\"Width must be between 0 and 100.\");\n }\n _width = value;\n }\n },\n \"lines\": {\n enumerable: true,\n get: function() {\n return _lines;\n },\n set: function(value) {\n if (typeof value !== \"number\") {\n throw new TypeError(\"Lines must be set to a number.\");\n }\n _lines = value;\n }\n },\n \"regionAnchorY\": {\n enumerable: true,\n get: function() {\n return _regionAnchorY;\n },\n set: function(value) {\n if (!isValidPercentValue(value)) {\n throw new Error(\"RegionAnchorX must be between 0 and 100.\");\n }\n _regionAnchorY = value;\n }\n },\n \"regionAnchorX\": {\n enumerable: true,\n get: function() {\n return _regionAnchorX;\n },\n set: function(value) {\n if(!isValidPercentValue(value)) {\n throw new Error(\"RegionAnchorY must be between 0 and 100.\");\n }\n _regionAnchorX = value;\n }\n },\n \"viewportAnchorY\": {\n enumerable: true,\n get: function() {\n return _viewportAnchorY;\n },\n set: function(value) {\n if (!isValidPercentValue(value)) {\n throw new Error(\"ViewportAnchorY must be between 0 and 100.\");\n }\n _viewportAnchorY = value;\n }\n },\n \"viewportAnchorX\": {\n enumerable: true,\n get: function() {\n return _viewportAnchorX;\n },\n set: function(value) {\n if (!isValidPercentValue(value)) {\n throw new Error(\"ViewportAnchorX must be between 0 and 100.\");\n }\n _viewportAnchorX = value;\n }\n },\n \"scroll\": {\n enumerable: true,\n get: function() {\n return _scroll;\n },\n set: function(value) {\n var setting = findScrollSetting(value);\n // Have to check for false as an empty string is a legal value.\n if (setting === false) {\n console.warn(\"Scroll: an invalid or illegal string was specified.\");\n } else {\n _scroll = setting;\n }\n }\n }\n });\n}\n\nmodule.exports = VTTRegion;\n","/**\n * Copyright 2013 vtt.js Contributors\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// Default exports for Node. Export the extended versions of VTTCue and\n// VTTRegion in Node since we likely want the capability to convert back and\n// forth between JSON. If we don't then it's not that big of a deal since we're\n// off browser.\n\nvar window = require('global/window');\n\nvar vttjs = module.exports = {\n WebVTT: require(\"./vtt.js\"),\n VTTCue: require(\"./vttcue.js\"),\n VTTRegion: require(\"./vttregion.js\")\n};\n\nwindow.vttjs = vttjs;\nwindow.WebVTT = vttjs.WebVTT;\n\nvar cueShim = vttjs.VTTCue;\nvar regionShim = vttjs.VTTRegion;\nvar nativeVTTCue = window.VTTCue;\nvar nativeVTTRegion = window.VTTRegion;\n\nvttjs.shim = function() {\n window.VTTCue = cueShim;\n window.VTTRegion = regionShim;\n};\n\nvttjs.restore = function() {\n window.VTTCue = nativeVTTCue;\n window.VTTRegion = nativeVTTRegion;\n};\n\nif (!window.VTTCue) {\n vttjs.shim();\n}\n","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","import window from 'global/window';\nvar DEFAULT_LOCATION = 'https://example.com';\n\nvar resolveUrl = function resolveUrl(baseUrl, relativeUrl) {\n // return early if we don't need to resolve\n if (/^[a-z]+:/i.test(relativeUrl)) {\n return relativeUrl;\n } // if baseUrl is a data URI, ignore it and resolve everything relative to window.location\n\n\n if (/^data:/.test(baseUrl)) {\n baseUrl = window.location && window.location.href || '';\n }\n\n var protocolLess = /^\\/\\//.test(baseUrl); // remove location if window.location isn't available (i.e. we're in node)\n // and if baseUrl isn't an absolute url\n\n var removeLocation = !window.location && !/\\/\\//i.test(baseUrl); // if the base URL is relative then combine with the current location\n\n baseUrl = new window.URL(baseUrl, window.location || DEFAULT_LOCATION);\n var newUrl = new URL(relativeUrl, baseUrl); // if we're a protocol-less url, remove the protocol\n // and if we're location-less, remove the location\n // otherwise, return the url unmodified\n\n if (removeLocation) {\n return newUrl.href.slice(DEFAULT_LOCATION.length);\n } else if (protocolLess) {\n return newUrl.href.slice(newUrl.protocol.length);\n }\n\n return newUrl.href;\n};\n\nexport default resolveUrl;","/**\n * @file stream.js\n */\n\n/**\n * A lightweight readable stream implemention that handles event dispatching.\n *\n * @class Stream\n */\nvar Stream = /*#__PURE__*/function () {\n function Stream() {\n this.listeners = {};\n }\n /**\n * Add a listener for a specified event type.\n *\n * @param {string} type the event name\n * @param {Function} listener the callback to be invoked when an event of\n * the specified type occurs\n */\n\n\n var _proto = Stream.prototype;\n\n _proto.on = function on(type, listener) {\n if (!this.listeners[type]) {\n this.listeners[type] = [];\n }\n\n this.listeners[type].push(listener);\n }\n /**\n * Remove a listener for a specified event type.\n *\n * @param {string} type the event name\n * @param {Function} listener a function previously registered for this\n * type of event through `on`\n * @return {boolean} if we could turn it off or not\n */\n ;\n\n _proto.off = function off(type, listener) {\n if (!this.listeners[type]) {\n return false;\n }\n\n var index = this.listeners[type].indexOf(listener); // TODO: which is better?\n // In Video.js we slice listener functions\n // on trigger so that it does not mess up the order\n // while we loop through.\n //\n // Here we slice on off so that the loop in trigger\n // can continue using it's old reference to loop without\n // messing up the order.\n\n this.listeners[type] = this.listeners[type].slice(0);\n this.listeners[type].splice(index, 1);\n return index > -1;\n }\n /**\n * Trigger an event of the specified type on this stream. Any additional\n * arguments to this function are passed as parameters to event listeners.\n *\n * @param {string} type the event name\n */\n ;\n\n _proto.trigger = function trigger(type) {\n var callbacks = this.listeners[type];\n\n if (!callbacks) {\n return;\n } // Slicing the arguments on every invocation of this method\n // can add a significant amount of overhead. Avoid the\n // intermediate object creation for the common case of a\n // single callback argument\n\n\n if (arguments.length === 2) {\n var length = callbacks.length;\n\n for (var i = 0; i < length; ++i) {\n callbacks[i].call(this, arguments[1]);\n }\n } else {\n var args = Array.prototype.slice.call(arguments, 1);\n var _length = callbacks.length;\n\n for (var _i = 0; _i < _length; ++_i) {\n callbacks[_i].apply(this, args);\n }\n }\n }\n /**\n * Destroys the stream and cleans up.\n */\n ;\n\n _proto.dispose = function dispose() {\n this.listeners = {};\n }\n /**\n * Forwards all `data` events on this stream to the destination stream. The\n * destination stream should provide a method `push` to receive the data\n * events as they arrive.\n *\n * @param {Stream} destination the stream that will receive all `data` events\n * @see http://nodejs.org/api/stream.html#stream_readable_pipe_destination_options\n */\n ;\n\n _proto.pipe = function pipe(destination) {\n this.on('data', function (data) {\n destination.push(data);\n });\n };\n\n return Stream;\n}();\n\nexport { Stream as default };","import window from 'global/window';\n\nvar atob = function atob(s) {\n return window.atob ? window.atob(s) : Buffer.from(s, 'base64').toString('binary');\n};\n\nexport default function decodeB64ToUint8Array(b64Text) {\n var decodedString = atob(b64Text);\n var array = new Uint8Array(decodedString.length);\n\n for (var i = 0; i < decodedString.length; i++) {\n array[i] = decodedString.charCodeAt(i);\n }\n\n return array;\n}","/*! @name m3u8-parser @version 7.2.0 @license Apache-2.0 */\nimport Stream from '@videojs/vhs-utils/es/stream.js';\nimport _extends from '@babel/runtime/helpers/extends';\nimport decodeB64ToUint8Array from '@videojs/vhs-utils/es/decode-b64-to-uint8-array.js';\n\n/**\n * @file m3u8/line-stream.js\n */\n/**\n * A stream that buffers string input and generates a `data` event for each\n * line.\n *\n * @class LineStream\n * @extends Stream\n */\n\nclass LineStream extends Stream {\n constructor() {\n super();\n this.buffer = '';\n }\n /**\n * Add new data to be parsed.\n *\n * @param {string} data the text to process\n */\n\n\n push(data) {\n let nextNewline;\n this.buffer += data;\n nextNewline = this.buffer.indexOf('\\n');\n\n for (; nextNewline > -1; nextNewline = this.buffer.indexOf('\\n')) {\n this.trigger('data', this.buffer.substring(0, nextNewline));\n this.buffer = this.buffer.substring(nextNewline + 1);\n }\n }\n\n}\n\nconst TAB = String.fromCharCode(0x09);\n\nconst parseByterange = function (byterangeString) {\n // optionally match and capture 0+ digits before `@`\n // optionally match and capture 0+ digits after `@`\n const match = /([0-9.]*)?@?([0-9.]*)?/.exec(byterangeString || '');\n const result = {};\n\n if (match[1]) {\n result.length = parseInt(match[1], 10);\n }\n\n if (match[2]) {\n result.offset = parseInt(match[2], 10);\n }\n\n return result;\n};\n/**\n * \"forgiving\" attribute list psuedo-grammar:\n * attributes -> keyvalue (',' keyvalue)*\n * keyvalue -> key '=' value\n * key -> [^=]*\n * value -> '\"' [^\"]* '\"' | [^,]*\n */\n\n\nconst attributeSeparator = function () {\n const key = '[^=]*';\n const value = '\"[^\"]*\"|[^,]*';\n const keyvalue = '(?:' + key + ')=(?:' + value + ')';\n return new RegExp('(?:^|,)(' + keyvalue + ')');\n};\n/**\n * Parse attributes from a line given the separator\n *\n * @param {string} attributes the attribute line to parse\n */\n\n\nconst parseAttributes = function (attributes) {\n const result = {};\n\n if (!attributes) {\n return result;\n } // split the string using attributes as the separator\n\n\n const attrs = attributes.split(attributeSeparator());\n let i = attrs.length;\n let attr;\n\n while (i--) {\n // filter out unmatched portions of the string\n if (attrs[i] === '') {\n continue;\n } // split the key and value\n\n\n attr = /([^=]*)=(.*)/.exec(attrs[i]).slice(1); // trim whitespace and remove optional quotes around the value\n\n attr[0] = attr[0].replace(/^\\s+|\\s+$/g, '');\n attr[1] = attr[1].replace(/^\\s+|\\s+$/g, '');\n attr[1] = attr[1].replace(/^['\"](.*)['\"]$/g, '$1');\n result[attr[0]] = attr[1];\n }\n\n return result;\n};\n/**\n * Converts a string into a resolution object\n *\n * @param {string} resolution a string such as 3840x2160\n *\n * @return {Object} An object representing the resolution\n *\n */\n\n\nconst parseResolution = resolution => {\n const split = resolution.split('x');\n const result = {};\n\n if (split[0]) {\n result.width = parseInt(split[0], 10);\n }\n\n if (split[1]) {\n result.height = parseInt(split[1], 10);\n }\n\n return result;\n};\n/**\n * A line-level M3U8 parser event stream. It expects to receive input one\n * line at a time and performs a context-free parse of its contents. A stream\n * interpretation of a manifest can be useful if the manifest is expected to\n * be too large to fit comfortably into memory or the entirety of the input\n * is not immediately available. Otherwise, it's probably much easier to work\n * with a regular `Parser` object.\n *\n * Produces `data` events with an object that captures the parser's\n * interpretation of the input. That object has a property `tag` that is one\n * of `uri`, `comment`, or `tag`. URIs only have a single additional\n * property, `line`, which captures the entirety of the input without\n * interpretation. Comments similarly have a single additional property\n * `text` which is the input without the leading `#`.\n *\n * Tags always have a property `tagType` which is the lower-cased version of\n * the M3U8 directive without the `#EXT` or `#EXT-X-` prefix. For instance,\n * `#EXT-X-MEDIA-SEQUENCE` becomes `media-sequence` when parsed. Unrecognized\n * tags are given the tag type `unknown` and a single additional property\n * `data` with the remainder of the input.\n *\n * @class ParseStream\n * @extends Stream\n */\n\n\nclass ParseStream extends Stream {\n constructor() {\n super();\n this.customParsers = [];\n this.tagMappers = [];\n }\n /**\n * Parses an additional line of input.\n *\n * @param {string} line a single line of an M3U8 file to parse\n */\n\n\n push(line) {\n let match;\n let event; // strip whitespace\n\n line = line.trim();\n\n if (line.length === 0) {\n // ignore empty lines\n return;\n } // URIs\n\n\n if (line[0] !== '#') {\n this.trigger('data', {\n type: 'uri',\n uri: line\n });\n return;\n } // map tags\n\n\n const newLines = this.tagMappers.reduce((acc, mapper) => {\n const mappedLine = mapper(line); // skip if unchanged\n\n if (mappedLine === line) {\n return acc;\n }\n\n return acc.concat([mappedLine]);\n }, [line]);\n newLines.forEach(newLine => {\n for (let i = 0; i < this.customParsers.length; i++) {\n if (this.customParsers[i].call(this, newLine)) {\n return;\n }\n } // Comments\n\n\n if (newLine.indexOf('#EXT') !== 0) {\n this.trigger('data', {\n type: 'comment',\n text: newLine.slice(1)\n });\n return;\n } // strip off any carriage returns here so the regex matching\n // doesn't have to account for them.\n\n\n newLine = newLine.replace('\\r', ''); // Tags\n\n match = /^#EXTM3U/.exec(newLine);\n\n if (match) {\n this.trigger('data', {\n type: 'tag',\n tagType: 'm3u'\n });\n return;\n }\n\n match = /^#EXTINF:([0-9\\.]*)?,?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'inf'\n };\n\n if (match[1]) {\n event.duration = parseFloat(match[1]);\n }\n\n if (match[2]) {\n event.title = match[2];\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-TARGETDURATION:([0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'targetduration'\n };\n\n if (match[1]) {\n event.duration = parseInt(match[1], 10);\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-VERSION:([0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'version'\n };\n\n if (match[1]) {\n event.version = parseInt(match[1], 10);\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-MEDIA-SEQUENCE:(\\-?[0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'media-sequence'\n };\n\n if (match[1]) {\n event.number = parseInt(match[1], 10);\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-DISCONTINUITY-SEQUENCE:(\\-?[0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'discontinuity-sequence'\n };\n\n if (match[1]) {\n event.number = parseInt(match[1], 10);\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-PLAYLIST-TYPE:(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'playlist-type'\n };\n\n if (match[1]) {\n event.playlistType = match[1];\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-BYTERANGE:(.*)?$/.exec(newLine);\n\n if (match) {\n event = _extends(parseByterange(match[1]), {\n type: 'tag',\n tagType: 'byterange'\n });\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-ALLOW-CACHE:(YES|NO)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'allow-cache'\n };\n\n if (match[1]) {\n event.allowed = !/NO/.test(match[1]);\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-MAP:(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'map'\n };\n\n if (match[1]) {\n const attributes = parseAttributes(match[1]);\n\n if (attributes.URI) {\n event.uri = attributes.URI;\n }\n\n if (attributes.BYTERANGE) {\n event.byterange = parseByterange(attributes.BYTERANGE);\n }\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-STREAM-INF:(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'stream-inf'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]);\n\n if (event.attributes.RESOLUTION) {\n event.attributes.RESOLUTION = parseResolution(event.attributes.RESOLUTION);\n }\n\n if (event.attributes.BANDWIDTH) {\n event.attributes.BANDWIDTH = parseInt(event.attributes.BANDWIDTH, 10);\n }\n\n if (event.attributes['FRAME-RATE']) {\n event.attributes['FRAME-RATE'] = parseFloat(event.attributes['FRAME-RATE']);\n }\n\n if (event.attributes['PROGRAM-ID']) {\n event.attributes['PROGRAM-ID'] = parseInt(event.attributes['PROGRAM-ID'], 10);\n }\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-MEDIA:(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'media'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]);\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-ENDLIST/.exec(newLine);\n\n if (match) {\n this.trigger('data', {\n type: 'tag',\n tagType: 'endlist'\n });\n return;\n }\n\n match = /^#EXT-X-DISCONTINUITY/.exec(newLine);\n\n if (match) {\n this.trigger('data', {\n type: 'tag',\n tagType: 'discontinuity'\n });\n return;\n }\n\n match = /^#EXT-X-PROGRAM-DATE-TIME:(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'program-date-time'\n };\n\n if (match[1]) {\n event.dateTimeString = match[1];\n event.dateTimeObject = new Date(match[1]);\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-KEY:(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'key'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]); // parse the IV string into a Uint32Array\n\n if (event.attributes.IV) {\n if (event.attributes.IV.substring(0, 2).toLowerCase() === '0x') {\n event.attributes.IV = event.attributes.IV.substring(2);\n }\n\n event.attributes.IV = event.attributes.IV.match(/.{8}/g);\n event.attributes.IV[0] = parseInt(event.attributes.IV[0], 16);\n event.attributes.IV[1] = parseInt(event.attributes.IV[1], 16);\n event.attributes.IV[2] = parseInt(event.attributes.IV[2], 16);\n event.attributes.IV[3] = parseInt(event.attributes.IV[3], 16);\n event.attributes.IV = new Uint32Array(event.attributes.IV);\n }\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-START:(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'start'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]);\n event.attributes['TIME-OFFSET'] = parseFloat(event.attributes['TIME-OFFSET']);\n event.attributes.PRECISE = /YES/.test(event.attributes.PRECISE);\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-CUE-OUT-CONT:(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'cue-out-cont'\n };\n\n if (match[1]) {\n event.data = match[1];\n } else {\n event.data = '';\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-CUE-OUT:(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'cue-out'\n };\n\n if (match[1]) {\n event.data = match[1];\n } else {\n event.data = '';\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-CUE-IN:?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'cue-in'\n };\n\n if (match[1]) {\n event.data = match[1];\n } else {\n event.data = '';\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-SKIP:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'skip'\n };\n event.attributes = parseAttributes(match[1]);\n\n if (event.attributes.hasOwnProperty('SKIPPED-SEGMENTS')) {\n event.attributes['SKIPPED-SEGMENTS'] = parseInt(event.attributes['SKIPPED-SEGMENTS'], 10);\n }\n\n if (event.attributes.hasOwnProperty('RECENTLY-REMOVED-DATERANGES')) {\n event.attributes['RECENTLY-REMOVED-DATERANGES'] = event.attributes['RECENTLY-REMOVED-DATERANGES'].split(TAB);\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-PART:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'part'\n };\n event.attributes = parseAttributes(match[1]);\n ['DURATION'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseFloat(event.attributes[key]);\n }\n });\n ['INDEPENDENT', 'GAP'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = /YES/.test(event.attributes[key]);\n }\n });\n\n if (event.attributes.hasOwnProperty('BYTERANGE')) {\n event.attributes.byterange = parseByterange(event.attributes.BYTERANGE);\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-SERVER-CONTROL:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'server-control'\n };\n event.attributes = parseAttributes(match[1]);\n ['CAN-SKIP-UNTIL', 'PART-HOLD-BACK', 'HOLD-BACK'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseFloat(event.attributes[key]);\n }\n });\n ['CAN-SKIP-DATERANGES', 'CAN-BLOCK-RELOAD'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = /YES/.test(event.attributes[key]);\n }\n });\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-PART-INF:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'part-inf'\n };\n event.attributes = parseAttributes(match[1]);\n ['PART-TARGET'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseFloat(event.attributes[key]);\n }\n });\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-PRELOAD-HINT:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'preload-hint'\n };\n event.attributes = parseAttributes(match[1]);\n ['BYTERANGE-START', 'BYTERANGE-LENGTH'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseInt(event.attributes[key], 10);\n const subkey = key === 'BYTERANGE-LENGTH' ? 'length' : 'offset';\n event.attributes.byterange = event.attributes.byterange || {};\n event.attributes.byterange[subkey] = event.attributes[key]; // only keep the parsed byterange object.\n\n delete event.attributes[key];\n }\n });\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-RENDITION-REPORT:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'rendition-report'\n };\n event.attributes = parseAttributes(match[1]);\n ['LAST-MSN', 'LAST-PART'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseInt(event.attributes[key], 10);\n }\n });\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-DATERANGE:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'daterange'\n };\n event.attributes = parseAttributes(match[1]);\n ['ID', 'CLASS'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = String(event.attributes[key]);\n }\n });\n ['START-DATE', 'END-DATE'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = new Date(event.attributes[key]);\n }\n });\n ['DURATION', 'PLANNED-DURATION'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseFloat(event.attributes[key]);\n }\n });\n ['END-ON-NEXT'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = /YES/i.test(event.attributes[key]);\n }\n });\n ['SCTE35-CMD', ' SCTE35-OUT', 'SCTE35-IN'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = event.attributes[key].toString(16);\n }\n });\n const clientAttributePattern = /^X-([A-Z]+-)+[A-Z]+$/;\n\n for (const key in event.attributes) {\n if (!clientAttributePattern.test(key)) {\n continue;\n }\n\n const isHexaDecimal = /[0-9A-Fa-f]{6}/g.test(event.attributes[key]);\n const isDecimalFloating = /^\\d+(\\.\\d+)?$/.test(event.attributes[key]);\n event.attributes[key] = isHexaDecimal ? event.attributes[key].toString(16) : isDecimalFloating ? parseFloat(event.attributes[key]) : String(event.attributes[key]);\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-INDEPENDENT-SEGMENTS/.exec(newLine);\n\n if (match) {\n this.trigger('data', {\n type: 'tag',\n tagType: 'independent-segments'\n });\n return;\n }\n\n match = /^#EXT-X-I-FRAMES-ONLY/.exec(newLine);\n\n if (match) {\n this.trigger('data', {\n type: 'tag',\n tagType: 'i-frames-only'\n });\n return;\n }\n\n match = /^#EXT-X-CONTENT-STEERING:(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'content-steering'\n };\n event.attributes = parseAttributes(match[1]);\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-I-FRAME-STREAM-INF:(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'i-frame-playlist'\n };\n event.attributes = parseAttributes(match[1]);\n\n if (event.attributes.URI) {\n event.uri = event.attributes.URI;\n }\n\n if (event.attributes.BANDWIDTH) {\n event.attributes.BANDWIDTH = parseInt(event.attributes.BANDWIDTH, 10);\n }\n\n if (event.attributes.RESOLUTION) {\n event.attributes.RESOLUTION = parseResolution(event.attributes.RESOLUTION);\n }\n\n if (event.attributes['AVERAGE-BANDWIDTH']) {\n event.attributes['AVERAGE-BANDWIDTH'] = parseInt(event.attributes['AVERAGE-BANDWIDTH'], 10);\n }\n\n if (event.attributes['FRAME-RATE']) {\n event.attributes['FRAME-RATE'] = parseFloat(event.attributes['FRAME-RATE']);\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-DEFINE:(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'define'\n };\n event.attributes = parseAttributes(match[1]);\n this.trigger('data', event);\n return;\n } // unknown tag type\n\n\n this.trigger('data', {\n type: 'tag',\n data: newLine.slice(4)\n });\n });\n }\n /**\n * Add a parser for custom headers\n *\n * @param {Object} options a map of options for the added parser\n * @param {RegExp} options.expression a regular expression to match the custom header\n * @param {string} options.customType the custom type to register to the output\n * @param {Function} [options.dataParser] function to parse the line into an object\n * @param {boolean} [options.segment] should tag data be attached to the segment object\n */\n\n\n addParser({\n expression,\n customType,\n dataParser,\n segment\n }) {\n if (typeof dataParser !== 'function') {\n dataParser = line => line;\n }\n\n this.customParsers.push(line => {\n const match = expression.exec(line);\n\n if (match) {\n this.trigger('data', {\n type: 'custom',\n data: dataParser(line),\n customType,\n segment\n });\n return true;\n }\n });\n }\n /**\n * Add a custom header mapper\n *\n * @param {Object} options\n * @param {RegExp} options.expression a regular expression to match the custom header\n * @param {Function} options.map function to translate tag into a different tag\n */\n\n\n addTagMapper({\n expression,\n map\n }) {\n const mapFn = line => {\n if (expression.test(line)) {\n return map(line);\n }\n\n return line;\n };\n\n this.tagMappers.push(mapFn);\n }\n\n}\n\nconst camelCase = str => str.toLowerCase().replace(/-(\\w)/g, a => a[1].toUpperCase());\n\nconst camelCaseKeys = function (attributes) {\n const result = {};\n Object.keys(attributes).forEach(function (key) {\n result[camelCase(key)] = attributes[key];\n });\n return result;\n}; // set SERVER-CONTROL hold back based upon targetDuration and partTargetDuration\n// we need this helper because defaults are based upon targetDuration and\n// partTargetDuration being set, but they may not be if SERVER-CONTROL appears before\n// target durations are set.\n\n\nconst setHoldBack = function (manifest) {\n const {\n serverControl,\n targetDuration,\n partTargetDuration\n } = manifest;\n\n if (!serverControl) {\n return;\n }\n\n const tag = '#EXT-X-SERVER-CONTROL';\n const hb = 'holdBack';\n const phb = 'partHoldBack';\n const minTargetDuration = targetDuration && targetDuration * 3;\n const minPartDuration = partTargetDuration && partTargetDuration * 2;\n\n if (targetDuration && !serverControl.hasOwnProperty(hb)) {\n serverControl[hb] = minTargetDuration;\n this.trigger('info', {\n message: `${tag} defaulting HOLD-BACK to targetDuration * 3 (${minTargetDuration}).`\n });\n }\n\n if (minTargetDuration && serverControl[hb] < minTargetDuration) {\n this.trigger('warn', {\n message: `${tag} clamping HOLD-BACK (${serverControl[hb]}) to targetDuration * 3 (${minTargetDuration})`\n });\n serverControl[hb] = minTargetDuration;\n } // default no part hold back to part target duration * 3\n\n\n if (partTargetDuration && !serverControl.hasOwnProperty(phb)) {\n serverControl[phb] = partTargetDuration * 3;\n this.trigger('info', {\n message: `${tag} defaulting PART-HOLD-BACK to partTargetDuration * 3 (${serverControl[phb]}).`\n });\n } // if part hold back is too small default it to part target duration * 2\n\n\n if (partTargetDuration && serverControl[phb] < minPartDuration) {\n this.trigger('warn', {\n message: `${tag} clamping PART-HOLD-BACK (${serverControl[phb]}) to partTargetDuration * 2 (${minPartDuration}).`\n });\n serverControl[phb] = minPartDuration;\n }\n};\n/**\n * A parser for M3U8 files. The current interpretation of the input is\n * exposed as a property `manifest` on parser objects. It's just two lines to\n * create and parse a manifest once you have the contents available as a string:\n *\n * ```js\n * var parser = new m3u8.Parser();\n * parser.push(xhr.responseText);\n * ```\n *\n * New input can later be applied to update the manifest object by calling\n * `push` again.\n *\n * The parser attempts to create a usable manifest object even if the\n * underlying input is somewhat nonsensical. It emits `info` and `warning`\n * events during the parse if it encounters input that seems invalid or\n * requires some property of the manifest object to be defaulted.\n *\n * @class Parser\n * @param {Object} [opts] Options for the constructor, needed for substitutions\n * @param {string} [opts.uri] URL to check for query params\n * @param {Object} [opts.mainDefinitions] Definitions on main playlist that can be imported\n * @extends Stream\n */\n\n\nclass Parser extends Stream {\n constructor(opts = {}) {\n super();\n this.lineStream = new LineStream();\n this.parseStream = new ParseStream();\n this.lineStream.pipe(this.parseStream);\n this.mainDefinitions = opts.mainDefinitions || {};\n this.params = new URL(opts.uri, 'https://a.com').searchParams;\n this.lastProgramDateTime = null;\n /* eslint-disable consistent-this */\n\n const self = this;\n /* eslint-enable consistent-this */\n\n const uris = [];\n let currentUri = {}; // if specified, the active EXT-X-MAP definition\n\n let currentMap; // if specified, the active decryption key\n\n let key;\n let hasParts = false;\n\n const noop = function () {};\n\n const defaultMediaGroups = {\n 'AUDIO': {},\n 'VIDEO': {},\n 'CLOSED-CAPTIONS': {},\n 'SUBTITLES': {}\n }; // This is the Widevine UUID from DASH IF IOP. The same exact string is\n // used in MPDs with Widevine encrypted streams.\n\n const widevineUuid = 'urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed'; // group segments into numbered timelines delineated by discontinuities\n\n let currentTimeline = 0; // the manifest is empty until the parse stream begins delivering data\n\n this.manifest = {\n allowCache: true,\n discontinuityStarts: [],\n dateRanges: [],\n iFramePlaylists: [],\n segments: []\n }; // keep track of the last seen segment's byte range end, as segments are not required\n // to provide the offset, in which case it defaults to the next byte after the\n // previous segment\n\n let lastByterangeEnd = 0; // keep track of the last seen part's byte range end.\n\n let lastPartByterangeEnd = 0;\n const dateRangeTags = {};\n this.on('end', () => {\n // only add preloadSegment if we don't yet have a uri for it.\n // and we actually have parts/preloadHints\n if (currentUri.uri || !currentUri.parts && !currentUri.preloadHints) {\n return;\n }\n\n if (!currentUri.map && currentMap) {\n currentUri.map = currentMap;\n }\n\n if (!currentUri.key && key) {\n currentUri.key = key;\n }\n\n if (!currentUri.timeline && typeof currentTimeline === 'number') {\n currentUri.timeline = currentTimeline;\n }\n\n this.manifest.preloadSegment = currentUri;\n }); // update the manifest with the m3u8 entry from the parse stream\n\n this.parseStream.on('data', function (entry) {\n let mediaGroup;\n let rendition; // Replace variables in uris and attributes as defined in #EXT-X-DEFINE tags\n\n if (self.manifest.definitions) {\n for (const def in self.manifest.definitions) {\n if (entry.uri) {\n entry.uri = entry.uri.replace(`{$${def}}`, self.manifest.definitions[def]);\n }\n\n if (entry.attributes) {\n for (const attr in entry.attributes) {\n if (typeof entry.attributes[attr] === 'string') {\n entry.attributes[attr] = entry.attributes[attr].replace(`{$${def}}`, self.manifest.definitions[def]);\n }\n }\n }\n }\n }\n\n ({\n tag() {\n // switch based on the tag type\n (({\n version() {\n if (entry.version) {\n this.manifest.version = entry.version;\n }\n },\n\n 'allow-cache'() {\n this.manifest.allowCache = entry.allowed;\n\n if (!('allowed' in entry)) {\n this.trigger('info', {\n message: 'defaulting allowCache to YES'\n });\n this.manifest.allowCache = true;\n }\n },\n\n byterange() {\n const byterange = {};\n\n if ('length' in entry) {\n currentUri.byterange = byterange;\n byterange.length = entry.length;\n\n if (!('offset' in entry)) {\n /*\n * From the latest spec (as of this writing):\n * https://tools.ietf.org/html/draft-pantos-http-live-streaming-23#section-4.3.2.2\n *\n * Same text since EXT-X-BYTERANGE's introduction in draft 7:\n * https://tools.ietf.org/html/draft-pantos-http-live-streaming-07#section-3.3.1)\n *\n * \"If o [offset] is not present, the sub-range begins at the next byte\n * following the sub-range of the previous media segment.\"\n */\n entry.offset = lastByterangeEnd;\n }\n }\n\n if ('offset' in entry) {\n currentUri.byterange = byterange;\n byterange.offset = entry.offset;\n }\n\n lastByterangeEnd = byterange.offset + byterange.length;\n },\n\n endlist() {\n this.manifest.endList = true;\n },\n\n inf() {\n if (!('mediaSequence' in this.manifest)) {\n this.manifest.mediaSequence = 0;\n this.trigger('info', {\n message: 'defaulting media sequence to zero'\n });\n }\n\n if (!('discontinuitySequence' in this.manifest)) {\n this.manifest.discontinuitySequence = 0;\n this.trigger('info', {\n message: 'defaulting discontinuity sequence to zero'\n });\n }\n\n if (entry.title) {\n currentUri.title = entry.title;\n }\n\n if (entry.duration > 0) {\n currentUri.duration = entry.duration;\n }\n\n if (entry.duration === 0) {\n currentUri.duration = 0.01;\n this.trigger('info', {\n message: 'updating zero segment duration to a small value'\n });\n }\n\n this.manifest.segments = uris;\n },\n\n key() {\n if (!entry.attributes) {\n this.trigger('warn', {\n message: 'ignoring key declaration without attribute list'\n });\n return;\n } // clear the active encryption key\n\n\n if (entry.attributes.METHOD === 'NONE') {\n key = null;\n return;\n }\n\n if (!entry.attributes.URI) {\n this.trigger('warn', {\n message: 'ignoring key declaration without URI'\n });\n return;\n }\n\n if (entry.attributes.KEYFORMAT === 'com.apple.streamingkeydelivery') {\n this.manifest.contentProtection = this.manifest.contentProtection || {}; // TODO: add full support for this.\n\n this.manifest.contentProtection['com.apple.fps.1_0'] = {\n attributes: entry.attributes\n };\n return;\n }\n\n if (entry.attributes.KEYFORMAT === 'com.microsoft.playready') {\n this.manifest.contentProtection = this.manifest.contentProtection || {}; // TODO: add full support for this.\n\n this.manifest.contentProtection['com.microsoft.playready'] = {\n uri: entry.attributes.URI\n };\n return;\n } // check if the content is encrypted for Widevine\n // Widevine/HLS spec: https://storage.googleapis.com/wvdocs/Widevine_DRM_HLS.pdf\n\n\n if (entry.attributes.KEYFORMAT === widevineUuid) {\n const VALID_METHODS = ['SAMPLE-AES', 'SAMPLE-AES-CTR', 'SAMPLE-AES-CENC'];\n\n if (VALID_METHODS.indexOf(entry.attributes.METHOD) === -1) {\n this.trigger('warn', {\n message: 'invalid key method provided for Widevine'\n });\n return;\n }\n\n if (entry.attributes.METHOD === 'SAMPLE-AES-CENC') {\n this.trigger('warn', {\n message: 'SAMPLE-AES-CENC is deprecated, please use SAMPLE-AES-CTR instead'\n });\n }\n\n if (entry.attributes.URI.substring(0, 23) !== 'data:text/plain;base64,') {\n this.trigger('warn', {\n message: 'invalid key URI provided for Widevine'\n });\n return;\n }\n\n if (!(entry.attributes.KEYID && entry.attributes.KEYID.substring(0, 2) === '0x')) {\n this.trigger('warn', {\n message: 'invalid key ID provided for Widevine'\n });\n return;\n } // if Widevine key attributes are valid, store them as `contentProtection`\n // on the manifest to emulate Widevine tag structure in a DASH mpd\n\n\n this.manifest.contentProtection = this.manifest.contentProtection || {};\n this.manifest.contentProtection['com.widevine.alpha'] = {\n attributes: {\n schemeIdUri: entry.attributes.KEYFORMAT,\n // remove '0x' from the key id string\n keyId: entry.attributes.KEYID.substring(2)\n },\n // decode the base64-encoded PSSH box\n pssh: decodeB64ToUint8Array(entry.attributes.URI.split(',')[1])\n };\n return;\n }\n\n if (!entry.attributes.METHOD) {\n this.trigger('warn', {\n message: 'defaulting key method to AES-128'\n });\n } // setup an encryption key for upcoming segments\n\n\n key = {\n method: entry.attributes.METHOD || 'AES-128',\n uri: entry.attributes.URI\n };\n\n if (typeof entry.attributes.IV !== 'undefined') {\n key.iv = entry.attributes.IV;\n }\n },\n\n 'media-sequence'() {\n if (!isFinite(entry.number)) {\n this.trigger('warn', {\n message: 'ignoring invalid media sequence: ' + entry.number\n });\n return;\n }\n\n this.manifest.mediaSequence = entry.number;\n },\n\n 'discontinuity-sequence'() {\n if (!isFinite(entry.number)) {\n this.trigger('warn', {\n message: 'ignoring invalid discontinuity sequence: ' + entry.number\n });\n return;\n }\n\n this.manifest.discontinuitySequence = entry.number;\n currentTimeline = entry.number;\n },\n\n 'playlist-type'() {\n if (!/VOD|EVENT/.test(entry.playlistType)) {\n this.trigger('warn', {\n message: 'ignoring unknown playlist type: ' + entry.playlist\n });\n return;\n }\n\n this.manifest.playlistType = entry.playlistType;\n },\n\n map() {\n currentMap = {};\n\n if (entry.uri) {\n currentMap.uri = entry.uri;\n }\n\n if (entry.byterange) {\n currentMap.byterange = entry.byterange;\n }\n\n if (key) {\n currentMap.key = key;\n }\n },\n\n 'stream-inf'() {\n this.manifest.playlists = uris;\n this.manifest.mediaGroups = this.manifest.mediaGroups || defaultMediaGroups;\n\n if (!entry.attributes) {\n this.trigger('warn', {\n message: 'ignoring empty stream-inf attributes'\n });\n return;\n }\n\n if (!currentUri.attributes) {\n currentUri.attributes = {};\n }\n\n _extends(currentUri.attributes, entry.attributes);\n },\n\n media() {\n this.manifest.mediaGroups = this.manifest.mediaGroups || defaultMediaGroups;\n\n if (!(entry.attributes && entry.attributes.TYPE && entry.attributes['GROUP-ID'] && entry.attributes.NAME)) {\n this.trigger('warn', {\n message: 'ignoring incomplete or missing media group'\n });\n return;\n } // find the media group, creating defaults as necessary\n\n\n const mediaGroupType = this.manifest.mediaGroups[entry.attributes.TYPE];\n mediaGroupType[entry.attributes['GROUP-ID']] = mediaGroupType[entry.attributes['GROUP-ID']] || {};\n mediaGroup = mediaGroupType[entry.attributes['GROUP-ID']]; // collect the rendition metadata\n\n rendition = {\n default: /yes/i.test(entry.attributes.DEFAULT)\n };\n\n if (rendition.default) {\n rendition.autoselect = true;\n } else {\n rendition.autoselect = /yes/i.test(entry.attributes.AUTOSELECT);\n }\n\n if (entry.attributes.LANGUAGE) {\n rendition.language = entry.attributes.LANGUAGE;\n }\n\n if (entry.attributes.URI) {\n rendition.uri = entry.attributes.URI;\n }\n\n if (entry.attributes['INSTREAM-ID']) {\n rendition.instreamId = entry.attributes['INSTREAM-ID'];\n }\n\n if (entry.attributes.CHARACTERISTICS) {\n rendition.characteristics = entry.attributes.CHARACTERISTICS;\n }\n\n if (entry.attributes.FORCED) {\n rendition.forced = /yes/i.test(entry.attributes.FORCED);\n } // insert the new rendition\n\n\n mediaGroup[entry.attributes.NAME] = rendition;\n },\n\n discontinuity() {\n currentTimeline += 1;\n currentUri.discontinuity = true;\n this.manifest.discontinuityStarts.push(uris.length);\n },\n\n 'program-date-time'() {\n if (typeof this.manifest.dateTimeString === 'undefined') {\n // PROGRAM-DATE-TIME is a media-segment tag, but for backwards\n // compatibility, we add the first occurence of the PROGRAM-DATE-TIME tag\n // to the manifest object\n // TODO: Consider removing this in future major version\n this.manifest.dateTimeString = entry.dateTimeString;\n this.manifest.dateTimeObject = entry.dateTimeObject;\n }\n\n currentUri.dateTimeString = entry.dateTimeString;\n currentUri.dateTimeObject = entry.dateTimeObject;\n const {\n lastProgramDateTime\n } = this;\n this.lastProgramDateTime = new Date(entry.dateTimeString).getTime(); // We should extrapolate Program Date Time backward only during first program date time occurrence.\n // Once we have at least one program date time point, we can always extrapolate it forward using lastProgramDateTime reference.\n\n if (lastProgramDateTime === null) {\n // Extrapolate Program Date Time backward\n // Since it is first program date time occurrence we're assuming that\n // all this.manifest.segments have no program date time info\n this.manifest.segments.reduceRight((programDateTime, segment) => {\n segment.programDateTime = programDateTime - segment.duration * 1000;\n return segment.programDateTime;\n }, this.lastProgramDateTime);\n }\n },\n\n targetduration() {\n if (!isFinite(entry.duration) || entry.duration < 0) {\n this.trigger('warn', {\n message: 'ignoring invalid target duration: ' + entry.duration\n });\n return;\n }\n\n this.manifest.targetDuration = entry.duration;\n setHoldBack.call(this, this.manifest);\n },\n\n start() {\n if (!entry.attributes || isNaN(entry.attributes['TIME-OFFSET'])) {\n this.trigger('warn', {\n message: 'ignoring start declaration without appropriate attribute list'\n });\n return;\n }\n\n this.manifest.start = {\n timeOffset: entry.attributes['TIME-OFFSET'],\n precise: entry.attributes.PRECISE\n };\n },\n\n 'cue-out'() {\n currentUri.cueOut = entry.data;\n },\n\n 'cue-out-cont'() {\n currentUri.cueOutCont = entry.data;\n },\n\n 'cue-in'() {\n currentUri.cueIn = entry.data;\n },\n\n 'skip'() {\n this.manifest.skip = camelCaseKeys(entry.attributes);\n this.warnOnMissingAttributes_('#EXT-X-SKIP', entry.attributes, ['SKIPPED-SEGMENTS']);\n },\n\n 'part'() {\n hasParts = true; // parts are always specifed before a segment\n\n const segmentIndex = this.manifest.segments.length;\n const part = camelCaseKeys(entry.attributes);\n currentUri.parts = currentUri.parts || [];\n currentUri.parts.push(part);\n\n if (part.byterange) {\n if (!part.byterange.hasOwnProperty('offset')) {\n part.byterange.offset = lastPartByterangeEnd;\n }\n\n lastPartByterangeEnd = part.byterange.offset + part.byterange.length;\n }\n\n const partIndex = currentUri.parts.length - 1;\n this.warnOnMissingAttributes_(`#EXT-X-PART #${partIndex} for segment #${segmentIndex}`, entry.attributes, ['URI', 'DURATION']);\n\n if (this.manifest.renditionReports) {\n this.manifest.renditionReports.forEach((r, i) => {\n if (!r.hasOwnProperty('lastPart')) {\n this.trigger('warn', {\n message: `#EXT-X-RENDITION-REPORT #${i} lacks required attribute(s): LAST-PART`\n });\n }\n });\n }\n },\n\n 'server-control'() {\n const attrs = this.manifest.serverControl = camelCaseKeys(entry.attributes);\n\n if (!attrs.hasOwnProperty('canBlockReload')) {\n attrs.canBlockReload = false;\n this.trigger('info', {\n message: '#EXT-X-SERVER-CONTROL defaulting CAN-BLOCK-RELOAD to false'\n });\n }\n\n setHoldBack.call(this, this.manifest);\n\n if (attrs.canSkipDateranges && !attrs.hasOwnProperty('canSkipUntil')) {\n this.trigger('warn', {\n message: '#EXT-X-SERVER-CONTROL lacks required attribute CAN-SKIP-UNTIL which is required when CAN-SKIP-DATERANGES is set'\n });\n }\n },\n\n 'preload-hint'() {\n // parts are always specifed before a segment\n const segmentIndex = this.manifest.segments.length;\n const hint = camelCaseKeys(entry.attributes);\n const isPart = hint.type && hint.type === 'PART';\n currentUri.preloadHints = currentUri.preloadHints || [];\n currentUri.preloadHints.push(hint);\n\n if (hint.byterange) {\n if (!hint.byterange.hasOwnProperty('offset')) {\n // use last part byterange end or zero if not a part.\n hint.byterange.offset = isPart ? lastPartByterangeEnd : 0;\n\n if (isPart) {\n lastPartByterangeEnd = hint.byterange.offset + hint.byterange.length;\n }\n }\n }\n\n const index = currentUri.preloadHints.length - 1;\n this.warnOnMissingAttributes_(`#EXT-X-PRELOAD-HINT #${index} for segment #${segmentIndex}`, entry.attributes, ['TYPE', 'URI']);\n\n if (!hint.type) {\n return;\n } // search through all preload hints except for the current one for\n // a duplicate type.\n\n\n for (let i = 0; i < currentUri.preloadHints.length - 1; i++) {\n const otherHint = currentUri.preloadHints[i];\n\n if (!otherHint.type) {\n continue;\n }\n\n if (otherHint.type === hint.type) {\n this.trigger('warn', {\n message: `#EXT-X-PRELOAD-HINT #${index} for segment #${segmentIndex} has the same TYPE ${hint.type} as preload hint #${i}`\n });\n }\n }\n },\n\n 'rendition-report'() {\n const report = camelCaseKeys(entry.attributes);\n this.manifest.renditionReports = this.manifest.renditionReports || [];\n this.manifest.renditionReports.push(report);\n const index = this.manifest.renditionReports.length - 1;\n const required = ['LAST-MSN', 'URI'];\n\n if (hasParts) {\n required.push('LAST-PART');\n }\n\n this.warnOnMissingAttributes_(`#EXT-X-RENDITION-REPORT #${index}`, entry.attributes, required);\n },\n\n 'part-inf'() {\n this.manifest.partInf = camelCaseKeys(entry.attributes);\n this.warnOnMissingAttributes_('#EXT-X-PART-INF', entry.attributes, ['PART-TARGET']);\n\n if (this.manifest.partInf.partTarget) {\n this.manifest.partTargetDuration = this.manifest.partInf.partTarget;\n }\n\n setHoldBack.call(this, this.manifest);\n },\n\n 'daterange'() {\n this.manifest.dateRanges.push(camelCaseKeys(entry.attributes));\n const index = this.manifest.dateRanges.length - 1;\n this.warnOnMissingAttributes_(`#EXT-X-DATERANGE #${index}`, entry.attributes, ['ID', 'START-DATE']);\n const dateRange = this.manifest.dateRanges[index];\n\n if (dateRange.endDate && dateRange.startDate && new Date(dateRange.endDate) < new Date(dateRange.startDate)) {\n this.trigger('warn', {\n message: 'EXT-X-DATERANGE END-DATE must be equal to or later than the value of the START-DATE'\n });\n }\n\n if (dateRange.duration && dateRange.duration < 0) {\n this.trigger('warn', {\n message: 'EXT-X-DATERANGE DURATION must not be negative'\n });\n }\n\n if (dateRange.plannedDuration && dateRange.plannedDuration < 0) {\n this.trigger('warn', {\n message: 'EXT-X-DATERANGE PLANNED-DURATION must not be negative'\n });\n }\n\n const endOnNextYes = !!dateRange.endOnNext;\n\n if (endOnNextYes && !dateRange.class) {\n this.trigger('warn', {\n message: 'EXT-X-DATERANGE with an END-ON-NEXT=YES attribute must have a CLASS attribute'\n });\n }\n\n if (endOnNextYes && (dateRange.duration || dateRange.endDate)) {\n this.trigger('warn', {\n message: 'EXT-X-DATERANGE with an END-ON-NEXT=YES attribute must not contain DURATION or END-DATE attributes'\n });\n }\n\n if (dateRange.duration && dateRange.endDate) {\n const startDate = dateRange.startDate;\n const newDateInSeconds = startDate.getTime() + dateRange.duration * 1000;\n this.manifest.dateRanges[index].endDate = new Date(newDateInSeconds);\n }\n\n if (!dateRangeTags[dateRange.id]) {\n dateRangeTags[dateRange.id] = dateRange;\n } else {\n for (const attribute in dateRangeTags[dateRange.id]) {\n if (!!dateRange[attribute] && JSON.stringify(dateRangeTags[dateRange.id][attribute]) !== JSON.stringify(dateRange[attribute])) {\n this.trigger('warn', {\n message: 'EXT-X-DATERANGE tags with the same ID in a playlist must have the same attributes values'\n });\n break;\n }\n } // if tags with the same ID do not have conflicting attributes, merge them\n\n\n const dateRangeWithSameId = this.manifest.dateRanges.findIndex(dateRangeToFind => dateRangeToFind.id === dateRange.id);\n this.manifest.dateRanges[dateRangeWithSameId] = _extends(this.manifest.dateRanges[dateRangeWithSameId], dateRange);\n dateRangeTags[dateRange.id] = _extends(dateRangeTags[dateRange.id], dateRange); // after merging, delete the duplicate dateRange that was added last\n\n this.manifest.dateRanges.pop();\n }\n },\n\n 'independent-segments'() {\n this.manifest.independentSegments = true;\n },\n\n 'i-frames-only'() {\n this.manifest.iFramesOnly = true;\n this.requiredCompatibilityversion(this.manifest.version, 4);\n },\n\n 'content-steering'() {\n this.manifest.contentSteering = camelCaseKeys(entry.attributes);\n this.warnOnMissingAttributes_('#EXT-X-CONTENT-STEERING', entry.attributes, ['SERVER-URI']);\n },\n\n /** @this {Parser} */\n define() {\n this.manifest.definitions = this.manifest.definitions || {};\n\n const addDef = (n, v) => {\n if (n in this.manifest.definitions) {\n // An EXT-X-DEFINE tag MUST NOT specify the same Variable Name as any other\n // EXT-X-DEFINE tag in the same Playlist. Parsers that encounter duplicate\n // Variable Name declarations MUST fail to parse the Playlist.\n this.trigger('error', {\n message: `EXT-X-DEFINE: Duplicate name ${n}`\n });\n return;\n }\n\n this.manifest.definitions[n] = v;\n };\n\n if ('QUERYPARAM' in entry.attributes) {\n if ('NAME' in entry.attributes || 'IMPORT' in entry.attributes) {\n // An EXT-X-DEFINE tag MUST contain either a NAME, an IMPORT, or a\n // QUERYPARAM attribute, but only one of the three. Otherwise, the\n // client MUST fail to parse the Playlist.\n this.trigger('error', {\n message: 'EXT-X-DEFINE: Invalid attributes'\n });\n return;\n }\n\n const val = this.params.get(entry.attributes.QUERYPARAM);\n\n if (!val) {\n // If the QUERYPARAM attribute value does not match any query parameter in\n // the URI or the matching parameter has no associated value, the parser\n // MUST fail to parse the Playlist. If more than one parameter matches,\n // any of the associated values MAY be used.\n this.trigger('error', {\n message: `EXT-X-DEFINE: No query param ${entry.attributes.QUERYPARAM}`\n });\n return;\n }\n\n addDef(entry.attributes.QUERYPARAM, decodeURIComponent(val));\n return;\n }\n\n if ('NAME' in entry.attributes) {\n if ('IMPORT' in entry.attributes) {\n // An EXT-X-DEFINE tag MUST contain either a NAME, an IMPORT, or a\n // QUERYPARAM attribute, but only one of the three. Otherwise, the\n // client MUST fail to parse the Playlist.\n this.trigger('error', {\n message: 'EXT-X-DEFINE: Invalid attributes'\n });\n return;\n }\n\n if (!('VALUE' in entry.attributes) || typeof entry.attributes.VALUE !== 'string') {\n // This attribute is REQUIRED if the EXT-X-DEFINE tag has a NAME attribute.\n // The quoted-string MAY be empty.\n this.trigger('error', {\n message: `EXT-X-DEFINE: No value for ${entry.attributes.NAME}`\n });\n return;\n }\n\n addDef(entry.attributes.NAME, entry.attributes.VALUE);\n return;\n }\n\n if ('IMPORT' in entry.attributes) {\n if (!this.mainDefinitions[entry.attributes.IMPORT]) {\n // Covers two conditions, as mainDefinitions will always be empty on main\n //\n // EXT-X-DEFINE tags containing the IMPORT attribute MUST NOT occur in\n // Multivariant Playlists; they are only allowed in Media Playlists.\n //\n // If the IMPORT attribute value does not match any Variable Name in the\n // Multivariant Playlist, or if the Media Playlist loaded from a\n // Multivariant Playlist, the parser MUST fail the Playlist.\n this.trigger('error', {\n message: `EXT-X-DEFINE: No value ${entry.attributes.IMPORT} to import, or IMPORT used on main playlist`\n });\n return;\n }\n\n addDef(entry.attributes.IMPORT, this.mainDefinitions[entry.attributes.IMPORT]);\n return;\n } // An EXT-X-DEFINE tag MUST contain either a NAME, an IMPORT, or a QUERYPARAM\n // attribute, but only one of the three. Otherwise, the client MUST fail to\n // parse the Playlist.\n\n\n this.trigger('error', {\n message: 'EXT-X-DEFINE: No attribute'\n });\n },\n\n 'i-frame-playlist'() {\n this.manifest.iFramePlaylists.push({\n attributes: entry.attributes,\n uri: entry.uri,\n timeline: currentTimeline\n });\n this.warnOnMissingAttributes_('#EXT-X-I-FRAME-STREAM-INF', entry.attributes, ['BANDWIDTH', 'URI']);\n }\n\n })[entry.tagType] || noop).call(self);\n },\n\n uri() {\n currentUri.uri = entry.uri;\n uris.push(currentUri); // if no explicit duration was declared, use the target duration\n\n if (this.manifest.targetDuration && !('duration' in currentUri)) {\n this.trigger('warn', {\n message: 'defaulting segment duration to the target duration'\n });\n currentUri.duration = this.manifest.targetDuration;\n } // annotate with encryption information, if necessary\n\n\n if (key) {\n currentUri.key = key;\n }\n\n currentUri.timeline = currentTimeline; // annotate with initialization segment information, if necessary\n\n if (currentMap) {\n currentUri.map = currentMap;\n } // reset the last byterange end as it needs to be 0 between parts\n\n\n lastPartByterangeEnd = 0; // Once we have at least one program date time we can always extrapolate it forward\n\n if (this.lastProgramDateTime !== null) {\n currentUri.programDateTime = this.lastProgramDateTime;\n this.lastProgramDateTime += currentUri.duration * 1000;\n } // prepare for the next URI\n\n\n currentUri = {};\n },\n\n comment() {// comments are not important for playback\n },\n\n custom() {\n // if this is segment-level data attach the output to the segment\n if (entry.segment) {\n currentUri.custom = currentUri.custom || {};\n currentUri.custom[entry.customType] = entry.data; // if this is manifest-level data attach to the top level manifest object\n } else {\n this.manifest.custom = this.manifest.custom || {};\n this.manifest.custom[entry.customType] = entry.data;\n }\n }\n\n })[entry.type].call(self);\n });\n }\n\n requiredCompatibilityversion(currentVersion, targetVersion) {\n if (currentVersion < targetVersion || !currentVersion) {\n this.trigger('warn', {\n message: `manifest must be at least version ${targetVersion}`\n });\n }\n }\n\n warnOnMissingAttributes_(identifier, attributes, required) {\n const missing = [];\n required.forEach(function (key) {\n if (!attributes.hasOwnProperty(key)) {\n missing.push(key);\n }\n });\n\n if (missing.length) {\n this.trigger('warn', {\n message: `${identifier} lacks required attribute(s): ${missing.join(', ')}`\n });\n }\n }\n /**\n * Parse the input string and update the manifest object.\n *\n * @param {string} chunk a potentially incomplete portion of the manifest\n */\n\n\n push(chunk) {\n this.lineStream.push(chunk);\n }\n /**\n * Flush any remaining input. This can be handy if the last line of an M3U8\n * manifest did not contain a trailing newline but the file has been\n * completely received.\n */\n\n\n end() {\n // flush any buffered input\n this.lineStream.push('\\n');\n\n if (this.manifest.dateRanges.length && this.lastProgramDateTime === null) {\n this.trigger('warn', {\n message: 'A playlist with EXT-X-DATERANGE tag must contain atleast one EXT-X-PROGRAM-DATE-TIME tag'\n });\n }\n\n this.lastProgramDateTime = null;\n this.trigger('end');\n }\n /**\n * Add an additional parser for non-standard tags\n *\n * @param {Object} options a map of options for the added parser\n * @param {RegExp} options.expression a regular expression to match the custom header\n * @param {string} options.customType the custom type to register to the output\n * @param {Function} [options.dataParser] function to parse the line into an object\n * @param {boolean} [options.segment] should tag data be attached to the segment object\n */\n\n\n addParser(options) {\n this.parseStream.addParser(options);\n }\n /**\n * Add a custom header mapper\n *\n * @param {Object} options\n * @param {RegExp} options.expression a regular expression to match the custom header\n * @param {Function} options.map function to translate tag into a different tag\n */\n\n\n addTagMapper(options) {\n this.parseStream.addTagMapper(options);\n }\n\n}\n\nexport { LineStream, ParseStream, Parser };\n","import window from 'global/window';\nvar regexs = {\n // to determine mime types\n mp4: /^(av0?1|avc0?[1234]|vp0?9|flac|opus|mp3|mp4a|mp4v|stpp.ttml.im1t)/,\n webm: /^(vp0?[89]|av0?1|opus|vorbis)/,\n ogg: /^(vp0?[89]|theora|flac|opus|vorbis)/,\n // to determine if a codec is audio or video\n video: /^(av0?1|avc0?[1234]|vp0?[89]|hvc1|hev1|theora|mp4v)/,\n audio: /^(mp4a|flac|vorbis|opus|ac-[34]|ec-3|alac|mp3|speex|aac)/,\n text: /^(stpp.ttml.im1t)/,\n // mux.js support regex\n muxerVideo: /^(avc0?1)/,\n muxerAudio: /^(mp4a)/,\n // match nothing as muxer does not support text right now.\n // there cannot never be a character before the start of a string\n // so this matches nothing.\n muxerText: /a^/\n};\nvar mediaTypes = ['video', 'audio', 'text'];\nvar upperMediaTypes = ['Video', 'Audio', 'Text'];\n/**\n * Replace the old apple-style `avc1.
.
` codec string with the standard\n * `avc1.`\n *\n * @param {string} codec\n * Codec string to translate\n * @return {string}\n * The translated codec string\n */\n\nexport var translateLegacyCodec = function translateLegacyCodec(codec) {\n if (!codec) {\n return codec;\n }\n\n return codec.replace(/avc1\\.(\\d+)\\.(\\d+)/i, function (orig, profile, avcLevel) {\n var profileHex = ('00' + Number(profile).toString(16)).slice(-2);\n var avcLevelHex = ('00' + Number(avcLevel).toString(16)).slice(-2);\n return 'avc1.' + profileHex + '00' + avcLevelHex;\n });\n};\n/**\n * Replace the old apple-style `avc1.
.
` codec strings with the standard\n * `avc1.`\n *\n * @param {string[]} codecs\n * An array of codec strings to translate\n * @return {string[]}\n * The translated array of codec strings\n */\n\nexport var translateLegacyCodecs = function translateLegacyCodecs(codecs) {\n return codecs.map(translateLegacyCodec);\n};\n/**\n * Replace codecs in the codec string with the old apple-style `avc1.
.
` to the\n * standard `avc1.`.\n *\n * @param {string} codecString\n * The codec string\n * @return {string}\n * The codec string with old apple-style codecs replaced\n *\n * @private\n */\n\nexport var mapLegacyAvcCodecs = function mapLegacyAvcCodecs(codecString) {\n return codecString.replace(/avc1\\.(\\d+)\\.(\\d+)/i, function (match) {\n return translateLegacyCodecs([match])[0];\n });\n};\n/**\n * @typedef {Object} ParsedCodecInfo\n * @property {number} codecCount\n * Number of codecs parsed\n * @property {string} [videoCodec]\n * Parsed video codec (if found)\n * @property {string} [videoObjectTypeIndicator]\n * Video object type indicator (if found)\n * @property {string|null} audioProfile\n * Audio profile\n */\n\n/**\n * Parses a codec string to retrieve the number of codecs specified, the video codec and\n * object type indicator, and the audio profile.\n *\n * @param {string} [codecString]\n * The codec string to parse\n * @return {ParsedCodecInfo}\n * Parsed codec info\n */\n\nexport var parseCodecs = function parseCodecs(codecString) {\n if (codecString === void 0) {\n codecString = '';\n }\n\n var codecs = codecString.split(',');\n var result = [];\n codecs.forEach(function (codec) {\n codec = codec.trim();\n var codecType;\n mediaTypes.forEach(function (name) {\n var match = regexs[name].exec(codec.toLowerCase());\n\n if (!match || match.length <= 1) {\n return;\n }\n\n codecType = name; // maintain codec case\n\n var type = codec.substring(0, match[1].length);\n var details = codec.replace(type, '');\n result.push({\n type: type,\n details: details,\n mediaType: name\n });\n });\n\n if (!codecType) {\n result.push({\n type: codec,\n details: '',\n mediaType: 'unknown'\n });\n }\n });\n return result;\n};\n/**\n * Returns a ParsedCodecInfo object for the default alternate audio playlist if there is\n * a default alternate audio playlist for the provided audio group.\n *\n * @param {Object} master\n * The master playlist\n * @param {string} audioGroupId\n * ID of the audio group for which to find the default codec info\n * @return {ParsedCodecInfo}\n * Parsed codec info\n */\n\nexport var codecsFromDefault = function codecsFromDefault(master, audioGroupId) {\n if (!master.mediaGroups.AUDIO || !audioGroupId) {\n return null;\n }\n\n var audioGroup = master.mediaGroups.AUDIO[audioGroupId];\n\n if (!audioGroup) {\n return null;\n }\n\n for (var name in audioGroup) {\n var audioType = audioGroup[name];\n\n if (audioType.default && audioType.playlists) {\n // codec should be the same for all playlists within the audio type\n return parseCodecs(audioType.playlists[0].attributes.CODECS);\n }\n }\n\n return null;\n};\nexport var isVideoCodec = function isVideoCodec(codec) {\n if (codec === void 0) {\n codec = '';\n }\n\n return regexs.video.test(codec.trim().toLowerCase());\n};\nexport var isAudioCodec = function isAudioCodec(codec) {\n if (codec === void 0) {\n codec = '';\n }\n\n return regexs.audio.test(codec.trim().toLowerCase());\n};\nexport var isTextCodec = function isTextCodec(codec) {\n if (codec === void 0) {\n codec = '';\n }\n\n return regexs.text.test(codec.trim().toLowerCase());\n};\nexport var getMimeForCodec = function getMimeForCodec(codecString) {\n if (!codecString || typeof codecString !== 'string') {\n return;\n }\n\n var codecs = codecString.toLowerCase().split(',').map(function (c) {\n return translateLegacyCodec(c.trim());\n }); // default to video type\n\n var type = 'video'; // only change to audio type if the only codec we have is\n // audio\n\n if (codecs.length === 1 && isAudioCodec(codecs[0])) {\n type = 'audio';\n } else if (codecs.length === 1 && isTextCodec(codecs[0])) {\n // text uses application/ for now\n type = 'application';\n } // default the container to mp4\n\n\n var container = 'mp4'; // every codec must be able to go into the container\n // for that container to be the correct one\n\n if (codecs.every(function (c) {\n return regexs.mp4.test(c);\n })) {\n container = 'mp4';\n } else if (codecs.every(function (c) {\n return regexs.webm.test(c);\n })) {\n container = 'webm';\n } else if (codecs.every(function (c) {\n return regexs.ogg.test(c);\n })) {\n container = 'ogg';\n }\n\n return type + \"/\" + container + \";codecs=\\\"\" + codecString + \"\\\"\";\n};\n/**\n * Tests whether the codec is supported by MediaSource. Optionally also tests ManagedMediaSource.\n *\n * @param {string} codecString\n * Codec to test\n * @param {boolean} [withMMS]\n * Whether to check if ManagedMediaSource supports it\n * @return {boolean}\n * Codec is supported\n */\n\nexport var browserSupportsCodec = function browserSupportsCodec(codecString, withMMS) {\n if (codecString === void 0) {\n codecString = '';\n }\n\n if (withMMS === void 0) {\n withMMS = false;\n }\n\n return window.MediaSource && window.MediaSource.isTypeSupported && window.MediaSource.isTypeSupported(getMimeForCodec(codecString)) || withMMS && window.ManagedMediaSource && window.ManagedMediaSource.isTypeSupported && window.ManagedMediaSource.isTypeSupported(getMimeForCodec(codecString)) || false;\n};\nexport var muxerSupportsCodec = function muxerSupportsCodec(codecString) {\n if (codecString === void 0) {\n codecString = '';\n }\n\n return codecString.toLowerCase().split(',').every(function (codec) {\n codec = codec.trim(); // any match is supported.\n\n for (var i = 0; i < upperMediaTypes.length; i++) {\n var type = upperMediaTypes[i];\n\n if (regexs[\"muxer\" + type].test(codec)) {\n return true;\n }\n }\n\n return false;\n });\n};\nexport var DEFAULT_AUDIO_CODEC = 'mp4a.40.2';\nexport var DEFAULT_VIDEO_CODEC = 'avc1.4d400d';","var MPEGURL_REGEX = /^(audio|video|application)\\/(x-|vnd\\.apple\\.)?mpegurl/i;\nvar DASH_REGEX = /^application\\/dash\\+xml/i;\n/**\n * Returns a string that describes the type of source based on a video source object's\n * media type.\n *\n * @see {@link https://dev.w3.org/html5/pf-summary/video.html#dom-source-type|Source Type}\n *\n * @param {string} type\n * Video source object media type\n * @return {('hls'|'dash'|'vhs-json'|null)}\n * VHS source type string\n */\n\nexport var simpleTypeFromSourceType = function simpleTypeFromSourceType(type) {\n if (MPEGURL_REGEX.test(type)) {\n return 'hls';\n }\n\n if (DASH_REGEX.test(type)) {\n return 'dash';\n } // Denotes the special case of a manifest object passed to http-streaming instead of a\n // source URL.\n //\n // See https://en.wikipedia.org/wiki/Media_type for details on specifying media types.\n //\n // In this case, vnd stands for vendor, video.js for the organization, VHS for this\n // project, and the +json suffix identifies the structure of the media type.\n\n\n if (type === 'application/vnd.videojs.vhs+json') {\n return 'vhs-json';\n }\n\n return null;\n};","import window from 'global/window'; // const log2 = Math.log2 ? Math.log2 : (x) => (Math.log(x) / Math.log(2));\n\nvar repeat = function repeat(str, len) {\n var acc = '';\n\n while (len--) {\n acc += str;\n }\n\n return acc;\n}; // count the number of bits it would take to represent a number\n// we used to do this with log2 but BigInt does not support builtin math\n// Math.ceil(log2(x));\n\n\nexport var countBits = function countBits(x) {\n return x.toString(2).length;\n}; // count the number of whole bytes it would take to represent a number\n\nexport var countBytes = function countBytes(x) {\n return Math.ceil(countBits(x) / 8);\n};\nexport var padStart = function padStart(b, len, str) {\n if (str === void 0) {\n str = ' ';\n }\n\n return (repeat(str, len) + b.toString()).slice(-len);\n};\nexport var isArrayBufferView = function isArrayBufferView(obj) {\n if (ArrayBuffer.isView === 'function') {\n return ArrayBuffer.isView(obj);\n }\n\n return obj && obj.buffer instanceof ArrayBuffer;\n};\nexport var isTypedArray = function isTypedArray(obj) {\n return isArrayBufferView(obj);\n};\nexport var toUint8 = function toUint8(bytes) {\n if (bytes instanceof Uint8Array) {\n return bytes;\n }\n\n if (!Array.isArray(bytes) && !isTypedArray(bytes) && !(bytes instanceof ArrayBuffer)) {\n // any non-number or NaN leads to empty uint8array\n // eslint-disable-next-line\n if (typeof bytes !== 'number' || typeof bytes === 'number' && bytes !== bytes) {\n bytes = 0;\n } else {\n bytes = [bytes];\n }\n }\n\n return new Uint8Array(bytes && bytes.buffer || bytes, bytes && bytes.byteOffset || 0, bytes && bytes.byteLength || 0);\n};\nexport var toHexString = function toHexString(bytes) {\n bytes = toUint8(bytes);\n var str = '';\n\n for (var i = 0; i < bytes.length; i++) {\n str += padStart(bytes[i].toString(16), 2, '0');\n }\n\n return str;\n};\nexport var toBinaryString = function toBinaryString(bytes) {\n bytes = toUint8(bytes);\n var str = '';\n\n for (var i = 0; i < bytes.length; i++) {\n str += padStart(bytes[i].toString(2), 8, '0');\n }\n\n return str;\n};\nvar BigInt = window.BigInt || Number;\nvar BYTE_TABLE = [BigInt('0x1'), BigInt('0x100'), BigInt('0x10000'), BigInt('0x1000000'), BigInt('0x100000000'), BigInt('0x10000000000'), BigInt('0x1000000000000'), BigInt('0x100000000000000'), BigInt('0x10000000000000000')];\nexport var ENDIANNESS = function () {\n var a = new Uint16Array([0xFFCC]);\n var b = new Uint8Array(a.buffer, a.byteOffset, a.byteLength);\n\n if (b[0] === 0xFF) {\n return 'big';\n }\n\n if (b[0] === 0xCC) {\n return 'little';\n }\n\n return 'unknown';\n}();\nexport var IS_BIG_ENDIAN = ENDIANNESS === 'big';\nexport var IS_LITTLE_ENDIAN = ENDIANNESS === 'little';\nexport var bytesToNumber = function bytesToNumber(bytes, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$signed = _ref.signed,\n signed = _ref$signed === void 0 ? false : _ref$signed,\n _ref$le = _ref.le,\n le = _ref$le === void 0 ? false : _ref$le;\n\n bytes = toUint8(bytes);\n var fn = le ? 'reduce' : 'reduceRight';\n var obj = bytes[fn] ? bytes[fn] : Array.prototype[fn];\n var number = obj.call(bytes, function (total, byte, i) {\n var exponent = le ? i : Math.abs(i + 1 - bytes.length);\n return total + BigInt(byte) * BYTE_TABLE[exponent];\n }, BigInt(0));\n\n if (signed) {\n var max = BYTE_TABLE[bytes.length] / BigInt(2) - BigInt(1);\n number = BigInt(number);\n\n if (number > max) {\n number -= max;\n number -= max;\n number -= BigInt(2);\n }\n }\n\n return Number(number);\n};\nexport var numberToBytes = function numberToBytes(number, _temp2) {\n var _ref2 = _temp2 === void 0 ? {} : _temp2,\n _ref2$le = _ref2.le,\n le = _ref2$le === void 0 ? false : _ref2$le;\n\n // eslint-disable-next-line\n if (typeof number !== 'bigint' && typeof number !== 'number' || typeof number === 'number' && number !== number) {\n number = 0;\n }\n\n number = BigInt(number);\n var byteCount = countBytes(number);\n var bytes = new Uint8Array(new ArrayBuffer(byteCount));\n\n for (var i = 0; i < byteCount; i++) {\n var byteIndex = le ? i : Math.abs(i + 1 - bytes.length);\n bytes[byteIndex] = Number(number / BYTE_TABLE[i] & BigInt(0xFF));\n\n if (number < 0) {\n bytes[byteIndex] = Math.abs(~bytes[byteIndex]);\n bytes[byteIndex] -= i === 0 ? 1 : 2;\n }\n }\n\n return bytes;\n};\nexport var bytesToString = function bytesToString(bytes) {\n if (!bytes) {\n return '';\n } // TODO: should toUint8 handle cases where we only have 8 bytes\n // but report more since this is a Uint16+ Array?\n\n\n bytes = Array.prototype.slice.call(bytes);\n var string = String.fromCharCode.apply(null, toUint8(bytes));\n\n try {\n return decodeURIComponent(escape(string));\n } catch (e) {// if decodeURIComponent/escape fails, we are dealing with partial\n // or full non string data. Just return the potentially garbled string.\n }\n\n return string;\n};\nexport var stringToBytes = function stringToBytes(string, stringIsBytes) {\n if (typeof string !== 'string' && string && typeof string.toString === 'function') {\n string = string.toString();\n }\n\n if (typeof string !== 'string') {\n return new Uint8Array();\n } // If the string already is bytes, we don't have to do this\n // otherwise we do this so that we split multi length characters\n // into individual bytes\n\n\n if (!stringIsBytes) {\n string = unescape(encodeURIComponent(string));\n }\n\n var view = new Uint8Array(string.length);\n\n for (var i = 0; i < string.length; i++) {\n view[i] = string.charCodeAt(i);\n }\n\n return view;\n};\nexport var concatTypedArrays = function concatTypedArrays() {\n for (var _len = arguments.length, buffers = new Array(_len), _key = 0; _key < _len; _key++) {\n buffers[_key] = arguments[_key];\n }\n\n buffers = buffers.filter(function (b) {\n return b && (b.byteLength || b.length) && typeof b !== 'string';\n });\n\n if (buffers.length <= 1) {\n // for 0 length we will return empty uint8\n // for 1 length we return the first uint8\n return toUint8(buffers[0]);\n }\n\n var totalLen = buffers.reduce(function (total, buf, i) {\n return total + (buf.byteLength || buf.length);\n }, 0);\n var tempBuffer = new Uint8Array(totalLen);\n var offset = 0;\n buffers.forEach(function (buf) {\n buf = toUint8(buf);\n tempBuffer.set(buf, offset);\n offset += buf.byteLength;\n });\n return tempBuffer;\n};\n/**\n * Check if the bytes \"b\" are contained within bytes \"a\".\n *\n * @param {Uint8Array|Array} a\n * Bytes to check in\n *\n * @param {Uint8Array|Array} b\n * Bytes to check for\n *\n * @param {Object} options\n * options\n *\n * @param {Array|Uint8Array} [offset=0]\n * offset to use when looking at bytes in a\n *\n * @param {Array|Uint8Array} [mask=[]]\n * mask to use on bytes before comparison.\n *\n * @return {boolean}\n * If all bytes in b are inside of a, taking into account\n * bit masks.\n */\n\nexport var bytesMatch = function bytesMatch(a, b, _temp3) {\n var _ref3 = _temp3 === void 0 ? {} : _temp3,\n _ref3$offset = _ref3.offset,\n offset = _ref3$offset === void 0 ? 0 : _ref3$offset,\n _ref3$mask = _ref3.mask,\n mask = _ref3$mask === void 0 ? [] : _ref3$mask;\n\n a = toUint8(a);\n b = toUint8(b); // ie 11 does not support uint8 every\n\n var fn = b.every ? b.every : Array.prototype.every;\n return b.length && a.length - offset >= b.length && // ie 11 doesn't support every on uin8\n fn.call(b, function (bByte, i) {\n var aByte = mask[i] ? mask[i] & a[offset + i] : a[offset + i];\n return bByte === aByte;\n });\n};\nexport var sliceBytes = function sliceBytes(src, start, end) {\n if (Uint8Array.prototype.slice) {\n return Uint8Array.prototype.slice.call(src, start, end);\n }\n\n return new Uint8Array(Array.prototype.slice.call(src, start, end));\n};\nexport var reverseBytes = function reverseBytes(src) {\n if (src.reverse) {\n return src.reverse();\n }\n\n return Array.prototype.reverse.call(src);\n};","/**\n * Loops through all supported media groups in master and calls the provided\n * callback for each group\n *\n * @param {Object} master\n * The parsed master manifest object\n * @param {string[]} groups\n * The media groups to call the callback for\n * @param {Function} callback\n * Callback to call for each media group\n */\nexport var forEachMediaGroup = function forEachMediaGroup(master, groups, callback) {\n groups.forEach(function (mediaType) {\n for (var groupKey in master.mediaGroups[mediaType]) {\n for (var labelKey in master.mediaGroups[mediaType][groupKey]) {\n var mediaProperties = master.mediaGroups[mediaType][groupKey][labelKey];\n callback(mediaProperties, mediaType, groupKey, labelKey);\n }\n }\n });\n};","'use strict'\n\n/**\n * Ponyfill for `Array.prototype.find` which is only available in ES6 runtimes.\n *\n * Works with anything that has a `length` property and index access properties, including NodeList.\n *\n * @template {unknown} T\n * @param {Array | ({length:number, [number]: T})} list\n * @param {function (item: T, index: number, list:Array | ({length:number, [number]: T})):boolean} predicate\n * @param {Partial>?} ac `Array.prototype` by default,\n * \t\t\t\tallows injecting a custom implementation in tests\n * @returns {T | undefined}\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find\n * @see https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.find\n */\nfunction find(list, predicate, ac) {\n\tif (ac === undefined) {\n\t\tac = Array.prototype;\n\t}\n\tif (list && typeof ac.find === 'function') {\n\t\treturn ac.find.call(list, predicate);\n\t}\n\tfor (var i = 0; i < list.length; i++) {\n\t\tif (Object.prototype.hasOwnProperty.call(list, i)) {\n\t\t\tvar item = list[i];\n\t\t\tif (predicate.call(undefined, item, i, list)) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * \"Shallow freezes\" an object to render it immutable.\n * Uses `Object.freeze` if available,\n * otherwise the immutability is only in the type.\n *\n * Is used to create \"enum like\" objects.\n *\n * @template T\n * @param {T} object the object to freeze\n * @param {Pick = Object} oc `Object` by default,\n * \t\t\t\tallows to inject custom object constructor for tests\n * @returns {Readonly}\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze\n */\nfunction freeze(object, oc) {\n\tif (oc === undefined) {\n\t\toc = Object\n\t}\n\treturn oc && typeof oc.freeze === 'function' ? oc.freeze(object) : object\n}\n\n/**\n * Since we can not rely on `Object.assign` we provide a simplified version\n * that is sufficient for our needs.\n *\n * @param {Object} target\n * @param {Object | null | undefined} source\n *\n * @returns {Object} target\n * @throws TypeError if target is not an object\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n * @see https://tc39.es/ecma262/multipage/fundamental-objects.html#sec-object.assign\n */\nfunction assign(target, source) {\n\tif (target === null || typeof target !== 'object') {\n\t\tthrow new TypeError('target is not an object')\n\t}\n\tfor (var key in source) {\n\t\tif (Object.prototype.hasOwnProperty.call(source, key)) {\n\t\t\ttarget[key] = source[key]\n\t\t}\n\t}\n\treturn target\n}\n\n/**\n * All mime types that are allowed as input to `DOMParser.parseFromString`\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString#Argument02 MDN\n * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#domparsersupportedtype WHATWG HTML Spec\n * @see DOMParser.prototype.parseFromString\n */\nvar MIME_TYPE = freeze({\n\t/**\n\t * `text/html`, the only mime type that triggers treating an XML document as HTML.\n\t *\n\t * @see DOMParser.SupportedType.isHTML\n\t * @see https://www.iana.org/assignments/media-types/text/html IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/HTML Wikipedia\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString MDN\n\t * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring WHATWG HTML Spec\n\t */\n\tHTML: 'text/html',\n\n\t/**\n\t * Helper method to check a mime type if it indicates an HTML document\n\t *\n\t * @param {string} [value]\n\t * @returns {boolean}\n\t *\n\t * @see https://www.iana.org/assignments/media-types/text/html IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/HTML Wikipedia\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString MDN\n\t * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring \t */\n\tisHTML: function (value) {\n\t\treturn value === MIME_TYPE.HTML\n\t},\n\n\t/**\n\t * `application/xml`, the standard mime type for XML documents.\n\t *\n\t * @see https://www.iana.org/assignments/media-types/application/xml IANA MimeType registration\n\t * @see https://tools.ietf.org/html/rfc7303#section-9.1 RFC 7303\n\t * @see https://en.wikipedia.org/wiki/XML_and_MIME Wikipedia\n\t */\n\tXML_APPLICATION: 'application/xml',\n\n\t/**\n\t * `text/html`, an alias for `application/xml`.\n\t *\n\t * @see https://tools.ietf.org/html/rfc7303#section-9.2 RFC 7303\n\t * @see https://www.iana.org/assignments/media-types/text/xml IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/XML_and_MIME Wikipedia\n\t */\n\tXML_TEXT: 'text/xml',\n\n\t/**\n\t * `application/xhtml+xml`, indicates an XML document that has the default HTML namespace,\n\t * but is parsed as an XML document.\n\t *\n\t * @see https://www.iana.org/assignments/media-types/application/xhtml+xml IANA MimeType registration\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocument WHATWG DOM Spec\n\t * @see https://en.wikipedia.org/wiki/XHTML Wikipedia\n\t */\n\tXML_XHTML_APPLICATION: 'application/xhtml+xml',\n\n\t/**\n\t * `image/svg+xml`,\n\t *\n\t * @see https://www.iana.org/assignments/media-types/image/svg+xml IANA MimeType registration\n\t * @see https://www.w3.org/TR/SVG11/ W3C SVG 1.1\n\t * @see https://en.wikipedia.org/wiki/Scalable_Vector_Graphics Wikipedia\n\t */\n\tXML_SVG_IMAGE: 'image/svg+xml',\n})\n\n/**\n * Namespaces that are used in this code base.\n *\n * @see http://www.w3.org/TR/REC-xml-names\n */\nvar NAMESPACE = freeze({\n\t/**\n\t * The XHTML namespace.\n\t *\n\t * @see http://www.w3.org/1999/xhtml\n\t */\n\tHTML: 'http://www.w3.org/1999/xhtml',\n\n\t/**\n\t * Checks if `uri` equals `NAMESPACE.HTML`.\n\t *\n\t * @param {string} [uri]\n\t *\n\t * @see NAMESPACE.HTML\n\t */\n\tisHTML: function (uri) {\n\t\treturn uri === NAMESPACE.HTML\n\t},\n\n\t/**\n\t * The SVG namespace.\n\t *\n\t * @see http://www.w3.org/2000/svg\n\t */\n\tSVG: 'http://www.w3.org/2000/svg',\n\n\t/**\n\t * The `xml:` namespace.\n\t *\n\t * @see http://www.w3.org/XML/1998/namespace\n\t */\n\tXML: 'http://www.w3.org/XML/1998/namespace',\n\n\t/**\n\t * The `xmlns:` namespace\n\t *\n\t * @see https://www.w3.org/2000/xmlns/\n\t */\n\tXMLNS: 'http://www.w3.org/2000/xmlns/',\n})\n\nexports.assign = assign;\nexports.find = find;\nexports.freeze = freeze;\nexports.MIME_TYPE = MIME_TYPE;\nexports.NAMESPACE = NAMESPACE;\n","var conventions = require(\"./conventions\");\n\nvar find = conventions.find;\nvar NAMESPACE = conventions.NAMESPACE;\n\n/**\n * A prerequisite for `[].filter`, to drop elements that are empty\n * @param {string} input\n * @returns {boolean}\n */\nfunction notEmptyString (input) {\n\treturn input !== ''\n}\n/**\n * @see https://infra.spec.whatwg.org/#split-on-ascii-whitespace\n * @see https://infra.spec.whatwg.org/#ascii-whitespace\n *\n * @param {string} input\n * @returns {string[]} (can be empty)\n */\nfunction splitOnASCIIWhitespace(input) {\n\t// U+0009 TAB, U+000A LF, U+000C FF, U+000D CR, U+0020 SPACE\n\treturn input ? input.split(/[\\t\\n\\f\\r ]+/).filter(notEmptyString) : []\n}\n\n/**\n * Adds element as a key to current if it is not already present.\n *\n * @param {Record} current\n * @param {string} element\n * @returns {Record}\n */\nfunction orderedSetReducer (current, element) {\n\tif (!current.hasOwnProperty(element)) {\n\t\tcurrent[element] = true;\n\t}\n\treturn current;\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#ordered-set\n * @param {string} input\n * @returns {string[]}\n */\nfunction toOrderedSet(input) {\n\tif (!input) return [];\n\tvar list = splitOnASCIIWhitespace(input);\n\treturn Object.keys(list.reduce(orderedSetReducer, {}))\n}\n\n/**\n * Uses `list.indexOf` to implement something like `Array.prototype.includes`,\n * which we can not rely on being available.\n *\n * @param {any[]} list\n * @returns {function(any): boolean}\n */\nfunction arrayIncludes (list) {\n\treturn function(element) {\n\t\treturn list && list.indexOf(element) !== -1;\n\t}\n}\n\nfunction copy(src,dest){\n\tfor(var p in src){\n\t\tif (Object.prototype.hasOwnProperty.call(src, p)) {\n\t\t\tdest[p] = src[p];\n\t\t}\n\t}\n}\n\n/**\n^\\w+\\.prototype\\.([_\\w]+)\\s*=\\s*((?:.*\\{\\s*?[\\r\\n][\\s\\S]*?^})|\\S.*?(?=[;\\r\\n]));?\n^\\w+\\.prototype\\.([_\\w]+)\\s*=\\s*(\\S.*?(?=[;\\r\\n]));?\n */\nfunction _extends(Class,Super){\n\tvar pt = Class.prototype;\n\tif(!(pt instanceof Super)){\n\t\tfunction t(){};\n\t\tt.prototype = Super.prototype;\n\t\tt = new t();\n\t\tcopy(pt,t);\n\t\tClass.prototype = pt = t;\n\t}\n\tif(pt.constructor != Class){\n\t\tif(typeof Class != 'function'){\n\t\t\tconsole.error(\"unknown Class:\"+Class)\n\t\t}\n\t\tpt.constructor = Class\n\t}\n}\n\n// Node Types\nvar NodeType = {}\nvar ELEMENT_NODE = NodeType.ELEMENT_NODE = 1;\nvar ATTRIBUTE_NODE = NodeType.ATTRIBUTE_NODE = 2;\nvar TEXT_NODE = NodeType.TEXT_NODE = 3;\nvar CDATA_SECTION_NODE = NodeType.CDATA_SECTION_NODE = 4;\nvar ENTITY_REFERENCE_NODE = NodeType.ENTITY_REFERENCE_NODE = 5;\nvar ENTITY_NODE = NodeType.ENTITY_NODE = 6;\nvar PROCESSING_INSTRUCTION_NODE = NodeType.PROCESSING_INSTRUCTION_NODE = 7;\nvar COMMENT_NODE = NodeType.COMMENT_NODE = 8;\nvar DOCUMENT_NODE = NodeType.DOCUMENT_NODE = 9;\nvar DOCUMENT_TYPE_NODE = NodeType.DOCUMENT_TYPE_NODE = 10;\nvar DOCUMENT_FRAGMENT_NODE = NodeType.DOCUMENT_FRAGMENT_NODE = 11;\nvar NOTATION_NODE = NodeType.NOTATION_NODE = 12;\n\n// ExceptionCode\nvar ExceptionCode = {}\nvar ExceptionMessage = {};\nvar INDEX_SIZE_ERR = ExceptionCode.INDEX_SIZE_ERR = ((ExceptionMessage[1]=\"Index size error\"),1);\nvar DOMSTRING_SIZE_ERR = ExceptionCode.DOMSTRING_SIZE_ERR = ((ExceptionMessage[2]=\"DOMString size error\"),2);\nvar HIERARCHY_REQUEST_ERR = ExceptionCode.HIERARCHY_REQUEST_ERR = ((ExceptionMessage[3]=\"Hierarchy request error\"),3);\nvar WRONG_DOCUMENT_ERR = ExceptionCode.WRONG_DOCUMENT_ERR = ((ExceptionMessage[4]=\"Wrong document\"),4);\nvar INVALID_CHARACTER_ERR = ExceptionCode.INVALID_CHARACTER_ERR = ((ExceptionMessage[5]=\"Invalid character\"),5);\nvar NO_DATA_ALLOWED_ERR = ExceptionCode.NO_DATA_ALLOWED_ERR = ((ExceptionMessage[6]=\"No data allowed\"),6);\nvar NO_MODIFICATION_ALLOWED_ERR = ExceptionCode.NO_MODIFICATION_ALLOWED_ERR = ((ExceptionMessage[7]=\"No modification allowed\"),7);\nvar NOT_FOUND_ERR = ExceptionCode.NOT_FOUND_ERR = ((ExceptionMessage[8]=\"Not found\"),8);\nvar NOT_SUPPORTED_ERR = ExceptionCode.NOT_SUPPORTED_ERR = ((ExceptionMessage[9]=\"Not supported\"),9);\nvar INUSE_ATTRIBUTE_ERR = ExceptionCode.INUSE_ATTRIBUTE_ERR = ((ExceptionMessage[10]=\"Attribute in use\"),10);\n//level2\nvar INVALID_STATE_ERR \t= ExceptionCode.INVALID_STATE_ERR \t= ((ExceptionMessage[11]=\"Invalid state\"),11);\nvar SYNTAX_ERR \t= ExceptionCode.SYNTAX_ERR \t= ((ExceptionMessage[12]=\"Syntax error\"),12);\nvar INVALID_MODIFICATION_ERR \t= ExceptionCode.INVALID_MODIFICATION_ERR \t= ((ExceptionMessage[13]=\"Invalid modification\"),13);\nvar NAMESPACE_ERR \t= ExceptionCode.NAMESPACE_ERR \t= ((ExceptionMessage[14]=\"Invalid namespace\"),14);\nvar INVALID_ACCESS_ERR \t= ExceptionCode.INVALID_ACCESS_ERR \t= ((ExceptionMessage[15]=\"Invalid access\"),15);\n\n/**\n * DOM Level 2\n * Object DOMException\n * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html\n * @see http://www.w3.org/TR/REC-DOM-Level-1/ecma-script-language-binding.html\n */\nfunction DOMException(code, message) {\n\tif(message instanceof Error){\n\t\tvar error = message;\n\t}else{\n\t\terror = this;\n\t\tError.call(this, ExceptionMessage[code]);\n\t\tthis.message = ExceptionMessage[code];\n\t\tif(Error.captureStackTrace) Error.captureStackTrace(this, DOMException);\n\t}\n\terror.code = code;\n\tif(message) this.message = this.message + \": \" + message;\n\treturn error;\n};\nDOMException.prototype = Error.prototype;\ncopy(ExceptionCode,DOMException)\n\n/**\n * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-536297177\n * The NodeList interface provides the abstraction of an ordered collection of nodes, without defining or constraining how this collection is implemented. NodeList objects in the DOM are live.\n * The items in the NodeList are accessible via an integral index, starting from 0.\n */\nfunction NodeList() {\n};\nNodeList.prototype = {\n\t/**\n\t * The number of nodes in the list. The range of valid child node indices is 0 to length-1 inclusive.\n\t * @standard level1\n\t */\n\tlength:0,\n\t/**\n\t * Returns the indexth item in the collection. If index is greater than or equal to the number of nodes in the list, this returns null.\n\t * @standard level1\n\t * @param index unsigned long\n\t * Index into the collection.\n\t * @return Node\n\t * \tThe node at the indexth position in the NodeList, or null if that is not a valid index.\n\t */\n\titem: function(index) {\n\t\treturn index >= 0 && index < this.length ? this[index] : null;\n\t},\n\ttoString:function(isHTML,nodeFilter){\n\t\tfor(var buf = [], i = 0;i=0){\n\t\tvar lastIndex = list.length-1\n\t\twhile(i0 || key == 'xmlns'){\n//\t\t\treturn null;\n//\t\t}\n\t\t//console.log()\n\t\tvar i = this.length;\n\t\twhile(i--){\n\t\t\tvar attr = this[i];\n\t\t\t//console.log(attr.nodeName,key)\n\t\t\tif(attr.nodeName == key){\n\t\t\t\treturn attr;\n\t\t\t}\n\t\t}\n\t},\n\tsetNamedItem: function(attr) {\n\t\tvar el = attr.ownerElement;\n\t\tif(el && el!=this._ownerElement){\n\t\t\tthrow new DOMException(INUSE_ATTRIBUTE_ERR);\n\t\t}\n\t\tvar oldAttr = this.getNamedItem(attr.nodeName);\n\t\t_addNamedNode(this._ownerElement,this,attr,oldAttr);\n\t\treturn oldAttr;\n\t},\n\t/* returns Node */\n\tsetNamedItemNS: function(attr) {// raises: WRONG_DOCUMENT_ERR,NO_MODIFICATION_ALLOWED_ERR,INUSE_ATTRIBUTE_ERR\n\t\tvar el = attr.ownerElement, oldAttr;\n\t\tif(el && el!=this._ownerElement){\n\t\t\tthrow new DOMException(INUSE_ATTRIBUTE_ERR);\n\t\t}\n\t\toldAttr = this.getNamedItemNS(attr.namespaceURI,attr.localName);\n\t\t_addNamedNode(this._ownerElement,this,attr,oldAttr);\n\t\treturn oldAttr;\n\t},\n\n\t/* returns Node */\n\tremoveNamedItem: function(key) {\n\t\tvar attr = this.getNamedItem(key);\n\t\t_removeNamedNode(this._ownerElement,this,attr);\n\t\treturn attr;\n\n\n\t},// raises: NOT_FOUND_ERR,NO_MODIFICATION_ALLOWED_ERR\n\n\t//for level2\n\tremoveNamedItemNS:function(namespaceURI,localName){\n\t\tvar attr = this.getNamedItemNS(namespaceURI,localName);\n\t\t_removeNamedNode(this._ownerElement,this,attr);\n\t\treturn attr;\n\t},\n\tgetNamedItemNS: function(namespaceURI, localName) {\n\t\tvar i = this.length;\n\t\twhile(i--){\n\t\t\tvar node = this[i];\n\t\t\tif(node.localName == localName && node.namespaceURI == namespaceURI){\n\t\t\t\treturn node;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n};\n\n/**\n * The DOMImplementation interface represents an object providing methods\n * which are not dependent on any particular document.\n * Such an object is returned by the `Document.implementation` property.\n *\n * __The individual methods describe the differences compared to the specs.__\n *\n * @constructor\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation MDN\n * @see https://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-102161490 DOM Level 1 Core (Initial)\n * @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-102161490 DOM Level 2 Core\n * @see https://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-102161490 DOM Level 3 Core\n * @see https://dom.spec.whatwg.org/#domimplementation DOM Living Standard\n */\nfunction DOMImplementation() {\n}\n\nDOMImplementation.prototype = {\n\t/**\n\t * The DOMImplementation.hasFeature() method returns a Boolean flag indicating if a given feature is supported.\n\t * The different implementations fairly diverged in what kind of features were reported.\n\t * The latest version of the spec settled to force this method to always return true, where the functionality was accurate and in use.\n\t *\n\t * @deprecated It is deprecated and modern browsers return true in all cases.\n\t *\n\t * @param {string} feature\n\t * @param {string} [version]\n\t * @returns {boolean} always true\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/hasFeature MDN\n\t * @see https://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-5CED94D7 DOM Level 1 Core\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-hasfeature DOM Living Standard\n\t */\n\thasFeature: function(feature, version) {\n\t\t\treturn true;\n\t},\n\t/**\n\t * Creates an XML Document object of the specified type with its document element.\n\t *\n\t * __It behaves slightly different from the description in the living standard__:\n\t * - There is no interface/class `XMLDocument`, it returns a `Document` instance.\n\t * - `contentType`, `encoding`, `mode`, `origin`, `url` fields are currently not declared.\n\t * - this implementation is not validating names or qualified names\n\t * (when parsing XML strings, the SAX parser takes care of that)\n\t *\n\t * @param {string|null} namespaceURI\n\t * @param {string} qualifiedName\n\t * @param {DocumentType=null} doctype\n\t * @returns {Document}\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/createDocument MDN\n\t * @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#Level-2-Core-DOM-createDocument DOM Level 2 Core (initial)\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocument DOM Level 2 Core\n\t *\n\t * @see https://dom.spec.whatwg.org/#validate-and-extract DOM: Validate and extract\n\t * @see https://www.w3.org/TR/xml/#NT-NameStartChar XML Spec: Names\n\t * @see https://www.w3.org/TR/xml-names/#ns-qualnames XML Namespaces: Qualified names\n\t */\n\tcreateDocument: function(namespaceURI, qualifiedName, doctype){\n\t\tvar doc = new Document();\n\t\tdoc.implementation = this;\n\t\tdoc.childNodes = new NodeList();\n\t\tdoc.doctype = doctype || null;\n\t\tif (doctype){\n\t\t\tdoc.appendChild(doctype);\n\t\t}\n\t\tif (qualifiedName){\n\t\t\tvar root = doc.createElementNS(namespaceURI, qualifiedName);\n\t\t\tdoc.appendChild(root);\n\t\t}\n\t\treturn doc;\n\t},\n\t/**\n\t * Returns a doctype, with the given `qualifiedName`, `publicId`, and `systemId`.\n\t *\n\t * __This behavior is slightly different from the in the specs__:\n\t * - this implementation is not validating names or qualified names\n\t * (when parsing XML strings, the SAX parser takes care of that)\n\t *\n\t * @param {string} qualifiedName\n\t * @param {string} [publicId]\n\t * @param {string} [systemId]\n\t * @returns {DocumentType} which can either be used with `DOMImplementation.createDocument` upon document creation\n\t * \t\t\t\t or can be put into the document via methods like `Node.insertBefore()` or `Node.replaceChild()`\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/createDocumentType MDN\n\t * @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#Level-2-Core-DOM-createDocType DOM Level 2 Core\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocumenttype DOM Living Standard\n\t *\n\t * @see https://dom.spec.whatwg.org/#validate-and-extract DOM: Validate and extract\n\t * @see https://www.w3.org/TR/xml/#NT-NameStartChar XML Spec: Names\n\t * @see https://www.w3.org/TR/xml-names/#ns-qualnames XML Namespaces: Qualified names\n\t */\n\tcreateDocumentType: function(qualifiedName, publicId, systemId){\n\t\tvar node = new DocumentType();\n\t\tnode.name = qualifiedName;\n\t\tnode.nodeName = qualifiedName;\n\t\tnode.publicId = publicId || '';\n\t\tnode.systemId = systemId || '';\n\n\t\treturn node;\n\t}\n};\n\n\n/**\n * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1950641247\n */\n\nfunction Node() {\n};\n\nNode.prototype = {\n\tfirstChild : null,\n\tlastChild : null,\n\tpreviousSibling : null,\n\tnextSibling : null,\n\tattributes : null,\n\tparentNode : null,\n\tchildNodes : null,\n\townerDocument : null,\n\tnodeValue : null,\n\tnamespaceURI : null,\n\tprefix : null,\n\tlocalName : null,\n\t// Modified in DOM Level 2:\n\tinsertBefore:function(newChild, refChild){//raises\n\t\treturn _insertBefore(this,newChild,refChild);\n\t},\n\treplaceChild:function(newChild, oldChild){//raises\n\t\t_insertBefore(this, newChild,oldChild, assertPreReplacementValidityInDocument);\n\t\tif(oldChild){\n\t\t\tthis.removeChild(oldChild);\n\t\t}\n\t},\n\tremoveChild:function(oldChild){\n\t\treturn _removeChild(this,oldChild);\n\t},\n\tappendChild:function(newChild){\n\t\treturn this.insertBefore(newChild,null);\n\t},\n\thasChildNodes:function(){\n\t\treturn this.firstChild != null;\n\t},\n\tcloneNode:function(deep){\n\t\treturn cloneNode(this.ownerDocument||this,this,deep);\n\t},\n\t// Modified in DOM Level 2:\n\tnormalize:function(){\n\t\tvar child = this.firstChild;\n\t\twhile(child){\n\t\t\tvar next = child.nextSibling;\n\t\t\tif(next && next.nodeType == TEXT_NODE && child.nodeType == TEXT_NODE){\n\t\t\t\tthis.removeChild(next);\n\t\t\t\tchild.appendData(next.data);\n\t\t\t}else{\n\t\t\t\tchild.normalize();\n\t\t\t\tchild = next;\n\t\t\t}\n\t\t}\n\t},\n \t// Introduced in DOM Level 2:\n\tisSupported:function(feature, version){\n\t\treturn this.ownerDocument.implementation.hasFeature(feature,version);\n\t},\n // Introduced in DOM Level 2:\n hasAttributes:function(){\n \treturn this.attributes.length>0;\n },\n\t/**\n\t * Look up the prefix associated to the given namespace URI, starting from this node.\n\t * **The default namespace declarations are ignored by this method.**\n\t * See Namespace Prefix Lookup for details on the algorithm used by this method.\n\t *\n\t * _Note: The implementation seems to be incomplete when compared to the algorithm described in the specs._\n\t *\n\t * @param {string | null} namespaceURI\n\t * @returns {string | null}\n\t * @see https://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-lookupNamespacePrefix\n\t * @see https://www.w3.org/TR/DOM-Level-3-Core/namespaces-algorithms.html#lookupNamespacePrefixAlgo\n\t * @see https://dom.spec.whatwg.org/#dom-node-lookupprefix\n\t * @see https://github.com/xmldom/xmldom/issues/322\n\t */\n lookupPrefix:function(namespaceURI){\n \tvar el = this;\n \twhile(el){\n \t\tvar map = el._nsMap;\n \t\t//console.dir(map)\n \t\tif(map){\n \t\t\tfor(var n in map){\n\t\t\t\t\t\tif (Object.prototype.hasOwnProperty.call(map, n) && map[n] === namespaceURI) {\n\t\t\t\t\t\t\treturn n;\n\t\t\t\t\t\t}\n \t\t\t}\n \t\t}\n \t\tel = el.nodeType == ATTRIBUTE_NODE?el.ownerDocument : el.parentNode;\n \t}\n \treturn null;\n },\n // Introduced in DOM Level 3:\n lookupNamespaceURI:function(prefix){\n \tvar el = this;\n \twhile(el){\n \t\tvar map = el._nsMap;\n \t\t//console.dir(map)\n \t\tif(map){\n \t\t\tif(Object.prototype.hasOwnProperty.call(map, prefix)){\n \t\t\t\treturn map[prefix] ;\n \t\t\t}\n \t\t}\n \t\tel = el.nodeType == ATTRIBUTE_NODE?el.ownerDocument : el.parentNode;\n \t}\n \treturn null;\n },\n // Introduced in DOM Level 3:\n isDefaultNamespace:function(namespaceURI){\n \tvar prefix = this.lookupPrefix(namespaceURI);\n \treturn prefix == null;\n }\n};\n\n\nfunction _xmlEncoder(c){\n\treturn c == '<' && '<' ||\n c == '>' && '>' ||\n c == '&' && '&' ||\n c == '\"' && '"' ||\n '&#'+c.charCodeAt()+';'\n}\n\n\ncopy(NodeType,Node);\ncopy(NodeType,Node.prototype);\n\n/**\n * @param callback return true for continue,false for break\n * @return boolean true: break visit;\n */\nfunction _visitNode(node,callback){\n\tif(callback(node)){\n\t\treturn true;\n\t}\n\tif(node = node.firstChild){\n\t\tdo{\n\t\t\tif(_visitNode(node,callback)){return true}\n }while(node=node.nextSibling)\n }\n}\n\n\n\nfunction Document(){\n\tthis.ownerDocument = this;\n}\n\nfunction _onAddAttribute(doc,el,newAttr){\n\tdoc && doc._inc++;\n\tvar ns = newAttr.namespaceURI ;\n\tif(ns === NAMESPACE.XMLNS){\n\t\t//update namespace\n\t\tel._nsMap[newAttr.prefix?newAttr.localName:''] = newAttr.value\n\t}\n}\n\nfunction _onRemoveAttribute(doc,el,newAttr,remove){\n\tdoc && doc._inc++;\n\tvar ns = newAttr.namespaceURI ;\n\tif(ns === NAMESPACE.XMLNS){\n\t\t//update namespace\n\t\tdelete el._nsMap[newAttr.prefix?newAttr.localName:'']\n\t}\n}\n\n/**\n * Updates `el.childNodes`, updating the indexed items and it's `length`.\n * Passing `newChild` means it will be appended.\n * Otherwise it's assumed that an item has been removed,\n * and `el.firstNode` and it's `.nextSibling` are used\n * to walk the current list of child nodes.\n *\n * @param {Document} doc\n * @param {Node} el\n * @param {Node} [newChild]\n * @private\n */\nfunction _onUpdateChild (doc, el, newChild) {\n\tif(doc && doc._inc){\n\t\tdoc._inc++;\n\t\t//update childNodes\n\t\tvar cs = el.childNodes;\n\t\tif (newChild) {\n\t\t\tcs[cs.length++] = newChild;\n\t\t} else {\n\t\t\tvar child = el.firstChild;\n\t\t\tvar i = 0;\n\t\t\twhile (child) {\n\t\t\t\tcs[i++] = child;\n\t\t\t\tchild = child.nextSibling;\n\t\t\t}\n\t\t\tcs.length = i;\n\t\t\tdelete cs[cs.length];\n\t\t}\n\t}\n}\n\n/**\n * Removes the connections between `parentNode` and `child`\n * and any existing `child.previousSibling` or `child.nextSibling`.\n *\n * @see https://github.com/xmldom/xmldom/issues/135\n * @see https://github.com/xmldom/xmldom/issues/145\n *\n * @param {Node} parentNode\n * @param {Node} child\n * @returns {Node} the child that was removed.\n * @private\n */\nfunction _removeChild (parentNode, child) {\n\tvar previous = child.previousSibling;\n\tvar next = child.nextSibling;\n\tif (previous) {\n\t\tprevious.nextSibling = next;\n\t} else {\n\t\tparentNode.firstChild = next;\n\t}\n\tif (next) {\n\t\tnext.previousSibling = previous;\n\t} else {\n\t\tparentNode.lastChild = previous;\n\t}\n\tchild.parentNode = null;\n\tchild.previousSibling = null;\n\tchild.nextSibling = null;\n\t_onUpdateChild(parentNode.ownerDocument, parentNode);\n\treturn child;\n}\n\n/**\n * Returns `true` if `node` can be a parent for insertion.\n * @param {Node} node\n * @returns {boolean}\n */\nfunction hasValidParentNodeType(node) {\n\treturn (\n\t\tnode &&\n\t\t(node.nodeType === Node.DOCUMENT_NODE || node.nodeType === Node.DOCUMENT_FRAGMENT_NODE || node.nodeType === Node.ELEMENT_NODE)\n\t);\n}\n\n/**\n * Returns `true` if `node` can be inserted according to it's `nodeType`.\n * @param {Node} node\n * @returns {boolean}\n */\nfunction hasInsertableNodeType(node) {\n\treturn (\n\t\tnode &&\n\t\t(isElementNode(node) ||\n\t\t\tisTextNode(node) ||\n\t\t\tisDocTypeNode(node) ||\n\t\t\tnode.nodeType === Node.DOCUMENT_FRAGMENT_NODE ||\n\t\t\tnode.nodeType === Node.COMMENT_NODE ||\n\t\t\tnode.nodeType === Node.PROCESSING_INSTRUCTION_NODE)\n\t);\n}\n\n/**\n * Returns true if `node` is a DOCTYPE node\n * @param {Node} node\n * @returns {boolean}\n */\nfunction isDocTypeNode(node) {\n\treturn node && node.nodeType === Node.DOCUMENT_TYPE_NODE;\n}\n\n/**\n * Returns true if the node is an element\n * @param {Node} node\n * @returns {boolean}\n */\nfunction isElementNode(node) {\n\treturn node && node.nodeType === Node.ELEMENT_NODE;\n}\n/**\n * Returns true if `node` is a text node\n * @param {Node} node\n * @returns {boolean}\n */\nfunction isTextNode(node) {\n\treturn node && node.nodeType === Node.TEXT_NODE;\n}\n\n/**\n * Check if en element node can be inserted before `child`, or at the end if child is falsy,\n * according to the presence and position of a doctype node on the same level.\n *\n * @param {Document} doc The document node\n * @param {Node} child the node that would become the nextSibling if the element would be inserted\n * @returns {boolean} `true` if an element can be inserted before child\n * @private\n * https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n */\nfunction isElementInsertionPossible(doc, child) {\n\tvar parentChildNodes = doc.childNodes || [];\n\tif (find(parentChildNodes, isElementNode) || isDocTypeNode(child)) {\n\t\treturn false;\n\t}\n\tvar docTypeNode = find(parentChildNodes, isDocTypeNode);\n\treturn !(child && docTypeNode && parentChildNodes.indexOf(docTypeNode) > parentChildNodes.indexOf(child));\n}\n\n/**\n * Check if en element node can be inserted before `child`, or at the end if child is falsy,\n * according to the presence and position of a doctype node on the same level.\n *\n * @param {Node} doc The document node\n * @param {Node} child the node that would become the nextSibling if the element would be inserted\n * @returns {boolean} `true` if an element can be inserted before child\n * @private\n * https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n */\nfunction isElementReplacementPossible(doc, child) {\n\tvar parentChildNodes = doc.childNodes || [];\n\n\tfunction hasElementChildThatIsNotChild(node) {\n\t\treturn isElementNode(node) && node !== child;\n\t}\n\n\tif (find(parentChildNodes, hasElementChildThatIsNotChild)) {\n\t\treturn false;\n\t}\n\tvar docTypeNode = find(parentChildNodes, isDocTypeNode);\n\treturn !(child && docTypeNode && parentChildNodes.indexOf(docTypeNode) > parentChildNodes.indexOf(child));\n}\n\n/**\n * @private\n * Steps 1-5 of the checks before inserting and before replacing a child are the same.\n *\n * @param {Node} parent the parent node to insert `node` into\n * @param {Node} node the node to insert\n * @param {Node=} child the node that should become the `nextSibling` of `node`\n * @returns {Node}\n * @throws DOMException for several node combinations that would create a DOM that is not well-formed.\n * @throws DOMException if `child` is provided but is not a child of `parent`.\n * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n * @see https://dom.spec.whatwg.org/#concept-node-replace\n */\nfunction assertPreInsertionValidity1to5(parent, node, child) {\n\t// 1. If `parent` is not a Document, DocumentFragment, or Element node, then throw a \"HierarchyRequestError\" DOMException.\n\tif (!hasValidParentNodeType(parent)) {\n\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Unexpected parent node type ' + parent.nodeType);\n\t}\n\t// 2. If `node` is a host-including inclusive ancestor of `parent`, then throw a \"HierarchyRequestError\" DOMException.\n\t// not implemented!\n\t// 3. If `child` is non-null and its parent is not `parent`, then throw a \"NotFoundError\" DOMException.\n\tif (child && child.parentNode !== parent) {\n\t\tthrow new DOMException(NOT_FOUND_ERR, 'child not in parent');\n\t}\n\tif (\n\t\t// 4. If `node` is not a DocumentFragment, DocumentType, Element, or CharacterData node, then throw a \"HierarchyRequestError\" DOMException.\n\t\t!hasInsertableNodeType(node) ||\n\t\t// 5. If either `node` is a Text node and `parent` is a document,\n\t\t// the sax parser currently adds top level text nodes, this will be fixed in 0.9.0\n\t\t// || (node.nodeType === Node.TEXT_NODE && parent.nodeType === Node.DOCUMENT_NODE)\n\t\t// or `node` is a doctype and `parent` is not a document, then throw a \"HierarchyRequestError\" DOMException.\n\t\t(isDocTypeNode(node) && parent.nodeType !== Node.DOCUMENT_NODE)\n\t) {\n\t\tthrow new DOMException(\n\t\t\tHIERARCHY_REQUEST_ERR,\n\t\t\t'Unexpected node type ' + node.nodeType + ' for parent node type ' + parent.nodeType\n\t\t);\n\t}\n}\n\n/**\n * @private\n * Step 6 of the checks before inserting and before replacing a child are different.\n *\n * @param {Document} parent the parent node to insert `node` into\n * @param {Node} node the node to insert\n * @param {Node | undefined} child the node that should become the `nextSibling` of `node`\n * @returns {Node}\n * @throws DOMException for several node combinations that would create a DOM that is not well-formed.\n * @throws DOMException if `child` is provided but is not a child of `parent`.\n * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n * @see https://dom.spec.whatwg.org/#concept-node-replace\n */\nfunction assertPreInsertionValidityInDocument(parent, node, child) {\n\tvar parentChildNodes = parent.childNodes || [];\n\tvar nodeChildNodes = node.childNodes || [];\n\n\t// DocumentFragment\n\tif (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n\t\tvar nodeChildElements = nodeChildNodes.filter(isElementNode);\n\t\t// If node has more than one element child or has a Text node child.\n\t\tif (nodeChildElements.length > 1 || find(nodeChildNodes, isTextNode)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'More than one element or text in fragment');\n\t\t}\n\t\t// Otherwise, if `node` has one element child and either `parent` has an element child,\n\t\t// `child` is a doctype, or `child` is non-null and a doctype is following `child`.\n\t\tif (nodeChildElements.length === 1 && !isElementInsertionPossible(parent, child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Element in fragment can not be inserted before doctype');\n\t\t}\n\t}\n\t// Element\n\tif (isElementNode(node)) {\n\t\t// `parent` has an element child, `child` is a doctype,\n\t\t// or `child` is non-null and a doctype is following `child`.\n\t\tif (!isElementInsertionPossible(parent, child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Only one element can be added and only after doctype');\n\t\t}\n\t}\n\t// DocumentType\n\tif (isDocTypeNode(node)) {\n\t\t// `parent` has a doctype child,\n\t\tif (find(parentChildNodes, isDocTypeNode)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Only one doctype is allowed');\n\t\t}\n\t\tvar parentElementChild = find(parentChildNodes, isElementNode);\n\t\t// `child` is non-null and an element is preceding `child`,\n\t\tif (child && parentChildNodes.indexOf(parentElementChild) < parentChildNodes.indexOf(child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Doctype can only be inserted before an element');\n\t\t}\n\t\t// or `child` is null and `parent` has an element child.\n\t\tif (!child && parentElementChild) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Doctype can not be appended since element is present');\n\t\t}\n\t}\n}\n\n/**\n * @private\n * Step 6 of the checks before inserting and before replacing a child are different.\n *\n * @param {Document} parent the parent node to insert `node` into\n * @param {Node} node the node to insert\n * @param {Node | undefined} child the node that should become the `nextSibling` of `node`\n * @returns {Node}\n * @throws DOMException for several node combinations that would create a DOM that is not well-formed.\n * @throws DOMException if `child` is provided but is not a child of `parent`.\n * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n * @see https://dom.spec.whatwg.org/#concept-node-replace\n */\nfunction assertPreReplacementValidityInDocument(parent, node, child) {\n\tvar parentChildNodes = parent.childNodes || [];\n\tvar nodeChildNodes = node.childNodes || [];\n\n\t// DocumentFragment\n\tif (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n\t\tvar nodeChildElements = nodeChildNodes.filter(isElementNode);\n\t\t// If `node` has more than one element child or has a Text node child.\n\t\tif (nodeChildElements.length > 1 || find(nodeChildNodes, isTextNode)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'More than one element or text in fragment');\n\t\t}\n\t\t// Otherwise, if `node` has one element child and either `parent` has an element child that is not `child` or a doctype is following `child`.\n\t\tif (nodeChildElements.length === 1 && !isElementReplacementPossible(parent, child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Element in fragment can not be inserted before doctype');\n\t\t}\n\t}\n\t// Element\n\tif (isElementNode(node)) {\n\t\t// `parent` has an element child that is not `child` or a doctype is following `child`.\n\t\tif (!isElementReplacementPossible(parent, child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Only one element can be added and only after doctype');\n\t\t}\n\t}\n\t// DocumentType\n\tif (isDocTypeNode(node)) {\n\t\tfunction hasDoctypeChildThatIsNotChild(node) {\n\t\t\treturn isDocTypeNode(node) && node !== child;\n\t\t}\n\n\t\t// `parent` has a doctype child that is not `child`,\n\t\tif (find(parentChildNodes, hasDoctypeChildThatIsNotChild)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Only one doctype is allowed');\n\t\t}\n\t\tvar parentElementChild = find(parentChildNodes, isElementNode);\n\t\t// or an element is preceding `child`.\n\t\tif (child && parentChildNodes.indexOf(parentElementChild) < parentChildNodes.indexOf(child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Doctype can only be inserted before an element');\n\t\t}\n\t}\n}\n\n/**\n * @private\n * @param {Node} parent the parent node to insert `node` into\n * @param {Node} node the node to insert\n * @param {Node=} child the node that should become the `nextSibling` of `node`\n * @returns {Node}\n * @throws DOMException for several node combinations that would create a DOM that is not well-formed.\n * @throws DOMException if `child` is provided but is not a child of `parent`.\n * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n */\nfunction _insertBefore(parent, node, child, _inDocumentAssertion) {\n\t// To ensure pre-insertion validity of a node into a parent before a child, run these steps:\n\tassertPreInsertionValidity1to5(parent, node, child);\n\n\t// If parent is a document, and any of the statements below, switched on the interface node implements,\n\t// are true, then throw a \"HierarchyRequestError\" DOMException.\n\tif (parent.nodeType === Node.DOCUMENT_NODE) {\n\t\t(_inDocumentAssertion || assertPreInsertionValidityInDocument)(parent, node, child);\n\t}\n\n\tvar cp = node.parentNode;\n\tif(cp){\n\t\tcp.removeChild(node);//remove and update\n\t}\n\tif(node.nodeType === DOCUMENT_FRAGMENT_NODE){\n\t\tvar newFirst = node.firstChild;\n\t\tif (newFirst == null) {\n\t\t\treturn node;\n\t\t}\n\t\tvar newLast = node.lastChild;\n\t}else{\n\t\tnewFirst = newLast = node;\n\t}\n\tvar pre = child ? child.previousSibling : parent.lastChild;\n\n\tnewFirst.previousSibling = pre;\n\tnewLast.nextSibling = child;\n\n\n\tif(pre){\n\t\tpre.nextSibling = newFirst;\n\t}else{\n\t\tparent.firstChild = newFirst;\n\t}\n\tif(child == null){\n\t\tparent.lastChild = newLast;\n\t}else{\n\t\tchild.previousSibling = newLast;\n\t}\n\tdo{\n\t\tnewFirst.parentNode = parent;\n\t}while(newFirst !== newLast && (newFirst= newFirst.nextSibling))\n\t_onUpdateChild(parent.ownerDocument||parent, parent);\n\t//console.log(parent.lastChild.nextSibling == null)\n\tif (node.nodeType == DOCUMENT_FRAGMENT_NODE) {\n\t\tnode.firstChild = node.lastChild = null;\n\t}\n\treturn node;\n}\n\n/**\n * Appends `newChild` to `parentNode`.\n * If `newChild` is already connected to a `parentNode` it is first removed from it.\n *\n * @see https://github.com/xmldom/xmldom/issues/135\n * @see https://github.com/xmldom/xmldom/issues/145\n * @param {Node} parentNode\n * @param {Node} newChild\n * @returns {Node}\n * @private\n */\nfunction _appendSingleChild (parentNode, newChild) {\n\tif (newChild.parentNode) {\n\t\tnewChild.parentNode.removeChild(newChild);\n\t}\n\tnewChild.parentNode = parentNode;\n\tnewChild.previousSibling = parentNode.lastChild;\n\tnewChild.nextSibling = null;\n\tif (newChild.previousSibling) {\n\t\tnewChild.previousSibling.nextSibling = newChild;\n\t} else {\n\t\tparentNode.firstChild = newChild;\n\t}\n\tparentNode.lastChild = newChild;\n\t_onUpdateChild(parentNode.ownerDocument, parentNode, newChild);\n\treturn newChild;\n}\n\nDocument.prototype = {\n\t//implementation : null,\n\tnodeName : '#document',\n\tnodeType : DOCUMENT_NODE,\n\t/**\n\t * The DocumentType node of the document.\n\t *\n\t * @readonly\n\t * @type DocumentType\n\t */\n\tdoctype : null,\n\tdocumentElement : null,\n\t_inc : 1,\n\n\tinsertBefore : function(newChild, refChild){//raises\n\t\tif(newChild.nodeType == DOCUMENT_FRAGMENT_NODE){\n\t\t\tvar child = newChild.firstChild;\n\t\t\twhile(child){\n\t\t\t\tvar next = child.nextSibling;\n\t\t\t\tthis.insertBefore(child,refChild);\n\t\t\t\tchild = next;\n\t\t\t}\n\t\t\treturn newChild;\n\t\t}\n\t\t_insertBefore(this, newChild, refChild);\n\t\tnewChild.ownerDocument = this;\n\t\tif (this.documentElement === null && newChild.nodeType === ELEMENT_NODE) {\n\t\t\tthis.documentElement = newChild;\n\t\t}\n\n\t\treturn newChild;\n\t},\n\tremoveChild : function(oldChild){\n\t\tif(this.documentElement == oldChild){\n\t\t\tthis.documentElement = null;\n\t\t}\n\t\treturn _removeChild(this,oldChild);\n\t},\n\treplaceChild: function (newChild, oldChild) {\n\t\t//raises\n\t\t_insertBefore(this, newChild, oldChild, assertPreReplacementValidityInDocument);\n\t\tnewChild.ownerDocument = this;\n\t\tif (oldChild) {\n\t\t\tthis.removeChild(oldChild);\n\t\t}\n\t\tif (isElementNode(newChild)) {\n\t\t\tthis.documentElement = newChild;\n\t\t}\n\t},\n\t// Introduced in DOM Level 2:\n\timportNode : function(importedNode,deep){\n\t\treturn importNode(this,importedNode,deep);\n\t},\n\t// Introduced in DOM Level 2:\n\tgetElementById :\tfunction(id){\n\t\tvar rtv = null;\n\t\t_visitNode(this.documentElement,function(node){\n\t\t\tif(node.nodeType == ELEMENT_NODE){\n\t\t\t\tif(node.getAttribute('id') == id){\n\t\t\t\t\trtv = node;\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t\treturn rtv;\n\t},\n\n\t/**\n\t * The `getElementsByClassName` method of `Document` interface returns an array-like object\n\t * of all child elements which have **all** of the given class name(s).\n\t *\n\t * Returns an empty list if `classeNames` is an empty string or only contains HTML white space characters.\n\t *\n\t *\n\t * Warning: This is a live LiveNodeList.\n\t * Changes in the DOM will reflect in the array as the changes occur.\n\t * If an element selected by this array no longer qualifies for the selector,\n\t * it will automatically be removed. Be aware of this for iteration purposes.\n\t *\n\t * @param {string} classNames is a string representing the class name(s) to match; multiple class names are separated by (ASCII-)whitespace\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByClassName\n\t * @see https://dom.spec.whatwg.org/#concept-getelementsbyclassname\n\t */\n\tgetElementsByClassName: function(classNames) {\n\t\tvar classNamesSet = toOrderedSet(classNames)\n\t\treturn new LiveNodeList(this, function(base) {\n\t\t\tvar ls = [];\n\t\t\tif (classNamesSet.length > 0) {\n\t\t\t\t_visitNode(base.documentElement, function(node) {\n\t\t\t\t\tif(node !== base && node.nodeType === ELEMENT_NODE) {\n\t\t\t\t\t\tvar nodeClassNames = node.getAttribute('class')\n\t\t\t\t\t\t// can be null if the attribute does not exist\n\t\t\t\t\t\tif (nodeClassNames) {\n\t\t\t\t\t\t\t// before splitting and iterating just compare them for the most common case\n\t\t\t\t\t\t\tvar matches = classNames === nodeClassNames;\n\t\t\t\t\t\t\tif (!matches) {\n\t\t\t\t\t\t\t\tvar nodeClassNamesSet = toOrderedSet(nodeClassNames)\n\t\t\t\t\t\t\t\tmatches = classNamesSet.every(arrayIncludes(nodeClassNamesSet))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(matches) {\n\t\t\t\t\t\t\t\tls.push(node);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn ls;\n\t\t});\n\t},\n\n\t//document factory method:\n\tcreateElement :\tfunction(tagName){\n\t\tvar node = new Element();\n\t\tnode.ownerDocument = this;\n\t\tnode.nodeName = tagName;\n\t\tnode.tagName = tagName;\n\t\tnode.localName = tagName;\n\t\tnode.childNodes = new NodeList();\n\t\tvar attrs\t= node.attributes = new NamedNodeMap();\n\t\tattrs._ownerElement = node;\n\t\treturn node;\n\t},\n\tcreateDocumentFragment :\tfunction(){\n\t\tvar node = new DocumentFragment();\n\t\tnode.ownerDocument = this;\n\t\tnode.childNodes = new NodeList();\n\t\treturn node;\n\t},\n\tcreateTextNode :\tfunction(data){\n\t\tvar node = new Text();\n\t\tnode.ownerDocument = this;\n\t\tnode.appendData(data)\n\t\treturn node;\n\t},\n\tcreateComment :\tfunction(data){\n\t\tvar node = new Comment();\n\t\tnode.ownerDocument = this;\n\t\tnode.appendData(data)\n\t\treturn node;\n\t},\n\tcreateCDATASection :\tfunction(data){\n\t\tvar node = new CDATASection();\n\t\tnode.ownerDocument = this;\n\t\tnode.appendData(data)\n\t\treturn node;\n\t},\n\tcreateProcessingInstruction :\tfunction(target,data){\n\t\tvar node = new ProcessingInstruction();\n\t\tnode.ownerDocument = this;\n\t\tnode.tagName = node.nodeName = node.target = target;\n\t\tnode.nodeValue = node.data = data;\n\t\treturn node;\n\t},\n\tcreateAttribute :\tfunction(name){\n\t\tvar node = new Attr();\n\t\tnode.ownerDocument\t= this;\n\t\tnode.name = name;\n\t\tnode.nodeName\t= name;\n\t\tnode.localName = name;\n\t\tnode.specified = true;\n\t\treturn node;\n\t},\n\tcreateEntityReference :\tfunction(name){\n\t\tvar node = new EntityReference();\n\t\tnode.ownerDocument\t= this;\n\t\tnode.nodeName\t= name;\n\t\treturn node;\n\t},\n\t// Introduced in DOM Level 2:\n\tcreateElementNS :\tfunction(namespaceURI,qualifiedName){\n\t\tvar node = new Element();\n\t\tvar pl = qualifiedName.split(':');\n\t\tvar attrs\t= node.attributes = new NamedNodeMap();\n\t\tnode.childNodes = new NodeList();\n\t\tnode.ownerDocument = this;\n\t\tnode.nodeName = qualifiedName;\n\t\tnode.tagName = qualifiedName;\n\t\tnode.namespaceURI = namespaceURI;\n\t\tif(pl.length == 2){\n\t\t\tnode.prefix = pl[0];\n\t\t\tnode.localName = pl[1];\n\t\t}else{\n\t\t\t//el.prefix = null;\n\t\t\tnode.localName = qualifiedName;\n\t\t}\n\t\tattrs._ownerElement = node;\n\t\treturn node;\n\t},\n\t// Introduced in DOM Level 2:\n\tcreateAttributeNS :\tfunction(namespaceURI,qualifiedName){\n\t\tvar node = new Attr();\n\t\tvar pl = qualifiedName.split(':');\n\t\tnode.ownerDocument = this;\n\t\tnode.nodeName = qualifiedName;\n\t\tnode.name = qualifiedName;\n\t\tnode.namespaceURI = namespaceURI;\n\t\tnode.specified = true;\n\t\tif(pl.length == 2){\n\t\t\tnode.prefix = pl[0];\n\t\t\tnode.localName = pl[1];\n\t\t}else{\n\t\t\t//el.prefix = null;\n\t\t\tnode.localName = qualifiedName;\n\t\t}\n\t\treturn node;\n\t}\n};\n_extends(Document,Node);\n\n\nfunction Element() {\n\tthis._nsMap = {};\n};\nElement.prototype = {\n\tnodeType : ELEMENT_NODE,\n\thasAttribute : function(name){\n\t\treturn this.getAttributeNode(name)!=null;\n\t},\n\tgetAttribute : function(name){\n\t\tvar attr = this.getAttributeNode(name);\n\t\treturn attr && attr.value || '';\n\t},\n\tgetAttributeNode : function(name){\n\t\treturn this.attributes.getNamedItem(name);\n\t},\n\tsetAttribute : function(name, value){\n\t\tvar attr = this.ownerDocument.createAttribute(name);\n\t\tattr.value = attr.nodeValue = \"\" + value;\n\t\tthis.setAttributeNode(attr)\n\t},\n\tremoveAttribute : function(name){\n\t\tvar attr = this.getAttributeNode(name)\n\t\tattr && this.removeAttributeNode(attr);\n\t},\n\n\t//four real opeartion method\n\tappendChild:function(newChild){\n\t\tif(newChild.nodeType === DOCUMENT_FRAGMENT_NODE){\n\t\t\treturn this.insertBefore(newChild,null);\n\t\t}else{\n\t\t\treturn _appendSingleChild(this,newChild);\n\t\t}\n\t},\n\tsetAttributeNode : function(newAttr){\n\t\treturn this.attributes.setNamedItem(newAttr);\n\t},\n\tsetAttributeNodeNS : function(newAttr){\n\t\treturn this.attributes.setNamedItemNS(newAttr);\n\t},\n\tremoveAttributeNode : function(oldAttr){\n\t\t//console.log(this == oldAttr.ownerElement)\n\t\treturn this.attributes.removeNamedItem(oldAttr.nodeName);\n\t},\n\t//get real attribute name,and remove it by removeAttributeNode\n\tremoveAttributeNS : function(namespaceURI, localName){\n\t\tvar old = this.getAttributeNodeNS(namespaceURI, localName);\n\t\told && this.removeAttributeNode(old);\n\t},\n\n\thasAttributeNS : function(namespaceURI, localName){\n\t\treturn this.getAttributeNodeNS(namespaceURI, localName)!=null;\n\t},\n\tgetAttributeNS : function(namespaceURI, localName){\n\t\tvar attr = this.getAttributeNodeNS(namespaceURI, localName);\n\t\treturn attr && attr.value || '';\n\t},\n\tsetAttributeNS : function(namespaceURI, qualifiedName, value){\n\t\tvar attr = this.ownerDocument.createAttributeNS(namespaceURI, qualifiedName);\n\t\tattr.value = attr.nodeValue = \"\" + value;\n\t\tthis.setAttributeNode(attr)\n\t},\n\tgetAttributeNodeNS : function(namespaceURI, localName){\n\t\treturn this.attributes.getNamedItemNS(namespaceURI, localName);\n\t},\n\n\tgetElementsByTagName : function(tagName){\n\t\treturn new LiveNodeList(this,function(base){\n\t\t\tvar ls = [];\n\t\t\t_visitNode(base,function(node){\n\t\t\t\tif(node !== base && node.nodeType == ELEMENT_NODE && (tagName === '*' || node.tagName == tagName)){\n\t\t\t\t\tls.push(node);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn ls;\n\t\t});\n\t},\n\tgetElementsByTagNameNS : function(namespaceURI, localName){\n\t\treturn new LiveNodeList(this,function(base){\n\t\t\tvar ls = [];\n\t\t\t_visitNode(base,function(node){\n\t\t\t\tif(node !== base && node.nodeType === ELEMENT_NODE && (namespaceURI === '*' || node.namespaceURI === namespaceURI) && (localName === '*' || node.localName == localName)){\n\t\t\t\t\tls.push(node);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn ls;\n\n\t\t});\n\t}\n};\nDocument.prototype.getElementsByTagName = Element.prototype.getElementsByTagName;\nDocument.prototype.getElementsByTagNameNS = Element.prototype.getElementsByTagNameNS;\n\n\n_extends(Element,Node);\nfunction Attr() {\n};\nAttr.prototype.nodeType = ATTRIBUTE_NODE;\n_extends(Attr,Node);\n\n\nfunction CharacterData() {\n};\nCharacterData.prototype = {\n\tdata : '',\n\tsubstringData : function(offset, count) {\n\t\treturn this.data.substring(offset, offset+count);\n\t},\n\tappendData: function(text) {\n\t\ttext = this.data+text;\n\t\tthis.nodeValue = this.data = text;\n\t\tthis.length = text.length;\n\t},\n\tinsertData: function(offset,text) {\n\t\tthis.replaceData(offset,0,text);\n\n\t},\n\tappendChild:function(newChild){\n\t\tthrow new Error(ExceptionMessage[HIERARCHY_REQUEST_ERR])\n\t},\n\tdeleteData: function(offset, count) {\n\t\tthis.replaceData(offset,count,\"\");\n\t},\n\treplaceData: function(offset, count, text) {\n\t\tvar start = this.data.substring(0,offset);\n\t\tvar end = this.data.substring(offset+count);\n\t\ttext = start + text + end;\n\t\tthis.nodeValue = this.data = text;\n\t\tthis.length = text.length;\n\t}\n}\n_extends(CharacterData,Node);\nfunction Text() {\n};\nText.prototype = {\n\tnodeName : \"#text\",\n\tnodeType : TEXT_NODE,\n\tsplitText : function(offset) {\n\t\tvar text = this.data;\n\t\tvar newText = text.substring(offset);\n\t\ttext = text.substring(0, offset);\n\t\tthis.data = this.nodeValue = text;\n\t\tthis.length = text.length;\n\t\tvar newNode = this.ownerDocument.createTextNode(newText);\n\t\tif(this.parentNode){\n\t\t\tthis.parentNode.insertBefore(newNode, this.nextSibling);\n\t\t}\n\t\treturn newNode;\n\t}\n}\n_extends(Text,CharacterData);\nfunction Comment() {\n};\nComment.prototype = {\n\tnodeName : \"#comment\",\n\tnodeType : COMMENT_NODE\n}\n_extends(Comment,CharacterData);\n\nfunction CDATASection() {\n};\nCDATASection.prototype = {\n\tnodeName : \"#cdata-section\",\n\tnodeType : CDATA_SECTION_NODE\n}\n_extends(CDATASection,CharacterData);\n\n\nfunction DocumentType() {\n};\nDocumentType.prototype.nodeType = DOCUMENT_TYPE_NODE;\n_extends(DocumentType,Node);\n\nfunction Notation() {\n};\nNotation.prototype.nodeType = NOTATION_NODE;\n_extends(Notation,Node);\n\nfunction Entity() {\n};\nEntity.prototype.nodeType = ENTITY_NODE;\n_extends(Entity,Node);\n\nfunction EntityReference() {\n};\nEntityReference.prototype.nodeType = ENTITY_REFERENCE_NODE;\n_extends(EntityReference,Node);\n\nfunction DocumentFragment() {\n};\nDocumentFragment.prototype.nodeName =\t\"#document-fragment\";\nDocumentFragment.prototype.nodeType =\tDOCUMENT_FRAGMENT_NODE;\n_extends(DocumentFragment,Node);\n\n\nfunction ProcessingInstruction() {\n}\nProcessingInstruction.prototype.nodeType = PROCESSING_INSTRUCTION_NODE;\n_extends(ProcessingInstruction,Node);\nfunction XMLSerializer(){}\nXMLSerializer.prototype.serializeToString = function(node,isHtml,nodeFilter){\n\treturn nodeSerializeToString.call(node,isHtml,nodeFilter);\n}\nNode.prototype.toString = nodeSerializeToString;\nfunction nodeSerializeToString(isHtml,nodeFilter){\n\tvar buf = [];\n\tvar refNode = this.nodeType == 9 && this.documentElement || this;\n\tvar prefix = refNode.prefix;\n\tvar uri = refNode.namespaceURI;\n\n\tif(uri && prefix == null){\n\t\t//console.log(prefix)\n\t\tvar prefix = refNode.lookupPrefix(uri);\n\t\tif(prefix == null){\n\t\t\t//isHTML = true;\n\t\t\tvar visibleNamespaces=[\n\t\t\t{namespace:uri,prefix:null}\n\t\t\t//{namespace:uri,prefix:''}\n\t\t\t]\n\t\t}\n\t}\n\tserializeToString(this,buf,isHtml,nodeFilter,visibleNamespaces);\n\t//console.log('###',this.nodeType,uri,prefix,buf.join(''))\n\treturn buf.join('');\n}\n\nfunction needNamespaceDefine(node, isHTML, visibleNamespaces) {\n\tvar prefix = node.prefix || '';\n\tvar uri = node.namespaceURI;\n\t// According to [Namespaces in XML 1.0](https://www.w3.org/TR/REC-xml-names/#ns-using) ,\n\t// and more specifically https://www.w3.org/TR/REC-xml-names/#nsc-NoPrefixUndecl :\n\t// > In a namespace declaration for a prefix [...], the attribute value MUST NOT be empty.\n\t// in a similar manner [Namespaces in XML 1.1](https://www.w3.org/TR/xml-names11/#ns-using)\n\t// and more specifically https://www.w3.org/TR/xml-names11/#nsc-NSDeclared :\n\t// > [...] Furthermore, the attribute value [...] must not be an empty string.\n\t// so serializing empty namespace value like xmlns:ds=\"\" would produce an invalid XML document.\n\tif (!uri) {\n\t\treturn false;\n\t}\n\tif (prefix === \"xml\" && uri === NAMESPACE.XML || uri === NAMESPACE.XMLNS) {\n\t\treturn false;\n\t}\n\n\tvar i = visibleNamespaces.length\n\twhile (i--) {\n\t\tvar ns = visibleNamespaces[i];\n\t\t// get namespace prefix\n\t\tif (ns.prefix === prefix) {\n\t\t\treturn ns.namespace !== uri;\n\t\t}\n\t}\n\treturn true;\n}\n/**\n * Well-formed constraint: No < in Attribute Values\n * > The replacement text of any entity referred to directly or indirectly\n * > in an attribute value must not contain a <.\n * @see https://www.w3.org/TR/xml11/#CleanAttrVals\n * @see https://www.w3.org/TR/xml11/#NT-AttValue\n *\n * Literal whitespace other than space that appear in attribute values\n * are serialized as their entity references, so they will be preserved.\n * (In contrast to whitespace literals in the input which are normalized to spaces)\n * @see https://www.w3.org/TR/xml11/#AVNormalize\n * @see https://w3c.github.io/DOM-Parsing/#serializing-an-element-s-attributes\n */\nfunction addSerializedAttribute(buf, qualifiedName, value) {\n\tbuf.push(' ', qualifiedName, '=\"', value.replace(/[<>&\"\\t\\n\\r]/g, _xmlEncoder), '\"')\n}\n\nfunction serializeToString(node,buf,isHTML,nodeFilter,visibleNamespaces){\n\tif (!visibleNamespaces) {\n\t\tvisibleNamespaces = [];\n\t}\n\n\tif(nodeFilter){\n\t\tnode = nodeFilter(node);\n\t\tif(node){\n\t\t\tif(typeof node == 'string'){\n\t\t\t\tbuf.push(node);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}else{\n\t\t\treturn;\n\t\t}\n\t\t//buf.sort.apply(attrs, attributeSorter);\n\t}\n\n\tswitch(node.nodeType){\n\tcase ELEMENT_NODE:\n\t\tvar attrs = node.attributes;\n\t\tvar len = attrs.length;\n\t\tvar child = node.firstChild;\n\t\tvar nodeName = node.tagName;\n\n\t\tisHTML = NAMESPACE.isHTML(node.namespaceURI) || isHTML\n\n\t\tvar prefixedNodeName = nodeName\n\t\tif (!isHTML && !node.prefix && node.namespaceURI) {\n\t\t\tvar defaultNS\n\t\t\t// lookup current default ns from `xmlns` attribute\n\t\t\tfor (var ai = 0; ai < attrs.length; ai++) {\n\t\t\t\tif (attrs.item(ai).name === 'xmlns') {\n\t\t\t\t\tdefaultNS = attrs.item(ai).value\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!defaultNS) {\n\t\t\t\t// lookup current default ns in visibleNamespaces\n\t\t\t\tfor (var nsi = visibleNamespaces.length - 1; nsi >= 0; nsi--) {\n\t\t\t\t\tvar namespace = visibleNamespaces[nsi]\n\t\t\t\t\tif (namespace.prefix === '' && namespace.namespace === node.namespaceURI) {\n\t\t\t\t\t\tdefaultNS = namespace.namespace\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (defaultNS !== node.namespaceURI) {\n\t\t\t\tfor (var nsi = visibleNamespaces.length - 1; nsi >= 0; nsi--) {\n\t\t\t\t\tvar namespace = visibleNamespaces[nsi]\n\t\t\t\t\tif (namespace.namespace === node.namespaceURI) {\n\t\t\t\t\t\tif (namespace.prefix) {\n\t\t\t\t\t\t\tprefixedNodeName = namespace.prefix + ':' + nodeName\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tbuf.push('<', prefixedNodeName);\n\n\t\tfor(var i=0;i');\n\t\t\t//if is cdata child node\n\t\t\tif(isHTML && /^script$/i.test(nodeName)){\n\t\t\t\twhile(child){\n\t\t\t\t\tif(child.data){\n\t\t\t\t\t\tbuf.push(child.data);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tserializeToString(child, buf, isHTML, nodeFilter, visibleNamespaces.slice());\n\t\t\t\t\t}\n\t\t\t\t\tchild = child.nextSibling;\n\t\t\t\t}\n\t\t\t}else\n\t\t\t{\n\t\t\t\twhile(child){\n\t\t\t\t\tserializeToString(child, buf, isHTML, nodeFilter, visibleNamespaces.slice());\n\t\t\t\t\tchild = child.nextSibling;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbuf.push('');\n\t\t}else{\n\t\t\tbuf.push('/>');\n\t\t}\n\t\t// remove added visible namespaces\n\t\t//visibleNamespaces.length = startVisibleNamespaces;\n\t\treturn;\n\tcase DOCUMENT_NODE:\n\tcase DOCUMENT_FRAGMENT_NODE:\n\t\tvar child = node.firstChild;\n\t\twhile(child){\n\t\t\tserializeToString(child, buf, isHTML, nodeFilter, visibleNamespaces.slice());\n\t\t\tchild = child.nextSibling;\n\t\t}\n\t\treturn;\n\tcase ATTRIBUTE_NODE:\n\t\treturn addSerializedAttribute(buf, node.name, node.value);\n\tcase TEXT_NODE:\n\t\t/**\n\t\t * The ampersand character (&) and the left angle bracket (<) must not appear in their literal form,\n\t\t * except when used as markup delimiters, or within a comment, a processing instruction, or a CDATA section.\n\t\t * If they are needed elsewhere, they must be escaped using either numeric character references or the strings\n\t\t * `&` and `<` respectively.\n\t\t * The right angle bracket (>) may be represented using the string \" > \", and must, for compatibility,\n\t\t * be escaped using either `>` or a character reference when it appears in the string `]]>` in content,\n\t\t * when that string is not marking the end of a CDATA section.\n\t\t *\n\t\t * In the content of elements, character data is any string of characters\n\t\t * which does not contain the start-delimiter of any markup\n\t\t * and does not include the CDATA-section-close delimiter, `]]>`.\n\t\t *\n\t\t * @see https://www.w3.org/TR/xml/#NT-CharData\n\t\t * @see https://w3c.github.io/DOM-Parsing/#xml-serializing-a-text-node\n\t\t */\n\t\treturn buf.push(node.data\n\t\t\t.replace(/[<&>]/g,_xmlEncoder)\n\t\t);\n\tcase CDATA_SECTION_NODE:\n\t\treturn buf.push( '');\n\tcase COMMENT_NODE:\n\t\treturn buf.push( \"\");\n\tcase DOCUMENT_TYPE_NODE:\n\t\tvar pubid = node.publicId;\n\t\tvar sysid = node.systemId;\n\t\tbuf.push('');\n\t\t}else if(sysid && sysid!='.'){\n\t\t\tbuf.push(' SYSTEM ', sysid, '>');\n\t\t}else{\n\t\t\tvar sub = node.internalSubset;\n\t\t\tif(sub){\n\t\t\t\tbuf.push(\" [\",sub,\"]\");\n\t\t\t}\n\t\t\tbuf.push(\">\");\n\t\t}\n\t\treturn;\n\tcase PROCESSING_INSTRUCTION_NODE:\n\t\treturn buf.push( \"\");\n\tcase ENTITY_REFERENCE_NODE:\n\t\treturn buf.push( '&',node.nodeName,';');\n\t//case ENTITY_NODE:\n\t//case NOTATION_NODE:\n\tdefault:\n\t\tbuf.push('??',node.nodeName);\n\t}\n}\nfunction importNode(doc,node,deep){\n\tvar node2;\n\tswitch (node.nodeType) {\n\tcase ELEMENT_NODE:\n\t\tnode2 = node.cloneNode(false);\n\t\tnode2.ownerDocument = doc;\n\t\t//var attrs = node2.attributes;\n\t\t//var len = attrs.length;\n\t\t//for(var i=0;i',\n\tlt: '<',\n\tquot: '\"',\n});\n\n/**\n * A map of all entities that are detected in an HTML document.\n * They contain all entries from `XML_ENTITIES`.\n *\n * @see XML_ENTITIES\n * @see DOMParser.parseFromString\n * @see DOMImplementation.prototype.createHTMLDocument\n * @see https://html.spec.whatwg.org/#named-character-references WHATWG HTML(5) Spec\n * @see https://html.spec.whatwg.org/entities.json JSON\n * @see https://www.w3.org/TR/xml-entity-names/ W3C XML Entity Names\n * @see https://www.w3.org/TR/html4/sgml/entities.html W3C HTML4/SGML\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Character_entity_references_in_HTML Wikipedia (HTML)\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Entities_representing_special_characters_in_XHTML Wikpedia (XHTML)\n */\nexports.HTML_ENTITIES = freeze({\n\tAacute: '\\u00C1',\n\taacute: '\\u00E1',\n\tAbreve: '\\u0102',\n\tabreve: '\\u0103',\n\tac: '\\u223E',\n\tacd: '\\u223F',\n\tacE: '\\u223E\\u0333',\n\tAcirc: '\\u00C2',\n\tacirc: '\\u00E2',\n\tacute: '\\u00B4',\n\tAcy: '\\u0410',\n\tacy: '\\u0430',\n\tAElig: '\\u00C6',\n\taelig: '\\u00E6',\n\taf: '\\u2061',\n\tAfr: '\\uD835\\uDD04',\n\tafr: '\\uD835\\uDD1E',\n\tAgrave: '\\u00C0',\n\tagrave: '\\u00E0',\n\talefsym: '\\u2135',\n\taleph: '\\u2135',\n\tAlpha: '\\u0391',\n\talpha: '\\u03B1',\n\tAmacr: '\\u0100',\n\tamacr: '\\u0101',\n\tamalg: '\\u2A3F',\n\tAMP: '\\u0026',\n\tamp: '\\u0026',\n\tAnd: '\\u2A53',\n\tand: '\\u2227',\n\tandand: '\\u2A55',\n\tandd: '\\u2A5C',\n\tandslope: '\\u2A58',\n\tandv: '\\u2A5A',\n\tang: '\\u2220',\n\tange: '\\u29A4',\n\tangle: '\\u2220',\n\tangmsd: '\\u2221',\n\tangmsdaa: '\\u29A8',\n\tangmsdab: '\\u29A9',\n\tangmsdac: '\\u29AA',\n\tangmsdad: '\\u29AB',\n\tangmsdae: '\\u29AC',\n\tangmsdaf: '\\u29AD',\n\tangmsdag: '\\u29AE',\n\tangmsdah: '\\u29AF',\n\tangrt: '\\u221F',\n\tangrtvb: '\\u22BE',\n\tangrtvbd: '\\u299D',\n\tangsph: '\\u2222',\n\tangst: '\\u00C5',\n\tangzarr: '\\u237C',\n\tAogon: '\\u0104',\n\taogon: '\\u0105',\n\tAopf: '\\uD835\\uDD38',\n\taopf: '\\uD835\\uDD52',\n\tap: '\\u2248',\n\tapacir: '\\u2A6F',\n\tapE: '\\u2A70',\n\tape: '\\u224A',\n\tapid: '\\u224B',\n\tapos: '\\u0027',\n\tApplyFunction: '\\u2061',\n\tapprox: '\\u2248',\n\tapproxeq: '\\u224A',\n\tAring: '\\u00C5',\n\taring: '\\u00E5',\n\tAscr: '\\uD835\\uDC9C',\n\tascr: '\\uD835\\uDCB6',\n\tAssign: '\\u2254',\n\tast: '\\u002A',\n\tasymp: '\\u2248',\n\tasympeq: '\\u224D',\n\tAtilde: '\\u00C3',\n\tatilde: '\\u00E3',\n\tAuml: '\\u00C4',\n\tauml: '\\u00E4',\n\tawconint: '\\u2233',\n\tawint: '\\u2A11',\n\tbackcong: '\\u224C',\n\tbackepsilon: '\\u03F6',\n\tbackprime: '\\u2035',\n\tbacksim: '\\u223D',\n\tbacksimeq: '\\u22CD',\n\tBackslash: '\\u2216',\n\tBarv: '\\u2AE7',\n\tbarvee: '\\u22BD',\n\tBarwed: '\\u2306',\n\tbarwed: '\\u2305',\n\tbarwedge: '\\u2305',\n\tbbrk: '\\u23B5',\n\tbbrktbrk: '\\u23B6',\n\tbcong: '\\u224C',\n\tBcy: '\\u0411',\n\tbcy: '\\u0431',\n\tbdquo: '\\u201E',\n\tbecaus: '\\u2235',\n\tBecause: '\\u2235',\n\tbecause: '\\u2235',\n\tbemptyv: '\\u29B0',\n\tbepsi: '\\u03F6',\n\tbernou: '\\u212C',\n\tBernoullis: '\\u212C',\n\tBeta: '\\u0392',\n\tbeta: '\\u03B2',\n\tbeth: '\\u2136',\n\tbetween: '\\u226C',\n\tBfr: '\\uD835\\uDD05',\n\tbfr: '\\uD835\\uDD1F',\n\tbigcap: '\\u22C2',\n\tbigcirc: '\\u25EF',\n\tbigcup: '\\u22C3',\n\tbigodot: '\\u2A00',\n\tbigoplus: '\\u2A01',\n\tbigotimes: '\\u2A02',\n\tbigsqcup: '\\u2A06',\n\tbigstar: '\\u2605',\n\tbigtriangledown: '\\u25BD',\n\tbigtriangleup: '\\u25B3',\n\tbiguplus: '\\u2A04',\n\tbigvee: '\\u22C1',\n\tbigwedge: '\\u22C0',\n\tbkarow: '\\u290D',\n\tblacklozenge: '\\u29EB',\n\tblacksquare: '\\u25AA',\n\tblacktriangle: '\\u25B4',\n\tblacktriangledown: '\\u25BE',\n\tblacktriangleleft: '\\u25C2',\n\tblacktriangleright: '\\u25B8',\n\tblank: '\\u2423',\n\tblk12: '\\u2592',\n\tblk14: '\\u2591',\n\tblk34: '\\u2593',\n\tblock: '\\u2588',\n\tbne: '\\u003D\\u20E5',\n\tbnequiv: '\\u2261\\u20E5',\n\tbNot: '\\u2AED',\n\tbnot: '\\u2310',\n\tBopf: '\\uD835\\uDD39',\n\tbopf: '\\uD835\\uDD53',\n\tbot: '\\u22A5',\n\tbottom: '\\u22A5',\n\tbowtie: '\\u22C8',\n\tboxbox: '\\u29C9',\n\tboxDL: '\\u2557',\n\tboxDl: '\\u2556',\n\tboxdL: '\\u2555',\n\tboxdl: '\\u2510',\n\tboxDR: '\\u2554',\n\tboxDr: '\\u2553',\n\tboxdR: '\\u2552',\n\tboxdr: '\\u250C',\n\tboxH: '\\u2550',\n\tboxh: '\\u2500',\n\tboxHD: '\\u2566',\n\tboxHd: '\\u2564',\n\tboxhD: '\\u2565',\n\tboxhd: '\\u252C',\n\tboxHU: '\\u2569',\n\tboxHu: '\\u2567',\n\tboxhU: '\\u2568',\n\tboxhu: '\\u2534',\n\tboxminus: '\\u229F',\n\tboxplus: '\\u229E',\n\tboxtimes: '\\u22A0',\n\tboxUL: '\\u255D',\n\tboxUl: '\\u255C',\n\tboxuL: '\\u255B',\n\tboxul: '\\u2518',\n\tboxUR: '\\u255A',\n\tboxUr: '\\u2559',\n\tboxuR: '\\u2558',\n\tboxur: '\\u2514',\n\tboxV: '\\u2551',\n\tboxv: '\\u2502',\n\tboxVH: '\\u256C',\n\tboxVh: '\\u256B',\n\tboxvH: '\\u256A',\n\tboxvh: '\\u253C',\n\tboxVL: '\\u2563',\n\tboxVl: '\\u2562',\n\tboxvL: '\\u2561',\n\tboxvl: '\\u2524',\n\tboxVR: '\\u2560',\n\tboxVr: '\\u255F',\n\tboxvR: '\\u255E',\n\tboxvr: '\\u251C',\n\tbprime: '\\u2035',\n\tBreve: '\\u02D8',\n\tbreve: '\\u02D8',\n\tbrvbar: '\\u00A6',\n\tBscr: '\\u212C',\n\tbscr: '\\uD835\\uDCB7',\n\tbsemi: '\\u204F',\n\tbsim: '\\u223D',\n\tbsime: '\\u22CD',\n\tbsol: '\\u005C',\n\tbsolb: '\\u29C5',\n\tbsolhsub: '\\u27C8',\n\tbull: '\\u2022',\n\tbullet: '\\u2022',\n\tbump: '\\u224E',\n\tbumpE: '\\u2AAE',\n\tbumpe: '\\u224F',\n\tBumpeq: '\\u224E',\n\tbumpeq: '\\u224F',\n\tCacute: '\\u0106',\n\tcacute: '\\u0107',\n\tCap: '\\u22D2',\n\tcap: '\\u2229',\n\tcapand: '\\u2A44',\n\tcapbrcup: '\\u2A49',\n\tcapcap: '\\u2A4B',\n\tcapcup: '\\u2A47',\n\tcapdot: '\\u2A40',\n\tCapitalDifferentialD: '\\u2145',\n\tcaps: '\\u2229\\uFE00',\n\tcaret: '\\u2041',\n\tcaron: '\\u02C7',\n\tCayleys: '\\u212D',\n\tccaps: '\\u2A4D',\n\tCcaron: '\\u010C',\n\tccaron: '\\u010D',\n\tCcedil: '\\u00C7',\n\tccedil: '\\u00E7',\n\tCcirc: '\\u0108',\n\tccirc: '\\u0109',\n\tCconint: '\\u2230',\n\tccups: '\\u2A4C',\n\tccupssm: '\\u2A50',\n\tCdot: '\\u010A',\n\tcdot: '\\u010B',\n\tcedil: '\\u00B8',\n\tCedilla: '\\u00B8',\n\tcemptyv: '\\u29B2',\n\tcent: '\\u00A2',\n\tCenterDot: '\\u00B7',\n\tcenterdot: '\\u00B7',\n\tCfr: '\\u212D',\n\tcfr: '\\uD835\\uDD20',\n\tCHcy: '\\u0427',\n\tchcy: '\\u0447',\n\tcheck: '\\u2713',\n\tcheckmark: '\\u2713',\n\tChi: '\\u03A7',\n\tchi: '\\u03C7',\n\tcir: '\\u25CB',\n\tcirc: '\\u02C6',\n\tcirceq: '\\u2257',\n\tcirclearrowleft: '\\u21BA',\n\tcirclearrowright: '\\u21BB',\n\tcircledast: '\\u229B',\n\tcircledcirc: '\\u229A',\n\tcircleddash: '\\u229D',\n\tCircleDot: '\\u2299',\n\tcircledR: '\\u00AE',\n\tcircledS: '\\u24C8',\n\tCircleMinus: '\\u2296',\n\tCirclePlus: '\\u2295',\n\tCircleTimes: '\\u2297',\n\tcirE: '\\u29C3',\n\tcire: '\\u2257',\n\tcirfnint: '\\u2A10',\n\tcirmid: '\\u2AEF',\n\tcirscir: '\\u29C2',\n\tClockwiseContourIntegral: '\\u2232',\n\tCloseCurlyDoubleQuote: '\\u201D',\n\tCloseCurlyQuote: '\\u2019',\n\tclubs: '\\u2663',\n\tclubsuit: '\\u2663',\n\tColon: '\\u2237',\n\tcolon: '\\u003A',\n\tColone: '\\u2A74',\n\tcolone: '\\u2254',\n\tcoloneq: '\\u2254',\n\tcomma: '\\u002C',\n\tcommat: '\\u0040',\n\tcomp: '\\u2201',\n\tcompfn: '\\u2218',\n\tcomplement: '\\u2201',\n\tcomplexes: '\\u2102',\n\tcong: '\\u2245',\n\tcongdot: '\\u2A6D',\n\tCongruent: '\\u2261',\n\tConint: '\\u222F',\n\tconint: '\\u222E',\n\tContourIntegral: '\\u222E',\n\tCopf: '\\u2102',\n\tcopf: '\\uD835\\uDD54',\n\tcoprod: '\\u2210',\n\tCoproduct: '\\u2210',\n\tCOPY: '\\u00A9',\n\tcopy: '\\u00A9',\n\tcopysr: '\\u2117',\n\tCounterClockwiseContourIntegral: '\\u2233',\n\tcrarr: '\\u21B5',\n\tCross: '\\u2A2F',\n\tcross: '\\u2717',\n\tCscr: '\\uD835\\uDC9E',\n\tcscr: '\\uD835\\uDCB8',\n\tcsub: '\\u2ACF',\n\tcsube: '\\u2AD1',\n\tcsup: '\\u2AD0',\n\tcsupe: '\\u2AD2',\n\tctdot: '\\u22EF',\n\tcudarrl: '\\u2938',\n\tcudarrr: '\\u2935',\n\tcuepr: '\\u22DE',\n\tcuesc: '\\u22DF',\n\tcularr: '\\u21B6',\n\tcularrp: '\\u293D',\n\tCup: '\\u22D3',\n\tcup: '\\u222A',\n\tcupbrcap: '\\u2A48',\n\tCupCap: '\\u224D',\n\tcupcap: '\\u2A46',\n\tcupcup: '\\u2A4A',\n\tcupdot: '\\u228D',\n\tcupor: '\\u2A45',\n\tcups: '\\u222A\\uFE00',\n\tcurarr: '\\u21B7',\n\tcurarrm: '\\u293C',\n\tcurlyeqprec: '\\u22DE',\n\tcurlyeqsucc: '\\u22DF',\n\tcurlyvee: '\\u22CE',\n\tcurlywedge: '\\u22CF',\n\tcurren: '\\u00A4',\n\tcurvearrowleft: '\\u21B6',\n\tcurvearrowright: '\\u21B7',\n\tcuvee: '\\u22CE',\n\tcuwed: '\\u22CF',\n\tcwconint: '\\u2232',\n\tcwint: '\\u2231',\n\tcylcty: '\\u232D',\n\tDagger: '\\u2021',\n\tdagger: '\\u2020',\n\tdaleth: '\\u2138',\n\tDarr: '\\u21A1',\n\tdArr: '\\u21D3',\n\tdarr: '\\u2193',\n\tdash: '\\u2010',\n\tDashv: '\\u2AE4',\n\tdashv: '\\u22A3',\n\tdbkarow: '\\u290F',\n\tdblac: '\\u02DD',\n\tDcaron: '\\u010E',\n\tdcaron: '\\u010F',\n\tDcy: '\\u0414',\n\tdcy: '\\u0434',\n\tDD: '\\u2145',\n\tdd: '\\u2146',\n\tddagger: '\\u2021',\n\tddarr: '\\u21CA',\n\tDDotrahd: '\\u2911',\n\tddotseq: '\\u2A77',\n\tdeg: '\\u00B0',\n\tDel: '\\u2207',\n\tDelta: '\\u0394',\n\tdelta: '\\u03B4',\n\tdemptyv: '\\u29B1',\n\tdfisht: '\\u297F',\n\tDfr: '\\uD835\\uDD07',\n\tdfr: '\\uD835\\uDD21',\n\tdHar: '\\u2965',\n\tdharl: '\\u21C3',\n\tdharr: '\\u21C2',\n\tDiacriticalAcute: '\\u00B4',\n\tDiacriticalDot: '\\u02D9',\n\tDiacriticalDoubleAcute: '\\u02DD',\n\tDiacriticalGrave: '\\u0060',\n\tDiacriticalTilde: '\\u02DC',\n\tdiam: '\\u22C4',\n\tDiamond: '\\u22C4',\n\tdiamond: '\\u22C4',\n\tdiamondsuit: '\\u2666',\n\tdiams: '\\u2666',\n\tdie: '\\u00A8',\n\tDifferentialD: '\\u2146',\n\tdigamma: '\\u03DD',\n\tdisin: '\\u22F2',\n\tdiv: '\\u00F7',\n\tdivide: '\\u00F7',\n\tdivideontimes: '\\u22C7',\n\tdivonx: '\\u22C7',\n\tDJcy: '\\u0402',\n\tdjcy: '\\u0452',\n\tdlcorn: '\\u231E',\n\tdlcrop: '\\u230D',\n\tdollar: '\\u0024',\n\tDopf: '\\uD835\\uDD3B',\n\tdopf: '\\uD835\\uDD55',\n\tDot: '\\u00A8',\n\tdot: '\\u02D9',\n\tDotDot: '\\u20DC',\n\tdoteq: '\\u2250',\n\tdoteqdot: '\\u2251',\n\tDotEqual: '\\u2250',\n\tdotminus: '\\u2238',\n\tdotplus: '\\u2214',\n\tdotsquare: '\\u22A1',\n\tdoublebarwedge: '\\u2306',\n\tDoubleContourIntegral: '\\u222F',\n\tDoubleDot: '\\u00A8',\n\tDoubleDownArrow: '\\u21D3',\n\tDoubleLeftArrow: '\\u21D0',\n\tDoubleLeftRightArrow: '\\u21D4',\n\tDoubleLeftTee: '\\u2AE4',\n\tDoubleLongLeftArrow: '\\u27F8',\n\tDoubleLongLeftRightArrow: '\\u27FA',\n\tDoubleLongRightArrow: '\\u27F9',\n\tDoubleRightArrow: '\\u21D2',\n\tDoubleRightTee: '\\u22A8',\n\tDoubleUpArrow: '\\u21D1',\n\tDoubleUpDownArrow: '\\u21D5',\n\tDoubleVerticalBar: '\\u2225',\n\tDownArrow: '\\u2193',\n\tDownarrow: '\\u21D3',\n\tdownarrow: '\\u2193',\n\tDownArrowBar: '\\u2913',\n\tDownArrowUpArrow: '\\u21F5',\n\tDownBreve: '\\u0311',\n\tdowndownarrows: '\\u21CA',\n\tdownharpoonleft: '\\u21C3',\n\tdownharpoonright: '\\u21C2',\n\tDownLeftRightVector: '\\u2950',\n\tDownLeftTeeVector: '\\u295E',\n\tDownLeftVector: '\\u21BD',\n\tDownLeftVectorBar: '\\u2956',\n\tDownRightTeeVector: '\\u295F',\n\tDownRightVector: '\\u21C1',\n\tDownRightVectorBar: '\\u2957',\n\tDownTee: '\\u22A4',\n\tDownTeeArrow: '\\u21A7',\n\tdrbkarow: '\\u2910',\n\tdrcorn: '\\u231F',\n\tdrcrop: '\\u230C',\n\tDscr: '\\uD835\\uDC9F',\n\tdscr: '\\uD835\\uDCB9',\n\tDScy: '\\u0405',\n\tdscy: '\\u0455',\n\tdsol: '\\u29F6',\n\tDstrok: '\\u0110',\n\tdstrok: '\\u0111',\n\tdtdot: '\\u22F1',\n\tdtri: '\\u25BF',\n\tdtrif: '\\u25BE',\n\tduarr: '\\u21F5',\n\tduhar: '\\u296F',\n\tdwangle: '\\u29A6',\n\tDZcy: '\\u040F',\n\tdzcy: '\\u045F',\n\tdzigrarr: '\\u27FF',\n\tEacute: '\\u00C9',\n\teacute: '\\u00E9',\n\teaster: '\\u2A6E',\n\tEcaron: '\\u011A',\n\tecaron: '\\u011B',\n\tecir: '\\u2256',\n\tEcirc: '\\u00CA',\n\tecirc: '\\u00EA',\n\tecolon: '\\u2255',\n\tEcy: '\\u042D',\n\tecy: '\\u044D',\n\teDDot: '\\u2A77',\n\tEdot: '\\u0116',\n\teDot: '\\u2251',\n\tedot: '\\u0117',\n\tee: '\\u2147',\n\tefDot: '\\u2252',\n\tEfr: '\\uD835\\uDD08',\n\tefr: '\\uD835\\uDD22',\n\teg: '\\u2A9A',\n\tEgrave: '\\u00C8',\n\tegrave: '\\u00E8',\n\tegs: '\\u2A96',\n\tegsdot: '\\u2A98',\n\tel: '\\u2A99',\n\tElement: '\\u2208',\n\telinters: '\\u23E7',\n\tell: '\\u2113',\n\tels: '\\u2A95',\n\telsdot: '\\u2A97',\n\tEmacr: '\\u0112',\n\temacr: '\\u0113',\n\tempty: '\\u2205',\n\temptyset: '\\u2205',\n\tEmptySmallSquare: '\\u25FB',\n\temptyv: '\\u2205',\n\tEmptyVerySmallSquare: '\\u25AB',\n\temsp: '\\u2003',\n\temsp13: '\\u2004',\n\temsp14: '\\u2005',\n\tENG: '\\u014A',\n\teng: '\\u014B',\n\tensp: '\\u2002',\n\tEogon: '\\u0118',\n\teogon: '\\u0119',\n\tEopf: '\\uD835\\uDD3C',\n\teopf: '\\uD835\\uDD56',\n\tepar: '\\u22D5',\n\teparsl: '\\u29E3',\n\teplus: '\\u2A71',\n\tepsi: '\\u03B5',\n\tEpsilon: '\\u0395',\n\tepsilon: '\\u03B5',\n\tepsiv: '\\u03F5',\n\teqcirc: '\\u2256',\n\teqcolon: '\\u2255',\n\teqsim: '\\u2242',\n\teqslantgtr: '\\u2A96',\n\teqslantless: '\\u2A95',\n\tEqual: '\\u2A75',\n\tequals: '\\u003D',\n\tEqualTilde: '\\u2242',\n\tequest: '\\u225F',\n\tEquilibrium: '\\u21CC',\n\tequiv: '\\u2261',\n\tequivDD: '\\u2A78',\n\teqvparsl: '\\u29E5',\n\terarr: '\\u2971',\n\terDot: '\\u2253',\n\tEscr: '\\u2130',\n\tescr: '\\u212F',\n\tesdot: '\\u2250',\n\tEsim: '\\u2A73',\n\tesim: '\\u2242',\n\tEta: '\\u0397',\n\teta: '\\u03B7',\n\tETH: '\\u00D0',\n\teth: '\\u00F0',\n\tEuml: '\\u00CB',\n\teuml: '\\u00EB',\n\teuro: '\\u20AC',\n\texcl: '\\u0021',\n\texist: '\\u2203',\n\tExists: '\\u2203',\n\texpectation: '\\u2130',\n\tExponentialE: '\\u2147',\n\texponentiale: '\\u2147',\n\tfallingdotseq: '\\u2252',\n\tFcy: '\\u0424',\n\tfcy: '\\u0444',\n\tfemale: '\\u2640',\n\tffilig: '\\uFB03',\n\tfflig: '\\uFB00',\n\tffllig: '\\uFB04',\n\tFfr: '\\uD835\\uDD09',\n\tffr: '\\uD835\\uDD23',\n\tfilig: '\\uFB01',\n\tFilledSmallSquare: '\\u25FC',\n\tFilledVerySmallSquare: '\\u25AA',\n\tfjlig: '\\u0066\\u006A',\n\tflat: '\\u266D',\n\tfllig: '\\uFB02',\n\tfltns: '\\u25B1',\n\tfnof: '\\u0192',\n\tFopf: '\\uD835\\uDD3D',\n\tfopf: '\\uD835\\uDD57',\n\tForAll: '\\u2200',\n\tforall: '\\u2200',\n\tfork: '\\u22D4',\n\tforkv: '\\u2AD9',\n\tFouriertrf: '\\u2131',\n\tfpartint: '\\u2A0D',\n\tfrac12: '\\u00BD',\n\tfrac13: '\\u2153',\n\tfrac14: '\\u00BC',\n\tfrac15: '\\u2155',\n\tfrac16: '\\u2159',\n\tfrac18: '\\u215B',\n\tfrac23: '\\u2154',\n\tfrac25: '\\u2156',\n\tfrac34: '\\u00BE',\n\tfrac35: '\\u2157',\n\tfrac38: '\\u215C',\n\tfrac45: '\\u2158',\n\tfrac56: '\\u215A',\n\tfrac58: '\\u215D',\n\tfrac78: '\\u215E',\n\tfrasl: '\\u2044',\n\tfrown: '\\u2322',\n\tFscr: '\\u2131',\n\tfscr: '\\uD835\\uDCBB',\n\tgacute: '\\u01F5',\n\tGamma: '\\u0393',\n\tgamma: '\\u03B3',\n\tGammad: '\\u03DC',\n\tgammad: '\\u03DD',\n\tgap: '\\u2A86',\n\tGbreve: '\\u011E',\n\tgbreve: '\\u011F',\n\tGcedil: '\\u0122',\n\tGcirc: '\\u011C',\n\tgcirc: '\\u011D',\n\tGcy: '\\u0413',\n\tgcy: '\\u0433',\n\tGdot: '\\u0120',\n\tgdot: '\\u0121',\n\tgE: '\\u2267',\n\tge: '\\u2265',\n\tgEl: '\\u2A8C',\n\tgel: '\\u22DB',\n\tgeq: '\\u2265',\n\tgeqq: '\\u2267',\n\tgeqslant: '\\u2A7E',\n\tges: '\\u2A7E',\n\tgescc: '\\u2AA9',\n\tgesdot: '\\u2A80',\n\tgesdoto: '\\u2A82',\n\tgesdotol: '\\u2A84',\n\tgesl: '\\u22DB\\uFE00',\n\tgesles: '\\u2A94',\n\tGfr: '\\uD835\\uDD0A',\n\tgfr: '\\uD835\\uDD24',\n\tGg: '\\u22D9',\n\tgg: '\\u226B',\n\tggg: '\\u22D9',\n\tgimel: '\\u2137',\n\tGJcy: '\\u0403',\n\tgjcy: '\\u0453',\n\tgl: '\\u2277',\n\tgla: '\\u2AA5',\n\tglE: '\\u2A92',\n\tglj: '\\u2AA4',\n\tgnap: '\\u2A8A',\n\tgnapprox: '\\u2A8A',\n\tgnE: '\\u2269',\n\tgne: '\\u2A88',\n\tgneq: '\\u2A88',\n\tgneqq: '\\u2269',\n\tgnsim: '\\u22E7',\n\tGopf: '\\uD835\\uDD3E',\n\tgopf: '\\uD835\\uDD58',\n\tgrave: '\\u0060',\n\tGreaterEqual: '\\u2265',\n\tGreaterEqualLess: '\\u22DB',\n\tGreaterFullEqual: '\\u2267',\n\tGreaterGreater: '\\u2AA2',\n\tGreaterLess: '\\u2277',\n\tGreaterSlantEqual: '\\u2A7E',\n\tGreaterTilde: '\\u2273',\n\tGscr: '\\uD835\\uDCA2',\n\tgscr: '\\u210A',\n\tgsim: '\\u2273',\n\tgsime: '\\u2A8E',\n\tgsiml: '\\u2A90',\n\tGt: '\\u226B',\n\tGT: '\\u003E',\n\tgt: '\\u003E',\n\tgtcc: '\\u2AA7',\n\tgtcir: '\\u2A7A',\n\tgtdot: '\\u22D7',\n\tgtlPar: '\\u2995',\n\tgtquest: '\\u2A7C',\n\tgtrapprox: '\\u2A86',\n\tgtrarr: '\\u2978',\n\tgtrdot: '\\u22D7',\n\tgtreqless: '\\u22DB',\n\tgtreqqless: '\\u2A8C',\n\tgtrless: '\\u2277',\n\tgtrsim: '\\u2273',\n\tgvertneqq: '\\u2269\\uFE00',\n\tgvnE: '\\u2269\\uFE00',\n\tHacek: '\\u02C7',\n\thairsp: '\\u200A',\n\thalf: '\\u00BD',\n\thamilt: '\\u210B',\n\tHARDcy: '\\u042A',\n\thardcy: '\\u044A',\n\thArr: '\\u21D4',\n\tharr: '\\u2194',\n\tharrcir: '\\u2948',\n\tharrw: '\\u21AD',\n\tHat: '\\u005E',\n\thbar: '\\u210F',\n\tHcirc: '\\u0124',\n\thcirc: '\\u0125',\n\thearts: '\\u2665',\n\theartsuit: '\\u2665',\n\thellip: '\\u2026',\n\thercon: '\\u22B9',\n\tHfr: '\\u210C',\n\thfr: '\\uD835\\uDD25',\n\tHilbertSpace: '\\u210B',\n\thksearow: '\\u2925',\n\thkswarow: '\\u2926',\n\thoarr: '\\u21FF',\n\thomtht: '\\u223B',\n\thookleftarrow: '\\u21A9',\n\thookrightarrow: '\\u21AA',\n\tHopf: '\\u210D',\n\thopf: '\\uD835\\uDD59',\n\thorbar: '\\u2015',\n\tHorizontalLine: '\\u2500',\n\tHscr: '\\u210B',\n\thscr: '\\uD835\\uDCBD',\n\thslash: '\\u210F',\n\tHstrok: '\\u0126',\n\thstrok: '\\u0127',\n\tHumpDownHump: '\\u224E',\n\tHumpEqual: '\\u224F',\n\thybull: '\\u2043',\n\thyphen: '\\u2010',\n\tIacute: '\\u00CD',\n\tiacute: '\\u00ED',\n\tic: '\\u2063',\n\tIcirc: '\\u00CE',\n\ticirc: '\\u00EE',\n\tIcy: '\\u0418',\n\ticy: '\\u0438',\n\tIdot: '\\u0130',\n\tIEcy: '\\u0415',\n\tiecy: '\\u0435',\n\tiexcl: '\\u00A1',\n\tiff: '\\u21D4',\n\tIfr: '\\u2111',\n\tifr: '\\uD835\\uDD26',\n\tIgrave: '\\u00CC',\n\tigrave: '\\u00EC',\n\tii: '\\u2148',\n\tiiiint: '\\u2A0C',\n\tiiint: '\\u222D',\n\tiinfin: '\\u29DC',\n\tiiota: '\\u2129',\n\tIJlig: '\\u0132',\n\tijlig: '\\u0133',\n\tIm: '\\u2111',\n\tImacr: '\\u012A',\n\timacr: '\\u012B',\n\timage: '\\u2111',\n\tImaginaryI: '\\u2148',\n\timagline: '\\u2110',\n\timagpart: '\\u2111',\n\timath: '\\u0131',\n\timof: '\\u22B7',\n\timped: '\\u01B5',\n\tImplies: '\\u21D2',\n\tin: '\\u2208',\n\tincare: '\\u2105',\n\tinfin: '\\u221E',\n\tinfintie: '\\u29DD',\n\tinodot: '\\u0131',\n\tInt: '\\u222C',\n\tint: '\\u222B',\n\tintcal: '\\u22BA',\n\tintegers: '\\u2124',\n\tIntegral: '\\u222B',\n\tintercal: '\\u22BA',\n\tIntersection: '\\u22C2',\n\tintlarhk: '\\u2A17',\n\tintprod: '\\u2A3C',\n\tInvisibleComma: '\\u2063',\n\tInvisibleTimes: '\\u2062',\n\tIOcy: '\\u0401',\n\tiocy: '\\u0451',\n\tIogon: '\\u012E',\n\tiogon: '\\u012F',\n\tIopf: '\\uD835\\uDD40',\n\tiopf: '\\uD835\\uDD5A',\n\tIota: '\\u0399',\n\tiota: '\\u03B9',\n\tiprod: '\\u2A3C',\n\tiquest: '\\u00BF',\n\tIscr: '\\u2110',\n\tiscr: '\\uD835\\uDCBE',\n\tisin: '\\u2208',\n\tisindot: '\\u22F5',\n\tisinE: '\\u22F9',\n\tisins: '\\u22F4',\n\tisinsv: '\\u22F3',\n\tisinv: '\\u2208',\n\tit: '\\u2062',\n\tItilde: '\\u0128',\n\titilde: '\\u0129',\n\tIukcy: '\\u0406',\n\tiukcy: '\\u0456',\n\tIuml: '\\u00CF',\n\tiuml: '\\u00EF',\n\tJcirc: '\\u0134',\n\tjcirc: '\\u0135',\n\tJcy: '\\u0419',\n\tjcy: '\\u0439',\n\tJfr: '\\uD835\\uDD0D',\n\tjfr: '\\uD835\\uDD27',\n\tjmath: '\\u0237',\n\tJopf: '\\uD835\\uDD41',\n\tjopf: '\\uD835\\uDD5B',\n\tJscr: '\\uD835\\uDCA5',\n\tjscr: '\\uD835\\uDCBF',\n\tJsercy: '\\u0408',\n\tjsercy: '\\u0458',\n\tJukcy: '\\u0404',\n\tjukcy: '\\u0454',\n\tKappa: '\\u039A',\n\tkappa: '\\u03BA',\n\tkappav: '\\u03F0',\n\tKcedil: '\\u0136',\n\tkcedil: '\\u0137',\n\tKcy: '\\u041A',\n\tkcy: '\\u043A',\n\tKfr: '\\uD835\\uDD0E',\n\tkfr: '\\uD835\\uDD28',\n\tkgreen: '\\u0138',\n\tKHcy: '\\u0425',\n\tkhcy: '\\u0445',\n\tKJcy: '\\u040C',\n\tkjcy: '\\u045C',\n\tKopf: '\\uD835\\uDD42',\n\tkopf: '\\uD835\\uDD5C',\n\tKscr: '\\uD835\\uDCA6',\n\tkscr: '\\uD835\\uDCC0',\n\tlAarr: '\\u21DA',\n\tLacute: '\\u0139',\n\tlacute: '\\u013A',\n\tlaemptyv: '\\u29B4',\n\tlagran: '\\u2112',\n\tLambda: '\\u039B',\n\tlambda: '\\u03BB',\n\tLang: '\\u27EA',\n\tlang: '\\u27E8',\n\tlangd: '\\u2991',\n\tlangle: '\\u27E8',\n\tlap: '\\u2A85',\n\tLaplacetrf: '\\u2112',\n\tlaquo: '\\u00AB',\n\tLarr: '\\u219E',\n\tlArr: '\\u21D0',\n\tlarr: '\\u2190',\n\tlarrb: '\\u21E4',\n\tlarrbfs: '\\u291F',\n\tlarrfs: '\\u291D',\n\tlarrhk: '\\u21A9',\n\tlarrlp: '\\u21AB',\n\tlarrpl: '\\u2939',\n\tlarrsim: '\\u2973',\n\tlarrtl: '\\u21A2',\n\tlat: '\\u2AAB',\n\tlAtail: '\\u291B',\n\tlatail: '\\u2919',\n\tlate: '\\u2AAD',\n\tlates: '\\u2AAD\\uFE00',\n\tlBarr: '\\u290E',\n\tlbarr: '\\u290C',\n\tlbbrk: '\\u2772',\n\tlbrace: '\\u007B',\n\tlbrack: '\\u005B',\n\tlbrke: '\\u298B',\n\tlbrksld: '\\u298F',\n\tlbrkslu: '\\u298D',\n\tLcaron: '\\u013D',\n\tlcaron: '\\u013E',\n\tLcedil: '\\u013B',\n\tlcedil: '\\u013C',\n\tlceil: '\\u2308',\n\tlcub: '\\u007B',\n\tLcy: '\\u041B',\n\tlcy: '\\u043B',\n\tldca: '\\u2936',\n\tldquo: '\\u201C',\n\tldquor: '\\u201E',\n\tldrdhar: '\\u2967',\n\tldrushar: '\\u294B',\n\tldsh: '\\u21B2',\n\tlE: '\\u2266',\n\tle: '\\u2264',\n\tLeftAngleBracket: '\\u27E8',\n\tLeftArrow: '\\u2190',\n\tLeftarrow: '\\u21D0',\n\tleftarrow: '\\u2190',\n\tLeftArrowBar: '\\u21E4',\n\tLeftArrowRightArrow: '\\u21C6',\n\tleftarrowtail: '\\u21A2',\n\tLeftCeiling: '\\u2308',\n\tLeftDoubleBracket: '\\u27E6',\n\tLeftDownTeeVector: '\\u2961',\n\tLeftDownVector: '\\u21C3',\n\tLeftDownVectorBar: '\\u2959',\n\tLeftFloor: '\\u230A',\n\tleftharpoondown: '\\u21BD',\n\tleftharpoonup: '\\u21BC',\n\tleftleftarrows: '\\u21C7',\n\tLeftRightArrow: '\\u2194',\n\tLeftrightarrow: '\\u21D4',\n\tleftrightarrow: '\\u2194',\n\tleftrightarrows: '\\u21C6',\n\tleftrightharpoons: '\\u21CB',\n\tleftrightsquigarrow: '\\u21AD',\n\tLeftRightVector: '\\u294E',\n\tLeftTee: '\\u22A3',\n\tLeftTeeArrow: '\\u21A4',\n\tLeftTeeVector: '\\u295A',\n\tleftthreetimes: '\\u22CB',\n\tLeftTriangle: '\\u22B2',\n\tLeftTriangleBar: '\\u29CF',\n\tLeftTriangleEqual: '\\u22B4',\n\tLeftUpDownVector: '\\u2951',\n\tLeftUpTeeVector: '\\u2960',\n\tLeftUpVector: '\\u21BF',\n\tLeftUpVectorBar: '\\u2958',\n\tLeftVector: '\\u21BC',\n\tLeftVectorBar: '\\u2952',\n\tlEg: '\\u2A8B',\n\tleg: '\\u22DA',\n\tleq: '\\u2264',\n\tleqq: '\\u2266',\n\tleqslant: '\\u2A7D',\n\tles: '\\u2A7D',\n\tlescc: '\\u2AA8',\n\tlesdot: '\\u2A7F',\n\tlesdoto: '\\u2A81',\n\tlesdotor: '\\u2A83',\n\tlesg: '\\u22DA\\uFE00',\n\tlesges: '\\u2A93',\n\tlessapprox: '\\u2A85',\n\tlessdot: '\\u22D6',\n\tlesseqgtr: '\\u22DA',\n\tlesseqqgtr: '\\u2A8B',\n\tLessEqualGreater: '\\u22DA',\n\tLessFullEqual: '\\u2266',\n\tLessGreater: '\\u2276',\n\tlessgtr: '\\u2276',\n\tLessLess: '\\u2AA1',\n\tlesssim: '\\u2272',\n\tLessSlantEqual: '\\u2A7D',\n\tLessTilde: '\\u2272',\n\tlfisht: '\\u297C',\n\tlfloor: '\\u230A',\n\tLfr: '\\uD835\\uDD0F',\n\tlfr: '\\uD835\\uDD29',\n\tlg: '\\u2276',\n\tlgE: '\\u2A91',\n\tlHar: '\\u2962',\n\tlhard: '\\u21BD',\n\tlharu: '\\u21BC',\n\tlharul: '\\u296A',\n\tlhblk: '\\u2584',\n\tLJcy: '\\u0409',\n\tljcy: '\\u0459',\n\tLl: '\\u22D8',\n\tll: '\\u226A',\n\tllarr: '\\u21C7',\n\tllcorner: '\\u231E',\n\tLleftarrow: '\\u21DA',\n\tllhard: '\\u296B',\n\tlltri: '\\u25FA',\n\tLmidot: '\\u013F',\n\tlmidot: '\\u0140',\n\tlmoust: '\\u23B0',\n\tlmoustache: '\\u23B0',\n\tlnap: '\\u2A89',\n\tlnapprox: '\\u2A89',\n\tlnE: '\\u2268',\n\tlne: '\\u2A87',\n\tlneq: '\\u2A87',\n\tlneqq: '\\u2268',\n\tlnsim: '\\u22E6',\n\tloang: '\\u27EC',\n\tloarr: '\\u21FD',\n\tlobrk: '\\u27E6',\n\tLongLeftArrow: '\\u27F5',\n\tLongleftarrow: '\\u27F8',\n\tlongleftarrow: '\\u27F5',\n\tLongLeftRightArrow: '\\u27F7',\n\tLongleftrightarrow: '\\u27FA',\n\tlongleftrightarrow: '\\u27F7',\n\tlongmapsto: '\\u27FC',\n\tLongRightArrow: '\\u27F6',\n\tLongrightarrow: '\\u27F9',\n\tlongrightarrow: '\\u27F6',\n\tlooparrowleft: '\\u21AB',\n\tlooparrowright: '\\u21AC',\n\tlopar: '\\u2985',\n\tLopf: '\\uD835\\uDD43',\n\tlopf: '\\uD835\\uDD5D',\n\tloplus: '\\u2A2D',\n\tlotimes: '\\u2A34',\n\tlowast: '\\u2217',\n\tlowbar: '\\u005F',\n\tLowerLeftArrow: '\\u2199',\n\tLowerRightArrow: '\\u2198',\n\tloz: '\\u25CA',\n\tlozenge: '\\u25CA',\n\tlozf: '\\u29EB',\n\tlpar: '\\u0028',\n\tlparlt: '\\u2993',\n\tlrarr: '\\u21C6',\n\tlrcorner: '\\u231F',\n\tlrhar: '\\u21CB',\n\tlrhard: '\\u296D',\n\tlrm: '\\u200E',\n\tlrtri: '\\u22BF',\n\tlsaquo: '\\u2039',\n\tLscr: '\\u2112',\n\tlscr: '\\uD835\\uDCC1',\n\tLsh: '\\u21B0',\n\tlsh: '\\u21B0',\n\tlsim: '\\u2272',\n\tlsime: '\\u2A8D',\n\tlsimg: '\\u2A8F',\n\tlsqb: '\\u005B',\n\tlsquo: '\\u2018',\n\tlsquor: '\\u201A',\n\tLstrok: '\\u0141',\n\tlstrok: '\\u0142',\n\tLt: '\\u226A',\n\tLT: '\\u003C',\n\tlt: '\\u003C',\n\tltcc: '\\u2AA6',\n\tltcir: '\\u2A79',\n\tltdot: '\\u22D6',\n\tlthree: '\\u22CB',\n\tltimes: '\\u22C9',\n\tltlarr: '\\u2976',\n\tltquest: '\\u2A7B',\n\tltri: '\\u25C3',\n\tltrie: '\\u22B4',\n\tltrif: '\\u25C2',\n\tltrPar: '\\u2996',\n\tlurdshar: '\\u294A',\n\tluruhar: '\\u2966',\n\tlvertneqq: '\\u2268\\uFE00',\n\tlvnE: '\\u2268\\uFE00',\n\tmacr: '\\u00AF',\n\tmale: '\\u2642',\n\tmalt: '\\u2720',\n\tmaltese: '\\u2720',\n\tMap: '\\u2905',\n\tmap: '\\u21A6',\n\tmapsto: '\\u21A6',\n\tmapstodown: '\\u21A7',\n\tmapstoleft: '\\u21A4',\n\tmapstoup: '\\u21A5',\n\tmarker: '\\u25AE',\n\tmcomma: '\\u2A29',\n\tMcy: '\\u041C',\n\tmcy: '\\u043C',\n\tmdash: '\\u2014',\n\tmDDot: '\\u223A',\n\tmeasuredangle: '\\u2221',\n\tMediumSpace: '\\u205F',\n\tMellintrf: '\\u2133',\n\tMfr: '\\uD835\\uDD10',\n\tmfr: '\\uD835\\uDD2A',\n\tmho: '\\u2127',\n\tmicro: '\\u00B5',\n\tmid: '\\u2223',\n\tmidast: '\\u002A',\n\tmidcir: '\\u2AF0',\n\tmiddot: '\\u00B7',\n\tminus: '\\u2212',\n\tminusb: '\\u229F',\n\tminusd: '\\u2238',\n\tminusdu: '\\u2A2A',\n\tMinusPlus: '\\u2213',\n\tmlcp: '\\u2ADB',\n\tmldr: '\\u2026',\n\tmnplus: '\\u2213',\n\tmodels: '\\u22A7',\n\tMopf: '\\uD835\\uDD44',\n\tmopf: '\\uD835\\uDD5E',\n\tmp: '\\u2213',\n\tMscr: '\\u2133',\n\tmscr: '\\uD835\\uDCC2',\n\tmstpos: '\\u223E',\n\tMu: '\\u039C',\n\tmu: '\\u03BC',\n\tmultimap: '\\u22B8',\n\tmumap: '\\u22B8',\n\tnabla: '\\u2207',\n\tNacute: '\\u0143',\n\tnacute: '\\u0144',\n\tnang: '\\u2220\\u20D2',\n\tnap: '\\u2249',\n\tnapE: '\\u2A70\\u0338',\n\tnapid: '\\u224B\\u0338',\n\tnapos: '\\u0149',\n\tnapprox: '\\u2249',\n\tnatur: '\\u266E',\n\tnatural: '\\u266E',\n\tnaturals: '\\u2115',\n\tnbsp: '\\u00A0',\n\tnbump: '\\u224E\\u0338',\n\tnbumpe: '\\u224F\\u0338',\n\tncap: '\\u2A43',\n\tNcaron: '\\u0147',\n\tncaron: '\\u0148',\n\tNcedil: '\\u0145',\n\tncedil: '\\u0146',\n\tncong: '\\u2247',\n\tncongdot: '\\u2A6D\\u0338',\n\tncup: '\\u2A42',\n\tNcy: '\\u041D',\n\tncy: '\\u043D',\n\tndash: '\\u2013',\n\tne: '\\u2260',\n\tnearhk: '\\u2924',\n\tneArr: '\\u21D7',\n\tnearr: '\\u2197',\n\tnearrow: '\\u2197',\n\tnedot: '\\u2250\\u0338',\n\tNegativeMediumSpace: '\\u200B',\n\tNegativeThickSpace: '\\u200B',\n\tNegativeThinSpace: '\\u200B',\n\tNegativeVeryThinSpace: '\\u200B',\n\tnequiv: '\\u2262',\n\tnesear: '\\u2928',\n\tnesim: '\\u2242\\u0338',\n\tNestedGreaterGreater: '\\u226B',\n\tNestedLessLess: '\\u226A',\n\tNewLine: '\\u000A',\n\tnexist: '\\u2204',\n\tnexists: '\\u2204',\n\tNfr: '\\uD835\\uDD11',\n\tnfr: '\\uD835\\uDD2B',\n\tngE: '\\u2267\\u0338',\n\tnge: '\\u2271',\n\tngeq: '\\u2271',\n\tngeqq: '\\u2267\\u0338',\n\tngeqslant: '\\u2A7E\\u0338',\n\tnges: '\\u2A7E\\u0338',\n\tnGg: '\\u22D9\\u0338',\n\tngsim: '\\u2275',\n\tnGt: '\\u226B\\u20D2',\n\tngt: '\\u226F',\n\tngtr: '\\u226F',\n\tnGtv: '\\u226B\\u0338',\n\tnhArr: '\\u21CE',\n\tnharr: '\\u21AE',\n\tnhpar: '\\u2AF2',\n\tni: '\\u220B',\n\tnis: '\\u22FC',\n\tnisd: '\\u22FA',\n\tniv: '\\u220B',\n\tNJcy: '\\u040A',\n\tnjcy: '\\u045A',\n\tnlArr: '\\u21CD',\n\tnlarr: '\\u219A',\n\tnldr: '\\u2025',\n\tnlE: '\\u2266\\u0338',\n\tnle: '\\u2270',\n\tnLeftarrow: '\\u21CD',\n\tnleftarrow: '\\u219A',\n\tnLeftrightarrow: '\\u21CE',\n\tnleftrightarrow: '\\u21AE',\n\tnleq: '\\u2270',\n\tnleqq: '\\u2266\\u0338',\n\tnleqslant: '\\u2A7D\\u0338',\n\tnles: '\\u2A7D\\u0338',\n\tnless: '\\u226E',\n\tnLl: '\\u22D8\\u0338',\n\tnlsim: '\\u2274',\n\tnLt: '\\u226A\\u20D2',\n\tnlt: '\\u226E',\n\tnltri: '\\u22EA',\n\tnltrie: '\\u22EC',\n\tnLtv: '\\u226A\\u0338',\n\tnmid: '\\u2224',\n\tNoBreak: '\\u2060',\n\tNonBreakingSpace: '\\u00A0',\n\tNopf: '\\u2115',\n\tnopf: '\\uD835\\uDD5F',\n\tNot: '\\u2AEC',\n\tnot: '\\u00AC',\n\tNotCongruent: '\\u2262',\n\tNotCupCap: '\\u226D',\n\tNotDoubleVerticalBar: '\\u2226',\n\tNotElement: '\\u2209',\n\tNotEqual: '\\u2260',\n\tNotEqualTilde: '\\u2242\\u0338',\n\tNotExists: '\\u2204',\n\tNotGreater: '\\u226F',\n\tNotGreaterEqual: '\\u2271',\n\tNotGreaterFullEqual: '\\u2267\\u0338',\n\tNotGreaterGreater: '\\u226B\\u0338',\n\tNotGreaterLess: '\\u2279',\n\tNotGreaterSlantEqual: '\\u2A7E\\u0338',\n\tNotGreaterTilde: '\\u2275',\n\tNotHumpDownHump: '\\u224E\\u0338',\n\tNotHumpEqual: '\\u224F\\u0338',\n\tnotin: '\\u2209',\n\tnotindot: '\\u22F5\\u0338',\n\tnotinE: '\\u22F9\\u0338',\n\tnotinva: '\\u2209',\n\tnotinvb: '\\u22F7',\n\tnotinvc: '\\u22F6',\n\tNotLeftTriangle: '\\u22EA',\n\tNotLeftTriangleBar: '\\u29CF\\u0338',\n\tNotLeftTriangleEqual: '\\u22EC',\n\tNotLess: '\\u226E',\n\tNotLessEqual: '\\u2270',\n\tNotLessGreater: '\\u2278',\n\tNotLessLess: '\\u226A\\u0338',\n\tNotLessSlantEqual: '\\u2A7D\\u0338',\n\tNotLessTilde: '\\u2274',\n\tNotNestedGreaterGreater: '\\u2AA2\\u0338',\n\tNotNestedLessLess: '\\u2AA1\\u0338',\n\tnotni: '\\u220C',\n\tnotniva: '\\u220C',\n\tnotnivb: '\\u22FE',\n\tnotnivc: '\\u22FD',\n\tNotPrecedes: '\\u2280',\n\tNotPrecedesEqual: '\\u2AAF\\u0338',\n\tNotPrecedesSlantEqual: '\\u22E0',\n\tNotReverseElement: '\\u220C',\n\tNotRightTriangle: '\\u22EB',\n\tNotRightTriangleBar: '\\u29D0\\u0338',\n\tNotRightTriangleEqual: '\\u22ED',\n\tNotSquareSubset: '\\u228F\\u0338',\n\tNotSquareSubsetEqual: '\\u22E2',\n\tNotSquareSuperset: '\\u2290\\u0338',\n\tNotSquareSupersetEqual: '\\u22E3',\n\tNotSubset: '\\u2282\\u20D2',\n\tNotSubsetEqual: '\\u2288',\n\tNotSucceeds: '\\u2281',\n\tNotSucceedsEqual: '\\u2AB0\\u0338',\n\tNotSucceedsSlantEqual: '\\u22E1',\n\tNotSucceedsTilde: '\\u227F\\u0338',\n\tNotSuperset: '\\u2283\\u20D2',\n\tNotSupersetEqual: '\\u2289',\n\tNotTilde: '\\u2241',\n\tNotTildeEqual: '\\u2244',\n\tNotTildeFullEqual: '\\u2247',\n\tNotTildeTilde: '\\u2249',\n\tNotVerticalBar: '\\u2224',\n\tnpar: '\\u2226',\n\tnparallel: '\\u2226',\n\tnparsl: '\\u2AFD\\u20E5',\n\tnpart: '\\u2202\\u0338',\n\tnpolint: '\\u2A14',\n\tnpr: '\\u2280',\n\tnprcue: '\\u22E0',\n\tnpre: '\\u2AAF\\u0338',\n\tnprec: '\\u2280',\n\tnpreceq: '\\u2AAF\\u0338',\n\tnrArr: '\\u21CF',\n\tnrarr: '\\u219B',\n\tnrarrc: '\\u2933\\u0338',\n\tnrarrw: '\\u219D\\u0338',\n\tnRightarrow: '\\u21CF',\n\tnrightarrow: '\\u219B',\n\tnrtri: '\\u22EB',\n\tnrtrie: '\\u22ED',\n\tnsc: '\\u2281',\n\tnsccue: '\\u22E1',\n\tnsce: '\\u2AB0\\u0338',\n\tNscr: '\\uD835\\uDCA9',\n\tnscr: '\\uD835\\uDCC3',\n\tnshortmid: '\\u2224',\n\tnshortparallel: '\\u2226',\n\tnsim: '\\u2241',\n\tnsime: '\\u2244',\n\tnsimeq: '\\u2244',\n\tnsmid: '\\u2224',\n\tnspar: '\\u2226',\n\tnsqsube: '\\u22E2',\n\tnsqsupe: '\\u22E3',\n\tnsub: '\\u2284',\n\tnsubE: '\\u2AC5\\u0338',\n\tnsube: '\\u2288',\n\tnsubset: '\\u2282\\u20D2',\n\tnsubseteq: '\\u2288',\n\tnsubseteqq: '\\u2AC5\\u0338',\n\tnsucc: '\\u2281',\n\tnsucceq: '\\u2AB0\\u0338',\n\tnsup: '\\u2285',\n\tnsupE: '\\u2AC6\\u0338',\n\tnsupe: '\\u2289',\n\tnsupset: '\\u2283\\u20D2',\n\tnsupseteq: '\\u2289',\n\tnsupseteqq: '\\u2AC6\\u0338',\n\tntgl: '\\u2279',\n\tNtilde: '\\u00D1',\n\tntilde: '\\u00F1',\n\tntlg: '\\u2278',\n\tntriangleleft: '\\u22EA',\n\tntrianglelefteq: '\\u22EC',\n\tntriangleright: '\\u22EB',\n\tntrianglerighteq: '\\u22ED',\n\tNu: '\\u039D',\n\tnu: '\\u03BD',\n\tnum: '\\u0023',\n\tnumero: '\\u2116',\n\tnumsp: '\\u2007',\n\tnvap: '\\u224D\\u20D2',\n\tnVDash: '\\u22AF',\n\tnVdash: '\\u22AE',\n\tnvDash: '\\u22AD',\n\tnvdash: '\\u22AC',\n\tnvge: '\\u2265\\u20D2',\n\tnvgt: '\\u003E\\u20D2',\n\tnvHarr: '\\u2904',\n\tnvinfin: '\\u29DE',\n\tnvlArr: '\\u2902',\n\tnvle: '\\u2264\\u20D2',\n\tnvlt: '\\u003C\\u20D2',\n\tnvltrie: '\\u22B4\\u20D2',\n\tnvrArr: '\\u2903',\n\tnvrtrie: '\\u22B5\\u20D2',\n\tnvsim: '\\u223C\\u20D2',\n\tnwarhk: '\\u2923',\n\tnwArr: '\\u21D6',\n\tnwarr: '\\u2196',\n\tnwarrow: '\\u2196',\n\tnwnear: '\\u2927',\n\tOacute: '\\u00D3',\n\toacute: '\\u00F3',\n\toast: '\\u229B',\n\tocir: '\\u229A',\n\tOcirc: '\\u00D4',\n\tocirc: '\\u00F4',\n\tOcy: '\\u041E',\n\tocy: '\\u043E',\n\todash: '\\u229D',\n\tOdblac: '\\u0150',\n\todblac: '\\u0151',\n\todiv: '\\u2A38',\n\todot: '\\u2299',\n\todsold: '\\u29BC',\n\tOElig: '\\u0152',\n\toelig: '\\u0153',\n\tofcir: '\\u29BF',\n\tOfr: '\\uD835\\uDD12',\n\tofr: '\\uD835\\uDD2C',\n\togon: '\\u02DB',\n\tOgrave: '\\u00D2',\n\tograve: '\\u00F2',\n\togt: '\\u29C1',\n\tohbar: '\\u29B5',\n\tohm: '\\u03A9',\n\toint: '\\u222E',\n\tolarr: '\\u21BA',\n\tolcir: '\\u29BE',\n\tolcross: '\\u29BB',\n\toline: '\\u203E',\n\tolt: '\\u29C0',\n\tOmacr: '\\u014C',\n\tomacr: '\\u014D',\n\tOmega: '\\u03A9',\n\tomega: '\\u03C9',\n\tOmicron: '\\u039F',\n\tomicron: '\\u03BF',\n\tomid: '\\u29B6',\n\tominus: '\\u2296',\n\tOopf: '\\uD835\\uDD46',\n\toopf: '\\uD835\\uDD60',\n\topar: '\\u29B7',\n\tOpenCurlyDoubleQuote: '\\u201C',\n\tOpenCurlyQuote: '\\u2018',\n\toperp: '\\u29B9',\n\toplus: '\\u2295',\n\tOr: '\\u2A54',\n\tor: '\\u2228',\n\torarr: '\\u21BB',\n\tord: '\\u2A5D',\n\torder: '\\u2134',\n\torderof: '\\u2134',\n\tordf: '\\u00AA',\n\tordm: '\\u00BA',\n\torigof: '\\u22B6',\n\toror: '\\u2A56',\n\torslope: '\\u2A57',\n\torv: '\\u2A5B',\n\toS: '\\u24C8',\n\tOscr: '\\uD835\\uDCAA',\n\toscr: '\\u2134',\n\tOslash: '\\u00D8',\n\toslash: '\\u00F8',\n\tosol: '\\u2298',\n\tOtilde: '\\u00D5',\n\totilde: '\\u00F5',\n\tOtimes: '\\u2A37',\n\totimes: '\\u2297',\n\totimesas: '\\u2A36',\n\tOuml: '\\u00D6',\n\touml: '\\u00F6',\n\tovbar: '\\u233D',\n\tOverBar: '\\u203E',\n\tOverBrace: '\\u23DE',\n\tOverBracket: '\\u23B4',\n\tOverParenthesis: '\\u23DC',\n\tpar: '\\u2225',\n\tpara: '\\u00B6',\n\tparallel: '\\u2225',\n\tparsim: '\\u2AF3',\n\tparsl: '\\u2AFD',\n\tpart: '\\u2202',\n\tPartialD: '\\u2202',\n\tPcy: '\\u041F',\n\tpcy: '\\u043F',\n\tpercnt: '\\u0025',\n\tperiod: '\\u002E',\n\tpermil: '\\u2030',\n\tperp: '\\u22A5',\n\tpertenk: '\\u2031',\n\tPfr: '\\uD835\\uDD13',\n\tpfr: '\\uD835\\uDD2D',\n\tPhi: '\\u03A6',\n\tphi: '\\u03C6',\n\tphiv: '\\u03D5',\n\tphmmat: '\\u2133',\n\tphone: '\\u260E',\n\tPi: '\\u03A0',\n\tpi: '\\u03C0',\n\tpitchfork: '\\u22D4',\n\tpiv: '\\u03D6',\n\tplanck: '\\u210F',\n\tplanckh: '\\u210E',\n\tplankv: '\\u210F',\n\tplus: '\\u002B',\n\tplusacir: '\\u2A23',\n\tplusb: '\\u229E',\n\tpluscir: '\\u2A22',\n\tplusdo: '\\u2214',\n\tplusdu: '\\u2A25',\n\tpluse: '\\u2A72',\n\tPlusMinus: '\\u00B1',\n\tplusmn: '\\u00B1',\n\tplussim: '\\u2A26',\n\tplustwo: '\\u2A27',\n\tpm: '\\u00B1',\n\tPoincareplane: '\\u210C',\n\tpointint: '\\u2A15',\n\tPopf: '\\u2119',\n\tpopf: '\\uD835\\uDD61',\n\tpound: '\\u00A3',\n\tPr: '\\u2ABB',\n\tpr: '\\u227A',\n\tprap: '\\u2AB7',\n\tprcue: '\\u227C',\n\tprE: '\\u2AB3',\n\tpre: '\\u2AAF',\n\tprec: '\\u227A',\n\tprecapprox: '\\u2AB7',\n\tpreccurlyeq: '\\u227C',\n\tPrecedes: '\\u227A',\n\tPrecedesEqual: '\\u2AAF',\n\tPrecedesSlantEqual: '\\u227C',\n\tPrecedesTilde: '\\u227E',\n\tpreceq: '\\u2AAF',\n\tprecnapprox: '\\u2AB9',\n\tprecneqq: '\\u2AB5',\n\tprecnsim: '\\u22E8',\n\tprecsim: '\\u227E',\n\tPrime: '\\u2033',\n\tprime: '\\u2032',\n\tprimes: '\\u2119',\n\tprnap: '\\u2AB9',\n\tprnE: '\\u2AB5',\n\tprnsim: '\\u22E8',\n\tprod: '\\u220F',\n\tProduct: '\\u220F',\n\tprofalar: '\\u232E',\n\tprofline: '\\u2312',\n\tprofsurf: '\\u2313',\n\tprop: '\\u221D',\n\tProportion: '\\u2237',\n\tProportional: '\\u221D',\n\tpropto: '\\u221D',\n\tprsim: '\\u227E',\n\tprurel: '\\u22B0',\n\tPscr: '\\uD835\\uDCAB',\n\tpscr: '\\uD835\\uDCC5',\n\tPsi: '\\u03A8',\n\tpsi: '\\u03C8',\n\tpuncsp: '\\u2008',\n\tQfr: '\\uD835\\uDD14',\n\tqfr: '\\uD835\\uDD2E',\n\tqint: '\\u2A0C',\n\tQopf: '\\u211A',\n\tqopf: '\\uD835\\uDD62',\n\tqprime: '\\u2057',\n\tQscr: '\\uD835\\uDCAC',\n\tqscr: '\\uD835\\uDCC6',\n\tquaternions: '\\u210D',\n\tquatint: '\\u2A16',\n\tquest: '\\u003F',\n\tquesteq: '\\u225F',\n\tQUOT: '\\u0022',\n\tquot: '\\u0022',\n\trAarr: '\\u21DB',\n\trace: '\\u223D\\u0331',\n\tRacute: '\\u0154',\n\tracute: '\\u0155',\n\tradic: '\\u221A',\n\traemptyv: '\\u29B3',\n\tRang: '\\u27EB',\n\trang: '\\u27E9',\n\trangd: '\\u2992',\n\trange: '\\u29A5',\n\trangle: '\\u27E9',\n\traquo: '\\u00BB',\n\tRarr: '\\u21A0',\n\trArr: '\\u21D2',\n\trarr: '\\u2192',\n\trarrap: '\\u2975',\n\trarrb: '\\u21E5',\n\trarrbfs: '\\u2920',\n\trarrc: '\\u2933',\n\trarrfs: '\\u291E',\n\trarrhk: '\\u21AA',\n\trarrlp: '\\u21AC',\n\trarrpl: '\\u2945',\n\trarrsim: '\\u2974',\n\tRarrtl: '\\u2916',\n\trarrtl: '\\u21A3',\n\trarrw: '\\u219D',\n\trAtail: '\\u291C',\n\tratail: '\\u291A',\n\tratio: '\\u2236',\n\trationals: '\\u211A',\n\tRBarr: '\\u2910',\n\trBarr: '\\u290F',\n\trbarr: '\\u290D',\n\trbbrk: '\\u2773',\n\trbrace: '\\u007D',\n\trbrack: '\\u005D',\n\trbrke: '\\u298C',\n\trbrksld: '\\u298E',\n\trbrkslu: '\\u2990',\n\tRcaron: '\\u0158',\n\trcaron: '\\u0159',\n\tRcedil: '\\u0156',\n\trcedil: '\\u0157',\n\trceil: '\\u2309',\n\trcub: '\\u007D',\n\tRcy: '\\u0420',\n\trcy: '\\u0440',\n\trdca: '\\u2937',\n\trdldhar: '\\u2969',\n\trdquo: '\\u201D',\n\trdquor: '\\u201D',\n\trdsh: '\\u21B3',\n\tRe: '\\u211C',\n\treal: '\\u211C',\n\trealine: '\\u211B',\n\trealpart: '\\u211C',\n\treals: '\\u211D',\n\trect: '\\u25AD',\n\tREG: '\\u00AE',\n\treg: '\\u00AE',\n\tReverseElement: '\\u220B',\n\tReverseEquilibrium: '\\u21CB',\n\tReverseUpEquilibrium: '\\u296F',\n\trfisht: '\\u297D',\n\trfloor: '\\u230B',\n\tRfr: '\\u211C',\n\trfr: '\\uD835\\uDD2F',\n\trHar: '\\u2964',\n\trhard: '\\u21C1',\n\trharu: '\\u21C0',\n\trharul: '\\u296C',\n\tRho: '\\u03A1',\n\trho: '\\u03C1',\n\trhov: '\\u03F1',\n\tRightAngleBracket: '\\u27E9',\n\tRightArrow: '\\u2192',\n\tRightarrow: '\\u21D2',\n\trightarrow: '\\u2192',\n\tRightArrowBar: '\\u21E5',\n\tRightArrowLeftArrow: '\\u21C4',\n\trightarrowtail: '\\u21A3',\n\tRightCeiling: '\\u2309',\n\tRightDoubleBracket: '\\u27E7',\n\tRightDownTeeVector: '\\u295D',\n\tRightDownVector: '\\u21C2',\n\tRightDownVectorBar: '\\u2955',\n\tRightFloor: '\\u230B',\n\trightharpoondown: '\\u21C1',\n\trightharpoonup: '\\u21C0',\n\trightleftarrows: '\\u21C4',\n\trightleftharpoons: '\\u21CC',\n\trightrightarrows: '\\u21C9',\n\trightsquigarrow: '\\u219D',\n\tRightTee: '\\u22A2',\n\tRightTeeArrow: '\\u21A6',\n\tRightTeeVector: '\\u295B',\n\trightthreetimes: '\\u22CC',\n\tRightTriangle: '\\u22B3',\n\tRightTriangleBar: '\\u29D0',\n\tRightTriangleEqual: '\\u22B5',\n\tRightUpDownVector: '\\u294F',\n\tRightUpTeeVector: '\\u295C',\n\tRightUpVector: '\\u21BE',\n\tRightUpVectorBar: '\\u2954',\n\tRightVector: '\\u21C0',\n\tRightVectorBar: '\\u2953',\n\tring: '\\u02DA',\n\trisingdotseq: '\\u2253',\n\trlarr: '\\u21C4',\n\trlhar: '\\u21CC',\n\trlm: '\\u200F',\n\trmoust: '\\u23B1',\n\trmoustache: '\\u23B1',\n\trnmid: '\\u2AEE',\n\troang: '\\u27ED',\n\troarr: '\\u21FE',\n\trobrk: '\\u27E7',\n\tropar: '\\u2986',\n\tRopf: '\\u211D',\n\tropf: '\\uD835\\uDD63',\n\troplus: '\\u2A2E',\n\trotimes: '\\u2A35',\n\tRoundImplies: '\\u2970',\n\trpar: '\\u0029',\n\trpargt: '\\u2994',\n\trppolint: '\\u2A12',\n\trrarr: '\\u21C9',\n\tRrightarrow: '\\u21DB',\n\trsaquo: '\\u203A',\n\tRscr: '\\u211B',\n\trscr: '\\uD835\\uDCC7',\n\tRsh: '\\u21B1',\n\trsh: '\\u21B1',\n\trsqb: '\\u005D',\n\trsquo: '\\u2019',\n\trsquor: '\\u2019',\n\trthree: '\\u22CC',\n\trtimes: '\\u22CA',\n\trtri: '\\u25B9',\n\trtrie: '\\u22B5',\n\trtrif: '\\u25B8',\n\trtriltri: '\\u29CE',\n\tRuleDelayed: '\\u29F4',\n\truluhar: '\\u2968',\n\trx: '\\u211E',\n\tSacute: '\\u015A',\n\tsacute: '\\u015B',\n\tsbquo: '\\u201A',\n\tSc: '\\u2ABC',\n\tsc: '\\u227B',\n\tscap: '\\u2AB8',\n\tScaron: '\\u0160',\n\tscaron: '\\u0161',\n\tsccue: '\\u227D',\n\tscE: '\\u2AB4',\n\tsce: '\\u2AB0',\n\tScedil: '\\u015E',\n\tscedil: '\\u015F',\n\tScirc: '\\u015C',\n\tscirc: '\\u015D',\n\tscnap: '\\u2ABA',\n\tscnE: '\\u2AB6',\n\tscnsim: '\\u22E9',\n\tscpolint: '\\u2A13',\n\tscsim: '\\u227F',\n\tScy: '\\u0421',\n\tscy: '\\u0441',\n\tsdot: '\\u22C5',\n\tsdotb: '\\u22A1',\n\tsdote: '\\u2A66',\n\tsearhk: '\\u2925',\n\tseArr: '\\u21D8',\n\tsearr: '\\u2198',\n\tsearrow: '\\u2198',\n\tsect: '\\u00A7',\n\tsemi: '\\u003B',\n\tseswar: '\\u2929',\n\tsetminus: '\\u2216',\n\tsetmn: '\\u2216',\n\tsext: '\\u2736',\n\tSfr: '\\uD835\\uDD16',\n\tsfr: '\\uD835\\uDD30',\n\tsfrown: '\\u2322',\n\tsharp: '\\u266F',\n\tSHCHcy: '\\u0429',\n\tshchcy: '\\u0449',\n\tSHcy: '\\u0428',\n\tshcy: '\\u0448',\n\tShortDownArrow: '\\u2193',\n\tShortLeftArrow: '\\u2190',\n\tshortmid: '\\u2223',\n\tshortparallel: '\\u2225',\n\tShortRightArrow: '\\u2192',\n\tShortUpArrow: '\\u2191',\n\tshy: '\\u00AD',\n\tSigma: '\\u03A3',\n\tsigma: '\\u03C3',\n\tsigmaf: '\\u03C2',\n\tsigmav: '\\u03C2',\n\tsim: '\\u223C',\n\tsimdot: '\\u2A6A',\n\tsime: '\\u2243',\n\tsimeq: '\\u2243',\n\tsimg: '\\u2A9E',\n\tsimgE: '\\u2AA0',\n\tsiml: '\\u2A9D',\n\tsimlE: '\\u2A9F',\n\tsimne: '\\u2246',\n\tsimplus: '\\u2A24',\n\tsimrarr: '\\u2972',\n\tslarr: '\\u2190',\n\tSmallCircle: '\\u2218',\n\tsmallsetminus: '\\u2216',\n\tsmashp: '\\u2A33',\n\tsmeparsl: '\\u29E4',\n\tsmid: '\\u2223',\n\tsmile: '\\u2323',\n\tsmt: '\\u2AAA',\n\tsmte: '\\u2AAC',\n\tsmtes: '\\u2AAC\\uFE00',\n\tSOFTcy: '\\u042C',\n\tsoftcy: '\\u044C',\n\tsol: '\\u002F',\n\tsolb: '\\u29C4',\n\tsolbar: '\\u233F',\n\tSopf: '\\uD835\\uDD4A',\n\tsopf: '\\uD835\\uDD64',\n\tspades: '\\u2660',\n\tspadesuit: '\\u2660',\n\tspar: '\\u2225',\n\tsqcap: '\\u2293',\n\tsqcaps: '\\u2293\\uFE00',\n\tsqcup: '\\u2294',\n\tsqcups: '\\u2294\\uFE00',\n\tSqrt: '\\u221A',\n\tsqsub: '\\u228F',\n\tsqsube: '\\u2291',\n\tsqsubset: '\\u228F',\n\tsqsubseteq: '\\u2291',\n\tsqsup: '\\u2290',\n\tsqsupe: '\\u2292',\n\tsqsupset: '\\u2290',\n\tsqsupseteq: '\\u2292',\n\tsqu: '\\u25A1',\n\tSquare: '\\u25A1',\n\tsquare: '\\u25A1',\n\tSquareIntersection: '\\u2293',\n\tSquareSubset: '\\u228F',\n\tSquareSubsetEqual: '\\u2291',\n\tSquareSuperset: '\\u2290',\n\tSquareSupersetEqual: '\\u2292',\n\tSquareUnion: '\\u2294',\n\tsquarf: '\\u25AA',\n\tsquf: '\\u25AA',\n\tsrarr: '\\u2192',\n\tSscr: '\\uD835\\uDCAE',\n\tsscr: '\\uD835\\uDCC8',\n\tssetmn: '\\u2216',\n\tssmile: '\\u2323',\n\tsstarf: '\\u22C6',\n\tStar: '\\u22C6',\n\tstar: '\\u2606',\n\tstarf: '\\u2605',\n\tstraightepsilon: '\\u03F5',\n\tstraightphi: '\\u03D5',\n\tstrns: '\\u00AF',\n\tSub: '\\u22D0',\n\tsub: '\\u2282',\n\tsubdot: '\\u2ABD',\n\tsubE: '\\u2AC5',\n\tsube: '\\u2286',\n\tsubedot: '\\u2AC3',\n\tsubmult: '\\u2AC1',\n\tsubnE: '\\u2ACB',\n\tsubne: '\\u228A',\n\tsubplus: '\\u2ABF',\n\tsubrarr: '\\u2979',\n\tSubset: '\\u22D0',\n\tsubset: '\\u2282',\n\tsubseteq: '\\u2286',\n\tsubseteqq: '\\u2AC5',\n\tSubsetEqual: '\\u2286',\n\tsubsetneq: '\\u228A',\n\tsubsetneqq: '\\u2ACB',\n\tsubsim: '\\u2AC7',\n\tsubsub: '\\u2AD5',\n\tsubsup: '\\u2AD3',\n\tsucc: '\\u227B',\n\tsuccapprox: '\\u2AB8',\n\tsucccurlyeq: '\\u227D',\n\tSucceeds: '\\u227B',\n\tSucceedsEqual: '\\u2AB0',\n\tSucceedsSlantEqual: '\\u227D',\n\tSucceedsTilde: '\\u227F',\n\tsucceq: '\\u2AB0',\n\tsuccnapprox: '\\u2ABA',\n\tsuccneqq: '\\u2AB6',\n\tsuccnsim: '\\u22E9',\n\tsuccsim: '\\u227F',\n\tSuchThat: '\\u220B',\n\tSum: '\\u2211',\n\tsum: '\\u2211',\n\tsung: '\\u266A',\n\tSup: '\\u22D1',\n\tsup: '\\u2283',\n\tsup1: '\\u00B9',\n\tsup2: '\\u00B2',\n\tsup3: '\\u00B3',\n\tsupdot: '\\u2ABE',\n\tsupdsub: '\\u2AD8',\n\tsupE: '\\u2AC6',\n\tsupe: '\\u2287',\n\tsupedot: '\\u2AC4',\n\tSuperset: '\\u2283',\n\tSupersetEqual: '\\u2287',\n\tsuphsol: '\\u27C9',\n\tsuphsub: '\\u2AD7',\n\tsuplarr: '\\u297B',\n\tsupmult: '\\u2AC2',\n\tsupnE: '\\u2ACC',\n\tsupne: '\\u228B',\n\tsupplus: '\\u2AC0',\n\tSupset: '\\u22D1',\n\tsupset: '\\u2283',\n\tsupseteq: '\\u2287',\n\tsupseteqq: '\\u2AC6',\n\tsupsetneq: '\\u228B',\n\tsupsetneqq: '\\u2ACC',\n\tsupsim: '\\u2AC8',\n\tsupsub: '\\u2AD4',\n\tsupsup: '\\u2AD6',\n\tswarhk: '\\u2926',\n\tswArr: '\\u21D9',\n\tswarr: '\\u2199',\n\tswarrow: '\\u2199',\n\tswnwar: '\\u292A',\n\tszlig: '\\u00DF',\n\tTab: '\\u0009',\n\ttarget: '\\u2316',\n\tTau: '\\u03A4',\n\ttau: '\\u03C4',\n\ttbrk: '\\u23B4',\n\tTcaron: '\\u0164',\n\ttcaron: '\\u0165',\n\tTcedil: '\\u0162',\n\ttcedil: '\\u0163',\n\tTcy: '\\u0422',\n\ttcy: '\\u0442',\n\ttdot: '\\u20DB',\n\ttelrec: '\\u2315',\n\tTfr: '\\uD835\\uDD17',\n\ttfr: '\\uD835\\uDD31',\n\tthere4: '\\u2234',\n\tTherefore: '\\u2234',\n\ttherefore: '\\u2234',\n\tTheta: '\\u0398',\n\ttheta: '\\u03B8',\n\tthetasym: '\\u03D1',\n\tthetav: '\\u03D1',\n\tthickapprox: '\\u2248',\n\tthicksim: '\\u223C',\n\tThickSpace: '\\u205F\\u200A',\n\tthinsp: '\\u2009',\n\tThinSpace: '\\u2009',\n\tthkap: '\\u2248',\n\tthksim: '\\u223C',\n\tTHORN: '\\u00DE',\n\tthorn: '\\u00FE',\n\tTilde: '\\u223C',\n\ttilde: '\\u02DC',\n\tTildeEqual: '\\u2243',\n\tTildeFullEqual: '\\u2245',\n\tTildeTilde: '\\u2248',\n\ttimes: '\\u00D7',\n\ttimesb: '\\u22A0',\n\ttimesbar: '\\u2A31',\n\ttimesd: '\\u2A30',\n\ttint: '\\u222D',\n\ttoea: '\\u2928',\n\ttop: '\\u22A4',\n\ttopbot: '\\u2336',\n\ttopcir: '\\u2AF1',\n\tTopf: '\\uD835\\uDD4B',\n\ttopf: '\\uD835\\uDD65',\n\ttopfork: '\\u2ADA',\n\ttosa: '\\u2929',\n\ttprime: '\\u2034',\n\tTRADE: '\\u2122',\n\ttrade: '\\u2122',\n\ttriangle: '\\u25B5',\n\ttriangledown: '\\u25BF',\n\ttriangleleft: '\\u25C3',\n\ttrianglelefteq: '\\u22B4',\n\ttriangleq: '\\u225C',\n\ttriangleright: '\\u25B9',\n\ttrianglerighteq: '\\u22B5',\n\ttridot: '\\u25EC',\n\ttrie: '\\u225C',\n\ttriminus: '\\u2A3A',\n\tTripleDot: '\\u20DB',\n\ttriplus: '\\u2A39',\n\ttrisb: '\\u29CD',\n\ttritime: '\\u2A3B',\n\ttrpezium: '\\u23E2',\n\tTscr: '\\uD835\\uDCAF',\n\ttscr: '\\uD835\\uDCC9',\n\tTScy: '\\u0426',\n\ttscy: '\\u0446',\n\tTSHcy: '\\u040B',\n\ttshcy: '\\u045B',\n\tTstrok: '\\u0166',\n\ttstrok: '\\u0167',\n\ttwixt: '\\u226C',\n\ttwoheadleftarrow: '\\u219E',\n\ttwoheadrightarrow: '\\u21A0',\n\tUacute: '\\u00DA',\n\tuacute: '\\u00FA',\n\tUarr: '\\u219F',\n\tuArr: '\\u21D1',\n\tuarr: '\\u2191',\n\tUarrocir: '\\u2949',\n\tUbrcy: '\\u040E',\n\tubrcy: '\\u045E',\n\tUbreve: '\\u016C',\n\tubreve: '\\u016D',\n\tUcirc: '\\u00DB',\n\tucirc: '\\u00FB',\n\tUcy: '\\u0423',\n\tucy: '\\u0443',\n\tudarr: '\\u21C5',\n\tUdblac: '\\u0170',\n\tudblac: '\\u0171',\n\tudhar: '\\u296E',\n\tufisht: '\\u297E',\n\tUfr: '\\uD835\\uDD18',\n\tufr: '\\uD835\\uDD32',\n\tUgrave: '\\u00D9',\n\tugrave: '\\u00F9',\n\tuHar: '\\u2963',\n\tuharl: '\\u21BF',\n\tuharr: '\\u21BE',\n\tuhblk: '\\u2580',\n\tulcorn: '\\u231C',\n\tulcorner: '\\u231C',\n\tulcrop: '\\u230F',\n\tultri: '\\u25F8',\n\tUmacr: '\\u016A',\n\tumacr: '\\u016B',\n\tuml: '\\u00A8',\n\tUnderBar: '\\u005F',\n\tUnderBrace: '\\u23DF',\n\tUnderBracket: '\\u23B5',\n\tUnderParenthesis: '\\u23DD',\n\tUnion: '\\u22C3',\n\tUnionPlus: '\\u228E',\n\tUogon: '\\u0172',\n\tuogon: '\\u0173',\n\tUopf: '\\uD835\\uDD4C',\n\tuopf: '\\uD835\\uDD66',\n\tUpArrow: '\\u2191',\n\tUparrow: '\\u21D1',\n\tuparrow: '\\u2191',\n\tUpArrowBar: '\\u2912',\n\tUpArrowDownArrow: '\\u21C5',\n\tUpDownArrow: '\\u2195',\n\tUpdownarrow: '\\u21D5',\n\tupdownarrow: '\\u2195',\n\tUpEquilibrium: '\\u296E',\n\tupharpoonleft: '\\u21BF',\n\tupharpoonright: '\\u21BE',\n\tuplus: '\\u228E',\n\tUpperLeftArrow: '\\u2196',\n\tUpperRightArrow: '\\u2197',\n\tUpsi: '\\u03D2',\n\tupsi: '\\u03C5',\n\tupsih: '\\u03D2',\n\tUpsilon: '\\u03A5',\n\tupsilon: '\\u03C5',\n\tUpTee: '\\u22A5',\n\tUpTeeArrow: '\\u21A5',\n\tupuparrows: '\\u21C8',\n\turcorn: '\\u231D',\n\turcorner: '\\u231D',\n\turcrop: '\\u230E',\n\tUring: '\\u016E',\n\turing: '\\u016F',\n\turtri: '\\u25F9',\n\tUscr: '\\uD835\\uDCB0',\n\tuscr: '\\uD835\\uDCCA',\n\tutdot: '\\u22F0',\n\tUtilde: '\\u0168',\n\tutilde: '\\u0169',\n\tutri: '\\u25B5',\n\tutrif: '\\u25B4',\n\tuuarr: '\\u21C8',\n\tUuml: '\\u00DC',\n\tuuml: '\\u00FC',\n\tuwangle: '\\u29A7',\n\tvangrt: '\\u299C',\n\tvarepsilon: '\\u03F5',\n\tvarkappa: '\\u03F0',\n\tvarnothing: '\\u2205',\n\tvarphi: '\\u03D5',\n\tvarpi: '\\u03D6',\n\tvarpropto: '\\u221D',\n\tvArr: '\\u21D5',\n\tvarr: '\\u2195',\n\tvarrho: '\\u03F1',\n\tvarsigma: '\\u03C2',\n\tvarsubsetneq: '\\u228A\\uFE00',\n\tvarsubsetneqq: '\\u2ACB\\uFE00',\n\tvarsupsetneq: '\\u228B\\uFE00',\n\tvarsupsetneqq: '\\u2ACC\\uFE00',\n\tvartheta: '\\u03D1',\n\tvartriangleleft: '\\u22B2',\n\tvartriangleright: '\\u22B3',\n\tVbar: '\\u2AEB',\n\tvBar: '\\u2AE8',\n\tvBarv: '\\u2AE9',\n\tVcy: '\\u0412',\n\tvcy: '\\u0432',\n\tVDash: '\\u22AB',\n\tVdash: '\\u22A9',\n\tvDash: '\\u22A8',\n\tvdash: '\\u22A2',\n\tVdashl: '\\u2AE6',\n\tVee: '\\u22C1',\n\tvee: '\\u2228',\n\tveebar: '\\u22BB',\n\tveeeq: '\\u225A',\n\tvellip: '\\u22EE',\n\tVerbar: '\\u2016',\n\tverbar: '\\u007C',\n\tVert: '\\u2016',\n\tvert: '\\u007C',\n\tVerticalBar: '\\u2223',\n\tVerticalLine: '\\u007C',\n\tVerticalSeparator: '\\u2758',\n\tVerticalTilde: '\\u2240',\n\tVeryThinSpace: '\\u200A',\n\tVfr: '\\uD835\\uDD19',\n\tvfr: '\\uD835\\uDD33',\n\tvltri: '\\u22B2',\n\tvnsub: '\\u2282\\u20D2',\n\tvnsup: '\\u2283\\u20D2',\n\tVopf: '\\uD835\\uDD4D',\n\tvopf: '\\uD835\\uDD67',\n\tvprop: '\\u221D',\n\tvrtri: '\\u22B3',\n\tVscr: '\\uD835\\uDCB1',\n\tvscr: '\\uD835\\uDCCB',\n\tvsubnE: '\\u2ACB\\uFE00',\n\tvsubne: '\\u228A\\uFE00',\n\tvsupnE: '\\u2ACC\\uFE00',\n\tvsupne: '\\u228B\\uFE00',\n\tVvdash: '\\u22AA',\n\tvzigzag: '\\u299A',\n\tWcirc: '\\u0174',\n\twcirc: '\\u0175',\n\twedbar: '\\u2A5F',\n\tWedge: '\\u22C0',\n\twedge: '\\u2227',\n\twedgeq: '\\u2259',\n\tweierp: '\\u2118',\n\tWfr: '\\uD835\\uDD1A',\n\twfr: '\\uD835\\uDD34',\n\tWopf: '\\uD835\\uDD4E',\n\twopf: '\\uD835\\uDD68',\n\twp: '\\u2118',\n\twr: '\\u2240',\n\twreath: '\\u2240',\n\tWscr: '\\uD835\\uDCB2',\n\twscr: '\\uD835\\uDCCC',\n\txcap: '\\u22C2',\n\txcirc: '\\u25EF',\n\txcup: '\\u22C3',\n\txdtri: '\\u25BD',\n\tXfr: '\\uD835\\uDD1B',\n\txfr: '\\uD835\\uDD35',\n\txhArr: '\\u27FA',\n\txharr: '\\u27F7',\n\tXi: '\\u039E',\n\txi: '\\u03BE',\n\txlArr: '\\u27F8',\n\txlarr: '\\u27F5',\n\txmap: '\\u27FC',\n\txnis: '\\u22FB',\n\txodot: '\\u2A00',\n\tXopf: '\\uD835\\uDD4F',\n\txopf: '\\uD835\\uDD69',\n\txoplus: '\\u2A01',\n\txotime: '\\u2A02',\n\txrArr: '\\u27F9',\n\txrarr: '\\u27F6',\n\tXscr: '\\uD835\\uDCB3',\n\txscr: '\\uD835\\uDCCD',\n\txsqcup: '\\u2A06',\n\txuplus: '\\u2A04',\n\txutri: '\\u25B3',\n\txvee: '\\u22C1',\n\txwedge: '\\u22C0',\n\tYacute: '\\u00DD',\n\tyacute: '\\u00FD',\n\tYAcy: '\\u042F',\n\tyacy: '\\u044F',\n\tYcirc: '\\u0176',\n\tycirc: '\\u0177',\n\tYcy: '\\u042B',\n\tycy: '\\u044B',\n\tyen: '\\u00A5',\n\tYfr: '\\uD835\\uDD1C',\n\tyfr: '\\uD835\\uDD36',\n\tYIcy: '\\u0407',\n\tyicy: '\\u0457',\n\tYopf: '\\uD835\\uDD50',\n\tyopf: '\\uD835\\uDD6A',\n\tYscr: '\\uD835\\uDCB4',\n\tyscr: '\\uD835\\uDCCE',\n\tYUcy: '\\u042E',\n\tyucy: '\\u044E',\n\tYuml: '\\u0178',\n\tyuml: '\\u00FF',\n\tZacute: '\\u0179',\n\tzacute: '\\u017A',\n\tZcaron: '\\u017D',\n\tzcaron: '\\u017E',\n\tZcy: '\\u0417',\n\tzcy: '\\u0437',\n\tZdot: '\\u017B',\n\tzdot: '\\u017C',\n\tzeetrf: '\\u2128',\n\tZeroWidthSpace: '\\u200B',\n\tZeta: '\\u0396',\n\tzeta: '\\u03B6',\n\tZfr: '\\u2128',\n\tzfr: '\\uD835\\uDD37',\n\tZHcy: '\\u0416',\n\tzhcy: '\\u0436',\n\tzigrarr: '\\u21DD',\n\tZopf: '\\u2124',\n\tzopf: '\\uD835\\uDD6B',\n\tZscr: '\\uD835\\uDCB5',\n\tzscr: '\\uD835\\uDCCF',\n\tzwj: '\\u200D',\n\tzwnj: '\\u200C',\n});\n\n/**\n * @deprecated use `HTML_ENTITIES` instead\n * @see HTML_ENTITIES\n */\nexports.entityMap = exports.HTML_ENTITIES;\n","var NAMESPACE = require(\"./conventions\").NAMESPACE;\n\n//[4] \tNameStartChar\t ::= \t\":\" | [A-Z] | \"_\" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n//[4a] \tNameChar\t ::= \tNameStartChar | \"-\" | \".\" | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]\n//[5] \tName\t ::= \tNameStartChar (NameChar)*\nvar nameStartChar = /[A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]///\\u10000-\\uEFFFF\nvar nameChar = new RegExp(\"[\\\\-\\\\.0-9\"+nameStartChar.source.slice(1,-1)+\"\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]\");\nvar tagNamePattern = new RegExp('^'+nameStartChar.source+nameChar.source+'*(?:\\:'+nameStartChar.source+nameChar.source+'*)?$');\n//var tagNamePattern = /^[a-zA-Z_][\\w\\-\\.]*(?:\\:[a-zA-Z_][\\w\\-\\.]*)?$/\n//var handlers = 'resolveEntity,getExternalSubset,characters,endDocument,endElement,endPrefixMapping,ignorableWhitespace,processingInstruction,setDocumentLocator,skippedEntity,startDocument,startElement,startPrefixMapping,notationDecl,unparsedEntityDecl,error,fatalError,warning,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,comment,endCDATA,endDTD,endEntity,startCDATA,startDTD,startEntity'.split(',')\n\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\nvar S_TAG = 0;//tag name offerring\nvar S_ATTR = 1;//attr name offerring\nvar S_ATTR_SPACE=2;//attr name end and space offer\nvar S_EQ = 3;//=space?\nvar S_ATTR_NOQUOT_VALUE = 4;//attr value(no quot value only)\nvar S_ATTR_END = 5;//attr value end and no space(quot end)\nvar S_TAG_SPACE = 6;//(attr value end || tag end ) && (space offer)\nvar S_TAG_CLOSE = 7;//closed el\n\n/**\n * Creates an error that will not be caught by XMLReader aka the SAX parser.\n *\n * @param {string} message\n * @param {any?} locator Optional, can provide details about the location in the source\n * @constructor\n */\nfunction ParseError(message, locator) {\n\tthis.message = message\n\tthis.locator = locator\n\tif(Error.captureStackTrace) Error.captureStackTrace(this, ParseError);\n}\nParseError.prototype = new Error();\nParseError.prototype.name = ParseError.name\n\nfunction XMLReader(){\n\n}\n\nXMLReader.prototype = {\n\tparse:function(source,defaultNSMap,entityMap){\n\t\tvar domBuilder = this.domBuilder;\n\t\tdomBuilder.startDocument();\n\t\t_copy(defaultNSMap ,defaultNSMap = {})\n\t\tparse(source,defaultNSMap,entityMap,\n\t\t\t\tdomBuilder,this.errorHandler);\n\t\tdomBuilder.endDocument();\n\t}\n}\nfunction parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){\n\tfunction fixedFromCharCode(code) {\n\t\t// String.prototype.fromCharCode does not supports\n\t\t// > 2 bytes unicode chars directly\n\t\tif (code > 0xffff) {\n\t\t\tcode -= 0x10000;\n\t\t\tvar surrogate1 = 0xd800 + (code >> 10)\n\t\t\t\t, surrogate2 = 0xdc00 + (code & 0x3ff);\n\n\t\t\treturn String.fromCharCode(surrogate1, surrogate2);\n\t\t} else {\n\t\t\treturn String.fromCharCode(code);\n\t\t}\n\t}\n\tfunction entityReplacer(a){\n\t\tvar k = a.slice(1,-1);\n\t\tif (Object.hasOwnProperty.call(entityMap, k)) {\n\t\t\treturn entityMap[k];\n\t\t}else if(k.charAt(0) === '#'){\n\t\t\treturn fixedFromCharCode(parseInt(k.substr(1).replace('x','0x')))\n\t\t}else{\n\t\t\terrorHandler.error('entity not found:'+a);\n\t\t\treturn a;\n\t\t}\n\t}\n\tfunction appendText(end){//has some bugs\n\t\tif(end>start){\n\t\t\tvar xt = source.substring(start,end).replace(/&#?\\w+;/g,entityReplacer);\n\t\t\tlocator&&position(start);\n\t\t\tdomBuilder.characters(xt,0,end-start);\n\t\t\tstart = end\n\t\t}\n\t}\n\tfunction position(p,m){\n\t\twhile(p>=lineEnd && (m = linePattern.exec(source))){\n\t\t\tlineStart = m.index;\n\t\t\tlineEnd = lineStart + m[0].length;\n\t\t\tlocator.lineNumber++;\n\t\t\t//console.log('line++:',locator,startPos,endPos)\n\t\t}\n\t\tlocator.columnNumber = p-lineStart+1;\n\t}\n\tvar lineStart = 0;\n\tvar lineEnd = 0;\n\tvar linePattern = /.*(?:\\r\\n?|\\n)|.*$/g\n\tvar locator = domBuilder.locator;\n\n\tvar parseStack = [{currentNSMap:defaultNSMapCopy}]\n\tvar closeMap = {};\n\tvar start = 0;\n\twhile(true){\n\t\ttry{\n\t\t\tvar tagStart = source.indexOf('<',start);\n\t\t\tif(tagStart<0){\n\t\t\t\tif(!source.substr(start).match(/^\\s*$/)){\n\t\t\t\t\tvar doc = domBuilder.doc;\n\t \t\t\tvar text = doc.createTextNode(source.substr(start));\n\t \t\t\tdoc.appendChild(text);\n\t \t\t\tdomBuilder.currentElement = text;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif(tagStart>start){\n\t\t\t\tappendText(tagStart);\n\t\t\t}\n\t\t\tswitch(source.charAt(tagStart+1)){\n\t\t\tcase '/':\n\t\t\t\tvar end = source.indexOf('>',tagStart+3);\n\t\t\t\tvar tagName = source.substring(tagStart + 2, end).replace(/[ \\t\\n\\r]+$/g, '');\n\t\t\t\tvar config = parseStack.pop();\n\t\t\t\tif(end<0){\n\n\t \t\ttagName = source.substring(tagStart+2).replace(/[\\s<].*/,'');\n\t \t\terrorHandler.error(\"end tag name: \"+tagName+' is not complete:'+config.tagName);\n\t \t\tend = tagStart+1+tagName.length;\n\t \t}else if(tagName.match(/\\s\n\t\t\t\tlocator&&position(tagStart);\n\t\t\t\tend = parseInstruction(source,tagStart,domBuilder);\n\t\t\t\tbreak;\n\t\t\tcase '!':// start){\n\t\t\tstart = end;\n\t\t}else{\n\t\t\t//TODO: 这里有可能sax回退,有位置错误风险\n\t\t\tappendText(Math.max(tagStart,start)+1);\n\t\t}\n\t}\n}\nfunction copyLocator(f,t){\n\tt.lineNumber = f.lineNumber;\n\tt.columnNumber = f.columnNumber;\n\treturn t;\n}\n\n/**\n * @see #appendElement(source,elStartEnd,el,selfClosed,entityReplacer,domBuilder,parseStack);\n * @return end of the elementStartPart(end of elementEndPart for selfClosed el)\n */\nfunction parseElementStartPart(source,start,el,currentNSMap,entityReplacer,errorHandler){\n\n\t/**\n\t * @param {string} qname\n\t * @param {string} value\n\t * @param {number} startIndex\n\t */\n\tfunction addAttribute(qname, value, startIndex) {\n\t\tif (el.attributeNames.hasOwnProperty(qname)) {\n\t\t\terrorHandler.fatalError('Attribute ' + qname + ' redefined')\n\t\t}\n\t\tel.addValue(\n\t\t\tqname,\n\t\t\t// @see https://www.w3.org/TR/xml/#AVNormalize\n\t\t\t// since the xmldom sax parser does not \"interpret\" DTD the following is not implemented:\n\t\t\t// - recursive replacement of (DTD) entity references\n\t\t\t// - trimming and collapsing multiple spaces into a single one for attributes that are not of type CDATA\n\t\t\tvalue.replace(/[\\t\\n\\r]/g, ' ').replace(/&#?\\w+;/g, entityReplacer),\n\t\t\tstartIndex\n\t\t)\n\t}\n\tvar attrName;\n\tvar value;\n\tvar p = ++start;\n\tvar s = S_TAG;//status\n\twhile(true){\n\t\tvar c = source.charAt(p);\n\t\tswitch(c){\n\t\tcase '=':\n\t\t\tif(s === S_ATTR){//attrName\n\t\t\t\tattrName = source.slice(start,p);\n\t\t\t\ts = S_EQ;\n\t\t\t}else if(s === S_ATTR_SPACE){\n\t\t\t\ts = S_EQ;\n\t\t\t}else{\n\t\t\t\t//fatalError: equal must after attrName or space after attrName\n\t\t\t\tthrow new Error('attribute equal must after attrName'); // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase '\\'':\n\t\tcase '\"':\n\t\t\tif(s === S_EQ || s === S_ATTR //|| s == S_ATTR_SPACE\n\t\t\t\t){//equal\n\t\t\t\tif(s === S_ATTR){\n\t\t\t\t\terrorHandler.warning('attribute value must after \"=\"')\n\t\t\t\t\tattrName = source.slice(start,p)\n\t\t\t\t}\n\t\t\t\tstart = p+1;\n\t\t\t\tp = source.indexOf(c,start)\n\t\t\t\tif(p>0){\n\t\t\t\t\tvalue = source.slice(start, p);\n\t\t\t\t\taddAttribute(attrName, value, start-1);\n\t\t\t\t\ts = S_ATTR_END;\n\t\t\t\t}else{\n\t\t\t\t\t//fatalError: no end quot match\n\t\t\t\t\tthrow new Error('attribute value no end \\''+c+'\\' match');\n\t\t\t\t}\n\t\t\t}else if(s == S_ATTR_NOQUOT_VALUE){\n\t\t\t\tvalue = source.slice(start, p);\n\t\t\t\taddAttribute(attrName, value, start);\n\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed start quot('+c+')!!');\n\t\t\t\tstart = p+1;\n\t\t\t\ts = S_ATTR_END\n\t\t\t}else{\n\t\t\t\t//fatalError: no equal before\n\t\t\t\tthrow new Error('attribute value must after \"=\"'); // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase '/':\n\t\t\tswitch(s){\n\t\t\tcase S_TAG:\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\tcase S_ATTR_END:\n\t\t\tcase S_TAG_SPACE:\n\t\t\tcase S_TAG_CLOSE:\n\t\t\t\ts =S_TAG_CLOSE;\n\t\t\t\tel.closed = true;\n\t\t\tcase S_ATTR_NOQUOT_VALUE:\n\t\t\tcase S_ATTR:\n\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_SPACE:\n\t\t\t\t\tel.closed = true;\n\t\t\t\tbreak;\n\t\t\t//case S_EQ:\n\t\t\tdefault:\n\t\t\t\tthrow new Error(\"attribute invalid close char('/')\") // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase ''://end document\n\t\t\terrorHandler.error('unexpected end of input');\n\t\t\tif(s == S_TAG){\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\t}\n\t\t\treturn p;\n\t\tcase '>':\n\t\t\tswitch(s){\n\t\t\tcase S_TAG:\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\tcase S_ATTR_END:\n\t\t\tcase S_TAG_SPACE:\n\t\t\tcase S_TAG_CLOSE:\n\t\t\t\tbreak;//normal\n\t\t\tcase S_ATTR_NOQUOT_VALUE://Compatible state\n\t\t\tcase S_ATTR:\n\t\t\t\tvalue = source.slice(start,p);\n\t\t\t\tif(value.slice(-1) === '/'){\n\t\t\t\t\tel.closed = true;\n\t\t\t\t\tvalue = value.slice(0,-1)\n\t\t\t\t}\n\t\t\tcase S_ATTR_SPACE:\n\t\t\t\tif(s === S_ATTR_SPACE){\n\t\t\t\t\tvalue = attrName;\n\t\t\t\t}\n\t\t\t\tif(s == S_ATTR_NOQUOT_VALUE){\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!');\n\t\t\t\t\taddAttribute(attrName, value, start)\n\t\t\t\t}else{\n\t\t\t\t\tif(!NAMESPACE.isHTML(currentNSMap['']) || !value.match(/^(?:disabled|checked|selected)$/i)){\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed value!! \"'+value+'\" instead!!')\n\t\t\t\t\t}\n\t\t\t\t\taddAttribute(value, value, start)\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase S_EQ:\n\t\t\t\tthrow new Error('attribute value missed!!');\n\t\t\t}\n//\t\t\tconsole.log(tagName,tagNamePattern,tagNamePattern.test(tagName))\n\t\t\treturn p;\n\t\t/*xml space '\\x20' | #x9 | #xD | #xA; */\n\t\tcase '\\u0080':\n\t\t\tc = ' ';\n\t\tdefault:\n\t\t\tif(c<= ' '){//space\n\t\t\t\tswitch(s){\n\t\t\t\tcase S_TAG:\n\t\t\t\t\tel.setTagName(source.slice(start,p));//tagName\n\t\t\t\t\ts = S_TAG_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR:\n\t\t\t\t\tattrName = source.slice(start,p)\n\t\t\t\t\ts = S_ATTR_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_NOQUOT_VALUE:\n\t\t\t\t\tvar value = source.slice(start, p);\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!!');\n\t\t\t\t\taddAttribute(attrName, value, start)\n\t\t\t\tcase S_ATTR_END:\n\t\t\t\t\ts = S_TAG_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\t//case S_TAG_SPACE:\n\t\t\t\t//case S_EQ:\n\t\t\t\t//case S_ATTR_SPACE:\n\t\t\t\t//\tvoid();break;\n\t\t\t\t//case S_TAG_CLOSE:\n\t\t\t\t\t//ignore warning\n\t\t\t\t}\n\t\t\t}else{//not space\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\n\t\t\t\tswitch(s){\n\t\t\t\t//case S_TAG:void();break;\n\t\t\t\t//case S_ATTR:void();break;\n\t\t\t\t//case S_ATTR_NOQUOT_VALUE:void();break;\n\t\t\t\tcase S_ATTR_SPACE:\n\t\t\t\t\tvar tagName = el.tagName;\n\t\t\t\t\tif (!NAMESPACE.isHTML(currentNSMap['']) || !attrName.match(/^(?:disabled|checked|selected)$/i)) {\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed value!! \"'+attrName+'\" instead2!!')\n\t\t\t\t\t}\n\t\t\t\t\taddAttribute(attrName, attrName, start);\n\t\t\t\t\tstart = p;\n\t\t\t\t\ts = S_ATTR;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_END:\n\t\t\t\t\terrorHandler.warning('attribute space is required\"'+attrName+'\"!!')\n\t\t\t\tcase S_TAG_SPACE:\n\t\t\t\t\ts = S_ATTR;\n\t\t\t\t\tstart = p;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_EQ:\n\t\t\t\t\ts = S_ATTR_NOQUOT_VALUE;\n\t\t\t\t\tstart = p;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_TAG_CLOSE:\n\t\t\t\t\tthrow new Error(\"elements closed character '/' and '>' must be connected to\");\n\t\t\t\t}\n\t\t\t}\n\t\t}//end outer switch\n\t\t//console.log('p++',p)\n\t\tp++;\n\t}\n}\n/**\n * @return true if has new namespace define\n */\nfunction appendElement(el,domBuilder,currentNSMap){\n\tvar tagName = el.tagName;\n\tvar localNSMap = null;\n\t//var currentNSMap = parseStack[parseStack.length-1].currentNSMap;\n\tvar i = el.length;\n\twhile(i--){\n\t\tvar a = el[i];\n\t\tvar qName = a.qName;\n\t\tvar value = a.value;\n\t\tvar nsp = qName.indexOf(':');\n\t\tif(nsp>0){\n\t\t\tvar prefix = a.prefix = qName.slice(0,nsp);\n\t\t\tvar localName = qName.slice(nsp+1);\n\t\t\tvar nsPrefix = prefix === 'xmlns' && localName\n\t\t}else{\n\t\t\tlocalName = qName;\n\t\t\tprefix = null\n\t\t\tnsPrefix = qName === 'xmlns' && ''\n\t\t}\n\t\t//can not set prefix,because prefix !== ''\n\t\ta.localName = localName ;\n\t\t//prefix == null for no ns prefix attribute\n\t\tif(nsPrefix !== false){//hack!!\n\t\t\tif(localNSMap == null){\n\t\t\t\tlocalNSMap = {}\n\t\t\t\t//console.log(currentNSMap,0)\n\t\t\t\t_copy(currentNSMap,currentNSMap={})\n\t\t\t\t//console.log(currentNSMap,1)\n\t\t\t}\n\t\t\tcurrentNSMap[nsPrefix] = localNSMap[nsPrefix] = value;\n\t\t\ta.uri = NAMESPACE.XMLNS\n\t\t\tdomBuilder.startPrefixMapping(nsPrefix, value)\n\t\t}\n\t}\n\tvar i = el.length;\n\twhile(i--){\n\t\ta = el[i];\n\t\tvar prefix = a.prefix;\n\t\tif(prefix){//no prefix attribute has no namespace\n\t\t\tif(prefix === 'xml'){\n\t\t\t\ta.uri = NAMESPACE.XML;\n\t\t\t}if(prefix !== 'xmlns'){\n\t\t\t\ta.uri = currentNSMap[prefix || '']\n\n\t\t\t\t//{console.log('###'+a.qName,domBuilder.locator.systemId+'',currentNSMap,a.uri)}\n\t\t\t}\n\t\t}\n\t}\n\tvar nsp = tagName.indexOf(':');\n\tif(nsp>0){\n\t\tprefix = el.prefix = tagName.slice(0,nsp);\n\t\tlocalName = el.localName = tagName.slice(nsp+1);\n\t}else{\n\t\tprefix = null;//important!!\n\t\tlocalName = el.localName = tagName;\n\t}\n\t//no prefix element has default namespace\n\tvar ns = el.uri = currentNSMap[prefix || ''];\n\tdomBuilder.startElement(ns,localName,tagName,el);\n\t//endPrefixMapping and startPrefixMapping have not any help for dom builder\n\t//localNSMap = null\n\tif(el.closed){\n\t\tdomBuilder.endElement(ns,localName,tagName);\n\t\tif(localNSMap){\n\t\t\tfor (prefix in localNSMap) {\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(localNSMap, prefix)) {\n\t\t\t\t\tdomBuilder.endPrefixMapping(prefix);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}else{\n\t\tel.currentNSMap = currentNSMap;\n\t\tel.localNSMap = localNSMap;\n\t\t//parseStack.push(el);\n\t\treturn true;\n\t}\n}\nfunction parseHtmlSpecialContent(source,elStartEnd,tagName,entityReplacer,domBuilder){\n\tif(/^(?:script|textarea)$/i.test(tagName)){\n\t\tvar elEndStart = source.indexOf('',elStartEnd);\n\t\tvar text = source.substring(elStartEnd+1,elEndStart);\n\t\tif(/[&<]/.test(text)){\n\t\t\tif(/^script$/i.test(tagName)){\n\t\t\t\t//if(!/\\]\\]>/.test(text)){\n\t\t\t\t\t//lexHandler.startCDATA();\n\t\t\t\t\tdomBuilder.characters(text,0,text.length);\n\t\t\t\t\t//lexHandler.endCDATA();\n\t\t\t\t\treturn elEndStart;\n\t\t\t\t//}\n\t\t\t}//}else{//text area\n\t\t\t\ttext = text.replace(/&#?\\w+;/g,entityReplacer);\n\t\t\t\tdomBuilder.characters(text,0,text.length);\n\t\t\t\treturn elEndStart;\n\t\t\t//}\n\n\t\t}\n\t}\n\treturn elStartEnd+1;\n}\nfunction fixSelfClosed(source,elStartEnd,tagName,closeMap){\n\t//if(tagName in closeMap){\n\tvar pos = closeMap[tagName];\n\tif(pos == null){\n\t\t//console.log(tagName)\n\t\tpos = source.lastIndexOf('')\n\t\tif(pos',start+4);\n\t\t\t//append comment source.substring(4,end)// ${end}. Duration (${end - start})\\n`;\n }\n return bufferedRangesStr;\n}\n\n/**\n * ranges\n *\n * Utilities for working with TimeRanges.\n *\n */\n\nconst TIME_FUDGE_FACTOR = 1 / 30; // Comparisons between time values such as current time and the end of the buffered range\n// can be misleading because of precision differences or when the current media has poorly\n// aligned audio and video, which can cause values to be slightly off from what you would\n// expect. This value is what we consider to be safe to use in such comparisons to account\n// for these scenarios.\n\nconst SAFE_TIME_DELTA = TIME_FUDGE_FACTOR * 3;\nconst filterRanges = function (timeRanges, predicate) {\n const results = [];\n let i;\n if (timeRanges && timeRanges.length) {\n // Search for ranges that match the predicate\n for (i = 0; i < timeRanges.length; i++) {\n if (predicate(timeRanges.start(i), timeRanges.end(i))) {\n results.push([timeRanges.start(i), timeRanges.end(i)]);\n }\n }\n }\n return createTimeRanges(results);\n};\n/**\n * Attempts to find the buffered TimeRange that contains the specified\n * time.\n *\n * @param {TimeRanges} buffered - the TimeRanges object to query\n * @param {number} time - the time to filter on.\n * @return {TimeRanges} a new TimeRanges object\n */\n\nconst findRange = function (buffered, time) {\n return filterRanges(buffered, function (start, end) {\n return start - SAFE_TIME_DELTA <= time && end + SAFE_TIME_DELTA >= time;\n });\n};\n/**\n * Returns the TimeRanges that begin later than the specified time.\n *\n * @param {TimeRanges} timeRanges - the TimeRanges object to query\n * @param {number} time - the time to filter on.\n * @return {TimeRanges} a new TimeRanges object.\n */\n\nconst findNextRange = function (timeRanges, time) {\n return filterRanges(timeRanges, function (start) {\n return start - TIME_FUDGE_FACTOR >= time;\n });\n};\n/**\n * Returns gaps within a list of TimeRanges\n *\n * @param {TimeRanges} buffered - the TimeRanges object\n * @return {TimeRanges} a TimeRanges object of gaps\n */\n\nconst findGaps = function (buffered) {\n if (buffered.length < 2) {\n return createTimeRanges();\n }\n const ranges = [];\n for (let i = 1; i < buffered.length; i++) {\n const start = buffered.end(i - 1);\n const end = buffered.start(i);\n ranges.push([start, end]);\n }\n return createTimeRanges(ranges);\n};\n/**\n * Calculate the intersection of two TimeRanges\n *\n * @param {TimeRanges} bufferA\n * @param {TimeRanges} bufferB\n * @return {TimeRanges} The interesection of `bufferA` with `bufferB`\n */\n\nconst bufferIntersection = function (bufferA, bufferB) {\n let start = null;\n let end = null;\n let arity = 0;\n const extents = [];\n const ranges = [];\n if (!bufferA || !bufferA.length || !bufferB || !bufferB.length) {\n return createTimeRanges();\n } // Handle the case where we have both buffers and create an\n // intersection of the two\n\n let count = bufferA.length; // A) Gather up all start and end times\n\n while (count--) {\n extents.push({\n time: bufferA.start(count),\n type: 'start'\n });\n extents.push({\n time: bufferA.end(count),\n type: 'end'\n });\n }\n count = bufferB.length;\n while (count--) {\n extents.push({\n time: bufferB.start(count),\n type: 'start'\n });\n extents.push({\n time: bufferB.end(count),\n type: 'end'\n });\n } // B) Sort them by time\n\n extents.sort(function (a, b) {\n return a.time - b.time;\n }); // C) Go along one by one incrementing arity for start and decrementing\n // arity for ends\n\n for (count = 0; count < extents.length; count++) {\n if (extents[count].type === 'start') {\n arity++; // D) If arity is ever incremented to 2 we are entering an\n // overlapping range\n\n if (arity === 2) {\n start = extents[count].time;\n }\n } else if (extents[count].type === 'end') {\n arity--; // E) If arity is ever decremented to 1 we leaving an\n // overlapping range\n\n if (arity === 1) {\n end = extents[count].time;\n }\n } // F) Record overlapping ranges\n\n if (start !== null && end !== null) {\n ranges.push([start, end]);\n start = null;\n end = null;\n }\n }\n return createTimeRanges(ranges);\n};\n/**\n * Gets a human readable string for a TimeRange\n *\n * @param {TimeRange} range\n * @return {string} a human readable string\n */\n\nconst printableRange = range => {\n const strArr = [];\n if (!range || !range.length) {\n return '';\n }\n for (let i = 0; i < range.length; i++) {\n strArr.push(range.start(i) + ' => ' + range.end(i));\n }\n return strArr.join(', ');\n};\n/**\n * Calculates the amount of time left in seconds until the player hits the end of the\n * buffer and causes a rebuffer\n *\n * @param {TimeRange} buffered\n * The state of the buffer\n * @param {Numnber} currentTime\n * The current time of the player\n * @param {number} playbackRate\n * The current playback rate of the player. Defaults to 1.\n * @return {number}\n * Time until the player has to start rebuffering in seconds.\n * @function timeUntilRebuffer\n */\n\nconst timeUntilRebuffer = function (buffered, currentTime, playbackRate = 1) {\n const bufferedEnd = buffered.length ? buffered.end(buffered.length - 1) : 0;\n return (bufferedEnd - currentTime) / playbackRate;\n};\n/**\n * Converts a TimeRanges object into an array representation\n *\n * @param {TimeRanges} timeRanges\n * @return {Array}\n */\n\nconst timeRangesToArray = timeRanges => {\n const timeRangesList = [];\n for (let i = 0; i < timeRanges.length; i++) {\n timeRangesList.push({\n start: timeRanges.start(i),\n end: timeRanges.end(i)\n });\n }\n return timeRangesList;\n};\n/**\n * Determines if two time range objects are different.\n *\n * @param {TimeRange} a\n * the first time range object to check\n *\n * @param {TimeRange} b\n * the second time range object to check\n *\n * @return {Boolean}\n * Whether the time range objects differ\n */\n\nconst isRangeDifferent = function (a, b) {\n // same object\n if (a === b) {\n return false;\n } // one or the other is undefined\n\n if (!a && b || !b && a) {\n return true;\n } // length is different\n\n if (a.length !== b.length) {\n return true;\n } // see if any start/end pair is different\n\n for (let i = 0; i < a.length; i++) {\n if (a.start(i) !== b.start(i) || a.end(i) !== b.end(i)) {\n return true;\n }\n } // if the length and every pair is the same\n // this is the same time range\n\n return false;\n};\nconst lastBufferedEnd = function (a) {\n if (!a || !a.length || !a.end) {\n return;\n }\n return a.end(a.length - 1);\n};\n/**\n * A utility function to add up the amount of time in a timeRange\n * after a specified startTime.\n * ie:[[0, 10], [20, 40], [50, 60]] with a startTime 0\n * would return 40 as there are 40s seconds after 0 in the timeRange\n *\n * @param {TimeRange} range\n * The range to check against\n * @param {number} startTime\n * The time in the time range that you should start counting from\n *\n * @return {number}\n * The number of seconds in the buffer passed the specified time.\n */\n\nconst timeAheadOf = function (range, startTime) {\n let time = 0;\n if (!range || !range.length) {\n return time;\n }\n for (let i = 0; i < range.length; i++) {\n const start = range.start(i);\n const end = range.end(i); // startTime is after this range entirely\n\n if (startTime > end) {\n continue;\n } // startTime is within this range\n\n if (startTime > start && startTime <= end) {\n time += end - startTime;\n continue;\n } // startTime is before this range.\n\n time += end - start;\n }\n return time;\n};\n\n/**\n * @file playlist.js\n *\n * Playlist related utilities.\n */\n/**\n * Get the duration of a segment, with special cases for\n * llhls segments that do not have a duration yet.\n *\n * @param {Object} playlist\n * the playlist that the segment belongs to.\n * @param {Object} segment\n * the segment to get a duration for.\n *\n * @return {number}\n * the segment duration\n */\n\nconst segmentDurationWithParts = (playlist, segment) => {\n // if this isn't a preload segment\n // then we will have a segment duration that is accurate.\n if (!segment.preload) {\n return segment.duration;\n } // otherwise we have to add up parts and preload hints\n // to get an up to date duration.\n\n let result = 0;\n (segment.parts || []).forEach(function (p) {\n result += p.duration;\n }); // for preload hints we have to use partTargetDuration\n // as they won't even have a duration yet.\n\n (segment.preloadHints || []).forEach(function (p) {\n if (p.type === 'PART') {\n result += playlist.partTargetDuration;\n }\n });\n return result;\n};\n/**\n * A function to get a combined list of parts and segments with durations\n * and indexes.\n *\n * @param {Playlist} playlist the playlist to get the list for.\n *\n * @return {Array} The part/segment list.\n */\n\nconst getPartsAndSegments = playlist => (playlist.segments || []).reduce((acc, segment, si) => {\n if (segment.parts) {\n segment.parts.forEach(function (part, pi) {\n acc.push({\n duration: part.duration,\n segmentIndex: si,\n partIndex: pi,\n part,\n segment\n });\n });\n } else {\n acc.push({\n duration: segment.duration,\n segmentIndex: si,\n partIndex: null,\n segment,\n part: null\n });\n }\n return acc;\n}, []);\nconst getLastParts = media => {\n const lastSegment = media.segments && media.segments.length && media.segments[media.segments.length - 1];\n return lastSegment && lastSegment.parts || [];\n};\nconst getKnownPartCount = ({\n preloadSegment\n}) => {\n if (!preloadSegment) {\n return;\n }\n const {\n parts,\n preloadHints\n } = preloadSegment;\n let partCount = (preloadHints || []).reduce((count, hint) => count + (hint.type === 'PART' ? 1 : 0), 0);\n partCount += parts && parts.length ? parts.length : 0;\n return partCount;\n};\n/**\n * Get the number of seconds to delay from the end of a\n * live playlist.\n *\n * @param {Playlist} main the main playlist\n * @param {Playlist} media the media playlist\n * @return {number} the hold back in seconds.\n */\n\nconst liveEdgeDelay = (main, media) => {\n if (media.endList) {\n return 0;\n } // dash suggestedPresentationDelay trumps everything\n\n if (main && main.suggestedPresentationDelay) {\n return main.suggestedPresentationDelay;\n }\n const hasParts = getLastParts(media).length > 0; // look for \"part\" delays from ll-hls first\n\n if (hasParts && media.serverControl && media.serverControl.partHoldBack) {\n return media.serverControl.partHoldBack;\n } else if (hasParts && media.partTargetDuration) {\n return media.partTargetDuration * 3; // finally look for full segment delays\n } else if (media.serverControl && media.serverControl.holdBack) {\n return media.serverControl.holdBack;\n } else if (media.targetDuration) {\n return media.targetDuration * 3;\n }\n return 0;\n};\n/**\n * walk backward until we find a duration we can use\n * or return a failure\n *\n * @param {Playlist} playlist the playlist to walk through\n * @param {Number} endSequence the mediaSequence to stop walking on\n */\n\nconst backwardDuration = function (playlist, endSequence) {\n let result = 0;\n let i = endSequence - playlist.mediaSequence; // if a start time is available for segment immediately following\n // the interval, use it\n\n let segment = playlist.segments[i]; // Walk backward until we find the latest segment with timeline\n // information that is earlier than endSequence\n\n if (segment) {\n if (typeof segment.start !== 'undefined') {\n return {\n result: segment.start,\n precise: true\n };\n }\n if (typeof segment.end !== 'undefined') {\n return {\n result: segment.end - segment.duration,\n precise: true\n };\n }\n }\n while (i--) {\n segment = playlist.segments[i];\n if (typeof segment.end !== 'undefined') {\n return {\n result: result + segment.end,\n precise: true\n };\n }\n result += segmentDurationWithParts(playlist, segment);\n if (typeof segment.start !== 'undefined') {\n return {\n result: result + segment.start,\n precise: true\n };\n }\n }\n return {\n result,\n precise: false\n };\n};\n/**\n * walk forward until we find a duration we can use\n * or return a failure\n *\n * @param {Playlist} playlist the playlist to walk through\n * @param {number} endSequence the mediaSequence to stop walking on\n */\n\nconst forwardDuration = function (playlist, endSequence) {\n let result = 0;\n let segment;\n let i = endSequence - playlist.mediaSequence; // Walk forward until we find the earliest segment with timeline\n // information\n\n for (; i < playlist.segments.length; i++) {\n segment = playlist.segments[i];\n if (typeof segment.start !== 'undefined') {\n return {\n result: segment.start - result,\n precise: true\n };\n }\n result += segmentDurationWithParts(playlist, segment);\n if (typeof segment.end !== 'undefined') {\n return {\n result: segment.end - result,\n precise: true\n };\n }\n } // indicate we didn't find a useful duration estimate\n\n return {\n result: -1,\n precise: false\n };\n};\n/**\n * Calculate the media duration from the segments associated with a\n * playlist. The duration of a subinterval of the available segments\n * may be calculated by specifying an end index.\n *\n * @param {Object} playlist a media playlist object\n * @param {number=} endSequence an exclusive upper boundary\n * for the playlist. Defaults to playlist length.\n * @param {number} expired the amount of time that has dropped\n * off the front of the playlist in a live scenario\n * @return {number} the duration between the first available segment\n * and end index.\n */\n\nconst intervalDuration = function (playlist, endSequence, expired) {\n if (typeof endSequence === 'undefined') {\n endSequence = playlist.mediaSequence + playlist.segments.length;\n }\n if (endSequence < playlist.mediaSequence) {\n return 0;\n } // do a backward walk to estimate the duration\n\n const backward = backwardDuration(playlist, endSequence);\n if (backward.precise) {\n // if we were able to base our duration estimate on timing\n // information provided directly from the Media Source, return\n // it\n return backward.result;\n } // walk forward to see if a precise duration estimate can be made\n // that way\n\n const forward = forwardDuration(playlist, endSequence);\n if (forward.precise) {\n // we found a segment that has been buffered and so it's\n // position is known precisely\n return forward.result;\n } // return the less-precise, playlist-based duration estimate\n\n return backward.result + expired;\n};\n/**\n * Calculates the duration of a playlist. If a start and end index\n * are specified, the duration will be for the subset of the media\n * timeline between those two indices. The total duration for live\n * playlists is always Infinity.\n *\n * @param {Object} playlist a media playlist object\n * @param {number=} endSequence an exclusive upper\n * boundary for the playlist. Defaults to the playlist media\n * sequence number plus its length.\n * @param {number=} expired the amount of time that has\n * dropped off the front of the playlist in a live scenario\n * @return {number} the duration between the start index and end\n * index.\n */\n\nconst duration = function (playlist, endSequence, expired) {\n if (!playlist) {\n return 0;\n }\n if (typeof expired !== 'number') {\n expired = 0;\n } // if a slice of the total duration is not requested, use\n // playlist-level duration indicators when they're present\n\n if (typeof endSequence === 'undefined') {\n // if present, use the duration specified in the playlist\n if (playlist.totalDuration) {\n return playlist.totalDuration;\n } // duration should be Infinity for live playlists\n\n if (!playlist.endList) {\n return window$1.Infinity;\n }\n } // calculate the total duration based on the segment durations\n\n return intervalDuration(playlist, endSequence, expired);\n};\n/**\n * Calculate the time between two indexes in the current playlist\n * neight the start- nor the end-index need to be within the current\n * playlist in which case, the targetDuration of the playlist is used\n * to approximate the durations of the segments\n *\n * @param {Array} options.durationList list to iterate over for durations.\n * @param {number} options.defaultDuration duration to use for elements before or after the durationList\n * @param {number} options.startIndex partsAndSegments index to start\n * @param {number} options.endIndex partsAndSegments index to end.\n * @return {number} the number of seconds between startIndex and endIndex\n */\n\nconst sumDurations = function ({\n defaultDuration,\n durationList,\n startIndex,\n endIndex\n}) {\n let durations = 0;\n if (startIndex > endIndex) {\n [startIndex, endIndex] = [endIndex, startIndex];\n }\n if (startIndex < 0) {\n for (let i = startIndex; i < Math.min(0, endIndex); i++) {\n durations += defaultDuration;\n }\n startIndex = 0;\n }\n for (let i = startIndex; i < endIndex; i++) {\n durations += durationList[i].duration;\n }\n return durations;\n};\n/**\n * Calculates the playlist end time\n *\n * @param {Object} playlist a media playlist object\n * @param {number=} expired the amount of time that has\n * dropped off the front of the playlist in a live scenario\n * @param {boolean|false} useSafeLiveEnd a boolean value indicating whether or not the\n * playlist end calculation should consider the safe live end\n * (truncate the playlist end by three segments). This is normally\n * used for calculating the end of the playlist's seekable range.\n * This takes into account the value of liveEdgePadding.\n * Setting liveEdgePadding to 0 is equivalent to setting this to false.\n * @param {number} liveEdgePadding a number indicating how far from the end of the playlist we should be in seconds.\n * If this is provided, it is used in the safe live end calculation.\n * Setting useSafeLiveEnd=false or liveEdgePadding=0 are equivalent.\n * Corresponds to suggestedPresentationDelay in DASH manifests.\n * @return {number} the end time of playlist\n * @function playlistEnd\n */\n\nconst playlistEnd = function (playlist, expired, useSafeLiveEnd, liveEdgePadding) {\n if (!playlist || !playlist.segments) {\n return null;\n }\n if (playlist.endList) {\n return duration(playlist);\n }\n if (expired === null) {\n return null;\n }\n expired = expired || 0;\n let lastSegmentEndTime = intervalDuration(playlist, playlist.mediaSequence + playlist.segments.length, expired);\n if (useSafeLiveEnd) {\n liveEdgePadding = typeof liveEdgePadding === 'number' ? liveEdgePadding : liveEdgeDelay(null, playlist);\n lastSegmentEndTime -= liveEdgePadding;\n } // don't return a time less than zero\n\n return Math.max(0, lastSegmentEndTime);\n};\n/**\n * Calculates the interval of time that is currently seekable in a\n * playlist. The returned time ranges are relative to the earliest\n * moment in the specified playlist that is still available. A full\n * seekable implementation for live streams would need to offset\n * these values by the duration of content that has expired from the\n * stream.\n *\n * @param {Object} playlist a media playlist object\n * dropped off the front of the playlist in a live scenario\n * @param {number=} expired the amount of time that has\n * dropped off the front of the playlist in a live scenario\n * @param {number} liveEdgePadding how far from the end of the playlist we should be in seconds.\n * Corresponds to suggestedPresentationDelay in DASH manifests.\n * @return {TimeRanges} the periods of time that are valid targets\n * for seeking\n */\n\nconst seekable = function (playlist, expired, liveEdgePadding) {\n const useSafeLiveEnd = true;\n const seekableStart = expired || 0;\n let seekableEnd = playlistEnd(playlist, expired, useSafeLiveEnd, liveEdgePadding);\n if (seekableEnd === null) {\n return createTimeRanges();\n } // Clamp seekable end since it can not be less than the seekable start\n\n if (seekableEnd < seekableStart) {\n seekableEnd = seekableStart;\n }\n return createTimeRanges(seekableStart, seekableEnd);\n};\n/**\n * Determine the index and estimated starting time of the segment that\n * contains a specified playback position in a media playlist.\n *\n * @param {Object} options.playlist the media playlist to query\n * @param {number} options.currentTime The number of seconds since the earliest\n * possible position to determine the containing segment for\n * @param {number} options.startTime the time when the segment/part starts\n * @param {number} options.startingSegmentIndex the segment index to start looking at.\n * @param {number?} [options.startingPartIndex] the part index to look at within the segment.\n *\n * @return {Object} an object with partIndex, segmentIndex, and startTime.\n */\n\nconst getMediaInfoForTime = function ({\n playlist,\n currentTime,\n startingSegmentIndex,\n startingPartIndex,\n startTime,\n exactManifestTimings\n}) {\n let time = currentTime - startTime;\n const partsAndSegments = getPartsAndSegments(playlist);\n let startIndex = 0;\n for (let i = 0; i < partsAndSegments.length; i++) {\n const partAndSegment = partsAndSegments[i];\n if (startingSegmentIndex !== partAndSegment.segmentIndex) {\n continue;\n } // skip this if part index does not match.\n\n if (typeof startingPartIndex === 'number' && typeof partAndSegment.partIndex === 'number' && startingPartIndex !== partAndSegment.partIndex) {\n continue;\n }\n startIndex = i;\n break;\n }\n if (time < 0) {\n // Walk backward from startIndex in the playlist, adding durations\n // until we find a segment that contains `time` and return it\n if (startIndex > 0) {\n for (let i = startIndex - 1; i >= 0; i--) {\n const partAndSegment = partsAndSegments[i];\n time += partAndSegment.duration;\n if (exactManifestTimings) {\n if (time < 0) {\n continue;\n }\n } else if (time + TIME_FUDGE_FACTOR <= 0) {\n continue;\n }\n return {\n partIndex: partAndSegment.partIndex,\n segmentIndex: partAndSegment.segmentIndex,\n startTime: startTime - sumDurations({\n defaultDuration: playlist.targetDuration,\n durationList: partsAndSegments,\n startIndex,\n endIndex: i\n })\n };\n }\n } // We were unable to find a good segment within the playlist\n // so select the first segment\n\n return {\n partIndex: partsAndSegments[0] && partsAndSegments[0].partIndex || null,\n segmentIndex: partsAndSegments[0] && partsAndSegments[0].segmentIndex || 0,\n startTime: currentTime\n };\n } // When startIndex is negative, we first walk forward to first segment\n // adding target durations. If we \"run out of time\" before getting to\n // the first segment, return the first segment\n\n if (startIndex < 0) {\n for (let i = startIndex; i < 0; i++) {\n time -= playlist.targetDuration;\n if (time < 0) {\n return {\n partIndex: partsAndSegments[0] && partsAndSegments[0].partIndex || null,\n segmentIndex: partsAndSegments[0] && partsAndSegments[0].segmentIndex || 0,\n startTime: currentTime\n };\n }\n }\n startIndex = 0;\n } // Walk forward from startIndex in the playlist, subtracting durations\n // until we find a segment that contains `time` and return it\n\n for (let i = startIndex; i < partsAndSegments.length; i++) {\n const partAndSegment = partsAndSegments[i];\n time -= partAndSegment.duration;\n const canUseFudgeFactor = partAndSegment.duration > TIME_FUDGE_FACTOR;\n const isExactlyAtTheEnd = time === 0;\n const isExtremelyCloseToTheEnd = canUseFudgeFactor && time + TIME_FUDGE_FACTOR >= 0;\n if (isExactlyAtTheEnd || isExtremelyCloseToTheEnd) {\n // 1) We are exactly at the end of the current segment.\n // 2) We are extremely close to the end of the current segment (The difference is less than 1 / 30).\n // We may encounter this situation when\n // we don't have exact match between segment duration info in the manifest and the actual duration of the segment\n // For example:\n // We appended 3 segments 10 seconds each, meaning we should have 30 sec buffered,\n // but we the actual buffered is 29.99999\n //\n // In both cases:\n // if we passed current time -> it means that we already played current segment\n // if we passed buffered.end -> it means that this segment is already loaded and buffered\n // we should select the next segment if we have one:\n if (i !== partsAndSegments.length - 1) {\n continue;\n }\n }\n if (exactManifestTimings) {\n if (time > 0) {\n continue;\n }\n } else if (time - TIME_FUDGE_FACTOR >= 0) {\n continue;\n }\n return {\n partIndex: partAndSegment.partIndex,\n segmentIndex: partAndSegment.segmentIndex,\n startTime: startTime + sumDurations({\n defaultDuration: playlist.targetDuration,\n durationList: partsAndSegments,\n startIndex,\n endIndex: i\n })\n };\n } // We are out of possible candidates so load the last one...\n\n return {\n segmentIndex: partsAndSegments[partsAndSegments.length - 1].segmentIndex,\n partIndex: partsAndSegments[partsAndSegments.length - 1].partIndex,\n startTime: currentTime\n };\n};\n/**\n * Check whether the playlist is excluded or not.\n *\n * @param {Object} playlist the media playlist object\n * @return {boolean} whether the playlist is excluded or not\n * @function isExcluded\n */\n\nconst isExcluded = function (playlist) {\n return playlist.excludeUntil && playlist.excludeUntil > Date.now();\n};\n/**\n * Check whether the playlist is compatible with current playback configuration or has\n * been excluded permanently for being incompatible.\n *\n * @param {Object} playlist the media playlist object\n * @return {boolean} whether the playlist is incompatible or not\n * @function isIncompatible\n */\n\nconst isIncompatible = function (playlist) {\n return playlist.excludeUntil && playlist.excludeUntil === Infinity;\n};\n/**\n * Check whether the playlist is enabled or not.\n *\n * @param {Object} playlist the media playlist object\n * @return {boolean} whether the playlist is enabled or not\n * @function isEnabled\n */\n\nconst isEnabled = function (playlist) {\n const excluded = isExcluded(playlist);\n return !playlist.disabled && !excluded;\n};\n/**\n * Check whether the playlist has been manually disabled through the representations api.\n *\n * @param {Object} playlist the media playlist object\n * @return {boolean} whether the playlist is disabled manually or not\n * @function isDisabled\n */\n\nconst isDisabled = function (playlist) {\n return playlist.disabled;\n};\n/**\n * Returns whether the current playlist is an AES encrypted HLS stream\n *\n * @return {boolean} true if it's an AES encrypted HLS stream\n */\n\nconst isAes = function (media) {\n for (let i = 0; i < media.segments.length; i++) {\n if (media.segments[i].key) {\n return true;\n }\n }\n return false;\n};\n/**\n * Checks if the playlist has a value for the specified attribute\n *\n * @param {string} attr\n * Attribute to check for\n * @param {Object} playlist\n * The media playlist object\n * @return {boolean}\n * Whether the playlist contains a value for the attribute or not\n * @function hasAttribute\n */\n\nconst hasAttribute = function (attr, playlist) {\n return playlist.attributes && playlist.attributes[attr];\n};\n/**\n * Estimates the time required to complete a segment download from the specified playlist\n *\n * @param {number} segmentDuration\n * Duration of requested segment\n * @param {number} bandwidth\n * Current measured bandwidth of the player\n * @param {Object} playlist\n * The media playlist object\n * @param {number=} bytesReceived\n * Number of bytes already received for the request. Defaults to 0\n * @return {number|NaN}\n * The estimated time to request the segment. NaN if bandwidth information for\n * the given playlist is unavailable\n * @function estimateSegmentRequestTime\n */\n\nconst estimateSegmentRequestTime = function (segmentDuration, bandwidth, playlist, bytesReceived = 0) {\n if (!hasAttribute('BANDWIDTH', playlist)) {\n return NaN;\n }\n const size = segmentDuration * playlist.attributes.BANDWIDTH;\n return (size - bytesReceived * 8) / bandwidth;\n};\n/*\n * Returns whether the current playlist is the lowest rendition\n *\n * @return {Boolean} true if on lowest rendition\n */\n\nconst isLowestEnabledRendition = (main, media) => {\n if (main.playlists.length === 1) {\n return true;\n }\n const currentBandwidth = media.attributes.BANDWIDTH || Number.MAX_VALUE;\n return main.playlists.filter(playlist => {\n if (!isEnabled(playlist)) {\n return false;\n }\n return (playlist.attributes.BANDWIDTH || 0) < currentBandwidth;\n }).length === 0;\n};\nconst playlistMatch = (a, b) => {\n // both playlits are null\n // or only one playlist is non-null\n // no match\n if (!a && !b || !a && b || a && !b) {\n return false;\n } // playlist objects are the same, match\n\n if (a === b) {\n return true;\n } // first try to use id as it should be the most\n // accurate\n\n if (a.id && b.id && a.id === b.id) {\n return true;\n } // next try to use reslovedUri as it should be the\n // second most accurate.\n\n if (a.resolvedUri && b.resolvedUri && a.resolvedUri === b.resolvedUri) {\n return true;\n } // finally try to use uri as it should be accurate\n // but might miss a few cases for relative uris\n\n if (a.uri && b.uri && a.uri === b.uri) {\n return true;\n }\n return false;\n};\nconst someAudioVariant = function (main, callback) {\n const AUDIO = main && main.mediaGroups && main.mediaGroups.AUDIO || {};\n let found = false;\n for (const groupName in AUDIO) {\n for (const label in AUDIO[groupName]) {\n found = callback(AUDIO[groupName][label]);\n if (found) {\n break;\n }\n }\n if (found) {\n break;\n }\n }\n return !!found;\n};\nconst isAudioOnly = main => {\n // we are audio only if we have no main playlists but do\n // have media group playlists.\n if (!main || !main.playlists || !main.playlists.length) {\n // without audio variants or playlists this\n // is not an audio only main.\n const found = someAudioVariant(main, variant => variant.playlists && variant.playlists.length || variant.uri);\n return found;\n } // if every playlist has only an audio codec it is audio only\n\n for (let i = 0; i < main.playlists.length; i++) {\n const playlist = main.playlists[i];\n const CODECS = playlist.attributes && playlist.attributes.CODECS; // all codecs are audio, this is an audio playlist.\n\n if (CODECS && CODECS.split(',').every(c => isAudioCodec(c))) {\n continue;\n } // playlist is in an audio group it is audio only\n\n const found = someAudioVariant(main, variant => playlistMatch(playlist, variant));\n if (found) {\n continue;\n } // if we make it here this playlist isn't audio and we\n // are not audio only\n\n return false;\n } // if we make it past every playlist without returning, then\n // this is an audio only playlist.\n\n return true;\n}; // exports\n\nvar Playlist = {\n liveEdgeDelay,\n duration,\n seekable,\n getMediaInfoForTime,\n isEnabled,\n isDisabled,\n isExcluded,\n isIncompatible,\n playlistEnd,\n isAes,\n hasAttribute,\n estimateSegmentRequestTime,\n isLowestEnabledRendition,\n isAudioOnly,\n playlistMatch,\n segmentDurationWithParts\n};\nconst {\n log\n} = videojs;\nconst createPlaylistID = (index, uri) => {\n return `${index}-${uri}`;\n}; // default function for creating a group id\n\nconst groupID = (type, group, label) => {\n return `placeholder-uri-${type}-${group}-${label}`;\n};\n/**\n * Parses a given m3u8 playlist\n *\n * @param {Function} [onwarn]\n * a function to call when the parser triggers a warning event.\n * @param {Function} [oninfo]\n * a function to call when the parser triggers an info event.\n * @param {string} manifestString\n * The downloaded manifest string\n * @param {Object[]} [customTagParsers]\n * An array of custom tag parsers for the m3u8-parser instance\n * @param {Object[]} [customTagMappers]\n * An array of custom tag mappers for the m3u8-parser instance\n * @param {boolean} [llhls]\n * Whether to keep ll-hls features in the manifest after parsing.\n * @return {Object}\n * The manifest object\n */\n\nconst parseManifest = ({\n onwarn,\n oninfo,\n manifestString,\n customTagParsers = [],\n customTagMappers = [],\n llhls\n}) => {\n const parser = new Parser();\n if (onwarn) {\n parser.on('warn', onwarn);\n }\n if (oninfo) {\n parser.on('info', oninfo);\n }\n customTagParsers.forEach(customParser => parser.addParser(customParser));\n customTagMappers.forEach(mapper => parser.addTagMapper(mapper));\n parser.push(manifestString);\n parser.end();\n const manifest = parser.manifest; // remove llhls features from the parsed manifest\n // if we don't want llhls support.\n\n if (!llhls) {\n ['preloadSegment', 'skip', 'serverControl', 'renditionReports', 'partInf', 'partTargetDuration'].forEach(function (k) {\n if (manifest.hasOwnProperty(k)) {\n delete manifest[k];\n }\n });\n if (manifest.segments) {\n manifest.segments.forEach(function (segment) {\n ['parts', 'preloadHints'].forEach(function (k) {\n if (segment.hasOwnProperty(k)) {\n delete segment[k];\n }\n });\n });\n }\n }\n if (!manifest.targetDuration) {\n let targetDuration = 10;\n if (manifest.segments && manifest.segments.length) {\n targetDuration = manifest.segments.reduce((acc, s) => Math.max(acc, s.duration), 0);\n }\n if (onwarn) {\n onwarn({\n message: `manifest has no targetDuration defaulting to ${targetDuration}`\n });\n }\n manifest.targetDuration = targetDuration;\n }\n const parts = getLastParts(manifest);\n if (parts.length && !manifest.partTargetDuration) {\n const partTargetDuration = parts.reduce((acc, p) => Math.max(acc, p.duration), 0);\n if (onwarn) {\n onwarn({\n message: `manifest has no partTargetDuration defaulting to ${partTargetDuration}`\n });\n log.error('LL-HLS manifest has parts but lacks required #EXT-X-PART-INF:PART-TARGET value. See https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis-09#section-4.4.3.7. Playback is not guaranteed.');\n }\n manifest.partTargetDuration = partTargetDuration;\n }\n return manifest;\n};\n/**\n * Loops through all supported media groups in main and calls the provided\n * callback for each group\n *\n * @param {Object} main\n * The parsed main manifest object\n * @param {Function} callback\n * Callback to call for each media group\n */\n\nconst forEachMediaGroup = (main, callback) => {\n if (!main.mediaGroups) {\n return;\n }\n ['AUDIO', 'SUBTITLES'].forEach(mediaType => {\n if (!main.mediaGroups[mediaType]) {\n return;\n }\n for (const groupKey in main.mediaGroups[mediaType]) {\n for (const labelKey in main.mediaGroups[mediaType][groupKey]) {\n const mediaProperties = main.mediaGroups[mediaType][groupKey][labelKey];\n callback(mediaProperties, mediaType, groupKey, labelKey);\n }\n }\n });\n};\n/**\n * Adds properties and attributes to the playlist to keep consistent functionality for\n * playlists throughout VHS.\n *\n * @param {Object} config\n * Arguments object\n * @param {Object} config.playlist\n * The media playlist\n * @param {string} [config.uri]\n * The uri to the media playlist (if media playlist is not from within a main\n * playlist)\n * @param {string} id\n * ID to use for the playlist\n */\n\nconst setupMediaPlaylist = ({\n playlist,\n uri,\n id\n}) => {\n playlist.id = id;\n playlist.playlistErrors_ = 0;\n if (uri) {\n // For media playlists, m3u8-parser does not have access to a URI, as HLS media\n // playlists do not contain their own source URI, but one is needed for consistency in\n // VHS.\n playlist.uri = uri;\n } // For HLS main playlists, even though certain attributes MUST be defined, the\n // stream may still be played without them.\n // For HLS media playlists, m3u8-parser does not attach an attributes object to the\n // manifest.\n //\n // To avoid undefined reference errors through the project, and make the code easier\n // to write/read, add an empty attributes object for these cases.\n\n playlist.attributes = playlist.attributes || {};\n};\n/**\n * Adds ID, resolvedUri, and attributes properties to each playlist of the main, where\n * necessary. In addition, creates playlist IDs for each playlist and adds playlist ID to\n * playlist references to the playlists array.\n *\n * @param {Object} main\n * The main playlist\n */\n\nconst setupMediaPlaylists = main => {\n let i = main.playlists.length;\n while (i--) {\n const playlist = main.playlists[i];\n setupMediaPlaylist({\n playlist,\n id: createPlaylistID(i, playlist.uri)\n });\n playlist.resolvedUri = resolveUrl(main.uri, playlist.uri);\n main.playlists[playlist.id] = playlist; // URI reference added for backwards compatibility\n\n main.playlists[playlist.uri] = playlist; // Although the spec states an #EXT-X-STREAM-INF tag MUST have a BANDWIDTH attribute,\n // the stream can be played without it. Although an attributes property may have been\n // added to the playlist to prevent undefined references, issue a warning to fix the\n // manifest.\n\n if (!playlist.attributes.BANDWIDTH) {\n log.warn('Invalid playlist STREAM-INF detected. Missing BANDWIDTH attribute.');\n }\n }\n};\n/**\n * Adds resolvedUri properties to each media group.\n *\n * @param {Object} main\n * The main playlist\n */\n\nconst resolveMediaGroupUris = main => {\n forEachMediaGroup(main, properties => {\n if (properties.uri) {\n properties.resolvedUri = resolveUrl(main.uri, properties.uri);\n }\n });\n};\n/**\n * Creates a main playlist wrapper to insert a sole media playlist into.\n *\n * @param {Object} media\n * Media playlist\n * @param {string} uri\n * The media URI\n *\n * @return {Object}\n * main playlist\n */\n\nconst mainForMedia = (media, uri) => {\n const id = createPlaylistID(0, uri);\n const main = {\n mediaGroups: {\n 'AUDIO': {},\n 'VIDEO': {},\n 'CLOSED-CAPTIONS': {},\n 'SUBTITLES': {}\n },\n uri: window$1.location.href,\n resolvedUri: window$1.location.href,\n playlists: [{\n uri,\n id,\n resolvedUri: uri,\n // m3u8-parser does not attach an attributes property to media playlists so make\n // sure that the property is attached to avoid undefined reference errors\n attributes: {}\n }]\n }; // set up ID reference\n\n main.playlists[id] = main.playlists[0]; // URI reference added for backwards compatibility\n\n main.playlists[uri] = main.playlists[0];\n return main;\n};\n/**\n * Does an in-place update of the main manifest to add updated playlist URI references\n * as well as other properties needed by VHS that aren't included by the parser.\n *\n * @param {Object} main\n * main manifest object\n * @param {string} uri\n * The source URI\n * @param {function} createGroupID\n * A function to determine how to create the groupID for mediaGroups\n */\n\nconst addPropertiesToMain = (main, uri, createGroupID = groupID) => {\n main.uri = uri;\n for (let i = 0; i < main.playlists.length; i++) {\n if (!main.playlists[i].uri) {\n // Set up phony URIs for the playlists since playlists are referenced by their URIs\n // throughout VHS, but some formats (e.g., DASH) don't have external URIs\n // TODO: consider adding dummy URIs in mpd-parser\n const phonyUri = `placeholder-uri-${i}`;\n main.playlists[i].uri = phonyUri;\n }\n }\n const audioOnlyMain = isAudioOnly(main);\n forEachMediaGroup(main, (properties, mediaType, groupKey, labelKey) => {\n // add a playlist array under properties\n if (!properties.playlists || !properties.playlists.length) {\n // If the manifest is audio only and this media group does not have a uri, check\n // if the media group is located in the main list of playlists. If it is, don't add\n // placeholder properties as it shouldn't be considered an alternate audio track.\n if (audioOnlyMain && mediaType === 'AUDIO' && !properties.uri) {\n for (let i = 0; i < main.playlists.length; i++) {\n const p = main.playlists[i];\n if (p.attributes && p.attributes.AUDIO && p.attributes.AUDIO === groupKey) {\n return;\n }\n }\n }\n properties.playlists = [_extends({}, properties)];\n }\n properties.playlists.forEach(function (p, i) {\n const groupId = createGroupID(mediaType, groupKey, labelKey, p);\n const id = createPlaylistID(i, groupId);\n if (p.uri) {\n p.resolvedUri = p.resolvedUri || resolveUrl(main.uri, p.uri);\n } else {\n // DEPRECATED, this has been added to prevent a breaking change.\n // previously we only ever had a single media group playlist, so\n // we mark the first playlist uri without prepending the index as we used to\n // ideally we would do all of the playlists the same way.\n p.uri = i === 0 ? groupId : id; // don't resolve a placeholder uri to an absolute url, just use\n // the placeholder again\n\n p.resolvedUri = p.uri;\n }\n p.id = p.id || id; // add an empty attributes object, all playlists are\n // expected to have this.\n\n p.attributes = p.attributes || {}; // setup ID and URI references (URI for backwards compatibility)\n\n main.playlists[p.id] = p;\n main.playlists[p.uri] = p;\n });\n });\n setupMediaPlaylists(main);\n resolveMediaGroupUris(main);\n};\nclass DateRangesStorage {\n constructor() {\n this.offset_ = null;\n this.pendingDateRanges_ = new Map();\n this.processedDateRanges_ = new Map();\n }\n setOffset(segments = []) {\n // already set\n if (this.offset_ !== null) {\n return;\n } // no segment to process\n\n if (!segments.length) {\n return;\n }\n const [firstSegment] = segments; // no program date time\n\n if (firstSegment.programDateTime === undefined) {\n return;\n } // Set offset as ProgramDateTime for the very first segment of the very first playlist load:\n\n this.offset_ = firstSegment.programDateTime / 1000;\n }\n setPendingDateRanges(dateRanges = []) {\n if (!dateRanges.length) {\n return;\n }\n const [dateRange] = dateRanges;\n const startTime = dateRange.startDate.getTime();\n this.trimProcessedDateRanges_(startTime);\n this.pendingDateRanges_ = dateRanges.reduce((map, pendingDateRange) => {\n map.set(pendingDateRange.id, pendingDateRange);\n return map;\n }, new Map());\n }\n processDateRange(dateRange) {\n this.pendingDateRanges_.delete(dateRange.id);\n this.processedDateRanges_.set(dateRange.id, dateRange);\n }\n getDateRangesToProcess() {\n if (this.offset_ === null) {\n return [];\n }\n const dateRangeClasses = {};\n const dateRangesToProcess = [];\n this.pendingDateRanges_.forEach((dateRange, id) => {\n if (this.processedDateRanges_.has(id)) {\n return;\n }\n dateRange.startTime = dateRange.startDate.getTime() / 1000 - this.offset_;\n dateRange.processDateRange = () => this.processDateRange(dateRange);\n dateRangesToProcess.push(dateRange);\n if (!dateRange.class) {\n return;\n }\n if (dateRangeClasses[dateRange.class]) {\n const length = dateRangeClasses[dateRange.class].push(dateRange);\n dateRange.classListIndex = length - 1;\n } else {\n dateRangeClasses[dateRange.class] = [dateRange];\n dateRange.classListIndex = 0;\n }\n });\n for (const dateRange of dateRangesToProcess) {\n const classList = dateRangeClasses[dateRange.class] || [];\n if (dateRange.endDate) {\n dateRange.endTime = dateRange.endDate.getTime() / 1000 - this.offset_;\n } else if (dateRange.endOnNext && classList[dateRange.classListIndex + 1]) {\n dateRange.endTime = classList[dateRange.classListIndex + 1].startTime;\n } else if (dateRange.duration) {\n dateRange.endTime = dateRange.startTime + dateRange.duration;\n } else if (dateRange.plannedDuration) {\n dateRange.endTime = dateRange.startTime + dateRange.plannedDuration;\n } else {\n dateRange.endTime = dateRange.startTime;\n }\n }\n return dateRangesToProcess;\n }\n trimProcessedDateRanges_(startTime) {\n const copy = new Map(this.processedDateRanges_);\n copy.forEach((dateRange, id) => {\n if (dateRange.startDate.getTime() < startTime) {\n this.processedDateRanges_.delete(id);\n }\n });\n }\n}\nconst QUOTA_EXCEEDED_ERR = 22;\nconst getStreamingNetworkErrorMetadata = ({\n requestType,\n request,\n error,\n parseFailure\n}) => {\n const isBadStatus = request.status < 200 || request.status > 299;\n const isFailure = request.status >= 400 && request.status <= 499;\n const errorMetadata = {\n uri: request.uri,\n requestType\n };\n const isBadStatusOrParseFailure = isBadStatus && !isFailure || parseFailure;\n if (error && isFailure) {\n // copy original error and add to the metadata.\n errorMetadata.error = _extends({}, error);\n errorMetadata.errorType = videojs.Error.NetworkRequestFailed;\n } else if (request.aborted) {\n errorMetadata.errorType = videojs.Error.NetworkRequestAborted;\n } else if (request.timedout) {\n errorMetadata.erroType = videojs.Error.NetworkRequestTimeout;\n } else if (isBadStatusOrParseFailure) {\n const errorType = parseFailure ? videojs.Error.NetworkBodyParserFailed : videojs.Error.NetworkBadStatus;\n errorMetadata.errorType = errorType;\n errorMetadata.status = request.status;\n errorMetadata.headers = request.headers;\n }\n return errorMetadata;\n};\nconst {\n EventTarget: EventTarget$1\n} = videojs;\nconst addLLHLSQueryDirectives = (uri, media) => {\n if (media.endList || !media.serverControl) {\n return uri;\n }\n const parameters = {};\n if (media.serverControl.canBlockReload) {\n const {\n preloadSegment\n } = media; // next msn is a zero based value, length is not.\n\n let nextMSN = media.mediaSequence + media.segments.length; // If preload segment has parts then it is likely\n // that we are going to request a part of that preload segment.\n // the logic below is used to determine that.\n\n if (preloadSegment) {\n const parts = preloadSegment.parts || []; // _HLS_part is a zero based index\n\n const nextPart = getKnownPartCount(media) - 1; // if nextPart is > -1 and not equal to just the\n // length of parts, then we know we had part preload hints\n // and we need to add the _HLS_part= query\n\n if (nextPart > -1 && nextPart !== parts.length - 1) {\n // add existing parts to our preload hints\n // eslint-disable-next-line\n parameters._HLS_part = nextPart;\n } // this if statement makes sure that we request the msn\n // of the preload segment if:\n // 1. the preload segment had parts (and was not yet a full segment)\n // but was added to our segments array\n // 2. the preload segment had preload hints for parts that are not in\n // the manifest yet.\n // in all other cases we want the segment after the preload segment\n // which will be given by using media.segments.length because it is 1 based\n // rather than 0 based.\n\n if (nextPart > -1 || parts.length) {\n nextMSN--;\n }\n } // add _HLS_msn= in front of any _HLS_part query\n // eslint-disable-next-line\n\n parameters._HLS_msn = nextMSN;\n }\n if (media.serverControl && media.serverControl.canSkipUntil) {\n // add _HLS_skip= infront of all other queries.\n // eslint-disable-next-line\n parameters._HLS_skip = media.serverControl.canSkipDateranges ? 'v2' : 'YES';\n }\n if (Object.keys(parameters).length) {\n const parsedUri = new window$1.URL(uri);\n ['_HLS_skip', '_HLS_msn', '_HLS_part'].forEach(function (name) {\n if (!parameters.hasOwnProperty(name)) {\n return;\n }\n parsedUri.searchParams.set(name, parameters[name]);\n });\n uri = parsedUri.toString();\n }\n return uri;\n};\n/**\n * Returns a new segment object with properties and\n * the parts array merged.\n *\n * @param {Object} a the old segment\n * @param {Object} b the new segment\n *\n * @return {Object} the merged segment\n */\n\nconst updateSegment = (a, b) => {\n if (!a) {\n return b;\n }\n const result = merge(a, b); // if only the old segment has preload hints\n // and the new one does not, remove preload hints.\n\n if (a.preloadHints && !b.preloadHints) {\n delete result.preloadHints;\n } // if only the old segment has parts\n // then the parts are no longer valid\n\n if (a.parts && !b.parts) {\n delete result.parts; // if both segments have parts\n // copy part propeties from the old segment\n // to the new one.\n } else if (a.parts && b.parts) {\n for (let i = 0; i < b.parts.length; i++) {\n if (a.parts && a.parts[i]) {\n result.parts[i] = merge(a.parts[i], b.parts[i]);\n }\n }\n } // set skipped to false for segments that have\n // have had information merged from the old segment.\n\n if (!a.skipped && b.skipped) {\n result.skipped = false;\n } // set preload to false for segments that have\n // had information added in the new segment.\n\n if (a.preload && !b.preload) {\n result.preload = false;\n }\n return result;\n};\n/**\n * Returns a new array of segments that is the result of merging\n * properties from an older list of segments onto an updated\n * list. No properties on the updated playlist will be ovewritten.\n *\n * @param {Array} original the outdated list of segments\n * @param {Array} update the updated list of segments\n * @param {number=} offset the index of the first update\n * segment in the original segment list. For non-live playlists,\n * this should always be zero and does not need to be\n * specified. For live playlists, it should be the difference\n * between the media sequence numbers in the original and updated\n * playlists.\n * @return {Array} a list of merged segment objects\n */\n\nconst updateSegments = (original, update, offset) => {\n const oldSegments = original.slice();\n const newSegments = update.slice();\n offset = offset || 0;\n const result = [];\n let currentMap;\n for (let newIndex = 0; newIndex < newSegments.length; newIndex++) {\n const oldSegment = oldSegments[newIndex + offset];\n const newSegment = newSegments[newIndex];\n if (oldSegment) {\n currentMap = oldSegment.map || currentMap;\n result.push(updateSegment(oldSegment, newSegment));\n } else {\n // carry over map to new segment if it is missing\n if (currentMap && !newSegment.map) {\n newSegment.map = currentMap;\n }\n result.push(newSegment);\n }\n }\n return result;\n};\nconst resolveSegmentUris = (segment, baseUri) => {\n // preloadSegment will not have a uri at all\n // as the segment isn't actually in the manifest yet, only parts\n if (!segment.resolvedUri && segment.uri) {\n segment.resolvedUri = resolveUrl(baseUri, segment.uri);\n }\n if (segment.key && !segment.key.resolvedUri) {\n segment.key.resolvedUri = resolveUrl(baseUri, segment.key.uri);\n }\n if (segment.map && !segment.map.resolvedUri) {\n segment.map.resolvedUri = resolveUrl(baseUri, segment.map.uri);\n }\n if (segment.map && segment.map.key && !segment.map.key.resolvedUri) {\n segment.map.key.resolvedUri = resolveUrl(baseUri, segment.map.key.uri);\n }\n if (segment.parts && segment.parts.length) {\n segment.parts.forEach(p => {\n if (p.resolvedUri) {\n return;\n }\n p.resolvedUri = resolveUrl(baseUri, p.uri);\n });\n }\n if (segment.preloadHints && segment.preloadHints.length) {\n segment.preloadHints.forEach(p => {\n if (p.resolvedUri) {\n return;\n }\n p.resolvedUri = resolveUrl(baseUri, p.uri);\n });\n }\n};\nconst getAllSegments = function (media) {\n const segments = media.segments || [];\n const preloadSegment = media.preloadSegment; // a preloadSegment with only preloadHints is not currently\n // a usable segment, only include a preloadSegment that has\n // parts.\n\n if (preloadSegment && preloadSegment.parts && preloadSegment.parts.length) {\n // if preloadHints has a MAP that means that the\n // init segment is going to change. We cannot use any of the parts\n // from this preload segment.\n if (preloadSegment.preloadHints) {\n for (let i = 0; i < preloadSegment.preloadHints.length; i++) {\n if (preloadSegment.preloadHints[i].type === 'MAP') {\n return segments;\n }\n }\n } // set the duration for our preload segment to target duration.\n\n preloadSegment.duration = media.targetDuration;\n preloadSegment.preload = true;\n segments.push(preloadSegment);\n }\n return segments;\n}; // consider the playlist unchanged if the playlist object is the same or\n// the number of segments is equal, the media sequence number is unchanged,\n// and this playlist hasn't become the end of the playlist\n\nconst isPlaylistUnchanged = (a, b) => a === b || a.segments && b.segments && a.segments.length === b.segments.length && a.endList === b.endList && a.mediaSequence === b.mediaSequence && a.preloadSegment === b.preloadSegment;\n/**\n * Returns a new main playlist that is the result of merging an\n * updated media playlist into the original version. If the\n * updated media playlist does not match any of the playlist\n * entries in the original main playlist, null is returned.\n *\n * @param {Object} main a parsed main M3U8 object\n * @param {Object} media a parsed media M3U8 object\n * @return {Object} a new object that represents the original\n * main playlist with the updated media playlist merged in, or\n * null if the merge produced no change.\n */\n\nconst updateMain$1 = (main, newMedia, unchangedCheck = isPlaylistUnchanged) => {\n const result = merge(main, {});\n const oldMedia = result.playlists[newMedia.id];\n if (!oldMedia) {\n return null;\n }\n if (unchangedCheck(oldMedia, newMedia)) {\n return null;\n }\n newMedia.segments = getAllSegments(newMedia);\n const mergedPlaylist = merge(oldMedia, newMedia); // always use the new media's preload segment\n\n if (mergedPlaylist.preloadSegment && !newMedia.preloadSegment) {\n delete mergedPlaylist.preloadSegment;\n } // if the update could overlap existing segment information, merge the two segment lists\n\n if (oldMedia.segments) {\n if (newMedia.skip) {\n newMedia.segments = newMedia.segments || []; // add back in objects for skipped segments, so that we merge\n // old properties into the new segments\n\n for (let i = 0; i < newMedia.skip.skippedSegments; i++) {\n newMedia.segments.unshift({\n skipped: true\n });\n }\n }\n mergedPlaylist.segments = updateSegments(oldMedia.segments, newMedia.segments, newMedia.mediaSequence - oldMedia.mediaSequence);\n } // resolve any segment URIs to prevent us from having to do it later\n\n mergedPlaylist.segments.forEach(segment => {\n resolveSegmentUris(segment, mergedPlaylist.resolvedUri);\n }); // TODO Right now in the playlists array there are two references to each playlist, one\n // that is referenced by index, and one by URI. The index reference may no longer be\n // necessary.\n\n for (let i = 0; i < result.playlists.length; i++) {\n if (result.playlists[i].id === newMedia.id) {\n result.playlists[i] = mergedPlaylist;\n }\n }\n result.playlists[newMedia.id] = mergedPlaylist; // URI reference added for backwards compatibility\n\n result.playlists[newMedia.uri] = mergedPlaylist; // update media group playlist references.\n\n forEachMediaGroup(main, (properties, mediaType, groupKey, labelKey) => {\n if (!properties.playlists) {\n return;\n }\n for (let i = 0; i < properties.playlists.length; i++) {\n if (newMedia.id === properties.playlists[i].id) {\n properties.playlists[i] = mergedPlaylist;\n }\n }\n });\n return result;\n};\n/**\n * Calculates the time to wait before refreshing a live playlist\n *\n * @param {Object} media\n * The current media\n * @param {boolean} update\n * True if there were any updates from the last refresh, false otherwise\n * @return {number}\n * The time in ms to wait before refreshing the live playlist\n */\n\nconst refreshDelay = (media, update) => {\n const segments = media.segments || [];\n const lastSegment = segments[segments.length - 1];\n const lastPart = lastSegment && lastSegment.parts && lastSegment.parts[lastSegment.parts.length - 1];\n const lastDuration = lastPart && lastPart.duration || lastSegment && lastSegment.duration;\n if (update && lastDuration) {\n return lastDuration * 1000;\n } // if the playlist is unchanged since the last reload or last segment duration\n // cannot be determined, try again after half the target duration\n\n return (media.partTargetDuration || media.targetDuration || 10) * 500;\n};\nconst playlistMetadataPayload = (playlists, type, isLive) => {\n if (!playlists) {\n return;\n }\n const renditions = [];\n playlists.forEach(playlist => {\n // we need attributes to populate rendition data.\n if (!playlist.attributes) {\n return;\n }\n const {\n BANDWIDTH,\n RESOLUTION,\n CODECS\n } = playlist.attributes;\n renditions.push({\n id: playlist.id,\n bandwidth: BANDWIDTH,\n resolution: RESOLUTION,\n codecs: CODECS\n });\n });\n return {\n type,\n isLive,\n renditions\n };\n};\n/**\n * Load a playlist from a remote location\n *\n * @class PlaylistLoader\n * @extends Stream\n * @param {string|Object} src url or object of manifest\n * @param {boolean} withCredentials the withCredentials xhr option\n * @class\n */\n\nclass PlaylistLoader extends EventTarget$1 {\n constructor(src, vhs, options = {}) {\n super();\n if (!src) {\n throw new Error('A non-empty playlist URL or object is required');\n }\n this.logger_ = logger('PlaylistLoader');\n const {\n withCredentials = false\n } = options;\n this.src = src;\n this.vhs_ = vhs;\n this.withCredentials = withCredentials;\n this.addDateRangesToTextTrack_ = options.addDateRangesToTextTrack;\n const vhsOptions = vhs.options_;\n this.customTagParsers = vhsOptions && vhsOptions.customTagParsers || [];\n this.customTagMappers = vhsOptions && vhsOptions.customTagMappers || [];\n this.llhls = vhsOptions && vhsOptions.llhls;\n this.dateRangesStorage_ = new DateRangesStorage(); // initialize the loader state\n\n this.state = 'HAVE_NOTHING'; // live playlist staleness timeout\n\n this.handleMediaupdatetimeout_ = this.handleMediaupdatetimeout_.bind(this);\n this.on('mediaupdatetimeout', this.handleMediaupdatetimeout_);\n this.on('loadedplaylist', this.handleLoadedPlaylist_.bind(this));\n }\n handleLoadedPlaylist_() {\n const mediaPlaylist = this.media();\n if (!mediaPlaylist) {\n return;\n }\n this.dateRangesStorage_.setOffset(mediaPlaylist.segments);\n this.dateRangesStorage_.setPendingDateRanges(mediaPlaylist.dateRanges);\n const availableDateRanges = this.dateRangesStorage_.getDateRangesToProcess();\n if (!availableDateRanges.length || !this.addDateRangesToTextTrack_) {\n return;\n }\n this.addDateRangesToTextTrack_(availableDateRanges);\n }\n handleMediaupdatetimeout_() {\n if (this.state !== 'HAVE_METADATA') {\n // only refresh the media playlist if no other activity is going on\n return;\n }\n const media = this.media();\n let uri = resolveUrl(this.main.uri, media.uri);\n if (this.llhls) {\n uri = addLLHLSQueryDirectives(uri, media);\n }\n this.state = 'HAVE_CURRENT_METADATA';\n this.request = this.vhs_.xhr({\n uri,\n withCredentials: this.withCredentials,\n requestType: 'hls-playlist'\n }, (error, req) => {\n // disposed\n if (!this.request) {\n return;\n }\n if (error) {\n return this.playlistRequestError(this.request, this.media(), 'HAVE_METADATA');\n }\n this.haveMetadata({\n playlistString: this.request.responseText,\n url: this.media().uri,\n id: this.media().id\n });\n });\n }\n playlistRequestError(xhr, playlist, startingState) {\n const {\n uri,\n id\n } = playlist; // any in-flight request is now finished\n\n this.request = null;\n if (startingState) {\n this.state = startingState;\n }\n this.error = {\n playlist: this.main.playlists[id],\n status: xhr.status,\n message: `HLS playlist request error at URL: ${uri}.`,\n responseText: xhr.responseText,\n code: xhr.status >= 500 ? 4 : 2,\n metadata: getStreamingNetworkErrorMetadata({\n requestType: xhr.requestType,\n request: xhr,\n error: xhr.error\n })\n };\n this.trigger('error');\n }\n parseManifest_({\n url,\n manifestString\n }) {\n try {\n return parseManifest({\n onwarn: ({\n message\n }) => this.logger_(`m3u8-parser warn for ${url}: ${message}`),\n oninfo: ({\n message\n }) => this.logger_(`m3u8-parser info for ${url}: ${message}`),\n manifestString,\n customTagParsers: this.customTagParsers,\n customTagMappers: this.customTagMappers,\n llhls: this.llhls\n });\n } catch (error) {\n this.error = error;\n this.error.metadata = {\n errorType: videojs.Error.StreamingHlsPlaylistParserError,\n error\n };\n }\n }\n /**\n * Update the playlist loader's state in response to a new or updated playlist.\n *\n * @param {string} [playlistString]\n * Playlist string (if playlistObject is not provided)\n * @param {Object} [playlistObject]\n * Playlist object (if playlistString is not provided)\n * @param {string} url\n * URL of playlist\n * @param {string} id\n * ID to use for playlist\n */\n\n haveMetadata({\n playlistString,\n playlistObject,\n url,\n id\n }) {\n // any in-flight request is now finished\n this.request = null;\n this.state = 'HAVE_METADATA';\n const metadata = {\n playlistInfo: {\n type: 'media',\n uri: url\n }\n };\n this.trigger({\n type: 'playlistparsestart',\n metadata\n });\n const playlist = playlistObject || this.parseManifest_({\n url,\n manifestString: playlistString\n });\n playlist.lastRequest = Date.now();\n setupMediaPlaylist({\n playlist,\n uri: url,\n id\n }); // merge this playlist into the main manifest\n\n const update = updateMain$1(this.main, playlist);\n this.targetDuration = playlist.partTargetDuration || playlist.targetDuration;\n this.pendingMedia_ = null;\n if (update) {\n this.main = update;\n this.media_ = this.main.playlists[id];\n } else {\n this.trigger('playlistunchanged');\n }\n this.updateMediaUpdateTimeout_(refreshDelay(this.media(), !!update));\n metadata.parsedPlaylist = playlistMetadataPayload(this.main.playlists, metadata.playlistInfo.type, !this.media_.endList);\n this.trigger({\n type: 'playlistparsecomplete',\n metadata\n });\n this.trigger('loadedplaylist');\n }\n /**\n * Abort any outstanding work and clean up.\n */\n\n dispose() {\n this.trigger('dispose');\n this.stopRequest();\n window$1.clearTimeout(this.mediaUpdateTimeout);\n window$1.clearTimeout(this.finalRenditionTimeout);\n this.dateRangesStorage_ = new DateRangesStorage();\n this.off();\n }\n stopRequest() {\n if (this.request) {\n const oldRequest = this.request;\n this.request = null;\n oldRequest.onreadystatechange = null;\n oldRequest.abort();\n }\n }\n /**\n * When called without any arguments, returns the currently\n * active media playlist. When called with a single argument,\n * triggers the playlist loader to asynchronously switch to the\n * specified media playlist. Calling this method while the\n * loader is in the HAVE_NOTHING causes an error to be emitted\n * but otherwise has no effect.\n *\n * @param {Object=} playlist the parsed media playlist\n * object to switch to\n * @param {boolean=} shouldDelay whether we should delay the request by half target duration\n *\n * @return {Playlist} the current loaded media\n */\n\n media(playlist, shouldDelay) {\n // getter\n if (!playlist) {\n return this.media_;\n } // setter\n\n if (this.state === 'HAVE_NOTHING') {\n throw new Error('Cannot switch media playlist from ' + this.state);\n } // find the playlist object if the target playlist has been\n // specified by URI\n\n if (typeof playlist === 'string') {\n if (!this.main.playlists[playlist]) {\n throw new Error('Unknown playlist URI: ' + playlist);\n }\n playlist = this.main.playlists[playlist];\n }\n window$1.clearTimeout(this.finalRenditionTimeout);\n if (shouldDelay) {\n const delay = (playlist.partTargetDuration || playlist.targetDuration) / 2 * 1000 || 5 * 1000;\n this.finalRenditionTimeout = window$1.setTimeout(this.media.bind(this, playlist, false), delay);\n return;\n }\n const startingState = this.state;\n const mediaChange = !this.media_ || playlist.id !== this.media_.id;\n const mainPlaylistRef = this.main.playlists[playlist.id]; // switch to fully loaded playlists immediately\n\n if (mainPlaylistRef && mainPlaylistRef.endList ||\n // handle the case of a playlist object (e.g., if using vhs-json with a resolved\n // media playlist or, for the case of demuxed audio, a resolved audio media group)\n playlist.endList && playlist.segments.length) {\n // abort outstanding playlist requests\n if (this.request) {\n this.request.onreadystatechange = null;\n this.request.abort();\n this.request = null;\n }\n this.state = 'HAVE_METADATA';\n this.media_ = playlist; // trigger media change if the active media has been updated\n\n if (mediaChange) {\n this.trigger('mediachanging');\n if (startingState === 'HAVE_MAIN_MANIFEST') {\n // The initial playlist was a main manifest, and the first media selected was\n // also provided (in the form of a resolved playlist object) as part of the\n // source object (rather than just a URL). Therefore, since the media playlist\n // doesn't need to be requested, loadedmetadata won't trigger as part of the\n // normal flow, and needs an explicit trigger here.\n this.trigger('loadedmetadata');\n } else {\n this.trigger('mediachange');\n }\n }\n return;\n } // We update/set the timeout here so that live playlists\n // that are not a media change will \"start\" the loader as expected.\n // We expect that this function will start the media update timeout\n // cycle again. This also prevents a playlist switch failure from\n // causing us to stall during live.\n\n this.updateMediaUpdateTimeout_(refreshDelay(playlist, true)); // switching to the active playlist is a no-op\n\n if (!mediaChange) {\n return;\n }\n this.state = 'SWITCHING_MEDIA'; // there is already an outstanding playlist request\n\n if (this.request) {\n if (playlist.resolvedUri === this.request.url) {\n // requesting to switch to the same playlist multiple times\n // has no effect after the first\n return;\n }\n this.request.onreadystatechange = null;\n this.request.abort();\n this.request = null;\n } // request the new playlist\n\n if (this.media_) {\n this.trigger('mediachanging');\n }\n this.pendingMedia_ = playlist;\n const metadata = {\n playlistInfo: {\n type: 'media',\n uri: playlist.uri\n }\n };\n this.trigger({\n type: 'playlistrequeststart',\n metadata\n });\n this.request = this.vhs_.xhr({\n uri: playlist.resolvedUri,\n withCredentials: this.withCredentials,\n requestType: 'hls-playlist'\n }, (error, req) => {\n // disposed\n if (!this.request) {\n return;\n }\n playlist.lastRequest = Date.now();\n playlist.resolvedUri = resolveManifestRedirect(playlist.resolvedUri, req);\n if (error) {\n return this.playlistRequestError(this.request, playlist, startingState);\n }\n this.trigger({\n type: 'playlistrequestcomplete',\n metadata\n });\n this.haveMetadata({\n playlistString: req.responseText,\n url: playlist.uri,\n id: playlist.id\n }); // fire loadedmetadata the first time a media playlist is loaded\n\n if (startingState === 'HAVE_MAIN_MANIFEST') {\n this.trigger('loadedmetadata');\n } else {\n this.trigger('mediachange');\n }\n });\n }\n /**\n * pause loading of the playlist\n */\n\n pause() {\n if (this.mediaUpdateTimeout) {\n window$1.clearTimeout(this.mediaUpdateTimeout);\n this.mediaUpdateTimeout = null;\n }\n this.stopRequest();\n if (this.state === 'HAVE_NOTHING') {\n // If we pause the loader before any data has been retrieved, its as if we never\n // started, so reset to an unstarted state.\n this.started = false;\n } // Need to restore state now that no activity is happening\n\n if (this.state === 'SWITCHING_MEDIA') {\n // if the loader was in the process of switching media, it should either return to\n // HAVE_MAIN_MANIFEST or HAVE_METADATA depending on if the loader has loaded a media\n // playlist yet. This is determined by the existence of loader.media_\n if (this.media_) {\n this.state = 'HAVE_METADATA';\n } else {\n this.state = 'HAVE_MAIN_MANIFEST';\n }\n } else if (this.state === 'HAVE_CURRENT_METADATA') {\n this.state = 'HAVE_METADATA';\n }\n }\n /**\n * start loading of the playlist\n */\n\n load(shouldDelay) {\n if (this.mediaUpdateTimeout) {\n window$1.clearTimeout(this.mediaUpdateTimeout);\n this.mediaUpdateTimeout = null;\n }\n const media = this.media();\n if (shouldDelay) {\n const delay = media ? (media.partTargetDuration || media.targetDuration) / 2 * 1000 : 5 * 1000;\n this.mediaUpdateTimeout = window$1.setTimeout(() => {\n this.mediaUpdateTimeout = null;\n this.load();\n }, delay);\n return;\n }\n if (!this.started) {\n this.start();\n return;\n }\n if (media && !media.endList) {\n this.trigger('mediaupdatetimeout');\n } else {\n this.trigger('loadedplaylist');\n }\n }\n updateMediaUpdateTimeout_(delay) {\n if (this.mediaUpdateTimeout) {\n window$1.clearTimeout(this.mediaUpdateTimeout);\n this.mediaUpdateTimeout = null;\n } // we only have use mediaupdatetimeout for live playlists.\n\n if (!this.media() || this.media().endList) {\n return;\n }\n this.mediaUpdateTimeout = window$1.setTimeout(() => {\n this.mediaUpdateTimeout = null;\n this.trigger('mediaupdatetimeout');\n this.updateMediaUpdateTimeout_(delay);\n }, delay);\n }\n /**\n * start loading of the playlist\n */\n\n start() {\n this.started = true;\n if (typeof this.src === 'object') {\n // in the case of an entirely constructed manifest object (meaning there's no actual\n // manifest on a server), default the uri to the page's href\n if (!this.src.uri) {\n this.src.uri = window$1.location.href;\n } // resolvedUri is added on internally after the initial request. Since there's no\n // request for pre-resolved manifests, add on resolvedUri here.\n\n this.src.resolvedUri = this.src.uri; // Since a manifest object was passed in as the source (instead of a URL), the first\n // request can be skipped (since the top level of the manifest, at a minimum, is\n // already available as a parsed manifest object). However, if the manifest object\n // represents a main playlist, some media playlists may need to be resolved before\n // the starting segment list is available. Therefore, go directly to setup of the\n // initial playlist, and let the normal flow continue from there.\n //\n // Note that the call to setup is asynchronous, as other sections of VHS may assume\n // that the first request is asynchronous.\n\n setTimeout(() => {\n this.setupInitialPlaylist(this.src);\n }, 0);\n return;\n }\n const metadata = {\n playlistInfo: {\n type: 'multivariant',\n uri: this.src\n }\n };\n this.trigger({\n type: 'playlistrequeststart',\n metadata\n }); // request the specified URL\n\n this.request = this.vhs_.xhr({\n uri: this.src,\n withCredentials: this.withCredentials,\n requestType: 'hls-playlist'\n }, (error, req) => {\n // disposed\n if (!this.request) {\n return;\n } // clear the loader's request reference\n\n this.request = null;\n if (error) {\n this.error = {\n status: req.status,\n message: `HLS playlist request error at URL: ${this.src}.`,\n responseText: req.responseText,\n // MEDIA_ERR_NETWORK\n code: 2,\n metadata: getStreamingNetworkErrorMetadata({\n requestType: req.requestType,\n request: req,\n error\n })\n };\n if (this.state === 'HAVE_NOTHING') {\n this.started = false;\n }\n return this.trigger('error');\n }\n this.trigger({\n type: 'playlistrequestcomplete',\n metadata\n });\n this.src = resolveManifestRedirect(this.src, req);\n this.trigger({\n type: 'playlistparsestart',\n metadata\n });\n const manifest = this.parseManifest_({\n manifestString: req.responseText,\n url: this.src\n }); // we haven't loaded any variant playlists here so we default to false for isLive.\n\n metadata.parsedPlaylist = playlistMetadataPayload(manifest.playlists, metadata.playlistInfo.type, false);\n this.trigger({\n type: 'playlistparsecomplete',\n metadata\n });\n this.setupInitialPlaylist(manifest);\n });\n }\n srcUri() {\n return typeof this.src === 'string' ? this.src : this.src.uri;\n }\n /**\n * Given a manifest object that's either a main or media playlist, trigger the proper\n * events and set the state of the playlist loader.\n *\n * If the manifest object represents a main playlist, `loadedplaylist` will be\n * triggered to allow listeners to select a playlist. If none is selected, the loader\n * will default to the first one in the playlists array.\n *\n * If the manifest object represents a media playlist, `loadedplaylist` will be\n * triggered followed by `loadedmetadata`, as the only available playlist is loaded.\n *\n * In the case of a media playlist, a main playlist object wrapper with one playlist\n * will be created so that all logic can handle playlists in the same fashion (as an\n * assumed manifest object schema).\n *\n * @param {Object} manifest\n * The parsed manifest object\n */\n\n setupInitialPlaylist(manifest) {\n this.state = 'HAVE_MAIN_MANIFEST';\n if (manifest.playlists) {\n this.main = manifest;\n addPropertiesToMain(this.main, this.srcUri()); // If the initial main playlist has playlists wtih segments already resolved,\n // then resolve URIs in advance, as they are usually done after a playlist request,\n // which may not happen if the playlist is resolved.\n\n manifest.playlists.forEach(playlist => {\n playlist.segments = getAllSegments(playlist);\n playlist.segments.forEach(segment => {\n resolveSegmentUris(segment, playlist.resolvedUri);\n });\n });\n this.trigger('loadedplaylist');\n if (!this.request) {\n // no media playlist was specifically selected so start\n // from the first listed one\n this.media(this.main.playlists[0]);\n }\n return;\n } // In order to support media playlists passed in as vhs-json, the case where the uri\n // is not provided as part of the manifest should be considered, and an appropriate\n // default used.\n\n const uri = this.srcUri() || window$1.location.href;\n this.main = mainForMedia(manifest, uri);\n this.haveMetadata({\n playlistObject: manifest,\n url: uri,\n id: this.main.playlists[0].id\n });\n this.trigger('loadedmetadata');\n }\n /**\n * Updates or deletes a preexisting pathway clone.\n * Ensures that all playlists related to the old pathway clone are\n * either updated or deleted.\n *\n * @param {Object} clone On update, the pathway clone object for the newly updated pathway clone.\n * On delete, the old pathway clone object to be deleted.\n * @param {boolean} isUpdate True if the pathway is to be updated,\n * false if it is meant to be deleted.\n */\n\n updateOrDeleteClone(clone, isUpdate) {\n const main = this.main;\n const pathway = clone.ID;\n let i = main.playlists.length; // Iterate backwards through the playlist so we can remove playlists if necessary.\n\n while (i--) {\n const p = main.playlists[i];\n if (p.attributes['PATHWAY-ID'] === pathway) {\n const oldPlaylistUri = p.resolvedUri;\n const oldPlaylistId = p.id; // update the indexed playlist and add new playlists by ID and URI\n\n if (isUpdate) {\n const newPlaylistUri = this.createCloneURI_(p.resolvedUri, clone);\n const newPlaylistId = createPlaylistID(pathway, newPlaylistUri);\n const attributes = this.createCloneAttributes_(pathway, p.attributes);\n const updatedPlaylist = this.createClonePlaylist_(p, newPlaylistId, clone, attributes);\n main.playlists[i] = updatedPlaylist;\n main.playlists[newPlaylistId] = updatedPlaylist;\n main.playlists[newPlaylistUri] = updatedPlaylist;\n } else {\n // Remove the indexed playlist.\n main.playlists.splice(i, 1);\n } // Remove playlists by the old ID and URI.\n\n delete main.playlists[oldPlaylistId];\n delete main.playlists[oldPlaylistUri];\n }\n }\n this.updateOrDeleteCloneMedia(clone, isUpdate);\n }\n /**\n * Updates or deletes media data based on the pathway clone object.\n * Due to the complexity of the media groups and playlists, in all cases\n * we remove all of the old media groups and playlists.\n * On updates, we then create new media groups and playlists based on the\n * new pathway clone object.\n *\n * @param {Object} clone The pathway clone object for the newly updated pathway clone.\n * @param {boolean} isUpdate True if the pathway is to be updated,\n * false if it is meant to be deleted.\n */\n\n updateOrDeleteCloneMedia(clone, isUpdate) {\n const main = this.main;\n const id = clone.ID;\n ['AUDIO', 'SUBTITLES', 'CLOSED-CAPTIONS'].forEach(mediaType => {\n if (!main.mediaGroups[mediaType] || !main.mediaGroups[mediaType][id]) {\n return;\n }\n for (const groupKey in main.mediaGroups[mediaType]) {\n // Remove all media playlists for the media group for this pathway clone.\n if (groupKey === id) {\n for (const labelKey in main.mediaGroups[mediaType][groupKey]) {\n const oldMedia = main.mediaGroups[mediaType][groupKey][labelKey];\n oldMedia.playlists.forEach((p, i) => {\n const oldMediaPlaylist = main.playlists[p.id];\n const oldPlaylistId = oldMediaPlaylist.id;\n const oldPlaylistUri = oldMediaPlaylist.resolvedUri;\n delete main.playlists[oldPlaylistId];\n delete main.playlists[oldPlaylistUri];\n });\n } // Delete the old media group.\n\n delete main.mediaGroups[mediaType][groupKey];\n }\n }\n }); // Create the new media groups and playlists if there is an update.\n\n if (isUpdate) {\n this.createClonedMediaGroups_(clone);\n }\n }\n /**\n * Given a pathway clone object, clones all necessary playlists.\n *\n * @param {Object} clone The pathway clone object.\n * @param {Object} basePlaylist The original playlist to clone from.\n */\n\n addClonePathway(clone, basePlaylist = {}) {\n const main = this.main;\n const index = main.playlists.length;\n const uri = this.createCloneURI_(basePlaylist.resolvedUri, clone);\n const playlistId = createPlaylistID(clone.ID, uri);\n const attributes = this.createCloneAttributes_(clone.ID, basePlaylist.attributes);\n const playlist = this.createClonePlaylist_(basePlaylist, playlistId, clone, attributes);\n main.playlists[index] = playlist; // add playlist by ID and URI\n\n main.playlists[playlistId] = playlist;\n main.playlists[uri] = playlist;\n this.createClonedMediaGroups_(clone);\n }\n /**\n * Given a pathway clone object we create clones of all media.\n * In this function, all necessary information and updated playlists\n * are added to the `mediaGroup` object.\n * Playlists are also added to the `playlists` array so the media groups\n * will be properly linked.\n *\n * @param {Object} clone The pathway clone object.\n */\n\n createClonedMediaGroups_(clone) {\n const id = clone.ID;\n const baseID = clone['BASE-ID'];\n const main = this.main;\n ['AUDIO', 'SUBTITLES', 'CLOSED-CAPTIONS'].forEach(mediaType => {\n // If the media type doesn't exist, or there is already a clone, skip\n // to the next media type.\n if (!main.mediaGroups[mediaType] || main.mediaGroups[mediaType][id]) {\n return;\n }\n for (const groupKey in main.mediaGroups[mediaType]) {\n if (groupKey === baseID) {\n // Create the group.\n main.mediaGroups[mediaType][id] = {};\n } else {\n // There is no need to iterate over label keys in this case.\n continue;\n }\n for (const labelKey in main.mediaGroups[mediaType][groupKey]) {\n const oldMedia = main.mediaGroups[mediaType][groupKey][labelKey];\n main.mediaGroups[mediaType][id][labelKey] = _extends({}, oldMedia);\n const newMedia = main.mediaGroups[mediaType][id][labelKey]; // update URIs on the media\n\n const newUri = this.createCloneURI_(oldMedia.resolvedUri, clone);\n newMedia.resolvedUri = newUri;\n newMedia.uri = newUri; // Reset playlists in the new media group.\n\n newMedia.playlists = []; // Create new playlists in the newly cloned media group.\n\n oldMedia.playlists.forEach((p, i) => {\n const oldMediaPlaylist = main.playlists[p.id];\n const group = groupID(mediaType, id, labelKey);\n const newPlaylistID = createPlaylistID(id, group); // Check to see if it already exists\n\n if (oldMediaPlaylist && !main.playlists[newPlaylistID]) {\n const newMediaPlaylist = this.createClonePlaylist_(oldMediaPlaylist, newPlaylistID, clone);\n const newPlaylistUri = newMediaPlaylist.resolvedUri;\n main.playlists[newPlaylistID] = newMediaPlaylist;\n main.playlists[newPlaylistUri] = newMediaPlaylist;\n }\n newMedia.playlists[i] = this.createClonePlaylist_(p, newPlaylistID, clone);\n });\n }\n }\n });\n }\n /**\n * Using the original playlist to be cloned, and the pathway clone object\n * information, we create a new playlist.\n *\n * @param {Object} basePlaylist The original playlist to be cloned from.\n * @param {string} id The desired id of the newly cloned playlist.\n * @param {Object} clone The pathway clone object.\n * @param {Object} attributes An optional object to populate the `attributes` property in the playlist.\n *\n * @return {Object} The combined cloned playlist.\n */\n\n createClonePlaylist_(basePlaylist, id, clone, attributes) {\n const uri = this.createCloneURI_(basePlaylist.resolvedUri, clone);\n const newProps = {\n resolvedUri: uri,\n uri,\n id\n }; // Remove all segments from previous playlist in the clone.\n\n if (basePlaylist.segments) {\n newProps.segments = [];\n }\n if (attributes) {\n newProps.attributes = attributes;\n }\n return merge(basePlaylist, newProps);\n }\n /**\n * Generates an updated URI for a cloned pathway based on the original\n * pathway's URI and the paramaters from the pathway clone object in the\n * content steering server response.\n *\n * @param {string} baseUri URI to be updated in the cloned pathway.\n * @param {Object} clone The pathway clone object.\n *\n * @return {string} The updated URI for the cloned pathway.\n */\n\n createCloneURI_(baseURI, clone) {\n const uri = new URL(baseURI);\n uri.hostname = clone['URI-REPLACEMENT'].HOST;\n const params = clone['URI-REPLACEMENT'].PARAMS; // Add params to the cloned URL.\n\n for (const key of Object.keys(params)) {\n uri.searchParams.set(key, params[key]);\n }\n return uri.href;\n }\n /**\n * Helper function to create the attributes needed for the new clone.\n * This mainly adds the necessary media attributes.\n *\n * @param {string} id The pathway clone object ID.\n * @param {Object} oldAttributes The old attributes to compare to.\n * @return {Object} The new attributes to add to the playlist.\n */\n\n createCloneAttributes_(id, oldAttributes) {\n const attributes = {\n ['PATHWAY-ID']: id\n };\n ['AUDIO', 'SUBTITLES', 'CLOSED-CAPTIONS'].forEach(mediaType => {\n if (oldAttributes[mediaType]) {\n attributes[mediaType] = id;\n }\n });\n return attributes;\n }\n /**\n * Returns the key ID set from a playlist\n *\n * @param {playlist} playlist to fetch the key ID set from.\n * @return a Set of 32 digit hex strings that represent the unique keyIds for that playlist.\n */\n\n getKeyIdSet(playlist) {\n if (playlist.contentProtection) {\n const keyIds = new Set();\n for (const keysystem in playlist.contentProtection) {\n const keyId = playlist.contentProtection[keysystem].attributes.keyId;\n if (keyId) {\n keyIds.add(keyId.toLowerCase());\n }\n }\n return keyIds;\n }\n }\n}\n\n/**\n * @file xhr.js\n */\n\nconst callbackWrapper = function (request, error, response, callback) {\n const reqResponse = request.responseType === 'arraybuffer' ? request.response : request.responseText;\n if (!error && reqResponse) {\n request.responseTime = Date.now();\n request.roundTripTime = request.responseTime - request.requestTime;\n request.bytesReceived = reqResponse.byteLength || reqResponse.length;\n if (!request.bandwidth) {\n request.bandwidth = Math.floor(request.bytesReceived / request.roundTripTime * 8 * 1000);\n }\n }\n if (response.headers) {\n request.responseHeaders = response.headers;\n } // videojs.xhr now uses a specific code on the error\n // object to signal that a request has timed out instead\n // of setting a boolean on the request object\n\n if (error && error.code === 'ETIMEDOUT') {\n request.timedout = true;\n } // videojs.xhr no longer considers status codes outside of 200 and 0\n // (for file uris) to be errors, but the old XHR did, so emulate that\n // behavior. Status 206 may be used in response to byterange requests.\n\n if (!error && !request.aborted && response.statusCode !== 200 && response.statusCode !== 206 && response.statusCode !== 0) {\n error = new Error('XHR Failed with a response of: ' + (request && (reqResponse || request.responseText)));\n }\n callback(error, request);\n};\n/**\n * Iterates over the request hooks Set and calls them in order\n *\n * @param {Set} hooks the hook Set to iterate over\n * @param {Object} options the request options to pass to the xhr wrapper\n * @return the callback hook function return value, the modified or new options Object.\n */\n\nconst callAllRequestHooks = (requestSet, options) => {\n if (!requestSet || !requestSet.size) {\n return;\n }\n let newOptions = options;\n requestSet.forEach(requestCallback => {\n newOptions = requestCallback(newOptions);\n });\n return newOptions;\n};\n/**\n * Iterates over the response hooks Set and calls them in order.\n *\n * @param {Set} hooks the hook Set to iterate over\n * @param {Object} request the xhr request object\n * @param {Object} error the xhr error object\n * @param {Object} response the xhr response object\n */\n\nconst callAllResponseHooks = (responseSet, request, error, response) => {\n if (!responseSet || !responseSet.size) {\n return;\n }\n responseSet.forEach(responseCallback => {\n responseCallback(request, error, response);\n });\n};\nconst xhrFactory = function () {\n const xhr = function XhrFunction(options, callback) {\n // Add a default timeout\n options = merge({\n timeout: 45e3\n }, options); // Allow an optional user-specified function to modify the option\n // object before we construct the xhr request\n // TODO: Remove beforeRequest in the next major release.\n\n const beforeRequest = XhrFunction.beforeRequest || videojs.Vhs.xhr.beforeRequest; // onRequest and onResponse hooks as a Set, at either the player or global level.\n // TODO: new Set added here for beforeRequest alias. Remove this when beforeRequest is removed.\n\n const _requestCallbackSet = XhrFunction._requestCallbackSet || videojs.Vhs.xhr._requestCallbackSet || new Set();\n const _responseCallbackSet = XhrFunction._responseCallbackSet || videojs.Vhs.xhr._responseCallbackSet;\n if (beforeRequest && typeof beforeRequest === 'function') {\n videojs.log.warn('beforeRequest is deprecated, use onRequest instead.');\n _requestCallbackSet.add(beforeRequest);\n } // Use the standard videojs.xhr() method unless `videojs.Vhs.xhr` has been overriden\n // TODO: switch back to videojs.Vhs.xhr.name === 'XhrFunction' when we drop IE11\n\n const xhrMethod = videojs.Vhs.xhr.original === true ? videojs.xhr : videojs.Vhs.xhr; // call all registered onRequest hooks, assign new options.\n\n const beforeRequestOptions = callAllRequestHooks(_requestCallbackSet, options); // Remove the beforeRequest function from the hooks set so stale beforeRequest functions are not called.\n\n _requestCallbackSet.delete(beforeRequest); // xhrMethod will call XMLHttpRequest.open and XMLHttpRequest.send\n\n const request = xhrMethod(beforeRequestOptions || options, function (error, response) {\n // call all registered onResponse hooks\n callAllResponseHooks(_responseCallbackSet, request, error, response);\n return callbackWrapper(request, error, response, callback);\n });\n const originalAbort = request.abort;\n request.abort = function () {\n request.aborted = true;\n return originalAbort.apply(request, arguments);\n };\n request.uri = options.uri;\n request.requestType = options.requestType;\n request.requestTime = Date.now();\n return request;\n };\n xhr.original = true;\n return xhr;\n};\n/**\n * Turns segment byterange into a string suitable for use in\n * HTTP Range requests\n *\n * @param {Object} byterange - an object with two values defining the start and end\n * of a byte-range\n */\n\nconst byterangeStr = function (byterange) {\n // `byterangeEnd` is one less than `offset + length` because the HTTP range\n // header uses inclusive ranges\n let byterangeEnd;\n const byterangeStart = byterange.offset;\n if (typeof byterange.offset === 'bigint' || typeof byterange.length === 'bigint') {\n byterangeEnd = window$1.BigInt(byterange.offset) + window$1.BigInt(byterange.length) - window$1.BigInt(1);\n } else {\n byterangeEnd = byterange.offset + byterange.length - 1;\n }\n return 'bytes=' + byterangeStart + '-' + byterangeEnd;\n};\n/**\n * Defines headers for use in the xhr request for a particular segment.\n *\n * @param {Object} segment - a simplified copy of the segmentInfo object\n * from SegmentLoader\n */\n\nconst segmentXhrHeaders = function (segment) {\n const headers = {};\n if (segment.byterange) {\n headers.Range = byterangeStr(segment.byterange);\n }\n return headers;\n};\n\n/**\n * @file bin-utils.js\n */\n\n/**\n * convert a TimeRange to text\n *\n * @param {TimeRange} range the timerange to use for conversion\n * @param {number} i the iterator on the range to convert\n * @return {string} the range in string format\n */\n\nconst textRange = function (range, i) {\n return range.start(i) + '-' + range.end(i);\n};\n/**\n * format a number as hex string\n *\n * @param {number} e The number\n * @param {number} i the iterator\n * @return {string} the hex formatted number as a string\n */\n\nconst formatHexString = function (e, i) {\n const value = e.toString(16);\n return '00'.substring(0, 2 - value.length) + value + (i % 2 ? ' ' : '');\n};\nconst formatAsciiString = function (e) {\n if (e >= 0x20 && e < 0x7e) {\n return String.fromCharCode(e);\n }\n return '.';\n};\n/**\n * Creates an object for sending to a web worker modifying properties that are TypedArrays\n * into a new object with seperated properties for the buffer, byteOffset, and byteLength.\n *\n * @param {Object} message\n * Object of properties and values to send to the web worker\n * @return {Object}\n * Modified message with TypedArray values expanded\n * @function createTransferableMessage\n */\n\nconst createTransferableMessage = function (message) {\n const transferable = {};\n Object.keys(message).forEach(key => {\n const value = message[key];\n if (isArrayBufferView(value)) {\n transferable[key] = {\n bytes: value.buffer,\n byteOffset: value.byteOffset,\n byteLength: value.byteLength\n };\n } else {\n transferable[key] = value;\n }\n });\n return transferable;\n};\n/**\n * Returns a unique string identifier for a media initialization\n * segment.\n *\n * @param {Object} initSegment\n * the init segment object.\n *\n * @return {string} the generated init segment id\n */\n\nconst initSegmentId = function (initSegment) {\n const byterange = initSegment.byterange || {\n length: Infinity,\n offset: 0\n };\n return [byterange.length, byterange.offset, initSegment.resolvedUri].join(',');\n};\n/**\n * Returns a unique string identifier for a media segment key.\n *\n * @param {Object} key the encryption key\n * @return {string} the unique id for the media segment key.\n */\n\nconst segmentKeyId = function (key) {\n return key.resolvedUri;\n};\n/**\n * utils to help dump binary data to the console\n *\n * @param {Array|TypedArray} data\n * data to dump to a string\n *\n * @return {string} the data as a hex string.\n */\n\nconst hexDump = data => {\n const bytes = Array.prototype.slice.call(data);\n const step = 16;\n let result = '';\n let hex;\n let ascii;\n for (let j = 0; j < bytes.length / step; j++) {\n hex = bytes.slice(j * step, j * step + step).map(formatHexString).join('');\n ascii = bytes.slice(j * step, j * step + step).map(formatAsciiString).join('');\n result += hex + ' ' + ascii + '\\n';\n }\n return result;\n};\nconst tagDump = ({\n bytes\n}) => hexDump(bytes);\nconst textRanges = ranges => {\n let result = '';\n let i;\n for (i = 0; i < ranges.length; i++) {\n result += textRange(ranges, i) + ' ';\n }\n return result;\n};\nvar utils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n createTransferableMessage: createTransferableMessage,\n initSegmentId: initSegmentId,\n segmentKeyId: segmentKeyId,\n hexDump: hexDump,\n tagDump: tagDump,\n textRanges: textRanges\n});\n\n// TODO handle fmp4 case where the timing info is accurate and doesn't involve transmux\n// 25% was arbitrarily chosen, and may need to be refined over time.\n\nconst SEGMENT_END_FUDGE_PERCENT = 0.25;\n/**\n * Converts a player time (any time that can be gotten/set from player.currentTime(),\n * e.g., any time within player.seekable().start(0) to player.seekable().end(0)) to a\n * program time (any time referencing the real world (e.g., EXT-X-PROGRAM-DATE-TIME)).\n *\n * The containing segment is required as the EXT-X-PROGRAM-DATE-TIME serves as an \"anchor\n * point\" (a point where we have a mapping from program time to player time, with player\n * time being the post transmux start of the segment).\n *\n * For more details, see [this doc](../../docs/program-time-from-player-time.md).\n *\n * @param {number} playerTime the player time\n * @param {Object} segment the segment which contains the player time\n * @return {Date} program time\n */\n\nconst playerTimeToProgramTime = (playerTime, segment) => {\n if (!segment.dateTimeObject) {\n // Can't convert without an \"anchor point\" for the program time (i.e., a time that can\n // be used to map the start of a segment with a real world time).\n return null;\n }\n const transmuxerPrependedSeconds = segment.videoTimingInfo.transmuxerPrependedSeconds;\n const transmuxedStart = segment.videoTimingInfo.transmuxedPresentationStart; // get the start of the content from before old content is prepended\n\n const startOfSegment = transmuxedStart + transmuxerPrependedSeconds;\n const offsetFromSegmentStart = playerTime - startOfSegment;\n return new Date(segment.dateTimeObject.getTime() + offsetFromSegmentStart * 1000);\n};\nconst originalSegmentVideoDuration = videoTimingInfo => {\n return videoTimingInfo.transmuxedPresentationEnd - videoTimingInfo.transmuxedPresentationStart - videoTimingInfo.transmuxerPrependedSeconds;\n};\n/**\n * Finds a segment that contains the time requested given as an ISO-8601 string. The\n * returned segment might be an estimate or an accurate match.\n *\n * @param {string} programTime The ISO-8601 programTime to find a match for\n * @param {Object} playlist A playlist object to search within\n */\n\nconst findSegmentForProgramTime = (programTime, playlist) => {\n // Assumptions:\n // - verifyProgramDateTimeTags has already been run\n // - live streams have been started\n let dateTimeObject;\n try {\n dateTimeObject = new Date(programTime);\n } catch (e) {\n return null;\n }\n if (!playlist || !playlist.segments || playlist.segments.length === 0) {\n return null;\n }\n let segment = playlist.segments[0];\n if (dateTimeObject < new Date(segment.dateTimeObject)) {\n // Requested time is before stream start.\n return null;\n }\n for (let i = 0; i < playlist.segments.length - 1; i++) {\n segment = playlist.segments[i];\n const nextSegmentStart = new Date(playlist.segments[i + 1].dateTimeObject);\n if (dateTimeObject < nextSegmentStart) {\n break;\n }\n }\n const lastSegment = playlist.segments[playlist.segments.length - 1];\n const lastSegmentStart = lastSegment.dateTimeObject;\n const lastSegmentDuration = lastSegment.videoTimingInfo ? originalSegmentVideoDuration(lastSegment.videoTimingInfo) : lastSegment.duration + lastSegment.duration * SEGMENT_END_FUDGE_PERCENT;\n const lastSegmentEnd = new Date(lastSegmentStart.getTime() + lastSegmentDuration * 1000);\n if (dateTimeObject > lastSegmentEnd) {\n // Beyond the end of the stream, or our best guess of the end of the stream.\n return null;\n }\n if (dateTimeObject > new Date(lastSegmentStart)) {\n segment = lastSegment;\n }\n return {\n segment,\n estimatedStart: segment.videoTimingInfo ? segment.videoTimingInfo.transmuxedPresentationStart : Playlist.duration(playlist, playlist.mediaSequence + playlist.segments.indexOf(segment)),\n // Although, given that all segments have accurate date time objects, the segment\n // selected should be accurate, unless the video has been transmuxed at some point\n // (determined by the presence of the videoTimingInfo object), the segment's \"player\n // time\" (the start time in the player) can't be considered accurate.\n type: segment.videoTimingInfo ? 'accurate' : 'estimate'\n };\n};\n/**\n * Finds a segment that contains the given player time(in seconds).\n *\n * @param {number} time The player time to find a match for\n * @param {Object} playlist A playlist object to search within\n */\n\nconst findSegmentForPlayerTime = (time, playlist) => {\n // Assumptions:\n // - there will always be a segment.duration\n // - we can start from zero\n // - segments are in time order\n if (!playlist || !playlist.segments || playlist.segments.length === 0) {\n return null;\n }\n let segmentEnd = 0;\n let segment;\n for (let i = 0; i < playlist.segments.length; i++) {\n segment = playlist.segments[i]; // videoTimingInfo is set after the segment is downloaded and transmuxed, and\n // should contain the most accurate values we have for the segment's player times.\n //\n // Use the accurate transmuxedPresentationEnd value if it is available, otherwise fall\n // back to an estimate based on the manifest derived (inaccurate) segment.duration, to\n // calculate an end value.\n\n segmentEnd = segment.videoTimingInfo ? segment.videoTimingInfo.transmuxedPresentationEnd : segmentEnd + segment.duration;\n if (time <= segmentEnd) {\n break;\n }\n }\n const lastSegment = playlist.segments[playlist.segments.length - 1];\n if (lastSegment.videoTimingInfo && lastSegment.videoTimingInfo.transmuxedPresentationEnd < time) {\n // The time requested is beyond the stream end.\n return null;\n }\n if (time > segmentEnd) {\n // The time is within or beyond the last segment.\n //\n // Check to see if the time is beyond a reasonable guess of the end of the stream.\n if (time > segmentEnd + lastSegment.duration * SEGMENT_END_FUDGE_PERCENT) {\n // Technically, because the duration value is only an estimate, the time may still\n // exist in the last segment, however, there isn't enough information to make even\n // a reasonable estimate.\n return null;\n }\n segment = lastSegment;\n }\n return {\n segment,\n estimatedStart: segment.videoTimingInfo ? segment.videoTimingInfo.transmuxedPresentationStart : segmentEnd - segment.duration,\n // Because videoTimingInfo is only set after transmux, it is the only way to get\n // accurate timing values.\n type: segment.videoTimingInfo ? 'accurate' : 'estimate'\n };\n};\n/**\n * Gives the offset of the comparisonTimestamp from the programTime timestamp in seconds.\n * If the offset returned is positive, the programTime occurs after the\n * comparisonTimestamp.\n * If the offset is negative, the programTime occurs before the comparisonTimestamp.\n *\n * @param {string} comparisonTimeStamp An ISO-8601 timestamp to compare against\n * @param {string} programTime The programTime as an ISO-8601 string\n * @return {number} offset\n */\n\nconst getOffsetFromTimestamp = (comparisonTimeStamp, programTime) => {\n let segmentDateTime;\n let programDateTime;\n try {\n segmentDateTime = new Date(comparisonTimeStamp);\n programDateTime = new Date(programTime);\n } catch (e) {// TODO handle error\n }\n const segmentTimeEpoch = segmentDateTime.getTime();\n const programTimeEpoch = programDateTime.getTime();\n return (programTimeEpoch - segmentTimeEpoch) / 1000;\n};\n/**\n * Checks that all segments in this playlist have programDateTime tags.\n *\n * @param {Object} playlist A playlist object\n */\n\nconst verifyProgramDateTimeTags = playlist => {\n if (!playlist.segments || playlist.segments.length === 0) {\n return false;\n }\n for (let i = 0; i < playlist.segments.length; i++) {\n const segment = playlist.segments[i];\n if (!segment.dateTimeObject) {\n return false;\n }\n }\n return true;\n};\n/**\n * Returns the programTime of the media given a playlist and a playerTime.\n * The playlist must have programDateTime tags for a programDateTime tag to be returned.\n * If the segments containing the time requested have not been buffered yet, an estimate\n * may be returned to the callback.\n *\n * @param {Object} args\n * @param {Object} args.playlist A playlist object to search within\n * @param {number} time A playerTime in seconds\n * @param {Function} callback(err, programTime)\n * @return {string} err.message A detailed error message\n * @return {Object} programTime\n * @return {number} programTime.mediaSeconds The streamTime in seconds\n * @return {string} programTime.programDateTime The programTime as an ISO-8601 String\n */\n\nconst getProgramTime = ({\n playlist,\n time = undefined,\n callback\n}) => {\n if (!callback) {\n throw new Error('getProgramTime: callback must be provided');\n }\n if (!playlist || time === undefined) {\n return callback({\n message: 'getProgramTime: playlist and time must be provided'\n });\n }\n const matchedSegment = findSegmentForPlayerTime(time, playlist);\n if (!matchedSegment) {\n return callback({\n message: 'valid programTime was not found'\n });\n }\n if (matchedSegment.type === 'estimate') {\n return callback({\n message: 'Accurate programTime could not be determined.' + ' Please seek to e.seekTime and try again',\n seekTime: matchedSegment.estimatedStart\n });\n }\n const programTimeObject = {\n mediaSeconds: time\n };\n const programTime = playerTimeToProgramTime(time, matchedSegment.segment);\n if (programTime) {\n programTimeObject.programDateTime = programTime.toISOString();\n }\n return callback(null, programTimeObject);\n};\n/**\n * Seeks in the player to a time that matches the given programTime ISO-8601 string.\n *\n * @param {Object} args\n * @param {string} args.programTime A programTime to seek to as an ISO-8601 String\n * @param {Object} args.playlist A playlist to look within\n * @param {number} args.retryCount The number of times to try for an accurate seek. Default is 2.\n * @param {Function} args.seekTo A method to perform a seek\n * @param {boolean} args.pauseAfterSeek Whether to end in a paused state after seeking. Default is true.\n * @param {Object} args.tech The tech to seek on\n * @param {Function} args.callback(err, newTime) A callback to return the new time to\n * @return {string} err.message A detailed error message\n * @return {number} newTime The exact time that was seeked to in seconds\n */\n\nconst seekToProgramTime = ({\n programTime,\n playlist,\n retryCount = 2,\n seekTo,\n pauseAfterSeek = true,\n tech,\n callback\n}) => {\n if (!callback) {\n throw new Error('seekToProgramTime: callback must be provided');\n }\n if (typeof programTime === 'undefined' || !playlist || !seekTo) {\n return callback({\n message: 'seekToProgramTime: programTime, seekTo and playlist must be provided'\n });\n }\n if (!playlist.endList && !tech.hasStarted_) {\n return callback({\n message: 'player must be playing a live stream to start buffering'\n });\n }\n if (!verifyProgramDateTimeTags(playlist)) {\n return callback({\n message: 'programDateTime tags must be provided in the manifest ' + playlist.resolvedUri\n });\n }\n const matchedSegment = findSegmentForProgramTime(programTime, playlist); // no match\n\n if (!matchedSegment) {\n return callback({\n message: `${programTime} was not found in the stream`\n });\n }\n const segment = matchedSegment.segment;\n const mediaOffset = getOffsetFromTimestamp(segment.dateTimeObject, programTime);\n if (matchedSegment.type === 'estimate') {\n // we've run out of retries\n if (retryCount === 0) {\n return callback({\n message: `${programTime} is not buffered yet. Try again`\n });\n }\n seekTo(matchedSegment.estimatedStart + mediaOffset);\n tech.one('seeked', () => {\n seekToProgramTime({\n programTime,\n playlist,\n retryCount: retryCount - 1,\n seekTo,\n pauseAfterSeek,\n tech,\n callback\n });\n });\n return;\n } // Since the segment.start value is determined from the buffered end or ending time\n // of the prior segment, the seekToTime doesn't need to account for any transmuxer\n // modifications.\n\n const seekToTime = segment.start + mediaOffset;\n const seekedCallback = () => {\n return callback(null, tech.currentTime());\n }; // listen for seeked event\n\n tech.one('seeked', seekedCallback); // pause before seeking as video.js will restore this state\n\n if (pauseAfterSeek) {\n tech.pause();\n }\n seekTo(seekToTime);\n};\n\n// which will only happen if the request is complete.\n\nconst callbackOnCompleted = (request, cb) => {\n if (request.readyState === 4) {\n return cb();\n }\n return;\n};\nconst containerRequest = (uri, xhr, cb, requestType) => {\n let bytes = [];\n let id3Offset;\n let finished = false;\n const endRequestAndCallback = function (err, req, type, _bytes) {\n req.abort();\n finished = true;\n return cb(err, req, type, _bytes);\n };\n const progressListener = function (error, request) {\n if (finished) {\n return;\n }\n if (error) {\n error.metadata = getStreamingNetworkErrorMetadata({\n requestType,\n request,\n error\n });\n return endRequestAndCallback(error, request, '', bytes);\n } // grap the new part of content that was just downloaded\n\n const newPart = request.responseText.substring(bytes && bytes.byteLength || 0, request.responseText.length); // add that onto bytes\n\n bytes = concatTypedArrays(bytes, stringToBytes(newPart, true));\n id3Offset = id3Offset || getId3Offset(bytes); // we need at least 10 bytes to determine a type\n // or we need at least two bytes after an id3Offset\n\n if (bytes.length < 10 || id3Offset && bytes.length < id3Offset + 2) {\n return callbackOnCompleted(request, () => endRequestAndCallback(error, request, '', bytes));\n }\n const type = detectContainerForBytes(bytes); // if this looks like a ts segment but we don't have enough data\n // to see the second sync byte, wait until we have enough data\n // before declaring it ts\n\n if (type === 'ts' && bytes.length < 188) {\n return callbackOnCompleted(request, () => endRequestAndCallback(error, request, '', bytes));\n } // this may be an unsynced ts segment\n // wait for 376 bytes before detecting no container\n\n if (!type && bytes.length < 376) {\n return callbackOnCompleted(request, () => endRequestAndCallback(error, request, '', bytes));\n }\n return endRequestAndCallback(null, request, type, bytes);\n };\n const options = {\n uri,\n beforeSend(request) {\n // this forces the browser to pass the bytes to us unprocessed\n request.overrideMimeType('text/plain; charset=x-user-defined');\n request.addEventListener('progress', function ({\n total,\n loaded\n }) {\n return callbackWrapper(request, null, {\n statusCode: request.status\n }, progressListener);\n });\n }\n };\n const request = xhr(options, function (error, response) {\n return callbackWrapper(request, error, response, progressListener);\n });\n return request;\n};\nconst {\n EventTarget\n} = videojs;\nconst dashPlaylistUnchanged = function (a, b) {\n if (!isPlaylistUnchanged(a, b)) {\n return false;\n } // for dash the above check will often return true in scenarios where\n // the playlist actually has changed because mediaSequence isn't a\n // dash thing, and we often set it to 1. So if the playlists have the same amount\n // of segments we return true.\n // So for dash we need to make sure that the underlying segments are different.\n // if sidx changed then the playlists are different.\n\n if (a.sidx && b.sidx && (a.sidx.offset !== b.sidx.offset || a.sidx.length !== b.sidx.length)) {\n return false;\n } else if (!a.sidx && b.sidx || a.sidx && !b.sidx) {\n return false;\n } // one or the other does not have segments\n // there was a change.\n\n if (a.segments && !b.segments || !a.segments && b.segments) {\n return false;\n } // neither has segments nothing changed\n\n if (!a.segments && !b.segments) {\n return true;\n } // check segments themselves\n\n for (let i = 0; i < a.segments.length; i++) {\n const aSegment = a.segments[i];\n const bSegment = b.segments[i]; // if uris are different between segments there was a change\n\n if (aSegment.uri !== bSegment.uri) {\n return false;\n } // neither segment has a byterange, there will be no byterange change.\n\n if (!aSegment.byterange && !bSegment.byterange) {\n continue;\n }\n const aByterange = aSegment.byterange;\n const bByterange = bSegment.byterange; // if byterange only exists on one of the segments, there was a change.\n\n if (aByterange && !bByterange || !aByterange && bByterange) {\n return false;\n } // if both segments have byterange with different offsets, there was a change.\n\n if (aByterange.offset !== bByterange.offset || aByterange.length !== bByterange.length) {\n return false;\n }\n } // if everything was the same with segments, this is the same playlist.\n\n return true;\n};\n/**\n * Use the representation IDs from the mpd object to create groupIDs, the NAME is set to mandatory representation\n * ID in the parser. This allows for continuous playout across periods with the same representation IDs\n * (continuous periods as defined in DASH-IF 3.2.12). This is assumed in the mpd-parser as well. If we want to support\n * periods without continuous playback this function may need modification as well as the parser.\n */\n\nconst dashGroupId = (type, group, label, playlist) => {\n // If the manifest somehow does not have an ID (non-dash compliant), use the label.\n const playlistId = playlist.attributes.NAME || label;\n return `placeholder-uri-${type}-${group}-${playlistId}`;\n};\n/**\n * Parses the main XML string and updates playlist URI references.\n *\n * @param {Object} config\n * Object of arguments\n * @param {string} config.mainXml\n * The mpd XML\n * @param {string} config.srcUrl\n * The mpd URL\n * @param {Date} config.clientOffset\n * A time difference between server and client\n * @param {Object} config.sidxMapping\n * SIDX mappings for moof/mdat URIs and byte ranges\n * @return {Object}\n * The parsed mpd manifest object\n */\n\nconst parseMainXml = ({\n mainXml,\n srcUrl,\n clientOffset,\n sidxMapping,\n previousManifest\n}) => {\n const manifest = parse(mainXml, {\n manifestUri: srcUrl,\n clientOffset,\n sidxMapping,\n previousManifest\n });\n addPropertiesToMain(manifest, srcUrl, dashGroupId);\n return manifest;\n};\n/**\n * Removes any mediaGroup labels that no longer exist in the newMain\n *\n * @param {Object} update\n * The previous mpd object being updated\n * @param {Object} newMain\n * The new mpd object\n */\n\nconst removeOldMediaGroupLabels = (update, newMain) => {\n forEachMediaGroup(update, (properties, type, group, label) => {\n if (!newMain.mediaGroups[type][group] || !(label in newMain.mediaGroups[type][group])) {\n delete update.mediaGroups[type][group][label];\n }\n });\n};\n/**\n * Returns a new main manifest that is the result of merging an updated main manifest\n * into the original version.\n *\n * @param {Object} oldMain\n * The old parsed mpd object\n * @param {Object} newMain\n * The updated parsed mpd object\n * @return {Object}\n * A new object representing the original main manifest with the updated media\n * playlists merged in\n */\n\nconst updateMain = (oldMain, newMain, sidxMapping) => {\n let noChanges = true;\n let update = merge(oldMain, {\n // These are top level properties that can be updated\n duration: newMain.duration,\n minimumUpdatePeriod: newMain.minimumUpdatePeriod,\n timelineStarts: newMain.timelineStarts\n }); // First update the playlists in playlist list\n\n for (let i = 0; i < newMain.playlists.length; i++) {\n const playlist = newMain.playlists[i];\n if (playlist.sidx) {\n const sidxKey = generateSidxKey(playlist.sidx); // add sidx segments to the playlist if we have all the sidx info already\n\n if (sidxMapping && sidxMapping[sidxKey] && sidxMapping[sidxKey].sidx) {\n addSidxSegmentsToPlaylist(playlist, sidxMapping[sidxKey].sidx, playlist.sidx.resolvedUri);\n }\n }\n const playlistUpdate = updateMain$1(update, playlist, dashPlaylistUnchanged);\n if (playlistUpdate) {\n update = playlistUpdate;\n noChanges = false;\n }\n } // Then update media group playlists\n\n forEachMediaGroup(newMain, (properties, type, group, label) => {\n if (properties.playlists && properties.playlists.length) {\n const id = properties.playlists[0].id;\n const playlistUpdate = updateMain$1(update, properties.playlists[0], dashPlaylistUnchanged);\n if (playlistUpdate) {\n update = playlistUpdate; // add new mediaGroup label if it doesn't exist and assign the new mediaGroup.\n\n if (!(label in update.mediaGroups[type][group])) {\n update.mediaGroups[type][group][label] = properties;\n } // update the playlist reference within media groups\n\n update.mediaGroups[type][group][label].playlists[0] = update.playlists[id];\n noChanges = false;\n }\n }\n }); // remove mediaGroup labels and references that no longer exist in the newMain\n\n removeOldMediaGroupLabels(update, newMain);\n if (newMain.minimumUpdatePeriod !== oldMain.minimumUpdatePeriod) {\n noChanges = false;\n }\n if (noChanges) {\n return null;\n }\n return update;\n}; // SIDX should be equivalent if the URI and byteranges of the SIDX match.\n// If the SIDXs have maps, the two maps should match,\n// both `a` and `b` missing SIDXs is considered matching.\n// If `a` or `b` but not both have a map, they aren't matching.\n\nconst equivalentSidx = (a, b) => {\n const neitherMap = Boolean(!a.map && !b.map);\n const equivalentMap = neitherMap || Boolean(a.map && b.map && a.map.byterange.offset === b.map.byterange.offset && a.map.byterange.length === b.map.byterange.length);\n return equivalentMap && a.uri === b.uri && a.byterange.offset === b.byterange.offset && a.byterange.length === b.byterange.length;\n}; // exported for testing\n\nconst compareSidxEntry = (playlists, oldSidxMapping) => {\n const newSidxMapping = {};\n for (const id in playlists) {\n const playlist = playlists[id];\n const currentSidxInfo = playlist.sidx;\n if (currentSidxInfo) {\n const key = generateSidxKey(currentSidxInfo);\n if (!oldSidxMapping[key]) {\n break;\n }\n const savedSidxInfo = oldSidxMapping[key].sidxInfo;\n if (equivalentSidx(savedSidxInfo, currentSidxInfo)) {\n newSidxMapping[key] = oldSidxMapping[key];\n }\n }\n }\n return newSidxMapping;\n};\n/**\n * A function that filters out changed items as they need to be requested separately.\n *\n * The method is exported for testing\n *\n * @param {Object} main the parsed mpd XML returned via mpd-parser\n * @param {Object} oldSidxMapping the SIDX to compare against\n */\n\nconst filterChangedSidxMappings = (main, oldSidxMapping) => {\n const videoSidx = compareSidxEntry(main.playlists, oldSidxMapping);\n let mediaGroupSidx = videoSidx;\n forEachMediaGroup(main, (properties, mediaType, groupKey, labelKey) => {\n if (properties.playlists && properties.playlists.length) {\n const playlists = properties.playlists;\n mediaGroupSidx = merge(mediaGroupSidx, compareSidxEntry(playlists, oldSidxMapping));\n }\n });\n return mediaGroupSidx;\n};\nclass DashPlaylistLoader extends EventTarget {\n // DashPlaylistLoader must accept either a src url or a playlist because subsequent\n // playlist loader setups from media groups will expect to be able to pass a playlist\n // (since there aren't external URLs to media playlists with DASH)\n constructor(srcUrlOrPlaylist, vhs, options = {}, mainPlaylistLoader) {\n super();\n this.mainPlaylistLoader_ = mainPlaylistLoader || this;\n if (!mainPlaylistLoader) {\n this.isMain_ = true;\n }\n const {\n withCredentials = false\n } = options;\n this.vhs_ = vhs;\n this.withCredentials = withCredentials;\n this.addMetadataToTextTrack = options.addMetadataToTextTrack;\n if (!srcUrlOrPlaylist) {\n throw new Error('A non-empty playlist URL or object is required');\n } // event naming?\n\n this.on('minimumUpdatePeriod', () => {\n this.refreshXml_();\n }); // live playlist staleness timeout\n\n this.on('mediaupdatetimeout', () => {\n this.refreshMedia_(this.media().id);\n });\n this.state = 'HAVE_NOTHING';\n this.loadedPlaylists_ = {};\n this.logger_ = logger('DashPlaylistLoader'); // initialize the loader state\n // The mainPlaylistLoader will be created with a string\n\n if (this.isMain_) {\n this.mainPlaylistLoader_.srcUrl = srcUrlOrPlaylist; // TODO: reset sidxMapping between period changes\n // once multi-period is refactored\n\n this.mainPlaylistLoader_.sidxMapping_ = {};\n } else {\n this.childPlaylist_ = srcUrlOrPlaylist;\n }\n }\n requestErrored_(err, request, startingState) {\n // disposed\n if (!this.request) {\n return true;\n } // pending request is cleared\n\n this.request = null;\n if (err) {\n // use the provided error object or create one\n // based on the request/response\n this.error = typeof err === 'object' && !(err instanceof Error) ? err : {\n status: request.status,\n message: 'DASH request error at URL: ' + request.uri,\n response: request.response,\n // MEDIA_ERR_NETWORK\n code: 2,\n metadata: err.metadata\n };\n if (startingState) {\n this.state = startingState;\n }\n this.trigger('error');\n return true;\n }\n }\n /**\n * Verify that the container of the sidx segment can be parsed\n * and if it can, get and parse that segment.\n */\n\n addSidxSegments_(playlist, startingState, cb) {\n const sidxKey = playlist.sidx && generateSidxKey(playlist.sidx); // playlist lacks sidx or sidx segments were added to this playlist already.\n\n if (!playlist.sidx || !sidxKey || this.mainPlaylistLoader_.sidxMapping_[sidxKey]) {\n // keep this function async\n this.mediaRequest_ = window$1.setTimeout(() => cb(false), 0);\n return;\n } // resolve the segment URL relative to the playlist\n\n const uri = resolveManifestRedirect(playlist.sidx.resolvedUri);\n const fin = (err, request) => {\n if (this.requestErrored_(err, request, startingState)) {\n return;\n }\n const sidxMapping = this.mainPlaylistLoader_.sidxMapping_;\n const {\n requestType\n } = request;\n let sidx;\n try {\n sidx = parseSidx(toUint8(request.response).subarray(8));\n } catch (e) {\n e.metadata = getStreamingNetworkErrorMetadata({\n requestType,\n request,\n parseFailure: true\n }); // sidx parsing failed.\n\n this.requestErrored_(e, request, startingState);\n return;\n }\n sidxMapping[sidxKey] = {\n sidxInfo: playlist.sidx,\n sidx\n };\n addSidxSegmentsToPlaylist(playlist, sidx, playlist.sidx.resolvedUri);\n return cb(true);\n };\n const REQUEST_TYPE = 'dash-sidx';\n this.request = containerRequest(uri, this.vhs_.xhr, (err, request, container, bytes) => {\n if (err) {\n return fin(err, request);\n }\n if (!container || container !== 'mp4') {\n const sidxContainer = container || 'unknown';\n return fin({\n status: request.status,\n message: `Unsupported ${sidxContainer} container type for sidx segment at URL: ${uri}`,\n // response is just bytes in this case\n // but we really don't want to return that.\n response: '',\n playlist,\n internal: true,\n playlistExclusionDuration: Infinity,\n // MEDIA_ERR_NETWORK\n code: 2\n }, request);\n } // if we already downloaded the sidx bytes in the container request, use them\n\n const {\n offset,\n length\n } = playlist.sidx.byterange;\n if (bytes.length >= length + offset) {\n return fin(err, {\n response: bytes.subarray(offset, offset + length),\n status: request.status,\n uri: request.uri\n });\n } // otherwise request sidx bytes\n\n this.request = this.vhs_.xhr({\n uri,\n responseType: 'arraybuffer',\n requestType: 'dash-sidx',\n headers: segmentXhrHeaders({\n byterange: playlist.sidx.byterange\n })\n }, fin);\n }, REQUEST_TYPE);\n }\n dispose() {\n this.trigger('dispose');\n this.stopRequest();\n this.loadedPlaylists_ = {};\n window$1.clearTimeout(this.minimumUpdatePeriodTimeout_);\n window$1.clearTimeout(this.mediaRequest_);\n window$1.clearTimeout(this.mediaUpdateTimeout);\n this.mediaUpdateTimeout = null;\n this.mediaRequest_ = null;\n this.minimumUpdatePeriodTimeout_ = null;\n if (this.mainPlaylistLoader_.createMupOnMedia_) {\n this.off('loadedmetadata', this.mainPlaylistLoader_.createMupOnMedia_);\n this.mainPlaylistLoader_.createMupOnMedia_ = null;\n }\n this.off();\n }\n hasPendingRequest() {\n return this.request || this.mediaRequest_;\n }\n stopRequest() {\n if (this.request) {\n const oldRequest = this.request;\n this.request = null;\n oldRequest.onreadystatechange = null;\n oldRequest.abort();\n }\n }\n media(playlist) {\n // getter\n if (!playlist) {\n return this.media_;\n } // setter\n\n if (this.state === 'HAVE_NOTHING') {\n throw new Error('Cannot switch media playlist from ' + this.state);\n }\n const startingState = this.state; // find the playlist object if the target playlist has been specified by URI\n\n if (typeof playlist === 'string') {\n if (!this.mainPlaylistLoader_.main.playlists[playlist]) {\n throw new Error('Unknown playlist URI: ' + playlist);\n }\n playlist = this.mainPlaylistLoader_.main.playlists[playlist];\n }\n const mediaChange = !this.media_ || playlist.id !== this.media_.id; // switch to previously loaded playlists immediately\n\n if (mediaChange && this.loadedPlaylists_[playlist.id] && this.loadedPlaylists_[playlist.id].endList) {\n this.state = 'HAVE_METADATA';\n this.media_ = playlist; // trigger media change if the active media has been updated\n\n if (mediaChange) {\n this.trigger('mediachanging');\n this.trigger('mediachange');\n }\n return;\n } // switching to the active playlist is a no-op\n\n if (!mediaChange) {\n return;\n } // switching from an already loaded playlist\n\n if (this.media_) {\n this.trigger('mediachanging');\n }\n this.addSidxSegments_(playlist, startingState, sidxChanged => {\n // everything is ready just continue to haveMetadata\n this.haveMetadata({\n startingState,\n playlist\n });\n });\n }\n haveMetadata({\n startingState,\n playlist\n }) {\n this.state = 'HAVE_METADATA';\n this.loadedPlaylists_[playlist.id] = playlist;\n this.mediaRequest_ = null; // This will trigger loadedplaylist\n\n this.refreshMedia_(playlist.id); // fire loadedmetadata the first time a media playlist is loaded\n // to resolve setup of media groups\n\n if (startingState === 'HAVE_MAIN_MANIFEST') {\n this.trigger('loadedmetadata');\n } else {\n // trigger media change if the active media has been updated\n this.trigger('mediachange');\n }\n }\n pause() {\n if (this.mainPlaylistLoader_.createMupOnMedia_) {\n this.off('loadedmetadata', this.mainPlaylistLoader_.createMupOnMedia_);\n this.mainPlaylistLoader_.createMupOnMedia_ = null;\n }\n this.stopRequest();\n window$1.clearTimeout(this.mediaUpdateTimeout);\n this.mediaUpdateTimeout = null;\n if (this.isMain_) {\n window$1.clearTimeout(this.mainPlaylistLoader_.minimumUpdatePeriodTimeout_);\n this.mainPlaylistLoader_.minimumUpdatePeriodTimeout_ = null;\n }\n if (this.state === 'HAVE_NOTHING') {\n // If we pause the loader before any data has been retrieved, its as if we never\n // started, so reset to an unstarted state.\n this.started = false;\n }\n }\n load(isFinalRendition) {\n window$1.clearTimeout(this.mediaUpdateTimeout);\n this.mediaUpdateTimeout = null;\n const media = this.media();\n if (isFinalRendition) {\n const delay = media ? media.targetDuration / 2 * 1000 : 5 * 1000;\n this.mediaUpdateTimeout = window$1.setTimeout(() => this.load(), delay);\n return;\n } // because the playlists are internal to the manifest, load should either load the\n // main manifest, or do nothing but trigger an event\n\n if (!this.started) {\n this.start();\n return;\n }\n if (media && !media.endList) {\n // Check to see if this is the main loader and the MUP was cleared (this happens\n // when the loader was paused). `media` should be set at this point since one is always\n // set during `start()`.\n if (this.isMain_ && !this.minimumUpdatePeriodTimeout_) {\n // Trigger minimumUpdatePeriod to refresh the main manifest\n this.trigger('minimumUpdatePeriod'); // Since there was no prior minimumUpdatePeriodTimeout it should be recreated\n\n this.updateMinimumUpdatePeriodTimeout_();\n }\n this.trigger('mediaupdatetimeout');\n } else {\n this.trigger('loadedplaylist');\n }\n }\n start() {\n this.started = true; // We don't need to request the main manifest again\n // Call this asynchronously to match the xhr request behavior below\n\n if (!this.isMain_) {\n this.mediaRequest_ = window$1.setTimeout(() => this.haveMain_(), 0);\n return;\n }\n this.requestMain_((req, mainChanged) => {\n this.haveMain_();\n if (!this.hasPendingRequest() && !this.media_) {\n this.media(this.mainPlaylistLoader_.main.playlists[0]);\n }\n });\n }\n requestMain_(cb) {\n const metadata = {\n manifestInfo: {\n uri: this.mainPlaylistLoader_.srcUrl\n }\n };\n this.trigger({\n type: 'manifestrequeststart',\n metadata\n });\n this.request = this.vhs_.xhr({\n uri: this.mainPlaylistLoader_.srcUrl,\n withCredentials: this.withCredentials,\n requestType: 'dash-manifest'\n }, (error, req) => {\n if (error) {\n const {\n requestType\n } = req;\n error.metadata = getStreamingNetworkErrorMetadata({\n requestType,\n request: req,\n error\n });\n }\n if (this.requestErrored_(error, req)) {\n if (this.state === 'HAVE_NOTHING') {\n this.started = false;\n }\n return;\n }\n this.trigger({\n type: 'manifestrequestcomplete',\n metadata\n });\n const mainChanged = req.responseText !== this.mainPlaylistLoader_.mainXml_;\n this.mainPlaylistLoader_.mainXml_ = req.responseText;\n if (req.responseHeaders && req.responseHeaders.date) {\n this.mainLoaded_ = Date.parse(req.responseHeaders.date);\n } else {\n this.mainLoaded_ = Date.now();\n }\n this.mainPlaylistLoader_.srcUrl = resolveManifestRedirect(this.mainPlaylistLoader_.srcUrl, req);\n if (mainChanged) {\n this.handleMain_();\n this.syncClientServerClock_(() => {\n return cb(req, mainChanged);\n });\n return;\n }\n return cb(req, mainChanged);\n });\n }\n /**\n * Parses the main xml for UTCTiming node to sync the client clock to the server\n * clock. If the UTCTiming node requires a HEAD or GET request, that request is made.\n *\n * @param {Function} done\n * Function to call when clock sync has completed\n */\n\n syncClientServerClock_(done) {\n const utcTiming = parseUTCTiming(this.mainPlaylistLoader_.mainXml_); // No UTCTiming element found in the mpd. Use Date header from mpd request as the\n // server clock\n\n if (utcTiming === null) {\n this.mainPlaylistLoader_.clientOffset_ = this.mainLoaded_ - Date.now();\n return done();\n }\n if (utcTiming.method === 'DIRECT') {\n this.mainPlaylistLoader_.clientOffset_ = utcTiming.value - Date.now();\n return done();\n }\n this.request = this.vhs_.xhr({\n uri: resolveUrl(this.mainPlaylistLoader_.srcUrl, utcTiming.value),\n method: utcTiming.method,\n withCredentials: this.withCredentials,\n requestType: 'dash-clock-sync'\n }, (error, req) => {\n // disposed\n if (!this.request) {\n return;\n }\n if (error) {\n const {\n requestType\n } = req;\n this.error.metadata = getStreamingNetworkErrorMetadata({\n requestType,\n request: req,\n error\n }); // sync request failed, fall back to using date header from mpd\n // TODO: log warning\n\n this.mainPlaylistLoader_.clientOffset_ = this.mainLoaded_ - Date.now();\n return done();\n }\n let serverTime;\n if (utcTiming.method === 'HEAD') {\n if (!req.responseHeaders || !req.responseHeaders.date) {\n // expected date header not preset, fall back to using date header from mpd\n // TODO: log warning\n serverTime = this.mainLoaded_;\n } else {\n serverTime = Date.parse(req.responseHeaders.date);\n }\n } else {\n serverTime = Date.parse(req.responseText);\n }\n this.mainPlaylistLoader_.clientOffset_ = serverTime - Date.now();\n done();\n });\n }\n haveMain_() {\n this.state = 'HAVE_MAIN_MANIFEST';\n if (this.isMain_) {\n // We have the main playlist at this point, so\n // trigger this to allow PlaylistController\n // to make an initial playlist selection\n this.trigger('loadedplaylist');\n } else if (!this.media_) {\n // no media playlist was specifically selected so select\n // the one the child playlist loader was created with\n this.media(this.childPlaylist_);\n }\n }\n handleMain_() {\n // clear media request\n this.mediaRequest_ = null;\n const oldMain = this.mainPlaylistLoader_.main;\n const metadata = {\n manifestInfo: {\n uri: this.mainPlaylistLoader_.srcUrl\n }\n };\n this.trigger({\n type: 'manifestparsestart',\n metadata\n });\n let newMain;\n try {\n newMain = parseMainXml({\n mainXml: this.mainPlaylistLoader_.mainXml_,\n srcUrl: this.mainPlaylistLoader_.srcUrl,\n clientOffset: this.mainPlaylistLoader_.clientOffset_,\n sidxMapping: this.mainPlaylistLoader_.sidxMapping_,\n previousManifest: oldMain\n });\n } catch (error) {\n this.error = error;\n this.error.metadata = {\n errorType: videojs.Error.StreamingDashManifestParserError,\n error\n };\n this.trigger('error');\n } // if we have an old main to compare the new main against\n\n if (oldMain) {\n newMain = updateMain(oldMain, newMain, this.mainPlaylistLoader_.sidxMapping_);\n } // only update main if we have a new main\n\n this.mainPlaylistLoader_.main = newMain ? newMain : oldMain;\n const location = this.mainPlaylistLoader_.main.locations && this.mainPlaylistLoader_.main.locations[0];\n if (location && location !== this.mainPlaylistLoader_.srcUrl) {\n this.mainPlaylistLoader_.srcUrl = location;\n }\n if (!oldMain || newMain && newMain.minimumUpdatePeriod !== oldMain.minimumUpdatePeriod) {\n this.updateMinimumUpdatePeriodTimeout_();\n }\n this.addEventStreamToMetadataTrack_(newMain);\n if (newMain) {\n const {\n duration,\n endList\n } = newMain;\n const renditions = [];\n newMain.playlists.forEach(playlist => {\n renditions.push({\n id: playlist.id,\n bandwidth: playlist.attributes.BANDWIDTH,\n resolution: playlist.attributes.RESOLUTION,\n codecs: playlist.attributes.CODECS\n });\n });\n const parsedManifest = {\n duration,\n isLive: !endList,\n renditions\n };\n metadata.parsedManifest = parsedManifest;\n this.trigger({\n type: 'manifestparsecomplete',\n metadata\n });\n }\n return Boolean(newMain);\n }\n updateMinimumUpdatePeriodTimeout_() {\n const mpl = this.mainPlaylistLoader_; // cancel any pending creation of mup on media\n // a new one will be added if needed.\n\n if (mpl.createMupOnMedia_) {\n mpl.off('loadedmetadata', mpl.createMupOnMedia_);\n mpl.createMupOnMedia_ = null;\n } // clear any pending timeouts\n\n if (mpl.minimumUpdatePeriodTimeout_) {\n window$1.clearTimeout(mpl.minimumUpdatePeriodTimeout_);\n mpl.minimumUpdatePeriodTimeout_ = null;\n }\n let mup = mpl.main && mpl.main.minimumUpdatePeriod; // If the minimumUpdatePeriod has a value of 0, that indicates that the current\n // MPD has no future validity, so a new one will need to be acquired when new\n // media segments are to be made available. Thus, we use the target duration\n // in this case\n\n if (mup === 0) {\n if (mpl.media()) {\n mup = mpl.media().targetDuration * 1000;\n } else {\n mpl.createMupOnMedia_ = mpl.updateMinimumUpdatePeriodTimeout_;\n mpl.one('loadedmetadata', mpl.createMupOnMedia_);\n }\n } // if minimumUpdatePeriod is invalid or <= zero, which\n // can happen when a live video becomes VOD. skip timeout\n // creation.\n\n if (typeof mup !== 'number' || mup <= 0) {\n if (mup < 0) {\n this.logger_(`found invalid minimumUpdatePeriod of ${mup}, not setting a timeout`);\n }\n return;\n }\n this.createMUPTimeout_(mup);\n }\n createMUPTimeout_(mup) {\n const mpl = this.mainPlaylistLoader_;\n mpl.minimumUpdatePeriodTimeout_ = window$1.setTimeout(() => {\n mpl.minimumUpdatePeriodTimeout_ = null;\n mpl.trigger('minimumUpdatePeriod');\n mpl.createMUPTimeout_(mup);\n }, mup);\n }\n /**\n * Sends request to refresh the main xml and updates the parsed main manifest\n */\n\n refreshXml_() {\n this.requestMain_((req, mainChanged) => {\n if (!mainChanged) {\n return;\n }\n if (this.media_) {\n this.media_ = this.mainPlaylistLoader_.main.playlists[this.media_.id];\n } // This will filter out updated sidx info from the mapping\n\n this.mainPlaylistLoader_.sidxMapping_ = filterChangedSidxMappings(this.mainPlaylistLoader_.main, this.mainPlaylistLoader_.sidxMapping_);\n this.addSidxSegments_(this.media(), this.state, sidxChanged => {\n // TODO: do we need to reload the current playlist?\n this.refreshMedia_(this.media().id);\n });\n });\n }\n /**\n * Refreshes the media playlist by re-parsing the main xml and updating playlist\n * references. If this is an alternate loader, the updated parsed manifest is retrieved\n * from the main loader.\n */\n\n refreshMedia_(mediaID) {\n if (!mediaID) {\n throw new Error('refreshMedia_ must take a media id');\n } // for main we have to reparse the main xml\n // to re-create segments based on current timing values\n // which may change media. We only skip updating the main manifest\n // if this is the first time this.media_ is being set.\n // as main was just parsed in that case.\n\n if (this.media_ && this.isMain_) {\n this.handleMain_();\n }\n const playlists = this.mainPlaylistLoader_.main.playlists;\n const mediaChanged = !this.media_ || this.media_ !== playlists[mediaID];\n if (mediaChanged) {\n this.media_ = playlists[mediaID];\n } else {\n this.trigger('playlistunchanged');\n }\n if (!this.mediaUpdateTimeout) {\n const createMediaUpdateTimeout = () => {\n if (this.media().endList) {\n return;\n }\n this.mediaUpdateTimeout = window$1.setTimeout(() => {\n this.trigger('mediaupdatetimeout');\n createMediaUpdateTimeout();\n }, refreshDelay(this.media(), Boolean(mediaChanged)));\n };\n createMediaUpdateTimeout();\n }\n this.trigger('loadedplaylist');\n }\n /**\n * Takes eventstream data from a parsed DASH manifest and adds it to the metadata text track.\n *\n * @param {manifest} newMain the newly parsed manifest\n */\n\n addEventStreamToMetadataTrack_(newMain) {\n // Only add new event stream metadata if we have a new manifest.\n if (newMain && this.mainPlaylistLoader_.main.eventStream) {\n // convert EventStream to ID3-like data.\n const metadataArray = this.mainPlaylistLoader_.main.eventStream.map(eventStreamNode => {\n return {\n cueTime: eventStreamNode.start,\n frames: [{\n data: eventStreamNode.messageData\n }]\n };\n });\n this.addMetadataToTextTrack('EventStream', metadataArray, this.mainPlaylistLoader_.main.duration);\n }\n }\n /**\n * Returns the key ID set from a playlist\n *\n * @param {playlist} playlist to fetch the key ID set from.\n * @return a Set of 32 digit hex strings that represent the unique keyIds for that playlist.\n */\n\n getKeyIdSet(playlist) {\n if (playlist.contentProtection) {\n const keyIds = new Set();\n for (const keysystem in playlist.contentProtection) {\n const defaultKID = playlist.contentProtection[keysystem].attributes['cenc:default_KID'];\n if (defaultKID) {\n // DASH keyIds are separated by dashes.\n keyIds.add(defaultKID.replace(/-/g, '').toLowerCase());\n }\n }\n return keyIds;\n }\n }\n}\nvar Config = {\n GOAL_BUFFER_LENGTH: 30,\n MAX_GOAL_BUFFER_LENGTH: 60,\n BACK_BUFFER_LENGTH: 30,\n GOAL_BUFFER_LENGTH_RATE: 1,\n // 0.5 MB/s\n INITIAL_BANDWIDTH: 4194304,\n // A fudge factor to apply to advertised playlist bitrates to account for\n // temporary flucations in client bandwidth\n BANDWIDTH_VARIANCE: 1.2,\n // How much of the buffer must be filled before we consider upswitching\n BUFFER_LOW_WATER_LINE: 0,\n MAX_BUFFER_LOW_WATER_LINE: 30,\n // TODO: Remove this when experimentalBufferBasedABR is removed\n EXPERIMENTAL_MAX_BUFFER_LOW_WATER_LINE: 16,\n BUFFER_LOW_WATER_LINE_RATE: 1,\n // If the buffer is greater than the high water line, we won't switch down\n BUFFER_HIGH_WATER_LINE: 30\n};\nconst stringToArrayBuffer = string => {\n const view = new Uint8Array(new ArrayBuffer(string.length));\n for (let i = 0; i < string.length; i++) {\n view[i] = string.charCodeAt(i);\n }\n return view.buffer;\n};\n\n/* global Blob, BlobBuilder, Worker */\n// unify worker interface\nconst browserWorkerPolyFill = function (workerObj) {\n // node only supports on/off\n workerObj.on = workerObj.addEventListener;\n workerObj.off = workerObj.removeEventListener;\n return workerObj;\n};\nconst createObjectURL = function (str) {\n try {\n return URL.createObjectURL(new Blob([str], {\n type: 'application/javascript'\n }));\n } catch (e) {\n const blob = new BlobBuilder();\n blob.append(str);\n return URL.createObjectURL(blob.getBlob());\n }\n};\nconst factory = function (code) {\n return function () {\n const objectUrl = createObjectURL(code);\n const worker = browserWorkerPolyFill(new Worker(objectUrl));\n worker.objURL = objectUrl;\n const terminate = worker.terminate;\n worker.on = worker.addEventListener;\n worker.off = worker.removeEventListener;\n worker.terminate = function () {\n URL.revokeObjectURL(objectUrl);\n return terminate.call(this);\n };\n return worker;\n };\n};\nconst transform = function (code) {\n return `var browserWorkerPolyFill = ${browserWorkerPolyFill.toString()};\\n` + 'browserWorkerPolyFill(self);\\n' + code;\n};\nconst getWorkerString = function (fn) {\n return fn.toString().replace(/^function.+?{/, '').slice(0, -1);\n};\n\n/* rollup-plugin-worker-factory start for worker!/home/runner/work/http-streaming/http-streaming/src/transmuxer-worker.js */\nconst workerCode$1 = transform(getWorkerString(function () {\n var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n /**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n *\n * A lightweight readable stream implemention that handles event dispatching.\n * Objects that inherit from streams should call init in their constructors.\n */\n\n var Stream$8 = function () {\n this.init = function () {\n var listeners = {};\n /**\n * Add a listener for a specified event type.\n * @param type {string} the event name\n * @param listener {function} the callback to be invoked when an event of\n * the specified type occurs\n */\n\n this.on = function (type, listener) {\n if (!listeners[type]) {\n listeners[type] = [];\n }\n listeners[type] = listeners[type].concat(listener);\n };\n /**\n * Remove a listener for a specified event type.\n * @param type {string} the event name\n * @param listener {function} a function previously registered for this\n * type of event through `on`\n */\n\n this.off = function (type, listener) {\n var index;\n if (!listeners[type]) {\n return false;\n }\n index = listeners[type].indexOf(listener);\n listeners[type] = listeners[type].slice();\n listeners[type].splice(index, 1);\n return index > -1;\n };\n /**\n * Trigger an event of the specified type on this stream. Any additional\n * arguments to this function are passed as parameters to event listeners.\n * @param type {string} the event name\n */\n\n this.trigger = function (type) {\n var callbacks, i, length, args;\n callbacks = listeners[type];\n if (!callbacks) {\n return;\n } // Slicing the arguments on every invocation of this method\n // can add a significant amount of overhead. Avoid the\n // intermediate object creation for the common case of a\n // single callback argument\n\n if (arguments.length === 2) {\n length = callbacks.length;\n for (i = 0; i < length; ++i) {\n callbacks[i].call(this, arguments[1]);\n }\n } else {\n args = [];\n i = arguments.length;\n for (i = 1; i < arguments.length; ++i) {\n args.push(arguments[i]);\n }\n length = callbacks.length;\n for (i = 0; i < length; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n };\n /**\n * Destroys the stream and cleans up.\n */\n\n this.dispose = function () {\n listeners = {};\n };\n };\n };\n /**\n * Forwards all `data` events on this stream to the destination stream. The\n * destination stream should provide a method `push` to receive the data\n * events as they arrive.\n * @param destination {stream} the stream that will receive all `data` events\n * @param autoFlush {boolean} if false, we will not call `flush` on the destination\n * when the current stream emits a 'done' event\n * @see http://nodejs.org/api/stream.html#stream_readable_pipe_destination_options\n */\n\n Stream$8.prototype.pipe = function (destination) {\n this.on('data', function (data) {\n destination.push(data);\n });\n this.on('done', function (flushSource) {\n destination.flush(flushSource);\n });\n this.on('partialdone', function (flushSource) {\n destination.partialFlush(flushSource);\n });\n this.on('endedtimeline', function (flushSource) {\n destination.endTimeline(flushSource);\n });\n this.on('reset', function (flushSource) {\n destination.reset(flushSource);\n });\n return destination;\n }; // Default stream functions that are expected to be overridden to perform\n // actual work. These are provided by the prototype as a sort of no-op\n // implementation so that we don't have to check for their existence in the\n // `pipe` function above.\n\n Stream$8.prototype.push = function (data) {\n this.trigger('data', data);\n };\n Stream$8.prototype.flush = function (flushSource) {\n this.trigger('done', flushSource);\n };\n Stream$8.prototype.partialFlush = function (flushSource) {\n this.trigger('partialdone', flushSource);\n };\n Stream$8.prototype.endTimeline = function (flushSource) {\n this.trigger('endedtimeline', flushSource);\n };\n Stream$8.prototype.reset = function (flushSource) {\n this.trigger('reset', flushSource);\n };\n var stream = Stream$8;\n var MAX_UINT32$1 = Math.pow(2, 32);\n var getUint64$3 = function (uint8) {\n var dv = new DataView(uint8.buffer, uint8.byteOffset, uint8.byteLength);\n var value;\n if (dv.getBigUint64) {\n value = dv.getBigUint64(0);\n if (value < Number.MAX_SAFE_INTEGER) {\n return Number(value);\n }\n return value;\n }\n return dv.getUint32(0) * MAX_UINT32$1 + dv.getUint32(4);\n };\n var numbers = {\n getUint64: getUint64$3,\n MAX_UINT32: MAX_UINT32$1\n };\n /**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n *\n * Functions that generate fragmented MP4s suitable for use with Media\n * Source Extensions.\n */\n\n var MAX_UINT32 = numbers.MAX_UINT32;\n var box, dinf, esds, ftyp, mdat, mfhd, minf, moof, moov, mvex, mvhd, trak, tkhd, mdia, mdhd, hdlr, sdtp, stbl, stsd, traf, trex, trun$1, types, MAJOR_BRAND, MINOR_VERSION, AVC1_BRAND, VIDEO_HDLR, AUDIO_HDLR, HDLR_TYPES, VMHD, SMHD, DREF, STCO, STSC, STSZ, STTS; // pre-calculate constants\n\n (function () {\n var i;\n types = {\n avc1: [],\n // codingname\n avcC: [],\n btrt: [],\n dinf: [],\n dref: [],\n esds: [],\n ftyp: [],\n hdlr: [],\n mdat: [],\n mdhd: [],\n mdia: [],\n mfhd: [],\n minf: [],\n moof: [],\n moov: [],\n mp4a: [],\n // codingname\n mvex: [],\n mvhd: [],\n pasp: [],\n sdtp: [],\n smhd: [],\n stbl: [],\n stco: [],\n stsc: [],\n stsd: [],\n stsz: [],\n stts: [],\n styp: [],\n tfdt: [],\n tfhd: [],\n traf: [],\n trak: [],\n trun: [],\n trex: [],\n tkhd: [],\n vmhd: []\n }; // In environments where Uint8Array is undefined (e.g., IE8), skip set up so that we\n // don't throw an error\n\n if (typeof Uint8Array === 'undefined') {\n return;\n }\n for (i in types) {\n if (types.hasOwnProperty(i)) {\n types[i] = [i.charCodeAt(0), i.charCodeAt(1), i.charCodeAt(2), i.charCodeAt(3)];\n }\n }\n MAJOR_BRAND = new Uint8Array(['i'.charCodeAt(0), 's'.charCodeAt(0), 'o'.charCodeAt(0), 'm'.charCodeAt(0)]);\n AVC1_BRAND = new Uint8Array(['a'.charCodeAt(0), 'v'.charCodeAt(0), 'c'.charCodeAt(0), '1'.charCodeAt(0)]);\n MINOR_VERSION = new Uint8Array([0, 0, 0, 1]);\n VIDEO_HDLR = new Uint8Array([0x00,\n // version 0\n 0x00, 0x00, 0x00,\n // flags\n 0x00, 0x00, 0x00, 0x00,\n // pre_defined\n 0x76, 0x69, 0x64, 0x65,\n // handler_type: 'vide'\n 0x00, 0x00, 0x00, 0x00,\n // reserved\n 0x00, 0x00, 0x00, 0x00,\n // reserved\n 0x00, 0x00, 0x00, 0x00,\n // reserved\n 0x56, 0x69, 0x64, 0x65, 0x6f, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x00 // name: 'VideoHandler'\n ]);\n AUDIO_HDLR = new Uint8Array([0x00,\n // version 0\n 0x00, 0x00, 0x00,\n // flags\n 0x00, 0x00, 0x00, 0x00,\n // pre_defined\n 0x73, 0x6f, 0x75, 0x6e,\n // handler_type: 'soun'\n 0x00, 0x00, 0x00, 0x00,\n // reserved\n 0x00, 0x00, 0x00, 0x00,\n // reserved\n 0x00, 0x00, 0x00, 0x00,\n // reserved\n 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x00 // name: 'SoundHandler'\n ]);\n HDLR_TYPES = {\n video: VIDEO_HDLR,\n audio: AUDIO_HDLR\n };\n DREF = new Uint8Array([0x00,\n // version 0\n 0x00, 0x00, 0x00,\n // flags\n 0x00, 0x00, 0x00, 0x01,\n // entry_count\n 0x00, 0x00, 0x00, 0x0c,\n // entry_size\n 0x75, 0x72, 0x6c, 0x20,\n // 'url' type\n 0x00,\n // version 0\n 0x00, 0x00, 0x01 // entry_flags\n ]);\n SMHD = new Uint8Array([0x00,\n // version\n 0x00, 0x00, 0x00,\n // flags\n 0x00, 0x00,\n // balance, 0 means centered\n 0x00, 0x00 // reserved\n ]);\n STCO = new Uint8Array([0x00,\n // version\n 0x00, 0x00, 0x00,\n // flags\n 0x00, 0x00, 0x00, 0x00 // entry_count\n ]);\n STSC = STCO;\n STSZ = new Uint8Array([0x00,\n // version\n 0x00, 0x00, 0x00,\n // flags\n 0x00, 0x00, 0x00, 0x00,\n // sample_size\n 0x00, 0x00, 0x00, 0x00 // sample_count\n ]);\n STTS = STCO;\n VMHD = new Uint8Array([0x00,\n // version\n 0x00, 0x00, 0x01,\n // flags\n 0x00, 0x00,\n // graphicsmode\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // opcolor\n ]);\n })();\n box = function (type) {\n var payload = [],\n size = 0,\n i,\n result,\n view;\n for (i = 1; i < arguments.length; i++) {\n payload.push(arguments[i]);\n }\n i = payload.length; // calculate the total size we need to allocate\n\n while (i--) {\n size += payload[i].byteLength;\n }\n result = new Uint8Array(size + 8);\n view = new DataView(result.buffer, result.byteOffset, result.byteLength);\n view.setUint32(0, result.byteLength);\n result.set(type, 4); // copy the payload into the result\n\n for (i = 0, size = 8; i < payload.length; i++) {\n result.set(payload[i], size);\n size += payload[i].byteLength;\n }\n return result;\n };\n dinf = function () {\n return box(types.dinf, box(types.dref, DREF));\n };\n esds = function (track) {\n return box(types.esds, new Uint8Array([0x00,\n // version\n 0x00, 0x00, 0x00,\n // flags\n // ES_Descriptor\n 0x03,\n // tag, ES_DescrTag\n 0x19,\n // length\n 0x00, 0x00,\n // ES_ID\n 0x00,\n // streamDependenceFlag, URL_flag, reserved, streamPriority\n // DecoderConfigDescriptor\n 0x04,\n // tag, DecoderConfigDescrTag\n 0x11,\n // length\n 0x40,\n // object type\n 0x15,\n // streamType\n 0x00, 0x06, 0x00,\n // bufferSizeDB\n 0x00, 0x00, 0xda, 0xc0,\n // maxBitrate\n 0x00, 0x00, 0xda, 0xc0,\n // avgBitrate\n // DecoderSpecificInfo\n 0x05,\n // tag, DecoderSpecificInfoTag\n 0x02,\n // length\n // ISO/IEC 14496-3, AudioSpecificConfig\n // for samplingFrequencyIndex see ISO/IEC 13818-7:2006, 8.1.3.2.2, Table 35\n track.audioobjecttype << 3 | track.samplingfrequencyindex >>> 1, track.samplingfrequencyindex << 7 | track.channelcount << 3, 0x06, 0x01, 0x02 // GASpecificConfig\n ]));\n };\n ftyp = function () {\n return box(types.ftyp, MAJOR_BRAND, MINOR_VERSION, MAJOR_BRAND, AVC1_BRAND);\n };\n hdlr = function (type) {\n return box(types.hdlr, HDLR_TYPES[type]);\n };\n mdat = function (data) {\n return box(types.mdat, data);\n };\n mdhd = function (track) {\n var result = new Uint8Array([0x00,\n // version 0\n 0x00, 0x00, 0x00,\n // flags\n 0x00, 0x00, 0x00, 0x02,\n // creation_time\n 0x00, 0x00, 0x00, 0x03,\n // modification_time\n 0x00, 0x01, 0x5f, 0x90,\n // timescale, 90,000 \"ticks\" per second\n track.duration >>> 24 & 0xFF, track.duration >>> 16 & 0xFF, track.duration >>> 8 & 0xFF, track.duration & 0xFF,\n // duration\n 0x55, 0xc4,\n // 'und' language (undetermined)\n 0x00, 0x00]); // Use the sample rate from the track metadata, when it is\n // defined. The sample rate can be parsed out of an ADTS header, for\n // instance.\n\n if (track.samplerate) {\n result[12] = track.samplerate >>> 24 & 0xFF;\n result[13] = track.samplerate >>> 16 & 0xFF;\n result[14] = track.samplerate >>> 8 & 0xFF;\n result[15] = track.samplerate & 0xFF;\n }\n return box(types.mdhd, result);\n };\n mdia = function (track) {\n return box(types.mdia, mdhd(track), hdlr(track.type), minf(track));\n };\n mfhd = function (sequenceNumber) {\n return box(types.mfhd, new Uint8Array([0x00, 0x00, 0x00, 0x00,\n // flags\n (sequenceNumber & 0xFF000000) >> 24, (sequenceNumber & 0xFF0000) >> 16, (sequenceNumber & 0xFF00) >> 8, sequenceNumber & 0xFF // sequence_number\n ]));\n };\n minf = function (track) {\n return box(types.minf, track.type === 'video' ? box(types.vmhd, VMHD) : box(types.smhd, SMHD), dinf(), stbl(track));\n };\n moof = function (sequenceNumber, tracks) {\n var trackFragments = [],\n i = tracks.length; // build traf boxes for each track fragment\n\n while (i--) {\n trackFragments[i] = traf(tracks[i]);\n }\n return box.apply(null, [types.moof, mfhd(sequenceNumber)].concat(trackFragments));\n };\n /**\n * Returns a movie box.\n * @param tracks {array} the tracks associated with this movie\n * @see ISO/IEC 14496-12:2012(E), section 8.2.1\n */\n\n moov = function (tracks) {\n var i = tracks.length,\n boxes = [];\n while (i--) {\n boxes[i] = trak(tracks[i]);\n }\n return box.apply(null, [types.moov, mvhd(0xffffffff)].concat(boxes).concat(mvex(tracks)));\n };\n mvex = function (tracks) {\n var i = tracks.length,\n boxes = [];\n while (i--) {\n boxes[i] = trex(tracks[i]);\n }\n return box.apply(null, [types.mvex].concat(boxes));\n };\n mvhd = function (duration) {\n var bytes = new Uint8Array([0x00,\n // version 0\n 0x00, 0x00, 0x00,\n // flags\n 0x00, 0x00, 0x00, 0x01,\n // creation_time\n 0x00, 0x00, 0x00, 0x02,\n // modification_time\n 0x00, 0x01, 0x5f, 0x90,\n // timescale, 90,000 \"ticks\" per second\n (duration & 0xFF000000) >> 24, (duration & 0xFF0000) >> 16, (duration & 0xFF00) >> 8, duration & 0xFF,\n // duration\n 0x00, 0x01, 0x00, 0x00,\n // 1.0 rate\n 0x01, 0x00,\n // 1.0 volume\n 0x00, 0x00,\n // reserved\n 0x00, 0x00, 0x00, 0x00,\n // reserved\n 0x00, 0x00, 0x00, 0x00,\n // reserved\n 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,\n // transformation: unity matrix\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n // pre_defined\n 0xff, 0xff, 0xff, 0xff // next_track_ID\n ]);\n return box(types.mvhd, bytes);\n };\n sdtp = function (track) {\n var samples = track.samples || [],\n bytes = new Uint8Array(4 + samples.length),\n flags,\n i; // leave the full box header (4 bytes) all zero\n // write the sample table\n\n for (i = 0; i < samples.length; i++) {\n flags = samples[i].flags;\n bytes[i + 4] = flags.dependsOn << 4 | flags.isDependedOn << 2 | flags.hasRedundancy;\n }\n return box(types.sdtp, bytes);\n };\n stbl = function (track) {\n return box(types.stbl, stsd(track), box(types.stts, STTS), box(types.stsc, STSC), box(types.stsz, STSZ), box(types.stco, STCO));\n };\n (function () {\n var videoSample, audioSample;\n stsd = function (track) {\n return box(types.stsd, new Uint8Array([0x00,\n // version 0\n 0x00, 0x00, 0x00,\n // flags\n 0x00, 0x00, 0x00, 0x01]), track.type === 'video' ? videoSample(track) : audioSample(track));\n };\n videoSample = function (track) {\n var sps = track.sps || [],\n pps = track.pps || [],\n sequenceParameterSets = [],\n pictureParameterSets = [],\n i,\n avc1Box; // assemble the SPSs\n\n for (i = 0; i < sps.length; i++) {\n sequenceParameterSets.push((sps[i].byteLength & 0xFF00) >>> 8);\n sequenceParameterSets.push(sps[i].byteLength & 0xFF); // sequenceParameterSetLength\n\n sequenceParameterSets = sequenceParameterSets.concat(Array.prototype.slice.call(sps[i])); // SPS\n } // assemble the PPSs\n\n for (i = 0; i < pps.length; i++) {\n pictureParameterSets.push((pps[i].byteLength & 0xFF00) >>> 8);\n pictureParameterSets.push(pps[i].byteLength & 0xFF);\n pictureParameterSets = pictureParameterSets.concat(Array.prototype.slice.call(pps[i]));\n }\n avc1Box = [types.avc1, new Uint8Array([0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n // reserved\n 0x00, 0x01,\n // data_reference_index\n 0x00, 0x00,\n // pre_defined\n 0x00, 0x00,\n // reserved\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n // pre_defined\n (track.width & 0xff00) >> 8, track.width & 0xff,\n // width\n (track.height & 0xff00) >> 8, track.height & 0xff,\n // height\n 0x00, 0x48, 0x00, 0x00,\n // horizresolution\n 0x00, 0x48, 0x00, 0x00,\n // vertresolution\n 0x00, 0x00, 0x00, 0x00,\n // reserved\n 0x00, 0x01,\n // frame_count\n 0x13, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x6a, 0x73, 0x2d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x2d, 0x68, 0x6c, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n // compressorname\n 0x00, 0x18,\n // depth = 24\n 0x11, 0x11 // pre_defined = -1\n ]), box(types.avcC, new Uint8Array([0x01,\n // configurationVersion\n track.profileIdc,\n // AVCProfileIndication\n track.profileCompatibility,\n // profile_compatibility\n track.levelIdc,\n // AVCLevelIndication\n 0xff // lengthSizeMinusOne, hard-coded to 4 bytes\n ].concat([sps.length],\n // numOfSequenceParameterSets\n sequenceParameterSets,\n // \"SPS\"\n [pps.length],\n // numOfPictureParameterSets\n pictureParameterSets // \"PPS\"\n ))), box(types.btrt, new Uint8Array([0x00, 0x1c, 0x9c, 0x80,\n // bufferSizeDB\n 0x00, 0x2d, 0xc6, 0xc0,\n // maxBitrate\n 0x00, 0x2d, 0xc6, 0xc0 // avgBitrate\n ]))];\n if (track.sarRatio) {\n var hSpacing = track.sarRatio[0],\n vSpacing = track.sarRatio[1];\n avc1Box.push(box(types.pasp, new Uint8Array([(hSpacing & 0xFF000000) >> 24, (hSpacing & 0xFF0000) >> 16, (hSpacing & 0xFF00) >> 8, hSpacing & 0xFF, (vSpacing & 0xFF000000) >> 24, (vSpacing & 0xFF0000) >> 16, (vSpacing & 0xFF00) >> 8, vSpacing & 0xFF])));\n }\n return box.apply(null, avc1Box);\n };\n audioSample = function (track) {\n return box(types.mp4a, new Uint8Array([\n // SampleEntry, ISO/IEC 14496-12\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n // reserved\n 0x00, 0x01,\n // data_reference_index\n // AudioSampleEntry, ISO/IEC 14496-12\n 0x00, 0x00, 0x00, 0x00,\n // reserved\n 0x00, 0x00, 0x00, 0x00,\n // reserved\n (track.channelcount & 0xff00) >> 8, track.channelcount & 0xff,\n // channelcount\n (track.samplesize & 0xff00) >> 8, track.samplesize & 0xff,\n // samplesize\n 0x00, 0x00,\n // pre_defined\n 0x00, 0x00,\n // reserved\n (track.samplerate & 0xff00) >> 8, track.samplerate & 0xff, 0x00, 0x00 // samplerate, 16.16\n // MP4AudioSampleEntry, ISO/IEC 14496-14\n ]), esds(track));\n };\n })();\n tkhd = function (track) {\n var result = new Uint8Array([0x00,\n // version 0\n 0x00, 0x00, 0x07,\n // flags\n 0x00, 0x00, 0x00, 0x00,\n // creation_time\n 0x00, 0x00, 0x00, 0x00,\n // modification_time\n (track.id & 0xFF000000) >> 24, (track.id & 0xFF0000) >> 16, (track.id & 0xFF00) >> 8, track.id & 0xFF,\n // track_ID\n 0x00, 0x00, 0x00, 0x00,\n // reserved\n (track.duration & 0xFF000000) >> 24, (track.duration & 0xFF0000) >> 16, (track.duration & 0xFF00) >> 8, track.duration & 0xFF,\n // duration\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n // reserved\n 0x00, 0x00,\n // layer\n 0x00, 0x00,\n // alternate_group\n 0x01, 0x00,\n // non-audio track volume\n 0x00, 0x00,\n // reserved\n 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,\n // transformation: unity matrix\n (track.width & 0xFF00) >> 8, track.width & 0xFF, 0x00, 0x00,\n // width\n (track.height & 0xFF00) >> 8, track.height & 0xFF, 0x00, 0x00 // height\n ]);\n return box(types.tkhd, result);\n };\n /**\n * Generate a track fragment (traf) box. A traf box collects metadata\n * about tracks in a movie fragment (moof) box.\n */\n\n traf = function (track) {\n var trackFragmentHeader, trackFragmentDecodeTime, trackFragmentRun, sampleDependencyTable, dataOffset, upperWordBaseMediaDecodeTime, lowerWordBaseMediaDecodeTime;\n trackFragmentHeader = box(types.tfhd, new Uint8Array([0x00,\n // version 0\n 0x00, 0x00, 0x3a,\n // flags\n (track.id & 0xFF000000) >> 24, (track.id & 0xFF0000) >> 16, (track.id & 0xFF00) >> 8, track.id & 0xFF,\n // track_ID\n 0x00, 0x00, 0x00, 0x01,\n // sample_description_index\n 0x00, 0x00, 0x00, 0x00,\n // default_sample_duration\n 0x00, 0x00, 0x00, 0x00,\n // default_sample_size\n 0x00, 0x00, 0x00, 0x00 // default_sample_flags\n ]));\n upperWordBaseMediaDecodeTime = Math.floor(track.baseMediaDecodeTime / MAX_UINT32);\n lowerWordBaseMediaDecodeTime = Math.floor(track.baseMediaDecodeTime % MAX_UINT32);\n trackFragmentDecodeTime = box(types.tfdt, new Uint8Array([0x01,\n // version 1\n 0x00, 0x00, 0x00,\n // flags\n // baseMediaDecodeTime\n upperWordBaseMediaDecodeTime >>> 24 & 0xFF, upperWordBaseMediaDecodeTime >>> 16 & 0xFF, upperWordBaseMediaDecodeTime >>> 8 & 0xFF, upperWordBaseMediaDecodeTime & 0xFF, lowerWordBaseMediaDecodeTime >>> 24 & 0xFF, lowerWordBaseMediaDecodeTime >>> 16 & 0xFF, lowerWordBaseMediaDecodeTime >>> 8 & 0xFF, lowerWordBaseMediaDecodeTime & 0xFF])); // the data offset specifies the number of bytes from the start of\n // the containing moof to the first payload byte of the associated\n // mdat\n\n dataOffset = 32 +\n // tfhd\n 20 +\n // tfdt\n 8 +\n // traf header\n 16 +\n // mfhd\n 8 +\n // moof header\n 8; // mdat header\n // audio tracks require less metadata\n\n if (track.type === 'audio') {\n trackFragmentRun = trun$1(track, dataOffset);\n return box(types.traf, trackFragmentHeader, trackFragmentDecodeTime, trackFragmentRun);\n } // video tracks should contain an independent and disposable samples\n // box (sdtp)\n // generate one and adjust offsets to match\n\n sampleDependencyTable = sdtp(track);\n trackFragmentRun = trun$1(track, sampleDependencyTable.length + dataOffset);\n return box(types.traf, trackFragmentHeader, trackFragmentDecodeTime, trackFragmentRun, sampleDependencyTable);\n };\n /**\n * Generate a track box.\n * @param track {object} a track definition\n * @return {Uint8Array} the track box\n */\n\n trak = function (track) {\n track.duration = track.duration || 0xffffffff;\n return box(types.trak, tkhd(track), mdia(track));\n };\n trex = function (track) {\n var result = new Uint8Array([0x00,\n // version 0\n 0x00, 0x00, 0x00,\n // flags\n (track.id & 0xFF000000) >> 24, (track.id & 0xFF0000) >> 16, (track.id & 0xFF00) >> 8, track.id & 0xFF,\n // track_ID\n 0x00, 0x00, 0x00, 0x01,\n // default_sample_description_index\n 0x00, 0x00, 0x00, 0x00,\n // default_sample_duration\n 0x00, 0x00, 0x00, 0x00,\n // default_sample_size\n 0x00, 0x01, 0x00, 0x01 // default_sample_flags\n ]); // the last two bytes of default_sample_flags is the sample\n // degradation priority, a hint about the importance of this sample\n // relative to others. Lower the degradation priority for all sample\n // types other than video.\n\n if (track.type !== 'video') {\n result[result.length - 1] = 0x00;\n }\n return box(types.trex, result);\n };\n (function () {\n var audioTrun, videoTrun, trunHeader; // This method assumes all samples are uniform. That is, if a\n // duration is present for the first sample, it will be present for\n // all subsequent samples.\n // see ISO/IEC 14496-12:2012, Section 8.8.8.1\n\n trunHeader = function (samples, offset) {\n var durationPresent = 0,\n sizePresent = 0,\n flagsPresent = 0,\n compositionTimeOffset = 0; // trun flag constants\n\n if (samples.length) {\n if (samples[0].duration !== undefined) {\n durationPresent = 0x1;\n }\n if (samples[0].size !== undefined) {\n sizePresent = 0x2;\n }\n if (samples[0].flags !== undefined) {\n flagsPresent = 0x4;\n }\n if (samples[0].compositionTimeOffset !== undefined) {\n compositionTimeOffset = 0x8;\n }\n }\n return [0x00,\n // version 0\n 0x00, durationPresent | sizePresent | flagsPresent | compositionTimeOffset, 0x01,\n // flags\n (samples.length & 0xFF000000) >>> 24, (samples.length & 0xFF0000) >>> 16, (samples.length & 0xFF00) >>> 8, samples.length & 0xFF,\n // sample_count\n (offset & 0xFF000000) >>> 24, (offset & 0xFF0000) >>> 16, (offset & 0xFF00) >>> 8, offset & 0xFF // data_offset\n ];\n };\n videoTrun = function (track, offset) {\n var bytesOffest, bytes, header, samples, sample, i;\n samples = track.samples || [];\n offset += 8 + 12 + 16 * samples.length;\n header = trunHeader(samples, offset);\n bytes = new Uint8Array(header.length + samples.length * 16);\n bytes.set(header);\n bytesOffest = header.length;\n for (i = 0; i < samples.length; i++) {\n sample = samples[i];\n bytes[bytesOffest++] = (sample.duration & 0xFF000000) >>> 24;\n bytes[bytesOffest++] = (sample.duration & 0xFF0000) >>> 16;\n bytes[bytesOffest++] = (sample.duration & 0xFF00) >>> 8;\n bytes[bytesOffest++] = sample.duration & 0xFF; // sample_duration\n\n bytes[bytesOffest++] = (sample.size & 0xFF000000) >>> 24;\n bytes[bytesOffest++] = (sample.size & 0xFF0000) >>> 16;\n bytes[bytesOffest++] = (sample.size & 0xFF00) >>> 8;\n bytes[bytesOffest++] = sample.size & 0xFF; // sample_size\n\n bytes[bytesOffest++] = sample.flags.isLeading << 2 | sample.flags.dependsOn;\n bytes[bytesOffest++] = sample.flags.isDependedOn << 6 | sample.flags.hasRedundancy << 4 | sample.flags.paddingValue << 1 | sample.flags.isNonSyncSample;\n bytes[bytesOffest++] = sample.flags.degradationPriority & 0xF0 << 8;\n bytes[bytesOffest++] = sample.flags.degradationPriority & 0x0F; // sample_flags\n\n bytes[bytesOffest++] = (sample.compositionTimeOffset & 0xFF000000) >>> 24;\n bytes[bytesOffest++] = (sample.compositionTimeOffset & 0xFF0000) >>> 16;\n bytes[bytesOffest++] = (sample.compositionTimeOffset & 0xFF00) >>> 8;\n bytes[bytesOffest++] = sample.compositionTimeOffset & 0xFF; // sample_composition_time_offset\n }\n return box(types.trun, bytes);\n };\n audioTrun = function (track, offset) {\n var bytes, bytesOffest, header, samples, sample, i;\n samples = track.samples || [];\n offset += 8 + 12 + 8 * samples.length;\n header = trunHeader(samples, offset);\n bytes = new Uint8Array(header.length + samples.length * 8);\n bytes.set(header);\n bytesOffest = header.length;\n for (i = 0; i < samples.length; i++) {\n sample = samples[i];\n bytes[bytesOffest++] = (sample.duration & 0xFF000000) >>> 24;\n bytes[bytesOffest++] = (sample.duration & 0xFF0000) >>> 16;\n bytes[bytesOffest++] = (sample.duration & 0xFF00) >>> 8;\n bytes[bytesOffest++] = sample.duration & 0xFF; // sample_duration\n\n bytes[bytesOffest++] = (sample.size & 0xFF000000) >>> 24;\n bytes[bytesOffest++] = (sample.size & 0xFF0000) >>> 16;\n bytes[bytesOffest++] = (sample.size & 0xFF00) >>> 8;\n bytes[bytesOffest++] = sample.size & 0xFF; // sample_size\n }\n return box(types.trun, bytes);\n };\n trun$1 = function (track, offset) {\n if (track.type === 'audio') {\n return audioTrun(track, offset);\n }\n return videoTrun(track, offset);\n };\n })();\n var mp4Generator = {\n ftyp: ftyp,\n mdat: mdat,\n moof: moof,\n moov: moov,\n initSegment: function (tracks) {\n var fileType = ftyp(),\n movie = moov(tracks),\n result;\n result = new Uint8Array(fileType.byteLength + movie.byteLength);\n result.set(fileType);\n result.set(movie, fileType.byteLength);\n return result;\n }\n };\n /**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n */\n // composed of the nal units that make up that frame\n // Also keep track of cummulative data about the frame from the nal units such\n // as the frame duration, starting pts, etc.\n\n var groupNalsIntoFrames = function (nalUnits) {\n var i,\n currentNal,\n currentFrame = [],\n frames = []; // TODO added for LHLS, make sure this is OK\n\n frames.byteLength = 0;\n frames.nalCount = 0;\n frames.duration = 0;\n currentFrame.byteLength = 0;\n for (i = 0; i < nalUnits.length; i++) {\n currentNal = nalUnits[i]; // Split on 'aud'-type nal units\n\n if (currentNal.nalUnitType === 'access_unit_delimiter_rbsp') {\n // Since the very first nal unit is expected to be an AUD\n // only push to the frames array when currentFrame is not empty\n if (currentFrame.length) {\n currentFrame.duration = currentNal.dts - currentFrame.dts; // TODO added for LHLS, make sure this is OK\n\n frames.byteLength += currentFrame.byteLength;\n frames.nalCount += currentFrame.length;\n frames.duration += currentFrame.duration;\n frames.push(currentFrame);\n }\n currentFrame = [currentNal];\n currentFrame.byteLength = currentNal.data.byteLength;\n currentFrame.pts = currentNal.pts;\n currentFrame.dts = currentNal.dts;\n } else {\n // Specifically flag key frames for ease of use later\n if (currentNal.nalUnitType === 'slice_layer_without_partitioning_rbsp_idr') {\n currentFrame.keyFrame = true;\n }\n currentFrame.duration = currentNal.dts - currentFrame.dts;\n currentFrame.byteLength += currentNal.data.byteLength;\n currentFrame.push(currentNal);\n }\n } // For the last frame, use the duration of the previous frame if we\n // have nothing better to go on\n\n if (frames.length && (!currentFrame.duration || currentFrame.duration <= 0)) {\n currentFrame.duration = frames[frames.length - 1].duration;\n } // Push the final frame\n // TODO added for LHLS, make sure this is OK\n\n frames.byteLength += currentFrame.byteLength;\n frames.nalCount += currentFrame.length;\n frames.duration += currentFrame.duration;\n frames.push(currentFrame);\n return frames;\n }; // Convert an array of frames into an array of Gop with each Gop being composed\n // of the frames that make up that Gop\n // Also keep track of cummulative data about the Gop from the frames such as the\n // Gop duration, starting pts, etc.\n\n var groupFramesIntoGops = function (frames) {\n var i,\n currentFrame,\n currentGop = [],\n gops = []; // We must pre-set some of the values on the Gop since we\n // keep running totals of these values\n\n currentGop.byteLength = 0;\n currentGop.nalCount = 0;\n currentGop.duration = 0;\n currentGop.pts = frames[0].pts;\n currentGop.dts = frames[0].dts; // store some metadata about all the Gops\n\n gops.byteLength = 0;\n gops.nalCount = 0;\n gops.duration = 0;\n gops.pts = frames[0].pts;\n gops.dts = frames[0].dts;\n for (i = 0; i < frames.length; i++) {\n currentFrame = frames[i];\n if (currentFrame.keyFrame) {\n // Since the very first frame is expected to be an keyframe\n // only push to the gops array when currentGop is not empty\n if (currentGop.length) {\n gops.push(currentGop);\n gops.byteLength += currentGop.byteLength;\n gops.nalCount += currentGop.nalCount;\n gops.duration += currentGop.duration;\n }\n currentGop = [currentFrame];\n currentGop.nalCount = currentFrame.length;\n currentGop.byteLength = currentFrame.byteLength;\n currentGop.pts = currentFrame.pts;\n currentGop.dts = currentFrame.dts;\n currentGop.duration = currentFrame.duration;\n } else {\n currentGop.duration += currentFrame.duration;\n currentGop.nalCount += currentFrame.length;\n currentGop.byteLength += currentFrame.byteLength;\n currentGop.push(currentFrame);\n }\n }\n if (gops.length && currentGop.duration <= 0) {\n currentGop.duration = gops[gops.length - 1].duration;\n }\n gops.byteLength += currentGop.byteLength;\n gops.nalCount += currentGop.nalCount;\n gops.duration += currentGop.duration; // push the final Gop\n\n gops.push(currentGop);\n return gops;\n };\n /*\n * Search for the first keyframe in the GOPs and throw away all frames\n * until that keyframe. Then extend the duration of the pulled keyframe\n * and pull the PTS and DTS of the keyframe so that it covers the time\n * range of the frames that were disposed.\n *\n * @param {Array} gops video GOPs\n * @returns {Array} modified video GOPs\n */\n\n var extendFirstKeyFrame = function (gops) {\n var currentGop;\n if (!gops[0][0].keyFrame && gops.length > 1) {\n // Remove the first GOP\n currentGop = gops.shift();\n gops.byteLength -= currentGop.byteLength;\n gops.nalCount -= currentGop.nalCount; // Extend the first frame of what is now the\n // first gop to cover the time period of the\n // frames we just removed\n\n gops[0][0].dts = currentGop.dts;\n gops[0][0].pts = currentGop.pts;\n gops[0][0].duration += currentGop.duration;\n }\n return gops;\n };\n /**\n * Default sample object\n * see ISO/IEC 14496-12:2012, section 8.6.4.3\n */\n\n var createDefaultSample = function () {\n return {\n size: 0,\n flags: {\n isLeading: 0,\n dependsOn: 1,\n isDependedOn: 0,\n hasRedundancy: 0,\n degradationPriority: 0,\n isNonSyncSample: 1\n }\n };\n };\n /*\n * Collates information from a video frame into an object for eventual\n * entry into an MP4 sample table.\n *\n * @param {Object} frame the video frame\n * @param {Number} dataOffset the byte offset to position the sample\n * @return {Object} object containing sample table info for a frame\n */\n\n var sampleForFrame = function (frame, dataOffset) {\n var sample = createDefaultSample();\n sample.dataOffset = dataOffset;\n sample.compositionTimeOffset = frame.pts - frame.dts;\n sample.duration = frame.duration;\n sample.size = 4 * frame.length; // Space for nal unit size\n\n sample.size += frame.byteLength;\n if (frame.keyFrame) {\n sample.flags.dependsOn = 2;\n sample.flags.isNonSyncSample = 0;\n }\n return sample;\n }; // generate the track's sample table from an array of gops\n\n var generateSampleTable$1 = function (gops, baseDataOffset) {\n var h,\n i,\n sample,\n currentGop,\n currentFrame,\n dataOffset = baseDataOffset || 0,\n samples = [];\n for (h = 0; h < gops.length; h++) {\n currentGop = gops[h];\n for (i = 0; i < currentGop.length; i++) {\n currentFrame = currentGop[i];\n sample = sampleForFrame(currentFrame, dataOffset);\n dataOffset += sample.size;\n samples.push(sample);\n }\n }\n return samples;\n }; // generate the track's raw mdat data from an array of gops\n\n var concatenateNalData = function (gops) {\n var h,\n i,\n j,\n currentGop,\n currentFrame,\n currentNal,\n dataOffset = 0,\n nalsByteLength = gops.byteLength,\n numberOfNals = gops.nalCount,\n totalByteLength = nalsByteLength + 4 * numberOfNals,\n data = new Uint8Array(totalByteLength),\n view = new DataView(data.buffer); // For each Gop..\n\n for (h = 0; h < gops.length; h++) {\n currentGop = gops[h]; // For each Frame..\n\n for (i = 0; i < currentGop.length; i++) {\n currentFrame = currentGop[i]; // For each NAL..\n\n for (j = 0; j < currentFrame.length; j++) {\n currentNal = currentFrame[j];\n view.setUint32(dataOffset, currentNal.data.byteLength);\n dataOffset += 4;\n data.set(currentNal.data, dataOffset);\n dataOffset += currentNal.data.byteLength;\n }\n }\n }\n return data;\n }; // generate the track's sample table from a frame\n\n var generateSampleTableForFrame = function (frame, baseDataOffset) {\n var sample,\n dataOffset = baseDataOffset || 0,\n samples = [];\n sample = sampleForFrame(frame, dataOffset);\n samples.push(sample);\n return samples;\n }; // generate the track's raw mdat data from a frame\n\n var concatenateNalDataForFrame = function (frame) {\n var i,\n currentNal,\n dataOffset = 0,\n nalsByteLength = frame.byteLength,\n numberOfNals = frame.length,\n totalByteLength = nalsByteLength + 4 * numberOfNals,\n data = new Uint8Array(totalByteLength),\n view = new DataView(data.buffer); // For each NAL..\n\n for (i = 0; i < frame.length; i++) {\n currentNal = frame[i];\n view.setUint32(dataOffset, currentNal.data.byteLength);\n dataOffset += 4;\n data.set(currentNal.data, dataOffset);\n dataOffset += currentNal.data.byteLength;\n }\n return data;\n };\n var frameUtils$1 = {\n groupNalsIntoFrames: groupNalsIntoFrames,\n groupFramesIntoGops: groupFramesIntoGops,\n extendFirstKeyFrame: extendFirstKeyFrame,\n generateSampleTable: generateSampleTable$1,\n concatenateNalData: concatenateNalData,\n generateSampleTableForFrame: generateSampleTableForFrame,\n concatenateNalDataForFrame: concatenateNalDataForFrame\n };\n /**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n */\n\n var highPrefix = [33, 16, 5, 32, 164, 27];\n var lowPrefix = [33, 65, 108, 84, 1, 2, 4, 8, 168, 2, 4, 8, 17, 191, 252];\n var zeroFill = function (count) {\n var a = [];\n while (count--) {\n a.push(0);\n }\n return a;\n };\n var makeTable = function (metaTable) {\n return Object.keys(metaTable).reduce(function (obj, key) {\n obj[key] = new Uint8Array(metaTable[key].reduce(function (arr, part) {\n return arr.concat(part);\n }, []));\n return obj;\n }, {});\n };\n var silence;\n var silence_1 = function () {\n if (!silence) {\n // Frames-of-silence to use for filling in missing AAC frames\n var coneOfSilence = {\n 96000: [highPrefix, [227, 64], zeroFill(154), [56]],\n 88200: [highPrefix, [231], zeroFill(170), [56]],\n 64000: [highPrefix, [248, 192], zeroFill(240), [56]],\n 48000: [highPrefix, [255, 192], zeroFill(268), [55, 148, 128], zeroFill(54), [112]],\n 44100: [highPrefix, [255, 192], zeroFill(268), [55, 163, 128], zeroFill(84), [112]],\n 32000: [highPrefix, [255, 192], zeroFill(268), [55, 234], zeroFill(226), [112]],\n 24000: [highPrefix, [255, 192], zeroFill(268), [55, 255, 128], zeroFill(268), [111, 112], zeroFill(126), [224]],\n 16000: [highPrefix, [255, 192], zeroFill(268), [55, 255, 128], zeroFill(268), [111, 255], zeroFill(269), [223, 108], zeroFill(195), [1, 192]],\n 12000: [lowPrefix, zeroFill(268), [3, 127, 248], zeroFill(268), [6, 255, 240], zeroFill(268), [13, 255, 224], zeroFill(268), [27, 253, 128], zeroFill(259), [56]],\n 11025: [lowPrefix, zeroFill(268), [3, 127, 248], zeroFill(268), [6, 255, 240], zeroFill(268), [13, 255, 224], zeroFill(268), [27, 255, 192], zeroFill(268), [55, 175, 128], zeroFill(108), [112]],\n 8000: [lowPrefix, zeroFill(268), [3, 121, 16], zeroFill(47), [7]]\n };\n silence = makeTable(coneOfSilence);\n }\n return silence;\n };\n /**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n */\n\n var ONE_SECOND_IN_TS$4 = 90000,\n // 90kHz clock\n secondsToVideoTs,\n secondsToAudioTs,\n videoTsToSeconds,\n audioTsToSeconds,\n audioTsToVideoTs,\n videoTsToAudioTs,\n metadataTsToSeconds;\n secondsToVideoTs = function (seconds) {\n return seconds * ONE_SECOND_IN_TS$4;\n };\n secondsToAudioTs = function (seconds, sampleRate) {\n return seconds * sampleRate;\n };\n videoTsToSeconds = function (timestamp) {\n return timestamp / ONE_SECOND_IN_TS$4;\n };\n audioTsToSeconds = function (timestamp, sampleRate) {\n return timestamp / sampleRate;\n };\n audioTsToVideoTs = function (timestamp, sampleRate) {\n return secondsToVideoTs(audioTsToSeconds(timestamp, sampleRate));\n };\n videoTsToAudioTs = function (timestamp, sampleRate) {\n return secondsToAudioTs(videoTsToSeconds(timestamp), sampleRate);\n };\n /**\n * Adjust ID3 tag or caption timing information by the timeline pts values\n * (if keepOriginalTimestamps is false) and convert to seconds\n */\n\n metadataTsToSeconds = function (timestamp, timelineStartPts, keepOriginalTimestamps) {\n return videoTsToSeconds(keepOriginalTimestamps ? timestamp : timestamp - timelineStartPts);\n };\n var clock$2 = {\n ONE_SECOND_IN_TS: ONE_SECOND_IN_TS$4,\n secondsToVideoTs: secondsToVideoTs,\n secondsToAudioTs: secondsToAudioTs,\n videoTsToSeconds: videoTsToSeconds,\n audioTsToSeconds: audioTsToSeconds,\n audioTsToVideoTs: audioTsToVideoTs,\n videoTsToAudioTs: videoTsToAudioTs,\n metadataTsToSeconds: metadataTsToSeconds\n };\n /**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n */\n\n var coneOfSilence = silence_1;\n var clock$1 = clock$2;\n /**\n * Sum the `byteLength` properties of the data in each AAC frame\n */\n\n var sumFrameByteLengths = function (array) {\n var i,\n currentObj,\n sum = 0; // sum the byteLength's all each nal unit in the frame\n\n for (i = 0; i < array.length; i++) {\n currentObj = array[i];\n sum += currentObj.data.byteLength;\n }\n return sum;\n }; // Possibly pad (prefix) the audio track with silence if appending this track\n // would lead to the introduction of a gap in the audio buffer\n\n var prefixWithSilence = function (track, frames, audioAppendStartTs, videoBaseMediaDecodeTime) {\n var baseMediaDecodeTimeTs,\n frameDuration = 0,\n audioGapDuration = 0,\n audioFillFrameCount = 0,\n audioFillDuration = 0,\n silentFrame,\n i,\n firstFrame;\n if (!frames.length) {\n return;\n }\n baseMediaDecodeTimeTs = clock$1.audioTsToVideoTs(track.baseMediaDecodeTime, track.samplerate); // determine frame clock duration based on sample rate, round up to avoid overfills\n\n frameDuration = Math.ceil(clock$1.ONE_SECOND_IN_TS / (track.samplerate / 1024));\n if (audioAppendStartTs && videoBaseMediaDecodeTime) {\n // insert the shortest possible amount (audio gap or audio to video gap)\n audioGapDuration = baseMediaDecodeTimeTs - Math.max(audioAppendStartTs, videoBaseMediaDecodeTime); // number of full frames in the audio gap\n\n audioFillFrameCount = Math.floor(audioGapDuration / frameDuration);\n audioFillDuration = audioFillFrameCount * frameDuration;\n } // don't attempt to fill gaps smaller than a single frame or larger\n // than a half second\n\n if (audioFillFrameCount < 1 || audioFillDuration > clock$1.ONE_SECOND_IN_TS / 2) {\n return;\n }\n silentFrame = coneOfSilence()[track.samplerate];\n if (!silentFrame) {\n // we don't have a silent frame pregenerated for the sample rate, so use a frame\n // from the content instead\n silentFrame = frames[0].data;\n }\n for (i = 0; i < audioFillFrameCount; i++) {\n firstFrame = frames[0];\n frames.splice(0, 0, {\n data: silentFrame,\n dts: firstFrame.dts - frameDuration,\n pts: firstFrame.pts - frameDuration\n });\n }\n track.baseMediaDecodeTime -= Math.floor(clock$1.videoTsToAudioTs(audioFillDuration, track.samplerate));\n return audioFillDuration;\n }; // If the audio segment extends before the earliest allowed dts\n // value, remove AAC frames until starts at or after the earliest\n // allowed DTS so that we don't end up with a negative baseMedia-\n // DecodeTime for the audio track\n\n var trimAdtsFramesByEarliestDts = function (adtsFrames, track, earliestAllowedDts) {\n if (track.minSegmentDts >= earliestAllowedDts) {\n return adtsFrames;\n } // We will need to recalculate the earliest segment Dts\n\n track.minSegmentDts = Infinity;\n return adtsFrames.filter(function (currentFrame) {\n // If this is an allowed frame, keep it and record it's Dts\n if (currentFrame.dts >= earliestAllowedDts) {\n track.minSegmentDts = Math.min(track.minSegmentDts, currentFrame.dts);\n track.minSegmentPts = track.minSegmentDts;\n return true;\n } // Otherwise, discard it\n\n return false;\n });\n }; // generate the track's raw mdat data from an array of frames\n\n var generateSampleTable = function (frames) {\n var i,\n currentFrame,\n samples = [];\n for (i = 0; i < frames.length; i++) {\n currentFrame = frames[i];\n samples.push({\n size: currentFrame.data.byteLength,\n duration: 1024 // For AAC audio, all samples contain 1024 samples\n });\n }\n return samples;\n }; // generate the track's sample table from an array of frames\n\n var concatenateFrameData = function (frames) {\n var i,\n currentFrame,\n dataOffset = 0,\n data = new Uint8Array(sumFrameByteLengths(frames));\n for (i = 0; i < frames.length; i++) {\n currentFrame = frames[i];\n data.set(currentFrame.data, dataOffset);\n dataOffset += currentFrame.data.byteLength;\n }\n return data;\n };\n var audioFrameUtils$1 = {\n prefixWithSilence: prefixWithSilence,\n trimAdtsFramesByEarliestDts: trimAdtsFramesByEarliestDts,\n generateSampleTable: generateSampleTable,\n concatenateFrameData: concatenateFrameData\n };\n /**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n */\n\n var ONE_SECOND_IN_TS$3 = clock$2.ONE_SECOND_IN_TS;\n /**\n * Store information about the start and end of the track and the\n * duration for each frame/sample we process in order to calculate\n * the baseMediaDecodeTime\n */\n\n var collectDtsInfo = function (track, data) {\n if (typeof data.pts === 'number') {\n if (track.timelineStartInfo.pts === undefined) {\n track.timelineStartInfo.pts = data.pts;\n }\n if (track.minSegmentPts === undefined) {\n track.minSegmentPts = data.pts;\n } else {\n track.minSegmentPts = Math.min(track.minSegmentPts, data.pts);\n }\n if (track.maxSegmentPts === undefined) {\n track.maxSegmentPts = data.pts;\n } else {\n track.maxSegmentPts = Math.max(track.maxSegmentPts, data.pts);\n }\n }\n if (typeof data.dts === 'number') {\n if (track.timelineStartInfo.dts === undefined) {\n track.timelineStartInfo.dts = data.dts;\n }\n if (track.minSegmentDts === undefined) {\n track.minSegmentDts = data.dts;\n } else {\n track.minSegmentDts = Math.min(track.minSegmentDts, data.dts);\n }\n if (track.maxSegmentDts === undefined) {\n track.maxSegmentDts = data.dts;\n } else {\n track.maxSegmentDts = Math.max(track.maxSegmentDts, data.dts);\n }\n }\n };\n /**\n * Clear values used to calculate the baseMediaDecodeTime between\n * tracks\n */\n\n var clearDtsInfo = function (track) {\n delete track.minSegmentDts;\n delete track.maxSegmentDts;\n delete track.minSegmentPts;\n delete track.maxSegmentPts;\n };\n /**\n * Calculate the track's baseMediaDecodeTime based on the earliest\n * DTS the transmuxer has ever seen and the minimum DTS for the\n * current track\n * @param track {object} track metadata configuration\n * @param keepOriginalTimestamps {boolean} If true, keep the timestamps\n * in the source; false to adjust the first segment to start at 0.\n */\n\n var calculateTrackBaseMediaDecodeTime = function (track, keepOriginalTimestamps) {\n var baseMediaDecodeTime,\n scale,\n minSegmentDts = track.minSegmentDts; // Optionally adjust the time so the first segment starts at zero.\n\n if (!keepOriginalTimestamps) {\n minSegmentDts -= track.timelineStartInfo.dts;\n } // track.timelineStartInfo.baseMediaDecodeTime is the location, in time, where\n // we want the start of the first segment to be placed\n\n baseMediaDecodeTime = track.timelineStartInfo.baseMediaDecodeTime; // Add to that the distance this segment is from the very first\n\n baseMediaDecodeTime += minSegmentDts; // baseMediaDecodeTime must not become negative\n\n baseMediaDecodeTime = Math.max(0, baseMediaDecodeTime);\n if (track.type === 'audio') {\n // Audio has a different clock equal to the sampling_rate so we need to\n // scale the PTS values into the clock rate of the track\n scale = track.samplerate / ONE_SECOND_IN_TS$3;\n baseMediaDecodeTime *= scale;\n baseMediaDecodeTime = Math.floor(baseMediaDecodeTime);\n }\n return baseMediaDecodeTime;\n };\n var trackDecodeInfo$1 = {\n clearDtsInfo: clearDtsInfo,\n calculateTrackBaseMediaDecodeTime: calculateTrackBaseMediaDecodeTime,\n collectDtsInfo: collectDtsInfo\n };\n /**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n *\n * Reads in-band caption information from a video elementary\n * stream. Captions must follow the CEA-708 standard for injection\n * into an MPEG-2 transport streams.\n * @see https://en.wikipedia.org/wiki/CEA-708\n * @see https://www.gpo.gov/fdsys/pkg/CFR-2007-title47-vol1/pdf/CFR-2007-title47-vol1-sec15-119.pdf\n */\n // payload type field to indicate how they are to be\n // interpreted. CEAS-708 caption content is always transmitted with\n // payload type 0x04.\n\n var USER_DATA_REGISTERED_ITU_T_T35 = 4,\n RBSP_TRAILING_BITS = 128;\n /**\n * Parse a supplemental enhancement information (SEI) NAL unit.\n * Stops parsing once a message of type ITU T T35 has been found.\n *\n * @param bytes {Uint8Array} the bytes of a SEI NAL unit\n * @return {object} the parsed SEI payload\n * @see Rec. ITU-T H.264, 7.3.2.3.1\n */\n\n var parseSei = function (bytes) {\n var i = 0,\n result = {\n payloadType: -1,\n payloadSize: 0\n },\n payloadType = 0,\n payloadSize = 0; // go through the sei_rbsp parsing each each individual sei_message\n\n while (i < bytes.byteLength) {\n // stop once we have hit the end of the sei_rbsp\n if (bytes[i] === RBSP_TRAILING_BITS) {\n break;\n } // Parse payload type\n\n while (bytes[i] === 0xFF) {\n payloadType += 255;\n i++;\n }\n payloadType += bytes[i++]; // Parse payload size\n\n while (bytes[i] === 0xFF) {\n payloadSize += 255;\n i++;\n }\n payloadSize += bytes[i++]; // this sei_message is a 608/708 caption so save it and break\n // there can only ever be one caption message in a frame's sei\n\n if (!result.payload && payloadType === USER_DATA_REGISTERED_ITU_T_T35) {\n var userIdentifier = String.fromCharCode(bytes[i + 3], bytes[i + 4], bytes[i + 5], bytes[i + 6]);\n if (userIdentifier === 'GA94') {\n result.payloadType = payloadType;\n result.payloadSize = payloadSize;\n result.payload = bytes.subarray(i, i + payloadSize);\n break;\n } else {\n result.payload = void 0;\n }\n } // skip the payload and parse the next message\n\n i += payloadSize;\n payloadType = 0;\n payloadSize = 0;\n }\n return result;\n }; // see ANSI/SCTE 128-1 (2013), section 8.1\n\n var parseUserData = function (sei) {\n // itu_t_t35_contry_code must be 181 (United States) for\n // captions\n if (sei.payload[0] !== 181) {\n return null;\n } // itu_t_t35_provider_code should be 49 (ATSC) for captions\n\n if ((sei.payload[1] << 8 | sei.payload[2]) !== 49) {\n return null;\n } // the user_identifier should be \"GA94\" to indicate ATSC1 data\n\n if (String.fromCharCode(sei.payload[3], sei.payload[4], sei.payload[5], sei.payload[6]) !== 'GA94') {\n return null;\n } // finally, user_data_type_code should be 0x03 for caption data\n\n if (sei.payload[7] !== 0x03) {\n return null;\n } // return the user_data_type_structure and strip the trailing\n // marker bits\n\n return sei.payload.subarray(8, sei.payload.length - 1);\n }; // see CEA-708-D, section 4.4\n\n var parseCaptionPackets = function (pts, userData) {\n var results = [],\n i,\n count,\n offset,\n data; // if this is just filler, return immediately\n\n if (!(userData[0] & 0x40)) {\n return results;\n } // parse out the cc_data_1 and cc_data_2 fields\n\n count = userData[0] & 0x1f;\n for (i = 0; i < count; i++) {\n offset = i * 3;\n data = {\n type: userData[offset + 2] & 0x03,\n pts: pts\n }; // capture cc data when cc_valid is 1\n\n if (userData[offset + 2] & 0x04) {\n data.ccData = userData[offset + 3] << 8 | userData[offset + 4];\n results.push(data);\n }\n }\n return results;\n };\n var discardEmulationPreventionBytes$1 = function (data) {\n var length = data.byteLength,\n emulationPreventionBytesPositions = [],\n i = 1,\n newLength,\n newData; // Find all `Emulation Prevention Bytes`\n\n while (i < length - 2) {\n if (data[i] === 0 && data[i + 1] === 0 && data[i + 2] === 0x03) {\n emulationPreventionBytesPositions.push(i + 2);\n i += 2;\n } else {\n i++;\n }\n } // If no Emulation Prevention Bytes were found just return the original\n // array\n\n if (emulationPreventionBytesPositions.length === 0) {\n return data;\n } // Create a new array to hold the NAL unit data\n\n newLength = length - emulationPreventionBytesPositions.length;\n newData = new Uint8Array(newLength);\n var sourceIndex = 0;\n for (i = 0; i < newLength; sourceIndex++, i++) {\n if (sourceIndex === emulationPreventionBytesPositions[0]) {\n // Skip this byte\n sourceIndex++; // Remove this position index\n\n emulationPreventionBytesPositions.shift();\n }\n newData[i] = data[sourceIndex];\n }\n return newData;\n }; // exports\n\n var captionPacketParser = {\n parseSei: parseSei,\n parseUserData: parseUserData,\n parseCaptionPackets: parseCaptionPackets,\n discardEmulationPreventionBytes: discardEmulationPreventionBytes$1,\n USER_DATA_REGISTERED_ITU_T_T35: USER_DATA_REGISTERED_ITU_T_T35\n };\n /**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n *\n * Reads in-band caption information from a video elementary\n * stream. Captions must follow the CEA-708 standard for injection\n * into an MPEG-2 transport streams.\n * @see https://en.wikipedia.org/wiki/CEA-708\n * @see https://www.gpo.gov/fdsys/pkg/CFR-2007-title47-vol1/pdf/CFR-2007-title47-vol1-sec15-119.pdf\n */\n // Link To Transport\n // -----------------\n\n var Stream$7 = stream;\n var cea708Parser = captionPacketParser;\n var CaptionStream$2 = function (options) {\n options = options || {};\n CaptionStream$2.prototype.init.call(this); // parse708captions flag, default to true\n\n this.parse708captions_ = typeof options.parse708captions === 'boolean' ? options.parse708captions : true;\n this.captionPackets_ = [];\n this.ccStreams_ = [new Cea608Stream(0, 0),\n // eslint-disable-line no-use-before-define\n new Cea608Stream(0, 1),\n // eslint-disable-line no-use-before-define\n new Cea608Stream(1, 0),\n // eslint-disable-line no-use-before-define\n new Cea608Stream(1, 1) // eslint-disable-line no-use-before-define\n ];\n if (this.parse708captions_) {\n this.cc708Stream_ = new Cea708Stream({\n captionServices: options.captionServices\n }); // eslint-disable-line no-use-before-define\n }\n this.reset(); // forward data and done events from CCs to this CaptionStream\n\n this.ccStreams_.forEach(function (cc) {\n cc.on('data', this.trigger.bind(this, 'data'));\n cc.on('partialdone', this.trigger.bind(this, 'partialdone'));\n cc.on('done', this.trigger.bind(this, 'done'));\n }, this);\n if (this.parse708captions_) {\n this.cc708Stream_.on('data', this.trigger.bind(this, 'data'));\n this.cc708Stream_.on('partialdone', this.trigger.bind(this, 'partialdone'));\n this.cc708Stream_.on('done', this.trigger.bind(this, 'done'));\n }\n };\n CaptionStream$2.prototype = new Stream$7();\n CaptionStream$2.prototype.push = function (event) {\n var sei, userData, newCaptionPackets; // only examine SEI NALs\n\n if (event.nalUnitType !== 'sei_rbsp') {\n return;\n } // parse the sei\n\n sei = cea708Parser.parseSei(event.escapedRBSP); // no payload data, skip\n\n if (!sei.payload) {\n return;\n } // ignore everything but user_data_registered_itu_t_t35\n\n if (sei.payloadType !== cea708Parser.USER_DATA_REGISTERED_ITU_T_T35) {\n return;\n } // parse out the user data payload\n\n userData = cea708Parser.parseUserData(sei); // ignore unrecognized userData\n\n if (!userData) {\n return;\n } // Sometimes, the same segment # will be downloaded twice. To stop the\n // caption data from being processed twice, we track the latest dts we've\n // received and ignore everything with a dts before that. However, since\n // data for a specific dts can be split across packets on either side of\n // a segment boundary, we need to make sure we *don't* ignore the packets\n // from the *next* segment that have dts === this.latestDts_. By constantly\n // tracking the number of packets received with dts === this.latestDts_, we\n // know how many should be ignored once we start receiving duplicates.\n\n if (event.dts < this.latestDts_) {\n // We've started getting older data, so set the flag.\n this.ignoreNextEqualDts_ = true;\n return;\n } else if (event.dts === this.latestDts_ && this.ignoreNextEqualDts_) {\n this.numSameDts_--;\n if (!this.numSameDts_) {\n // We've received the last duplicate packet, time to start processing again\n this.ignoreNextEqualDts_ = false;\n }\n return;\n } // parse out CC data packets and save them for later\n\n newCaptionPackets = cea708Parser.parseCaptionPackets(event.pts, userData);\n this.captionPackets_ = this.captionPackets_.concat(newCaptionPackets);\n if (this.latestDts_ !== event.dts) {\n this.numSameDts_ = 0;\n }\n this.numSameDts_++;\n this.latestDts_ = event.dts;\n };\n CaptionStream$2.prototype.flushCCStreams = function (flushType) {\n this.ccStreams_.forEach(function (cc) {\n return flushType === 'flush' ? cc.flush() : cc.partialFlush();\n }, this);\n };\n CaptionStream$2.prototype.flushStream = function (flushType) {\n // make sure we actually parsed captions before proceeding\n if (!this.captionPackets_.length) {\n this.flushCCStreams(flushType);\n return;\n } // In Chrome, the Array#sort function is not stable so add a\n // presortIndex that we can use to ensure we get a stable-sort\n\n this.captionPackets_.forEach(function (elem, idx) {\n elem.presortIndex = idx;\n }); // sort caption byte-pairs based on their PTS values\n\n this.captionPackets_.sort(function (a, b) {\n if (a.pts === b.pts) {\n return a.presortIndex - b.presortIndex;\n }\n return a.pts - b.pts;\n });\n this.captionPackets_.forEach(function (packet) {\n if (packet.type < 2) {\n // Dispatch packet to the right Cea608Stream\n this.dispatchCea608Packet(packet);\n } else {\n // Dispatch packet to the Cea708Stream\n this.dispatchCea708Packet(packet);\n }\n }, this);\n this.captionPackets_.length = 0;\n this.flushCCStreams(flushType);\n };\n CaptionStream$2.prototype.flush = function () {\n return this.flushStream('flush');\n }; // Only called if handling partial data\n\n CaptionStream$2.prototype.partialFlush = function () {\n return this.flushStream('partialFlush');\n };\n CaptionStream$2.prototype.reset = function () {\n this.latestDts_ = null;\n this.ignoreNextEqualDts_ = false;\n this.numSameDts_ = 0;\n this.activeCea608Channel_ = [null, null];\n this.ccStreams_.forEach(function (ccStream) {\n ccStream.reset();\n });\n }; // From the CEA-608 spec:\n\n /*\n * When XDS sub-packets are interleaved with other services, the end of each sub-packet shall be followed\n * by a control pair to change to a different service. When any of the control codes from 0x10 to 0x1F is\n * used to begin a control code pair, it indicates the return to captioning or Text data. The control code pair\n * and subsequent data should then be processed according to the FCC rules. It may be necessary for the\n * line 21 data encoder to automatically insert a control code pair (i.e. RCL, RU2, RU3, RU4, RDC, or RTD)\n * to switch to captioning or Text.\n */\n // With that in mind, we ignore any data between an XDS control code and a\n // subsequent closed-captioning control code.\n\n CaptionStream$2.prototype.dispatchCea608Packet = function (packet) {\n // NOTE: packet.type is the CEA608 field\n if (this.setsTextOrXDSActive(packet)) {\n this.activeCea608Channel_[packet.type] = null;\n } else if (this.setsChannel1Active(packet)) {\n this.activeCea608Channel_[packet.type] = 0;\n } else if (this.setsChannel2Active(packet)) {\n this.activeCea608Channel_[packet.type] = 1;\n }\n if (this.activeCea608Channel_[packet.type] === null) {\n // If we haven't received anything to set the active channel, or the\n // packets are Text/XDS data, discard the data; we don't want jumbled\n // captions\n return;\n }\n this.ccStreams_[(packet.type << 1) + this.activeCea608Channel_[packet.type]].push(packet);\n };\n CaptionStream$2.prototype.setsChannel1Active = function (packet) {\n return (packet.ccData & 0x7800) === 0x1000;\n };\n CaptionStream$2.prototype.setsChannel2Active = function (packet) {\n return (packet.ccData & 0x7800) === 0x1800;\n };\n CaptionStream$2.prototype.setsTextOrXDSActive = function (packet) {\n return (packet.ccData & 0x7100) === 0x0100 || (packet.ccData & 0x78fe) === 0x102a || (packet.ccData & 0x78fe) === 0x182a;\n };\n CaptionStream$2.prototype.dispatchCea708Packet = function (packet) {\n if (this.parse708captions_) {\n this.cc708Stream_.push(packet);\n }\n }; // ----------------------\n // Session to Application\n // ----------------------\n // This hash maps special and extended character codes to their\n // proper Unicode equivalent. The first one-byte key is just a\n // non-standard character code. The two-byte keys that follow are\n // the extended CEA708 character codes, along with the preceding\n // 0x10 extended character byte to distinguish these codes from\n // non-extended character codes. Every CEA708 character code that\n // is not in this object maps directly to a standard unicode\n // character code.\n // The transparent space and non-breaking transparent space are\n // technically not fully supported since there is no code to\n // make them transparent, so they have normal non-transparent\n // stand-ins.\n // The special closed caption (CC) character isn't a standard\n // unicode character, so a fairly similar unicode character was\n // chosen in it's place.\n\n var CHARACTER_TRANSLATION_708 = {\n 0x7f: 0x266a,\n // ♪\n 0x1020: 0x20,\n // Transparent Space\n 0x1021: 0xa0,\n // Nob-breaking Transparent Space\n 0x1025: 0x2026,\n // …\n 0x102a: 0x0160,\n // Š\n 0x102c: 0x0152,\n // Œ\n 0x1030: 0x2588,\n // █\n 0x1031: 0x2018,\n // ‘\n 0x1032: 0x2019,\n // ’\n 0x1033: 0x201c,\n // “\n 0x1034: 0x201d,\n // ”\n 0x1035: 0x2022,\n // •\n 0x1039: 0x2122,\n // ™\n 0x103a: 0x0161,\n // š\n 0x103c: 0x0153,\n // œ\n 0x103d: 0x2120,\n // ℠\n 0x103f: 0x0178,\n // Ÿ\n 0x1076: 0x215b,\n // ⅛\n 0x1077: 0x215c,\n // ⅜\n 0x1078: 0x215d,\n // ⅝\n 0x1079: 0x215e,\n // ⅞\n 0x107a: 0x23d0,\n // ⏐\n 0x107b: 0x23a4,\n // ⎤\n 0x107c: 0x23a3,\n // ⎣\n 0x107d: 0x23af,\n // ⎯\n 0x107e: 0x23a6,\n // ⎦\n 0x107f: 0x23a1,\n // ⎡\n 0x10a0: 0x3138 // ㄸ (CC char)\n };\n var get708CharFromCode = function (code) {\n var newCode = CHARACTER_TRANSLATION_708[code] || code;\n if (code & 0x1000 && code === newCode) {\n // Invalid extended code\n return '';\n }\n return String.fromCharCode(newCode);\n };\n var within708TextBlock = function (b) {\n return 0x20 <= b && b <= 0x7f || 0xa0 <= b && b <= 0xff;\n };\n var Cea708Window = function (windowNum) {\n this.windowNum = windowNum;\n this.reset();\n };\n Cea708Window.prototype.reset = function () {\n this.clearText();\n this.pendingNewLine = false;\n this.winAttr = {};\n this.penAttr = {};\n this.penLoc = {};\n this.penColor = {}; // These default values are arbitrary,\n // defineWindow will usually override them\n\n this.visible = 0;\n this.rowLock = 0;\n this.columnLock = 0;\n this.priority = 0;\n this.relativePositioning = 0;\n this.anchorVertical = 0;\n this.anchorHorizontal = 0;\n this.anchorPoint = 0;\n this.rowCount = 1;\n this.virtualRowCount = this.rowCount + 1;\n this.columnCount = 41;\n this.windowStyle = 0;\n this.penStyle = 0;\n };\n Cea708Window.prototype.getText = function () {\n return this.rows.join('\\n');\n };\n Cea708Window.prototype.clearText = function () {\n this.rows = [''];\n this.rowIdx = 0;\n };\n Cea708Window.prototype.newLine = function (pts) {\n if (this.rows.length >= this.virtualRowCount && typeof this.beforeRowOverflow === 'function') {\n this.beforeRowOverflow(pts);\n }\n if (this.rows.length > 0) {\n this.rows.push('');\n this.rowIdx++;\n } // Show all virtual rows since there's no visible scrolling\n\n while (this.rows.length > this.virtualRowCount) {\n this.rows.shift();\n this.rowIdx--;\n }\n };\n Cea708Window.prototype.isEmpty = function () {\n if (this.rows.length === 0) {\n return true;\n } else if (this.rows.length === 1) {\n return this.rows[0] === '';\n }\n return false;\n };\n Cea708Window.prototype.addText = function (text) {\n this.rows[this.rowIdx] += text;\n };\n Cea708Window.prototype.backspace = function () {\n if (!this.isEmpty()) {\n var row = this.rows[this.rowIdx];\n this.rows[this.rowIdx] = row.substr(0, row.length - 1);\n }\n };\n var Cea708Service = function (serviceNum, encoding, stream) {\n this.serviceNum = serviceNum;\n this.text = '';\n this.currentWindow = new Cea708Window(-1);\n this.windows = [];\n this.stream = stream; // Try to setup a TextDecoder if an `encoding` value was provided\n\n if (typeof encoding === 'string') {\n this.createTextDecoder(encoding);\n }\n };\n /**\n * Initialize service windows\n * Must be run before service use\n *\n * @param {Integer} pts PTS value\n * @param {Function} beforeRowOverflow Function to execute before row overflow of a window\n */\n\n Cea708Service.prototype.init = function (pts, beforeRowOverflow) {\n this.startPts = pts;\n for (var win = 0; win < 8; win++) {\n this.windows[win] = new Cea708Window(win);\n if (typeof beforeRowOverflow === 'function') {\n this.windows[win].beforeRowOverflow = beforeRowOverflow;\n }\n }\n };\n /**\n * Set current window of service to be affected by commands\n *\n * @param {Integer} windowNum Window number\n */\n\n Cea708Service.prototype.setCurrentWindow = function (windowNum) {\n this.currentWindow = this.windows[windowNum];\n };\n /**\n * Try to create a TextDecoder if it is natively supported\n */\n\n Cea708Service.prototype.createTextDecoder = function (encoding) {\n if (typeof TextDecoder === 'undefined') {\n this.stream.trigger('log', {\n level: 'warn',\n message: 'The `encoding` option is unsupported without TextDecoder support'\n });\n } else {\n try {\n this.textDecoder_ = new TextDecoder(encoding);\n } catch (error) {\n this.stream.trigger('log', {\n level: 'warn',\n message: 'TextDecoder could not be created with ' + encoding + ' encoding. ' + error\n });\n }\n }\n };\n var Cea708Stream = function (options) {\n options = options || {};\n Cea708Stream.prototype.init.call(this);\n var self = this;\n var captionServices = options.captionServices || {};\n var captionServiceEncodings = {};\n var serviceProps; // Get service encodings from captionServices option block\n\n Object.keys(captionServices).forEach(serviceName => {\n serviceProps = captionServices[serviceName];\n if (/^SERVICE/.test(serviceName)) {\n captionServiceEncodings[serviceName] = serviceProps.encoding;\n }\n });\n this.serviceEncodings = captionServiceEncodings;\n this.current708Packet = null;\n this.services = {};\n this.push = function (packet) {\n if (packet.type === 3) {\n // 708 packet start\n self.new708Packet();\n self.add708Bytes(packet);\n } else {\n if (self.current708Packet === null) {\n // This should only happen at the start of a file if there's no packet start.\n self.new708Packet();\n }\n self.add708Bytes(packet);\n }\n };\n };\n Cea708Stream.prototype = new Stream$7();\n /**\n * Push current 708 packet, create new 708 packet.\n */\n\n Cea708Stream.prototype.new708Packet = function () {\n if (this.current708Packet !== null) {\n this.push708Packet();\n }\n this.current708Packet = {\n data: [],\n ptsVals: []\n };\n };\n /**\n * Add pts and both bytes from packet into current 708 packet.\n */\n\n Cea708Stream.prototype.add708Bytes = function (packet) {\n var data = packet.ccData;\n var byte0 = data >>> 8;\n var byte1 = data & 0xff; // I would just keep a list of packets instead of bytes, but it isn't clear in the spec\n // that service blocks will always line up with byte pairs.\n\n this.current708Packet.ptsVals.push(packet.pts);\n this.current708Packet.data.push(byte0);\n this.current708Packet.data.push(byte1);\n };\n /**\n * Parse completed 708 packet into service blocks and push each service block.\n */\n\n Cea708Stream.prototype.push708Packet = function () {\n var packet708 = this.current708Packet;\n var packetData = packet708.data;\n var serviceNum = null;\n var blockSize = null;\n var i = 0;\n var b = packetData[i++];\n packet708.seq = b >> 6;\n packet708.sizeCode = b & 0x3f; // 0b00111111;\n\n for (; i < packetData.length; i++) {\n b = packetData[i++];\n serviceNum = b >> 5;\n blockSize = b & 0x1f; // 0b00011111\n\n if (serviceNum === 7 && blockSize > 0) {\n // Extended service num\n b = packetData[i++];\n serviceNum = b;\n }\n this.pushServiceBlock(serviceNum, i, blockSize);\n if (blockSize > 0) {\n i += blockSize - 1;\n }\n }\n };\n /**\n * Parse service block, execute commands, read text.\n *\n * Note: While many of these commands serve important purposes,\n * many others just parse out the parameters or attributes, but\n * nothing is done with them because this is not a full and complete\n * implementation of the entire 708 spec.\n *\n * @param {Integer} serviceNum Service number\n * @param {Integer} start Start index of the 708 packet data\n * @param {Integer} size Block size\n */\n\n Cea708Stream.prototype.pushServiceBlock = function (serviceNum, start, size) {\n var b;\n var i = start;\n var packetData = this.current708Packet.data;\n var service = this.services[serviceNum];\n if (!service) {\n service = this.initService(serviceNum, i);\n }\n for (; i < start + size && i < packetData.length; i++) {\n b = packetData[i];\n if (within708TextBlock(b)) {\n i = this.handleText(i, service);\n } else if (b === 0x18) {\n i = this.multiByteCharacter(i, service);\n } else if (b === 0x10) {\n i = this.extendedCommands(i, service);\n } else if (0x80 <= b && b <= 0x87) {\n i = this.setCurrentWindow(i, service);\n } else if (0x98 <= b && b <= 0x9f) {\n i = this.defineWindow(i, service);\n } else if (b === 0x88) {\n i = this.clearWindows(i, service);\n } else if (b === 0x8c) {\n i = this.deleteWindows(i, service);\n } else if (b === 0x89) {\n i = this.displayWindows(i, service);\n } else if (b === 0x8a) {\n i = this.hideWindows(i, service);\n } else if (b === 0x8b) {\n i = this.toggleWindows(i, service);\n } else if (b === 0x97) {\n i = this.setWindowAttributes(i, service);\n } else if (b === 0x90) {\n i = this.setPenAttributes(i, service);\n } else if (b === 0x91) {\n i = this.setPenColor(i, service);\n } else if (b === 0x92) {\n i = this.setPenLocation(i, service);\n } else if (b === 0x8f) {\n service = this.reset(i, service);\n } else if (b === 0x08) {\n // BS: Backspace\n service.currentWindow.backspace();\n } else if (b === 0x0c) {\n // FF: Form feed\n service.currentWindow.clearText();\n } else if (b === 0x0d) {\n // CR: Carriage return\n service.currentWindow.pendingNewLine = true;\n } else if (b === 0x0e) {\n // HCR: Horizontal carriage return\n service.currentWindow.clearText();\n } else if (b === 0x8d) {\n // DLY: Delay, nothing to do\n i++;\n } else ;\n }\n };\n /**\n * Execute an extended command\n *\n * @param {Integer} i Current index in the 708 packet\n * @param {Service} service The service object to be affected\n * @return {Integer} New index after parsing\n */\n\n Cea708Stream.prototype.extendedCommands = function (i, service) {\n var packetData = this.current708Packet.data;\n var b = packetData[++i];\n if (within708TextBlock(b)) {\n i = this.handleText(i, service, {\n isExtended: true\n });\n }\n return i;\n };\n /**\n * Get PTS value of a given byte index\n *\n * @param {Integer} byteIndex Index of the byte\n * @return {Integer} PTS\n */\n\n Cea708Stream.prototype.getPts = function (byteIndex) {\n // There's 1 pts value per 2 bytes\n return this.current708Packet.ptsVals[Math.floor(byteIndex / 2)];\n };\n /**\n * Initializes a service\n *\n * @param {Integer} serviceNum Service number\n * @return {Service} Initialized service object\n */\n\n Cea708Stream.prototype.initService = function (serviceNum, i) {\n var serviceName = 'SERVICE' + serviceNum;\n var self = this;\n var serviceName;\n var encoding;\n if (serviceName in this.serviceEncodings) {\n encoding = this.serviceEncodings[serviceName];\n }\n this.services[serviceNum] = new Cea708Service(serviceNum, encoding, self);\n this.services[serviceNum].init(this.getPts(i), function (pts) {\n self.flushDisplayed(pts, self.services[serviceNum]);\n });\n return this.services[serviceNum];\n };\n /**\n * Execute text writing to current window\n *\n * @param {Integer} i Current index in the 708 packet\n * @param {Service} service The service object to be affected\n * @return {Integer} New index after parsing\n */\n\n Cea708Stream.prototype.handleText = function (i, service, options) {\n var isExtended = options && options.isExtended;\n var isMultiByte = options && options.isMultiByte;\n var packetData = this.current708Packet.data;\n var extended = isExtended ? 0x1000 : 0x0000;\n var currentByte = packetData[i];\n var nextByte = packetData[i + 1];\n var win = service.currentWindow;\n var char;\n var charCodeArray; // Converts an array of bytes to a unicode hex string.\n\n function toHexString(byteArray) {\n return byteArray.map(byte => {\n return ('0' + (byte & 0xFF).toString(16)).slice(-2);\n }).join('');\n }\n if (isMultiByte) {\n charCodeArray = [currentByte, nextByte];\n i++;\n } else {\n charCodeArray = [currentByte];\n } // Use the TextDecoder if one was created for this service\n\n if (service.textDecoder_ && !isExtended) {\n char = service.textDecoder_.decode(new Uint8Array(charCodeArray));\n } else {\n // We assume any multi-byte char without a decoder is unicode.\n if (isMultiByte) {\n const unicode = toHexString(charCodeArray); // Takes a unicode hex string and creates a single character.\n\n char = String.fromCharCode(parseInt(unicode, 16));\n } else {\n char = get708CharFromCode(extended | currentByte);\n }\n }\n if (win.pendingNewLine && !win.isEmpty()) {\n win.newLine(this.getPts(i));\n }\n win.pendingNewLine = false;\n win.addText(char);\n return i;\n };\n /**\n * Handle decoding of multibyte character\n *\n * @param {Integer} i Current index in the 708 packet\n * @param {Service} service The service object to be affected\n * @return {Integer} New index after parsing\n */\n\n Cea708Stream.prototype.multiByteCharacter = function (i, service) {\n var packetData = this.current708Packet.data;\n var firstByte = packetData[i + 1];\n var secondByte = packetData[i + 2];\n if (within708TextBlock(firstByte) && within708TextBlock(secondByte)) {\n i = this.handleText(++i, service, {\n isMultiByte: true\n });\n }\n return i;\n };\n /**\n * Parse and execute the CW# command.\n *\n * Set the current window.\n *\n * @param {Integer} i Current index in the 708 packet\n * @param {Service} service The service object to be affected\n * @return {Integer} New index after parsing\n */\n\n Cea708Stream.prototype.setCurrentWindow = function (i, service) {\n var packetData = this.current708Packet.data;\n var b = packetData[i];\n var windowNum = b & 0x07;\n service.setCurrentWindow(windowNum);\n return i;\n };\n /**\n * Parse and execute the DF# command.\n *\n * Define a window and set it as the current window.\n *\n * @param {Integer} i Current index in the 708 packet\n * @param {Service} service The service object to be affected\n * @return {Integer} New index after parsing\n */\n\n Cea708Stream.prototype.defineWindow = function (i, service) {\n var packetData = this.current708Packet.data;\n var b = packetData[i];\n var windowNum = b & 0x07;\n service.setCurrentWindow(windowNum);\n var win = service.currentWindow;\n b = packetData[++i];\n win.visible = (b & 0x20) >> 5; // v\n\n win.rowLock = (b & 0x10) >> 4; // rl\n\n win.columnLock = (b & 0x08) >> 3; // cl\n\n win.priority = b & 0x07; // p\n\n b = packetData[++i];\n win.relativePositioning = (b & 0x80) >> 7; // rp\n\n win.anchorVertical = b & 0x7f; // av\n\n b = packetData[++i];\n win.anchorHorizontal = b; // ah\n\n b = packetData[++i];\n win.anchorPoint = (b & 0xf0) >> 4; // ap\n\n win.rowCount = b & 0x0f; // rc\n\n b = packetData[++i];\n win.columnCount = b & 0x3f; // cc\n\n b = packetData[++i];\n win.windowStyle = (b & 0x38) >> 3; // ws\n\n win.penStyle = b & 0x07; // ps\n // The spec says there are (rowCount+1) \"virtual rows\"\n\n win.virtualRowCount = win.rowCount + 1;\n return i;\n };\n /**\n * Parse and execute the SWA command.\n *\n * Set attributes of the current window.\n *\n * @param {Integer} i Current index in the 708 packet\n * @param {Service} service The service object to be affected\n * @return {Integer} New index after parsing\n */\n\n Cea708Stream.prototype.setWindowAttributes = function (i, service) {\n var packetData = this.current708Packet.data;\n var b = packetData[i];\n var winAttr = service.currentWindow.winAttr;\n b = packetData[++i];\n winAttr.fillOpacity = (b & 0xc0) >> 6; // fo\n\n winAttr.fillRed = (b & 0x30) >> 4; // fr\n\n winAttr.fillGreen = (b & 0x0c) >> 2; // fg\n\n winAttr.fillBlue = b & 0x03; // fb\n\n b = packetData[++i];\n winAttr.borderType = (b & 0xc0) >> 6; // bt\n\n winAttr.borderRed = (b & 0x30) >> 4; // br\n\n winAttr.borderGreen = (b & 0x0c) >> 2; // bg\n\n winAttr.borderBlue = b & 0x03; // bb\n\n b = packetData[++i];\n winAttr.borderType += (b & 0x80) >> 5; // bt\n\n winAttr.wordWrap = (b & 0x40) >> 6; // ww\n\n winAttr.printDirection = (b & 0x30) >> 4; // pd\n\n winAttr.scrollDirection = (b & 0x0c) >> 2; // sd\n\n winAttr.justify = b & 0x03; // j\n\n b = packetData[++i];\n winAttr.effectSpeed = (b & 0xf0) >> 4; // es\n\n winAttr.effectDirection = (b & 0x0c) >> 2; // ed\n\n winAttr.displayEffect = b & 0x03; // de\n\n return i;\n };\n /**\n * Gather text from all displayed windows and push a caption to output.\n *\n * @param {Integer} i Current index in the 708 packet\n * @param {Service} service The service object to be affected\n */\n\n Cea708Stream.prototype.flushDisplayed = function (pts, service) {\n var displayedText = []; // TODO: Positioning not supported, displaying multiple windows will not necessarily\n // display text in the correct order, but sample files so far have not shown any issue.\n\n for (var winId = 0; winId < 8; winId++) {\n if (service.windows[winId].visible && !service.windows[winId].isEmpty()) {\n displayedText.push(service.windows[winId].getText());\n }\n }\n service.endPts = pts;\n service.text = displayedText.join('\\n\\n');\n this.pushCaption(service);\n service.startPts = pts;\n };\n /**\n * Push a caption to output if the caption contains text.\n *\n * @param {Service} service The service object to be affected\n */\n\n Cea708Stream.prototype.pushCaption = function (service) {\n if (service.text !== '') {\n this.trigger('data', {\n startPts: service.startPts,\n endPts: service.endPts,\n text: service.text,\n stream: 'cc708_' + service.serviceNum\n });\n service.text = '';\n service.startPts = service.endPts;\n }\n };\n /**\n * Parse and execute the DSW command.\n *\n * Set visible property of windows based on the parsed bitmask.\n *\n * @param {Integer} i Current index in the 708 packet\n * @param {Service} service The service object to be affected\n * @return {Integer} New index after parsing\n */\n\n Cea708Stream.prototype.displayWindows = function (i, service) {\n var packetData = this.current708Packet.data;\n var b = packetData[++i];\n var pts = this.getPts(i);\n this.flushDisplayed(pts, service);\n for (var winId = 0; winId < 8; winId++) {\n if (b & 0x01 << winId) {\n service.windows[winId].visible = 1;\n }\n }\n return i;\n };\n /**\n * Parse and execute the HDW command.\n *\n * Set visible property of windows based on the parsed bitmask.\n *\n * @param {Integer} i Current index in the 708 packet\n * @param {Service} service The service object to be affected\n * @return {Integer} New index after parsing\n */\n\n Cea708Stream.prototype.hideWindows = function (i, service) {\n var packetData = this.current708Packet.data;\n var b = packetData[++i];\n var pts = this.getPts(i);\n this.flushDisplayed(pts, service);\n for (var winId = 0; winId < 8; winId++) {\n if (b & 0x01 << winId) {\n service.windows[winId].visible = 0;\n }\n }\n return i;\n };\n /**\n * Parse and execute the TGW command.\n *\n * Set visible property of windows based on the parsed bitmask.\n *\n * @param {Integer} i Current index in the 708 packet\n * @param {Service} service The service object to be affected\n * @return {Integer} New index after parsing\n */\n\n Cea708Stream.prototype.toggleWindows = function (i, service) {\n var packetData = this.current708Packet.data;\n var b = packetData[++i];\n var pts = this.getPts(i);\n this.flushDisplayed(pts, service);\n for (var winId = 0; winId < 8; winId++) {\n if (b & 0x01 << winId) {\n service.windows[winId].visible ^= 1;\n }\n }\n return i;\n };\n /**\n * Parse and execute the CLW command.\n *\n * Clear text of windows based on the parsed bitmask.\n *\n * @param {Integer} i Current index in the 708 packet\n * @param {Service} service The service object to be affected\n * @return {Integer} New index after parsing\n */\n\n Cea708Stream.prototype.clearWindows = function (i, service) {\n var packetData = this.current708Packet.data;\n var b = packetData[++i];\n var pts = this.getPts(i);\n this.flushDisplayed(pts, service);\n for (var winId = 0; winId < 8; winId++) {\n if (b & 0x01 << winId) {\n service.windows[winId].clearText();\n }\n }\n return i;\n };\n /**\n * Parse and execute the DLW command.\n *\n * Re-initialize windows based on the parsed bitmask.\n *\n * @param {Integer} i Current index in the 708 packet\n * @param {Service} service The service object to be affected\n * @return {Integer} New index after parsing\n */\n\n Cea708Stream.prototype.deleteWindows = function (i, service) {\n var packetData = this.current708Packet.data;\n var b = packetData[++i];\n var pts = this.getPts(i);\n this.flushDisplayed(pts, service);\n for (var winId = 0; winId < 8; winId++) {\n if (b & 0x01 << winId) {\n service.windows[winId].reset();\n }\n }\n return i;\n };\n /**\n * Parse and execute the SPA command.\n *\n * Set pen attributes of the current window.\n *\n * @param {Integer} i Current index in the 708 packet\n * @param {Service} service The service object to be affected\n * @return {Integer} New index after parsing\n */\n\n Cea708Stream.prototype.setPenAttributes = function (i, service) {\n var packetData = this.current708Packet.data;\n var b = packetData[i];\n var penAttr = service.currentWindow.penAttr;\n b = packetData[++i];\n penAttr.textTag = (b & 0xf0) >> 4; // tt\n\n penAttr.offset = (b & 0x0c) >> 2; // o\n\n penAttr.penSize = b & 0x03; // s\n\n b = packetData[++i];\n penAttr.italics = (b & 0x80) >> 7; // i\n\n penAttr.underline = (b & 0x40) >> 6; // u\n\n penAttr.edgeType = (b & 0x38) >> 3; // et\n\n penAttr.fontStyle = b & 0x07; // fs\n\n return i;\n };\n /**\n * Parse and execute the SPC command.\n *\n * Set pen color of the current window.\n *\n * @param {Integer} i Current index in the 708 packet\n * @param {Service} service The service object to be affected\n * @return {Integer} New index after parsing\n */\n\n Cea708Stream.prototype.setPenColor = function (i, service) {\n var packetData = this.current708Packet.data;\n var b = packetData[i];\n var penColor = service.currentWindow.penColor;\n b = packetData[++i];\n penColor.fgOpacity = (b & 0xc0) >> 6; // fo\n\n penColor.fgRed = (b & 0x30) >> 4; // fr\n\n penColor.fgGreen = (b & 0x0c) >> 2; // fg\n\n penColor.fgBlue = b & 0x03; // fb\n\n b = packetData[++i];\n penColor.bgOpacity = (b & 0xc0) >> 6; // bo\n\n penColor.bgRed = (b & 0x30) >> 4; // br\n\n penColor.bgGreen = (b & 0x0c) >> 2; // bg\n\n penColor.bgBlue = b & 0x03; // bb\n\n b = packetData[++i];\n penColor.edgeRed = (b & 0x30) >> 4; // er\n\n penColor.edgeGreen = (b & 0x0c) >> 2; // eg\n\n penColor.edgeBlue = b & 0x03; // eb\n\n return i;\n };\n /**\n * Parse and execute the SPL command.\n *\n * Set pen location of the current window.\n *\n * @param {Integer} i Current index in the 708 packet\n * @param {Service} service The service object to be affected\n * @return {Integer} New index after parsing\n */\n\n Cea708Stream.prototype.setPenLocation = function (i, service) {\n var packetData = this.current708Packet.data;\n var b = packetData[i];\n var penLoc = service.currentWindow.penLoc; // Positioning isn't really supported at the moment, so this essentially just inserts a linebreak\n\n service.currentWindow.pendingNewLine = true;\n b = packetData[++i];\n penLoc.row = b & 0x0f; // r\n\n b = packetData[++i];\n penLoc.column = b & 0x3f; // c\n\n return i;\n };\n /**\n * Execute the RST command.\n *\n * Reset service to a clean slate. Re-initialize.\n *\n * @param {Integer} i Current index in the 708 packet\n * @param {Service} service The service object to be affected\n * @return {Service} Re-initialized service\n */\n\n Cea708Stream.prototype.reset = function (i, service) {\n var pts = this.getPts(i);\n this.flushDisplayed(pts, service);\n return this.initService(service.serviceNum, i);\n }; // This hash maps non-ASCII, special, and extended character codes to their\n // proper Unicode equivalent. The first keys that are only a single byte\n // are the non-standard ASCII characters, which simply map the CEA608 byte\n // to the standard ASCII/Unicode. The two-byte keys that follow are the CEA608\n // character codes, but have their MSB bitmasked with 0x03 so that a lookup\n // can be performed regardless of the field and data channel on which the\n // character code was received.\n\n var CHARACTER_TRANSLATION = {\n 0x2a: 0xe1,\n // á\n 0x5c: 0xe9,\n // é\n 0x5e: 0xed,\n // í\n 0x5f: 0xf3,\n // ó\n 0x60: 0xfa,\n // ú\n 0x7b: 0xe7,\n // ç\n 0x7c: 0xf7,\n // ÷\n 0x7d: 0xd1,\n // Ñ\n 0x7e: 0xf1,\n // ñ\n 0x7f: 0x2588,\n // █\n 0x0130: 0xae,\n // ®\n 0x0131: 0xb0,\n // °\n 0x0132: 0xbd,\n // ½\n 0x0133: 0xbf,\n // ¿\n 0x0134: 0x2122,\n // ™\n 0x0135: 0xa2,\n // ¢\n 0x0136: 0xa3,\n // £\n 0x0137: 0x266a,\n // ♪\n 0x0138: 0xe0,\n // à\n 0x0139: 0xa0,\n //\n 0x013a: 0xe8,\n // è\n 0x013b: 0xe2,\n // â\n 0x013c: 0xea,\n // ê\n 0x013d: 0xee,\n // î\n 0x013e: 0xf4,\n // ô\n 0x013f: 0xfb,\n // û\n 0x0220: 0xc1,\n // Á\n 0x0221: 0xc9,\n // É\n 0x0222: 0xd3,\n // Ó\n 0x0223: 0xda,\n // Ú\n 0x0224: 0xdc,\n // Ü\n 0x0225: 0xfc,\n // ü\n 0x0226: 0x2018,\n // ‘\n 0x0227: 0xa1,\n // ¡\n 0x0228: 0x2a,\n // *\n 0x0229: 0x27,\n // '\n 0x022a: 0x2014,\n // —\n 0x022b: 0xa9,\n // ©\n 0x022c: 0x2120,\n // ℠\n 0x022d: 0x2022,\n // •\n 0x022e: 0x201c,\n // “\n 0x022f: 0x201d,\n // ”\n 0x0230: 0xc0,\n // À\n 0x0231: 0xc2,\n // Â\n 0x0232: 0xc7,\n // Ç\n 0x0233: 0xc8,\n // È\n 0x0234: 0xca,\n // Ê\n 0x0235: 0xcb,\n // Ë\n 0x0236: 0xeb,\n // ë\n 0x0237: 0xce,\n // Î\n 0x0238: 0xcf,\n // Ï\n 0x0239: 0xef,\n // ï\n 0x023a: 0xd4,\n // Ô\n 0x023b: 0xd9,\n // Ù\n 0x023c: 0xf9,\n // ù\n 0x023d: 0xdb,\n // Û\n 0x023e: 0xab,\n // «\n 0x023f: 0xbb,\n // »\n 0x0320: 0xc3,\n // Ã\n 0x0321: 0xe3,\n // ã\n 0x0322: 0xcd,\n // Í\n 0x0323: 0xcc,\n // Ì\n 0x0324: 0xec,\n // ì\n 0x0325: 0xd2,\n // Ò\n 0x0326: 0xf2,\n // ò\n 0x0327: 0xd5,\n // Õ\n 0x0328: 0xf5,\n // õ\n 0x0329: 0x7b,\n // {\n 0x032a: 0x7d,\n // }\n 0x032b: 0x5c,\n // \\\n 0x032c: 0x5e,\n // ^\n 0x032d: 0x5f,\n // _\n 0x032e: 0x7c,\n // |\n 0x032f: 0x7e,\n // ~\n 0x0330: 0xc4,\n // Ä\n 0x0331: 0xe4,\n // ä\n 0x0332: 0xd6,\n // Ö\n 0x0333: 0xf6,\n // ö\n 0x0334: 0xdf,\n // ß\n 0x0335: 0xa5,\n // ¥\n 0x0336: 0xa4,\n // ¤\n 0x0337: 0x2502,\n // │\n 0x0338: 0xc5,\n // Å\n 0x0339: 0xe5,\n // å\n 0x033a: 0xd8,\n // Ø\n 0x033b: 0xf8,\n // ø\n 0x033c: 0x250c,\n // ┌\n 0x033d: 0x2510,\n // ┐\n 0x033e: 0x2514,\n // └\n 0x033f: 0x2518 // ┘\n };\n var getCharFromCode = function (code) {\n if (code === null) {\n return '';\n }\n code = CHARACTER_TRANSLATION[code] || code;\n return String.fromCharCode(code);\n }; // the index of the last row in a CEA-608 display buffer\n\n var BOTTOM_ROW = 14; // This array is used for mapping PACs -> row #, since there's no way of\n // getting it through bit logic.\n\n var ROWS = [0x1100, 0x1120, 0x1200, 0x1220, 0x1500, 0x1520, 0x1600, 0x1620, 0x1700, 0x1720, 0x1000, 0x1300, 0x1320, 0x1400, 0x1420]; // CEA-608 captions are rendered onto a 34x15 matrix of character\n // cells. The \"bottom\" row is the last element in the outer array.\n // We keep track of positioning information as we go by storing the\n // number of indentations and the tab offset in this buffer.\n\n var createDisplayBuffer = function () {\n var result = [],\n i = BOTTOM_ROW + 1;\n while (i--) {\n result.push({\n text: '',\n indent: 0,\n offset: 0\n });\n }\n return result;\n };\n var Cea608Stream = function (field, dataChannel) {\n Cea608Stream.prototype.init.call(this);\n this.field_ = field || 0;\n this.dataChannel_ = dataChannel || 0;\n this.name_ = 'CC' + ((this.field_ << 1 | this.dataChannel_) + 1);\n this.setConstants();\n this.reset();\n this.push = function (packet) {\n var data, swap, char0, char1, text; // remove the parity bits\n\n data = packet.ccData & 0x7f7f; // ignore duplicate control codes; the spec demands they're sent twice\n\n if (data === this.lastControlCode_) {\n this.lastControlCode_ = null;\n return;\n } // Store control codes\n\n if ((data & 0xf000) === 0x1000) {\n this.lastControlCode_ = data;\n } else if (data !== this.PADDING_) {\n this.lastControlCode_ = null;\n }\n char0 = data >>> 8;\n char1 = data & 0xff;\n if (data === this.PADDING_) {\n return;\n } else if (data === this.RESUME_CAPTION_LOADING_) {\n this.mode_ = 'popOn';\n } else if (data === this.END_OF_CAPTION_) {\n // If an EOC is received while in paint-on mode, the displayed caption\n // text should be swapped to non-displayed memory as if it was a pop-on\n // caption. Because of that, we should explicitly switch back to pop-on\n // mode\n this.mode_ = 'popOn';\n this.clearFormatting(packet.pts); // if a caption was being displayed, it's gone now\n\n this.flushDisplayed(packet.pts); // flip memory\n\n swap = this.displayed_;\n this.displayed_ = this.nonDisplayed_;\n this.nonDisplayed_ = swap; // start measuring the time to display the caption\n\n this.startPts_ = packet.pts;\n } else if (data === this.ROLL_UP_2_ROWS_) {\n this.rollUpRows_ = 2;\n this.setRollUp(packet.pts);\n } else if (data === this.ROLL_UP_3_ROWS_) {\n this.rollUpRows_ = 3;\n this.setRollUp(packet.pts);\n } else if (data === this.ROLL_UP_4_ROWS_) {\n this.rollUpRows_ = 4;\n this.setRollUp(packet.pts);\n } else if (data === this.CARRIAGE_RETURN_) {\n this.clearFormatting(packet.pts);\n this.flushDisplayed(packet.pts);\n this.shiftRowsUp_();\n this.startPts_ = packet.pts;\n } else if (data === this.BACKSPACE_) {\n if (this.mode_ === 'popOn') {\n this.nonDisplayed_[this.row_].text = this.nonDisplayed_[this.row_].text.slice(0, -1);\n } else {\n this.displayed_[this.row_].text = this.displayed_[this.row_].text.slice(0, -1);\n }\n } else if (data === this.ERASE_DISPLAYED_MEMORY_) {\n this.flushDisplayed(packet.pts);\n this.displayed_ = createDisplayBuffer();\n } else if (data === this.ERASE_NON_DISPLAYED_MEMORY_) {\n this.nonDisplayed_ = createDisplayBuffer();\n } else if (data === this.RESUME_DIRECT_CAPTIONING_) {\n if (this.mode_ !== 'paintOn') {\n // NOTE: This should be removed when proper caption positioning is\n // implemented\n this.flushDisplayed(packet.pts);\n this.displayed_ = createDisplayBuffer();\n }\n this.mode_ = 'paintOn';\n this.startPts_ = packet.pts; // Append special characters to caption text\n } else if (this.isSpecialCharacter(char0, char1)) {\n // Bitmask char0 so that we can apply character transformations\n // regardless of field and data channel.\n // Then byte-shift to the left and OR with char1 so we can pass the\n // entire character code to `getCharFromCode`.\n char0 = (char0 & 0x03) << 8;\n text = getCharFromCode(char0 | char1);\n this[this.mode_](packet.pts, text);\n this.column_++; // Append extended characters to caption text\n } else if (this.isExtCharacter(char0, char1)) {\n // Extended characters always follow their \"non-extended\" equivalents.\n // IE if a \"è\" is desired, you'll always receive \"eè\"; non-compliant\n // decoders are supposed to drop the \"è\", while compliant decoders\n // backspace the \"e\" and insert \"è\".\n // Delete the previous character\n if (this.mode_ === 'popOn') {\n this.nonDisplayed_[this.row_].text = this.nonDisplayed_[this.row_].text.slice(0, -1);\n } else {\n this.displayed_[this.row_].text = this.displayed_[this.row_].text.slice(0, -1);\n } // Bitmask char0 so that we can apply character transformations\n // regardless of field and data channel.\n // Then byte-shift to the left and OR with char1 so we can pass the\n // entire character code to `getCharFromCode`.\n\n char0 = (char0 & 0x03) << 8;\n text = getCharFromCode(char0 | char1);\n this[this.mode_](packet.pts, text);\n this.column_++; // Process mid-row codes\n } else if (this.isMidRowCode(char0, char1)) {\n // Attributes are not additive, so clear all formatting\n this.clearFormatting(packet.pts); // According to the standard, mid-row codes\n // should be replaced with spaces, so add one now\n\n this[this.mode_](packet.pts, ' ');\n this.column_++;\n if ((char1 & 0xe) === 0xe) {\n this.addFormatting(packet.pts, ['i']);\n }\n if ((char1 & 0x1) === 0x1) {\n this.addFormatting(packet.pts, ['u']);\n } // Detect offset control codes and adjust cursor\n } else if (this.isOffsetControlCode(char0, char1)) {\n // Cursor position is set by indent PAC (see below) in 4-column\n // increments, with an additional offset code of 1-3 to reach any\n // of the 32 columns specified by CEA-608. So all we need to do\n // here is increment the column cursor by the given offset.\n const offset = char1 & 0x03; // For an offest value 1-3, set the offset for that caption\n // in the non-displayed array.\n\n this.nonDisplayed_[this.row_].offset = offset;\n this.column_ += offset; // Detect PACs (Preamble Address Codes)\n } else if (this.isPAC(char0, char1)) {\n // There's no logic for PAC -> row mapping, so we have to just\n // find the row code in an array and use its index :(\n var row = ROWS.indexOf(data & 0x1f20); // Configure the caption window if we're in roll-up mode\n\n if (this.mode_ === 'rollUp') {\n // This implies that the base row is incorrectly set.\n // As per the recommendation in CEA-608(Base Row Implementation), defer to the number\n // of roll-up rows set.\n if (row - this.rollUpRows_ + 1 < 0) {\n row = this.rollUpRows_ - 1;\n }\n this.setRollUp(packet.pts, row);\n } // Ensure the row is between 0 and 14, otherwise use the most\n // recent or default row.\n\n if (row !== this.row_ && row >= 0 && row <= 14) {\n // formatting is only persistent for current row\n this.clearFormatting(packet.pts);\n this.row_ = row;\n } // All PACs can apply underline, so detect and apply\n // (All odd-numbered second bytes set underline)\n\n if (char1 & 0x1 && this.formatting_.indexOf('u') === -1) {\n this.addFormatting(packet.pts, ['u']);\n }\n if ((data & 0x10) === 0x10) {\n // We've got an indent level code. Each successive even number\n // increments the column cursor by 4, so we can get the desired\n // column position by bit-shifting to the right (to get n/2)\n // and multiplying by 4.\n const indentations = (data & 0xe) >> 1;\n this.column_ = indentations * 4; // add to the number of indentations for positioning\n\n this.nonDisplayed_[this.row_].indent += indentations;\n }\n if (this.isColorPAC(char1)) {\n // it's a color code, though we only support white, which\n // can be either normal or italicized. white italics can be\n // either 0x4e or 0x6e depending on the row, so we just\n // bitwise-and with 0xe to see if italics should be turned on\n if ((char1 & 0xe) === 0xe) {\n this.addFormatting(packet.pts, ['i']);\n }\n } // We have a normal character in char0, and possibly one in char1\n } else if (this.isNormalChar(char0)) {\n if (char1 === 0x00) {\n char1 = null;\n }\n text = getCharFromCode(char0);\n text += getCharFromCode(char1);\n this[this.mode_](packet.pts, text);\n this.column_ += text.length;\n } // finish data processing\n };\n };\n Cea608Stream.prototype = new Stream$7(); // Trigger a cue point that captures the current state of the\n // display buffer\n\n Cea608Stream.prototype.flushDisplayed = function (pts) {\n const logWarning = index => {\n this.trigger('log', {\n level: 'warn',\n message: 'Skipping a malformed 608 caption at index ' + index + '.'\n });\n };\n const content = [];\n this.displayed_.forEach((row, i) => {\n if (row && row.text && row.text.length) {\n try {\n // remove spaces from the start and end of the string\n row.text = row.text.trim();\n } catch (e) {\n // Ordinarily, this shouldn't happen. However, caption\n // parsing errors should not throw exceptions and\n // break playback.\n logWarning(i);\n } // See the below link for more details on the following fields:\n // https://dvcs.w3.org/hg/text-tracks/raw-file/default/608toVTT/608toVTT.html#positioning-in-cea-608\n\n if (row.text.length) {\n content.push({\n // The text to be displayed in the caption from this specific row, with whitespace removed.\n text: row.text,\n // Value between 1 and 15 representing the PAC row used to calculate line height.\n line: i + 1,\n // A number representing the indent position by percentage (CEA-608 PAC indent code).\n // The value will be a number between 10 and 80. Offset is used to add an aditional\n // value to the position if necessary.\n position: 10 + Math.min(70, row.indent * 10) + row.offset * 2.5\n });\n }\n } else if (row === undefined || row === null) {\n logWarning(i);\n }\n });\n if (content.length) {\n this.trigger('data', {\n startPts: this.startPts_,\n endPts: pts,\n content,\n stream: this.name_\n });\n }\n };\n /**\n * Zero out the data, used for startup and on seek\n */\n\n Cea608Stream.prototype.reset = function () {\n this.mode_ = 'popOn'; // When in roll-up mode, the index of the last row that will\n // actually display captions. If a caption is shifted to a row\n // with a lower index than this, it is cleared from the display\n // buffer\n\n this.topRow_ = 0;\n this.startPts_ = 0;\n this.displayed_ = createDisplayBuffer();\n this.nonDisplayed_ = createDisplayBuffer();\n this.lastControlCode_ = null; // Track row and column for proper line-breaking and spacing\n\n this.column_ = 0;\n this.row_ = BOTTOM_ROW;\n this.rollUpRows_ = 2; // This variable holds currently-applied formatting\n\n this.formatting_ = [];\n };\n /**\n * Sets up control code and related constants for this instance\n */\n\n Cea608Stream.prototype.setConstants = function () {\n // The following attributes have these uses:\n // ext_ : char0 for mid-row codes, and the base for extended\n // chars (ext_+0, ext_+1, and ext_+2 are char0s for\n // extended codes)\n // control_: char0 for control codes, except byte-shifted to the\n // left so that we can do this.control_ | CONTROL_CODE\n // offset_: char0 for tab offset codes\n //\n // It's also worth noting that control codes, and _only_ control codes,\n // differ between field 1 and field2. Field 2 control codes are always\n // their field 1 value plus 1. That's why there's the \"| field\" on the\n // control value.\n if (this.dataChannel_ === 0) {\n this.BASE_ = 0x10;\n this.EXT_ = 0x11;\n this.CONTROL_ = (0x14 | this.field_) << 8;\n this.OFFSET_ = 0x17;\n } else if (this.dataChannel_ === 1) {\n this.BASE_ = 0x18;\n this.EXT_ = 0x19;\n this.CONTROL_ = (0x1c | this.field_) << 8;\n this.OFFSET_ = 0x1f;\n } // Constants for the LSByte command codes recognized by Cea608Stream. This\n // list is not exhaustive. For a more comprehensive listing and semantics see\n // http://www.gpo.gov/fdsys/pkg/CFR-2010-title47-vol1/pdf/CFR-2010-title47-vol1-sec15-119.pdf\n // Padding\n\n this.PADDING_ = 0x0000; // Pop-on Mode\n\n this.RESUME_CAPTION_LOADING_ = this.CONTROL_ | 0x20;\n this.END_OF_CAPTION_ = this.CONTROL_ | 0x2f; // Roll-up Mode\n\n this.ROLL_UP_2_ROWS_ = this.CONTROL_ | 0x25;\n this.ROLL_UP_3_ROWS_ = this.CONTROL_ | 0x26;\n this.ROLL_UP_4_ROWS_ = this.CONTROL_ | 0x27;\n this.CARRIAGE_RETURN_ = this.CONTROL_ | 0x2d; // paint-on mode\n\n this.RESUME_DIRECT_CAPTIONING_ = this.CONTROL_ | 0x29; // Erasure\n\n this.BACKSPACE_ = this.CONTROL_ | 0x21;\n this.ERASE_DISPLAYED_MEMORY_ = this.CONTROL_ | 0x2c;\n this.ERASE_NON_DISPLAYED_MEMORY_ = this.CONTROL_ | 0x2e;\n };\n /**\n * Detects if the 2-byte packet data is a special character\n *\n * Special characters have a second byte in the range 0x30 to 0x3f,\n * with the first byte being 0x11 (for data channel 1) or 0x19 (for\n * data channel 2).\n *\n * @param {Integer} char0 The first byte\n * @param {Integer} char1 The second byte\n * @return {Boolean} Whether the 2 bytes are an special character\n */\n\n Cea608Stream.prototype.isSpecialCharacter = function (char0, char1) {\n return char0 === this.EXT_ && char1 >= 0x30 && char1 <= 0x3f;\n };\n /**\n * Detects if the 2-byte packet data is an extended character\n *\n * Extended characters have a second byte in the range 0x20 to 0x3f,\n * with the first byte being 0x12 or 0x13 (for data channel 1) or\n * 0x1a or 0x1b (for data channel 2).\n *\n * @param {Integer} char0 The first byte\n * @param {Integer} char1 The second byte\n * @return {Boolean} Whether the 2 bytes are an extended character\n */\n\n Cea608Stream.prototype.isExtCharacter = function (char0, char1) {\n return (char0 === this.EXT_ + 1 || char0 === this.EXT_ + 2) && char1 >= 0x20 && char1 <= 0x3f;\n };\n /**\n * Detects if the 2-byte packet is a mid-row code\n *\n * Mid-row codes have a second byte in the range 0x20 to 0x2f, with\n * the first byte being 0x11 (for data channel 1) or 0x19 (for data\n * channel 2).\n *\n * @param {Integer} char0 The first byte\n * @param {Integer} char1 The second byte\n * @return {Boolean} Whether the 2 bytes are a mid-row code\n */\n\n Cea608Stream.prototype.isMidRowCode = function (char0, char1) {\n return char0 === this.EXT_ && char1 >= 0x20 && char1 <= 0x2f;\n };\n /**\n * Detects if the 2-byte packet is an offset control code\n *\n * Offset control codes have a second byte in the range 0x21 to 0x23,\n * with the first byte being 0x17 (for data channel 1) or 0x1f (for\n * data channel 2).\n *\n * @param {Integer} char0 The first byte\n * @param {Integer} char1 The second byte\n * @return {Boolean} Whether the 2 bytes are an offset control code\n */\n\n Cea608Stream.prototype.isOffsetControlCode = function (char0, char1) {\n return char0 === this.OFFSET_ && char1 >= 0x21 && char1 <= 0x23;\n };\n /**\n * Detects if the 2-byte packet is a Preamble Address Code\n *\n * PACs have a first byte in the range 0x10 to 0x17 (for data channel 1)\n * or 0x18 to 0x1f (for data channel 2), with the second byte in the\n * range 0x40 to 0x7f.\n *\n * @param {Integer} char0 The first byte\n * @param {Integer} char1 The second byte\n * @return {Boolean} Whether the 2 bytes are a PAC\n */\n\n Cea608Stream.prototype.isPAC = function (char0, char1) {\n return char0 >= this.BASE_ && char0 < this.BASE_ + 8 && char1 >= 0x40 && char1 <= 0x7f;\n };\n /**\n * Detects if a packet's second byte is in the range of a PAC color code\n *\n * PAC color codes have the second byte be in the range 0x40 to 0x4f, or\n * 0x60 to 0x6f.\n *\n * @param {Integer} char1 The second byte\n * @return {Boolean} Whether the byte is a color PAC\n */\n\n Cea608Stream.prototype.isColorPAC = function (char1) {\n return char1 >= 0x40 && char1 <= 0x4f || char1 >= 0x60 && char1 <= 0x7f;\n };\n /**\n * Detects if a single byte is in the range of a normal character\n *\n * Normal text bytes are in the range 0x20 to 0x7f.\n *\n * @param {Integer} char The byte\n * @return {Boolean} Whether the byte is a normal character\n */\n\n Cea608Stream.prototype.isNormalChar = function (char) {\n return char >= 0x20 && char <= 0x7f;\n };\n /**\n * Configures roll-up\n *\n * @param {Integer} pts Current PTS\n * @param {Integer} newBaseRow Used by PACs to slide the current window to\n * a new position\n */\n\n Cea608Stream.prototype.setRollUp = function (pts, newBaseRow) {\n // Reset the base row to the bottom row when switching modes\n if (this.mode_ !== 'rollUp') {\n this.row_ = BOTTOM_ROW;\n this.mode_ = 'rollUp'; // Spec says to wipe memories when switching to roll-up\n\n this.flushDisplayed(pts);\n this.nonDisplayed_ = createDisplayBuffer();\n this.displayed_ = createDisplayBuffer();\n }\n if (newBaseRow !== undefined && newBaseRow !== this.row_) {\n // move currently displayed captions (up or down) to the new base row\n for (var i = 0; i < this.rollUpRows_; i++) {\n this.displayed_[newBaseRow - i] = this.displayed_[this.row_ - i];\n this.displayed_[this.row_ - i] = {\n text: '',\n indent: 0,\n offset: 0\n };\n }\n }\n if (newBaseRow === undefined) {\n newBaseRow = this.row_;\n }\n this.topRow_ = newBaseRow - this.rollUpRows_ + 1;\n }; // Adds the opening HTML tag for the passed character to the caption text,\n // and keeps track of it for later closing\n\n Cea608Stream.prototype.addFormatting = function (pts, format) {\n this.formatting_ = this.formatting_.concat(format);\n var text = format.reduce(function (text, format) {\n return text + '<' + format + '>';\n }, '');\n this[this.mode_](pts, text);\n }; // Adds HTML closing tags for current formatting to caption text and\n // clears remembered formatting\n\n Cea608Stream.prototype.clearFormatting = function (pts) {\n if (!this.formatting_.length) {\n return;\n }\n var text = this.formatting_.reverse().reduce(function (text, format) {\n return text + '';\n }, '');\n this.formatting_ = [];\n this[this.mode_](pts, text);\n }; // Mode Implementations\n\n Cea608Stream.prototype.popOn = function (pts, text) {\n var baseRow = this.nonDisplayed_[this.row_].text; // buffer characters\n\n baseRow += text;\n this.nonDisplayed_[this.row_].text = baseRow;\n };\n Cea608Stream.prototype.rollUp = function (pts, text) {\n var baseRow = this.displayed_[this.row_].text;\n baseRow += text;\n this.displayed_[this.row_].text = baseRow;\n };\n Cea608Stream.prototype.shiftRowsUp_ = function () {\n var i; // clear out inactive rows\n\n for (i = 0; i < this.topRow_; i++) {\n this.displayed_[i] = {\n text: '',\n indent: 0,\n offset: 0\n };\n }\n for (i = this.row_ + 1; i < BOTTOM_ROW + 1; i++) {\n this.displayed_[i] = {\n text: '',\n indent: 0,\n offset: 0\n };\n } // shift displayed rows up\n\n for (i = this.topRow_; i < this.row_; i++) {\n this.displayed_[i] = this.displayed_[i + 1];\n } // clear out the bottom row\n\n this.displayed_[this.row_] = {\n text: '',\n indent: 0,\n offset: 0\n };\n };\n Cea608Stream.prototype.paintOn = function (pts, text) {\n var baseRow = this.displayed_[this.row_].text;\n baseRow += text;\n this.displayed_[this.row_].text = baseRow;\n }; // exports\n\n var captionStream = {\n CaptionStream: CaptionStream$2,\n Cea608Stream: Cea608Stream,\n Cea708Stream: Cea708Stream\n };\n /**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n */\n\n var streamTypes = {\n H264_STREAM_TYPE: 0x1B,\n ADTS_STREAM_TYPE: 0x0F,\n METADATA_STREAM_TYPE: 0x15\n };\n /**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n *\n * Accepts program elementary stream (PES) data events and corrects\n * decode and presentation time stamps to account for a rollover\n * of the 33 bit value.\n */\n\n var Stream$6 = stream;\n var MAX_TS = 8589934592;\n var RO_THRESH = 4294967296;\n var TYPE_SHARED = 'shared';\n var handleRollover$1 = function (value, reference) {\n var direction = 1;\n if (value > reference) {\n // If the current timestamp value is greater than our reference timestamp and we detect a\n // timestamp rollover, this means the roll over is happening in the opposite direction.\n // Example scenario: Enter a long stream/video just after a rollover occurred. The reference\n // point will be set to a small number, e.g. 1. The user then seeks backwards over the\n // rollover point. In loading this segment, the timestamp values will be very large,\n // e.g. 2^33 - 1. Since this comes before the data we loaded previously, we want to adjust\n // the time stamp to be `value - 2^33`.\n direction = -1;\n } // Note: A seek forwards or back that is greater than the RO_THRESH (2^32, ~13 hours) will\n // cause an incorrect adjustment.\n\n while (Math.abs(reference - value) > RO_THRESH) {\n value += direction * MAX_TS;\n }\n return value;\n };\n var TimestampRolloverStream$1 = function (type) {\n var lastDTS, referenceDTS;\n TimestampRolloverStream$1.prototype.init.call(this); // The \"shared\" type is used in cases where a stream will contain muxed\n // video and audio. We could use `undefined` here, but having a string\n // makes debugging a little clearer.\n\n this.type_ = type || TYPE_SHARED;\n this.push = function (data) {\n /**\n * Rollover stream expects data from elementary stream.\n * Elementary stream can push forward 2 types of data\n * - Parsed Video/Audio/Timed-metadata PES (packetized elementary stream) packets\n * - Tracks metadata from PMT (Program Map Table)\n * Rollover stream expects pts/dts info to be available, since it stores lastDTS\n * We should ignore non-PES packets since they may override lastDTS to undefined.\n * lastDTS is important to signal the next segments\n * about rollover from the previous segments.\n */\n if (data.type === 'metadata') {\n this.trigger('data', data);\n return;\n } // Any \"shared\" rollover streams will accept _all_ data. Otherwise,\n // streams will only accept data that matches their type.\n\n if (this.type_ !== TYPE_SHARED && data.type !== this.type_) {\n return;\n }\n if (referenceDTS === undefined) {\n referenceDTS = data.dts;\n }\n data.dts = handleRollover$1(data.dts, referenceDTS);\n data.pts = handleRollover$1(data.pts, referenceDTS);\n lastDTS = data.dts;\n this.trigger('data', data);\n };\n this.flush = function () {\n referenceDTS = lastDTS;\n this.trigger('done');\n };\n this.endTimeline = function () {\n this.flush();\n this.trigger('endedtimeline');\n };\n this.discontinuity = function () {\n referenceDTS = void 0;\n lastDTS = void 0;\n };\n this.reset = function () {\n this.discontinuity();\n this.trigger('reset');\n };\n };\n TimestampRolloverStream$1.prototype = new Stream$6();\n var timestampRolloverStream = {\n TimestampRolloverStream: TimestampRolloverStream$1,\n handleRollover: handleRollover$1\n }; // Once IE11 support is dropped, this function should be removed.\n\n var typedArrayIndexOf$1 = (typedArray, element, fromIndex) => {\n if (!typedArray) {\n return -1;\n }\n var currentIndex = fromIndex;\n for (; currentIndex < typedArray.length; currentIndex++) {\n if (typedArray[currentIndex] === element) {\n return currentIndex;\n }\n }\n return -1;\n };\n var typedArray = {\n typedArrayIndexOf: typedArrayIndexOf$1\n };\n /**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n *\n * Tools for parsing ID3 frame data\n * @see http://id3.org/id3v2.3.0\n */\n\n var typedArrayIndexOf = typedArray.typedArrayIndexOf,\n // Frames that allow different types of text encoding contain a text\n // encoding description byte [ID3v2.4.0 section 4.]\n textEncodingDescriptionByte = {\n Iso88591: 0x00,\n // ISO-8859-1, terminated with \\0.\n Utf16: 0x01,\n // UTF-16 encoded Unicode BOM, terminated with \\0\\0\n Utf16be: 0x02,\n // UTF-16BE encoded Unicode, without BOM, terminated with \\0\\0\n Utf8: 0x03 // UTF-8 encoded Unicode, terminated with \\0\n },\n // return a percent-encoded representation of the specified byte range\n // @see http://en.wikipedia.org/wiki/Percent-encoding \n percentEncode$1 = function (bytes, start, end) {\n var i,\n result = '';\n for (i = start; i < end; i++) {\n result += '%' + ('00' + bytes[i].toString(16)).slice(-2);\n }\n return result;\n },\n // return the string representation of the specified byte range,\n // interpreted as UTf-8.\n parseUtf8 = function (bytes, start, end) {\n return decodeURIComponent(percentEncode$1(bytes, start, end));\n },\n // return the string representation of the specified byte range,\n // interpreted as ISO-8859-1.\n parseIso88591$1 = function (bytes, start, end) {\n return unescape(percentEncode$1(bytes, start, end)); // jshint ignore:line\n },\n parseSyncSafeInteger$1 = function (data) {\n return data[0] << 21 | data[1] << 14 | data[2] << 7 | data[3];\n },\n frameParsers = {\n 'APIC': function (frame) {\n var i = 1,\n mimeTypeEndIndex,\n descriptionEndIndex,\n LINK_MIME_TYPE = '-->';\n if (frame.data[0] !== textEncodingDescriptionByte.Utf8) {\n // ignore frames with unrecognized character encodings\n return;\n } // parsing fields [ID3v2.4.0 section 4.14.]\n\n mimeTypeEndIndex = typedArrayIndexOf(frame.data, 0, i);\n if (mimeTypeEndIndex < 0) {\n // malformed frame\n return;\n } // parsing Mime type field (terminated with \\0)\n\n frame.mimeType = parseIso88591$1(frame.data, i, mimeTypeEndIndex);\n i = mimeTypeEndIndex + 1; // parsing 1-byte Picture Type field\n\n frame.pictureType = frame.data[i];\n i++;\n descriptionEndIndex = typedArrayIndexOf(frame.data, 0, i);\n if (descriptionEndIndex < 0) {\n // malformed frame\n return;\n } // parsing Description field (terminated with \\0)\n\n frame.description = parseUtf8(frame.data, i, descriptionEndIndex);\n i = descriptionEndIndex + 1;\n if (frame.mimeType === LINK_MIME_TYPE) {\n // parsing Picture Data field as URL (always represented as ISO-8859-1 [ID3v2.4.0 section 4.])\n frame.url = parseIso88591$1(frame.data, i, frame.data.length);\n } else {\n // parsing Picture Data field as binary data\n frame.pictureData = frame.data.subarray(i, frame.data.length);\n }\n },\n 'T*': function (frame) {\n if (frame.data[0] !== textEncodingDescriptionByte.Utf8) {\n // ignore frames with unrecognized character encodings\n return;\n } // parse text field, do not include null terminator in the frame value\n // frames that allow different types of encoding contain terminated text [ID3v2.4.0 section 4.]\n\n frame.value = parseUtf8(frame.data, 1, frame.data.length).replace(/\\0*$/, ''); // text information frames supports multiple strings, stored as a terminator separated list [ID3v2.4.0 section 4.2.]\n\n frame.values = frame.value.split('\\0');\n },\n 'TXXX': function (frame) {\n var descriptionEndIndex;\n if (frame.data[0] !== textEncodingDescriptionByte.Utf8) {\n // ignore frames with unrecognized character encodings\n return;\n }\n descriptionEndIndex = typedArrayIndexOf(frame.data, 0, 1);\n if (descriptionEndIndex === -1) {\n return;\n } // parse the text fields\n\n frame.description = parseUtf8(frame.data, 1, descriptionEndIndex); // do not include the null terminator in the tag value\n // frames that allow different types of encoding contain terminated text\n // [ID3v2.4.0 section 4.]\n\n frame.value = parseUtf8(frame.data, descriptionEndIndex + 1, frame.data.length).replace(/\\0*$/, '');\n frame.data = frame.value;\n },\n 'W*': function (frame) {\n // parse URL field; URL fields are always represented as ISO-8859-1 [ID3v2.4.0 section 4.]\n // if the value is followed by a string termination all the following information should be ignored [ID3v2.4.0 section 4.3]\n frame.url = parseIso88591$1(frame.data, 0, frame.data.length).replace(/\\0.*$/, '');\n },\n 'WXXX': function (frame) {\n var descriptionEndIndex;\n if (frame.data[0] !== textEncodingDescriptionByte.Utf8) {\n // ignore frames with unrecognized character encodings\n return;\n }\n descriptionEndIndex = typedArrayIndexOf(frame.data, 0, 1);\n if (descriptionEndIndex === -1) {\n return;\n } // parse the description and URL fields\n\n frame.description = parseUtf8(frame.data, 1, descriptionEndIndex); // URL fields are always represented as ISO-8859-1 [ID3v2.4.0 section 4.]\n // if the value is followed by a string termination all the following information\n // should be ignored [ID3v2.4.0 section 4.3]\n\n frame.url = parseIso88591$1(frame.data, descriptionEndIndex + 1, frame.data.length).replace(/\\0.*$/, '');\n },\n 'PRIV': function (frame) {\n var i;\n for (i = 0; i < frame.data.length; i++) {\n if (frame.data[i] === 0) {\n // parse the description and URL fields\n frame.owner = parseIso88591$1(frame.data, 0, i);\n break;\n }\n }\n frame.privateData = frame.data.subarray(i + 1);\n frame.data = frame.privateData;\n }\n };\n var parseId3Frames$1 = function (data) {\n var frameSize,\n frameHeader,\n frameStart = 10,\n tagSize = 0,\n frames = []; // If we don't have enough data for a header, 10 bytes, \n // or 'ID3' in the first 3 bytes this is not a valid ID3 tag.\n\n if (data.length < 10 || data[0] !== 'I'.charCodeAt(0) || data[1] !== 'D'.charCodeAt(0) || data[2] !== '3'.charCodeAt(0)) {\n return;\n } // the frame size is transmitted as a 28-bit integer in the\n // last four bytes of the ID3 header.\n // The most significant bit of each byte is dropped and the\n // results concatenated to recover the actual value.\n\n tagSize = parseSyncSafeInteger$1(data.subarray(6, 10)); // ID3 reports the tag size excluding the header but it's more\n // convenient for our comparisons to include it\n\n tagSize += 10; // check bit 6 of byte 5 for the extended header flag.\n\n var hasExtendedHeader = data[5] & 0x40;\n if (hasExtendedHeader) {\n // advance the frame start past the extended header\n frameStart += 4; // header size field\n\n frameStart += parseSyncSafeInteger$1(data.subarray(10, 14));\n tagSize -= parseSyncSafeInteger$1(data.subarray(16, 20)); // clip any padding off the end\n } // parse one or more ID3 frames\n // http://id3.org/id3v2.3.0#ID3v2_frame_overview\n\n do {\n // determine the number of bytes in this frame\n frameSize = parseSyncSafeInteger$1(data.subarray(frameStart + 4, frameStart + 8));\n if (frameSize < 1) {\n break;\n }\n frameHeader = String.fromCharCode(data[frameStart], data[frameStart + 1], data[frameStart + 2], data[frameStart + 3]);\n var frame = {\n id: frameHeader,\n data: data.subarray(frameStart + 10, frameStart + frameSize + 10)\n };\n frame.key = frame.id; // parse frame values\n\n if (frameParsers[frame.id]) {\n // use frame specific parser\n frameParsers[frame.id](frame);\n } else if (frame.id[0] === 'T') {\n // use text frame generic parser\n frameParsers['T*'](frame);\n } else if (frame.id[0] === 'W') {\n // use URL link frame generic parser\n frameParsers['W*'](frame);\n }\n frames.push(frame);\n frameStart += 10; // advance past the frame header\n\n frameStart += frameSize; // advance past the frame body\n } while (frameStart < tagSize);\n return frames;\n };\n var parseId3 = {\n parseId3Frames: parseId3Frames$1,\n parseSyncSafeInteger: parseSyncSafeInteger$1,\n frameParsers: frameParsers\n };\n /**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n *\n * Accepts program elementary stream (PES) data events and parses out\n * ID3 metadata from them, if present.\n * @see http://id3.org/id3v2.3.0\n */\n\n var Stream$5 = stream,\n StreamTypes$3 = streamTypes,\n id3 = parseId3,\n MetadataStream;\n MetadataStream = function (options) {\n var settings = {\n // the bytes of the program-level descriptor field in MP2T\n // see ISO/IEC 13818-1:2013 (E), section 2.6 \"Program and\n // program element descriptors\"\n descriptor: options && options.descriptor\n },\n // the total size in bytes of the ID3 tag being parsed\n tagSize = 0,\n // tag data that is not complete enough to be parsed\n buffer = [],\n // the total number of bytes currently in the buffer\n bufferSize = 0,\n i;\n MetadataStream.prototype.init.call(this); // calculate the text track in-band metadata track dispatch type\n // https://html.spec.whatwg.org/multipage/embedded-content.html#steps-to-expose-a-media-resource-specific-text-track\n\n this.dispatchType = StreamTypes$3.METADATA_STREAM_TYPE.toString(16);\n if (settings.descriptor) {\n for (i = 0; i < settings.descriptor.length; i++) {\n this.dispatchType += ('00' + settings.descriptor[i].toString(16)).slice(-2);\n }\n }\n this.push = function (chunk) {\n var tag, frameStart, frameSize, frame, i, frameHeader;\n if (chunk.type !== 'timed-metadata') {\n return;\n } // if data_alignment_indicator is set in the PES header,\n // we must have the start of a new ID3 tag. Assume anything\n // remaining in the buffer was malformed and throw it out\n\n if (chunk.dataAlignmentIndicator) {\n bufferSize = 0;\n buffer.length = 0;\n } // ignore events that don't look like ID3 data\n\n if (buffer.length === 0 && (chunk.data.length < 10 || chunk.data[0] !== 'I'.charCodeAt(0) || chunk.data[1] !== 'D'.charCodeAt(0) || chunk.data[2] !== '3'.charCodeAt(0))) {\n this.trigger('log', {\n level: 'warn',\n message: 'Skipping unrecognized metadata packet'\n });\n return;\n } // add this chunk to the data we've collected so far\n\n buffer.push(chunk);\n bufferSize += chunk.data.byteLength; // grab the size of the entire frame from the ID3 header\n\n if (buffer.length === 1) {\n // the frame size is transmitted as a 28-bit integer in the\n // last four bytes of the ID3 header.\n // The most significant bit of each byte is dropped and the\n // results concatenated to recover the actual value.\n tagSize = id3.parseSyncSafeInteger(chunk.data.subarray(6, 10)); // ID3 reports the tag size excluding the header but it's more\n // convenient for our comparisons to include it\n\n tagSize += 10;\n } // if the entire frame has not arrived, wait for more data\n\n if (bufferSize < tagSize) {\n return;\n } // collect the entire frame so it can be parsed\n\n tag = {\n data: new Uint8Array(tagSize),\n frames: [],\n pts: buffer[0].pts,\n dts: buffer[0].dts\n };\n for (i = 0; i < tagSize;) {\n tag.data.set(buffer[0].data.subarray(0, tagSize - i), i);\n i += buffer[0].data.byteLength;\n bufferSize -= buffer[0].data.byteLength;\n buffer.shift();\n } // find the start of the first frame and the end of the tag\n\n frameStart = 10;\n if (tag.data[5] & 0x40) {\n // advance the frame start past the extended header\n frameStart += 4; // header size field\n\n frameStart += id3.parseSyncSafeInteger(tag.data.subarray(10, 14)); // clip any padding off the end\n\n tagSize -= id3.parseSyncSafeInteger(tag.data.subarray(16, 20));\n } // parse one or more ID3 frames\n // http://id3.org/id3v2.3.0#ID3v2_frame_overview\n\n do {\n // determine the number of bytes in this frame\n frameSize = id3.parseSyncSafeInteger(tag.data.subarray(frameStart + 4, frameStart + 8));\n if (frameSize < 1) {\n this.trigger('log', {\n level: 'warn',\n message: 'Malformed ID3 frame encountered. Skipping remaining metadata parsing.'\n }); // If the frame is malformed, don't parse any further frames but allow previous valid parsed frames\n // to be sent along.\n\n break;\n }\n frameHeader = String.fromCharCode(tag.data[frameStart], tag.data[frameStart + 1], tag.data[frameStart + 2], tag.data[frameStart + 3]);\n frame = {\n id: frameHeader,\n data: tag.data.subarray(frameStart + 10, frameStart + frameSize + 10)\n };\n frame.key = frame.id; // parse frame values\n\n if (id3.frameParsers[frame.id]) {\n // use frame specific parser\n id3.frameParsers[frame.id](frame);\n } else if (frame.id[0] === 'T') {\n // use text frame generic parser\n id3.frameParsers['T*'](frame);\n } else if (frame.id[0] === 'W') {\n // use URL link frame generic parser\n id3.frameParsers['W*'](frame);\n } // handle the special PRIV frame used to indicate the start\n // time for raw AAC data\n\n if (frame.owner === 'com.apple.streaming.transportStreamTimestamp') {\n var d = frame.data,\n size = (d[3] & 0x01) << 30 | d[4] << 22 | d[5] << 14 | d[6] << 6 | d[7] >>> 2;\n size *= 4;\n size += d[7] & 0x03;\n frame.timeStamp = size; // in raw AAC, all subsequent data will be timestamped based\n // on the value of this frame\n // we couldn't have known the appropriate pts and dts before\n // parsing this ID3 tag so set those values now\n\n if (tag.pts === undefined && tag.dts === undefined) {\n tag.pts = frame.timeStamp;\n tag.dts = frame.timeStamp;\n }\n this.trigger('timestamp', frame);\n }\n tag.frames.push(frame);\n frameStart += 10; // advance past the frame header\n\n frameStart += frameSize; // advance past the frame body\n } while (frameStart < tagSize);\n this.trigger('data', tag);\n };\n };\n MetadataStream.prototype = new Stream$5();\n var metadataStream = MetadataStream;\n /**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n *\n * A stream-based mp2t to mp4 converter. This utility can be used to\n * deliver mp4s to a SourceBuffer on platforms that support native\n * Media Source Extensions.\n */\n\n var Stream$4 = stream,\n CaptionStream$1 = captionStream,\n StreamTypes$2 = streamTypes,\n TimestampRolloverStream = timestampRolloverStream.TimestampRolloverStream; // object types\n\n var TransportPacketStream, TransportParseStream, ElementaryStream; // constants\n\n var MP2T_PACKET_LENGTH$1 = 188,\n // bytes\n SYNC_BYTE$1 = 0x47;\n /**\n * Splits an incoming stream of binary data into MPEG-2 Transport\n * Stream packets.\n */\n\n TransportPacketStream = function () {\n var buffer = new Uint8Array(MP2T_PACKET_LENGTH$1),\n bytesInBuffer = 0;\n TransportPacketStream.prototype.init.call(this); // Deliver new bytes to the stream.\n\n /**\n * Split a stream of data into M2TS packets\n **/\n\n this.push = function (bytes) {\n var startIndex = 0,\n endIndex = MP2T_PACKET_LENGTH$1,\n everything; // If there are bytes remaining from the last segment, prepend them to the\n // bytes that were pushed in\n\n if (bytesInBuffer) {\n everything = new Uint8Array(bytes.byteLength + bytesInBuffer);\n everything.set(buffer.subarray(0, bytesInBuffer));\n everything.set(bytes, bytesInBuffer);\n bytesInBuffer = 0;\n } else {\n everything = bytes;\n } // While we have enough data for a packet\n\n while (endIndex < everything.byteLength) {\n // Look for a pair of start and end sync bytes in the data..\n if (everything[startIndex] === SYNC_BYTE$1 && everything[endIndex] === SYNC_BYTE$1) {\n // We found a packet so emit it and jump one whole packet forward in\n // the stream\n this.trigger('data', everything.subarray(startIndex, endIndex));\n startIndex += MP2T_PACKET_LENGTH$1;\n endIndex += MP2T_PACKET_LENGTH$1;\n continue;\n } // If we get here, we have somehow become de-synchronized and we need to step\n // forward one byte at a time until we find a pair of sync bytes that denote\n // a packet\n\n startIndex++;\n endIndex++;\n } // If there was some data left over at the end of the segment that couldn't\n // possibly be a whole packet, keep it because it might be the start of a packet\n // that continues in the next segment\n\n if (startIndex < everything.byteLength) {\n buffer.set(everything.subarray(startIndex), 0);\n bytesInBuffer = everything.byteLength - startIndex;\n }\n };\n /**\n * Passes identified M2TS packets to the TransportParseStream to be parsed\n **/\n\n this.flush = function () {\n // If the buffer contains a whole packet when we are being flushed, emit it\n // and empty the buffer. Otherwise hold onto the data because it may be\n // important for decoding the next segment\n if (bytesInBuffer === MP2T_PACKET_LENGTH$1 && buffer[0] === SYNC_BYTE$1) {\n this.trigger('data', buffer);\n bytesInBuffer = 0;\n }\n this.trigger('done');\n };\n this.endTimeline = function () {\n this.flush();\n this.trigger('endedtimeline');\n };\n this.reset = function () {\n bytesInBuffer = 0;\n this.trigger('reset');\n };\n };\n TransportPacketStream.prototype = new Stream$4();\n /**\n * Accepts an MP2T TransportPacketStream and emits data events with parsed\n * forms of the individual transport stream packets.\n */\n\n TransportParseStream = function () {\n var parsePsi, parsePat, parsePmt, self;\n TransportParseStream.prototype.init.call(this);\n self = this;\n this.packetsWaitingForPmt = [];\n this.programMapTable = undefined;\n parsePsi = function (payload, psi) {\n var offset = 0; // PSI packets may be split into multiple sections and those\n // sections may be split into multiple packets. If a PSI\n // section starts in this packet, the payload_unit_start_indicator\n // will be true and the first byte of the payload will indicate\n // the offset from the current position to the start of the\n // section.\n\n if (psi.payloadUnitStartIndicator) {\n offset += payload[offset] + 1;\n }\n if (psi.type === 'pat') {\n parsePat(payload.subarray(offset), psi);\n } else {\n parsePmt(payload.subarray(offset), psi);\n }\n };\n parsePat = function (payload, pat) {\n pat.section_number = payload[7]; // eslint-disable-line camelcase\n\n pat.last_section_number = payload[8]; // eslint-disable-line camelcase\n // skip the PSI header and parse the first PMT entry\n\n self.pmtPid = (payload[10] & 0x1F) << 8 | payload[11];\n pat.pmtPid = self.pmtPid;\n };\n /**\n * Parse out the relevant fields of a Program Map Table (PMT).\n * @param payload {Uint8Array} the PMT-specific portion of an MP2T\n * packet. The first byte in this array should be the table_id\n * field.\n * @param pmt {object} the object that should be decorated with\n * fields parsed from the PMT.\n */\n\n parsePmt = function (payload, pmt) {\n var sectionLength, tableEnd, programInfoLength, offset; // PMTs can be sent ahead of the time when they should actually\n // take effect. We don't believe this should ever be the case\n // for HLS but we'll ignore \"forward\" PMT declarations if we see\n // them. Future PMT declarations have the current_next_indicator\n // set to zero.\n\n if (!(payload[5] & 0x01)) {\n return;\n } // overwrite any existing program map table\n\n self.programMapTable = {\n video: null,\n audio: null,\n 'timed-metadata': {}\n }; // the mapping table ends at the end of the current section\n\n sectionLength = (payload[1] & 0x0f) << 8 | payload[2];\n tableEnd = 3 + sectionLength - 4; // to determine where the table is, we have to figure out how\n // long the program info descriptors are\n\n programInfoLength = (payload[10] & 0x0f) << 8 | payload[11]; // advance the offset to the first entry in the mapping table\n\n offset = 12 + programInfoLength;\n while (offset < tableEnd) {\n var streamType = payload[offset];\n var pid = (payload[offset + 1] & 0x1F) << 8 | payload[offset + 2]; // only map a single elementary_pid for audio and video stream types\n // TODO: should this be done for metadata too? for now maintain behavior of\n // multiple metadata streams\n\n if (streamType === StreamTypes$2.H264_STREAM_TYPE && self.programMapTable.video === null) {\n self.programMapTable.video = pid;\n } else if (streamType === StreamTypes$2.ADTS_STREAM_TYPE && self.programMapTable.audio === null) {\n self.programMapTable.audio = pid;\n } else if (streamType === StreamTypes$2.METADATA_STREAM_TYPE) {\n // map pid to stream type for metadata streams\n self.programMapTable['timed-metadata'][pid] = streamType;\n } // move to the next table entry\n // skip past the elementary stream descriptors, if present\n\n offset += ((payload[offset + 3] & 0x0F) << 8 | payload[offset + 4]) + 5;\n } // record the map on the packet as well\n\n pmt.programMapTable = self.programMapTable;\n };\n /**\n * Deliver a new MP2T packet to the next stream in the pipeline.\n */\n\n this.push = function (packet) {\n var result = {},\n offset = 4;\n result.payloadUnitStartIndicator = !!(packet[1] & 0x40); // pid is a 13-bit field starting at the last bit of packet[1]\n\n result.pid = packet[1] & 0x1f;\n result.pid <<= 8;\n result.pid |= packet[2]; // if an adaption field is present, its length is specified by the\n // fifth byte of the TS packet header. The adaptation field is\n // used to add stuffing to PES packets that don't fill a complete\n // TS packet, and to specify some forms of timing and control data\n // that we do not currently use.\n\n if ((packet[3] & 0x30) >>> 4 > 0x01) {\n offset += packet[offset] + 1;\n } // parse the rest of the packet based on the type\n\n if (result.pid === 0) {\n result.type = 'pat';\n parsePsi(packet.subarray(offset), result);\n this.trigger('data', result);\n } else if (result.pid === this.pmtPid) {\n result.type = 'pmt';\n parsePsi(packet.subarray(offset), result);\n this.trigger('data', result); // if there are any packets waiting for a PMT to be found, process them now\n\n while (this.packetsWaitingForPmt.length) {\n this.processPes_.apply(this, this.packetsWaitingForPmt.shift());\n }\n } else if (this.programMapTable === undefined) {\n // When we have not seen a PMT yet, defer further processing of\n // PES packets until one has been parsed\n this.packetsWaitingForPmt.push([packet, offset, result]);\n } else {\n this.processPes_(packet, offset, result);\n }\n };\n this.processPes_ = function (packet, offset, result) {\n // set the appropriate stream type\n if (result.pid === this.programMapTable.video) {\n result.streamType = StreamTypes$2.H264_STREAM_TYPE;\n } else if (result.pid === this.programMapTable.audio) {\n result.streamType = StreamTypes$2.ADTS_STREAM_TYPE;\n } else {\n // if not video or audio, it is timed-metadata or unknown\n // if unknown, streamType will be undefined\n result.streamType = this.programMapTable['timed-metadata'][result.pid];\n }\n result.type = 'pes';\n result.data = packet.subarray(offset);\n this.trigger('data', result);\n };\n };\n TransportParseStream.prototype = new Stream$4();\n TransportParseStream.STREAM_TYPES = {\n h264: 0x1b,\n adts: 0x0f\n };\n /**\n * Reconsistutes program elementary stream (PES) packets from parsed\n * transport stream packets. That is, if you pipe an\n * mp2t.TransportParseStream into a mp2t.ElementaryStream, the output\n * events will be events which capture the bytes for individual PES\n * packets plus relevant metadata that has been extracted from the\n * container.\n */\n\n ElementaryStream = function () {\n var self = this,\n segmentHadPmt = false,\n // PES packet fragments\n video = {\n data: [],\n size: 0\n },\n audio = {\n data: [],\n size: 0\n },\n timedMetadata = {\n data: [],\n size: 0\n },\n programMapTable,\n parsePes = function (payload, pes) {\n var ptsDtsFlags;\n const startPrefix = payload[0] << 16 | payload[1] << 8 | payload[2]; // default to an empty array\n\n pes.data = new Uint8Array(); // In certain live streams, the start of a TS fragment has ts packets\n // that are frame data that is continuing from the previous fragment. This\n // is to check that the pes data is the start of a new pes payload\n\n if (startPrefix !== 1) {\n return;\n } // get the packet length, this will be 0 for video\n\n pes.packetLength = 6 + (payload[4] << 8 | payload[5]); // find out if this packets starts a new keyframe\n\n pes.dataAlignmentIndicator = (payload[6] & 0x04) !== 0; // PES packets may be annotated with a PTS value, or a PTS value\n // and a DTS value. Determine what combination of values is\n // available to work with.\n\n ptsDtsFlags = payload[7]; // PTS and DTS are normally stored as a 33-bit number. Javascript\n // performs all bitwise operations on 32-bit integers but javascript\n // supports a much greater range (52-bits) of integer using standard\n // mathematical operations.\n // We construct a 31-bit value using bitwise operators over the 31\n // most significant bits and then multiply by 4 (equal to a left-shift\n // of 2) before we add the final 2 least significant bits of the\n // timestamp (equal to an OR.)\n\n if (ptsDtsFlags & 0xC0) {\n // the PTS and DTS are not written out directly. For information\n // on how they are encoded, see\n // http://dvd.sourceforge.net/dvdinfo/pes-hdr.html\n pes.pts = (payload[9] & 0x0E) << 27 | (payload[10] & 0xFF) << 20 | (payload[11] & 0xFE) << 12 | (payload[12] & 0xFF) << 5 | (payload[13] & 0xFE) >>> 3;\n pes.pts *= 4; // Left shift by 2\n\n pes.pts += (payload[13] & 0x06) >>> 1; // OR by the two LSBs\n\n pes.dts = pes.pts;\n if (ptsDtsFlags & 0x40) {\n pes.dts = (payload[14] & 0x0E) << 27 | (payload[15] & 0xFF) << 20 | (payload[16] & 0xFE) << 12 | (payload[17] & 0xFF) << 5 | (payload[18] & 0xFE) >>> 3;\n pes.dts *= 4; // Left shift by 2\n\n pes.dts += (payload[18] & 0x06) >>> 1; // OR by the two LSBs\n }\n } // the data section starts immediately after the PES header.\n // pes_header_data_length specifies the number of header bytes\n // that follow the last byte of the field.\n\n pes.data = payload.subarray(9 + payload[8]);\n },\n /**\n * Pass completely parsed PES packets to the next stream in the pipeline\n **/\n flushStream = function (stream, type, forceFlush) {\n var packetData = new Uint8Array(stream.size),\n event = {\n type: type\n },\n i = 0,\n offset = 0,\n packetFlushable = false,\n fragment; // do nothing if there is not enough buffered data for a complete\n // PES header\n\n if (!stream.data.length || stream.size < 9) {\n return;\n }\n event.trackId = stream.data[0].pid; // reassemble the packet\n\n for (i = 0; i < stream.data.length; i++) {\n fragment = stream.data[i];\n packetData.set(fragment.data, offset);\n offset += fragment.data.byteLength;\n } // parse assembled packet's PES header\n\n parsePes(packetData, event); // non-video PES packets MUST have a non-zero PES_packet_length\n // check that there is enough stream data to fill the packet\n\n packetFlushable = type === 'video' || event.packetLength <= stream.size; // flush pending packets if the conditions are right\n\n if (forceFlush || packetFlushable) {\n stream.size = 0;\n stream.data.length = 0;\n } // only emit packets that are complete. this is to avoid assembling\n // incomplete PES packets due to poor segmentation\n\n if (packetFlushable) {\n self.trigger('data', event);\n }\n };\n ElementaryStream.prototype.init.call(this);\n /**\n * Identifies M2TS packet types and parses PES packets using metadata\n * parsed from the PMT\n **/\n\n this.push = function (data) {\n ({\n pat: function () {// we have to wait for the PMT to arrive as well before we\n // have any meaningful metadata\n },\n pes: function () {\n var stream, streamType;\n switch (data.streamType) {\n case StreamTypes$2.H264_STREAM_TYPE:\n stream = video;\n streamType = 'video';\n break;\n case StreamTypes$2.ADTS_STREAM_TYPE:\n stream = audio;\n streamType = 'audio';\n break;\n case StreamTypes$2.METADATA_STREAM_TYPE:\n stream = timedMetadata;\n streamType = 'timed-metadata';\n break;\n default:\n // ignore unknown stream types\n return;\n } // if a new packet is starting, we can flush the completed\n // packet\n\n if (data.payloadUnitStartIndicator) {\n flushStream(stream, streamType, true);\n } // buffer this fragment until we are sure we've received the\n // complete payload\n\n stream.data.push(data);\n stream.size += data.data.byteLength;\n },\n pmt: function () {\n var event = {\n type: 'metadata',\n tracks: []\n };\n programMapTable = data.programMapTable; // translate audio and video streams to tracks\n\n if (programMapTable.video !== null) {\n event.tracks.push({\n timelineStartInfo: {\n baseMediaDecodeTime: 0\n },\n id: +programMapTable.video,\n codec: 'avc',\n type: 'video'\n });\n }\n if (programMapTable.audio !== null) {\n event.tracks.push({\n timelineStartInfo: {\n baseMediaDecodeTime: 0\n },\n id: +programMapTable.audio,\n codec: 'adts',\n type: 'audio'\n });\n }\n segmentHadPmt = true;\n self.trigger('data', event);\n }\n })[data.type]();\n };\n this.reset = function () {\n video.size = 0;\n video.data.length = 0;\n audio.size = 0;\n audio.data.length = 0;\n this.trigger('reset');\n };\n /**\n * Flush any remaining input. Video PES packets may be of variable\n * length. Normally, the start of a new video packet can trigger the\n * finalization of the previous packet. That is not possible if no\n * more video is forthcoming, however. In that case, some other\n * mechanism (like the end of the file) has to be employed. When it is\n * clear that no additional data is forthcoming, calling this method\n * will flush the buffered packets.\n */\n\n this.flushStreams_ = function () {\n // !!THIS ORDER IS IMPORTANT!!\n // video first then audio\n flushStream(video, 'video');\n flushStream(audio, 'audio');\n flushStream(timedMetadata, 'timed-metadata');\n };\n this.flush = function () {\n // if on flush we haven't had a pmt emitted\n // and we have a pmt to emit. emit the pmt\n // so that we trigger a trackinfo downstream.\n if (!segmentHadPmt && programMapTable) {\n var pmt = {\n type: 'metadata',\n tracks: []\n }; // translate audio and video streams to tracks\n\n if (programMapTable.video !== null) {\n pmt.tracks.push({\n timelineStartInfo: {\n baseMediaDecodeTime: 0\n },\n id: +programMapTable.video,\n codec: 'avc',\n type: 'video'\n });\n }\n if (programMapTable.audio !== null) {\n pmt.tracks.push({\n timelineStartInfo: {\n baseMediaDecodeTime: 0\n },\n id: +programMapTable.audio,\n codec: 'adts',\n type: 'audio'\n });\n }\n self.trigger('data', pmt);\n }\n segmentHadPmt = false;\n this.flushStreams_();\n this.trigger('done');\n };\n };\n ElementaryStream.prototype = new Stream$4();\n var m2ts$1 = {\n PAT_PID: 0x0000,\n MP2T_PACKET_LENGTH: MP2T_PACKET_LENGTH$1,\n TransportPacketStream: TransportPacketStream,\n TransportParseStream: TransportParseStream,\n ElementaryStream: ElementaryStream,\n TimestampRolloverStream: TimestampRolloverStream,\n CaptionStream: CaptionStream$1.CaptionStream,\n Cea608Stream: CaptionStream$1.Cea608Stream,\n Cea708Stream: CaptionStream$1.Cea708Stream,\n MetadataStream: metadataStream\n };\n for (var type in StreamTypes$2) {\n if (StreamTypes$2.hasOwnProperty(type)) {\n m2ts$1[type] = StreamTypes$2[type];\n }\n }\n var m2ts_1 = m2ts$1;\n /**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n */\n\n var Stream$3 = stream;\n var ONE_SECOND_IN_TS$2 = clock$2.ONE_SECOND_IN_TS;\n var AdtsStream$1;\n var ADTS_SAMPLING_FREQUENCIES$1 = [96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000, 7350];\n /*\n * Accepts a ElementaryStream and emits data events with parsed\n * AAC Audio Frames of the individual packets. Input audio in ADTS\n * format is unpacked and re-emitted as AAC frames.\n *\n * @see http://wiki.multimedia.cx/index.php?title=ADTS\n * @see http://wiki.multimedia.cx/?title=Understanding_AAC\n */\n\n AdtsStream$1 = function (handlePartialSegments) {\n var buffer,\n frameNum = 0;\n AdtsStream$1.prototype.init.call(this);\n this.skipWarn_ = function (start, end) {\n this.trigger('log', {\n level: 'warn',\n message: `adts skiping bytes ${start} to ${end} in frame ${frameNum} outside syncword`\n });\n };\n this.push = function (packet) {\n var i = 0,\n frameLength,\n protectionSkipBytes,\n oldBuffer,\n sampleCount,\n adtsFrameDuration;\n if (!handlePartialSegments) {\n frameNum = 0;\n }\n if (packet.type !== 'audio') {\n // ignore non-audio data\n return;\n } // Prepend any data in the buffer to the input data so that we can parse\n // aac frames the cross a PES packet boundary\n\n if (buffer && buffer.length) {\n oldBuffer = buffer;\n buffer = new Uint8Array(oldBuffer.byteLength + packet.data.byteLength);\n buffer.set(oldBuffer);\n buffer.set(packet.data, oldBuffer.byteLength);\n } else {\n buffer = packet.data;\n } // unpack any ADTS frames which have been fully received\n // for details on the ADTS header, see http://wiki.multimedia.cx/index.php?title=ADTS\n\n var skip; // We use i + 7 here because we want to be able to parse the entire header.\n // If we don't have enough bytes to do that, then we definitely won't have a full frame.\n\n while (i + 7 < buffer.length) {\n // Look for the start of an ADTS header..\n if (buffer[i] !== 0xFF || (buffer[i + 1] & 0xF6) !== 0xF0) {\n if (typeof skip !== 'number') {\n skip = i;\n } // If a valid header was not found, jump one forward and attempt to\n // find a valid ADTS header starting at the next byte\n\n i++;\n continue;\n }\n if (typeof skip === 'number') {\n this.skipWarn_(skip, i);\n skip = null;\n } // The protection skip bit tells us if we have 2 bytes of CRC data at the\n // end of the ADTS header\n\n protectionSkipBytes = (~buffer[i + 1] & 0x01) * 2; // Frame length is a 13 bit integer starting 16 bits from the\n // end of the sync sequence\n // NOTE: frame length includes the size of the header\n\n frameLength = (buffer[i + 3] & 0x03) << 11 | buffer[i + 4] << 3 | (buffer[i + 5] & 0xe0) >> 5;\n sampleCount = ((buffer[i + 6] & 0x03) + 1) * 1024;\n adtsFrameDuration = sampleCount * ONE_SECOND_IN_TS$2 / ADTS_SAMPLING_FREQUENCIES$1[(buffer[i + 2] & 0x3c) >>> 2]; // If we don't have enough data to actually finish this ADTS frame,\n // then we have to wait for more data\n\n if (buffer.byteLength - i < frameLength) {\n break;\n } // Otherwise, deliver the complete AAC frame\n\n this.trigger('data', {\n pts: packet.pts + frameNum * adtsFrameDuration,\n dts: packet.dts + frameNum * adtsFrameDuration,\n sampleCount: sampleCount,\n audioobjecttype: (buffer[i + 2] >>> 6 & 0x03) + 1,\n channelcount: (buffer[i + 2] & 1) << 2 | (buffer[i + 3] & 0xc0) >>> 6,\n samplerate: ADTS_SAMPLING_FREQUENCIES$1[(buffer[i + 2] & 0x3c) >>> 2],\n samplingfrequencyindex: (buffer[i + 2] & 0x3c) >>> 2,\n // assume ISO/IEC 14496-12 AudioSampleEntry default of 16\n samplesize: 16,\n // data is the frame without it's header\n data: buffer.subarray(i + 7 + protectionSkipBytes, i + frameLength)\n });\n frameNum++;\n i += frameLength;\n }\n if (typeof skip === 'number') {\n this.skipWarn_(skip, i);\n skip = null;\n } // remove processed bytes from the buffer.\n\n buffer = buffer.subarray(i);\n };\n this.flush = function () {\n frameNum = 0;\n this.trigger('done');\n };\n this.reset = function () {\n buffer = void 0;\n this.trigger('reset');\n };\n this.endTimeline = function () {\n buffer = void 0;\n this.trigger('endedtimeline');\n };\n };\n AdtsStream$1.prototype = new Stream$3();\n var adts = AdtsStream$1;\n /**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n */\n\n var ExpGolomb$1;\n /**\n * Parser for exponential Golomb codes, a variable-bitwidth number encoding\n * scheme used by h264.\n */\n\n ExpGolomb$1 = function (workingData) {\n var\n // the number of bytes left to examine in workingData\n workingBytesAvailable = workingData.byteLength,\n // the current word being examined\n workingWord = 0,\n // :uint\n // the number of bits left to examine in the current word\n workingBitsAvailable = 0; // :uint;\n // ():uint\n\n this.length = function () {\n return 8 * workingBytesAvailable;\n }; // ():uint\n\n this.bitsAvailable = function () {\n return 8 * workingBytesAvailable + workingBitsAvailable;\n }; // ():void\n\n this.loadWord = function () {\n var position = workingData.byteLength - workingBytesAvailable,\n workingBytes = new Uint8Array(4),\n availableBytes = Math.min(4, workingBytesAvailable);\n if (availableBytes === 0) {\n throw new Error('no bytes available');\n }\n workingBytes.set(workingData.subarray(position, position + availableBytes));\n workingWord = new DataView(workingBytes.buffer).getUint32(0); // track the amount of workingData that has been processed\n\n workingBitsAvailable = availableBytes * 8;\n workingBytesAvailable -= availableBytes;\n }; // (count:int):void\n\n this.skipBits = function (count) {\n var skipBytes; // :int\n\n if (workingBitsAvailable > count) {\n workingWord <<= count;\n workingBitsAvailable -= count;\n } else {\n count -= workingBitsAvailable;\n skipBytes = Math.floor(count / 8);\n count -= skipBytes * 8;\n workingBytesAvailable -= skipBytes;\n this.loadWord();\n workingWord <<= count;\n workingBitsAvailable -= count;\n }\n }; // (size:int):uint\n\n this.readBits = function (size) {\n var bits = Math.min(workingBitsAvailable, size),\n // :uint\n valu = workingWord >>> 32 - bits; // :uint\n // if size > 31, handle error\n\n workingBitsAvailable -= bits;\n if (workingBitsAvailable > 0) {\n workingWord <<= bits;\n } else if (workingBytesAvailable > 0) {\n this.loadWord();\n }\n bits = size - bits;\n if (bits > 0) {\n return valu << bits | this.readBits(bits);\n }\n return valu;\n }; // ():uint\n\n this.skipLeadingZeros = function () {\n var leadingZeroCount; // :uint\n\n for (leadingZeroCount = 0; leadingZeroCount < workingBitsAvailable; ++leadingZeroCount) {\n if ((workingWord & 0x80000000 >>> leadingZeroCount) !== 0) {\n // the first bit of working word is 1\n workingWord <<= leadingZeroCount;\n workingBitsAvailable -= leadingZeroCount;\n return leadingZeroCount;\n }\n } // we exhausted workingWord and still have not found a 1\n\n this.loadWord();\n return leadingZeroCount + this.skipLeadingZeros();\n }; // ():void\n\n this.skipUnsignedExpGolomb = function () {\n this.skipBits(1 + this.skipLeadingZeros());\n }; // ():void\n\n this.skipExpGolomb = function () {\n this.skipBits(1 + this.skipLeadingZeros());\n }; // ():uint\n\n this.readUnsignedExpGolomb = function () {\n var clz = this.skipLeadingZeros(); // :uint\n\n return this.readBits(clz + 1) - 1;\n }; // ():int\n\n this.readExpGolomb = function () {\n var valu = this.readUnsignedExpGolomb(); // :int\n\n if (0x01 & valu) {\n // the number is odd if the low order bit is set\n return 1 + valu >>> 1; // add 1 to make it even, and divide by 2\n }\n return -1 * (valu >>> 1); // divide by two then make it negative\n }; // Some convenience functions\n // :Boolean\n\n this.readBoolean = function () {\n return this.readBits(1) === 1;\n }; // ():int\n\n this.readUnsignedByte = function () {\n return this.readBits(8);\n };\n this.loadWord();\n };\n var expGolomb = ExpGolomb$1;\n /**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n */\n\n var Stream$2 = stream;\n var ExpGolomb = expGolomb;\n var H264Stream$1, NalByteStream;\n var PROFILES_WITH_OPTIONAL_SPS_DATA;\n /**\n * Accepts a NAL unit byte stream and unpacks the embedded NAL units.\n */\n\n NalByteStream = function () {\n var syncPoint = 0,\n i,\n buffer;\n NalByteStream.prototype.init.call(this);\n /*\n * Scans a byte stream and triggers a data event with the NAL units found.\n * @param {Object} data Event received from H264Stream\n * @param {Uint8Array} data.data The h264 byte stream to be scanned\n *\n * @see H264Stream.push\n */\n\n this.push = function (data) {\n var swapBuffer;\n if (!buffer) {\n buffer = data.data;\n } else {\n swapBuffer = new Uint8Array(buffer.byteLength + data.data.byteLength);\n swapBuffer.set(buffer);\n swapBuffer.set(data.data, buffer.byteLength);\n buffer = swapBuffer;\n }\n var len = buffer.byteLength; // Rec. ITU-T H.264, Annex B\n // scan for NAL unit boundaries\n // a match looks like this:\n // 0 0 1 .. NAL .. 0 0 1\n // ^ sync point ^ i\n // or this:\n // 0 0 1 .. NAL .. 0 0 0\n // ^ sync point ^ i\n // advance the sync point to a NAL start, if necessary\n\n for (; syncPoint < len - 3; syncPoint++) {\n if (buffer[syncPoint + 2] === 1) {\n // the sync point is properly aligned\n i = syncPoint + 5;\n break;\n }\n }\n while (i < len) {\n // look at the current byte to determine if we've hit the end of\n // a NAL unit boundary\n switch (buffer[i]) {\n case 0:\n // skip past non-sync sequences\n if (buffer[i - 1] !== 0) {\n i += 2;\n break;\n } else if (buffer[i - 2] !== 0) {\n i++;\n break;\n } // deliver the NAL unit if it isn't empty\n\n if (syncPoint + 3 !== i - 2) {\n this.trigger('data', buffer.subarray(syncPoint + 3, i - 2));\n } // drop trailing zeroes\n\n do {\n i++;\n } while (buffer[i] !== 1 && i < len);\n syncPoint = i - 2;\n i += 3;\n break;\n case 1:\n // skip past non-sync sequences\n if (buffer[i - 1] !== 0 || buffer[i - 2] !== 0) {\n i += 3;\n break;\n } // deliver the NAL unit\n\n this.trigger('data', buffer.subarray(syncPoint + 3, i - 2));\n syncPoint = i - 2;\n i += 3;\n break;\n default:\n // the current byte isn't a one or zero, so it cannot be part\n // of a sync sequence\n i += 3;\n break;\n }\n } // filter out the NAL units that were delivered\n\n buffer = buffer.subarray(syncPoint);\n i -= syncPoint;\n syncPoint = 0;\n };\n this.reset = function () {\n buffer = null;\n syncPoint = 0;\n this.trigger('reset');\n };\n this.flush = function () {\n // deliver the last buffered NAL unit\n if (buffer && buffer.byteLength > 3) {\n this.trigger('data', buffer.subarray(syncPoint + 3));\n } // reset the stream state\n\n buffer = null;\n syncPoint = 0;\n this.trigger('done');\n };\n this.endTimeline = function () {\n this.flush();\n this.trigger('endedtimeline');\n };\n };\n NalByteStream.prototype = new Stream$2(); // values of profile_idc that indicate additional fields are included in the SPS\n // see Recommendation ITU-T H.264 (4/2013),\n // 7.3.2.1.1 Sequence parameter set data syntax\n\n PROFILES_WITH_OPTIONAL_SPS_DATA = {\n 100: true,\n 110: true,\n 122: true,\n 244: true,\n 44: true,\n 83: true,\n 86: true,\n 118: true,\n 128: true,\n // TODO: the three profiles below don't\n // appear to have sps data in the specificiation anymore?\n 138: true,\n 139: true,\n 134: true\n };\n /**\n * Accepts input from a ElementaryStream and produces H.264 NAL unit data\n * events.\n */\n\n H264Stream$1 = function () {\n var nalByteStream = new NalByteStream(),\n self,\n trackId,\n currentPts,\n currentDts,\n discardEmulationPreventionBytes,\n readSequenceParameterSet,\n skipScalingList;\n H264Stream$1.prototype.init.call(this);\n self = this;\n /*\n * Pushes a packet from a stream onto the NalByteStream\n *\n * @param {Object} packet - A packet received from a stream\n * @param {Uint8Array} packet.data - The raw bytes of the packet\n * @param {Number} packet.dts - Decode timestamp of the packet\n * @param {Number} packet.pts - Presentation timestamp of the packet\n * @param {Number} packet.trackId - The id of the h264 track this packet came from\n * @param {('video'|'audio')} packet.type - The type of packet\n *\n */\n\n this.push = function (packet) {\n if (packet.type !== 'video') {\n return;\n }\n trackId = packet.trackId;\n currentPts = packet.pts;\n currentDts = packet.dts;\n nalByteStream.push(packet);\n };\n /*\n * Identify NAL unit types and pass on the NALU, trackId, presentation and decode timestamps\n * for the NALUs to the next stream component.\n * Also, preprocess caption and sequence parameter NALUs.\n *\n * @param {Uint8Array} data - A NAL unit identified by `NalByteStream.push`\n * @see NalByteStream.push\n */\n\n nalByteStream.on('data', function (data) {\n var event = {\n trackId: trackId,\n pts: currentPts,\n dts: currentDts,\n data: data,\n nalUnitTypeCode: data[0] & 0x1f\n };\n switch (event.nalUnitTypeCode) {\n case 0x05:\n event.nalUnitType = 'slice_layer_without_partitioning_rbsp_idr';\n break;\n case 0x06:\n event.nalUnitType = 'sei_rbsp';\n event.escapedRBSP = discardEmulationPreventionBytes(data.subarray(1));\n break;\n case 0x07:\n event.nalUnitType = 'seq_parameter_set_rbsp';\n event.escapedRBSP = discardEmulationPreventionBytes(data.subarray(1));\n event.config = readSequenceParameterSet(event.escapedRBSP);\n break;\n case 0x08:\n event.nalUnitType = 'pic_parameter_set_rbsp';\n break;\n case 0x09:\n event.nalUnitType = 'access_unit_delimiter_rbsp';\n break;\n } // This triggers data on the H264Stream\n\n self.trigger('data', event);\n });\n nalByteStream.on('done', function () {\n self.trigger('done');\n });\n nalByteStream.on('partialdone', function () {\n self.trigger('partialdone');\n });\n nalByteStream.on('reset', function () {\n self.trigger('reset');\n });\n nalByteStream.on('endedtimeline', function () {\n self.trigger('endedtimeline');\n });\n this.flush = function () {\n nalByteStream.flush();\n };\n this.partialFlush = function () {\n nalByteStream.partialFlush();\n };\n this.reset = function () {\n nalByteStream.reset();\n };\n this.endTimeline = function () {\n nalByteStream.endTimeline();\n };\n /**\n * Advance the ExpGolomb decoder past a scaling list. The scaling\n * list is optionally transmitted as part of a sequence parameter\n * set and is not relevant to transmuxing.\n * @param count {number} the number of entries in this scaling list\n * @param expGolombDecoder {object} an ExpGolomb pointed to the\n * start of a scaling list\n * @see Recommendation ITU-T H.264, Section 7.3.2.1.1.1\n */\n\n skipScalingList = function (count, expGolombDecoder) {\n var lastScale = 8,\n nextScale = 8,\n j,\n deltaScale;\n for (j = 0; j < count; j++) {\n if (nextScale !== 0) {\n deltaScale = expGolombDecoder.readExpGolomb();\n nextScale = (lastScale + deltaScale + 256) % 256;\n }\n lastScale = nextScale === 0 ? lastScale : nextScale;\n }\n };\n /**\n * Expunge any \"Emulation Prevention\" bytes from a \"Raw Byte\n * Sequence Payload\"\n * @param data {Uint8Array} the bytes of a RBSP from a NAL\n * unit\n * @return {Uint8Array} the RBSP without any Emulation\n * Prevention Bytes\n */\n\n discardEmulationPreventionBytes = function (data) {\n var length = data.byteLength,\n emulationPreventionBytesPositions = [],\n i = 1,\n newLength,\n newData; // Find all `Emulation Prevention Bytes`\n\n while (i < length - 2) {\n if (data[i] === 0 && data[i + 1] === 0 && data[i + 2] === 0x03) {\n emulationPreventionBytesPositions.push(i + 2);\n i += 2;\n } else {\n i++;\n }\n } // If no Emulation Prevention Bytes were found just return the original\n // array\n\n if (emulationPreventionBytesPositions.length === 0) {\n return data;\n } // Create a new array to hold the NAL unit data\n\n newLength = length - emulationPreventionBytesPositions.length;\n newData = new Uint8Array(newLength);\n var sourceIndex = 0;\n for (i = 0; i < newLength; sourceIndex++, i++) {\n if (sourceIndex === emulationPreventionBytesPositions[0]) {\n // Skip this byte\n sourceIndex++; // Remove this position index\n\n emulationPreventionBytesPositions.shift();\n }\n newData[i] = data[sourceIndex];\n }\n return newData;\n };\n /**\n * Read a sequence parameter set and return some interesting video\n * properties. A sequence parameter set is the H264 metadata that\n * describes the properties of upcoming video frames.\n * @param data {Uint8Array} the bytes of a sequence parameter set\n * @return {object} an object with configuration parsed from the\n * sequence parameter set, including the dimensions of the\n * associated video frames.\n */\n\n readSequenceParameterSet = function (data) {\n var frameCropLeftOffset = 0,\n frameCropRightOffset = 0,\n frameCropTopOffset = 0,\n frameCropBottomOffset = 0,\n expGolombDecoder,\n profileIdc,\n levelIdc,\n profileCompatibility,\n chromaFormatIdc,\n picOrderCntType,\n numRefFramesInPicOrderCntCycle,\n picWidthInMbsMinus1,\n picHeightInMapUnitsMinus1,\n frameMbsOnlyFlag,\n scalingListCount,\n sarRatio = [1, 1],\n aspectRatioIdc,\n i;\n expGolombDecoder = new ExpGolomb(data);\n profileIdc = expGolombDecoder.readUnsignedByte(); // profile_idc\n\n profileCompatibility = expGolombDecoder.readUnsignedByte(); // constraint_set[0-5]_flag\n\n levelIdc = expGolombDecoder.readUnsignedByte(); // level_idc u(8)\n\n expGolombDecoder.skipUnsignedExpGolomb(); // seq_parameter_set_id\n // some profiles have more optional data we don't need\n\n if (PROFILES_WITH_OPTIONAL_SPS_DATA[profileIdc]) {\n chromaFormatIdc = expGolombDecoder.readUnsignedExpGolomb();\n if (chromaFormatIdc === 3) {\n expGolombDecoder.skipBits(1); // separate_colour_plane_flag\n }\n expGolombDecoder.skipUnsignedExpGolomb(); // bit_depth_luma_minus8\n\n expGolombDecoder.skipUnsignedExpGolomb(); // bit_depth_chroma_minus8\n\n expGolombDecoder.skipBits(1); // qpprime_y_zero_transform_bypass_flag\n\n if (expGolombDecoder.readBoolean()) {\n // seq_scaling_matrix_present_flag\n scalingListCount = chromaFormatIdc !== 3 ? 8 : 12;\n for (i = 0; i < scalingListCount; i++) {\n if (expGolombDecoder.readBoolean()) {\n // seq_scaling_list_present_flag[ i ]\n if (i < 6) {\n skipScalingList(16, expGolombDecoder);\n } else {\n skipScalingList(64, expGolombDecoder);\n }\n }\n }\n }\n }\n expGolombDecoder.skipUnsignedExpGolomb(); // log2_max_frame_num_minus4\n\n picOrderCntType = expGolombDecoder.readUnsignedExpGolomb();\n if (picOrderCntType === 0) {\n expGolombDecoder.readUnsignedExpGolomb(); // log2_max_pic_order_cnt_lsb_minus4\n } else if (picOrderCntType === 1) {\n expGolombDecoder.skipBits(1); // delta_pic_order_always_zero_flag\n\n expGolombDecoder.skipExpGolomb(); // offset_for_non_ref_pic\n\n expGolombDecoder.skipExpGolomb(); // offset_for_top_to_bottom_field\n\n numRefFramesInPicOrderCntCycle = expGolombDecoder.readUnsignedExpGolomb();\n for (i = 0; i < numRefFramesInPicOrderCntCycle; i++) {\n expGolombDecoder.skipExpGolomb(); // offset_for_ref_frame[ i ]\n }\n }\n expGolombDecoder.skipUnsignedExpGolomb(); // max_num_ref_frames\n\n expGolombDecoder.skipBits(1); // gaps_in_frame_num_value_allowed_flag\n\n picWidthInMbsMinus1 = expGolombDecoder.readUnsignedExpGolomb();\n picHeightInMapUnitsMinus1 = expGolombDecoder.readUnsignedExpGolomb();\n frameMbsOnlyFlag = expGolombDecoder.readBits(1);\n if (frameMbsOnlyFlag === 0) {\n expGolombDecoder.skipBits(1); // mb_adaptive_frame_field_flag\n }\n expGolombDecoder.skipBits(1); // direct_8x8_inference_flag\n\n if (expGolombDecoder.readBoolean()) {\n // frame_cropping_flag\n frameCropLeftOffset = expGolombDecoder.readUnsignedExpGolomb();\n frameCropRightOffset = expGolombDecoder.readUnsignedExpGolomb();\n frameCropTopOffset = expGolombDecoder.readUnsignedExpGolomb();\n frameCropBottomOffset = expGolombDecoder.readUnsignedExpGolomb();\n }\n if (expGolombDecoder.readBoolean()) {\n // vui_parameters_present_flag\n if (expGolombDecoder.readBoolean()) {\n // aspect_ratio_info_present_flag\n aspectRatioIdc = expGolombDecoder.readUnsignedByte();\n switch (aspectRatioIdc) {\n case 1:\n sarRatio = [1, 1];\n break;\n case 2:\n sarRatio = [12, 11];\n break;\n case 3:\n sarRatio = [10, 11];\n break;\n case 4:\n sarRatio = [16, 11];\n break;\n case 5:\n sarRatio = [40, 33];\n break;\n case 6:\n sarRatio = [24, 11];\n break;\n case 7:\n sarRatio = [20, 11];\n break;\n case 8:\n sarRatio = [32, 11];\n break;\n case 9:\n sarRatio = [80, 33];\n break;\n case 10:\n sarRatio = [18, 11];\n break;\n case 11:\n sarRatio = [15, 11];\n break;\n case 12:\n sarRatio = [64, 33];\n break;\n case 13:\n sarRatio = [160, 99];\n break;\n case 14:\n sarRatio = [4, 3];\n break;\n case 15:\n sarRatio = [3, 2];\n break;\n case 16:\n sarRatio = [2, 1];\n break;\n case 255:\n {\n sarRatio = [expGolombDecoder.readUnsignedByte() << 8 | expGolombDecoder.readUnsignedByte(), expGolombDecoder.readUnsignedByte() << 8 | expGolombDecoder.readUnsignedByte()];\n break;\n }\n }\n if (sarRatio) {\n sarRatio[0] / sarRatio[1];\n }\n }\n }\n return {\n profileIdc: profileIdc,\n levelIdc: levelIdc,\n profileCompatibility: profileCompatibility,\n width: (picWidthInMbsMinus1 + 1) * 16 - frameCropLeftOffset * 2 - frameCropRightOffset * 2,\n height: (2 - frameMbsOnlyFlag) * (picHeightInMapUnitsMinus1 + 1) * 16 - frameCropTopOffset * 2 - frameCropBottomOffset * 2,\n // sar is sample aspect ratio\n sarRatio: sarRatio\n };\n };\n };\n H264Stream$1.prototype = new Stream$2();\n var h264 = {\n H264Stream: H264Stream$1,\n NalByteStream: NalByteStream\n };\n /**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n *\n * Utilities to detect basic properties and metadata about Aac data.\n */\n\n var ADTS_SAMPLING_FREQUENCIES = [96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000, 7350];\n var parseId3TagSize = function (header, byteIndex) {\n var returnSize = header[byteIndex + 6] << 21 | header[byteIndex + 7] << 14 | header[byteIndex + 8] << 7 | header[byteIndex + 9],\n flags = header[byteIndex + 5],\n footerPresent = (flags & 16) >> 4; // if we get a negative returnSize clamp it to 0\n\n returnSize = returnSize >= 0 ? returnSize : 0;\n if (footerPresent) {\n return returnSize + 20;\n }\n return returnSize + 10;\n };\n var getId3Offset = function (data, offset) {\n if (data.length - offset < 10 || data[offset] !== 'I'.charCodeAt(0) || data[offset + 1] !== 'D'.charCodeAt(0) || data[offset + 2] !== '3'.charCodeAt(0)) {\n return offset;\n }\n offset += parseId3TagSize(data, offset);\n return getId3Offset(data, offset);\n }; // TODO: use vhs-utils\n\n var isLikelyAacData$1 = function (data) {\n var offset = getId3Offset(data, 0);\n return data.length >= offset + 2 && (data[offset] & 0xFF) === 0xFF && (data[offset + 1] & 0xF0) === 0xF0 &&\n // verify that the 2 layer bits are 0, aka this\n // is not mp3 data but aac data.\n (data[offset + 1] & 0x16) === 0x10;\n };\n var parseSyncSafeInteger = function (data) {\n return data[0] << 21 | data[1] << 14 | data[2] << 7 | data[3];\n }; // return a percent-encoded representation of the specified byte range\n // @see http://en.wikipedia.org/wiki/Percent-encoding\n\n var percentEncode = function (bytes, start, end) {\n var i,\n result = '';\n for (i = start; i < end; i++) {\n result += '%' + ('00' + bytes[i].toString(16)).slice(-2);\n }\n return result;\n }; // return the string representation of the specified byte range,\n // interpreted as ISO-8859-1.\n\n var parseIso88591 = function (bytes, start, end) {\n return unescape(percentEncode(bytes, start, end)); // jshint ignore:line\n };\n var parseAdtsSize = function (header, byteIndex) {\n var lowThree = (header[byteIndex + 5] & 0xE0) >> 5,\n middle = header[byteIndex + 4] << 3,\n highTwo = header[byteIndex + 3] & 0x3 << 11;\n return highTwo | middle | lowThree;\n };\n var parseType$4 = function (header, byteIndex) {\n if (header[byteIndex] === 'I'.charCodeAt(0) && header[byteIndex + 1] === 'D'.charCodeAt(0) && header[byteIndex + 2] === '3'.charCodeAt(0)) {\n return 'timed-metadata';\n } else if (header[byteIndex] & 0xff === 0xff && (header[byteIndex + 1] & 0xf0) === 0xf0) {\n return 'audio';\n }\n return null;\n };\n var parseSampleRate = function (packet) {\n var i = 0;\n while (i + 5 < packet.length) {\n if (packet[i] !== 0xFF || (packet[i + 1] & 0xF6) !== 0xF0) {\n // If a valid header was not found, jump one forward and attempt to\n // find a valid ADTS header starting at the next byte\n i++;\n continue;\n }\n return ADTS_SAMPLING_FREQUENCIES[(packet[i + 2] & 0x3c) >>> 2];\n }\n return null;\n };\n var parseAacTimestamp = function (packet) {\n var frameStart, frameSize, frame, frameHeader; // find the start of the first frame and the end of the tag\n\n frameStart = 10;\n if (packet[5] & 0x40) {\n // advance the frame start past the extended header\n frameStart += 4; // header size field\n\n frameStart += parseSyncSafeInteger(packet.subarray(10, 14));\n } // parse one or more ID3 frames\n // http://id3.org/id3v2.3.0#ID3v2_frame_overview\n\n do {\n // determine the number of bytes in this frame\n frameSize = parseSyncSafeInteger(packet.subarray(frameStart + 4, frameStart + 8));\n if (frameSize < 1) {\n return null;\n }\n frameHeader = String.fromCharCode(packet[frameStart], packet[frameStart + 1], packet[frameStart + 2], packet[frameStart + 3]);\n if (frameHeader === 'PRIV') {\n frame = packet.subarray(frameStart + 10, frameStart + frameSize + 10);\n for (var i = 0; i < frame.byteLength; i++) {\n if (frame[i] === 0) {\n var owner = parseIso88591(frame, 0, i);\n if (owner === 'com.apple.streaming.transportStreamTimestamp') {\n var d = frame.subarray(i + 1);\n var size = (d[3] & 0x01) << 30 | d[4] << 22 | d[5] << 14 | d[6] << 6 | d[7] >>> 2;\n size *= 4;\n size += d[7] & 0x03;\n return size;\n }\n break;\n }\n }\n }\n frameStart += 10; // advance past the frame header\n\n frameStart += frameSize; // advance past the frame body\n } while (frameStart < packet.byteLength);\n return null;\n };\n var utils = {\n isLikelyAacData: isLikelyAacData$1,\n parseId3TagSize: parseId3TagSize,\n parseAdtsSize: parseAdtsSize,\n parseType: parseType$4,\n parseSampleRate: parseSampleRate,\n parseAacTimestamp: parseAacTimestamp\n };\n /**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n *\n * A stream-based aac to mp4 converter. This utility can be used to\n * deliver mp4s to a SourceBuffer on platforms that support native\n * Media Source Extensions.\n */\n\n var Stream$1 = stream;\n var aacUtils = utils; // Constants\n\n var AacStream$1;\n /**\n * Splits an incoming stream of binary data into ADTS and ID3 Frames.\n */\n\n AacStream$1 = function () {\n var everything = new Uint8Array(),\n timeStamp = 0;\n AacStream$1.prototype.init.call(this);\n this.setTimestamp = function (timestamp) {\n timeStamp = timestamp;\n };\n this.push = function (bytes) {\n var frameSize = 0,\n byteIndex = 0,\n bytesLeft,\n chunk,\n packet,\n tempLength; // If there are bytes remaining from the last segment, prepend them to the\n // bytes that were pushed in\n\n if (everything.length) {\n tempLength = everything.length;\n everything = new Uint8Array(bytes.byteLength + tempLength);\n everything.set(everything.subarray(0, tempLength));\n everything.set(bytes, tempLength);\n } else {\n everything = bytes;\n }\n while (everything.length - byteIndex >= 3) {\n if (everything[byteIndex] === 'I'.charCodeAt(0) && everything[byteIndex + 1] === 'D'.charCodeAt(0) && everything[byteIndex + 2] === '3'.charCodeAt(0)) {\n // Exit early because we don't have enough to parse\n // the ID3 tag header\n if (everything.length - byteIndex < 10) {\n break;\n } // check framesize\n\n frameSize = aacUtils.parseId3TagSize(everything, byteIndex); // Exit early if we don't have enough in the buffer\n // to emit a full packet\n // Add to byteIndex to support multiple ID3 tags in sequence\n\n if (byteIndex + frameSize > everything.length) {\n break;\n }\n chunk = {\n type: 'timed-metadata',\n data: everything.subarray(byteIndex, byteIndex + frameSize)\n };\n this.trigger('data', chunk);\n byteIndex += frameSize;\n continue;\n } else if ((everything[byteIndex] & 0xff) === 0xff && (everything[byteIndex + 1] & 0xf0) === 0xf0) {\n // Exit early because we don't have enough to parse\n // the ADTS frame header\n if (everything.length - byteIndex < 7) {\n break;\n }\n frameSize = aacUtils.parseAdtsSize(everything, byteIndex); // Exit early if we don't have enough in the buffer\n // to emit a full packet\n\n if (byteIndex + frameSize > everything.length) {\n break;\n }\n packet = {\n type: 'audio',\n data: everything.subarray(byteIndex, byteIndex + frameSize),\n pts: timeStamp,\n dts: timeStamp\n };\n this.trigger('data', packet);\n byteIndex += frameSize;\n continue;\n }\n byteIndex++;\n }\n bytesLeft = everything.length - byteIndex;\n if (bytesLeft > 0) {\n everything = everything.subarray(byteIndex);\n } else {\n everything = new Uint8Array();\n }\n };\n this.reset = function () {\n everything = new Uint8Array();\n this.trigger('reset');\n };\n this.endTimeline = function () {\n everything = new Uint8Array();\n this.trigger('endedtimeline');\n };\n };\n AacStream$1.prototype = new Stream$1();\n var aac = AacStream$1;\n var AUDIO_PROPERTIES$1 = ['audioobjecttype', 'channelcount', 'samplerate', 'samplingfrequencyindex', 'samplesize'];\n var audioProperties = AUDIO_PROPERTIES$1;\n var VIDEO_PROPERTIES$1 = ['width', 'height', 'profileIdc', 'levelIdc', 'profileCompatibility', 'sarRatio'];\n var videoProperties = VIDEO_PROPERTIES$1;\n /**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n *\n * A stream-based mp2t to mp4 converter. This utility can be used to\n * deliver mp4s to a SourceBuffer on platforms that support native\n * Media Source Extensions.\n */\n\n var Stream = stream;\n var mp4 = mp4Generator;\n var frameUtils = frameUtils$1;\n var audioFrameUtils = audioFrameUtils$1;\n var trackDecodeInfo = trackDecodeInfo$1;\n var m2ts = m2ts_1;\n var clock = clock$2;\n var AdtsStream = adts;\n var H264Stream = h264.H264Stream;\n var AacStream = aac;\n var isLikelyAacData = utils.isLikelyAacData;\n var ONE_SECOND_IN_TS$1 = clock$2.ONE_SECOND_IN_TS;\n var AUDIO_PROPERTIES = audioProperties;\n var VIDEO_PROPERTIES = videoProperties; // object types\n\n var VideoSegmentStream, AudioSegmentStream, Transmuxer, CoalesceStream;\n var retriggerForStream = function (key, event) {\n event.stream = key;\n this.trigger('log', event);\n };\n var addPipelineLogRetriggers = function (transmuxer, pipeline) {\n var keys = Object.keys(pipeline);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]; // skip non-stream keys and headOfPipeline\n // which is just a duplicate\n\n if (key === 'headOfPipeline' || !pipeline[key].on) {\n continue;\n }\n pipeline[key].on('log', retriggerForStream.bind(transmuxer, key));\n }\n };\n /**\n * Compare two arrays (even typed) for same-ness\n */\n\n var arrayEquals = function (a, b) {\n var i;\n if (a.length !== b.length) {\n return false;\n } // compare the value of each element in the array\n\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n };\n var generateSegmentTimingInfo = function (baseMediaDecodeTime, startDts, startPts, endDts, endPts, prependedContentDuration) {\n var ptsOffsetFromDts = startPts - startDts,\n decodeDuration = endDts - startDts,\n presentationDuration = endPts - startPts; // The PTS and DTS values are based on the actual stream times from the segment,\n // however, the player time values will reflect a start from the baseMediaDecodeTime.\n // In order to provide relevant values for the player times, base timing info on the\n // baseMediaDecodeTime and the DTS and PTS durations of the segment.\n\n return {\n start: {\n dts: baseMediaDecodeTime,\n pts: baseMediaDecodeTime + ptsOffsetFromDts\n },\n end: {\n dts: baseMediaDecodeTime + decodeDuration,\n pts: baseMediaDecodeTime + presentationDuration\n },\n prependedContentDuration: prependedContentDuration,\n baseMediaDecodeTime: baseMediaDecodeTime\n };\n };\n /**\n * Constructs a single-track, ISO BMFF media segment from AAC data\n * events. The output of this stream can be fed to a SourceBuffer\n * configured with a suitable initialization segment.\n * @param track {object} track metadata configuration\n * @param options {object} transmuxer options object\n * @param options.keepOriginalTimestamps {boolean} If true, keep the timestamps\n * in the source; false to adjust the first segment to start at 0.\n */\n\n AudioSegmentStream = function (track, options) {\n var adtsFrames = [],\n sequenceNumber,\n earliestAllowedDts = 0,\n audioAppendStartTs = 0,\n videoBaseMediaDecodeTime = Infinity;\n options = options || {};\n sequenceNumber = options.firstSequenceNumber || 0;\n AudioSegmentStream.prototype.init.call(this);\n this.push = function (data) {\n trackDecodeInfo.collectDtsInfo(track, data);\n if (track) {\n AUDIO_PROPERTIES.forEach(function (prop) {\n track[prop] = data[prop];\n });\n } // buffer audio data until end() is called\n\n adtsFrames.push(data);\n };\n this.setEarliestDts = function (earliestDts) {\n earliestAllowedDts = earliestDts;\n };\n this.setVideoBaseMediaDecodeTime = function (baseMediaDecodeTime) {\n videoBaseMediaDecodeTime = baseMediaDecodeTime;\n };\n this.setAudioAppendStart = function (timestamp) {\n audioAppendStartTs = timestamp;\n };\n this.flush = function () {\n var frames, moof, mdat, boxes, frameDuration, segmentDuration, videoClockCyclesOfSilencePrefixed; // return early if no audio data has been observed\n\n if (adtsFrames.length === 0) {\n this.trigger('done', 'AudioSegmentStream');\n return;\n }\n frames = audioFrameUtils.trimAdtsFramesByEarliestDts(adtsFrames, track, earliestAllowedDts);\n track.baseMediaDecodeTime = trackDecodeInfo.calculateTrackBaseMediaDecodeTime(track, options.keepOriginalTimestamps); // amount of audio filled but the value is in video clock rather than audio clock\n\n videoClockCyclesOfSilencePrefixed = audioFrameUtils.prefixWithSilence(track, frames, audioAppendStartTs, videoBaseMediaDecodeTime); // we have to build the index from byte locations to\n // samples (that is, adts frames) in the audio data\n\n track.samples = audioFrameUtils.generateSampleTable(frames); // concatenate the audio data to constuct the mdat\n\n mdat = mp4.mdat(audioFrameUtils.concatenateFrameData(frames));\n adtsFrames = [];\n moof = mp4.moof(sequenceNumber, [track]);\n boxes = new Uint8Array(moof.byteLength + mdat.byteLength); // bump the sequence number for next time\n\n sequenceNumber++;\n boxes.set(moof);\n boxes.set(mdat, moof.byteLength);\n trackDecodeInfo.clearDtsInfo(track);\n frameDuration = Math.ceil(ONE_SECOND_IN_TS$1 * 1024 / track.samplerate); // TODO this check was added to maintain backwards compatibility (particularly with\n // tests) on adding the timingInfo event. However, it seems unlikely that there's a\n // valid use-case where an init segment/data should be triggered without associated\n // frames. Leaving for now, but should be looked into.\n\n if (frames.length) {\n segmentDuration = frames.length * frameDuration;\n this.trigger('segmentTimingInfo', generateSegmentTimingInfo(\n // The audio track's baseMediaDecodeTime is in audio clock cycles, but the\n // frame info is in video clock cycles. Convert to match expectation of\n // listeners (that all timestamps will be based on video clock cycles).\n clock.audioTsToVideoTs(track.baseMediaDecodeTime, track.samplerate),\n // frame times are already in video clock, as is segment duration\n frames[0].dts, frames[0].pts, frames[0].dts + segmentDuration, frames[0].pts + segmentDuration, videoClockCyclesOfSilencePrefixed || 0));\n this.trigger('timingInfo', {\n start: frames[0].pts,\n end: frames[0].pts + segmentDuration\n });\n }\n this.trigger('data', {\n track: track,\n boxes: boxes\n });\n this.trigger('done', 'AudioSegmentStream');\n };\n this.reset = function () {\n trackDecodeInfo.clearDtsInfo(track);\n adtsFrames = [];\n this.trigger('reset');\n };\n };\n AudioSegmentStream.prototype = new Stream();\n /**\n * Constructs a single-track, ISO BMFF media segment from H264 data\n * events. The output of this stream can be fed to a SourceBuffer\n * configured with a suitable initialization segment.\n * @param track {object} track metadata configuration\n * @param options {object} transmuxer options object\n * @param options.alignGopsAtEnd {boolean} If true, start from the end of the\n * gopsToAlignWith list when attempting to align gop pts\n * @param options.keepOriginalTimestamps {boolean} If true, keep the timestamps\n * in the source; false to adjust the first segment to start at 0.\n */\n\n VideoSegmentStream = function (track, options) {\n var sequenceNumber,\n nalUnits = [],\n gopsToAlignWith = [],\n config,\n pps;\n options = options || {};\n sequenceNumber = options.firstSequenceNumber || 0;\n VideoSegmentStream.prototype.init.call(this);\n delete track.minPTS;\n this.gopCache_ = [];\n /**\n * Constructs a ISO BMFF segment given H264 nalUnits\n * @param {Object} nalUnit A data event representing a nalUnit\n * @param {String} nalUnit.nalUnitType\n * @param {Object} nalUnit.config Properties for a mp4 track\n * @param {Uint8Array} nalUnit.data The nalUnit bytes\n * @see lib/codecs/h264.js\n **/\n\n this.push = function (nalUnit) {\n trackDecodeInfo.collectDtsInfo(track, nalUnit); // record the track config\n\n if (nalUnit.nalUnitType === 'seq_parameter_set_rbsp' && !config) {\n config = nalUnit.config;\n track.sps = [nalUnit.data];\n VIDEO_PROPERTIES.forEach(function (prop) {\n track[prop] = config[prop];\n }, this);\n }\n if (nalUnit.nalUnitType === 'pic_parameter_set_rbsp' && !pps) {\n pps = nalUnit.data;\n track.pps = [nalUnit.data];\n } // buffer video until flush() is called\n\n nalUnits.push(nalUnit);\n };\n /**\n * Pass constructed ISO BMFF track and boxes on to the\n * next stream in the pipeline\n **/\n\n this.flush = function () {\n var frames,\n gopForFusion,\n gops,\n moof,\n mdat,\n boxes,\n prependedContentDuration = 0,\n firstGop,\n lastGop; // Throw away nalUnits at the start of the byte stream until\n // we find the first AUD\n\n while (nalUnits.length) {\n if (nalUnits[0].nalUnitType === 'access_unit_delimiter_rbsp') {\n break;\n }\n nalUnits.shift();\n } // Return early if no video data has been observed\n\n if (nalUnits.length === 0) {\n this.resetStream_();\n this.trigger('done', 'VideoSegmentStream');\n return;\n } // Organize the raw nal-units into arrays that represent\n // higher-level constructs such as frames and gops\n // (group-of-pictures)\n\n frames = frameUtils.groupNalsIntoFrames(nalUnits);\n gops = frameUtils.groupFramesIntoGops(frames); // If the first frame of this fragment is not a keyframe we have\n // a problem since MSE (on Chrome) requires a leading keyframe.\n //\n // We have two approaches to repairing this situation:\n // 1) GOP-FUSION:\n // This is where we keep track of the GOPS (group-of-pictures)\n // from previous fragments and attempt to find one that we can\n // prepend to the current fragment in order to create a valid\n // fragment.\n // 2) KEYFRAME-PULLING:\n // Here we search for the first keyframe in the fragment and\n // throw away all the frames between the start of the fragment\n // and that keyframe. We then extend the duration and pull the\n // PTS of the keyframe forward so that it covers the time range\n // of the frames that were disposed of.\n //\n // #1 is far prefereable over #2 which can cause \"stuttering\" but\n // requires more things to be just right.\n\n if (!gops[0][0].keyFrame) {\n // Search for a gop for fusion from our gopCache\n gopForFusion = this.getGopForFusion_(nalUnits[0], track);\n if (gopForFusion) {\n // in order to provide more accurate timing information about the segment, save\n // the number of seconds prepended to the original segment due to GOP fusion\n prependedContentDuration = gopForFusion.duration;\n gops.unshift(gopForFusion); // Adjust Gops' metadata to account for the inclusion of the\n // new gop at the beginning\n\n gops.byteLength += gopForFusion.byteLength;\n gops.nalCount += gopForFusion.nalCount;\n gops.pts = gopForFusion.pts;\n gops.dts = gopForFusion.dts;\n gops.duration += gopForFusion.duration;\n } else {\n // If we didn't find a candidate gop fall back to keyframe-pulling\n gops = frameUtils.extendFirstKeyFrame(gops);\n }\n } // Trim gops to align with gopsToAlignWith\n\n if (gopsToAlignWith.length) {\n var alignedGops;\n if (options.alignGopsAtEnd) {\n alignedGops = this.alignGopsAtEnd_(gops);\n } else {\n alignedGops = this.alignGopsAtStart_(gops);\n }\n if (!alignedGops) {\n // save all the nals in the last GOP into the gop cache\n this.gopCache_.unshift({\n gop: gops.pop(),\n pps: track.pps,\n sps: track.sps\n }); // Keep a maximum of 6 GOPs in the cache\n\n this.gopCache_.length = Math.min(6, this.gopCache_.length); // Clear nalUnits\n\n nalUnits = []; // return early no gops can be aligned with desired gopsToAlignWith\n\n this.resetStream_();\n this.trigger('done', 'VideoSegmentStream');\n return;\n } // Some gops were trimmed. clear dts info so minSegmentDts and pts are correct\n // when recalculated before sending off to CoalesceStream\n\n trackDecodeInfo.clearDtsInfo(track);\n gops = alignedGops;\n }\n trackDecodeInfo.collectDtsInfo(track, gops); // First, we have to build the index from byte locations to\n // samples (that is, frames) in the video data\n\n track.samples = frameUtils.generateSampleTable(gops); // Concatenate the video data and construct the mdat\n\n mdat = mp4.mdat(frameUtils.concatenateNalData(gops));\n track.baseMediaDecodeTime = trackDecodeInfo.calculateTrackBaseMediaDecodeTime(track, options.keepOriginalTimestamps);\n this.trigger('processedGopsInfo', gops.map(function (gop) {\n return {\n pts: gop.pts,\n dts: gop.dts,\n byteLength: gop.byteLength\n };\n }));\n firstGop = gops[0];\n lastGop = gops[gops.length - 1];\n this.trigger('segmentTimingInfo', generateSegmentTimingInfo(track.baseMediaDecodeTime, firstGop.dts, firstGop.pts, lastGop.dts + lastGop.duration, lastGop.pts + lastGop.duration, prependedContentDuration));\n this.trigger('timingInfo', {\n start: gops[0].pts,\n end: gops[gops.length - 1].pts + gops[gops.length - 1].duration\n }); // save all the nals in the last GOP into the gop cache\n\n this.gopCache_.unshift({\n gop: gops.pop(),\n pps: track.pps,\n sps: track.sps\n }); // Keep a maximum of 6 GOPs in the cache\n\n this.gopCache_.length = Math.min(6, this.gopCache_.length); // Clear nalUnits\n\n nalUnits = [];\n this.trigger('baseMediaDecodeTime', track.baseMediaDecodeTime);\n this.trigger('timelineStartInfo', track.timelineStartInfo);\n moof = mp4.moof(sequenceNumber, [track]); // it would be great to allocate this array up front instead of\n // throwing away hundreds of media segment fragments\n\n boxes = new Uint8Array(moof.byteLength + mdat.byteLength); // Bump the sequence number for next time\n\n sequenceNumber++;\n boxes.set(moof);\n boxes.set(mdat, moof.byteLength);\n this.trigger('data', {\n track: track,\n boxes: boxes\n });\n this.resetStream_(); // Continue with the flush process now\n\n this.trigger('done', 'VideoSegmentStream');\n };\n this.reset = function () {\n this.resetStream_();\n nalUnits = [];\n this.gopCache_.length = 0;\n gopsToAlignWith.length = 0;\n this.trigger('reset');\n };\n this.resetStream_ = function () {\n trackDecodeInfo.clearDtsInfo(track); // reset config and pps because they may differ across segments\n // for instance, when we are rendition switching\n\n config = undefined;\n pps = undefined;\n }; // Search for a candidate Gop for gop-fusion from the gop cache and\n // return it or return null if no good candidate was found\n\n this.getGopForFusion_ = function (nalUnit) {\n var halfSecond = 45000,\n // Half-a-second in a 90khz clock\n allowableOverlap = 10000,\n // About 3 frames @ 30fps\n nearestDistance = Infinity,\n dtsDistance,\n nearestGopObj,\n currentGop,\n currentGopObj,\n i; // Search for the GOP nearest to the beginning of this nal unit\n\n for (i = 0; i < this.gopCache_.length; i++) {\n currentGopObj = this.gopCache_[i];\n currentGop = currentGopObj.gop; // Reject Gops with different SPS or PPS\n\n if (!(track.pps && arrayEquals(track.pps[0], currentGopObj.pps[0])) || !(track.sps && arrayEquals(track.sps[0], currentGopObj.sps[0]))) {\n continue;\n } // Reject Gops that would require a negative baseMediaDecodeTime\n\n if (currentGop.dts < track.timelineStartInfo.dts) {\n continue;\n } // The distance between the end of the gop and the start of the nalUnit\n\n dtsDistance = nalUnit.dts - currentGop.dts - currentGop.duration; // Only consider GOPS that start before the nal unit and end within\n // a half-second of the nal unit\n\n if (dtsDistance >= -allowableOverlap && dtsDistance <= halfSecond) {\n // Always use the closest GOP we found if there is more than\n // one candidate\n if (!nearestGopObj || nearestDistance > dtsDistance) {\n nearestGopObj = currentGopObj;\n nearestDistance = dtsDistance;\n }\n }\n }\n if (nearestGopObj) {\n return nearestGopObj.gop;\n }\n return null;\n }; // trim gop list to the first gop found that has a matching pts with a gop in the list\n // of gopsToAlignWith starting from the START of the list\n\n this.alignGopsAtStart_ = function (gops) {\n var alignIndex, gopIndex, align, gop, byteLength, nalCount, duration, alignedGops;\n byteLength = gops.byteLength;\n nalCount = gops.nalCount;\n duration = gops.duration;\n alignIndex = gopIndex = 0;\n while (alignIndex < gopsToAlignWith.length && gopIndex < gops.length) {\n align = gopsToAlignWith[alignIndex];\n gop = gops[gopIndex];\n if (align.pts === gop.pts) {\n break;\n }\n if (gop.pts > align.pts) {\n // this current gop starts after the current gop we want to align on, so increment\n // align index\n alignIndex++;\n continue;\n } // current gop starts before the current gop we want to align on. so increment gop\n // index\n\n gopIndex++;\n byteLength -= gop.byteLength;\n nalCount -= gop.nalCount;\n duration -= gop.duration;\n }\n if (gopIndex === 0) {\n // no gops to trim\n return gops;\n }\n if (gopIndex === gops.length) {\n // all gops trimmed, skip appending all gops\n return null;\n }\n alignedGops = gops.slice(gopIndex);\n alignedGops.byteLength = byteLength;\n alignedGops.duration = duration;\n alignedGops.nalCount = nalCount;\n alignedGops.pts = alignedGops[0].pts;\n alignedGops.dts = alignedGops[0].dts;\n return alignedGops;\n }; // trim gop list to the first gop found that has a matching pts with a gop in the list\n // of gopsToAlignWith starting from the END of the list\n\n this.alignGopsAtEnd_ = function (gops) {\n var alignIndex, gopIndex, align, gop, alignEndIndex, matchFound;\n alignIndex = gopsToAlignWith.length - 1;\n gopIndex = gops.length - 1;\n alignEndIndex = null;\n matchFound = false;\n while (alignIndex >= 0 && gopIndex >= 0) {\n align = gopsToAlignWith[alignIndex];\n gop = gops[gopIndex];\n if (align.pts === gop.pts) {\n matchFound = true;\n break;\n }\n if (align.pts > gop.pts) {\n alignIndex--;\n continue;\n }\n if (alignIndex === gopsToAlignWith.length - 1) {\n // gop.pts is greater than the last alignment candidate. If no match is found\n // by the end of this loop, we still want to append gops that come after this\n // point\n alignEndIndex = gopIndex;\n }\n gopIndex--;\n }\n if (!matchFound && alignEndIndex === null) {\n return null;\n }\n var trimIndex;\n if (matchFound) {\n trimIndex = gopIndex;\n } else {\n trimIndex = alignEndIndex;\n }\n if (trimIndex === 0) {\n return gops;\n }\n var alignedGops = gops.slice(trimIndex);\n var metadata = alignedGops.reduce(function (total, gop) {\n total.byteLength += gop.byteLength;\n total.duration += gop.duration;\n total.nalCount += gop.nalCount;\n return total;\n }, {\n byteLength: 0,\n duration: 0,\n nalCount: 0\n });\n alignedGops.byteLength = metadata.byteLength;\n alignedGops.duration = metadata.duration;\n alignedGops.nalCount = metadata.nalCount;\n alignedGops.pts = alignedGops[0].pts;\n alignedGops.dts = alignedGops[0].dts;\n return alignedGops;\n };\n this.alignGopsWith = function (newGopsToAlignWith) {\n gopsToAlignWith = newGopsToAlignWith;\n };\n };\n VideoSegmentStream.prototype = new Stream();\n /**\n * A Stream that can combine multiple streams (ie. audio & video)\n * into a single output segment for MSE. Also supports audio-only\n * and video-only streams.\n * @param options {object} transmuxer options object\n * @param options.keepOriginalTimestamps {boolean} If true, keep the timestamps\n * in the source; false to adjust the first segment to start at media timeline start.\n */\n\n CoalesceStream = function (options, metadataStream) {\n // Number of Tracks per output segment\n // If greater than 1, we combine multiple\n // tracks into a single segment\n this.numberOfTracks = 0;\n this.metadataStream = metadataStream;\n options = options || {};\n if (typeof options.remux !== 'undefined') {\n this.remuxTracks = !!options.remux;\n } else {\n this.remuxTracks = true;\n }\n if (typeof options.keepOriginalTimestamps === 'boolean') {\n this.keepOriginalTimestamps = options.keepOriginalTimestamps;\n } else {\n this.keepOriginalTimestamps = false;\n }\n this.pendingTracks = [];\n this.videoTrack = null;\n this.pendingBoxes = [];\n this.pendingCaptions = [];\n this.pendingMetadata = [];\n this.pendingBytes = 0;\n this.emittedTracks = 0;\n CoalesceStream.prototype.init.call(this); // Take output from multiple\n\n this.push = function (output) {\n // buffer incoming captions until the associated video segment\n // finishes\n if (output.content || output.text) {\n return this.pendingCaptions.push(output);\n } // buffer incoming id3 tags until the final flush\n\n if (output.frames) {\n return this.pendingMetadata.push(output);\n } // Add this track to the list of pending tracks and store\n // important information required for the construction of\n // the final segment\n\n this.pendingTracks.push(output.track);\n this.pendingBytes += output.boxes.byteLength; // TODO: is there an issue for this against chrome?\n // We unshift audio and push video because\n // as of Chrome 75 when switching from\n // one init segment to another if the video\n // mdat does not appear after the audio mdat\n // only audio will play for the duration of our transmux.\n\n if (output.track.type === 'video') {\n this.videoTrack = output.track;\n this.pendingBoxes.push(output.boxes);\n }\n if (output.track.type === 'audio') {\n this.audioTrack = output.track;\n this.pendingBoxes.unshift(output.boxes);\n }\n };\n };\n CoalesceStream.prototype = new Stream();\n CoalesceStream.prototype.flush = function (flushSource) {\n var offset = 0,\n event = {\n captions: [],\n captionStreams: {},\n metadata: [],\n info: {}\n },\n caption,\n id3,\n initSegment,\n timelineStartPts = 0,\n i;\n if (this.pendingTracks.length < this.numberOfTracks) {\n if (flushSource !== 'VideoSegmentStream' && flushSource !== 'AudioSegmentStream') {\n // Return because we haven't received a flush from a data-generating\n // portion of the segment (meaning that we have only recieved meta-data\n // or captions.)\n return;\n } else if (this.remuxTracks) {\n // Return until we have enough tracks from the pipeline to remux (if we\n // are remuxing audio and video into a single MP4)\n return;\n } else if (this.pendingTracks.length === 0) {\n // In the case where we receive a flush without any data having been\n // received we consider it an emitted track for the purposes of coalescing\n // `done` events.\n // We do this for the case where there is an audio and video track in the\n // segment but no audio data. (seen in several playlists with alternate\n // audio tracks and no audio present in the main TS segments.)\n this.emittedTracks++;\n if (this.emittedTracks >= this.numberOfTracks) {\n this.trigger('done');\n this.emittedTracks = 0;\n }\n return;\n }\n }\n if (this.videoTrack) {\n timelineStartPts = this.videoTrack.timelineStartInfo.pts;\n VIDEO_PROPERTIES.forEach(function (prop) {\n event.info[prop] = this.videoTrack[prop];\n }, this);\n } else if (this.audioTrack) {\n timelineStartPts = this.audioTrack.timelineStartInfo.pts;\n AUDIO_PROPERTIES.forEach(function (prop) {\n event.info[prop] = this.audioTrack[prop];\n }, this);\n }\n if (this.videoTrack || this.audioTrack) {\n if (this.pendingTracks.length === 1) {\n event.type = this.pendingTracks[0].type;\n } else {\n event.type = 'combined';\n }\n this.emittedTracks += this.pendingTracks.length;\n initSegment = mp4.initSegment(this.pendingTracks); // Create a new typed array to hold the init segment\n\n event.initSegment = new Uint8Array(initSegment.byteLength); // Create an init segment containing a moov\n // and track definitions\n\n event.initSegment.set(initSegment); // Create a new typed array to hold the moof+mdats\n\n event.data = new Uint8Array(this.pendingBytes); // Append each moof+mdat (one per track) together\n\n for (i = 0; i < this.pendingBoxes.length; i++) {\n event.data.set(this.pendingBoxes[i], offset);\n offset += this.pendingBoxes[i].byteLength;\n } // Translate caption PTS times into second offsets to match the\n // video timeline for the segment, and add track info\n\n for (i = 0; i < this.pendingCaptions.length; i++) {\n caption = this.pendingCaptions[i];\n caption.startTime = clock.metadataTsToSeconds(caption.startPts, timelineStartPts, this.keepOriginalTimestamps);\n caption.endTime = clock.metadataTsToSeconds(caption.endPts, timelineStartPts, this.keepOriginalTimestamps);\n event.captionStreams[caption.stream] = true;\n event.captions.push(caption);\n } // Translate ID3 frame PTS times into second offsets to match the\n // video timeline for the segment\n\n for (i = 0; i < this.pendingMetadata.length; i++) {\n id3 = this.pendingMetadata[i];\n id3.cueTime = clock.metadataTsToSeconds(id3.pts, timelineStartPts, this.keepOriginalTimestamps);\n event.metadata.push(id3);\n } // We add this to every single emitted segment even though we only need\n // it for the first\n\n event.metadata.dispatchType = this.metadataStream.dispatchType; // Reset stream state\n\n this.pendingTracks.length = 0;\n this.videoTrack = null;\n this.pendingBoxes.length = 0;\n this.pendingCaptions.length = 0;\n this.pendingBytes = 0;\n this.pendingMetadata.length = 0; // Emit the built segment\n // We include captions and ID3 tags for backwards compatibility,\n // ideally we should send only video and audio in the data event\n\n this.trigger('data', event); // Emit each caption to the outside world\n // Ideally, this would happen immediately on parsing captions,\n // but we need to ensure that video data is sent back first\n // so that caption timing can be adjusted to match video timing\n\n for (i = 0; i < event.captions.length; i++) {\n caption = event.captions[i];\n this.trigger('caption', caption);\n } // Emit each id3 tag to the outside world\n // Ideally, this would happen immediately on parsing the tag,\n // but we need to ensure that video data is sent back first\n // so that ID3 frame timing can be adjusted to match video timing\n\n for (i = 0; i < event.metadata.length; i++) {\n id3 = event.metadata[i];\n this.trigger('id3Frame', id3);\n }\n } // Only emit `done` if all tracks have been flushed and emitted\n\n if (this.emittedTracks >= this.numberOfTracks) {\n this.trigger('done');\n this.emittedTracks = 0;\n }\n };\n CoalesceStream.prototype.setRemux = function (val) {\n this.remuxTracks = val;\n };\n /**\n * A Stream that expects MP2T binary data as input and produces\n * corresponding media segments, suitable for use with Media Source\n * Extension (MSE) implementations that support the ISO BMFF byte\n * stream format, like Chrome.\n */\n\n Transmuxer = function (options) {\n var self = this,\n hasFlushed = true,\n videoTrack,\n audioTrack;\n Transmuxer.prototype.init.call(this);\n options = options || {};\n this.baseMediaDecodeTime = options.baseMediaDecodeTime || 0;\n this.transmuxPipeline_ = {};\n this.setupAacPipeline = function () {\n var pipeline = {};\n this.transmuxPipeline_ = pipeline;\n pipeline.type = 'aac';\n pipeline.metadataStream = new m2ts.MetadataStream(); // set up the parsing pipeline\n\n pipeline.aacStream = new AacStream();\n pipeline.audioTimestampRolloverStream = new m2ts.TimestampRolloverStream('audio');\n pipeline.timedMetadataTimestampRolloverStream = new m2ts.TimestampRolloverStream('timed-metadata');\n pipeline.adtsStream = new AdtsStream();\n pipeline.coalesceStream = new CoalesceStream(options, pipeline.metadataStream);\n pipeline.headOfPipeline = pipeline.aacStream;\n pipeline.aacStream.pipe(pipeline.audioTimestampRolloverStream).pipe(pipeline.adtsStream);\n pipeline.aacStream.pipe(pipeline.timedMetadataTimestampRolloverStream).pipe(pipeline.metadataStream).pipe(pipeline.coalesceStream);\n pipeline.metadataStream.on('timestamp', function (frame) {\n pipeline.aacStream.setTimestamp(frame.timeStamp);\n });\n pipeline.aacStream.on('data', function (data) {\n if (data.type !== 'timed-metadata' && data.type !== 'audio' || pipeline.audioSegmentStream) {\n return;\n }\n audioTrack = audioTrack || {\n timelineStartInfo: {\n baseMediaDecodeTime: self.baseMediaDecodeTime\n },\n codec: 'adts',\n type: 'audio'\n }; // hook up the audio segment stream to the first track with aac data\n\n pipeline.coalesceStream.numberOfTracks++;\n pipeline.audioSegmentStream = new AudioSegmentStream(audioTrack, options);\n pipeline.audioSegmentStream.on('log', self.getLogTrigger_('audioSegmentStream'));\n pipeline.audioSegmentStream.on('timingInfo', self.trigger.bind(self, 'audioTimingInfo')); // Set up the final part of the audio pipeline\n\n pipeline.adtsStream.pipe(pipeline.audioSegmentStream).pipe(pipeline.coalesceStream); // emit pmt info\n\n self.trigger('trackinfo', {\n hasAudio: !!audioTrack,\n hasVideo: !!videoTrack\n });\n }); // Re-emit any data coming from the coalesce stream to the outside world\n\n pipeline.coalesceStream.on('data', this.trigger.bind(this, 'data')); // Let the consumer know we have finished flushing the entire pipeline\n\n pipeline.coalesceStream.on('done', this.trigger.bind(this, 'done'));\n addPipelineLogRetriggers(this, pipeline);\n };\n this.setupTsPipeline = function () {\n var pipeline = {};\n this.transmuxPipeline_ = pipeline;\n pipeline.type = 'ts';\n pipeline.metadataStream = new m2ts.MetadataStream(); // set up the parsing pipeline\n\n pipeline.packetStream = new m2ts.TransportPacketStream();\n pipeline.parseStream = new m2ts.TransportParseStream();\n pipeline.elementaryStream = new m2ts.ElementaryStream();\n pipeline.timestampRolloverStream = new m2ts.TimestampRolloverStream();\n pipeline.adtsStream = new AdtsStream();\n pipeline.h264Stream = new H264Stream();\n pipeline.captionStream = new m2ts.CaptionStream(options);\n pipeline.coalesceStream = new CoalesceStream(options, pipeline.metadataStream);\n pipeline.headOfPipeline = pipeline.packetStream; // disassemble MPEG2-TS packets into elementary streams\n\n pipeline.packetStream.pipe(pipeline.parseStream).pipe(pipeline.elementaryStream).pipe(pipeline.timestampRolloverStream); // !!THIS ORDER IS IMPORTANT!!\n // demux the streams\n\n pipeline.timestampRolloverStream.pipe(pipeline.h264Stream);\n pipeline.timestampRolloverStream.pipe(pipeline.adtsStream);\n pipeline.timestampRolloverStream.pipe(pipeline.metadataStream).pipe(pipeline.coalesceStream); // Hook up CEA-608/708 caption stream\n\n pipeline.h264Stream.pipe(pipeline.captionStream).pipe(pipeline.coalesceStream);\n pipeline.elementaryStream.on('data', function (data) {\n var i;\n if (data.type === 'metadata') {\n i = data.tracks.length; // scan the tracks listed in the metadata\n\n while (i--) {\n if (!videoTrack && data.tracks[i].type === 'video') {\n videoTrack = data.tracks[i];\n videoTrack.timelineStartInfo.baseMediaDecodeTime = self.baseMediaDecodeTime;\n } else if (!audioTrack && data.tracks[i].type === 'audio') {\n audioTrack = data.tracks[i];\n audioTrack.timelineStartInfo.baseMediaDecodeTime = self.baseMediaDecodeTime;\n }\n } // hook up the video segment stream to the first track with h264 data\n\n if (videoTrack && !pipeline.videoSegmentStream) {\n pipeline.coalesceStream.numberOfTracks++;\n pipeline.videoSegmentStream = new VideoSegmentStream(videoTrack, options);\n pipeline.videoSegmentStream.on('log', self.getLogTrigger_('videoSegmentStream'));\n pipeline.videoSegmentStream.on('timelineStartInfo', function (timelineStartInfo) {\n // When video emits timelineStartInfo data after a flush, we forward that\n // info to the AudioSegmentStream, if it exists, because video timeline\n // data takes precedence. Do not do this if keepOriginalTimestamps is set,\n // because this is a particularly subtle form of timestamp alteration.\n if (audioTrack && !options.keepOriginalTimestamps) {\n audioTrack.timelineStartInfo = timelineStartInfo; // On the first segment we trim AAC frames that exist before the\n // very earliest DTS we have seen in video because Chrome will\n // interpret any video track with a baseMediaDecodeTime that is\n // non-zero as a gap.\n\n pipeline.audioSegmentStream.setEarliestDts(timelineStartInfo.dts - self.baseMediaDecodeTime);\n }\n });\n pipeline.videoSegmentStream.on('processedGopsInfo', self.trigger.bind(self, 'gopInfo'));\n pipeline.videoSegmentStream.on('segmentTimingInfo', self.trigger.bind(self, 'videoSegmentTimingInfo'));\n pipeline.videoSegmentStream.on('baseMediaDecodeTime', function (baseMediaDecodeTime) {\n if (audioTrack) {\n pipeline.audioSegmentStream.setVideoBaseMediaDecodeTime(baseMediaDecodeTime);\n }\n });\n pipeline.videoSegmentStream.on('timingInfo', self.trigger.bind(self, 'videoTimingInfo')); // Set up the final part of the video pipeline\n\n pipeline.h264Stream.pipe(pipeline.videoSegmentStream).pipe(pipeline.coalesceStream);\n }\n if (audioTrack && !pipeline.audioSegmentStream) {\n // hook up the audio segment stream to the first track with aac data\n pipeline.coalesceStream.numberOfTracks++;\n pipeline.audioSegmentStream = new AudioSegmentStream(audioTrack, options);\n pipeline.audioSegmentStream.on('log', self.getLogTrigger_('audioSegmentStream'));\n pipeline.audioSegmentStream.on('timingInfo', self.trigger.bind(self, 'audioTimingInfo'));\n pipeline.audioSegmentStream.on('segmentTimingInfo', self.trigger.bind(self, 'audioSegmentTimingInfo')); // Set up the final part of the audio pipeline\n\n pipeline.adtsStream.pipe(pipeline.audioSegmentStream).pipe(pipeline.coalesceStream);\n } // emit pmt info\n\n self.trigger('trackinfo', {\n hasAudio: !!audioTrack,\n hasVideo: !!videoTrack\n });\n }\n }); // Re-emit any data coming from the coalesce stream to the outside world\n\n pipeline.coalesceStream.on('data', this.trigger.bind(this, 'data'));\n pipeline.coalesceStream.on('id3Frame', function (id3Frame) {\n id3Frame.dispatchType = pipeline.metadataStream.dispatchType;\n self.trigger('id3Frame', id3Frame);\n });\n pipeline.coalesceStream.on('caption', this.trigger.bind(this, 'caption')); // Let the consumer know we have finished flushing the entire pipeline\n\n pipeline.coalesceStream.on('done', this.trigger.bind(this, 'done'));\n addPipelineLogRetriggers(this, pipeline);\n }; // hook up the segment streams once track metadata is delivered\n\n this.setBaseMediaDecodeTime = function (baseMediaDecodeTime) {\n var pipeline = this.transmuxPipeline_;\n if (!options.keepOriginalTimestamps) {\n this.baseMediaDecodeTime = baseMediaDecodeTime;\n }\n if (audioTrack) {\n audioTrack.timelineStartInfo.dts = undefined;\n audioTrack.timelineStartInfo.pts = undefined;\n trackDecodeInfo.clearDtsInfo(audioTrack);\n if (pipeline.audioTimestampRolloverStream) {\n pipeline.audioTimestampRolloverStream.discontinuity();\n }\n }\n if (videoTrack) {\n if (pipeline.videoSegmentStream) {\n pipeline.videoSegmentStream.gopCache_ = [];\n }\n videoTrack.timelineStartInfo.dts = undefined;\n videoTrack.timelineStartInfo.pts = undefined;\n trackDecodeInfo.clearDtsInfo(videoTrack);\n pipeline.captionStream.reset();\n }\n if (pipeline.timestampRolloverStream) {\n pipeline.timestampRolloverStream.discontinuity();\n }\n };\n this.setAudioAppendStart = function (timestamp) {\n if (audioTrack) {\n this.transmuxPipeline_.audioSegmentStream.setAudioAppendStart(timestamp);\n }\n };\n this.setRemux = function (val) {\n var pipeline = this.transmuxPipeline_;\n options.remux = val;\n if (pipeline && pipeline.coalesceStream) {\n pipeline.coalesceStream.setRemux(val);\n }\n };\n this.alignGopsWith = function (gopsToAlignWith) {\n if (videoTrack && this.transmuxPipeline_.videoSegmentStream) {\n this.transmuxPipeline_.videoSegmentStream.alignGopsWith(gopsToAlignWith);\n }\n };\n this.getLogTrigger_ = function (key) {\n var self = this;\n return function (event) {\n event.stream = key;\n self.trigger('log', event);\n };\n }; // feed incoming data to the front of the parsing pipeline\n\n this.push = function (data) {\n if (hasFlushed) {\n var isAac = isLikelyAacData(data);\n if (isAac && this.transmuxPipeline_.type !== 'aac') {\n this.setupAacPipeline();\n } else if (!isAac && this.transmuxPipeline_.type !== 'ts') {\n this.setupTsPipeline();\n }\n hasFlushed = false;\n }\n this.transmuxPipeline_.headOfPipeline.push(data);\n }; // flush any buffered data\n\n this.flush = function () {\n hasFlushed = true; // Start at the top of the pipeline and flush all pending work\n\n this.transmuxPipeline_.headOfPipeline.flush();\n };\n this.endTimeline = function () {\n this.transmuxPipeline_.headOfPipeline.endTimeline();\n };\n this.reset = function () {\n if (this.transmuxPipeline_.headOfPipeline) {\n this.transmuxPipeline_.headOfPipeline.reset();\n }\n }; // Caption data has to be reset when seeking outside buffered range\n\n this.resetCaptions = function () {\n if (this.transmuxPipeline_.captionStream) {\n this.transmuxPipeline_.captionStream.reset();\n }\n };\n };\n Transmuxer.prototype = new Stream();\n var transmuxer = {\n Transmuxer: Transmuxer,\n VideoSegmentStream: VideoSegmentStream,\n AudioSegmentStream: AudioSegmentStream,\n AUDIO_PROPERTIES: AUDIO_PROPERTIES,\n VIDEO_PROPERTIES: VIDEO_PROPERTIES,\n // exported for testing\n generateSegmentTimingInfo: generateSegmentTimingInfo\n };\n /**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n */\n\n var toUnsigned$3 = function (value) {\n return value >>> 0;\n };\n var toHexString$1 = function (value) {\n return ('00' + value.toString(16)).slice(-2);\n };\n var bin = {\n toUnsigned: toUnsigned$3,\n toHexString: toHexString$1\n };\n var parseType$3 = function (buffer) {\n var result = '';\n result += String.fromCharCode(buffer[0]);\n result += String.fromCharCode(buffer[1]);\n result += String.fromCharCode(buffer[2]);\n result += String.fromCharCode(buffer[3]);\n return result;\n };\n var parseType_1 = parseType$3;\n var toUnsigned$2 = bin.toUnsigned;\n var parseType$2 = parseType_1;\n var findBox$2 = function (data, path) {\n var results = [],\n i,\n size,\n type,\n end,\n subresults;\n if (!path.length) {\n // short-circuit the search for empty paths\n return null;\n }\n for (i = 0; i < data.byteLength;) {\n size = toUnsigned$2(data[i] << 24 | data[i + 1] << 16 | data[i + 2] << 8 | data[i + 3]);\n type = parseType$2(data.subarray(i + 4, i + 8));\n end = size > 1 ? i + size : data.byteLength;\n if (type === path[0]) {\n if (path.length === 1) {\n // this is the end of the path and we've found the box we were\n // looking for\n results.push(data.subarray(i + 8, end));\n } else {\n // recursively search for the next box along the path\n subresults = findBox$2(data.subarray(i + 8, end), path.slice(1));\n if (subresults.length) {\n results = results.concat(subresults);\n }\n }\n }\n i = end;\n } // we've finished searching all of data\n\n return results;\n };\n var findBox_1 = findBox$2;\n var toUnsigned$1 = bin.toUnsigned;\n var getUint64$2 = numbers.getUint64;\n var tfdt = function (data) {\n var result = {\n version: data[0],\n flags: new Uint8Array(data.subarray(1, 4))\n };\n if (result.version === 1) {\n result.baseMediaDecodeTime = getUint64$2(data.subarray(4));\n } else {\n result.baseMediaDecodeTime = toUnsigned$1(data[4] << 24 | data[5] << 16 | data[6] << 8 | data[7]);\n }\n return result;\n };\n var parseTfdt$2 = tfdt;\n var parseSampleFlags$1 = function (flags) {\n return {\n isLeading: (flags[0] & 0x0c) >>> 2,\n dependsOn: flags[0] & 0x03,\n isDependedOn: (flags[1] & 0xc0) >>> 6,\n hasRedundancy: (flags[1] & 0x30) >>> 4,\n paddingValue: (flags[1] & 0x0e) >>> 1,\n isNonSyncSample: flags[1] & 0x01,\n degradationPriority: flags[2] << 8 | flags[3]\n };\n };\n var parseSampleFlags_1 = parseSampleFlags$1;\n var parseSampleFlags = parseSampleFlags_1;\n var trun = function (data) {\n var result = {\n version: data[0],\n flags: new Uint8Array(data.subarray(1, 4)),\n samples: []\n },\n view = new DataView(data.buffer, data.byteOffset, data.byteLength),\n // Flag interpretation\n dataOffsetPresent = result.flags[2] & 0x01,\n // compare with 2nd byte of 0x1\n firstSampleFlagsPresent = result.flags[2] & 0x04,\n // compare with 2nd byte of 0x4\n sampleDurationPresent = result.flags[1] & 0x01,\n // compare with 2nd byte of 0x100\n sampleSizePresent = result.flags[1] & 0x02,\n // compare with 2nd byte of 0x200\n sampleFlagsPresent = result.flags[1] & 0x04,\n // compare with 2nd byte of 0x400\n sampleCompositionTimeOffsetPresent = result.flags[1] & 0x08,\n // compare with 2nd byte of 0x800\n sampleCount = view.getUint32(4),\n offset = 8,\n sample;\n if (dataOffsetPresent) {\n // 32 bit signed integer\n result.dataOffset = view.getInt32(offset);\n offset += 4;\n } // Overrides the flags for the first sample only. The order of\n // optional values will be: duration, size, compositionTimeOffset\n\n if (firstSampleFlagsPresent && sampleCount) {\n sample = {\n flags: parseSampleFlags(data.subarray(offset, offset + 4))\n };\n offset += 4;\n if (sampleDurationPresent) {\n sample.duration = view.getUint32(offset);\n offset += 4;\n }\n if (sampleSizePresent) {\n sample.size = view.getUint32(offset);\n offset += 4;\n }\n if (sampleCompositionTimeOffsetPresent) {\n if (result.version === 1) {\n sample.compositionTimeOffset = view.getInt32(offset);\n } else {\n sample.compositionTimeOffset = view.getUint32(offset);\n }\n offset += 4;\n }\n result.samples.push(sample);\n sampleCount--;\n }\n while (sampleCount--) {\n sample = {};\n if (sampleDurationPresent) {\n sample.duration = view.getUint32(offset);\n offset += 4;\n }\n if (sampleSizePresent) {\n sample.size = view.getUint32(offset);\n offset += 4;\n }\n if (sampleFlagsPresent) {\n sample.flags = parseSampleFlags(data.subarray(offset, offset + 4));\n offset += 4;\n }\n if (sampleCompositionTimeOffsetPresent) {\n if (result.version === 1) {\n sample.compositionTimeOffset = view.getInt32(offset);\n } else {\n sample.compositionTimeOffset = view.getUint32(offset);\n }\n offset += 4;\n }\n result.samples.push(sample);\n }\n return result;\n };\n var parseTrun$2 = trun;\n var tfhd = function (data) {\n var view = new DataView(data.buffer, data.byteOffset, data.byteLength),\n result = {\n version: data[0],\n flags: new Uint8Array(data.subarray(1, 4)),\n trackId: view.getUint32(4)\n },\n baseDataOffsetPresent = result.flags[2] & 0x01,\n sampleDescriptionIndexPresent = result.flags[2] & 0x02,\n defaultSampleDurationPresent = result.flags[2] & 0x08,\n defaultSampleSizePresent = result.flags[2] & 0x10,\n defaultSampleFlagsPresent = result.flags[2] & 0x20,\n durationIsEmpty = result.flags[0] & 0x010000,\n defaultBaseIsMoof = result.flags[0] & 0x020000,\n i;\n i = 8;\n if (baseDataOffsetPresent) {\n i += 4; // truncate top 4 bytes\n // FIXME: should we read the full 64 bits?\n\n result.baseDataOffset = view.getUint32(12);\n i += 4;\n }\n if (sampleDescriptionIndexPresent) {\n result.sampleDescriptionIndex = view.getUint32(i);\n i += 4;\n }\n if (defaultSampleDurationPresent) {\n result.defaultSampleDuration = view.getUint32(i);\n i += 4;\n }\n if (defaultSampleSizePresent) {\n result.defaultSampleSize = view.getUint32(i);\n i += 4;\n }\n if (defaultSampleFlagsPresent) {\n result.defaultSampleFlags = view.getUint32(i);\n }\n if (durationIsEmpty) {\n result.durationIsEmpty = true;\n }\n if (!baseDataOffsetPresent && defaultBaseIsMoof) {\n result.baseDataOffsetIsMoof = true;\n }\n return result;\n };\n var parseTfhd$2 = tfhd;\n var win;\n if (typeof window !== \"undefined\") {\n win = window;\n } else if (typeof commonjsGlobal !== \"undefined\") {\n win = commonjsGlobal;\n } else if (typeof self !== \"undefined\") {\n win = self;\n } else {\n win = {};\n }\n var window_1 = win;\n /**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n *\n * Reads in-band CEA-708 captions out of FMP4 segments.\n * @see https://en.wikipedia.org/wiki/CEA-708\n */\n\n var discardEmulationPreventionBytes = captionPacketParser.discardEmulationPreventionBytes;\n var CaptionStream = captionStream.CaptionStream;\n var findBox$1 = findBox_1;\n var parseTfdt$1 = parseTfdt$2;\n var parseTrun$1 = parseTrun$2;\n var parseTfhd$1 = parseTfhd$2;\n var window$2 = window_1;\n /**\n * Maps an offset in the mdat to a sample based on the the size of the samples.\n * Assumes that `parseSamples` has been called first.\n *\n * @param {Number} offset - The offset into the mdat\n * @param {Object[]} samples - An array of samples, parsed using `parseSamples`\n * @return {?Object} The matching sample, or null if no match was found.\n *\n * @see ISO-BMFF-12/2015, Section 8.8.8\n **/\n\n var mapToSample = function (offset, samples) {\n var approximateOffset = offset;\n for (var i = 0; i < samples.length; i++) {\n var sample = samples[i];\n if (approximateOffset < sample.size) {\n return sample;\n }\n approximateOffset -= sample.size;\n }\n return null;\n };\n /**\n * Finds SEI nal units contained in a Media Data Box.\n * Assumes that `parseSamples` has been called first.\n *\n * @param {Uint8Array} avcStream - The bytes of the mdat\n * @param {Object[]} samples - The samples parsed out by `parseSamples`\n * @param {Number} trackId - The trackId of this video track\n * @return {Object[]} seiNals - the parsed SEI NALUs found.\n * The contents of the seiNal should match what is expected by\n * CaptionStream.push (nalUnitType, size, data, escapedRBSP, pts, dts)\n *\n * @see ISO-BMFF-12/2015, Section 8.1.1\n * @see Rec. ITU-T H.264, 7.3.2.3.1\n **/\n\n var findSeiNals = function (avcStream, samples, trackId) {\n var avcView = new DataView(avcStream.buffer, avcStream.byteOffset, avcStream.byteLength),\n result = {\n logs: [],\n seiNals: []\n },\n seiNal,\n i,\n length,\n lastMatchedSample;\n for (i = 0; i + 4 < avcStream.length; i += length) {\n length = avcView.getUint32(i);\n i += 4; // Bail if this doesn't appear to be an H264 stream\n\n if (length <= 0) {\n continue;\n }\n switch (avcStream[i] & 0x1F) {\n case 0x06:\n var data = avcStream.subarray(i + 1, i + 1 + length);\n var matchingSample = mapToSample(i, samples);\n seiNal = {\n nalUnitType: 'sei_rbsp',\n size: length,\n data: data,\n escapedRBSP: discardEmulationPreventionBytes(data),\n trackId: trackId\n };\n if (matchingSample) {\n seiNal.pts = matchingSample.pts;\n seiNal.dts = matchingSample.dts;\n lastMatchedSample = matchingSample;\n } else if (lastMatchedSample) {\n // If a matching sample cannot be found, use the last\n // sample's values as they should be as close as possible\n seiNal.pts = lastMatchedSample.pts;\n seiNal.dts = lastMatchedSample.dts;\n } else {\n result.logs.push({\n level: 'warn',\n message: 'We\\'ve encountered a nal unit without data at ' + i + ' for trackId ' + trackId + '. See mux.js#223.'\n });\n break;\n }\n result.seiNals.push(seiNal);\n break;\n }\n }\n return result;\n };\n /**\n * Parses sample information out of Track Run Boxes and calculates\n * the absolute presentation and decode timestamps of each sample.\n *\n * @param {Array} truns - The Trun Run boxes to be parsed\n * @param {Number|BigInt} baseMediaDecodeTime - base media decode time from tfdt\n @see ISO-BMFF-12/2015, Section 8.8.12\n * @param {Object} tfhd - The parsed Track Fragment Header\n * @see inspect.parseTfhd\n * @return {Object[]} the parsed samples\n *\n * @see ISO-BMFF-12/2015, Section 8.8.8\n **/\n\n var parseSamples = function (truns, baseMediaDecodeTime, tfhd) {\n var currentDts = baseMediaDecodeTime;\n var defaultSampleDuration = tfhd.defaultSampleDuration || 0;\n var defaultSampleSize = tfhd.defaultSampleSize || 0;\n var trackId = tfhd.trackId;\n var allSamples = [];\n truns.forEach(function (trun) {\n // Note: We currently do not parse the sample table as well\n // as the trun. It's possible some sources will require this.\n // moov > trak > mdia > minf > stbl\n var trackRun = parseTrun$1(trun);\n var samples = trackRun.samples;\n samples.forEach(function (sample) {\n if (sample.duration === undefined) {\n sample.duration = defaultSampleDuration;\n }\n if (sample.size === undefined) {\n sample.size = defaultSampleSize;\n }\n sample.trackId = trackId;\n sample.dts = currentDts;\n if (sample.compositionTimeOffset === undefined) {\n sample.compositionTimeOffset = 0;\n }\n if (typeof currentDts === 'bigint') {\n sample.pts = currentDts + window$2.BigInt(sample.compositionTimeOffset);\n currentDts += window$2.BigInt(sample.duration);\n } else {\n sample.pts = currentDts + sample.compositionTimeOffset;\n currentDts += sample.duration;\n }\n });\n allSamples = allSamples.concat(samples);\n });\n return allSamples;\n };\n /**\n * Parses out caption nals from an FMP4 segment's video tracks.\n *\n * @param {Uint8Array} segment - The bytes of a single segment\n * @param {Number} videoTrackId - The trackId of a video track in the segment\n * @return {Object.} A mapping of video trackId to\n * a list of seiNals found in that track\n **/\n\n var parseCaptionNals = function (segment, videoTrackId) {\n // To get the samples\n var trafs = findBox$1(segment, ['moof', 'traf']); // To get SEI NAL units\n\n var mdats = findBox$1(segment, ['mdat']);\n var captionNals = {};\n var mdatTrafPairs = []; // Pair up each traf with a mdat as moofs and mdats are in pairs\n\n mdats.forEach(function (mdat, index) {\n var matchingTraf = trafs[index];\n mdatTrafPairs.push({\n mdat: mdat,\n traf: matchingTraf\n });\n });\n mdatTrafPairs.forEach(function (pair) {\n var mdat = pair.mdat;\n var traf = pair.traf;\n var tfhd = findBox$1(traf, ['tfhd']); // Exactly 1 tfhd per traf\n\n var headerInfo = parseTfhd$1(tfhd[0]);\n var trackId = headerInfo.trackId;\n var tfdt = findBox$1(traf, ['tfdt']); // Either 0 or 1 tfdt per traf\n\n var baseMediaDecodeTime = tfdt.length > 0 ? parseTfdt$1(tfdt[0]).baseMediaDecodeTime : 0;\n var truns = findBox$1(traf, ['trun']);\n var samples;\n var result; // Only parse video data for the chosen video track\n\n if (videoTrackId === trackId && truns.length > 0) {\n samples = parseSamples(truns, baseMediaDecodeTime, headerInfo);\n result = findSeiNals(mdat, samples, trackId);\n if (!captionNals[trackId]) {\n captionNals[trackId] = {\n seiNals: [],\n logs: []\n };\n }\n captionNals[trackId].seiNals = captionNals[trackId].seiNals.concat(result.seiNals);\n captionNals[trackId].logs = captionNals[trackId].logs.concat(result.logs);\n }\n });\n return captionNals;\n };\n /**\n * Parses out inband captions from an MP4 container and returns\n * caption objects that can be used by WebVTT and the TextTrack API.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/VTTCue\n * @see https://developer.mozilla.org/en-US/docs/Web/API/TextTrack\n * Assumes that `probe.getVideoTrackIds` and `probe.timescale` have been called first\n *\n * @param {Uint8Array} segment - The fmp4 segment containing embedded captions\n * @param {Number} trackId - The id of the video track to parse\n * @param {Number} timescale - The timescale for the video track from the init segment\n *\n * @return {?Object[]} parsedCaptions - A list of captions or null if no video tracks\n * @return {Number} parsedCaptions[].startTime - The time to show the caption in seconds\n * @return {Number} parsedCaptions[].endTime - The time to stop showing the caption in seconds\n * @return {Object[]} parsedCaptions[].content - A list of individual caption segments\n * @return {String} parsedCaptions[].content.text - The visible content of the caption segment\n * @return {Number} parsedCaptions[].content.line - The line height from 1-15 for positioning of the caption segment\n * @return {Number} parsedCaptions[].content.position - The column indent percentage for cue positioning from 10-80\n **/\n\n var parseEmbeddedCaptions = function (segment, trackId, timescale) {\n var captionNals; // the ISO-BMFF spec says that trackId can't be zero, but there's some broken content out there\n\n if (trackId === null) {\n return null;\n }\n captionNals = parseCaptionNals(segment, trackId);\n var trackNals = captionNals[trackId] || {};\n return {\n seiNals: trackNals.seiNals,\n logs: trackNals.logs,\n timescale: timescale\n };\n };\n /**\n * Converts SEI NALUs into captions that can be used by video.js\n **/\n\n var CaptionParser = function () {\n var isInitialized = false;\n var captionStream; // Stores segments seen before trackId and timescale are set\n\n var segmentCache; // Stores video track ID of the track being parsed\n\n var trackId; // Stores the timescale of the track being parsed\n\n var timescale; // Stores captions parsed so far\n\n var parsedCaptions; // Stores whether we are receiving partial data or not\n\n var parsingPartial;\n /**\n * A method to indicate whether a CaptionParser has been initalized\n * @returns {Boolean}\n **/\n\n this.isInitialized = function () {\n return isInitialized;\n };\n /**\n * Initializes the underlying CaptionStream, SEI NAL parsing\n * and management, and caption collection\n **/\n\n this.init = function (options) {\n captionStream = new CaptionStream();\n isInitialized = true;\n parsingPartial = options ? options.isPartial : false; // Collect dispatched captions\n\n captionStream.on('data', function (event) {\n // Convert to seconds in the source's timescale\n event.startTime = event.startPts / timescale;\n event.endTime = event.endPts / timescale;\n parsedCaptions.captions.push(event);\n parsedCaptions.captionStreams[event.stream] = true;\n });\n captionStream.on('log', function (log) {\n parsedCaptions.logs.push(log);\n });\n };\n /**\n * Determines if a new video track will be selected\n * or if the timescale changed\n * @return {Boolean}\n **/\n\n this.isNewInit = function (videoTrackIds, timescales) {\n if (videoTrackIds && videoTrackIds.length === 0 || timescales && typeof timescales === 'object' && Object.keys(timescales).length === 0) {\n return false;\n }\n return trackId !== videoTrackIds[0] || timescale !== timescales[trackId];\n };\n /**\n * Parses out SEI captions and interacts with underlying\n * CaptionStream to return dispatched captions\n *\n * @param {Uint8Array} segment - The fmp4 segment containing embedded captions\n * @param {Number[]} videoTrackIds - A list of video tracks found in the init segment\n * @param {Object.} timescales - The timescales found in the init segment\n * @see parseEmbeddedCaptions\n * @see m2ts/caption-stream.js\n **/\n\n this.parse = function (segment, videoTrackIds, timescales) {\n var parsedData;\n if (!this.isInitialized()) {\n return null; // This is not likely to be a video segment\n } else if (!videoTrackIds || !timescales) {\n return null;\n } else if (this.isNewInit(videoTrackIds, timescales)) {\n // Use the first video track only as there is no\n // mechanism to switch to other video tracks\n trackId = videoTrackIds[0];\n timescale = timescales[trackId]; // If an init segment has not been seen yet, hold onto segment\n // data until we have one.\n // the ISO-BMFF spec says that trackId can't be zero, but there's some broken content out there\n } else if (trackId === null || !timescale) {\n segmentCache.push(segment);\n return null;\n } // Now that a timescale and trackId is set, parse cached segments\n\n while (segmentCache.length > 0) {\n var cachedSegment = segmentCache.shift();\n this.parse(cachedSegment, videoTrackIds, timescales);\n }\n parsedData = parseEmbeddedCaptions(segment, trackId, timescale);\n if (parsedData && parsedData.logs) {\n parsedCaptions.logs = parsedCaptions.logs.concat(parsedData.logs);\n }\n if (parsedData === null || !parsedData.seiNals) {\n if (parsedCaptions.logs.length) {\n return {\n logs: parsedCaptions.logs,\n captions: [],\n captionStreams: []\n };\n }\n return null;\n }\n this.pushNals(parsedData.seiNals); // Force the parsed captions to be dispatched\n\n this.flushStream();\n return parsedCaptions;\n };\n /**\n * Pushes SEI NALUs onto CaptionStream\n * @param {Object[]} nals - A list of SEI nals parsed using `parseCaptionNals`\n * Assumes that `parseCaptionNals` has been called first\n * @see m2ts/caption-stream.js\n **/\n\n this.pushNals = function (nals) {\n if (!this.isInitialized() || !nals || nals.length === 0) {\n return null;\n }\n nals.forEach(function (nal) {\n captionStream.push(nal);\n });\n };\n /**\n * Flushes underlying CaptionStream to dispatch processed, displayable captions\n * @see m2ts/caption-stream.js\n **/\n\n this.flushStream = function () {\n if (!this.isInitialized()) {\n return null;\n }\n if (!parsingPartial) {\n captionStream.flush();\n } else {\n captionStream.partialFlush();\n }\n };\n /**\n * Reset caption buckets for new data\n **/\n\n this.clearParsedCaptions = function () {\n parsedCaptions.captions = [];\n parsedCaptions.captionStreams = {};\n parsedCaptions.logs = [];\n };\n /**\n * Resets underlying CaptionStream\n * @see m2ts/caption-stream.js\n **/\n\n this.resetCaptionStream = function () {\n if (!this.isInitialized()) {\n return null;\n }\n captionStream.reset();\n };\n /**\n * Convenience method to clear all captions flushed from the\n * CaptionStream and still being parsed\n * @see m2ts/caption-stream.js\n **/\n\n this.clearAllCaptions = function () {\n this.clearParsedCaptions();\n this.resetCaptionStream();\n };\n /**\n * Reset caption parser\n **/\n\n this.reset = function () {\n segmentCache = [];\n trackId = null;\n timescale = null;\n if (!parsedCaptions) {\n parsedCaptions = {\n captions: [],\n // CC1, CC2, CC3, CC4\n captionStreams: {},\n logs: []\n };\n } else {\n this.clearParsedCaptions();\n }\n this.resetCaptionStream();\n };\n this.reset();\n };\n var captionParser = CaptionParser;\n /**\n * Returns the first string in the data array ending with a null char '\\0'\n * @param {UInt8} data \n * @returns the string with the null char\n */\n\n var uint8ToCString$1 = function (data) {\n var index = 0;\n var curChar = String.fromCharCode(data[index]);\n var retString = '';\n while (curChar !== '\\0') {\n retString += curChar;\n index++;\n curChar = String.fromCharCode(data[index]);\n } // Add nullChar\n\n retString += curChar;\n return retString;\n };\n var string = {\n uint8ToCString: uint8ToCString$1\n };\n var uint8ToCString = string.uint8ToCString;\n var getUint64$1 = numbers.getUint64;\n /**\n * Based on: ISO/IEC 23009 Section: 5.10.3.3\n * References:\n * https://dashif-documents.azurewebsites.net/Events/master/event.html#emsg-format\n * https://aomediacodec.github.io/id3-emsg/\n * \n * Takes emsg box data as a uint8 array and returns a emsg box object\n * @param {UInt8Array} boxData data from emsg box\n * @returns A parsed emsg box object\n */\n\n var parseEmsgBox = function (boxData) {\n // version + flags\n var offset = 4;\n var version = boxData[0];\n var scheme_id_uri, value, timescale, presentation_time, presentation_time_delta, event_duration, id, message_data;\n if (version === 0) {\n scheme_id_uri = uint8ToCString(boxData.subarray(offset));\n offset += scheme_id_uri.length;\n value = uint8ToCString(boxData.subarray(offset));\n offset += value.length;\n var dv = new DataView(boxData.buffer);\n timescale = dv.getUint32(offset);\n offset += 4;\n presentation_time_delta = dv.getUint32(offset);\n offset += 4;\n event_duration = dv.getUint32(offset);\n offset += 4;\n id = dv.getUint32(offset);\n offset += 4;\n } else if (version === 1) {\n var dv = new DataView(boxData.buffer);\n timescale = dv.getUint32(offset);\n offset += 4;\n presentation_time = getUint64$1(boxData.subarray(offset));\n offset += 8;\n event_duration = dv.getUint32(offset);\n offset += 4;\n id = dv.getUint32(offset);\n offset += 4;\n scheme_id_uri = uint8ToCString(boxData.subarray(offset));\n offset += scheme_id_uri.length;\n value = uint8ToCString(boxData.subarray(offset));\n offset += value.length;\n }\n message_data = new Uint8Array(boxData.subarray(offset, boxData.byteLength));\n var emsgBox = {\n scheme_id_uri,\n value,\n // if timescale is undefined or 0 set to 1 \n timescale: timescale ? timescale : 1,\n presentation_time,\n presentation_time_delta,\n event_duration,\n id,\n message_data\n };\n return isValidEmsgBox(version, emsgBox) ? emsgBox : undefined;\n };\n /**\n * Scales a presentation time or time delta with an offset with a provided timescale\n * @param {number} presentationTime \n * @param {number} timescale \n * @param {number} timeDelta \n * @param {number} offset \n * @returns the scaled time as a number\n */\n\n var scaleTime = function (presentationTime, timescale, timeDelta, offset) {\n return presentationTime || presentationTime === 0 ? presentationTime / timescale : offset + timeDelta / timescale;\n };\n /**\n * Checks the emsg box data for validity based on the version\n * @param {number} version of the emsg box to validate\n * @param {Object} emsg the emsg data to validate\n * @returns if the box is valid as a boolean\n */\n\n var isValidEmsgBox = function (version, emsg) {\n var hasScheme = emsg.scheme_id_uri !== '\\0';\n var isValidV0Box = version === 0 && isDefined(emsg.presentation_time_delta) && hasScheme;\n var isValidV1Box = version === 1 && isDefined(emsg.presentation_time) && hasScheme; // Only valid versions of emsg are 0 and 1\n\n return !(version > 1) && isValidV0Box || isValidV1Box;\n }; // Utility function to check if an object is defined\n\n var isDefined = function (data) {\n return data !== undefined || data !== null;\n };\n var emsg$1 = {\n parseEmsgBox: parseEmsgBox,\n scaleTime: scaleTime\n };\n /**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n *\n * Utilities to detect basic properties and metadata about MP4s.\n */\n\n var toUnsigned = bin.toUnsigned;\n var toHexString = bin.toHexString;\n var findBox = findBox_1;\n var parseType$1 = parseType_1;\n var emsg = emsg$1;\n var parseTfhd = parseTfhd$2;\n var parseTrun = parseTrun$2;\n var parseTfdt = parseTfdt$2;\n var getUint64 = numbers.getUint64;\n var timescale, startTime, compositionStartTime, getVideoTrackIds, getTracks, getTimescaleFromMediaHeader, getEmsgID3;\n var window$1 = window_1;\n var parseId3Frames = parseId3.parseId3Frames;\n /**\n * Parses an MP4 initialization segment and extracts the timescale\n * values for any declared tracks. Timescale values indicate the\n * number of clock ticks per second to assume for time-based values\n * elsewhere in the MP4.\n *\n * To determine the start time of an MP4, you need two pieces of\n * information: the timescale unit and the earliest base media decode\n * time. Multiple timescales can be specified within an MP4 but the\n * base media decode time is always expressed in the timescale from\n * the media header box for the track:\n * ```\n * moov > trak > mdia > mdhd.timescale\n * ```\n * @param init {Uint8Array} the bytes of the init segment\n * @return {object} a hash of track ids to timescale values or null if\n * the init segment is malformed.\n */\n\n timescale = function (init) {\n var result = {},\n traks = findBox(init, ['moov', 'trak']); // mdhd timescale\n\n return traks.reduce(function (result, trak) {\n var tkhd, version, index, id, mdhd;\n tkhd = findBox(trak, ['tkhd'])[0];\n if (!tkhd) {\n return null;\n }\n version = tkhd[0];\n index = version === 0 ? 12 : 20;\n id = toUnsigned(tkhd[index] << 24 | tkhd[index + 1] << 16 | tkhd[index + 2] << 8 | tkhd[index + 3]);\n mdhd = findBox(trak, ['mdia', 'mdhd'])[0];\n if (!mdhd) {\n return null;\n }\n version = mdhd[0];\n index = version === 0 ? 12 : 20;\n result[id] = toUnsigned(mdhd[index] << 24 | mdhd[index + 1] << 16 | mdhd[index + 2] << 8 | mdhd[index + 3]);\n return result;\n }, result);\n };\n /**\n * Determine the base media decode start time, in seconds, for an MP4\n * fragment. If multiple fragments are specified, the earliest time is\n * returned.\n *\n * The base media decode time can be parsed from track fragment\n * metadata:\n * ```\n * moof > traf > tfdt.baseMediaDecodeTime\n * ```\n * It requires the timescale value from the mdhd to interpret.\n *\n * @param timescale {object} a hash of track ids to timescale values.\n * @return {number} the earliest base media decode start time for the\n * fragment, in seconds\n */\n\n startTime = function (timescale, fragment) {\n var trafs; // we need info from two childrend of each track fragment box\n\n trafs = findBox(fragment, ['moof', 'traf']); // determine the start times for each track\n\n var lowestTime = trafs.reduce(function (acc, traf) {\n var tfhd = findBox(traf, ['tfhd'])[0]; // get the track id from the tfhd\n\n var id = toUnsigned(tfhd[4] << 24 | tfhd[5] << 16 | tfhd[6] << 8 | tfhd[7]); // assume a 90kHz clock if no timescale was specified\n\n var scale = timescale[id] || 90e3; // get the base media decode time from the tfdt\n\n var tfdt = findBox(traf, ['tfdt'])[0];\n var dv = new DataView(tfdt.buffer, tfdt.byteOffset, tfdt.byteLength);\n var baseTime; // version 1 is 64 bit\n\n if (tfdt[0] === 1) {\n baseTime = getUint64(tfdt.subarray(4, 12));\n } else {\n baseTime = dv.getUint32(4);\n } // convert base time to seconds if it is a valid number.\n\n let seconds;\n if (typeof baseTime === 'bigint') {\n seconds = baseTime / window$1.BigInt(scale);\n } else if (typeof baseTime === 'number' && !isNaN(baseTime)) {\n seconds = baseTime / scale;\n }\n if (seconds < Number.MAX_SAFE_INTEGER) {\n seconds = Number(seconds);\n }\n if (seconds < acc) {\n acc = seconds;\n }\n return acc;\n }, Infinity);\n return typeof lowestTime === 'bigint' || isFinite(lowestTime) ? lowestTime : 0;\n };\n /**\n * Determine the composition start, in seconds, for an MP4\n * fragment.\n *\n * The composition start time of a fragment can be calculated using the base\n * media decode time, composition time offset, and timescale, as follows:\n *\n * compositionStartTime = (baseMediaDecodeTime + compositionTimeOffset) / timescale\n *\n * All of the aforementioned information is contained within a media fragment's\n * `traf` box, except for timescale info, which comes from the initialization\n * segment, so a track id (also contained within a `traf`) is also necessary to\n * associate it with a timescale\n *\n *\n * @param timescales {object} - a hash of track ids to timescale values.\n * @param fragment {Unit8Array} - the bytes of a media segment\n * @return {number} the composition start time for the fragment, in seconds\n **/\n\n compositionStartTime = function (timescales, fragment) {\n var trafBoxes = findBox(fragment, ['moof', 'traf']);\n var baseMediaDecodeTime = 0;\n var compositionTimeOffset = 0;\n var trackId;\n if (trafBoxes && trafBoxes.length) {\n // The spec states that track run samples contained within a `traf` box are contiguous, but\n // it does not explicitly state whether the `traf` boxes themselves are contiguous.\n // We will assume that they are, so we only need the first to calculate start time.\n var tfhd = findBox(trafBoxes[0], ['tfhd'])[0];\n var trun = findBox(trafBoxes[0], ['trun'])[0];\n var tfdt = findBox(trafBoxes[0], ['tfdt'])[0];\n if (tfhd) {\n var parsedTfhd = parseTfhd(tfhd);\n trackId = parsedTfhd.trackId;\n }\n if (tfdt) {\n var parsedTfdt = parseTfdt(tfdt);\n baseMediaDecodeTime = parsedTfdt.baseMediaDecodeTime;\n }\n if (trun) {\n var parsedTrun = parseTrun(trun);\n if (parsedTrun.samples && parsedTrun.samples.length) {\n compositionTimeOffset = parsedTrun.samples[0].compositionTimeOffset || 0;\n }\n }\n } // Get timescale for this specific track. Assume a 90kHz clock if no timescale was\n // specified.\n\n var timescale = timescales[trackId] || 90e3; // return the composition start time, in seconds\n\n if (typeof baseMediaDecodeTime === 'bigint') {\n compositionTimeOffset = window$1.BigInt(compositionTimeOffset);\n timescale = window$1.BigInt(timescale);\n }\n var result = (baseMediaDecodeTime + compositionTimeOffset) / timescale;\n if (typeof result === 'bigint' && result < Number.MAX_SAFE_INTEGER) {\n result = Number(result);\n }\n return result;\n };\n /**\n * Find the trackIds of the video tracks in this source.\n * Found by parsing the Handler Reference and Track Header Boxes:\n * moov > trak > mdia > hdlr\n * moov > trak > tkhd\n *\n * @param {Uint8Array} init - The bytes of the init segment for this source\n * @return {Number[]} A list of trackIds\n *\n * @see ISO-BMFF-12/2015, Section 8.4.3\n **/\n\n getVideoTrackIds = function (init) {\n var traks = findBox(init, ['moov', 'trak']);\n var videoTrackIds = [];\n traks.forEach(function (trak) {\n var hdlrs = findBox(trak, ['mdia', 'hdlr']);\n var tkhds = findBox(trak, ['tkhd']);\n hdlrs.forEach(function (hdlr, index) {\n var handlerType = parseType$1(hdlr.subarray(8, 12));\n var tkhd = tkhds[index];\n var view;\n var version;\n var trackId;\n if (handlerType === 'vide') {\n view = new DataView(tkhd.buffer, tkhd.byteOffset, tkhd.byteLength);\n version = view.getUint8(0);\n trackId = version === 0 ? view.getUint32(12) : view.getUint32(20);\n videoTrackIds.push(trackId);\n }\n });\n });\n return videoTrackIds;\n };\n getTimescaleFromMediaHeader = function (mdhd) {\n // mdhd is a FullBox, meaning it will have its own version as the first byte\n var version = mdhd[0];\n var index = version === 0 ? 12 : 20;\n return toUnsigned(mdhd[index] << 24 | mdhd[index + 1] << 16 | mdhd[index + 2] << 8 | mdhd[index + 3]);\n };\n /**\n * Get all the video, audio, and hint tracks from a non fragmented\n * mp4 segment\n */\n\n getTracks = function (init) {\n var traks = findBox(init, ['moov', 'trak']);\n var tracks = [];\n traks.forEach(function (trak) {\n var track = {};\n var tkhd = findBox(trak, ['tkhd'])[0];\n var view, tkhdVersion; // id\n\n if (tkhd) {\n view = new DataView(tkhd.buffer, tkhd.byteOffset, tkhd.byteLength);\n tkhdVersion = view.getUint8(0);\n track.id = tkhdVersion === 0 ? view.getUint32(12) : view.getUint32(20);\n }\n var hdlr = findBox(trak, ['mdia', 'hdlr'])[0]; // type\n\n if (hdlr) {\n var type = parseType$1(hdlr.subarray(8, 12));\n if (type === 'vide') {\n track.type = 'video';\n } else if (type === 'soun') {\n track.type = 'audio';\n } else {\n track.type = type;\n }\n } // codec\n\n var stsd = findBox(trak, ['mdia', 'minf', 'stbl', 'stsd'])[0];\n if (stsd) {\n var sampleDescriptions = stsd.subarray(8); // gives the codec type string\n\n track.codec = parseType$1(sampleDescriptions.subarray(4, 8));\n var codecBox = findBox(sampleDescriptions, [track.codec])[0];\n var codecConfig, codecConfigType;\n if (codecBox) {\n // https://tools.ietf.org/html/rfc6381#section-3.3\n if (/^[asm]vc[1-9]$/i.test(track.codec)) {\n // we don't need anything but the \"config\" parameter of the\n // avc1 codecBox\n codecConfig = codecBox.subarray(78);\n codecConfigType = parseType$1(codecConfig.subarray(4, 8));\n if (codecConfigType === 'avcC' && codecConfig.length > 11) {\n track.codec += '.'; // left padded with zeroes for single digit hex\n // profile idc\n\n track.codec += toHexString(codecConfig[9]); // the byte containing the constraint_set flags\n\n track.codec += toHexString(codecConfig[10]); // level idc\n\n track.codec += toHexString(codecConfig[11]);\n } else {\n // TODO: show a warning that we couldn't parse the codec\n // and are using the default\n track.codec = 'avc1.4d400d';\n }\n } else if (/^mp4[a,v]$/i.test(track.codec)) {\n // we do not need anything but the streamDescriptor of the mp4a codecBox\n codecConfig = codecBox.subarray(28);\n codecConfigType = parseType$1(codecConfig.subarray(4, 8));\n if (codecConfigType === 'esds' && codecConfig.length > 20 && codecConfig[19] !== 0) {\n track.codec += '.' + toHexString(codecConfig[19]); // this value is only a single digit\n\n track.codec += '.' + toHexString(codecConfig[20] >>> 2 & 0x3f).replace(/^0/, '');\n } else {\n // TODO: show a warning that we couldn't parse the codec\n // and are using the default\n track.codec = 'mp4a.40.2';\n }\n } else {\n // flac, opus, etc\n track.codec = track.codec.toLowerCase();\n }\n }\n }\n var mdhd = findBox(trak, ['mdia', 'mdhd'])[0];\n if (mdhd) {\n track.timescale = getTimescaleFromMediaHeader(mdhd);\n }\n tracks.push(track);\n });\n return tracks;\n };\n /**\n * Returns an array of emsg ID3 data from the provided segmentData.\n * An offset can also be provided as the Latest Arrival Time to calculate \n * the Event Start Time of v0 EMSG boxes. \n * See: https://dashif-documents.azurewebsites.net/Events/master/event.html#Inband-event-timing\n * \n * @param {Uint8Array} segmentData the segment byte array.\n * @param {number} offset the segment start time or Latest Arrival Time, \n * @return {Object[]} an array of ID3 parsed from EMSG boxes\n */\n\n getEmsgID3 = function (segmentData, offset = 0) {\n var emsgBoxes = findBox(segmentData, ['emsg']);\n return emsgBoxes.map(data => {\n var parsedBox = emsg.parseEmsgBox(new Uint8Array(data));\n var parsedId3Frames = parseId3Frames(parsedBox.message_data);\n return {\n cueTime: emsg.scaleTime(parsedBox.presentation_time, parsedBox.timescale, parsedBox.presentation_time_delta, offset),\n duration: emsg.scaleTime(parsedBox.event_duration, parsedBox.timescale),\n frames: parsedId3Frames\n };\n });\n };\n var probe$2 = {\n // export mp4 inspector's findBox and parseType for backwards compatibility\n findBox: findBox,\n parseType: parseType$1,\n timescale: timescale,\n startTime: startTime,\n compositionStartTime: compositionStartTime,\n videoTrackIds: getVideoTrackIds,\n tracks: getTracks,\n getTimescaleFromMediaHeader: getTimescaleFromMediaHeader,\n getEmsgID3: getEmsgID3\n };\n /**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n *\n * Utilities to detect basic properties and metadata about TS Segments.\n */\n\n var StreamTypes$1 = streamTypes;\n var parsePid = function (packet) {\n var pid = packet[1] & 0x1f;\n pid <<= 8;\n pid |= packet[2];\n return pid;\n };\n var parsePayloadUnitStartIndicator = function (packet) {\n return !!(packet[1] & 0x40);\n };\n var parseAdaptionField = function (packet) {\n var offset = 0; // if an adaption field is present, its length is specified by the\n // fifth byte of the TS packet header. The adaptation field is\n // used to add stuffing to PES packets that don't fill a complete\n // TS packet, and to specify some forms of timing and control data\n // that we do not currently use.\n\n if ((packet[3] & 0x30) >>> 4 > 0x01) {\n offset += packet[4] + 1;\n }\n return offset;\n };\n var parseType = function (packet, pmtPid) {\n var pid = parsePid(packet);\n if (pid === 0) {\n return 'pat';\n } else if (pid === pmtPid) {\n return 'pmt';\n } else if (pmtPid) {\n return 'pes';\n }\n return null;\n };\n var parsePat = function (packet) {\n var pusi = parsePayloadUnitStartIndicator(packet);\n var offset = 4 + parseAdaptionField(packet);\n if (pusi) {\n offset += packet[offset] + 1;\n }\n return (packet[offset + 10] & 0x1f) << 8 | packet[offset + 11];\n };\n var parsePmt = function (packet) {\n var programMapTable = {};\n var pusi = parsePayloadUnitStartIndicator(packet);\n var payloadOffset = 4 + parseAdaptionField(packet);\n if (pusi) {\n payloadOffset += packet[payloadOffset] + 1;\n } // PMTs can be sent ahead of the time when they should actually\n // take effect. We don't believe this should ever be the case\n // for HLS but we'll ignore \"forward\" PMT declarations if we see\n // them. Future PMT declarations have the current_next_indicator\n // set to zero.\n\n if (!(packet[payloadOffset + 5] & 0x01)) {\n return;\n }\n var sectionLength, tableEnd, programInfoLength; // the mapping table ends at the end of the current section\n\n sectionLength = (packet[payloadOffset + 1] & 0x0f) << 8 | packet[payloadOffset + 2];\n tableEnd = 3 + sectionLength - 4; // to determine where the table is, we have to figure out how\n // long the program info descriptors are\n\n programInfoLength = (packet[payloadOffset + 10] & 0x0f) << 8 | packet[payloadOffset + 11]; // advance the offset to the first entry in the mapping table\n\n var offset = 12 + programInfoLength;\n while (offset < tableEnd) {\n var i = payloadOffset + offset; // add an entry that maps the elementary_pid to the stream_type\n\n programMapTable[(packet[i + 1] & 0x1F) << 8 | packet[i + 2]] = packet[i]; // move to the next table entry\n // skip past the elementary stream descriptors, if present\n\n offset += ((packet[i + 3] & 0x0F) << 8 | packet[i + 4]) + 5;\n }\n return programMapTable;\n };\n var parsePesType = function (packet, programMapTable) {\n var pid = parsePid(packet);\n var type = programMapTable[pid];\n switch (type) {\n case StreamTypes$1.H264_STREAM_TYPE:\n return 'video';\n case StreamTypes$1.ADTS_STREAM_TYPE:\n return 'audio';\n case StreamTypes$1.METADATA_STREAM_TYPE:\n return 'timed-metadata';\n default:\n return null;\n }\n };\n var parsePesTime = function (packet) {\n var pusi = parsePayloadUnitStartIndicator(packet);\n if (!pusi) {\n return null;\n }\n var offset = 4 + parseAdaptionField(packet);\n if (offset >= packet.byteLength) {\n // From the H 222.0 MPEG-TS spec\n // \"For transport stream packets carrying PES packets, stuffing is needed when there\n // is insufficient PES packet data to completely fill the transport stream packet\n // payload bytes. Stuffing is accomplished by defining an adaptation field longer than\n // the sum of the lengths of the data elements in it, so that the payload bytes\n // remaining after the adaptation field exactly accommodates the available PES packet\n // data.\"\n //\n // If the offset is >= the length of the packet, then the packet contains no data\n // and instead is just adaption field stuffing bytes\n return null;\n }\n var pes = null;\n var ptsDtsFlags; // PES packets may be annotated with a PTS value, or a PTS value\n // and a DTS value. Determine what combination of values is\n // available to work with.\n\n ptsDtsFlags = packet[offset + 7]; // PTS and DTS are normally stored as a 33-bit number. Javascript\n // performs all bitwise operations on 32-bit integers but javascript\n // supports a much greater range (52-bits) of integer using standard\n // mathematical operations.\n // We construct a 31-bit value using bitwise operators over the 31\n // most significant bits and then multiply by 4 (equal to a left-shift\n // of 2) before we add the final 2 least significant bits of the\n // timestamp (equal to an OR.)\n\n if (ptsDtsFlags & 0xC0) {\n pes = {}; // the PTS and DTS are not written out directly. For information\n // on how they are encoded, see\n // http://dvd.sourceforge.net/dvdinfo/pes-hdr.html\n\n pes.pts = (packet[offset + 9] & 0x0E) << 27 | (packet[offset + 10] & 0xFF) << 20 | (packet[offset + 11] & 0xFE) << 12 | (packet[offset + 12] & 0xFF) << 5 | (packet[offset + 13] & 0xFE) >>> 3;\n pes.pts *= 4; // Left shift by 2\n\n pes.pts += (packet[offset + 13] & 0x06) >>> 1; // OR by the two LSBs\n\n pes.dts = pes.pts;\n if (ptsDtsFlags & 0x40) {\n pes.dts = (packet[offset + 14] & 0x0E) << 27 | (packet[offset + 15] & 0xFF) << 20 | (packet[offset + 16] & 0xFE) << 12 | (packet[offset + 17] & 0xFF) << 5 | (packet[offset + 18] & 0xFE) >>> 3;\n pes.dts *= 4; // Left shift by 2\n\n pes.dts += (packet[offset + 18] & 0x06) >>> 1; // OR by the two LSBs\n }\n }\n return pes;\n };\n var parseNalUnitType = function (type) {\n switch (type) {\n case 0x05:\n return 'slice_layer_without_partitioning_rbsp_idr';\n case 0x06:\n return 'sei_rbsp';\n case 0x07:\n return 'seq_parameter_set_rbsp';\n case 0x08:\n return 'pic_parameter_set_rbsp';\n case 0x09:\n return 'access_unit_delimiter_rbsp';\n default:\n return null;\n }\n };\n var videoPacketContainsKeyFrame = function (packet) {\n var offset = 4 + parseAdaptionField(packet);\n var frameBuffer = packet.subarray(offset);\n var frameI = 0;\n var frameSyncPoint = 0;\n var foundKeyFrame = false;\n var nalType; // advance the sync point to a NAL start, if necessary\n\n for (; frameSyncPoint < frameBuffer.byteLength - 3; frameSyncPoint++) {\n if (frameBuffer[frameSyncPoint + 2] === 1) {\n // the sync point is properly aligned\n frameI = frameSyncPoint + 5;\n break;\n }\n }\n while (frameI < frameBuffer.byteLength) {\n // look at the current byte to determine if we've hit the end of\n // a NAL unit boundary\n switch (frameBuffer[frameI]) {\n case 0:\n // skip past non-sync sequences\n if (frameBuffer[frameI - 1] !== 0) {\n frameI += 2;\n break;\n } else if (frameBuffer[frameI - 2] !== 0) {\n frameI++;\n break;\n }\n if (frameSyncPoint + 3 !== frameI - 2) {\n nalType = parseNalUnitType(frameBuffer[frameSyncPoint + 3] & 0x1f);\n if (nalType === 'slice_layer_without_partitioning_rbsp_idr') {\n foundKeyFrame = true;\n }\n } // drop trailing zeroes\n\n do {\n frameI++;\n } while (frameBuffer[frameI] !== 1 && frameI < frameBuffer.length);\n frameSyncPoint = frameI - 2;\n frameI += 3;\n break;\n case 1:\n // skip past non-sync sequences\n if (frameBuffer[frameI - 1] !== 0 || frameBuffer[frameI - 2] !== 0) {\n frameI += 3;\n break;\n }\n nalType = parseNalUnitType(frameBuffer[frameSyncPoint + 3] & 0x1f);\n if (nalType === 'slice_layer_without_partitioning_rbsp_idr') {\n foundKeyFrame = true;\n }\n frameSyncPoint = frameI - 2;\n frameI += 3;\n break;\n default:\n // the current byte isn't a one or zero, so it cannot be part\n // of a sync sequence\n frameI += 3;\n break;\n }\n }\n frameBuffer = frameBuffer.subarray(frameSyncPoint);\n frameI -= frameSyncPoint;\n frameSyncPoint = 0; // parse the final nal\n\n if (frameBuffer && frameBuffer.byteLength > 3) {\n nalType = parseNalUnitType(frameBuffer[frameSyncPoint + 3] & 0x1f);\n if (nalType === 'slice_layer_without_partitioning_rbsp_idr') {\n foundKeyFrame = true;\n }\n }\n return foundKeyFrame;\n };\n var probe$1 = {\n parseType: parseType,\n parsePat: parsePat,\n parsePmt: parsePmt,\n parsePayloadUnitStartIndicator: parsePayloadUnitStartIndicator,\n parsePesType: parsePesType,\n parsePesTime: parsePesTime,\n videoPacketContainsKeyFrame: videoPacketContainsKeyFrame\n };\n /**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n *\n * Parse mpeg2 transport stream packets to extract basic timing information\n */\n\n var StreamTypes = streamTypes;\n var handleRollover = timestampRolloverStream.handleRollover;\n var probe = {};\n probe.ts = probe$1;\n probe.aac = utils;\n var ONE_SECOND_IN_TS = clock$2.ONE_SECOND_IN_TS;\n var MP2T_PACKET_LENGTH = 188,\n // bytes\n SYNC_BYTE = 0x47;\n /**\n * walks through segment data looking for pat and pmt packets to parse out\n * program map table information\n */\n\n var parsePsi_ = function (bytes, pmt) {\n var startIndex = 0,\n endIndex = MP2T_PACKET_LENGTH,\n packet,\n type;\n while (endIndex < bytes.byteLength) {\n // Look for a pair of start and end sync bytes in the data..\n if (bytes[startIndex] === SYNC_BYTE && bytes[endIndex] === SYNC_BYTE) {\n // We found a packet\n packet = bytes.subarray(startIndex, endIndex);\n type = probe.ts.parseType(packet, pmt.pid);\n switch (type) {\n case 'pat':\n pmt.pid = probe.ts.parsePat(packet);\n break;\n case 'pmt':\n var table = probe.ts.parsePmt(packet);\n pmt.table = pmt.table || {};\n Object.keys(table).forEach(function (key) {\n pmt.table[key] = table[key];\n });\n break;\n }\n startIndex += MP2T_PACKET_LENGTH;\n endIndex += MP2T_PACKET_LENGTH;\n continue;\n } // If we get here, we have somehow become de-synchronized and we need to step\n // forward one byte at a time until we find a pair of sync bytes that denote\n // a packet\n\n startIndex++;\n endIndex++;\n }\n };\n /**\n * walks through the segment data from the start and end to get timing information\n * for the first and last audio pes packets\n */\n\n var parseAudioPes_ = function (bytes, pmt, result) {\n var startIndex = 0,\n endIndex = MP2T_PACKET_LENGTH,\n packet,\n type,\n pesType,\n pusi,\n parsed;\n var endLoop = false; // Start walking from start of segment to get first audio packet\n\n while (endIndex <= bytes.byteLength) {\n // Look for a pair of start and end sync bytes in the data..\n if (bytes[startIndex] === SYNC_BYTE && (bytes[endIndex] === SYNC_BYTE || endIndex === bytes.byteLength)) {\n // We found a packet\n packet = bytes.subarray(startIndex, endIndex);\n type = probe.ts.parseType(packet, pmt.pid);\n switch (type) {\n case 'pes':\n pesType = probe.ts.parsePesType(packet, pmt.table);\n pusi = probe.ts.parsePayloadUnitStartIndicator(packet);\n if (pesType === 'audio' && pusi) {\n parsed = probe.ts.parsePesTime(packet);\n if (parsed) {\n parsed.type = 'audio';\n result.audio.push(parsed);\n endLoop = true;\n }\n }\n break;\n }\n if (endLoop) {\n break;\n }\n startIndex += MP2T_PACKET_LENGTH;\n endIndex += MP2T_PACKET_LENGTH;\n continue;\n } // If we get here, we have somehow become de-synchronized and we need to step\n // forward one byte at a time until we find a pair of sync bytes that denote\n // a packet\n\n startIndex++;\n endIndex++;\n } // Start walking from end of segment to get last audio packet\n\n endIndex = bytes.byteLength;\n startIndex = endIndex - MP2T_PACKET_LENGTH;\n endLoop = false;\n while (startIndex >= 0) {\n // Look for a pair of start and end sync bytes in the data..\n if (bytes[startIndex] === SYNC_BYTE && (bytes[endIndex] === SYNC_BYTE || endIndex === bytes.byteLength)) {\n // We found a packet\n packet = bytes.subarray(startIndex, endIndex);\n type = probe.ts.parseType(packet, pmt.pid);\n switch (type) {\n case 'pes':\n pesType = probe.ts.parsePesType(packet, pmt.table);\n pusi = probe.ts.parsePayloadUnitStartIndicator(packet);\n if (pesType === 'audio' && pusi) {\n parsed = probe.ts.parsePesTime(packet);\n if (parsed) {\n parsed.type = 'audio';\n result.audio.push(parsed);\n endLoop = true;\n }\n }\n break;\n }\n if (endLoop) {\n break;\n }\n startIndex -= MP2T_PACKET_LENGTH;\n endIndex -= MP2T_PACKET_LENGTH;\n continue;\n } // If we get here, we have somehow become de-synchronized and we need to step\n // forward one byte at a time until we find a pair of sync bytes that denote\n // a packet\n\n startIndex--;\n endIndex--;\n }\n };\n /**\n * walks through the segment data from the start and end to get timing information\n * for the first and last video pes packets as well as timing information for the first\n * key frame.\n */\n\n var parseVideoPes_ = function (bytes, pmt, result) {\n var startIndex = 0,\n endIndex = MP2T_PACKET_LENGTH,\n packet,\n type,\n pesType,\n pusi,\n parsed,\n frame,\n i,\n pes;\n var endLoop = false;\n var currentFrame = {\n data: [],\n size: 0\n }; // Start walking from start of segment to get first video packet\n\n while (endIndex < bytes.byteLength) {\n // Look for a pair of start and end sync bytes in the data..\n if (bytes[startIndex] === SYNC_BYTE && bytes[endIndex] === SYNC_BYTE) {\n // We found a packet\n packet = bytes.subarray(startIndex, endIndex);\n type = probe.ts.parseType(packet, pmt.pid);\n switch (type) {\n case 'pes':\n pesType = probe.ts.parsePesType(packet, pmt.table);\n pusi = probe.ts.parsePayloadUnitStartIndicator(packet);\n if (pesType === 'video') {\n if (pusi && !endLoop) {\n parsed = probe.ts.parsePesTime(packet);\n if (parsed) {\n parsed.type = 'video';\n result.video.push(parsed);\n endLoop = true;\n }\n }\n if (!result.firstKeyFrame) {\n if (pusi) {\n if (currentFrame.size !== 0) {\n frame = new Uint8Array(currentFrame.size);\n i = 0;\n while (currentFrame.data.length) {\n pes = currentFrame.data.shift();\n frame.set(pes, i);\n i += pes.byteLength;\n }\n if (probe.ts.videoPacketContainsKeyFrame(frame)) {\n var firstKeyFrame = probe.ts.parsePesTime(frame); // PTS/DTS may not be available. Simply *not* setting\n // the keyframe seems to work fine with HLS playback\n // and definitely preferable to a crash with TypeError...\n\n if (firstKeyFrame) {\n result.firstKeyFrame = firstKeyFrame;\n result.firstKeyFrame.type = 'video';\n } else {\n // eslint-disable-next-line\n console.warn('Failed to extract PTS/DTS from PES at first keyframe. ' + 'This could be an unusual TS segment, or else mux.js did not ' + 'parse your TS segment correctly. If you know your TS ' + 'segments do contain PTS/DTS on keyframes please file a bug ' + 'report! You can try ffprobe to double check for yourself.');\n }\n }\n currentFrame.size = 0;\n }\n }\n currentFrame.data.push(packet);\n currentFrame.size += packet.byteLength;\n }\n }\n break;\n }\n if (endLoop && result.firstKeyFrame) {\n break;\n }\n startIndex += MP2T_PACKET_LENGTH;\n endIndex += MP2T_PACKET_LENGTH;\n continue;\n } // If we get here, we have somehow become de-synchronized and we need to step\n // forward one byte at a time until we find a pair of sync bytes that denote\n // a packet\n\n startIndex++;\n endIndex++;\n } // Start walking from end of segment to get last video packet\n\n endIndex = bytes.byteLength;\n startIndex = endIndex - MP2T_PACKET_LENGTH;\n endLoop = false;\n while (startIndex >= 0) {\n // Look for a pair of start and end sync bytes in the data..\n if (bytes[startIndex] === SYNC_BYTE && bytes[endIndex] === SYNC_BYTE) {\n // We found a packet\n packet = bytes.subarray(startIndex, endIndex);\n type = probe.ts.parseType(packet, pmt.pid);\n switch (type) {\n case 'pes':\n pesType = probe.ts.parsePesType(packet, pmt.table);\n pusi = probe.ts.parsePayloadUnitStartIndicator(packet);\n if (pesType === 'video' && pusi) {\n parsed = probe.ts.parsePesTime(packet);\n if (parsed) {\n parsed.type = 'video';\n result.video.push(parsed);\n endLoop = true;\n }\n }\n break;\n }\n if (endLoop) {\n break;\n }\n startIndex -= MP2T_PACKET_LENGTH;\n endIndex -= MP2T_PACKET_LENGTH;\n continue;\n } // If we get here, we have somehow become de-synchronized and we need to step\n // forward one byte at a time until we find a pair of sync bytes that denote\n // a packet\n\n startIndex--;\n endIndex--;\n }\n };\n /**\n * Adjusts the timestamp information for the segment to account for\n * rollover and convert to seconds based on pes packet timescale (90khz clock)\n */\n\n var adjustTimestamp_ = function (segmentInfo, baseTimestamp) {\n if (segmentInfo.audio && segmentInfo.audio.length) {\n var audioBaseTimestamp = baseTimestamp;\n if (typeof audioBaseTimestamp === 'undefined' || isNaN(audioBaseTimestamp)) {\n audioBaseTimestamp = segmentInfo.audio[0].dts;\n }\n segmentInfo.audio.forEach(function (info) {\n info.dts = handleRollover(info.dts, audioBaseTimestamp);\n info.pts = handleRollover(info.pts, audioBaseTimestamp); // time in seconds\n\n info.dtsTime = info.dts / ONE_SECOND_IN_TS;\n info.ptsTime = info.pts / ONE_SECOND_IN_TS;\n });\n }\n if (segmentInfo.video && segmentInfo.video.length) {\n var videoBaseTimestamp = baseTimestamp;\n if (typeof videoBaseTimestamp === 'undefined' || isNaN(videoBaseTimestamp)) {\n videoBaseTimestamp = segmentInfo.video[0].dts;\n }\n segmentInfo.video.forEach(function (info) {\n info.dts = handleRollover(info.dts, videoBaseTimestamp);\n info.pts = handleRollover(info.pts, videoBaseTimestamp); // time in seconds\n\n info.dtsTime = info.dts / ONE_SECOND_IN_TS;\n info.ptsTime = info.pts / ONE_SECOND_IN_TS;\n });\n if (segmentInfo.firstKeyFrame) {\n var frame = segmentInfo.firstKeyFrame;\n frame.dts = handleRollover(frame.dts, videoBaseTimestamp);\n frame.pts = handleRollover(frame.pts, videoBaseTimestamp); // time in seconds\n\n frame.dtsTime = frame.dts / ONE_SECOND_IN_TS;\n frame.ptsTime = frame.pts / ONE_SECOND_IN_TS;\n }\n }\n };\n /**\n * inspects the aac data stream for start and end time information\n */\n\n var inspectAac_ = function (bytes) {\n var endLoop = false,\n audioCount = 0,\n sampleRate = null,\n timestamp = null,\n frameSize = 0,\n byteIndex = 0,\n packet;\n while (bytes.length - byteIndex >= 3) {\n var type = probe.aac.parseType(bytes, byteIndex);\n switch (type) {\n case 'timed-metadata':\n // Exit early because we don't have enough to parse\n // the ID3 tag header\n if (bytes.length - byteIndex < 10) {\n endLoop = true;\n break;\n }\n frameSize = probe.aac.parseId3TagSize(bytes, byteIndex); // Exit early if we don't have enough in the buffer\n // to emit a full packet\n\n if (frameSize > bytes.length) {\n endLoop = true;\n break;\n }\n if (timestamp === null) {\n packet = bytes.subarray(byteIndex, byteIndex + frameSize);\n timestamp = probe.aac.parseAacTimestamp(packet);\n }\n byteIndex += frameSize;\n break;\n case 'audio':\n // Exit early because we don't have enough to parse\n // the ADTS frame header\n if (bytes.length - byteIndex < 7) {\n endLoop = true;\n break;\n }\n frameSize = probe.aac.parseAdtsSize(bytes, byteIndex); // Exit early if we don't have enough in the buffer\n // to emit a full packet\n\n if (frameSize > bytes.length) {\n endLoop = true;\n break;\n }\n if (sampleRate === null) {\n packet = bytes.subarray(byteIndex, byteIndex + frameSize);\n sampleRate = probe.aac.parseSampleRate(packet);\n }\n audioCount++;\n byteIndex += frameSize;\n break;\n default:\n byteIndex++;\n break;\n }\n if (endLoop) {\n return null;\n }\n }\n if (sampleRate === null || timestamp === null) {\n return null;\n }\n var audioTimescale = ONE_SECOND_IN_TS / sampleRate;\n var result = {\n audio: [{\n type: 'audio',\n dts: timestamp,\n pts: timestamp\n }, {\n type: 'audio',\n dts: timestamp + audioCount * 1024 * audioTimescale,\n pts: timestamp + audioCount * 1024 * audioTimescale\n }]\n };\n return result;\n };\n /**\n * inspects the transport stream segment data for start and end time information\n * of the audio and video tracks (when present) as well as the first key frame's\n * start time.\n */\n\n var inspectTs_ = function (bytes) {\n var pmt = {\n pid: null,\n table: null\n };\n var result = {};\n parsePsi_(bytes, pmt);\n for (var pid in pmt.table) {\n if (pmt.table.hasOwnProperty(pid)) {\n var type = pmt.table[pid];\n switch (type) {\n case StreamTypes.H264_STREAM_TYPE:\n result.video = [];\n parseVideoPes_(bytes, pmt, result);\n if (result.video.length === 0) {\n delete result.video;\n }\n break;\n case StreamTypes.ADTS_STREAM_TYPE:\n result.audio = [];\n parseAudioPes_(bytes, pmt, result);\n if (result.audio.length === 0) {\n delete result.audio;\n }\n break;\n }\n }\n }\n return result;\n };\n /**\n * Inspects segment byte data and returns an object with start and end timing information\n *\n * @param {Uint8Array} bytes The segment byte data\n * @param {Number} baseTimestamp Relative reference timestamp used when adjusting frame\n * timestamps for rollover. This value must be in 90khz clock.\n * @return {Object} Object containing start and end frame timing info of segment.\n */\n\n var inspect = function (bytes, baseTimestamp) {\n var isAacData = probe.aac.isLikelyAacData(bytes);\n var result;\n if (isAacData) {\n result = inspectAac_(bytes);\n } else {\n result = inspectTs_(bytes);\n }\n if (!result || !result.audio && !result.video) {\n return null;\n }\n adjustTimestamp_(result, baseTimestamp);\n return result;\n };\n var tsInspector = {\n inspect: inspect,\n parseAudioPes_: parseAudioPes_\n };\n /* global self */\n\n /**\n * Re-emits transmuxer events by converting them into messages to the\n * world outside the worker.\n *\n * @param {Object} transmuxer the transmuxer to wire events on\n * @private\n */\n\n const wireTransmuxerEvents = function (self, transmuxer) {\n transmuxer.on('data', function (segment) {\n // transfer ownership of the underlying ArrayBuffer\n // instead of doing a copy to save memory\n // ArrayBuffers are transferable but generic TypedArrays are not\n // @link https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers#Passing_data_by_transferring_ownership_(transferable_objects)\n const initArray = segment.initSegment;\n segment.initSegment = {\n data: initArray.buffer,\n byteOffset: initArray.byteOffset,\n byteLength: initArray.byteLength\n };\n const typedArray = segment.data;\n segment.data = typedArray.buffer;\n self.postMessage({\n action: 'data',\n segment,\n byteOffset: typedArray.byteOffset,\n byteLength: typedArray.byteLength\n }, [segment.data]);\n });\n transmuxer.on('done', function (data) {\n self.postMessage({\n action: 'done'\n });\n });\n transmuxer.on('gopInfo', function (gopInfo) {\n self.postMessage({\n action: 'gopInfo',\n gopInfo\n });\n });\n transmuxer.on('videoSegmentTimingInfo', function (timingInfo) {\n const videoSegmentTimingInfo = {\n start: {\n decode: clock$2.videoTsToSeconds(timingInfo.start.dts),\n presentation: clock$2.videoTsToSeconds(timingInfo.start.pts)\n },\n end: {\n decode: clock$2.videoTsToSeconds(timingInfo.end.dts),\n presentation: clock$2.videoTsToSeconds(timingInfo.end.pts)\n },\n baseMediaDecodeTime: clock$2.videoTsToSeconds(timingInfo.baseMediaDecodeTime)\n };\n if (timingInfo.prependedContentDuration) {\n videoSegmentTimingInfo.prependedContentDuration = clock$2.videoTsToSeconds(timingInfo.prependedContentDuration);\n }\n self.postMessage({\n action: 'videoSegmentTimingInfo',\n videoSegmentTimingInfo\n });\n });\n transmuxer.on('audioSegmentTimingInfo', function (timingInfo) {\n // Note that all times for [audio/video]SegmentTimingInfo events are in video clock\n const audioSegmentTimingInfo = {\n start: {\n decode: clock$2.videoTsToSeconds(timingInfo.start.dts),\n presentation: clock$2.videoTsToSeconds(timingInfo.start.pts)\n },\n end: {\n decode: clock$2.videoTsToSeconds(timingInfo.end.dts),\n presentation: clock$2.videoTsToSeconds(timingInfo.end.pts)\n },\n baseMediaDecodeTime: clock$2.videoTsToSeconds(timingInfo.baseMediaDecodeTime)\n };\n if (timingInfo.prependedContentDuration) {\n audioSegmentTimingInfo.prependedContentDuration = clock$2.videoTsToSeconds(timingInfo.prependedContentDuration);\n }\n self.postMessage({\n action: 'audioSegmentTimingInfo',\n audioSegmentTimingInfo\n });\n });\n transmuxer.on('id3Frame', function (id3Frame) {\n self.postMessage({\n action: 'id3Frame',\n id3Frame\n });\n });\n transmuxer.on('caption', function (caption) {\n self.postMessage({\n action: 'caption',\n caption\n });\n });\n transmuxer.on('trackinfo', function (trackInfo) {\n self.postMessage({\n action: 'trackinfo',\n trackInfo\n });\n });\n transmuxer.on('audioTimingInfo', function (audioTimingInfo) {\n // convert to video TS since we prioritize video time over audio\n self.postMessage({\n action: 'audioTimingInfo',\n audioTimingInfo: {\n start: clock$2.videoTsToSeconds(audioTimingInfo.start),\n end: clock$2.videoTsToSeconds(audioTimingInfo.end)\n }\n });\n });\n transmuxer.on('videoTimingInfo', function (videoTimingInfo) {\n self.postMessage({\n action: 'videoTimingInfo',\n videoTimingInfo: {\n start: clock$2.videoTsToSeconds(videoTimingInfo.start),\n end: clock$2.videoTsToSeconds(videoTimingInfo.end)\n }\n });\n });\n transmuxer.on('log', function (log) {\n self.postMessage({\n action: 'log',\n log\n });\n });\n };\n /**\n * All incoming messages route through this hash. If no function exists\n * to handle an incoming message, then we ignore the message.\n *\n * @class MessageHandlers\n * @param {Object} options the options to initialize with\n */\n\n class MessageHandlers {\n constructor(self, options) {\n this.options = options || {};\n this.self = self;\n this.init();\n }\n /**\n * initialize our web worker and wire all the events.\n */\n\n init() {\n if (this.transmuxer) {\n this.transmuxer.dispose();\n }\n this.transmuxer = new transmuxer.Transmuxer(this.options);\n wireTransmuxerEvents(this.self, this.transmuxer);\n }\n pushMp4Captions(data) {\n if (!this.captionParser) {\n this.captionParser = new captionParser();\n this.captionParser.init();\n }\n const segment = new Uint8Array(data.data, data.byteOffset, data.byteLength);\n const parsed = this.captionParser.parse(segment, data.trackIds, data.timescales);\n this.self.postMessage({\n action: 'mp4Captions',\n captions: parsed && parsed.captions || [],\n logs: parsed && parsed.logs || [],\n data: segment.buffer\n }, [segment.buffer]);\n }\n probeMp4StartTime({\n timescales,\n data\n }) {\n const startTime = probe$2.startTime(timescales, data);\n this.self.postMessage({\n action: 'probeMp4StartTime',\n startTime,\n data\n }, [data.buffer]);\n }\n probeMp4Tracks({\n data\n }) {\n const tracks = probe$2.tracks(data);\n this.self.postMessage({\n action: 'probeMp4Tracks',\n tracks,\n data\n }, [data.buffer]);\n }\n /**\n * Probes an mp4 segment for EMSG boxes containing ID3 data.\n * https://aomediacodec.github.io/id3-emsg/\n *\n * @param {Uint8Array} data segment data\n * @param {number} offset segment start time\n * @return {Object[]} an array of ID3 frames\n */\n\n probeEmsgID3({\n data,\n offset\n }) {\n const id3Frames = probe$2.getEmsgID3(data, offset);\n this.self.postMessage({\n action: 'probeEmsgID3',\n id3Frames,\n emsgData: data\n }, [data.buffer]);\n }\n /**\n * Probe an mpeg2-ts segment to determine the start time of the segment in it's\n * internal \"media time,\" as well as whether it contains video and/or audio.\n *\n * @private\n * @param {Uint8Array} bytes - segment bytes\n * @param {number} baseStartTime\n * Relative reference timestamp used when adjusting frame timestamps for rollover.\n * This value should be in seconds, as it's converted to a 90khz clock within the\n * function body.\n * @return {Object} The start time of the current segment in \"media time\" as well as\n * whether it contains video and/or audio\n */\n\n probeTs({\n data,\n baseStartTime\n }) {\n const tsStartTime = typeof baseStartTime === 'number' && !isNaN(baseStartTime) ? baseStartTime * clock$2.ONE_SECOND_IN_TS : void 0;\n const timeInfo = tsInspector.inspect(data, tsStartTime);\n let result = null;\n if (timeInfo) {\n result = {\n // each type's time info comes back as an array of 2 times, start and end\n hasVideo: timeInfo.video && timeInfo.video.length === 2 || false,\n hasAudio: timeInfo.audio && timeInfo.audio.length === 2 || false\n };\n if (result.hasVideo) {\n result.videoStart = timeInfo.video[0].ptsTime;\n }\n if (result.hasAudio) {\n result.audioStart = timeInfo.audio[0].ptsTime;\n }\n }\n this.self.postMessage({\n action: 'probeTs',\n result,\n data\n }, [data.buffer]);\n }\n clearAllMp4Captions() {\n if (this.captionParser) {\n this.captionParser.clearAllCaptions();\n }\n }\n clearParsedMp4Captions() {\n if (this.captionParser) {\n this.captionParser.clearParsedCaptions();\n }\n }\n /**\n * Adds data (a ts segment) to the start of the transmuxer pipeline for\n * processing.\n *\n * @param {ArrayBuffer} data data to push into the muxer\n */\n\n push(data) {\n // Cast array buffer to correct type for transmuxer\n const segment = new Uint8Array(data.data, data.byteOffset, data.byteLength);\n this.transmuxer.push(segment);\n }\n /**\n * Recreate the transmuxer so that the next segment added via `push`\n * start with a fresh transmuxer.\n */\n\n reset() {\n this.transmuxer.reset();\n }\n /**\n * Set the value that will be used as the `baseMediaDecodeTime` time for the\n * next segment pushed in. Subsequent segments will have their `baseMediaDecodeTime`\n * set relative to the first based on the PTS values.\n *\n * @param {Object} data used to set the timestamp offset in the muxer\n */\n\n setTimestampOffset(data) {\n const timestampOffset = data.timestampOffset || 0;\n this.transmuxer.setBaseMediaDecodeTime(Math.round(clock$2.secondsToVideoTs(timestampOffset)));\n }\n setAudioAppendStart(data) {\n this.transmuxer.setAudioAppendStart(Math.ceil(clock$2.secondsToVideoTs(data.appendStart)));\n }\n setRemux(data) {\n this.transmuxer.setRemux(data.remux);\n }\n /**\n * Forces the pipeline to finish processing the last segment and emit it's\n * results.\n *\n * @param {Object} data event data, not really used\n */\n\n flush(data) {\n this.transmuxer.flush(); // transmuxed done action is fired after both audio/video pipelines are flushed\n\n self.postMessage({\n action: 'done',\n type: 'transmuxed'\n });\n }\n endTimeline() {\n this.transmuxer.endTimeline(); // transmuxed endedtimeline action is fired after both audio/video pipelines end their\n // timelines\n\n self.postMessage({\n action: 'endedtimeline',\n type: 'transmuxed'\n });\n }\n alignGopsWith(data) {\n this.transmuxer.alignGopsWith(data.gopsToAlignWith.slice());\n }\n }\n /**\n * Our web worker interface so that things can talk to mux.js\n * that will be running in a web worker. the scope is passed to this by\n * webworkify.\n *\n * @param {Object} self the scope for the web worker\n */\n\n self.onmessage = function (event) {\n if (event.data.action === 'init' && event.data.options) {\n this.messageHandlers = new MessageHandlers(self, event.data.options);\n return;\n }\n if (!this.messageHandlers) {\n this.messageHandlers = new MessageHandlers(self);\n }\n if (event.data && event.data.action && event.data.action !== 'init') {\n if (this.messageHandlers[event.data.action]) {\n this.messageHandlers[event.data.action](event.data);\n }\n }\n };\n}));\nvar TransmuxWorker = factory(workerCode$1);\n/* rollup-plugin-worker-factory end for worker!/home/runner/work/http-streaming/http-streaming/src/transmuxer-worker.js */\n\nconst handleData_ = (event, transmuxedData, callback) => {\n const {\n type,\n initSegment,\n captions,\n captionStreams,\n metadata,\n videoFrameDtsTime,\n videoFramePtsTime\n } = event.data.segment;\n transmuxedData.buffer.push({\n captions,\n captionStreams,\n metadata\n });\n const boxes = event.data.segment.boxes || {\n data: event.data.segment.data\n };\n const result = {\n type,\n // cast ArrayBuffer to TypedArray\n data: new Uint8Array(boxes.data, boxes.data.byteOffset, boxes.data.byteLength),\n initSegment: new Uint8Array(initSegment.data, initSegment.byteOffset, initSegment.byteLength)\n };\n if (typeof videoFrameDtsTime !== 'undefined') {\n result.videoFrameDtsTime = videoFrameDtsTime;\n }\n if (typeof videoFramePtsTime !== 'undefined') {\n result.videoFramePtsTime = videoFramePtsTime;\n }\n callback(result);\n};\nconst handleDone_ = ({\n transmuxedData,\n callback\n}) => {\n // Previously we only returned data on data events,\n // not on done events. Clear out the buffer to keep that consistent.\n transmuxedData.buffer = []; // all buffers should have been flushed from the muxer, so start processing anything we\n // have received\n\n callback(transmuxedData);\n};\nconst handleGopInfo_ = (event, transmuxedData) => {\n transmuxedData.gopInfo = event.data.gopInfo;\n};\nconst processTransmux = options => {\n const {\n transmuxer,\n bytes,\n audioAppendStart,\n gopsToAlignWith,\n remux,\n onData,\n onTrackInfo,\n onAudioTimingInfo,\n onVideoTimingInfo,\n onVideoSegmentTimingInfo,\n onAudioSegmentTimingInfo,\n onId3,\n onCaptions,\n onDone,\n onEndedTimeline,\n onTransmuxerLog,\n isEndOfTimeline,\n segment,\n triggerSegmentEventFn\n } = options;\n const transmuxedData = {\n buffer: []\n };\n let waitForEndedTimelineEvent = isEndOfTimeline;\n const handleMessage = event => {\n if (transmuxer.currentTransmux !== options) {\n // disposed\n return;\n }\n if (event.data.action === 'data') {\n handleData_(event, transmuxedData, onData);\n }\n if (event.data.action === 'trackinfo') {\n onTrackInfo(event.data.trackInfo);\n }\n if (event.data.action === 'gopInfo') {\n handleGopInfo_(event, transmuxedData);\n }\n if (event.data.action === 'audioTimingInfo') {\n onAudioTimingInfo(event.data.audioTimingInfo);\n }\n if (event.data.action === 'videoTimingInfo') {\n onVideoTimingInfo(event.data.videoTimingInfo);\n }\n if (event.data.action === 'videoSegmentTimingInfo') {\n onVideoSegmentTimingInfo(event.data.videoSegmentTimingInfo);\n }\n if (event.data.action === 'audioSegmentTimingInfo') {\n onAudioSegmentTimingInfo(event.data.audioSegmentTimingInfo);\n }\n if (event.data.action === 'id3Frame') {\n onId3([event.data.id3Frame], event.data.id3Frame.dispatchType);\n }\n if (event.data.action === 'caption') {\n onCaptions(event.data.caption);\n }\n if (event.data.action === 'endedtimeline') {\n waitForEndedTimelineEvent = false;\n onEndedTimeline();\n }\n if (event.data.action === 'log') {\n onTransmuxerLog(event.data.log);\n } // wait for the transmuxed event since we may have audio and video\n\n if (event.data.type !== 'transmuxed') {\n return;\n } // If the \"endedtimeline\" event has not yet fired, and this segment represents the end\n // of a timeline, that means there may still be data events before the segment\n // processing can be considerred complete. In that case, the final event should be\n // an \"endedtimeline\" event with the type \"transmuxed.\"\n\n if (waitForEndedTimelineEvent) {\n return;\n }\n transmuxer.onmessage = null;\n handleDone_({\n transmuxedData,\n callback: onDone\n });\n /* eslint-disable no-use-before-define */\n\n dequeue(transmuxer);\n /* eslint-enable */\n };\n const handleError = () => {\n const error = {\n message: 'Received an error message from the transmuxer worker',\n metadata: {\n errorType: videojs.Error.StreamingFailedToTransmuxSegment,\n segmentInfo: segmentInfoPayload({\n segment\n })\n }\n };\n onDone(null, error);\n };\n transmuxer.onmessage = handleMessage;\n transmuxer.onerror = handleError;\n if (audioAppendStart) {\n transmuxer.postMessage({\n action: 'setAudioAppendStart',\n appendStart: audioAppendStart\n });\n } // allow empty arrays to be passed to clear out GOPs\n\n if (Array.isArray(gopsToAlignWith)) {\n transmuxer.postMessage({\n action: 'alignGopsWith',\n gopsToAlignWith\n });\n }\n if (typeof remux !== 'undefined') {\n transmuxer.postMessage({\n action: 'setRemux',\n remux\n });\n }\n if (bytes.byteLength) {\n const buffer = bytes instanceof ArrayBuffer ? bytes : bytes.buffer;\n const byteOffset = bytes instanceof ArrayBuffer ? 0 : bytes.byteOffset;\n triggerSegmentEventFn({\n type: 'segmenttransmuxingstart',\n segment\n });\n transmuxer.postMessage({\n action: 'push',\n // Send the typed-array of data as an ArrayBuffer so that\n // it can be sent as a \"Transferable\" and avoid the costly\n // memory copy\n data: buffer,\n // To recreate the original typed-array, we need information\n // about what portion of the ArrayBuffer it was a view into\n byteOffset,\n byteLength: bytes.byteLength\n }, [buffer]);\n }\n if (isEndOfTimeline) {\n transmuxer.postMessage({\n action: 'endTimeline'\n });\n } // even if we didn't push any bytes, we have to make sure we flush in case we reached\n // the end of the segment\n\n transmuxer.postMessage({\n action: 'flush'\n });\n};\nconst dequeue = transmuxer => {\n transmuxer.currentTransmux = null;\n if (transmuxer.transmuxQueue.length) {\n transmuxer.currentTransmux = transmuxer.transmuxQueue.shift();\n if (typeof transmuxer.currentTransmux === 'function') {\n transmuxer.currentTransmux();\n } else {\n processTransmux(transmuxer.currentTransmux);\n }\n }\n};\nconst processAction = (transmuxer, action) => {\n transmuxer.postMessage({\n action\n });\n dequeue(transmuxer);\n};\nconst enqueueAction = (action, transmuxer) => {\n if (!transmuxer.currentTransmux) {\n transmuxer.currentTransmux = action;\n processAction(transmuxer, action);\n return;\n }\n transmuxer.transmuxQueue.push(processAction.bind(null, transmuxer, action));\n};\nconst reset = transmuxer => {\n enqueueAction('reset', transmuxer);\n};\nconst endTimeline = transmuxer => {\n enqueueAction('endTimeline', transmuxer);\n};\nconst transmux = options => {\n if (!options.transmuxer.currentTransmux) {\n options.transmuxer.currentTransmux = options;\n processTransmux(options);\n return;\n }\n options.transmuxer.transmuxQueue.push(options);\n};\nconst createTransmuxer = options => {\n const transmuxer = new TransmuxWorker();\n transmuxer.currentTransmux = null;\n transmuxer.transmuxQueue = [];\n const term = transmuxer.terminate;\n transmuxer.terminate = () => {\n transmuxer.currentTransmux = null;\n transmuxer.transmuxQueue.length = 0;\n return term.call(transmuxer);\n };\n transmuxer.postMessage({\n action: 'init',\n options\n });\n return transmuxer;\n};\nvar segmentTransmuxer = {\n reset,\n endTimeline,\n transmux,\n createTransmuxer\n};\nconst workerCallback = function (options) {\n const transmuxer = options.transmuxer;\n const endAction = options.endAction || options.action;\n const callback = options.callback;\n const message = _extends({}, options, {\n endAction: null,\n transmuxer: null,\n callback: null\n });\n const listenForEndEvent = event => {\n if (event.data.action !== endAction) {\n return;\n }\n transmuxer.removeEventListener('message', listenForEndEvent); // transfer ownership of bytes back to us.\n\n if (event.data.data) {\n event.data.data = new Uint8Array(event.data.data, options.byteOffset || 0, options.byteLength || event.data.data.byteLength);\n if (options.data) {\n options.data = event.data.data;\n }\n }\n callback(event.data);\n };\n transmuxer.addEventListener('message', listenForEndEvent);\n if (options.data) {\n const isArrayBuffer = options.data instanceof ArrayBuffer;\n message.byteOffset = isArrayBuffer ? 0 : options.data.byteOffset;\n message.byteLength = options.data.byteLength;\n const transfers = [isArrayBuffer ? options.data : options.data.buffer];\n transmuxer.postMessage(message, transfers);\n } else {\n transmuxer.postMessage(message);\n }\n};\nconst REQUEST_ERRORS = {\n FAILURE: 2,\n TIMEOUT: -101,\n ABORTED: -102\n};\n/**\n * Abort all requests\n *\n * @param {Object} activeXhrs - an object that tracks all XHR requests\n */\n\nconst abortAll = activeXhrs => {\n activeXhrs.forEach(xhr => {\n xhr.abort();\n });\n};\n/**\n * Gather important bandwidth stats once a request has completed\n *\n * @param {Object} request - the XHR request from which to gather stats\n */\n\nconst getRequestStats = request => {\n return {\n bandwidth: request.bandwidth,\n bytesReceived: request.bytesReceived || 0,\n roundTripTime: request.roundTripTime || 0\n };\n};\n/**\n * If possible gather bandwidth stats as a request is in\n * progress\n *\n * @param {Event} progressEvent - an event object from an XHR's progress event\n */\n\nconst getProgressStats = progressEvent => {\n const request = progressEvent.target;\n const roundTripTime = Date.now() - request.requestTime;\n const stats = {\n bandwidth: Infinity,\n bytesReceived: 0,\n roundTripTime: roundTripTime || 0\n };\n stats.bytesReceived = progressEvent.loaded; // This can result in Infinity if stats.roundTripTime is 0 but that is ok\n // because we should only use bandwidth stats on progress to determine when\n // abort a request early due to insufficient bandwidth\n\n stats.bandwidth = Math.floor(stats.bytesReceived / stats.roundTripTime * 8 * 1000);\n return stats;\n};\n/**\n * Handle all error conditions in one place and return an object\n * with all the information\n *\n * @param {Error|null} error - if non-null signals an error occured with the XHR\n * @param {Object} request - the XHR request that possibly generated the error\n */\n\nconst handleErrors = (error, request) => {\n const {\n requestType\n } = request;\n const metadata = getStreamingNetworkErrorMetadata({\n requestType,\n request,\n error\n });\n if (request.timedout) {\n return {\n status: request.status,\n message: 'HLS request timed-out at URL: ' + request.uri,\n code: REQUEST_ERRORS.TIMEOUT,\n xhr: request,\n metadata\n };\n }\n if (request.aborted) {\n return {\n status: request.status,\n message: 'HLS request aborted at URL: ' + request.uri,\n code: REQUEST_ERRORS.ABORTED,\n xhr: request,\n metadata\n };\n }\n if (error) {\n return {\n status: request.status,\n message: 'HLS request errored at URL: ' + request.uri,\n code: REQUEST_ERRORS.FAILURE,\n xhr: request,\n metadata\n };\n }\n if (request.responseType === 'arraybuffer' && request.response.byteLength === 0) {\n return {\n status: request.status,\n message: 'Empty HLS response at URL: ' + request.uri,\n code: REQUEST_ERRORS.FAILURE,\n xhr: request,\n metadata\n };\n }\n return null;\n};\n/**\n * Handle responses for key data and convert the key data to the correct format\n * for the decryption step later\n *\n * @param {Object} segment - a simplified copy of the segmentInfo object\n * from SegmentLoader\n * @param {Array} objects - objects to add the key bytes to.\n * @param {Function} finishProcessingFn - a callback to execute to continue processing\n * this request\n */\n\nconst handleKeyResponse = (segment, objects, finishProcessingFn, triggerSegmentEventFn) => (error, request) => {\n const response = request.response;\n const errorObj = handleErrors(error, request);\n if (errorObj) {\n return finishProcessingFn(errorObj, segment);\n }\n if (response.byteLength !== 16) {\n return finishProcessingFn({\n status: request.status,\n message: 'Invalid HLS key at URL: ' + request.uri,\n code: REQUEST_ERRORS.FAILURE,\n xhr: request\n }, segment);\n }\n const view = new DataView(response);\n const bytes = new Uint32Array([view.getUint32(0), view.getUint32(4), view.getUint32(8), view.getUint32(12)]);\n for (let i = 0; i < objects.length; i++) {\n objects[i].bytes = bytes;\n }\n const keyInfo = {\n uri: request.uri\n };\n triggerSegmentEventFn({\n type: 'segmentkeyloadcomplete',\n segment,\n keyInfo\n });\n return finishProcessingFn(null, segment);\n};\nconst parseInitSegment = (segment, callback) => {\n const type = detectContainerForBytes(segment.map.bytes); // TODO: We should also handle ts init segments here, but we\n // only know how to parse mp4 init segments at the moment\n\n if (type !== 'mp4') {\n const uri = segment.map.resolvedUri || segment.map.uri;\n const mediaType = type || 'unknown';\n return callback({\n internal: true,\n message: `Found unsupported ${mediaType} container for initialization segment at URL: ${uri}`,\n code: REQUEST_ERRORS.FAILURE,\n metadata: {\n mediaType\n }\n });\n }\n workerCallback({\n action: 'probeMp4Tracks',\n data: segment.map.bytes,\n transmuxer: segment.transmuxer,\n callback: ({\n tracks,\n data\n }) => {\n // transfer bytes back to us\n segment.map.bytes = data;\n tracks.forEach(function (track) {\n segment.map.tracks = segment.map.tracks || {}; // only support one track of each type for now\n\n if (segment.map.tracks[track.type]) {\n return;\n }\n segment.map.tracks[track.type] = track;\n if (typeof track.id === 'number' && track.timescale) {\n segment.map.timescales = segment.map.timescales || {};\n segment.map.timescales[track.id] = track.timescale;\n }\n });\n return callback(null);\n }\n });\n};\n/**\n * Handle init-segment responses\n *\n * @param {Object} segment - a simplified copy of the segmentInfo object\n * from SegmentLoader\n * @param {Function} finishProcessingFn - a callback to execute to continue processing\n * this request\n */\n\nconst handleInitSegmentResponse = ({\n segment,\n finishProcessingFn,\n triggerSegmentEventFn\n}) => (error, request) => {\n const errorObj = handleErrors(error, request);\n if (errorObj) {\n return finishProcessingFn(errorObj, segment);\n }\n const bytes = new Uint8Array(request.response);\n triggerSegmentEventFn({\n type: 'segmentloaded',\n segment\n }); // init segment is encypted, we will have to wait\n // until the key request is done to decrypt.\n\n if (segment.map.key) {\n segment.map.encryptedBytes = bytes;\n return finishProcessingFn(null, segment);\n }\n segment.map.bytes = bytes;\n parseInitSegment(segment, function (parseError) {\n if (parseError) {\n parseError.xhr = request;\n parseError.status = request.status;\n return finishProcessingFn(parseError, segment);\n }\n finishProcessingFn(null, segment);\n });\n};\n/**\n * Response handler for segment-requests being sure to set the correct\n * property depending on whether the segment is encryped or not\n * Also records and keeps track of stats that are used for ABR purposes\n *\n * @param {Object} segment - a simplified copy of the segmentInfo object\n * from SegmentLoader\n * @param {Function} finishProcessingFn - a callback to execute to continue processing\n * this request\n */\n\nconst handleSegmentResponse = ({\n segment,\n finishProcessingFn,\n responseType,\n triggerSegmentEventFn\n}) => (error, request) => {\n const errorObj = handleErrors(error, request);\n if (errorObj) {\n return finishProcessingFn(errorObj, segment);\n }\n triggerSegmentEventFn({\n type: 'segmentloaded',\n segment\n });\n const newBytes =\n // although responseText \"should\" exist, this guard serves to prevent an error being\n // thrown for two primary cases:\n // 1. the mime type override stops working, or is not implemented for a specific\n // browser\n // 2. when using mock XHR libraries like sinon that do not allow the override behavior\n responseType === 'arraybuffer' || !request.responseText ? request.response : stringToArrayBuffer(request.responseText.substring(segment.lastReachedChar || 0));\n segment.stats = getRequestStats(request);\n if (segment.key) {\n segment.encryptedBytes = new Uint8Array(newBytes);\n } else {\n segment.bytes = new Uint8Array(newBytes);\n }\n return finishProcessingFn(null, segment);\n};\nconst transmuxAndNotify = ({\n segment,\n bytes,\n trackInfoFn,\n timingInfoFn,\n videoSegmentTimingInfoFn,\n audioSegmentTimingInfoFn,\n id3Fn,\n captionsFn,\n isEndOfTimeline,\n endedTimelineFn,\n dataFn,\n doneFn,\n onTransmuxerLog,\n triggerSegmentEventFn\n}) => {\n const fmp4Tracks = segment.map && segment.map.tracks || {};\n const isMuxed = Boolean(fmp4Tracks.audio && fmp4Tracks.video); // Keep references to each function so we can null them out after we're done with them.\n // One reason for this is that in the case of full segments, we want to trust start\n // times from the probe, rather than the transmuxer.\n\n let audioStartFn = timingInfoFn.bind(null, segment, 'audio', 'start');\n const audioEndFn = timingInfoFn.bind(null, segment, 'audio', 'end');\n let videoStartFn = timingInfoFn.bind(null, segment, 'video', 'start');\n const videoEndFn = timingInfoFn.bind(null, segment, 'video', 'end');\n const finish = () => transmux({\n bytes,\n transmuxer: segment.transmuxer,\n audioAppendStart: segment.audioAppendStart,\n gopsToAlignWith: segment.gopsToAlignWith,\n remux: isMuxed,\n onData: result => {\n result.type = result.type === 'combined' ? 'video' : result.type;\n dataFn(segment, result);\n },\n onTrackInfo: trackInfo => {\n if (trackInfoFn) {\n if (isMuxed) {\n trackInfo.isMuxed = true;\n }\n trackInfoFn(segment, trackInfo);\n }\n },\n onAudioTimingInfo: audioTimingInfo => {\n // we only want the first start value we encounter\n if (audioStartFn && typeof audioTimingInfo.start !== 'undefined') {\n audioStartFn(audioTimingInfo.start);\n audioStartFn = null;\n } // we want to continually update the end time\n\n if (audioEndFn && typeof audioTimingInfo.end !== 'undefined') {\n audioEndFn(audioTimingInfo.end);\n }\n },\n onVideoTimingInfo: videoTimingInfo => {\n // we only want the first start value we encounter\n if (videoStartFn && typeof videoTimingInfo.start !== 'undefined') {\n videoStartFn(videoTimingInfo.start);\n videoStartFn = null;\n } // we want to continually update the end time\n\n if (videoEndFn && typeof videoTimingInfo.end !== 'undefined') {\n videoEndFn(videoTimingInfo.end);\n }\n },\n onVideoSegmentTimingInfo: videoSegmentTimingInfo => {\n const timingInfo = {\n pts: {\n start: videoSegmentTimingInfo.start.presentation,\n end: videoSegmentTimingInfo.end.presentation\n },\n dts: {\n start: videoSegmentTimingInfo.start.decode,\n end: videoSegmentTimingInfo.end.decode\n }\n };\n triggerSegmentEventFn({\n type: 'segmenttransmuxingtiminginfoavailable',\n segment,\n timingInfo\n });\n videoSegmentTimingInfoFn(videoSegmentTimingInfo);\n },\n onAudioSegmentTimingInfo: audioSegmentTimingInfo => {\n const timingInfo = {\n pts: {\n start: audioSegmentTimingInfo.start.pts,\n end: audioSegmentTimingInfo.end.pts\n },\n dts: {\n start: audioSegmentTimingInfo.start.dts,\n end: audioSegmentTimingInfo.end.dts\n }\n };\n triggerSegmentEventFn({\n type: 'segmenttransmuxingtiminginfoavailable',\n segment,\n timingInfo\n });\n audioSegmentTimingInfoFn(audioSegmentTimingInfo);\n },\n onId3: (id3Frames, dispatchType) => {\n id3Fn(segment, id3Frames, dispatchType);\n },\n onCaptions: captions => {\n captionsFn(segment, [captions]);\n },\n isEndOfTimeline,\n onEndedTimeline: () => {\n endedTimelineFn();\n },\n onTransmuxerLog,\n onDone: (result, error) => {\n if (!doneFn) {\n return;\n }\n result.type = result.type === 'combined' ? 'video' : result.type;\n triggerSegmentEventFn({\n type: 'segmenttransmuxingcomplete',\n segment\n });\n doneFn(error, segment, result);\n },\n segment,\n triggerSegmentEventFn\n }); // In the transmuxer, we don't yet have the ability to extract a \"proper\" start time.\n // Meaning cached frame data may corrupt our notion of where this segment\n // really starts. To get around this, probe for the info needed.\n\n workerCallback({\n action: 'probeTs',\n transmuxer: segment.transmuxer,\n data: bytes,\n baseStartTime: segment.baseStartTime,\n callback: data => {\n segment.bytes = bytes = data.data;\n const probeResult = data.result;\n if (probeResult) {\n trackInfoFn(segment, {\n hasAudio: probeResult.hasAudio,\n hasVideo: probeResult.hasVideo,\n isMuxed\n });\n trackInfoFn = null;\n }\n finish();\n }\n });\n};\nconst handleSegmentBytes = ({\n segment,\n bytes,\n trackInfoFn,\n timingInfoFn,\n videoSegmentTimingInfoFn,\n audioSegmentTimingInfoFn,\n id3Fn,\n captionsFn,\n isEndOfTimeline,\n endedTimelineFn,\n dataFn,\n doneFn,\n onTransmuxerLog,\n triggerSegmentEventFn\n}) => {\n let bytesAsUint8Array = new Uint8Array(bytes); // TODO:\n // We should have a handler that fetches the number of bytes required\n // to check if something is fmp4. This will allow us to save bandwidth\n // because we can only exclude a playlist and abort requests\n // by codec after trackinfo triggers.\n\n if (isLikelyFmp4MediaSegment(bytesAsUint8Array)) {\n segment.isFmp4 = true;\n const {\n tracks\n } = segment.map;\n const trackInfo = {\n isFmp4: true,\n hasVideo: !!tracks.video,\n hasAudio: !!tracks.audio\n }; // if we have a audio track, with a codec that is not set to\n // encrypted audio\n\n if (tracks.audio && tracks.audio.codec && tracks.audio.codec !== 'enca') {\n trackInfo.audioCodec = tracks.audio.codec;\n } // if we have a video track, with a codec that is not set to\n // encrypted video\n\n if (tracks.video && tracks.video.codec && tracks.video.codec !== 'encv') {\n trackInfo.videoCodec = tracks.video.codec;\n }\n if (tracks.video && tracks.audio) {\n trackInfo.isMuxed = true;\n } // since we don't support appending fmp4 data on progress, we know we have the full\n // segment here\n\n trackInfoFn(segment, trackInfo); // The probe doesn't provide the segment end time, so only callback with the start\n // time. The end time can be roughly calculated by the receiver using the duration.\n //\n // Note that the start time returned by the probe reflects the baseMediaDecodeTime, as\n // that is the true start of the segment (where the playback engine should begin\n // decoding).\n\n const finishLoading = (captions, id3Frames) => {\n // if the track still has audio at this point it is only possible\n // for it to be audio only. See `tracks.video && tracks.audio` if statement\n // above.\n // we make sure to use segment.bytes here as that\n dataFn(segment, {\n data: bytesAsUint8Array,\n type: trackInfo.hasAudio && !trackInfo.isMuxed ? 'audio' : 'video'\n });\n if (id3Frames && id3Frames.length) {\n id3Fn(segment, id3Frames);\n }\n if (captions && captions.length) {\n captionsFn(segment, captions);\n }\n doneFn(null, segment, {});\n };\n workerCallback({\n action: 'probeMp4StartTime',\n timescales: segment.map.timescales,\n data: bytesAsUint8Array,\n transmuxer: segment.transmuxer,\n callback: ({\n data,\n startTime\n }) => {\n // transfer bytes back to us\n bytes = data.buffer;\n segment.bytes = bytesAsUint8Array = data;\n if (trackInfo.hasAudio && !trackInfo.isMuxed) {\n timingInfoFn(segment, 'audio', 'start', startTime);\n }\n if (trackInfo.hasVideo) {\n timingInfoFn(segment, 'video', 'start', startTime);\n }\n workerCallback({\n action: 'probeEmsgID3',\n data: bytesAsUint8Array,\n transmuxer: segment.transmuxer,\n offset: startTime,\n callback: ({\n emsgData,\n id3Frames\n }) => {\n // transfer bytes back to us\n bytes = emsgData.buffer;\n segment.bytes = bytesAsUint8Array = emsgData; // Run through the CaptionParser in case there are captions.\n // Initialize CaptionParser if it hasn't been yet\n\n if (!tracks.video || !emsgData.byteLength || !segment.transmuxer) {\n finishLoading(undefined, id3Frames);\n return;\n }\n workerCallback({\n action: 'pushMp4Captions',\n endAction: 'mp4Captions',\n transmuxer: segment.transmuxer,\n data: bytesAsUint8Array,\n timescales: segment.map.timescales,\n trackIds: [tracks.video.id],\n callback: message => {\n // transfer bytes back to us\n bytes = message.data.buffer;\n segment.bytes = bytesAsUint8Array = message.data;\n message.logs.forEach(function (log) {\n onTransmuxerLog(merge(log, {\n stream: 'mp4CaptionParser'\n }));\n });\n finishLoading(message.captions, id3Frames);\n }\n });\n }\n });\n }\n });\n return;\n } // VTT or other segments that don't need processing\n\n if (!segment.transmuxer) {\n doneFn(null, segment, {});\n return;\n }\n if (typeof segment.container === 'undefined') {\n segment.container = detectContainerForBytes(bytesAsUint8Array);\n }\n if (segment.container !== 'ts' && segment.container !== 'aac') {\n trackInfoFn(segment, {\n hasAudio: false,\n hasVideo: false\n });\n doneFn(null, segment, {});\n return;\n } // ts or aac\n\n transmuxAndNotify({\n segment,\n bytes,\n trackInfoFn,\n timingInfoFn,\n videoSegmentTimingInfoFn,\n audioSegmentTimingInfoFn,\n id3Fn,\n captionsFn,\n isEndOfTimeline,\n endedTimelineFn,\n dataFn,\n doneFn,\n onTransmuxerLog,\n triggerSegmentEventFn\n });\n};\nconst decrypt = function ({\n id,\n key,\n encryptedBytes,\n decryptionWorker,\n segment,\n doneFn\n}, callback) {\n const decryptionHandler = event => {\n if (event.data.source === id) {\n decryptionWorker.removeEventListener('message', decryptionHandler);\n const decrypted = event.data.decrypted;\n callback(new Uint8Array(decrypted.bytes, decrypted.byteOffset, decrypted.byteLength));\n }\n };\n decryptionWorker.onerror = () => {\n const message = 'An error occurred in the decryption worker';\n const segmentInfo = segmentInfoPayload({\n segment\n });\n const decryptError = {\n message,\n metadata: {\n error: new Error(message),\n errorType: videojs.Error.StreamingFailedToDecryptSegment,\n segmentInfo,\n keyInfo: {\n uri: segment.key.resolvedUri || segment.map.key.resolvedUri\n }\n }\n };\n doneFn(decryptError, segment);\n };\n decryptionWorker.addEventListener('message', decryptionHandler);\n let keyBytes;\n if (key.bytes.slice) {\n keyBytes = key.bytes.slice();\n } else {\n keyBytes = new Uint32Array(Array.prototype.slice.call(key.bytes));\n } // incrementally decrypt the bytes\n\n decryptionWorker.postMessage(createTransferableMessage({\n source: id,\n encrypted: encryptedBytes,\n key: keyBytes,\n iv: key.iv\n }), [encryptedBytes.buffer, keyBytes.buffer]);\n};\n/**\n * Decrypt the segment via the decryption web worker\n *\n * @param {WebWorker} decryptionWorker - a WebWorker interface to AES-128 decryption\n * routines\n * @param {Object} segment - a simplified copy of the segmentInfo object\n * from SegmentLoader\n * @param {Function} trackInfoFn - a callback that receives track info\n * @param {Function} timingInfoFn - a callback that receives timing info\n * @param {Function} videoSegmentTimingInfoFn\n * a callback that receives video timing info based on media times and\n * any adjustments made by the transmuxer\n * @param {Function} audioSegmentTimingInfoFn\n * a callback that receives audio timing info based on media times and\n * any adjustments made by the transmuxer\n * @param {boolean} isEndOfTimeline\n * true if this segment represents the last segment in a timeline\n * @param {Function} endedTimelineFn\n * a callback made when a timeline is ended, will only be called if\n * isEndOfTimeline is true\n * @param {Function} dataFn - a callback that is executed when segment bytes are available\n * and ready to use\n * @param {Function} doneFn - a callback that is executed after decryption has completed\n */\n\nconst decryptSegment = ({\n decryptionWorker,\n segment,\n trackInfoFn,\n timingInfoFn,\n videoSegmentTimingInfoFn,\n audioSegmentTimingInfoFn,\n id3Fn,\n captionsFn,\n isEndOfTimeline,\n endedTimelineFn,\n dataFn,\n doneFn,\n onTransmuxerLog,\n triggerSegmentEventFn\n}) => {\n triggerSegmentEventFn({\n type: 'segmentdecryptionstart'\n });\n decrypt({\n id: segment.requestId,\n key: segment.key,\n encryptedBytes: segment.encryptedBytes,\n decryptionWorker,\n segment,\n doneFn\n }, decryptedBytes => {\n segment.bytes = decryptedBytes;\n triggerSegmentEventFn({\n type: 'segmentdecryptioncomplete',\n segment\n });\n handleSegmentBytes({\n segment,\n bytes: segment.bytes,\n trackInfoFn,\n timingInfoFn,\n videoSegmentTimingInfoFn,\n audioSegmentTimingInfoFn,\n id3Fn,\n captionsFn,\n isEndOfTimeline,\n endedTimelineFn,\n dataFn,\n doneFn,\n onTransmuxerLog,\n triggerSegmentEventFn\n });\n });\n};\n/**\n * This function waits for all XHRs to finish (with either success or failure)\n * before continueing processing via it's callback. The function gathers errors\n * from each request into a single errors array so that the error status for\n * each request can be examined later.\n *\n * @param {Object} activeXhrs - an object that tracks all XHR requests\n * @param {WebWorker} decryptionWorker - a WebWorker interface to AES-128 decryption\n * routines\n * @param {Function} trackInfoFn - a callback that receives track info\n * @param {Function} timingInfoFn - a callback that receives timing info\n * @param {Function} videoSegmentTimingInfoFn\n * a callback that receives video timing info based on media times and\n * any adjustments made by the transmuxer\n * @param {Function} audioSegmentTimingInfoFn\n * a callback that receives audio timing info based on media times and\n * any adjustments made by the transmuxer\n * @param {Function} id3Fn - a callback that receives ID3 metadata\n * @param {Function} captionsFn - a callback that receives captions\n * @param {boolean} isEndOfTimeline\n * true if this segment represents the last segment in a timeline\n * @param {Function} endedTimelineFn\n * a callback made when a timeline is ended, will only be called if\n * isEndOfTimeline is true\n * @param {Function} dataFn - a callback that is executed when segment bytes are available\n * and ready to use\n * @param {Function} doneFn - a callback that is executed after all resources have been\n * downloaded and any decryption completed\n */\n\nconst waitForCompletion = ({\n activeXhrs,\n decryptionWorker,\n trackInfoFn,\n timingInfoFn,\n videoSegmentTimingInfoFn,\n audioSegmentTimingInfoFn,\n id3Fn,\n captionsFn,\n isEndOfTimeline,\n endedTimelineFn,\n dataFn,\n doneFn,\n onTransmuxerLog,\n triggerSegmentEventFn\n}) => {\n let count = 0;\n let didError = false;\n return (error, segment) => {\n if (didError) {\n return;\n }\n if (error) {\n didError = true; // If there are errors, we have to abort any outstanding requests\n\n abortAll(activeXhrs); // Even though the requests above are aborted, and in theory we could wait until we\n // handle the aborted events from those requests, there are some cases where we may\n // never get an aborted event. For instance, if the network connection is lost and\n // there were two requests, the first may have triggered an error immediately, while\n // the second request remains unsent. In that case, the aborted algorithm will not\n // trigger an abort: see https://xhr.spec.whatwg.org/#the-abort()-method\n //\n // We also can't rely on the ready state of the XHR, since the request that\n // triggered the connection error may also show as a ready state of 0 (unsent).\n // Therefore, we have to finish this group of requests immediately after the first\n // seen error.\n\n return doneFn(error, segment);\n }\n count += 1;\n if (count === activeXhrs.length) {\n const segmentFinish = function () {\n if (segment.encryptedBytes) {\n return decryptSegment({\n decryptionWorker,\n segment,\n trackInfoFn,\n timingInfoFn,\n videoSegmentTimingInfoFn,\n audioSegmentTimingInfoFn,\n id3Fn,\n captionsFn,\n isEndOfTimeline,\n endedTimelineFn,\n dataFn,\n doneFn,\n onTransmuxerLog,\n triggerSegmentEventFn\n });\n } // Otherwise, everything is ready just continue\n\n handleSegmentBytes({\n segment,\n bytes: segment.bytes,\n trackInfoFn,\n timingInfoFn,\n videoSegmentTimingInfoFn,\n audioSegmentTimingInfoFn,\n id3Fn,\n captionsFn,\n isEndOfTimeline,\n endedTimelineFn,\n dataFn,\n doneFn,\n onTransmuxerLog,\n triggerSegmentEventFn\n });\n }; // Keep track of when *all* of the requests have completed\n\n segment.endOfAllRequests = Date.now();\n if (segment.map && segment.map.encryptedBytes && !segment.map.bytes) {\n triggerSegmentEventFn({\n type: 'segmentdecryptionstart',\n segment\n });\n return decrypt({\n decryptionWorker,\n // add -init to the \"id\" to differentiate between segment\n // and init segment decryption, just in case they happen\n // at the same time at some point in the future.\n id: segment.requestId + '-init',\n encryptedBytes: segment.map.encryptedBytes,\n key: segment.map.key,\n segment,\n doneFn\n }, decryptedBytes => {\n segment.map.bytes = decryptedBytes;\n triggerSegmentEventFn({\n type: 'segmentdecryptioncomplete',\n segment\n });\n parseInitSegment(segment, parseError => {\n if (parseError) {\n abortAll(activeXhrs);\n return doneFn(parseError, segment);\n }\n segmentFinish();\n });\n });\n }\n segmentFinish();\n }\n };\n};\n/**\n * Calls the abort callback if any request within the batch was aborted. Will only call\n * the callback once per batch of requests, even if multiple were aborted.\n *\n * @param {Object} loadendState - state to check to see if the abort function was called\n * @param {Function} abortFn - callback to call for abort\n */\n\nconst handleLoadEnd = ({\n loadendState,\n abortFn\n}) => event => {\n const request = event.target;\n if (request.aborted && abortFn && !loadendState.calledAbortFn) {\n abortFn();\n loadendState.calledAbortFn = true;\n }\n};\n/**\n * Simple progress event callback handler that gathers some stats before\n * executing a provided callback with the `segment` object\n *\n * @param {Object} segment - a simplified copy of the segmentInfo object\n * from SegmentLoader\n * @param {Function} progressFn - a callback that is executed each time a progress event\n * is received\n * @param {Function} trackInfoFn - a callback that receives track info\n * @param {Function} timingInfoFn - a callback that receives timing info\n * @param {Function} videoSegmentTimingInfoFn\n * a callback that receives video timing info based on media times and\n * any adjustments made by the transmuxer\n * @param {Function} audioSegmentTimingInfoFn\n * a callback that receives audio timing info based on media times and\n * any adjustments made by the transmuxer\n * @param {boolean} isEndOfTimeline\n * true if this segment represents the last segment in a timeline\n * @param {Function} endedTimelineFn\n * a callback made when a timeline is ended, will only be called if\n * isEndOfTimeline is true\n * @param {Function} dataFn - a callback that is executed when segment bytes are available\n * and ready to use\n * @param {Event} event - the progress event object from XMLHttpRequest\n */\n\nconst handleProgress = ({\n segment,\n progressFn,\n trackInfoFn,\n timingInfoFn,\n videoSegmentTimingInfoFn,\n audioSegmentTimingInfoFn,\n id3Fn,\n captionsFn,\n isEndOfTimeline,\n endedTimelineFn,\n dataFn\n}) => event => {\n const request = event.target;\n if (request.aborted) {\n return;\n }\n segment.stats = merge(segment.stats, getProgressStats(event)); // record the time that we receive the first byte of data\n\n if (!segment.stats.firstBytesReceivedAt && segment.stats.bytesReceived) {\n segment.stats.firstBytesReceivedAt = Date.now();\n }\n return progressFn(event, segment);\n};\n/**\n * Load all resources and does any processing necessary for a media-segment\n *\n * Features:\n * decrypts the media-segment if it has a key uri and an iv\n * aborts *all* requests if *any* one request fails\n *\n * The segment object, at minimum, has the following format:\n * {\n * resolvedUri: String,\n * [transmuxer]: Object,\n * [byterange]: {\n * offset: Number,\n * length: Number\n * },\n * [key]: {\n * resolvedUri: String\n * [byterange]: {\n * offset: Number,\n * length: Number\n * },\n * iv: {\n * bytes: Uint32Array\n * }\n * },\n * [map]: {\n * resolvedUri: String,\n * [byterange]: {\n * offset: Number,\n * length: Number\n * },\n * [bytes]: Uint8Array\n * }\n * }\n * ...where [name] denotes optional properties\n *\n * @param {Function} xhr - an instance of the xhr wrapper in xhr.js\n * @param {Object} xhrOptions - the base options to provide to all xhr requests\n * @param {WebWorker} decryptionWorker - a WebWorker interface to AES-128\n * decryption routines\n * @param {Object} segment - a simplified copy of the segmentInfo object\n * from SegmentLoader\n * @param {Function} abortFn - a callback called (only once) if any piece of a request was\n * aborted\n * @param {Function} progressFn - a callback that receives progress events from the main\n * segment's xhr request\n * @param {Function} trackInfoFn - a callback that receives track info\n * @param {Function} timingInfoFn - a callback that receives timing info\n * @param {Function} videoSegmentTimingInfoFn\n * a callback that receives video timing info based on media times and\n * any adjustments made by the transmuxer\n * @param {Function} audioSegmentTimingInfoFn\n * a callback that receives audio timing info based on media times and\n * any adjustments made by the transmuxer\n * @param {Function} id3Fn - a callback that receives ID3 metadata\n * @param {Function} captionsFn - a callback that receives captions\n * @param {boolean} isEndOfTimeline\n * true if this segment represents the last segment in a timeline\n * @param {Function} endedTimelineFn\n * a callback made when a timeline is ended, will only be called if\n * isEndOfTimeline is true\n * @param {Function} dataFn - a callback that receives data from the main segment's xhr\n * request, transmuxed if needed\n * @param {Function} doneFn - a callback that is executed only once all requests have\n * succeeded or failed\n * @return {Function} a function that, when invoked, immediately aborts all\n * outstanding requests\n */\n\nconst mediaSegmentRequest = ({\n xhr,\n xhrOptions,\n decryptionWorker,\n segment,\n abortFn,\n progressFn,\n trackInfoFn,\n timingInfoFn,\n videoSegmentTimingInfoFn,\n audioSegmentTimingInfoFn,\n id3Fn,\n captionsFn,\n isEndOfTimeline,\n endedTimelineFn,\n dataFn,\n doneFn,\n onTransmuxerLog,\n triggerSegmentEventFn\n}) => {\n const activeXhrs = [];\n const finishProcessingFn = waitForCompletion({\n activeXhrs,\n decryptionWorker,\n trackInfoFn,\n timingInfoFn,\n videoSegmentTimingInfoFn,\n audioSegmentTimingInfoFn,\n id3Fn,\n captionsFn,\n isEndOfTimeline,\n endedTimelineFn,\n dataFn,\n doneFn,\n onTransmuxerLog,\n triggerSegmentEventFn\n }); // optionally, request the decryption key\n\n if (segment.key && !segment.key.bytes) {\n const objects = [segment.key];\n if (segment.map && !segment.map.bytes && segment.map.key && segment.map.key.resolvedUri === segment.key.resolvedUri) {\n objects.push(segment.map.key);\n }\n const keyRequestOptions = merge(xhrOptions, {\n uri: segment.key.resolvedUri,\n responseType: 'arraybuffer',\n requestType: 'segment-key'\n });\n const keyRequestCallback = handleKeyResponse(segment, objects, finishProcessingFn, triggerSegmentEventFn);\n const keyInfo = {\n uri: segment.key.resolvedUri\n };\n triggerSegmentEventFn({\n type: 'segmentkeyloadstart',\n segment,\n keyInfo\n });\n const keyXhr = xhr(keyRequestOptions, keyRequestCallback);\n activeXhrs.push(keyXhr);\n } // optionally, request the associated media init segment\n\n if (segment.map && !segment.map.bytes) {\n const differentMapKey = segment.map.key && (!segment.key || segment.key.resolvedUri !== segment.map.key.resolvedUri);\n if (differentMapKey) {\n const mapKeyRequestOptions = merge(xhrOptions, {\n uri: segment.map.key.resolvedUri,\n responseType: 'arraybuffer',\n requestType: 'segment-key'\n });\n const mapKeyRequestCallback = handleKeyResponse(segment, [segment.map.key], finishProcessingFn, triggerSegmentEventFn);\n const keyInfo = {\n uri: segment.map.key.resolvedUri\n };\n triggerSegmentEventFn({\n type: 'segmentkeyloadstart',\n segment,\n keyInfo\n });\n const mapKeyXhr = xhr(mapKeyRequestOptions, mapKeyRequestCallback);\n activeXhrs.push(mapKeyXhr);\n }\n const initSegmentOptions = merge(xhrOptions, {\n uri: segment.map.resolvedUri,\n responseType: 'arraybuffer',\n headers: segmentXhrHeaders(segment.map),\n requestType: 'segment-media-initialization'\n });\n const initSegmentRequestCallback = handleInitSegmentResponse({\n segment,\n finishProcessingFn,\n triggerSegmentEventFn\n });\n triggerSegmentEventFn({\n type: 'segmentloadstart',\n segment\n });\n const initSegmentXhr = xhr(initSegmentOptions, initSegmentRequestCallback);\n activeXhrs.push(initSegmentXhr);\n }\n const segmentRequestOptions = merge(xhrOptions, {\n uri: segment.part && segment.part.resolvedUri || segment.resolvedUri,\n responseType: 'arraybuffer',\n headers: segmentXhrHeaders(segment),\n requestType: 'segment'\n });\n const segmentRequestCallback = handleSegmentResponse({\n segment,\n finishProcessingFn,\n responseType: segmentRequestOptions.responseType,\n triggerSegmentEventFn\n });\n triggerSegmentEventFn({\n type: 'segmentloadstart',\n segment\n });\n const segmentXhr = xhr(segmentRequestOptions, segmentRequestCallback);\n segmentXhr.addEventListener('progress', handleProgress({\n segment,\n progressFn,\n trackInfoFn,\n timingInfoFn,\n videoSegmentTimingInfoFn,\n audioSegmentTimingInfoFn,\n id3Fn,\n captionsFn,\n isEndOfTimeline,\n endedTimelineFn,\n dataFn\n }));\n activeXhrs.push(segmentXhr); // since all parts of the request must be considered, but should not make callbacks\n // multiple times, provide a shared state object\n\n const loadendState = {};\n activeXhrs.forEach(activeXhr => {\n activeXhr.addEventListener('loadend', handleLoadEnd({\n loadendState,\n abortFn\n }));\n });\n return () => abortAll(activeXhrs);\n};\n\n/**\n * @file - codecs.js - Handles tasks regarding codec strings such as translating them to\n * codec strings, or translating codec strings into objects that can be examined.\n */\nconst logFn$1 = logger('CodecUtils');\n/**\n * Returns a set of codec strings parsed from the playlist or the default\n * codec strings if no codecs were specified in the playlist\n *\n * @param {Playlist} media the current media playlist\n * @return {Object} an object with the video and audio codecs\n */\n\nconst getCodecs = function (media) {\n // if the codecs were explicitly specified, use them instead of the\n // defaults\n const mediaAttributes = media.attributes || {};\n if (mediaAttributes.CODECS) {\n return parseCodecs(mediaAttributes.CODECS);\n }\n};\nconst isMaat = (main, media) => {\n const mediaAttributes = media.attributes || {};\n return main && main.mediaGroups && main.mediaGroups.AUDIO && mediaAttributes.AUDIO && main.mediaGroups.AUDIO[mediaAttributes.AUDIO];\n};\nconst isMuxed = (main, media) => {\n if (!isMaat(main, media)) {\n return true;\n }\n const mediaAttributes = media.attributes || {};\n const audioGroup = main.mediaGroups.AUDIO[mediaAttributes.AUDIO];\n for (const groupId in audioGroup) {\n // If an audio group has a URI (the case for HLS, as HLS will use external playlists),\n // or there are listed playlists (the case for DASH, as the manifest will have already\n // provided all of the details necessary to generate the audio playlist, as opposed to\n // HLS' externally requested playlists), then the content is demuxed.\n if (!audioGroup[groupId].uri && !audioGroup[groupId].playlists) {\n return true;\n }\n }\n return false;\n};\nconst unwrapCodecList = function (codecList) {\n const codecs = {};\n codecList.forEach(({\n mediaType,\n type,\n details\n }) => {\n codecs[mediaType] = codecs[mediaType] || [];\n codecs[mediaType].push(translateLegacyCodec(`${type}${details}`));\n });\n Object.keys(codecs).forEach(function (mediaType) {\n if (codecs[mediaType].length > 1) {\n logFn$1(`multiple ${mediaType} codecs found as attributes: ${codecs[mediaType].join(', ')}. Setting playlist codecs to null so that we wait for mux.js to probe segments for real codecs.`);\n codecs[mediaType] = null;\n return;\n }\n codecs[mediaType] = codecs[mediaType][0];\n });\n return codecs;\n};\nconst codecCount = function (codecObj) {\n let count = 0;\n if (codecObj.audio) {\n count++;\n }\n if (codecObj.video) {\n count++;\n }\n return count;\n};\n/**\n * Calculates the codec strings for a working configuration of\n * SourceBuffers to play variant streams in a main playlist. If\n * there is no possible working configuration, an empty object will be\n * returned.\n *\n * @param main {Object} the m3u8 object for the main playlist\n * @param media {Object} the m3u8 object for the variant playlist\n * @return {Object} the codec strings.\n *\n * @private\n */\n\nconst codecsForPlaylist = function (main, media) {\n const mediaAttributes = media.attributes || {};\n const codecInfo = unwrapCodecList(getCodecs(media) || []); // HLS with multiple-audio tracks must always get an audio codec.\n // Put another way, there is no way to have a video-only multiple-audio HLS!\n\n if (isMaat(main, media) && !codecInfo.audio) {\n if (!isMuxed(main, media)) {\n // It is possible for codecs to be specified on the audio media group playlist but\n // not on the rendition playlist. This is mostly the case for DASH, where audio and\n // video are always separate (and separately specified).\n const defaultCodecs = unwrapCodecList(codecsFromDefault(main, mediaAttributes.AUDIO) || []);\n if (defaultCodecs.audio) {\n codecInfo.audio = defaultCodecs.audio;\n }\n }\n }\n return codecInfo;\n};\nconst logFn = logger('PlaylistSelector');\nconst representationToString = function (representation) {\n if (!representation || !representation.playlist) {\n return;\n }\n const playlist = representation.playlist;\n return JSON.stringify({\n id: playlist.id,\n bandwidth: representation.bandwidth,\n width: representation.width,\n height: representation.height,\n codecs: playlist.attributes && playlist.attributes.CODECS || ''\n });\n}; // Utilities\n\n/**\n * Returns the CSS value for the specified property on an element\n * using `getComputedStyle`. Firefox has a long-standing issue where\n * getComputedStyle() may return null when running in an iframe with\n * `display: none`.\n *\n * @see https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n * @param {HTMLElement} el the htmlelement to work on\n * @param {string} the proprety to get the style for\n */\n\nconst safeGetComputedStyle = function (el, property) {\n if (!el) {\n return '';\n }\n const result = window$1.getComputedStyle(el);\n if (!result) {\n return '';\n }\n return result[property];\n};\n/**\n * Resuable stable sort function\n *\n * @param {Playlists} array\n * @param {Function} sortFn Different comparators\n * @function stableSort\n */\n\nconst stableSort = function (array, sortFn) {\n const newArray = array.slice();\n array.sort(function (left, right) {\n const cmp = sortFn(left, right);\n if (cmp === 0) {\n return newArray.indexOf(left) - newArray.indexOf(right);\n }\n return cmp;\n });\n};\n/**\n * A comparator function to sort two playlist object by bandwidth.\n *\n * @param {Object} left a media playlist object\n * @param {Object} right a media playlist object\n * @return {number} Greater than zero if the bandwidth attribute of\n * left is greater than the corresponding attribute of right. Less\n * than zero if the bandwidth of right is greater than left and\n * exactly zero if the two are equal.\n */\n\nconst comparePlaylistBandwidth = function (left, right) {\n let leftBandwidth;\n let rightBandwidth;\n if (left.attributes.BANDWIDTH) {\n leftBandwidth = left.attributes.BANDWIDTH;\n }\n leftBandwidth = leftBandwidth || window$1.Number.MAX_VALUE;\n if (right.attributes.BANDWIDTH) {\n rightBandwidth = right.attributes.BANDWIDTH;\n }\n rightBandwidth = rightBandwidth || window$1.Number.MAX_VALUE;\n return leftBandwidth - rightBandwidth;\n};\n/**\n * A comparator function to sort two playlist object by resolution (width).\n *\n * @param {Object} left a media playlist object\n * @param {Object} right a media playlist object\n * @return {number} Greater than zero if the resolution.width attribute of\n * left is greater than the corresponding attribute of right. Less\n * than zero if the resolution.width of right is greater than left and\n * exactly zero if the two are equal.\n */\n\nconst comparePlaylistResolution = function (left, right) {\n let leftWidth;\n let rightWidth;\n if (left.attributes.RESOLUTION && left.attributes.RESOLUTION.width) {\n leftWidth = left.attributes.RESOLUTION.width;\n }\n leftWidth = leftWidth || window$1.Number.MAX_VALUE;\n if (right.attributes.RESOLUTION && right.attributes.RESOLUTION.width) {\n rightWidth = right.attributes.RESOLUTION.width;\n }\n rightWidth = rightWidth || window$1.Number.MAX_VALUE; // NOTE - Fallback to bandwidth sort as appropriate in cases where multiple renditions\n // have the same media dimensions/ resolution\n\n if (leftWidth === rightWidth && left.attributes.BANDWIDTH && right.attributes.BANDWIDTH) {\n return left.attributes.BANDWIDTH - right.attributes.BANDWIDTH;\n }\n return leftWidth - rightWidth;\n};\n/**\n * Chooses the appropriate media playlist based on bandwidth and player size\n *\n * @param {Object} main\n * Object representation of the main manifest\n * @param {number} playerBandwidth\n * Current calculated bandwidth of the player\n * @param {number} playerWidth\n * Current width of the player element (should account for the device pixel ratio)\n * @param {number} playerHeight\n * Current height of the player element (should account for the device pixel ratio)\n * @param {boolean} limitRenditionByPlayerDimensions\n * True if the player width and height should be used during the selection, false otherwise\n * @param {Object} playlistController\n * the current playlistController object\n * @return {Playlist} the highest bitrate playlist less than the\n * currently detected bandwidth, accounting for some amount of\n * bandwidth variance\n */\n\nlet simpleSelector = function (main, playerBandwidth, playerWidth, playerHeight, limitRenditionByPlayerDimensions, playlistController) {\n // If we end up getting called before `main` is available, exit early\n if (!main) {\n return;\n }\n const options = {\n bandwidth: playerBandwidth,\n width: playerWidth,\n height: playerHeight,\n limitRenditionByPlayerDimensions\n };\n let playlists = main.playlists; // if playlist is audio only, select between currently active audio group playlists.\n\n if (Playlist.isAudioOnly(main)) {\n playlists = playlistController.getAudioTrackPlaylists_(); // add audioOnly to options so that we log audioOnly: true\n // at the buttom of this function for debugging.\n\n options.audioOnly = true;\n } // convert the playlists to an intermediary representation to make comparisons easier\n\n let sortedPlaylistReps = playlists.map(playlist => {\n let bandwidth;\n const width = playlist.attributes && playlist.attributes.RESOLUTION && playlist.attributes.RESOLUTION.width;\n const height = playlist.attributes && playlist.attributes.RESOLUTION && playlist.attributes.RESOLUTION.height;\n bandwidth = playlist.attributes && playlist.attributes.BANDWIDTH;\n bandwidth = bandwidth || window$1.Number.MAX_VALUE;\n return {\n bandwidth,\n width,\n height,\n playlist\n };\n });\n stableSort(sortedPlaylistReps, (left, right) => left.bandwidth - right.bandwidth); // filter out any playlists that have been excluded due to\n // incompatible configurations\n\n sortedPlaylistReps = sortedPlaylistReps.filter(rep => !Playlist.isIncompatible(rep.playlist)); // filter out any playlists that have been disabled manually through the representations\n // api or excluded temporarily due to playback errors.\n\n let enabledPlaylistReps = sortedPlaylistReps.filter(rep => Playlist.isEnabled(rep.playlist));\n if (!enabledPlaylistReps.length) {\n // if there are no enabled playlists, then they have all been excluded or disabled\n // by the user through the representations api. In this case, ignore exclusion and\n // fallback to what the user wants by using playlists the user has not disabled.\n enabledPlaylistReps = sortedPlaylistReps.filter(rep => !Playlist.isDisabled(rep.playlist));\n } // filter out any variant that has greater effective bitrate\n // than the current estimated bandwidth\n\n const bandwidthPlaylistReps = enabledPlaylistReps.filter(rep => rep.bandwidth * Config.BANDWIDTH_VARIANCE < playerBandwidth);\n let highestRemainingBandwidthRep = bandwidthPlaylistReps[bandwidthPlaylistReps.length - 1]; // get all of the renditions with the same (highest) bandwidth\n // and then taking the very first element\n\n const bandwidthBestRep = bandwidthPlaylistReps.filter(rep => rep.bandwidth === highestRemainingBandwidthRep.bandwidth)[0]; // if we're not going to limit renditions by player size, make an early decision.\n\n if (limitRenditionByPlayerDimensions === false) {\n const chosenRep = bandwidthBestRep || enabledPlaylistReps[0] || sortedPlaylistReps[0];\n if (chosenRep && chosenRep.playlist) {\n let type = 'sortedPlaylistReps';\n if (bandwidthBestRep) {\n type = 'bandwidthBestRep';\n }\n if (enabledPlaylistReps[0]) {\n type = 'enabledPlaylistReps';\n }\n logFn(`choosing ${representationToString(chosenRep)} using ${type} with options`, options);\n return chosenRep.playlist;\n }\n logFn('could not choose a playlist with options', options);\n return null;\n } // filter out playlists without resolution information\n\n const haveResolution = bandwidthPlaylistReps.filter(rep => rep.width && rep.height); // sort variants by resolution\n\n stableSort(haveResolution, (left, right) => left.width - right.width); // if we have the exact resolution as the player use it\n\n const resolutionBestRepList = haveResolution.filter(rep => rep.width === playerWidth && rep.height === playerHeight);\n highestRemainingBandwidthRep = resolutionBestRepList[resolutionBestRepList.length - 1]; // ensure that we pick the highest bandwidth variant that have exact resolution\n\n const resolutionBestRep = resolutionBestRepList.filter(rep => rep.bandwidth === highestRemainingBandwidthRep.bandwidth)[0];\n let resolutionPlusOneList;\n let resolutionPlusOneSmallest;\n let resolutionPlusOneRep; // find the smallest variant that is larger than the player\n // if there is no match of exact resolution\n\n if (!resolutionBestRep) {\n resolutionPlusOneList = haveResolution.filter(rep => rep.width > playerWidth || rep.height > playerHeight); // find all the variants have the same smallest resolution\n\n resolutionPlusOneSmallest = resolutionPlusOneList.filter(rep => rep.width === resolutionPlusOneList[0].width && rep.height === resolutionPlusOneList[0].height); // ensure that we also pick the highest bandwidth variant that\n // is just-larger-than the video player\n\n highestRemainingBandwidthRep = resolutionPlusOneSmallest[resolutionPlusOneSmallest.length - 1];\n resolutionPlusOneRep = resolutionPlusOneSmallest.filter(rep => rep.bandwidth === highestRemainingBandwidthRep.bandwidth)[0];\n }\n let leastPixelDiffRep; // If this selector proves to be better than others,\n // resolutionPlusOneRep and resolutionBestRep and all\n // the code involving them should be removed.\n\n if (playlistController.leastPixelDiffSelector) {\n // find the variant that is closest to the player's pixel size\n const leastPixelDiffList = haveResolution.map(rep => {\n rep.pixelDiff = Math.abs(rep.width - playerWidth) + Math.abs(rep.height - playerHeight);\n return rep;\n }); // get the highest bandwidth, closest resolution playlist\n\n stableSort(leastPixelDiffList, (left, right) => {\n // sort by highest bandwidth if pixelDiff is the same\n if (left.pixelDiff === right.pixelDiff) {\n return right.bandwidth - left.bandwidth;\n }\n return left.pixelDiff - right.pixelDiff;\n });\n leastPixelDiffRep = leastPixelDiffList[0];\n } // fallback chain of variants\n\n const chosenRep = leastPixelDiffRep || resolutionPlusOneRep || resolutionBestRep || bandwidthBestRep || enabledPlaylistReps[0] || sortedPlaylistReps[0];\n if (chosenRep && chosenRep.playlist) {\n let type = 'sortedPlaylistReps';\n if (leastPixelDiffRep) {\n type = 'leastPixelDiffRep';\n } else if (resolutionPlusOneRep) {\n type = 'resolutionPlusOneRep';\n } else if (resolutionBestRep) {\n type = 'resolutionBestRep';\n } else if (bandwidthBestRep) {\n type = 'bandwidthBestRep';\n } else if (enabledPlaylistReps[0]) {\n type = 'enabledPlaylistReps';\n }\n logFn(`choosing ${representationToString(chosenRep)} using ${type} with options`, options);\n return chosenRep.playlist;\n }\n logFn('could not choose a playlist with options', options);\n return null;\n};\n\n/**\n * Chooses the appropriate media playlist based on the most recent\n * bandwidth estimate and the player size.\n *\n * Expects to be called within the context of an instance of VhsHandler\n *\n * @return {Playlist} the highest bitrate playlist less than the\n * currently detected bandwidth, accounting for some amount of\n * bandwidth variance\n */\n\nconst lastBandwidthSelector = function () {\n let pixelRatio = this.useDevicePixelRatio ? window$1.devicePixelRatio || 1 : 1;\n if (!isNaN(this.customPixelRatio)) {\n pixelRatio = this.customPixelRatio;\n }\n return simpleSelector(this.playlists.main, this.systemBandwidth, parseInt(safeGetComputedStyle(this.tech_.el(), 'width'), 10) * pixelRatio, parseInt(safeGetComputedStyle(this.tech_.el(), 'height'), 10) * pixelRatio, this.limitRenditionByPlayerDimensions, this.playlistController_);\n};\n/**\n * Chooses the appropriate media playlist based on an\n * exponential-weighted moving average of the bandwidth after\n * filtering for player size.\n *\n * Expects to be called within the context of an instance of VhsHandler\n *\n * @param {number} decay - a number between 0 and 1. Higher values of\n * this parameter will cause previous bandwidth estimates to lose\n * significance more quickly.\n * @return {Function} a function which can be invoked to create a new\n * playlist selector function.\n * @see https://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average\n */\n\nconst movingAverageBandwidthSelector = function (decay) {\n let average = -1;\n let lastSystemBandwidth = -1;\n if (decay < 0 || decay > 1) {\n throw new Error('Moving average bandwidth decay must be between 0 and 1.');\n }\n return function () {\n let pixelRatio = this.useDevicePixelRatio ? window$1.devicePixelRatio || 1 : 1;\n if (!isNaN(this.customPixelRatio)) {\n pixelRatio = this.customPixelRatio;\n }\n if (average < 0) {\n average = this.systemBandwidth;\n lastSystemBandwidth = this.systemBandwidth;\n } // stop the average value from decaying for every 250ms\n // when the systemBandwidth is constant\n // and\n // stop average from setting to a very low value when the\n // systemBandwidth becomes 0 in case of chunk cancellation\n\n if (this.systemBandwidth > 0 && this.systemBandwidth !== lastSystemBandwidth) {\n average = decay * this.systemBandwidth + (1 - decay) * average;\n lastSystemBandwidth = this.systemBandwidth;\n }\n return simpleSelector(this.playlists.main, average, parseInt(safeGetComputedStyle(this.tech_.el(), 'width'), 10) * pixelRatio, parseInt(safeGetComputedStyle(this.tech_.el(), 'height'), 10) * pixelRatio, this.limitRenditionByPlayerDimensions, this.playlistController_);\n };\n};\n/**\n * Chooses the appropriate media playlist based on the potential to rebuffer\n *\n * @param {Object} settings\n * Object of information required to use this selector\n * @param {Object} settings.main\n * Object representation of the main manifest\n * @param {number} settings.currentTime\n * The current time of the player\n * @param {number} settings.bandwidth\n * Current measured bandwidth\n * @param {number} settings.duration\n * Duration of the media\n * @param {number} settings.segmentDuration\n * Segment duration to be used in round trip time calculations\n * @param {number} settings.timeUntilRebuffer\n * Time left in seconds until the player has to rebuffer\n * @param {number} settings.currentTimeline\n * The current timeline segments are being loaded from\n * @param {SyncController} settings.syncController\n * SyncController for determining if we have a sync point for a given playlist\n * @return {Object|null}\n * {Object} return.playlist\n * The highest bandwidth playlist with the least amount of rebuffering\n * {Number} return.rebufferingImpact\n * The amount of time in seconds switching to this playlist will rebuffer. A\n * negative value means that switching will cause zero rebuffering.\n */\n\nconst minRebufferMaxBandwidthSelector = function (settings) {\n const {\n main,\n currentTime,\n bandwidth,\n duration,\n segmentDuration,\n timeUntilRebuffer,\n currentTimeline,\n syncController\n } = settings; // filter out any playlists that have been excluded due to\n // incompatible configurations\n\n const compatiblePlaylists = main.playlists.filter(playlist => !Playlist.isIncompatible(playlist)); // filter out any playlists that have been disabled manually through the representations\n // api or excluded temporarily due to playback errors.\n\n let enabledPlaylists = compatiblePlaylists.filter(Playlist.isEnabled);\n if (!enabledPlaylists.length) {\n // if there are no enabled playlists, then they have all been excluded or disabled\n // by the user through the representations api. In this case, ignore exclusion and\n // fallback to what the user wants by using playlists the user has not disabled.\n enabledPlaylists = compatiblePlaylists.filter(playlist => !Playlist.isDisabled(playlist));\n }\n const bandwidthPlaylists = enabledPlaylists.filter(Playlist.hasAttribute.bind(null, 'BANDWIDTH'));\n const rebufferingEstimates = bandwidthPlaylists.map(playlist => {\n const syncPoint = syncController.getSyncPoint(playlist, duration, currentTimeline, currentTime); // If there is no sync point for this playlist, switching to it will require a\n // sync request first. This will double the request time\n\n const numRequests = syncPoint ? 1 : 2;\n const requestTimeEstimate = Playlist.estimateSegmentRequestTime(segmentDuration, bandwidth, playlist);\n const rebufferingImpact = requestTimeEstimate * numRequests - timeUntilRebuffer;\n return {\n playlist,\n rebufferingImpact\n };\n });\n const noRebufferingPlaylists = rebufferingEstimates.filter(estimate => estimate.rebufferingImpact <= 0); // Sort by bandwidth DESC\n\n stableSort(noRebufferingPlaylists, (a, b) => comparePlaylistBandwidth(b.playlist, a.playlist));\n if (noRebufferingPlaylists.length) {\n return noRebufferingPlaylists[0];\n }\n stableSort(rebufferingEstimates, (a, b) => a.rebufferingImpact - b.rebufferingImpact);\n return rebufferingEstimates[0] || null;\n};\n/**\n * Chooses the appropriate media playlist, which in this case is the lowest bitrate\n * one with video. If no renditions with video exist, return the lowest audio rendition.\n *\n * Expects to be called within the context of an instance of VhsHandler\n *\n * @return {Object|null}\n * {Object} return.playlist\n * The lowest bitrate playlist that contains a video codec. If no such rendition\n * exists pick the lowest audio rendition.\n */\n\nconst lowestBitrateCompatibleVariantSelector = function () {\n // filter out any playlists that have been excluded due to\n // incompatible configurations or playback errors\n const playlists = this.playlists.main.playlists.filter(Playlist.isEnabled); // Sort ascending by bitrate\n\n stableSort(playlists, (a, b) => comparePlaylistBandwidth(a, b)); // Parse and assume that playlists with no video codec have no video\n // (this is not necessarily true, although it is generally true).\n //\n // If an entire manifest has no valid videos everything will get filtered\n // out.\n\n const playlistsWithVideo = playlists.filter(playlist => !!codecsForPlaylist(this.playlists.main, playlist).video);\n return playlistsWithVideo[0] || null;\n};\n\n/**\n * Combine all segments into a single Uint8Array\n *\n * @param {Object} segmentObj\n * @return {Uint8Array} concatenated bytes\n * @private\n */\nconst concatSegments = segmentObj => {\n let offset = 0;\n let tempBuffer;\n if (segmentObj.bytes) {\n tempBuffer = new Uint8Array(segmentObj.bytes); // combine the individual segments into one large typed-array\n\n segmentObj.segments.forEach(segment => {\n tempBuffer.set(segment, offset);\n offset += segment.byteLength;\n });\n }\n return tempBuffer;\n};\n/**\n * Example:\n * https://host.com/path1/path2/path3/segment.ts?arg1=val1\n * -->\n * path3/segment.ts\n *\n * @param resolvedUri\n * @return {string}\n */\n\nfunction compactSegmentUrlDescription(resolvedUri) {\n try {\n return new URL(resolvedUri).pathname.split('/').slice(-2).join('/');\n } catch (e) {\n return '';\n }\n}\n\n/**\n * @file text-tracks.js\n */\n/**\n * Create captions text tracks on video.js if they do not exist\n *\n * @param {Object} inbandTextTracks a reference to current inbandTextTracks\n * @param {Object} tech the video.js tech\n * @param {Object} captionStream the caption stream to create\n * @private\n */\n\nconst createCaptionsTrackIfNotExists = function (inbandTextTracks, tech, captionStream) {\n if (!inbandTextTracks[captionStream]) {\n tech.trigger({\n type: 'usage',\n name: 'vhs-608'\n });\n let instreamId = captionStream; // we need to translate SERVICEn for 708 to how mux.js currently labels them\n\n if (/^cc708_/.test(captionStream)) {\n instreamId = 'SERVICE' + captionStream.split('_')[1];\n }\n const track = tech.textTracks().getTrackById(instreamId);\n if (track) {\n // Resuse an existing track with a CC# id because this was\n // very likely created by videojs-contrib-hls from information\n // in the m3u8 for us to use\n inbandTextTracks[captionStream] = track;\n } else {\n // This section gets called when we have caption services that aren't specified in the manifest.\n // Manifest level caption services are handled in media-groups.js under CLOSED-CAPTIONS.\n const captionServices = tech.options_.vhs && tech.options_.vhs.captionServices || {};\n let label = captionStream;\n let language = captionStream;\n let def = false;\n const captionService = captionServices[instreamId];\n if (captionService) {\n label = captionService.label;\n language = captionService.language;\n def = captionService.default;\n } // Otherwise, create a track with the default `CC#` label and\n // without a language\n\n inbandTextTracks[captionStream] = tech.addRemoteTextTrack({\n kind: 'captions',\n id: instreamId,\n // TODO: investigate why this doesn't seem to turn the caption on by default\n default: def,\n label,\n language\n }, false).track;\n }\n }\n};\n/**\n * Add caption text track data to a source handler given an array of captions\n *\n * @param {Object}\n * @param {Object} inbandTextTracks the inband text tracks\n * @param {number} timestampOffset the timestamp offset of the source buffer\n * @param {Array} captionArray an array of caption data\n * @private\n */\n\nconst addCaptionData = function ({\n inbandTextTracks,\n captionArray,\n timestampOffset\n}) {\n if (!captionArray) {\n return;\n }\n const Cue = window$1.WebKitDataCue || window$1.VTTCue;\n captionArray.forEach(caption => {\n const track = caption.stream; // in CEA 608 captions, video.js/mux.js sends a content array\n // with positioning data\n\n if (caption.content) {\n caption.content.forEach(value => {\n const cue = new Cue(caption.startTime + timestampOffset, caption.endTime + timestampOffset, value.text);\n cue.line = value.line;\n cue.align = 'left';\n cue.position = value.position;\n cue.positionAlign = 'line-left';\n inbandTextTracks[track].addCue(cue);\n });\n } else {\n // otherwise, a text value with combined captions is sent\n inbandTextTracks[track].addCue(new Cue(caption.startTime + timestampOffset, caption.endTime + timestampOffset, caption.text));\n }\n });\n};\n/**\n * Define properties on a cue for backwards compatability,\n * but warn the user that the way that they are using it\n * is depricated and will be removed at a later date.\n *\n * @param {Cue} cue the cue to add the properties on\n * @private\n */\n\nconst deprecateOldCue = function (cue) {\n Object.defineProperties(cue.frame, {\n id: {\n get() {\n videojs.log.warn('cue.frame.id is deprecated. Use cue.value.key instead.');\n return cue.value.key;\n }\n },\n value: {\n get() {\n videojs.log.warn('cue.frame.value is deprecated. Use cue.value.data instead.');\n return cue.value.data;\n }\n },\n privateData: {\n get() {\n videojs.log.warn('cue.frame.privateData is deprecated. Use cue.value.data instead.');\n return cue.value.data;\n }\n }\n });\n};\n/**\n * Add metadata text track data to a source handler given an array of metadata\n *\n * @param {Object}\n * @param {Object} inbandTextTracks the inband text tracks\n * @param {Array} metadataArray an array of meta data\n * @param {number} timestampOffset the timestamp offset of the source buffer\n * @param {number} videoDuration the duration of the video\n * @private\n */\n\nconst addMetadata = ({\n inbandTextTracks,\n metadataArray,\n timestampOffset,\n videoDuration\n}) => {\n if (!metadataArray) {\n return;\n }\n const Cue = window$1.WebKitDataCue || window$1.VTTCue;\n const metadataTrack = inbandTextTracks.metadataTrack_;\n if (!metadataTrack) {\n return;\n }\n metadataArray.forEach(metadata => {\n const time = metadata.cueTime + timestampOffset; // if time isn't a finite number between 0 and Infinity, like NaN,\n // ignore this bit of metadata.\n // This likely occurs when you have an non-timed ID3 tag like TIT2,\n // which is the \"Title/Songname/Content description\" frame\n\n if (typeof time !== 'number' || window$1.isNaN(time) || time < 0 || !(time < Infinity)) {\n return;\n } // If we have no frames, we can't create a cue.\n\n if (!metadata.frames || !metadata.frames.length) {\n return;\n }\n metadata.frames.forEach(frame => {\n const cue = new Cue(time, time, frame.value || frame.url || frame.data || '');\n cue.frame = frame;\n cue.value = frame;\n deprecateOldCue(cue);\n metadataTrack.addCue(cue);\n });\n });\n if (!metadataTrack.cues || !metadataTrack.cues.length) {\n return;\n } // Updating the metadeta cues so that\n // the endTime of each cue is the startTime of the next cue\n // the endTime of last cue is the duration of the video\n\n const cues = metadataTrack.cues;\n const cuesArray = []; // Create a copy of the TextTrackCueList...\n // ...disregarding cues with a falsey value\n\n for (let i = 0; i < cues.length; i++) {\n if (cues[i]) {\n cuesArray.push(cues[i]);\n }\n } // Group cues by their startTime value\n\n const cuesGroupedByStartTime = cuesArray.reduce((obj, cue) => {\n const timeSlot = obj[cue.startTime] || [];\n timeSlot.push(cue);\n obj[cue.startTime] = timeSlot;\n return obj;\n }, {}); // Sort startTimes by ascending order\n\n const sortedStartTimes = Object.keys(cuesGroupedByStartTime).sort((a, b) => Number(a) - Number(b)); // Map each cue group's endTime to the next group's startTime\n\n sortedStartTimes.forEach((startTime, idx) => {\n const cueGroup = cuesGroupedByStartTime[startTime];\n const finiteDuration = isFinite(videoDuration) ? videoDuration : startTime;\n const nextTime = Number(sortedStartTimes[idx + 1]) || finiteDuration; // Map each cue's endTime the next group's startTime\n\n cueGroup.forEach(cue => {\n cue.endTime = nextTime;\n });\n });\n}; // object for mapping daterange attributes\n\nconst dateRangeAttr = {\n id: 'ID',\n class: 'CLASS',\n startDate: 'START-DATE',\n duration: 'DURATION',\n endDate: 'END-DATE',\n endOnNext: 'END-ON-NEXT',\n plannedDuration: 'PLANNED-DURATION',\n scte35Out: 'SCTE35-OUT',\n scte35In: 'SCTE35-IN'\n};\nconst dateRangeKeysToOmit = new Set(['id', 'class', 'startDate', 'duration', 'endDate', 'endOnNext', 'startTime', 'endTime', 'processDateRange']);\n/**\n * Add DateRange metadata text track to a source handler given an array of metadata\n *\n * @param {Object}\n * @param {Object} inbandTextTracks the inband text tracks\n * @param {Array} dateRanges parsed media playlist\n * @private\n */\n\nconst addDateRangeMetadata = ({\n inbandTextTracks,\n dateRanges\n}) => {\n const metadataTrack = inbandTextTracks.metadataTrack_;\n if (!metadataTrack) {\n return;\n }\n const Cue = window$1.WebKitDataCue || window$1.VTTCue;\n dateRanges.forEach(dateRange => {\n // we generate multiple cues for each date range with different attributes\n for (const key of Object.keys(dateRange)) {\n if (dateRangeKeysToOmit.has(key)) {\n continue;\n }\n const cue = new Cue(dateRange.startTime, dateRange.endTime, '');\n cue.id = dateRange.id;\n cue.type = 'com.apple.quicktime.HLS';\n cue.value = {\n key: dateRangeAttr[key],\n data: dateRange[key]\n };\n if (key === 'scte35Out' || key === 'scte35In') {\n cue.value.data = new Uint8Array(cue.value.data.match(/[\\da-f]{2}/gi)).buffer;\n }\n metadataTrack.addCue(cue);\n }\n dateRange.processDateRange();\n });\n};\n/**\n * Create metadata text track on video.js if it does not exist\n *\n * @param {Object} inbandTextTracks a reference to current inbandTextTracks\n * @param {string} dispatchType the inband metadata track dispatch type\n * @param {Object} tech the video.js tech\n * @private\n */\n\nconst createMetadataTrackIfNotExists = (inbandTextTracks, dispatchType, tech) => {\n if (inbandTextTracks.metadataTrack_) {\n return;\n }\n inbandTextTracks.metadataTrack_ = tech.addRemoteTextTrack({\n kind: 'metadata',\n label: 'Timed Metadata'\n }, false).track;\n if (!videojs.browser.IS_ANY_SAFARI) {\n inbandTextTracks.metadataTrack_.inBandMetadataTrackDispatchType = dispatchType;\n }\n};\n/**\n * Remove cues from a track on video.js.\n *\n * @param {Double} start start of where we should remove the cue\n * @param {Double} end end of where the we should remove the cue\n * @param {Object} track the text track to remove the cues from\n * @private\n */\n\nconst removeCuesFromTrack = function (start, end, track) {\n let i;\n let cue;\n if (!track) {\n return;\n }\n if (!track.cues) {\n return;\n }\n i = track.cues.length;\n while (i--) {\n cue = track.cues[i]; // Remove any cue within the provided start and end time\n\n if (cue.startTime >= start && cue.endTime <= end) {\n track.removeCue(cue);\n }\n }\n};\n/**\n * Remove duplicate cues from a track on video.js (a cue is considered a\n * duplicate if it has the same time interval and text as another)\n *\n * @param {Object} track the text track to remove the duplicate cues from\n * @private\n */\n\nconst removeDuplicateCuesFromTrack = function (track) {\n const cues = track.cues;\n if (!cues) {\n return;\n }\n const uniqueCues = {};\n for (let i = cues.length - 1; i >= 0; i--) {\n const cue = cues[i];\n const cueKey = `${cue.startTime}-${cue.endTime}-${cue.text}`;\n if (uniqueCues[cueKey]) {\n track.removeCue(cue);\n } else {\n uniqueCues[cueKey] = cue;\n }\n }\n};\n\n/**\n * Returns a list of gops in the buffer that have a pts value of 3 seconds or more in\n * front of current time.\n *\n * @param {Array} buffer\n * The current buffer of gop information\n * @param {number} currentTime\n * The current time\n * @param {Double} mapping\n * Offset to map display time to stream presentation time\n * @return {Array}\n * List of gops considered safe to append over\n */\n\nconst gopsSafeToAlignWith = (buffer, currentTime, mapping) => {\n if (typeof currentTime === 'undefined' || currentTime === null || !buffer.length) {\n return [];\n } // pts value for current time + 3 seconds to give a bit more wiggle room\n\n const currentTimePts = Math.ceil((currentTime - mapping + 3) * ONE_SECOND_IN_TS);\n let i;\n for (i = 0; i < buffer.length; i++) {\n if (buffer[i].pts > currentTimePts) {\n break;\n }\n }\n return buffer.slice(i);\n};\n/**\n * Appends gop information (timing and byteLength) received by the transmuxer for the\n * gops appended in the last call to appendBuffer\n *\n * @param {Array} buffer\n * The current buffer of gop information\n * @param {Array} gops\n * List of new gop information\n * @param {boolean} replace\n * If true, replace the buffer with the new gop information. If false, append the\n * new gop information to the buffer in the right location of time.\n * @return {Array}\n * Updated list of gop information\n */\n\nconst updateGopBuffer = (buffer, gops, replace) => {\n if (!gops.length) {\n return buffer;\n }\n if (replace) {\n // If we are in safe append mode, then completely overwrite the gop buffer\n // with the most recent appeneded data. This will make sure that when appending\n // future segments, we only try to align with gops that are both ahead of current\n // time and in the last segment appended.\n return gops.slice();\n }\n const start = gops[0].pts;\n let i = 0;\n for (i; i < buffer.length; i++) {\n if (buffer[i].pts >= start) {\n break;\n }\n }\n return buffer.slice(0, i).concat(gops);\n};\n/**\n * Removes gop information in buffer that overlaps with provided start and end\n *\n * @param {Array} buffer\n * The current buffer of gop information\n * @param {Double} start\n * position to start the remove at\n * @param {Double} end\n * position to end the remove at\n * @param {Double} mapping\n * Offset to map display time to stream presentation time\n */\n\nconst removeGopBuffer = (buffer, start, end, mapping) => {\n const startPts = Math.ceil((start - mapping) * ONE_SECOND_IN_TS);\n const endPts = Math.ceil((end - mapping) * ONE_SECOND_IN_TS);\n const updatedBuffer = buffer.slice();\n let i = buffer.length;\n while (i--) {\n if (buffer[i].pts <= endPts) {\n break;\n }\n }\n if (i === -1) {\n // no removal because end of remove range is before start of buffer\n return updatedBuffer;\n }\n let j = i + 1;\n while (j--) {\n if (buffer[j].pts <= startPts) {\n break;\n }\n } // clamp remove range start to 0 index\n\n j = Math.max(j, 0);\n updatedBuffer.splice(j, i - j + 1);\n return updatedBuffer;\n};\nconst shallowEqual = function (a, b) {\n // if both are undefined\n // or one or the other is undefined\n // they are not equal\n if (!a && !b || !a && b || a && !b) {\n return false;\n } // they are the same object and thus, equal\n\n if (a === b) {\n return true;\n } // sort keys so we can make sure they have\n // all the same keys later.\n\n const akeys = Object.keys(a).sort();\n const bkeys = Object.keys(b).sort(); // different number of keys, not equal\n\n if (akeys.length !== bkeys.length) {\n return false;\n }\n for (let i = 0; i < akeys.length; i++) {\n const key = akeys[i]; // different sorted keys, not equal\n\n if (key !== bkeys[i]) {\n return false;\n } // different values, not equal\n\n if (a[key] !== b[key]) {\n return false;\n }\n }\n return true;\n};\n\n/**\n * The segment loader has no recourse except to fetch a segment in the\n * current playlist and use the internal timestamps in that segment to\n * generate a syncPoint. This function returns a good candidate index\n * for that process.\n *\n * @param {Array} segments - the segments array from a playlist.\n * @return {number} An index of a segment from the playlist to load\n */\n\nconst getSyncSegmentCandidate = function (currentTimeline, segments, targetTime) {\n segments = segments || [];\n const timelineSegments = [];\n let time = 0;\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n if (currentTimeline === segment.timeline) {\n timelineSegments.push(i);\n time += segment.duration;\n if (time > targetTime) {\n return i;\n }\n }\n }\n if (timelineSegments.length === 0) {\n return 0;\n } // default to the last timeline segment\n\n return timelineSegments[timelineSegments.length - 1];\n}; // In the event of a quota exceeded error, keep at least one second of back buffer. This\n// number was arbitrarily chosen and may be updated in the future, but seemed reasonable\n// as a start to prevent any potential issues with removing content too close to the\n// playhead.\n\nconst MIN_BACK_BUFFER = 1; // in ms\n\nconst CHECK_BUFFER_DELAY = 500;\nconst finite = num => typeof num === 'number' && isFinite(num); // With most content hovering around 30fps, if a segment has a duration less than a half\n// frame at 30fps or one frame at 60fps, the bandwidth and throughput calculations will\n// not accurately reflect the rest of the content.\n\nconst MIN_SEGMENT_DURATION_TO_SAVE_STATS = 1 / 60;\nconst illegalMediaSwitch = (loaderType, startingMedia, trackInfo) => {\n // Although these checks should most likely cover non 'main' types, for now it narrows\n // the scope of our checks.\n if (loaderType !== 'main' || !startingMedia || !trackInfo) {\n return null;\n }\n if (!trackInfo.hasAudio && !trackInfo.hasVideo) {\n return 'Neither audio nor video found in segment.';\n }\n if (startingMedia.hasVideo && !trackInfo.hasVideo) {\n return 'Only audio found in segment when we expected video.' + ' We can\\'t switch to audio only from a stream that had video.' + ' To get rid of this message, please add codec information to the manifest.';\n }\n if (!startingMedia.hasVideo && trackInfo.hasVideo) {\n return 'Video found in segment when we expected only audio.' + ' We can\\'t switch to a stream with video from an audio only stream.' + ' To get rid of this message, please add codec information to the manifest.';\n }\n return null;\n};\n/**\n * Calculates a time value that is safe to remove from the back buffer without interrupting\n * playback.\n *\n * @param {TimeRange} seekable\n * The current seekable range\n * @param {number} currentTime\n * The current time of the player\n * @param {number} targetDuration\n * The target duration of the current playlist\n * @return {number}\n * Time that is safe to remove from the back buffer without interrupting playback\n */\n\nconst safeBackBufferTrimTime = (seekable, currentTime, targetDuration) => {\n // 30 seconds before the playhead provides a safe default for trimming.\n //\n // Choosing a reasonable default is particularly important for high bitrate content and\n // VOD videos/live streams with large windows, as the buffer may end up overfilled and\n // throw an APPEND_BUFFER_ERR.\n let trimTime = currentTime - Config.BACK_BUFFER_LENGTH;\n if (seekable.length) {\n // Some live playlists may have a shorter window of content than the full allowed back\n // buffer. For these playlists, don't save content that's no longer within the window.\n trimTime = Math.max(trimTime, seekable.start(0));\n } // Don't remove within target duration of the current time to avoid the possibility of\n // removing the GOP currently being played, as removing it can cause playback stalls.\n\n const maxTrimTime = currentTime - targetDuration;\n return Math.min(maxTrimTime, trimTime);\n};\nconst segmentInfoString = segmentInfo => {\n const {\n startOfSegment,\n duration,\n segment,\n part,\n playlist: {\n mediaSequence: seq,\n id,\n segments = []\n },\n mediaIndex: index,\n partIndex,\n timeline\n } = segmentInfo;\n const segmentLen = segments.length - 1;\n let selection = 'mediaIndex/partIndex increment';\n if (segmentInfo.getMediaInfoForTime) {\n selection = `getMediaInfoForTime (${segmentInfo.getMediaInfoForTime})`;\n } else if (segmentInfo.isSyncRequest) {\n selection = 'getSyncSegmentCandidate (isSyncRequest)';\n }\n if (segmentInfo.independent) {\n selection += ` with independent ${segmentInfo.independent}`;\n }\n const hasPartIndex = typeof partIndex === 'number';\n const name = segmentInfo.segment.uri ? 'segment' : 'pre-segment';\n const zeroBasedPartCount = hasPartIndex ? getKnownPartCount({\n preloadSegment: segment\n }) - 1 : 0;\n return `${name} [${seq + index}/${seq + segmentLen}]` + (hasPartIndex ? ` part [${partIndex}/${zeroBasedPartCount}]` : '') + ` segment start/end [${segment.start} => ${segment.end}]` + (hasPartIndex ? ` part start/end [${part.start} => ${part.end}]` : '') + ` startOfSegment [${startOfSegment}]` + ` duration [${duration}]` + ` timeline [${timeline}]` + ` selected by [${selection}]` + ` playlist [${id}]`;\n};\nconst timingInfoPropertyForMedia = mediaType => `${mediaType}TimingInfo`;\n/**\n * Returns the timestamp offset to use for the segment.\n *\n * @param {number} segmentTimeline\n * The timeline of the segment\n * @param {number} currentTimeline\n * The timeline currently being followed by the loader\n * @param {number} startOfSegment\n * The estimated segment start\n * @param {TimeRange[]} buffered\n * The loader's buffer\n * @param {boolean} overrideCheck\n * If true, no checks are made to see if the timestamp offset value should be set,\n * but sets it directly to a value.\n *\n * @return {number|null}\n * Either a number representing a new timestamp offset, or null if the segment is\n * part of the same timeline\n */\n\nconst timestampOffsetForSegment = ({\n segmentTimeline,\n currentTimeline,\n startOfSegment,\n buffered,\n overrideCheck\n}) => {\n // Check to see if we are crossing a discontinuity to see if we need to set the\n // timestamp offset on the transmuxer and source buffer.\n //\n // Previously, we changed the timestampOffset if the start of this segment was less than\n // the currently set timestampOffset, but this isn't desirable as it can produce bad\n // behavior, especially around long running live streams.\n if (!overrideCheck && segmentTimeline === currentTimeline) {\n return null;\n } // When changing renditions, it's possible to request a segment on an older timeline. For\n // instance, given two renditions with the following:\n //\n // #EXTINF:10\n // segment1\n // #EXT-X-DISCONTINUITY\n // #EXTINF:10\n // segment2\n // #EXTINF:10\n // segment3\n //\n // And the current player state:\n //\n // current time: 8\n // buffer: 0 => 20\n //\n // The next segment on the current rendition would be segment3, filling the buffer from\n // 20s onwards. However, if a rendition switch happens after segment2 was requested,\n // then the next segment to be requested will be segment1 from the new rendition in\n // order to fill time 8 and onwards. Using the buffered end would result in repeated\n // content (since it would position segment1 of the new rendition starting at 20s). This\n // case can be identified when the new segment's timeline is a prior value. Instead of\n // using the buffered end, the startOfSegment can be used, which, hopefully, will be\n // more accurate to the actual start time of the segment.\n\n if (segmentTimeline < currentTimeline) {\n return startOfSegment;\n } // segmentInfo.startOfSegment used to be used as the timestamp offset, however, that\n // value uses the end of the last segment if it is available. While this value\n // should often be correct, it's better to rely on the buffered end, as the new\n // content post discontinuity should line up with the buffered end as if it were\n // time 0 for the new content.\n\n return buffered.length ? buffered.end(buffered.length - 1) : startOfSegment;\n};\n/**\n * Returns whether or not the loader should wait for a timeline change from the timeline\n * change controller before processing the segment.\n *\n * Primary timing in VHS goes by video. This is different from most media players, as\n * audio is more often used as the primary timing source. For the foreseeable future, VHS\n * will continue to use video as the primary timing source, due to the current logic and\n * expectations built around it.\n\n * Since the timing follows video, in order to maintain sync, the video loader is\n * responsible for setting both audio and video source buffer timestamp offsets.\n *\n * Setting different values for audio and video source buffers could lead to\n * desyncing. The following examples demonstrate some of the situations where this\n * distinction is important. Note that all of these cases involve demuxed content. When\n * content is muxed, the audio and video are packaged together, therefore syncing\n * separate media playlists is not an issue.\n *\n * CASE 1: Audio prepares to load a new timeline before video:\n *\n * Timeline: 0 1\n * Audio Segments: 0 1 2 3 4 5 DISCO 6 7 8 9\n * Audio Loader: ^\n * Video Segments: 0 1 2 3 4 5 DISCO 6 7 8 9\n * Video Loader ^\n *\n * In the above example, the audio loader is preparing to load the 6th segment, the first\n * after a discontinuity, while the video loader is still loading the 5th segment, before\n * the discontinuity.\n *\n * If the audio loader goes ahead and loads and appends the 6th segment before the video\n * loader crosses the discontinuity, then when appended, the 6th audio segment will use\n * the timestamp offset from timeline 0. This will likely lead to desyncing. In addition,\n * the audio loader must provide the audioAppendStart value to trim the content in the\n * transmuxer, and that value relies on the audio timestamp offset. Since the audio\n * timestamp offset is set by the video (main) loader, the audio loader shouldn't load the\n * segment until that value is provided.\n *\n * CASE 2: Video prepares to load a new timeline before audio:\n *\n * Timeline: 0 1\n * Audio Segments: 0 1 2 3 4 5 DISCO 6 7 8 9\n * Audio Loader: ^\n * Video Segments: 0 1 2 3 4 5 DISCO 6 7 8 9\n * Video Loader ^\n *\n * In the above example, the video loader is preparing to load the 6th segment, the first\n * after a discontinuity, while the audio loader is still loading the 5th segment, before\n * the discontinuity.\n *\n * If the video loader goes ahead and loads and appends the 6th segment, then once the\n * segment is loaded and processed, both the video and audio timestamp offsets will be\n * set, since video is used as the primary timing source. This is to ensure content lines\n * up appropriately, as any modifications to the video timing are reflected by audio when\n * the video loader sets the audio and video timestamp offsets to the same value. However,\n * setting the timestamp offset for audio before audio has had a chance to change\n * timelines will likely lead to desyncing, as the audio loader will append segment 5 with\n * a timestamp intended to apply to segments from timeline 1 rather than timeline 0.\n *\n * CASE 3: When seeking, audio prepares to load a new timeline before video\n *\n * Timeline: 0 1\n * Audio Segments: 0 1 2 3 4 5 DISCO 6 7 8 9\n * Audio Loader: ^\n * Video Segments: 0 1 2 3 4 5 DISCO 6 7 8 9\n * Video Loader ^\n *\n * In the above example, both audio and video loaders are loading segments from timeline\n * 0, but imagine that the seek originated from timeline 1.\n *\n * When seeking to a new timeline, the timestamp offset will be set based on the expected\n * segment start of the loaded video segment. In order to maintain sync, the audio loader\n * must wait for the video loader to load its segment and update both the audio and video\n * timestamp offsets before it may load and append its own segment. This is the case\n * whether the seek results in a mismatched segment request (e.g., the audio loader\n * chooses to load segment 3 and the video loader chooses to load segment 4) or the\n * loaders choose to load the same segment index from each playlist, as the segments may\n * not be aligned perfectly, even for matching segment indexes.\n *\n * @param {Object} timelinechangeController\n * @param {number} currentTimeline\n * The timeline currently being followed by the loader\n * @param {number} segmentTimeline\n * The timeline of the segment being loaded\n * @param {('main'|'audio')} loaderType\n * The loader type\n * @param {boolean} audioDisabled\n * Whether the audio is disabled for the loader. This should only be true when the\n * loader may have muxed audio in its segment, but should not append it, e.g., for\n * the main loader when an alternate audio playlist is active.\n *\n * @return {boolean}\n * Whether the loader should wait for a timeline change from the timeline change\n * controller before processing the segment\n */\n\nconst shouldWaitForTimelineChange = ({\n timelineChangeController,\n currentTimeline,\n segmentTimeline,\n loaderType,\n audioDisabled\n}) => {\n if (currentTimeline === segmentTimeline) {\n return false;\n }\n if (loaderType === 'audio') {\n const lastMainTimelineChange = timelineChangeController.lastTimelineChange({\n type: 'main'\n }); // Audio loader should wait if:\n //\n // * main hasn't had a timeline change yet (thus has not loaded its first segment)\n // * main hasn't yet changed to the timeline audio is looking to load\n\n return !lastMainTimelineChange || lastMainTimelineChange.to !== segmentTimeline;\n } // The main loader only needs to wait for timeline changes if there's demuxed audio.\n // Otherwise, there's nothing to wait for, since audio would be muxed into the main\n // loader's segments (or the content is audio/video only and handled by the main\n // loader).\n\n if (loaderType === 'main' && audioDisabled) {\n const pendingAudioTimelineChange = timelineChangeController.pendingTimelineChange({\n type: 'audio'\n }); // Main loader should wait for the audio loader if audio is not pending a timeline\n // change to the current timeline.\n //\n // Since the main loader is responsible for setting the timestamp offset for both\n // audio and video, the main loader must wait for audio to be about to change to its\n // timeline before setting the offset, otherwise, if audio is behind in loading,\n // segments from the previous timeline would be adjusted by the new timestamp offset.\n //\n // This requirement means that video will not cross a timeline until the audio is\n // about to cross to it, so that way audio and video will always cross the timeline\n // together.\n //\n // In addition to normal timeline changes, these rules also apply to the start of a\n // stream (going from a non-existent timeline, -1, to timeline 0). It's important\n // that these rules apply to the first timeline change because if they did not, it's\n // possible that the main loader will cross two timelines before the audio loader has\n // crossed one. Logic may be implemented to handle the startup as a special case, but\n // it's easier to simply treat all timeline changes the same.\n\n if (pendingAudioTimelineChange && pendingAudioTimelineChange.to === segmentTimeline) {\n return false;\n }\n return true;\n }\n return false;\n};\nconst shouldFixBadTimelineChanges = timelineChangeController => {\n if (!timelineChangeController) {\n return false;\n }\n const pendingAudioTimelineChange = timelineChangeController.pendingTimelineChange({\n type: 'audio'\n });\n const pendingMainTimelineChange = timelineChangeController.pendingTimelineChange({\n type: 'main'\n });\n const hasPendingTimelineChanges = pendingAudioTimelineChange && pendingMainTimelineChange;\n const differentPendingChanges = hasPendingTimelineChanges && pendingAudioTimelineChange.to !== pendingMainTimelineChange.to;\n const isNotInitialPendingTimelineChange = hasPendingTimelineChanges && pendingAudioTimelineChange.from !== -1 && pendingMainTimelineChange.from !== -1;\n if (isNotInitialPendingTimelineChange && differentPendingChanges) {\n return true;\n }\n return false;\n};\n/**\n * Fixes certain bad timeline scenarios by resetting the loader.\n *\n * @param {SegmentLoader} segmentLoader\n */\n\nconst fixBadTimelineChange = segmentLoader => {\n if (!segmentLoader) {\n return;\n }\n segmentLoader.pause();\n segmentLoader.resetEverything();\n segmentLoader.load();\n};\n/**\n * Check if the pending audio timeline change is behind the\n * pending main timeline change.\n *\n * @param {SegmentLoader} segmentLoader\n * @return {boolean}\n */\n\nconst isAudioTimelineBehind = segmentLoader => {\n const pendingAudioTimelineChange = segmentLoader.timelineChangeController_.pendingTimelineChange({\n type: 'audio'\n });\n const pendingMainTimelineChange = segmentLoader.timelineChangeController_.pendingTimelineChange({\n type: 'main'\n });\n const hasPendingTimelineChanges = pendingAudioTimelineChange && pendingMainTimelineChange;\n return hasPendingTimelineChanges && pendingAudioTimelineChange.to < pendingMainTimelineChange.to;\n};\n/**\n * A method to check if the player is waiting for a timeline change, and fixes\n * certain scenarios where the timelines need to be updated.\n *\n * @param {SegmentLoader} segmentLoader\n */\n\nconst checkAndFixTimelines = segmentLoader => {\n const segmentInfo = segmentLoader.pendingSegment_;\n if (!segmentInfo) {\n return;\n }\n const waitingForTimelineChange = shouldWaitForTimelineChange({\n timelineChangeController: segmentLoader.timelineChangeController_,\n currentTimeline: segmentLoader.currentTimeline_,\n segmentTimeline: segmentInfo.timeline,\n loaderType: segmentLoader.loaderType_,\n audioDisabled: segmentLoader.audioDisabled_\n });\n if (waitingForTimelineChange && shouldFixBadTimelineChanges(segmentLoader.timelineChangeController_)) {\n if (isAudioTimelineBehind(segmentLoader)) {\n segmentLoader.timelineChangeController_.trigger('audioTimelineBehind');\n return;\n }\n fixBadTimelineChange(segmentLoader);\n }\n};\nconst mediaDuration = timingInfos => {\n let maxDuration = 0;\n ['video', 'audio'].forEach(function (type) {\n const typeTimingInfo = timingInfos[`${type}TimingInfo`];\n if (!typeTimingInfo) {\n return;\n }\n const {\n start,\n end\n } = typeTimingInfo;\n let duration;\n if (typeof start === 'bigint' || typeof end === 'bigint') {\n duration = window$1.BigInt(end) - window$1.BigInt(start);\n } else if (typeof start === 'number' && typeof end === 'number') {\n duration = end - start;\n }\n if (typeof duration !== 'undefined' && duration > maxDuration) {\n maxDuration = duration;\n }\n }); // convert back to a number if it is lower than MAX_SAFE_INTEGER\n // as we only need BigInt when we are above that.\n\n if (typeof maxDuration === 'bigint' && maxDuration < Number.MAX_SAFE_INTEGER) {\n maxDuration = Number(maxDuration);\n }\n return maxDuration;\n};\nconst segmentTooLong = ({\n segmentDuration,\n maxDuration\n}) => {\n // 0 duration segments are most likely due to metadata only segments or a lack of\n // information.\n if (!segmentDuration) {\n return false;\n } // For HLS:\n //\n // https://tools.ietf.org/html/draft-pantos-http-live-streaming-23#section-4.3.3.1\n // The EXTINF duration of each Media Segment in the Playlist\n // file, when rounded to the nearest integer, MUST be less than or equal\n // to the target duration; longer segments can trigger playback stalls\n // or other errors.\n //\n // For DASH, the mpd-parser uses the largest reported segment duration as the target\n // duration. Although that reported duration is occasionally approximate (i.e., not\n // exact), a strict check may report that a segment is too long more often in DASH.\n\n return Math.round(segmentDuration) > maxDuration + TIME_FUDGE_FACTOR;\n};\nconst getTroublesomeSegmentDurationMessage = (segmentInfo, sourceType) => {\n // Right now we aren't following DASH's timing model exactly, so only perform\n // this check for HLS content.\n if (sourceType !== 'hls') {\n return null;\n }\n const segmentDuration = mediaDuration({\n audioTimingInfo: segmentInfo.audioTimingInfo,\n videoTimingInfo: segmentInfo.videoTimingInfo\n }); // Don't report if we lack information.\n //\n // If the segment has a duration of 0 it is either a lack of information or a\n // metadata only segment and shouldn't be reported here.\n\n if (!segmentDuration) {\n return null;\n }\n const targetDuration = segmentInfo.playlist.targetDuration;\n const isSegmentWayTooLong = segmentTooLong({\n segmentDuration,\n maxDuration: targetDuration * 2\n });\n const isSegmentSlightlyTooLong = segmentTooLong({\n segmentDuration,\n maxDuration: targetDuration\n });\n const segmentTooLongMessage = `Segment with index ${segmentInfo.mediaIndex} ` + `from playlist ${segmentInfo.playlist.id} ` + `has a duration of ${segmentDuration} ` + `when the reported duration is ${segmentInfo.duration} ` + `and the target duration is ${targetDuration}. ` + 'For HLS content, a duration in excess of the target duration may result in ' + 'playback issues. See the HLS specification section on EXT-X-TARGETDURATION for ' + 'more details: ' + 'https://tools.ietf.org/html/draft-pantos-http-live-streaming-23#section-4.3.3.1';\n if (isSegmentWayTooLong || isSegmentSlightlyTooLong) {\n return {\n severity: isSegmentWayTooLong ? 'warn' : 'info',\n message: segmentTooLongMessage\n };\n }\n return null;\n};\n/**\n *\n * @param {Object} options type of segment loader and segment either segmentInfo or simple segment\n * @return a segmentInfo payload for events or errors.\n */\n\nconst segmentInfoPayload = ({\n type,\n segment\n}) => {\n if (!segment) {\n return;\n }\n const isEncrypted = Boolean(segment.key || segment.map && segment.map.ke);\n const isMediaInitialization = Boolean(segment.map && !segment.map.bytes);\n const start = segment.startOfSegment === undefined ? segment.start : segment.startOfSegment;\n return {\n type: type || segment.type,\n uri: segment.resolvedUri || segment.uri,\n start,\n duration: segment.duration,\n isEncrypted,\n isMediaInitialization\n };\n};\n/**\n * An object that manages segment loading and appending.\n *\n * @class SegmentLoader\n * @param {Object} options required and optional options\n * @extends videojs.EventTarget\n */\n\nclass SegmentLoader extends videojs.EventTarget {\n constructor(settings, options = {}) {\n super(); // check pre-conditions\n\n if (!settings) {\n throw new TypeError('Initialization settings are required');\n }\n if (typeof settings.currentTime !== 'function') {\n throw new TypeError('No currentTime getter specified');\n }\n if (!settings.mediaSource) {\n throw new TypeError('No MediaSource specified');\n } // public properties\n\n this.bandwidth = settings.bandwidth;\n this.throughput = {\n rate: 0,\n count: 0\n };\n this.roundTrip = NaN;\n this.resetStats_();\n this.mediaIndex = null;\n this.partIndex = null; // private settings\n\n this.hasPlayed_ = settings.hasPlayed;\n this.currentTime_ = settings.currentTime;\n this.seekable_ = settings.seekable;\n this.seeking_ = settings.seeking;\n this.duration_ = settings.duration;\n this.mediaSource_ = settings.mediaSource;\n this.vhs_ = settings.vhs;\n this.loaderType_ = settings.loaderType;\n this.currentMediaInfo_ = void 0;\n this.startingMediaInfo_ = void 0;\n this.segmentMetadataTrack_ = settings.segmentMetadataTrack;\n this.goalBufferLength_ = settings.goalBufferLength;\n this.sourceType_ = settings.sourceType;\n this.sourceUpdater_ = settings.sourceUpdater;\n this.inbandTextTracks_ = settings.inbandTextTracks;\n this.state_ = 'INIT';\n this.timelineChangeController_ = settings.timelineChangeController;\n this.shouldSaveSegmentTimingInfo_ = true;\n this.parse708captions_ = settings.parse708captions;\n this.useDtsForTimestampOffset_ = settings.useDtsForTimestampOffset;\n this.captionServices_ = settings.captionServices;\n this.exactManifestTimings = settings.exactManifestTimings;\n this.addMetadataToTextTrack = settings.addMetadataToTextTrack; // private instance variables\n\n this.checkBufferTimeout_ = null;\n this.error_ = void 0;\n this.currentTimeline_ = -1;\n this.shouldForceTimestampOffsetAfterResync_ = false;\n this.pendingSegment_ = null;\n this.xhrOptions_ = null;\n this.pendingSegments_ = [];\n this.audioDisabled_ = false;\n this.isPendingTimestampOffset_ = false; // TODO possibly move gopBuffer and timeMapping info to a separate controller\n\n this.gopBuffer_ = [];\n this.timeMapping_ = 0;\n this.safeAppend_ = false;\n this.appendInitSegment_ = {\n audio: true,\n video: true\n };\n this.playlistOfLastInitSegment_ = {\n audio: null,\n video: null\n };\n this.callQueue_ = []; // If the segment loader prepares to load a segment, but does not have enough\n // information yet to start the loading process (e.g., if the audio loader wants to\n // load a segment from the next timeline but the main loader hasn't yet crossed that\n // timeline), then the load call will be added to the queue until it is ready to be\n // processed.\n\n this.loadQueue_ = [];\n this.metadataQueue_ = {\n id3: [],\n caption: []\n };\n this.waitingOnRemove_ = false;\n this.quotaExceededErrorRetryTimeout_ = null; // Fragmented mp4 playback\n\n this.activeInitSegmentId_ = null;\n this.initSegments_ = {}; // HLSe playback\n\n this.cacheEncryptionKeys_ = settings.cacheEncryptionKeys;\n this.keyCache_ = {};\n this.decrypter_ = settings.decrypter; // Manages the tracking and generation of sync-points, mappings\n // between a time in the display time and a segment index within\n // a playlist\n\n this.syncController_ = settings.syncController;\n this.syncPoint_ = {\n segmentIndex: 0,\n time: 0\n };\n this.transmuxer_ = this.createTransmuxer_();\n this.triggerSyncInfoUpdate_ = () => this.trigger('syncinfoupdate');\n this.syncController_.on('syncinfoupdate', this.triggerSyncInfoUpdate_);\n this.mediaSource_.addEventListener('sourceopen', () => {\n if (!this.isEndOfStream_()) {\n this.ended_ = false;\n }\n }); // ...for determining the fetch location\n\n this.fetchAtBuffer_ = false;\n this.logger_ = logger(`SegmentLoader[${this.loaderType_}]`);\n Object.defineProperty(this, 'state', {\n get() {\n return this.state_;\n },\n set(newState) {\n if (newState !== this.state_) {\n this.logger_(`${this.state_} -> ${newState}`);\n this.state_ = newState;\n this.trigger('statechange');\n }\n }\n });\n this.sourceUpdater_.on('ready', () => {\n if (this.hasEnoughInfoToAppend_()) {\n this.processCallQueue_();\n } else {\n checkAndFixTimelines(this);\n }\n });\n this.sourceUpdater_.on('codecschange', metadata => {\n this.trigger(_extends({\n type: 'codecschange'\n }, metadata));\n }); // Only the main loader needs to listen for pending timeline changes, as the main\n // loader should wait for audio to be ready to change its timeline so that both main\n // and audio timelines change together. For more details, see the\n // shouldWaitForTimelineChange function.\n\n if (this.loaderType_ === 'main') {\n this.timelineChangeController_.on('pendingtimelinechange', () => {\n if (this.hasEnoughInfoToAppend_()) {\n this.processCallQueue_();\n } else {\n checkAndFixTimelines(this);\n }\n });\n } // The main loader only listens on pending timeline changes, but the audio loader,\n // since its loads follow main, needs to listen on timeline changes. For more details,\n // see the shouldWaitForTimelineChange function.\n\n if (this.loaderType_ === 'audio') {\n this.timelineChangeController_.on('timelinechange', metadata => {\n this.trigger(_extends({\n type: 'timelinechange'\n }, metadata));\n if (this.hasEnoughInfoToLoad_()) {\n this.processLoadQueue_();\n } else {\n checkAndFixTimelines(this);\n }\n if (this.hasEnoughInfoToAppend_()) {\n this.processCallQueue_();\n } else {\n checkAndFixTimelines(this);\n }\n });\n }\n }\n /**\n * TODO: Current sync controller consists of many hls-specific strategies\n * media sequence sync is also hls-specific, and we would like to be protocol-agnostic on this level\n * this should be a part of the sync-controller and sync controller should expect different strategy list based on the protocol.\n *\n * @return {MediaSequenceSync|null}\n * @private\n */\n\n get mediaSequenceSync_() {\n return this.syncController_.getMediaSequenceSync(this.loaderType_);\n }\n createTransmuxer_() {\n return segmentTransmuxer.createTransmuxer({\n remux: false,\n alignGopsAtEnd: this.safeAppend_,\n keepOriginalTimestamps: true,\n parse708captions: this.parse708captions_,\n captionServices: this.captionServices_\n });\n }\n /**\n * reset all of our media stats\n *\n * @private\n */\n\n resetStats_() {\n this.mediaBytesTransferred = 0;\n this.mediaRequests = 0;\n this.mediaRequestsAborted = 0;\n this.mediaRequestsTimedout = 0;\n this.mediaRequestsErrored = 0;\n this.mediaTransferDuration = 0;\n this.mediaSecondsLoaded = 0;\n this.mediaAppends = 0;\n }\n /**\n * dispose of the SegmentLoader and reset to the default state\n */\n\n dispose() {\n this.trigger('dispose');\n this.state = 'DISPOSED';\n this.pause();\n this.abort_();\n if (this.transmuxer_) {\n this.transmuxer_.terminate();\n }\n this.resetStats_();\n if (this.checkBufferTimeout_) {\n window$1.clearTimeout(this.checkBufferTimeout_);\n }\n if (this.syncController_ && this.triggerSyncInfoUpdate_) {\n this.syncController_.off('syncinfoupdate', this.triggerSyncInfoUpdate_);\n }\n this.off();\n }\n setAudio(enable) {\n this.audioDisabled_ = !enable;\n if (enable) {\n this.appendInitSegment_.audio = true;\n } else {\n // remove current track audio if it gets disabled\n this.sourceUpdater_.removeAudio(0, this.duration_());\n }\n }\n /**\n * abort anything that is currently doing on with the SegmentLoader\n * and reset to a default state\n */\n\n abort() {\n if (this.state !== 'WAITING') {\n if (this.pendingSegment_) {\n this.pendingSegment_ = null;\n }\n return;\n }\n this.abort_(); // We aborted the requests we were waiting on, so reset the loader's state to READY\n // since we are no longer \"waiting\" on any requests. XHR callback is not always run\n // when the request is aborted. This will prevent the loader from being stuck in the\n // WAITING state indefinitely.\n\n this.state = 'READY'; // don't wait for buffer check timeouts to begin fetching the\n // next segment\n\n if (!this.paused()) {\n this.monitorBuffer_();\n }\n }\n /**\n * abort all pending xhr requests and null any pending segements\n *\n * @private\n */\n\n abort_() {\n if (this.pendingSegment_ && this.pendingSegment_.abortRequests) {\n this.pendingSegment_.abortRequests();\n } // clear out the segment being processed\n\n this.pendingSegment_ = null;\n this.callQueue_ = [];\n this.loadQueue_ = [];\n this.metadataQueue_.id3 = [];\n this.metadataQueue_.caption = [];\n this.timelineChangeController_.clearPendingTimelineChange(this.loaderType_);\n this.waitingOnRemove_ = false;\n window$1.clearTimeout(this.quotaExceededErrorRetryTimeout_);\n this.quotaExceededErrorRetryTimeout_ = null;\n }\n checkForAbort_(requestId) {\n // If the state is APPENDING, then aborts will not modify the state, meaning the first\n // callback that happens should reset the state to READY so that loading can continue.\n if (this.state === 'APPENDING' && !this.pendingSegment_) {\n this.state = 'READY';\n return true;\n }\n if (!this.pendingSegment_ || this.pendingSegment_.requestId !== requestId) {\n return true;\n }\n return false;\n }\n /**\n * set an error on the segment loader and null out any pending segements\n *\n * @param {Error} error the error to set on the SegmentLoader\n * @return {Error} the error that was set or that is currently set\n */\n\n error(error) {\n if (typeof error !== 'undefined') {\n this.logger_('error occurred:', error);\n this.error_ = error;\n }\n this.pendingSegment_ = null;\n return this.error_;\n }\n endOfStream() {\n this.ended_ = true;\n if (this.transmuxer_) {\n // need to clear out any cached data to prepare for the new segment\n segmentTransmuxer.reset(this.transmuxer_);\n }\n this.gopBuffer_.length = 0;\n this.pause();\n this.trigger('ended');\n }\n /**\n * Indicates which time ranges are buffered\n *\n * @return {TimeRange}\n * TimeRange object representing the current buffered ranges\n */\n\n buffered_() {\n const trackInfo = this.getMediaInfo_();\n if (!this.sourceUpdater_ || !trackInfo) {\n return createTimeRanges();\n }\n if (this.loaderType_ === 'main') {\n const {\n hasAudio,\n hasVideo,\n isMuxed\n } = trackInfo;\n if (hasVideo && hasAudio && !this.audioDisabled_ && !isMuxed) {\n return this.sourceUpdater_.buffered();\n }\n if (hasVideo) {\n return this.sourceUpdater_.videoBuffered();\n }\n } // One case that can be ignored for now is audio only with alt audio,\n // as we don't yet have proper support for that.\n\n return this.sourceUpdater_.audioBuffered();\n }\n /**\n * Gets and sets init segment for the provided map\n *\n * @param {Object} map\n * The map object representing the init segment to get or set\n * @param {boolean=} set\n * If true, the init segment for the provided map should be saved\n * @return {Object}\n * map object for desired init segment\n */\n\n initSegmentForMap(map, set = false) {\n if (!map) {\n return null;\n }\n const id = initSegmentId(map);\n let storedMap = this.initSegments_[id];\n if (set && !storedMap && map.bytes) {\n this.initSegments_[id] = storedMap = {\n resolvedUri: map.resolvedUri,\n byterange: map.byterange,\n bytes: map.bytes,\n tracks: map.tracks,\n timescales: map.timescales\n };\n }\n return storedMap || map;\n }\n /**\n * Gets and sets key for the provided key\n *\n * @param {Object} key\n * The key object representing the key to get or set\n * @param {boolean=} set\n * If true, the key for the provided key should be saved\n * @return {Object}\n * Key object for desired key\n */\n\n segmentKey(key, set = false) {\n if (!key) {\n return null;\n }\n const id = segmentKeyId(key);\n let storedKey = this.keyCache_[id]; // TODO: We should use the HTTP Expires header to invalidate our cache per\n // https://tools.ietf.org/html/draft-pantos-http-live-streaming-23#section-6.2.3\n\n if (this.cacheEncryptionKeys_ && set && !storedKey && key.bytes) {\n this.keyCache_[id] = storedKey = {\n resolvedUri: key.resolvedUri,\n bytes: key.bytes\n };\n }\n const result = {\n resolvedUri: (storedKey || key).resolvedUri\n };\n if (storedKey) {\n result.bytes = storedKey.bytes;\n }\n return result;\n }\n /**\n * Returns true if all configuration required for loading is present, otherwise false.\n *\n * @return {boolean} True if the all configuration is ready for loading\n * @private\n */\n\n couldBeginLoading_() {\n return this.playlist_ && !this.paused();\n }\n /**\n * load a playlist and start to fill the buffer\n */\n\n load() {\n // un-pause\n this.monitorBuffer_(); // if we don't have a playlist yet, keep waiting for one to be\n // specified\n\n if (!this.playlist_) {\n return;\n } // if all the configuration is ready, initialize and begin loading\n\n if (this.state === 'INIT' && this.couldBeginLoading_()) {\n return this.init_();\n } // if we're in the middle of processing a segment already, don't\n // kick off an additional segment request\n\n if (!this.couldBeginLoading_() || this.state !== 'READY' && this.state !== 'INIT') {\n return;\n }\n this.state = 'READY';\n }\n /**\n * Once all the starting parameters have been specified, begin\n * operation. This method should only be invoked from the INIT\n * state.\n *\n * @private\n */\n\n init_() {\n this.state = 'READY'; // if this is the audio segment loader, and it hasn't been inited before, then any old\n // audio data from the muxed content should be removed\n\n this.resetEverything();\n return this.monitorBuffer_();\n }\n /**\n * set a playlist on the segment loader\n *\n * @param {PlaylistLoader} media the playlist to set on the segment loader\n */\n\n playlist(newPlaylist, options = {}) {\n if (!newPlaylist) {\n return;\n }\n const oldPlaylist = this.playlist_;\n const segmentInfo = this.pendingSegment_;\n this.playlist_ = newPlaylist;\n this.xhrOptions_ = options; // when we haven't started playing yet, the start of a live playlist\n // is always our zero-time so force a sync update each time the playlist\n // is refreshed from the server\n //\n // Use the INIT state to determine if playback has started, as the playlist sync info\n // should be fixed once requests begin (as sync points are generated based on sync\n // info), but not before then.\n\n if (this.state === 'INIT') {\n newPlaylist.syncInfo = {\n mediaSequence: newPlaylist.mediaSequence,\n time: 0\n }; // Setting the date time mapping means mapping the program date time (if available)\n // to time 0 on the player's timeline. The playlist's syncInfo serves a similar\n // purpose, mapping the initial mediaSequence to time zero. Since the syncInfo can\n // be updated as the playlist is refreshed before the loader starts loading, the\n // program date time mapping needs to be updated as well.\n //\n // This mapping is only done for the main loader because a program date time should\n // map equivalently between playlists.\n\n if (this.loaderType_ === 'main') {\n this.syncController_.setDateTimeMappingForStart(newPlaylist);\n }\n }\n let oldId = null;\n if (oldPlaylist) {\n if (oldPlaylist.id) {\n oldId = oldPlaylist.id;\n } else if (oldPlaylist.uri) {\n oldId = oldPlaylist.uri;\n }\n }\n this.logger_(`playlist update [${oldId} => ${newPlaylist.id || newPlaylist.uri}]`);\n if (this.mediaSequenceSync_) {\n this.mediaSequenceSync_.update(newPlaylist, this.currentTime_());\n this.logger_(`Playlist update:\ncurrentTime: ${this.currentTime_()}\nbufferedEnd: ${lastBufferedEnd(this.buffered_())}\n`, this.mediaSequenceSync_.diagnostics);\n } // in VOD, this is always a rendition switch (or we updated our syncInfo above)\n // in LIVE, we always want to update with new playlists (including refreshes)\n\n this.trigger('syncinfoupdate'); // if we were unpaused but waiting for a playlist, start\n // buffering now\n\n if (this.state === 'INIT' && this.couldBeginLoading_()) {\n return this.init_();\n }\n if (!oldPlaylist || oldPlaylist.uri !== newPlaylist.uri) {\n if (this.mediaIndex !== null) {\n // we must reset/resync the segment loader when we switch renditions and\n // the segment loader is already synced to the previous rendition\n // We only want to reset the loader here for LLHLS playback, as resetLoader sets fetchAtBuffer_\n // to false, resulting in fetching segments at currentTime and causing repeated\n // same-segment requests on playlist change. This erroneously drives up the playback watcher\n // stalled segment count, as re-requesting segments at the currentTime or browser cached segments\n // will not change the buffer.\n // Reference for LLHLS fixes: https://github.com/videojs/http-streaming/pull/1201\n const isLLHLS = !newPlaylist.endList && typeof newPlaylist.partTargetDuration === 'number';\n if (isLLHLS) {\n this.resetLoader();\n } else {\n this.resyncLoader();\n }\n }\n this.currentMediaInfo_ = void 0;\n this.trigger('playlistupdate'); // the rest of this function depends on `oldPlaylist` being defined\n\n return;\n } // we reloaded the same playlist so we are in a live scenario\n // and we will likely need to adjust the mediaIndex\n\n const mediaSequenceDiff = newPlaylist.mediaSequence - oldPlaylist.mediaSequence;\n this.logger_(`live window shift [${mediaSequenceDiff}]`); // update the mediaIndex on the SegmentLoader\n // this is important because we can abort a request and this value must be\n // equal to the last appended mediaIndex\n\n if (this.mediaIndex !== null) {\n this.mediaIndex -= mediaSequenceDiff; // this can happen if we are going to load the first segment, but get a playlist\n // update during that. mediaIndex would go from 0 to -1 if mediaSequence in the\n // new playlist was incremented by 1.\n\n if (this.mediaIndex < 0) {\n this.mediaIndex = null;\n this.partIndex = null;\n } else {\n const segment = this.playlist_.segments[this.mediaIndex]; // partIndex should remain the same for the same segment\n // unless parts fell off of the playlist for this segment.\n // In that case we need to reset partIndex and resync\n\n if (this.partIndex && (!segment.parts || !segment.parts.length || !segment.parts[this.partIndex])) {\n const mediaIndex = this.mediaIndex;\n this.logger_(`currently processing part (index ${this.partIndex}) no longer exists.`);\n this.resetLoader(); // We want to throw away the partIndex and the data associated with it,\n // as the part was dropped from our current playlists segment.\n // The mediaIndex will still be valid so keep that around.\n\n this.mediaIndex = mediaIndex;\n }\n }\n } // update the mediaIndex on the SegmentInfo object\n // this is important because we will update this.mediaIndex with this value\n // in `handleAppendsDone_` after the segment has been successfully appended\n\n if (segmentInfo) {\n segmentInfo.mediaIndex -= mediaSequenceDiff;\n if (segmentInfo.mediaIndex < 0) {\n segmentInfo.mediaIndex = null;\n segmentInfo.partIndex = null;\n } else {\n // we need to update the referenced segment so that timing information is\n // saved for the new playlist's segment, however, if the segment fell off the\n // playlist, we can leave the old reference and just lose the timing info\n if (segmentInfo.mediaIndex >= 0) {\n segmentInfo.segment = newPlaylist.segments[segmentInfo.mediaIndex];\n }\n if (segmentInfo.partIndex >= 0 && segmentInfo.segment.parts) {\n segmentInfo.part = segmentInfo.segment.parts[segmentInfo.partIndex];\n }\n }\n }\n this.syncController_.saveExpiredSegmentInfo(oldPlaylist, newPlaylist);\n }\n /**\n * Prevent the loader from fetching additional segments. If there\n * is a segment request outstanding, it will finish processing\n * before the loader halts. A segment loader can be unpaused by\n * calling load().\n */\n\n pause() {\n if (this.checkBufferTimeout_) {\n window$1.clearTimeout(this.checkBufferTimeout_);\n this.checkBufferTimeout_ = null;\n }\n }\n /**\n * Returns whether the segment loader is fetching additional\n * segments when given the opportunity. This property can be\n * modified through calls to pause() and load().\n */\n\n paused() {\n return this.checkBufferTimeout_ === null;\n }\n /**\n * Delete all the buffered data and reset the SegmentLoader\n *\n * @param {Function} [done] an optional callback to be executed when the remove\n * operation is complete\n */\n\n resetEverything(done) {\n this.ended_ = false;\n this.activeInitSegmentId_ = null;\n this.appendInitSegment_ = {\n audio: true,\n video: true\n };\n this.resetLoader(); // remove from 0, the earliest point, to Infinity, to signify removal of everything.\n // VTT Segment Loader doesn't need to do anything but in the regular SegmentLoader,\n // we then clamp the value to duration if necessary.\n\n this.remove(0, Infinity, done); // clears fmp4 captions\n\n if (this.transmuxer_) {\n this.transmuxer_.postMessage({\n action: 'clearAllMp4Captions'\n }); // reset the cache in the transmuxer\n\n this.transmuxer_.postMessage({\n action: 'reset'\n });\n }\n }\n /**\n * Force the SegmentLoader to resync and start loading around the currentTime instead\n * of starting at the end of the buffer\n *\n * Useful for fast quality changes\n */\n\n resetLoader() {\n this.fetchAtBuffer_ = false;\n if (this.mediaSequenceSync_) {\n this.mediaSequenceSync_.resetAppendedStatus();\n }\n this.resyncLoader();\n }\n /**\n * Force the SegmentLoader to restart synchronization and make a conservative guess\n * before returning to the simple walk-forward method\n */\n\n resyncLoader() {\n if (this.transmuxer_) {\n // need to clear out any cached data to prepare for the new segment\n segmentTransmuxer.reset(this.transmuxer_);\n }\n this.mediaIndex = null;\n this.partIndex = null;\n this.syncPoint_ = null;\n this.isPendingTimestampOffset_ = false; // this is mainly to sync timing-info when switching between renditions with and without timestamp-rollover,\n // so we don't want it for DASH or fragmented mp4 segments.\n\n const isFmp4 = this.currentMediaInfo_ && this.currentMediaInfo_.isFmp4;\n const isHlsTs = this.sourceType_ === 'hls' && !isFmp4;\n if (isHlsTs) {\n this.shouldForceTimestampOffsetAfterResync_ = true;\n }\n this.callQueue_ = [];\n this.loadQueue_ = [];\n this.metadataQueue_.id3 = [];\n this.metadataQueue_.caption = [];\n this.abort();\n if (this.transmuxer_) {\n this.transmuxer_.postMessage({\n action: 'clearParsedMp4Captions'\n });\n }\n }\n /**\n * Remove any data in the source buffer between start and end times\n *\n * @param {number} start - the start time of the region to remove from the buffer\n * @param {number} end - the end time of the region to remove from the buffer\n * @param {Function} [done] - an optional callback to be executed when the remove\n * @param {boolean} force - force all remove operations to happen\n * operation is complete\n */\n\n remove(start, end, done = () => {}, force = false) {\n // clamp end to duration if we need to remove everything.\n // This is due to a browser bug that causes issues if we remove to Infinity.\n // videojs/videojs-contrib-hls#1225\n if (end === Infinity) {\n end = this.duration_();\n } // skip removes that would throw an error\n // commonly happens during a rendition switch at the start of a video\n // from start 0 to end 0\n\n if (end <= start) {\n this.logger_('skipping remove because end ${end} is <= start ${start}');\n return;\n }\n if (!this.sourceUpdater_ || !this.getMediaInfo_()) {\n this.logger_('skipping remove because no source updater or starting media info'); // nothing to remove if we haven't processed any media\n\n return;\n } // set it to one to complete this function's removes\n\n let removesRemaining = 1;\n const removeFinished = () => {\n removesRemaining--;\n if (removesRemaining === 0) {\n done();\n }\n };\n if (force || !this.audioDisabled_) {\n removesRemaining++;\n this.sourceUpdater_.removeAudio(start, end, removeFinished);\n } // While it would be better to only remove video if the main loader has video, this\n // should be safe with audio only as removeVideo will call back even if there's no\n // video buffer.\n //\n // In theory we can check to see if there's video before calling the remove, but in\n // the event that we're switching between renditions and from video to audio only\n // (when we add support for that), we may need to clear the video contents despite\n // what the new media will contain.\n\n if (force || this.loaderType_ === 'main') {\n this.gopBuffer_ = removeGopBuffer(this.gopBuffer_, start, end, this.timeMapping_);\n removesRemaining++;\n this.sourceUpdater_.removeVideo(start, end, removeFinished);\n } // remove any captions and ID3 tags\n\n for (const track in this.inbandTextTracks_) {\n removeCuesFromTrack(start, end, this.inbandTextTracks_[track]);\n }\n removeCuesFromTrack(start, end, this.segmentMetadataTrack_); // finished this function's removes\n\n removeFinished();\n }\n /**\n * (re-)schedule monitorBufferTick_ to run as soon as possible\n *\n * @private\n */\n\n monitorBuffer_() {\n if (this.checkBufferTimeout_) {\n window$1.clearTimeout(this.checkBufferTimeout_);\n }\n this.checkBufferTimeout_ = window$1.setTimeout(this.monitorBufferTick_.bind(this), 1);\n }\n /**\n * As long as the SegmentLoader is in the READY state, periodically\n * invoke fillBuffer_().\n *\n * @private\n */\n\n monitorBufferTick_() {\n if (this.state === 'READY') {\n this.fillBuffer_();\n }\n if (this.checkBufferTimeout_) {\n window$1.clearTimeout(this.checkBufferTimeout_);\n }\n this.checkBufferTimeout_ = window$1.setTimeout(this.monitorBufferTick_.bind(this), CHECK_BUFFER_DELAY);\n }\n /**\n * fill the buffer with segements unless the sourceBuffers are\n * currently updating\n *\n * Note: this function should only ever be called by monitorBuffer_\n * and never directly\n *\n * @private\n */\n\n fillBuffer_() {\n // TODO since the source buffer maintains a queue, and we shouldn't call this function\n // except when we're ready for the next segment, this check can most likely be removed\n if (this.sourceUpdater_.updating()) {\n return;\n } // see if we need to begin loading immediately\n\n const segmentInfo = this.chooseNextRequest_();\n if (!segmentInfo) {\n return;\n }\n const metadata = {\n segmentInfo: segmentInfoPayload({\n type: this.loaderType_,\n segment: segmentInfo\n })\n };\n this.trigger({\n type: 'segmentselected',\n metadata\n });\n if (typeof segmentInfo.timestampOffset === 'number') {\n this.isPendingTimestampOffset_ = false;\n this.timelineChangeController_.pendingTimelineChange({\n type: this.loaderType_,\n from: this.currentTimeline_,\n to: segmentInfo.timeline\n });\n }\n this.loadSegment_(segmentInfo);\n }\n /**\n * Determines if we should call endOfStream on the media source based\n * on the state of the buffer or if appened segment was the final\n * segment in the playlist.\n *\n * @param {number} [mediaIndex] the media index of segment we last appended\n * @param {Object} [playlist] a media playlist object\n * @return {boolean} do we need to call endOfStream on the MediaSource\n */\n\n isEndOfStream_(mediaIndex = this.mediaIndex, playlist = this.playlist_, partIndex = this.partIndex) {\n if (!playlist || !this.mediaSource_) {\n return false;\n }\n const segment = typeof mediaIndex === 'number' && playlist.segments[mediaIndex]; // mediaIndex is zero based but length is 1 based\n\n const appendedLastSegment = mediaIndex + 1 === playlist.segments.length; // true if there are no parts, or this is the last part.\n\n const appendedLastPart = !segment || !segment.parts || partIndex + 1 === segment.parts.length; // if we've buffered to the end of the video, we need to call endOfStream\n // so that MediaSources can trigger the `ended` event when it runs out of\n // buffered data instead of waiting for me\n\n return playlist.endList && this.mediaSource_.readyState === 'open' && appendedLastSegment && appendedLastPart;\n }\n /**\n * Determines what request should be made given current segment loader state.\n *\n * @return {Object} a request object that describes the segment/part to load\n */\n\n chooseNextRequest_() {\n const buffered = this.buffered_();\n const bufferedEnd = lastBufferedEnd(buffered) || 0;\n const bufferedTime = timeAheadOf(buffered, this.currentTime_());\n const preloaded = !this.hasPlayed_() && bufferedTime >= 1;\n const haveEnoughBuffer = bufferedTime >= this.goalBufferLength_();\n const segments = this.playlist_.segments; // return no segment if:\n // 1. we don't have segments\n // 2. The video has not yet played and we already downloaded a segment\n // 3. we already have enough buffered time\n\n if (!segments.length || preloaded || haveEnoughBuffer) {\n return null;\n }\n this.syncPoint_ = this.syncPoint_ || this.syncController_.getSyncPoint(this.playlist_, this.duration_(), this.currentTimeline_, this.currentTime_(), this.loaderType_);\n const next = {\n partIndex: null,\n mediaIndex: null,\n startOfSegment: null,\n playlist: this.playlist_,\n isSyncRequest: Boolean(!this.syncPoint_)\n };\n if (next.isSyncRequest) {\n next.mediaIndex = getSyncSegmentCandidate(this.currentTimeline_, segments, bufferedEnd);\n this.logger_(`choose next request. Can not find sync point. Fallback to media Index: ${next.mediaIndex}`);\n } else if (this.mediaIndex !== null) {\n const segment = segments[this.mediaIndex];\n const partIndex = typeof this.partIndex === 'number' ? this.partIndex : -1;\n next.startOfSegment = segment.end ? segment.end : bufferedEnd;\n if (segment.parts && segment.parts[partIndex + 1]) {\n next.mediaIndex = this.mediaIndex;\n next.partIndex = partIndex + 1;\n } else {\n next.mediaIndex = this.mediaIndex + 1;\n }\n } else {\n let segmentIndex;\n let partIndex;\n let startTime;\n const targetTime = this.fetchAtBuffer_ ? bufferedEnd : this.currentTime_();\n if (this.mediaSequenceSync_) {\n this.logger_(`chooseNextRequest_ request after Quality Switch:\nFor TargetTime: ${targetTime}.\nCurrentTime: ${this.currentTime_()}\nBufferedEnd: ${bufferedEnd}\nFetch At Buffer: ${this.fetchAtBuffer_}\n`, this.mediaSequenceSync_.diagnostics);\n }\n if (this.mediaSequenceSync_ && this.mediaSequenceSync_.isReliable) {\n const syncInfo = this.getSyncInfoFromMediaSequenceSync_(targetTime);\n if (!syncInfo) {\n const message = 'No sync info found while using media sequence sync';\n this.error({\n message,\n metadata: {\n errorType: videojs.Error.StreamingFailedToSelectNextSegment,\n error: new Error(message)\n }\n });\n this.logger_('chooseNextRequest_ - no sync info found using media sequence sync'); // no match\n\n return null;\n }\n this.logger_(`chooseNextRequest_ mediaSequence syncInfo (${syncInfo.start} --> ${syncInfo.end})`);\n segmentIndex = syncInfo.segmentIndex;\n partIndex = syncInfo.partIndex;\n startTime = syncInfo.start;\n } else {\n this.logger_('chooseNextRequest_ - fallback to a regular segment selection algorithm, based on a syncPoint.'); // fallback\n\n const mediaInfoForTime = Playlist.getMediaInfoForTime({\n exactManifestTimings: this.exactManifestTimings,\n playlist: this.playlist_,\n currentTime: targetTime,\n startingPartIndex: this.syncPoint_.partIndex,\n startingSegmentIndex: this.syncPoint_.segmentIndex,\n startTime: this.syncPoint_.time\n });\n segmentIndex = mediaInfoForTime.segmentIndex;\n partIndex = mediaInfoForTime.partIndex;\n startTime = mediaInfoForTime.startTime;\n }\n next.getMediaInfoForTime = this.fetchAtBuffer_ ? `bufferedEnd ${targetTime}` : `currentTime ${targetTime}`;\n next.mediaIndex = segmentIndex;\n next.startOfSegment = startTime;\n next.partIndex = partIndex;\n this.logger_(`choose next request. Playlist switched and we have a sync point. Media Index: ${next.mediaIndex} `);\n }\n const nextSegment = segments[next.mediaIndex];\n let nextPart = nextSegment && typeof next.partIndex === 'number' && nextSegment.parts && nextSegment.parts[next.partIndex]; // if the next segment index is invalid or\n // the next partIndex is invalid do not choose a next segment.\n\n if (!nextSegment || typeof next.partIndex === 'number' && !nextPart) {\n return null;\n } // if the next segment has parts, and we don't have a partIndex.\n // Set partIndex to 0\n\n if (typeof next.partIndex !== 'number' && nextSegment.parts) {\n next.partIndex = 0;\n nextPart = nextSegment.parts[0];\n } // independentSegments applies to every segment in a playlist. If independentSegments appears in a main playlist,\n // it applies to each segment in each media playlist.\n // https://datatracker.ietf.org/doc/html/draft-pantos-http-live-streaming-23#section-4.3.5.1\n\n const hasIndependentSegments = this.vhs_.playlists && this.vhs_.playlists.main && this.vhs_.playlists.main.independentSegments || this.playlist_.independentSegments; // if we have no buffered data then we need to make sure\n // that the next part we append is \"independent\" if possible.\n // So we check if the previous part is independent, and request\n // it if it is.\n\n if (!bufferedTime && nextPart && !hasIndependentSegments && !nextPart.independent) {\n if (next.partIndex === 0) {\n const lastSegment = segments[next.mediaIndex - 1];\n const lastSegmentLastPart = lastSegment.parts && lastSegment.parts.length && lastSegment.parts[lastSegment.parts.length - 1];\n if (lastSegmentLastPart && lastSegmentLastPart.independent) {\n next.mediaIndex -= 1;\n next.partIndex = lastSegment.parts.length - 1;\n next.independent = 'previous segment';\n }\n } else if (nextSegment.parts[next.partIndex - 1].independent) {\n next.partIndex -= 1;\n next.independent = 'previous part';\n }\n }\n const ended = this.mediaSource_ && this.mediaSource_.readyState === 'ended'; // do not choose a next segment if all of the following:\n // 1. this is the last segment in the playlist\n // 2. end of stream has been called on the media source already\n // 3. the player is not seeking\n\n if (next.mediaIndex >= segments.length - 1 && ended && !this.seeking_()) {\n return null;\n }\n if (this.shouldForceTimestampOffsetAfterResync_) {\n this.shouldForceTimestampOffsetAfterResync_ = false;\n next.forceTimestampOffset = true;\n this.logger_('choose next request. Force timestamp offset after loader resync');\n }\n return this.generateSegmentInfo_(next);\n }\n getSyncInfoFromMediaSequenceSync_(targetTime) {\n if (!this.mediaSequenceSync_) {\n return null;\n } // we should pull the target time to the least available time if we drop out of sync for any reason\n\n const finalTargetTime = Math.max(targetTime, this.mediaSequenceSync_.start);\n if (targetTime !== finalTargetTime) {\n this.logger_(`getSyncInfoFromMediaSequenceSync_. Pulled target time from ${targetTime} to ${finalTargetTime}`);\n }\n const mediaSequenceSyncInfo = this.mediaSequenceSync_.getSyncInfoForTime(finalTargetTime);\n if (!mediaSequenceSyncInfo) {\n // no match at all\n return null;\n }\n if (!mediaSequenceSyncInfo.isAppended) {\n // has a perfect match\n return mediaSequenceSyncInfo;\n } // has match, but segment was already appended.\n // attempt to auto-advance to the nearest next segment:\n\n const nextMediaSequenceSyncInfo = this.mediaSequenceSync_.getSyncInfoForTime(mediaSequenceSyncInfo.end);\n if (!nextMediaSequenceSyncInfo) {\n // no match at all\n return null;\n }\n if (nextMediaSequenceSyncInfo.isAppended) {\n this.logger_('getSyncInfoFromMediaSequenceSync_: We encounter unexpected scenario where next media sequence sync info is also appended!');\n } // got match with the nearest next segment\n\n return nextMediaSequenceSyncInfo;\n }\n generateSegmentInfo_(options) {\n const {\n independent,\n playlist,\n mediaIndex,\n startOfSegment,\n isSyncRequest,\n partIndex,\n forceTimestampOffset,\n getMediaInfoForTime\n } = options;\n const segment = playlist.segments[mediaIndex];\n const part = typeof partIndex === 'number' && segment.parts[partIndex];\n const segmentInfo = {\n requestId: 'segment-loader-' + Math.random(),\n // resolve the segment URL relative to the playlist\n uri: part && part.resolvedUri || segment.resolvedUri,\n // the segment's mediaIndex at the time it was requested\n mediaIndex,\n partIndex: part ? partIndex : null,\n // whether or not to update the SegmentLoader's state with this\n // segment's mediaIndex\n isSyncRequest,\n startOfSegment,\n // the segment's playlist\n playlist,\n // unencrypted bytes of the segment\n bytes: null,\n // when a key is defined for this segment, the encrypted bytes\n encryptedBytes: null,\n // The target timestampOffset for this segment when we append it\n // to the source buffer\n timestampOffset: null,\n // The timeline that the segment is in\n timeline: segment.timeline,\n // The expected duration of the segment in seconds\n duration: part && part.duration || segment.duration,\n // retain the segment in case the playlist updates while doing an async process\n segment,\n part,\n byteLength: 0,\n transmuxer: this.transmuxer_,\n // type of getMediaInfoForTime that was used to get this segment\n getMediaInfoForTime,\n independent\n };\n const overrideCheck = typeof forceTimestampOffset !== 'undefined' ? forceTimestampOffset : this.isPendingTimestampOffset_;\n segmentInfo.timestampOffset = this.timestampOffsetForSegment_({\n segmentTimeline: segment.timeline,\n currentTimeline: this.currentTimeline_,\n startOfSegment,\n buffered: this.buffered_(),\n overrideCheck\n });\n const audioBufferedEnd = lastBufferedEnd(this.sourceUpdater_.audioBuffered());\n if (typeof audioBufferedEnd === 'number') {\n // since the transmuxer is using the actual timing values, but the buffer is\n // adjusted by the timestamp offset, we must adjust the value here\n segmentInfo.audioAppendStart = audioBufferedEnd - this.sourceUpdater_.audioTimestampOffset();\n }\n if (this.sourceUpdater_.videoBuffered().length) {\n segmentInfo.gopsToAlignWith = gopsSafeToAlignWith(this.gopBuffer_,\n // since the transmuxer is using the actual timing values, but the time is\n // adjusted by the timestmap offset, we must adjust the value here\n this.currentTime_() - this.sourceUpdater_.videoTimestampOffset(), this.timeMapping_);\n }\n return segmentInfo;\n } // get the timestampoffset for a segment,\n // added so that vtt segment loader can override and prevent\n // adding timestamp offsets.\n\n timestampOffsetForSegment_(options) {\n return timestampOffsetForSegment(options);\n }\n /**\n * Determines if the network has enough bandwidth to complete the current segment\n * request in a timely manner. If not, the request will be aborted early and bandwidth\n * updated to trigger a playlist switch.\n *\n * @param {Object} stats\n * Object containing stats about the request timing and size\n * @private\n */\n\n earlyAbortWhenNeeded_(stats) {\n if (this.vhs_.tech_.paused() ||\n // Don't abort if the current playlist is on the lowestEnabledRendition\n // TODO: Replace using timeout with a boolean indicating whether this playlist is\n // the lowestEnabledRendition.\n !this.xhrOptions_.timeout ||\n // Don't abort if we have no bandwidth information to estimate segment sizes\n !this.playlist_.attributes.BANDWIDTH) {\n return;\n } // Wait at least 1 second since the first byte of data has been received before\n // using the calculated bandwidth from the progress event to allow the bitrate\n // to stabilize\n\n if (Date.now() - (stats.firstBytesReceivedAt || Date.now()) < 1000) {\n return;\n }\n const currentTime = this.currentTime_();\n const measuredBandwidth = stats.bandwidth;\n const segmentDuration = this.pendingSegment_.duration;\n const requestTimeRemaining = Playlist.estimateSegmentRequestTime(segmentDuration, measuredBandwidth, this.playlist_, stats.bytesReceived); // Subtract 1 from the timeUntilRebuffer so we still consider an early abort\n // if we are only left with less than 1 second when the request completes.\n // A negative timeUntilRebuffering indicates we are already rebuffering\n\n const timeUntilRebuffer$1 = timeUntilRebuffer(this.buffered_(), currentTime, this.vhs_.tech_.playbackRate()) - 1; // Only consider aborting early if the estimated time to finish the download\n // is larger than the estimated time until the player runs out of forward buffer\n\n if (requestTimeRemaining <= timeUntilRebuffer$1) {\n return;\n }\n const switchCandidate = minRebufferMaxBandwidthSelector({\n main: this.vhs_.playlists.main,\n currentTime,\n bandwidth: measuredBandwidth,\n duration: this.duration_(),\n segmentDuration,\n timeUntilRebuffer: timeUntilRebuffer$1,\n currentTimeline: this.currentTimeline_,\n syncController: this.syncController_\n });\n if (!switchCandidate) {\n return;\n }\n const rebufferingImpact = requestTimeRemaining - timeUntilRebuffer$1;\n const timeSavedBySwitching = rebufferingImpact - switchCandidate.rebufferingImpact;\n let minimumTimeSaving = 0.5; // If we are already rebuffering, increase the amount of variance we add to the\n // potential round trip time of the new request so that we are not too aggressive\n // with switching to a playlist that might save us a fraction of a second.\n\n if (timeUntilRebuffer$1 <= TIME_FUDGE_FACTOR) {\n minimumTimeSaving = 1;\n }\n if (!switchCandidate.playlist || switchCandidate.playlist.uri === this.playlist_.uri || timeSavedBySwitching < minimumTimeSaving) {\n return;\n } // set the bandwidth to that of the desired playlist being sure to scale by\n // BANDWIDTH_VARIANCE and add one so the playlist selector does not exclude it\n // don't trigger a bandwidthupdate as the bandwidth is artifial\n\n this.bandwidth = switchCandidate.playlist.attributes.BANDWIDTH * Config.BANDWIDTH_VARIANCE + 1;\n this.trigger('earlyabort');\n }\n handleAbort_(segmentInfo) {\n this.logger_(`Aborting ${segmentInfoString(segmentInfo)}`);\n this.mediaRequestsAborted += 1;\n }\n /**\n * XHR `progress` event handler\n *\n * @param {Event}\n * The XHR `progress` event\n * @param {Object} simpleSegment\n * A simplified segment object copy\n * @private\n */\n\n handleProgress_(event, simpleSegment) {\n this.earlyAbortWhenNeeded_(simpleSegment.stats);\n if (this.checkForAbort_(simpleSegment.requestId)) {\n return;\n }\n this.trigger('progress');\n }\n handleTrackInfo_(simpleSegment, trackInfo) {\n const {\n hasAudio,\n hasVideo\n } = trackInfo;\n const metadata = {\n segmentInfo: segmentInfoPayload({\n type: this.loaderType_,\n segment: simpleSegment\n }),\n trackInfo: {\n hasAudio,\n hasVideo\n }\n };\n this.trigger({\n type: 'segmenttransmuxingtrackinfoavailable',\n metadata\n });\n this.earlyAbortWhenNeeded_(simpleSegment.stats);\n if (this.checkForAbort_(simpleSegment.requestId)) {\n return;\n }\n if (this.checkForIllegalMediaSwitch(trackInfo)) {\n return;\n }\n trackInfo = trackInfo || {}; // When we have track info, determine what media types this loader is dealing with.\n // Guard against cases where we're not getting track info at all until we are\n // certain that all streams will provide it.\n\n if (!shallowEqual(this.currentMediaInfo_, trackInfo)) {\n this.appendInitSegment_ = {\n audio: true,\n video: true\n };\n this.startingMediaInfo_ = trackInfo;\n this.currentMediaInfo_ = trackInfo;\n this.logger_('trackinfo update', trackInfo);\n this.trigger('trackinfo');\n } // trackinfo may cause an abort if the trackinfo\n // causes a codec change to an unsupported codec.\n\n if (this.checkForAbort_(simpleSegment.requestId)) {\n return;\n } // set trackinfo on the pending segment so that\n // it can append.\n\n this.pendingSegment_.trackInfo = trackInfo; // check if any calls were waiting on the track info\n\n if (this.hasEnoughInfoToAppend_()) {\n this.processCallQueue_();\n } else {\n checkAndFixTimelines(this);\n }\n }\n handleTimingInfo_(simpleSegment, mediaType, timeType, time) {\n this.earlyAbortWhenNeeded_(simpleSegment.stats);\n if (this.checkForAbort_(simpleSegment.requestId)) {\n return;\n }\n const segmentInfo = this.pendingSegment_;\n const timingInfoProperty = timingInfoPropertyForMedia(mediaType);\n segmentInfo[timingInfoProperty] = segmentInfo[timingInfoProperty] || {};\n segmentInfo[timingInfoProperty][timeType] = time;\n this.logger_(`timinginfo: ${mediaType} - ${timeType} - ${time}`); // check if any calls were waiting on the timing info\n\n if (this.hasEnoughInfoToAppend_()) {\n this.processCallQueue_();\n } else {\n checkAndFixTimelines(this);\n }\n }\n handleCaptions_(simpleSegment, captionData) {\n this.earlyAbortWhenNeeded_(simpleSegment.stats);\n if (this.checkForAbort_(simpleSegment.requestId)) {\n return;\n } // This could only happen with fmp4 segments, but\n // should still not happen in general\n\n if (captionData.length === 0) {\n this.logger_('SegmentLoader received no captions from a caption event');\n return;\n }\n const segmentInfo = this.pendingSegment_; // Wait until we have some video data so that caption timing\n // can be adjusted by the timestamp offset\n\n if (!segmentInfo.hasAppendedData_) {\n this.metadataQueue_.caption.push(this.handleCaptions_.bind(this, simpleSegment, captionData));\n return;\n }\n const timestampOffset = this.sourceUpdater_.videoTimestampOffset() === null ? this.sourceUpdater_.audioTimestampOffset() : this.sourceUpdater_.videoTimestampOffset();\n const captionTracks = {}; // get total start/end and captions for each track/stream\n\n captionData.forEach(caption => {\n // caption.stream is actually a track name...\n // set to the existing values in tracks or default values\n captionTracks[caption.stream] = captionTracks[caption.stream] || {\n // Infinity, as any other value will be less than this\n startTime: Infinity,\n captions: [],\n // 0 as an other value will be more than this\n endTime: 0\n };\n const captionTrack = captionTracks[caption.stream];\n captionTrack.startTime = Math.min(captionTrack.startTime, caption.startTime + timestampOffset);\n captionTrack.endTime = Math.max(captionTrack.endTime, caption.endTime + timestampOffset);\n captionTrack.captions.push(caption);\n });\n Object.keys(captionTracks).forEach(trackName => {\n const {\n startTime,\n endTime,\n captions\n } = captionTracks[trackName];\n const inbandTextTracks = this.inbandTextTracks_;\n this.logger_(`adding cues from ${startTime} -> ${endTime} for ${trackName}`);\n createCaptionsTrackIfNotExists(inbandTextTracks, this.vhs_.tech_, trackName); // clear out any cues that start and end at the same time period for the same track.\n // We do this because a rendition change that also changes the timescale for captions\n // will result in captions being re-parsed for certain segments. If we add them again\n // without clearing we will have two of the same captions visible.\n\n removeCuesFromTrack(startTime, endTime, inbandTextTracks[trackName]);\n addCaptionData({\n captionArray: captions,\n inbandTextTracks,\n timestampOffset\n });\n }); // Reset stored captions since we added parsed\n // captions to a text track at this point\n\n if (this.transmuxer_) {\n this.transmuxer_.postMessage({\n action: 'clearParsedMp4Captions'\n });\n }\n }\n handleId3_(simpleSegment, id3Frames, dispatchType) {\n this.earlyAbortWhenNeeded_(simpleSegment.stats);\n if (this.checkForAbort_(simpleSegment.requestId)) {\n return;\n }\n const segmentInfo = this.pendingSegment_; // we need to have appended data in order for the timestamp offset to be set\n\n if (!segmentInfo.hasAppendedData_) {\n this.metadataQueue_.id3.push(this.handleId3_.bind(this, simpleSegment, id3Frames, dispatchType));\n return;\n }\n this.addMetadataToTextTrack(dispatchType, id3Frames, this.duration_());\n }\n processMetadataQueue_() {\n this.metadataQueue_.id3.forEach(fn => fn());\n this.metadataQueue_.caption.forEach(fn => fn());\n this.metadataQueue_.id3 = [];\n this.metadataQueue_.caption = [];\n }\n processCallQueue_() {\n const callQueue = this.callQueue_; // Clear out the queue before the queued functions are run, since some of the\n // functions may check the length of the load queue and default to pushing themselves\n // back onto the queue.\n\n this.callQueue_ = [];\n callQueue.forEach(fun => fun());\n }\n processLoadQueue_() {\n const loadQueue = this.loadQueue_; // Clear out the queue before the queued functions are run, since some of the\n // functions may check the length of the load queue and default to pushing themselves\n // back onto the queue.\n\n this.loadQueue_ = [];\n loadQueue.forEach(fun => fun());\n }\n /**\n * Determines whether the loader has enough info to load the next segment.\n *\n * @return {boolean}\n * Whether or not the loader has enough info to load the next segment\n */\n\n hasEnoughInfoToLoad_() {\n // Since primary timing goes by video, only the audio loader potentially needs to wait\n // to load.\n if (this.loaderType_ !== 'audio') {\n return true;\n }\n const segmentInfo = this.pendingSegment_; // A fill buffer must have already run to establish a pending segment before there's\n // enough info to load.\n\n if (!segmentInfo) {\n return false;\n } // The first segment can and should be loaded immediately so that source buffers are\n // created together (before appending). Source buffer creation uses the presence of\n // audio and video data to determine whether to create audio/video source buffers, and\n // uses processed (transmuxed or parsed) media to determine the types required.\n\n if (!this.getCurrentMediaInfo_()) {\n return true;\n }\n if (\n // Technically, instead of waiting to load a segment on timeline changes, a segment\n // can be requested and downloaded and only wait before it is transmuxed or parsed.\n // But in practice, there are a few reasons why it is better to wait until a loader\n // is ready to append that segment before requesting and downloading:\n //\n // 1. Because audio and main loaders cross discontinuities together, if this loader\n // is waiting for the other to catch up, then instead of requesting another\n // segment and using up more bandwidth, by not yet loading, more bandwidth is\n // allotted to the loader currently behind.\n // 2. media-segment-request doesn't have to have logic to consider whether a segment\n // is ready to be processed or not, isolating the queueing behavior to the loader.\n // 3. The audio loader bases some of its segment properties on timing information\n // provided by the main loader, meaning that, if the logic for waiting on\n // processing was in media-segment-request, then it would also need to know how\n // to re-generate the segment information after the main loader caught up.\n shouldWaitForTimelineChange({\n timelineChangeController: this.timelineChangeController_,\n currentTimeline: this.currentTimeline_,\n segmentTimeline: segmentInfo.timeline,\n loaderType: this.loaderType_,\n audioDisabled: this.audioDisabled_\n })) {\n return false;\n }\n return true;\n }\n getCurrentMediaInfo_(segmentInfo = this.pendingSegment_) {\n return segmentInfo && segmentInfo.trackInfo || this.currentMediaInfo_;\n }\n getMediaInfo_(segmentInfo = this.pendingSegment_) {\n return this.getCurrentMediaInfo_(segmentInfo) || this.startingMediaInfo_;\n }\n getPendingSegmentPlaylist() {\n return this.pendingSegment_ ? this.pendingSegment_.playlist : null;\n }\n hasEnoughInfoToAppend_() {\n if (!this.sourceUpdater_.ready()) {\n return false;\n } // If content needs to be removed or the loader is waiting on an append reattempt,\n // then no additional content should be appended until the prior append is resolved.\n\n if (this.waitingOnRemove_ || this.quotaExceededErrorRetryTimeout_) {\n return false;\n }\n const segmentInfo = this.pendingSegment_;\n const trackInfo = this.getCurrentMediaInfo_(); // no segment to append any data for or\n // we do not have information on this specific\n // segment yet\n\n if (!segmentInfo || !trackInfo) {\n return false;\n }\n const {\n hasAudio,\n hasVideo,\n isMuxed\n } = trackInfo;\n if (hasVideo && !segmentInfo.videoTimingInfo) {\n return false;\n } // muxed content only relies on video timing information for now.\n\n if (hasAudio && !this.audioDisabled_ && !isMuxed && !segmentInfo.audioTimingInfo) {\n return false;\n } // we need to allow an append here even if we're moving to different timelines.\n\n if (shouldWaitForTimelineChange({\n timelineChangeController: this.timelineChangeController_,\n currentTimeline: this.currentTimeline_,\n segmentTimeline: segmentInfo.timeline,\n loaderType: this.loaderType_,\n audioDisabled: this.audioDisabled_\n })) {\n return false;\n }\n return true;\n }\n handleData_(simpleSegment, result) {\n this.earlyAbortWhenNeeded_(simpleSegment.stats);\n if (this.checkForAbort_(simpleSegment.requestId)) {\n return;\n } // If there's anything in the call queue, then this data came later and should be\n // executed after the calls currently queued.\n\n if (this.callQueue_.length || !this.hasEnoughInfoToAppend_()) {\n checkAndFixTimelines(this);\n this.callQueue_.push(this.handleData_.bind(this, simpleSegment, result));\n return;\n }\n const segmentInfo = this.pendingSegment_; // update the time mapping so we can translate from display time to media time\n\n this.setTimeMapping_(segmentInfo.timeline); // for tracking overall stats\n\n this.updateMediaSecondsLoaded_(segmentInfo.part || segmentInfo.segment); // Note that the state isn't changed from loading to appending. This is because abort\n // logic may change behavior depending on the state, and changing state too early may\n // inflate our estimates of bandwidth. In the future this should be re-examined to\n // note more granular states.\n // don't process and append data if the mediaSource is closed\n\n if (this.mediaSource_.readyState === 'closed') {\n return;\n } // if this request included an initialization segment, save that data\n // to the initSegment cache\n\n if (simpleSegment.map) {\n simpleSegment.map = this.initSegmentForMap(simpleSegment.map, true); // move over init segment properties to media request\n\n segmentInfo.segment.map = simpleSegment.map;\n } // if this request included a segment key, save that data in the cache\n\n if (simpleSegment.key) {\n this.segmentKey(simpleSegment.key, true);\n }\n segmentInfo.isFmp4 = simpleSegment.isFmp4;\n segmentInfo.timingInfo = segmentInfo.timingInfo || {};\n if (segmentInfo.isFmp4) {\n this.trigger('fmp4');\n segmentInfo.timingInfo.start = segmentInfo[timingInfoPropertyForMedia(result.type)].start;\n } else {\n const trackInfo = this.getCurrentMediaInfo_();\n const useVideoTimingInfo = this.loaderType_ === 'main' && trackInfo && trackInfo.hasVideo;\n let firstVideoFrameTimeForData;\n if (useVideoTimingInfo) {\n firstVideoFrameTimeForData = segmentInfo.videoTimingInfo.start;\n } // Segment loader knows more about segment timing than the transmuxer (in certain\n // aspects), so make any changes required for a more accurate start time.\n // Don't set the end time yet, as the segment may not be finished processing.\n\n segmentInfo.timingInfo.start = this.trueSegmentStart_({\n currentStart: segmentInfo.timingInfo.start,\n playlist: segmentInfo.playlist,\n mediaIndex: segmentInfo.mediaIndex,\n currentVideoTimestampOffset: this.sourceUpdater_.videoTimestampOffset(),\n useVideoTimingInfo,\n firstVideoFrameTimeForData,\n videoTimingInfo: segmentInfo.videoTimingInfo,\n audioTimingInfo: segmentInfo.audioTimingInfo\n });\n } // Init segments for audio and video only need to be appended in certain cases. Now\n // that data is about to be appended, we can check the final cases to determine\n // whether we should append an init segment.\n\n this.updateAppendInitSegmentStatus(segmentInfo, result.type); // Timestamp offset should be updated once we get new data and have its timing info,\n // as we use the start of the segment to offset the best guess (playlist provided)\n // timestamp offset.\n\n this.updateSourceBufferTimestampOffset_(segmentInfo); // if this is a sync request we need to determine whether it should\n // be appended or not.\n\n if (segmentInfo.isSyncRequest) {\n // first save/update our timing info for this segment.\n // this is what allows us to choose an accurate segment\n // and the main reason we make a sync request.\n this.updateTimingInfoEnd_(segmentInfo);\n this.syncController_.saveSegmentTimingInfo({\n segmentInfo,\n shouldSaveTimelineMapping: this.loaderType_ === 'main'\n });\n const next = this.chooseNextRequest_(); // If the sync request isn't the segment that would be requested next\n // after taking into account its timing info, do not append it.\n\n if (next.mediaIndex !== segmentInfo.mediaIndex || next.partIndex !== segmentInfo.partIndex) {\n this.logger_('sync segment was incorrect, not appending');\n return;\n } // otherwise append it like any other segment as our guess was correct.\n\n this.logger_('sync segment was correct, appending');\n } // Save some state so that in the future anything waiting on first append (and/or\n // timestamp offset(s)) can process immediately. While the extra state isn't optimal,\n // we need some notion of whether the timestamp offset or other relevant information\n // has had a chance to be set.\n\n segmentInfo.hasAppendedData_ = true; // Now that the timestamp offset should be set, we can append any waiting ID3 tags.\n\n this.processMetadataQueue_();\n this.appendData_(segmentInfo, result);\n }\n updateAppendInitSegmentStatus(segmentInfo, type) {\n // alt audio doesn't manage timestamp offset\n if (this.loaderType_ === 'main' && typeof segmentInfo.timestampOffset === 'number' &&\n // in the case that we're handling partial data, we don't want to append an init\n // segment for each chunk\n !segmentInfo.changedTimestampOffset) {\n // if the timestamp offset changed, the timeline may have changed, so we have to re-\n // append init segments\n this.appendInitSegment_ = {\n audio: true,\n video: true\n };\n }\n if (this.playlistOfLastInitSegment_[type] !== segmentInfo.playlist) {\n // make sure we append init segment on playlist changes, in case the media config\n // changed\n this.appendInitSegment_[type] = true;\n }\n }\n getInitSegmentAndUpdateState_({\n type,\n initSegment,\n map,\n playlist\n }) {\n // \"The EXT-X-MAP tag specifies how to obtain the Media Initialization Section\n // (Section 3) required to parse the applicable Media Segments. It applies to every\n // Media Segment that appears after it in the Playlist until the next EXT-X-MAP tag\n // or until the end of the playlist.\"\n // https://tools.ietf.org/html/draft-pantos-http-live-streaming-23#section-4.3.2.5\n if (map) {\n const id = initSegmentId(map);\n if (this.activeInitSegmentId_ === id) {\n // don't need to re-append the init segment if the ID matches\n return null;\n } // a map-specified init segment takes priority over any transmuxed (or otherwise\n // obtained) init segment\n //\n // this also caches the init segment for later use\n\n initSegment = this.initSegmentForMap(map, true).bytes;\n this.activeInitSegmentId_ = id;\n } // We used to always prepend init segments for video, however, that shouldn't be\n // necessary. Instead, we should only append on changes, similar to what we've always\n // done for audio. This is more important (though may not be that important) for\n // frame-by-frame appending for LHLS, simply because of the increased quantity of\n // appends.\n\n if (initSegment && this.appendInitSegment_[type]) {\n // Make sure we track the playlist that we last used for the init segment, so that\n // we can re-append the init segment in the event that we get data from a new\n // playlist. Discontinuities and track changes are handled in other sections.\n this.playlistOfLastInitSegment_[type] = playlist; // Disable future init segment appends for this type. Until a change is necessary.\n\n this.appendInitSegment_[type] = false; // we need to clear out the fmp4 active init segment id, since\n // we are appending the muxer init segment\n\n this.activeInitSegmentId_ = null;\n return initSegment;\n }\n return null;\n }\n handleQuotaExceededError_({\n segmentInfo,\n type,\n bytes\n }, error) {\n const audioBuffered = this.sourceUpdater_.audioBuffered();\n const videoBuffered = this.sourceUpdater_.videoBuffered(); // For now we're ignoring any notion of gaps in the buffer, but they, in theory,\n // should be cleared out during the buffer removals. However, log in case it helps\n // debug.\n\n if (audioBuffered.length > 1) {\n this.logger_('On QUOTA_EXCEEDED_ERR, found gaps in the audio buffer: ' + timeRangesToArray(audioBuffered).join(', '));\n }\n if (videoBuffered.length > 1) {\n this.logger_('On QUOTA_EXCEEDED_ERR, found gaps in the video buffer: ' + timeRangesToArray(videoBuffered).join(', '));\n }\n const audioBufferStart = audioBuffered.length ? audioBuffered.start(0) : 0;\n const audioBufferEnd = audioBuffered.length ? audioBuffered.end(audioBuffered.length - 1) : 0;\n const videoBufferStart = videoBuffered.length ? videoBuffered.start(0) : 0;\n const videoBufferEnd = videoBuffered.length ? videoBuffered.end(videoBuffered.length - 1) : 0;\n if (audioBufferEnd - audioBufferStart <= MIN_BACK_BUFFER && videoBufferEnd - videoBufferStart <= MIN_BACK_BUFFER) {\n // Can't remove enough buffer to make room for new segment (or the browser doesn't\n // allow for appends of segments this size). In the future, it may be possible to\n // split up the segment and append in pieces, but for now, error out this playlist\n // in an attempt to switch to a more manageable rendition.\n this.logger_('On QUOTA_EXCEEDED_ERR, single segment too large to append to ' + 'buffer, triggering an error. ' + `Appended byte length: ${bytes.byteLength}, ` + `audio buffer: ${timeRangesToArray(audioBuffered).join(', ')}, ` + `video buffer: ${timeRangesToArray(videoBuffered).join(', ')}, `);\n this.error({\n message: 'Quota exceeded error with append of a single segment of content',\n excludeUntil: Infinity\n });\n this.trigger('error');\n return;\n } // To try to resolve the quota exceeded error, clear back buffer and retry. This means\n // that the segment-loader should block on future events until this one is handled, so\n // that it doesn't keep moving onto further segments. Adding the call to the call\n // queue will prevent further appends until waitingOnRemove_ and\n // quotaExceededErrorRetryTimeout_ are cleared.\n //\n // Note that this will only block the current loader. In the case of demuxed content,\n // the other load may keep filling as fast as possible. In practice, this should be\n // OK, as it is a rare case when either audio has a high enough bitrate to fill up a\n // source buffer, or video fills without enough room for audio to append (and without\n // the availability of clearing out seconds of back buffer to make room for audio).\n // But it might still be good to handle this case in the future as a TODO.\n\n this.waitingOnRemove_ = true;\n this.callQueue_.push(this.appendToSourceBuffer_.bind(this, {\n segmentInfo,\n type,\n bytes\n }));\n const currentTime = this.currentTime_(); // Try to remove as much audio and video as possible to make room for new content\n // before retrying.\n\n const timeToRemoveUntil = currentTime - MIN_BACK_BUFFER;\n this.logger_(`On QUOTA_EXCEEDED_ERR, removing audio/video from 0 to ${timeToRemoveUntil}`);\n this.remove(0, timeToRemoveUntil, () => {\n this.logger_(`On QUOTA_EXCEEDED_ERR, retrying append in ${MIN_BACK_BUFFER}s`);\n this.waitingOnRemove_ = false; // wait the length of time alotted in the back buffer to prevent wasted\n // attempts (since we can't clear less than the minimum)\n\n this.quotaExceededErrorRetryTimeout_ = window$1.setTimeout(() => {\n this.logger_('On QUOTA_EXCEEDED_ERR, re-processing call queue');\n this.quotaExceededErrorRetryTimeout_ = null;\n this.processCallQueue_();\n }, MIN_BACK_BUFFER * 1000);\n }, true);\n }\n handleAppendError_({\n segmentInfo,\n type,\n bytes\n }, error) {\n // if there's no error, nothing to do\n if (!error) {\n return;\n }\n if (error.code === QUOTA_EXCEEDED_ERR) {\n this.handleQuotaExceededError_({\n segmentInfo,\n type,\n bytes\n }); // A quota exceeded error should be recoverable with a future re-append, so no need\n // to trigger an append error.\n\n return;\n }\n this.logger_('Received non QUOTA_EXCEEDED_ERR on append', error); // If an append errors, we often can't recover.\n // (see https://w3c.github.io/media-source/#sourcebuffer-append-error).\n //\n // Trigger a special error so that it can be handled separately from normal,\n // recoverable errors.\n\n this.error({\n message: `${type} append of ${bytes.length}b failed for segment ` + `#${segmentInfo.mediaIndex} in playlist ${segmentInfo.playlist.id}`,\n metadata: {\n errorType: videojs.Error.StreamingFailedToAppendSegment\n }\n });\n this.trigger('appenderror');\n }\n appendToSourceBuffer_({\n segmentInfo,\n type,\n initSegment,\n data,\n bytes\n }) {\n // If this is a re-append, bytes were already created and don't need to be recreated\n if (!bytes) {\n const segments = [data];\n let byteLength = data.byteLength;\n if (initSegment) {\n // if the media initialization segment is changing, append it before the content\n // segment\n segments.unshift(initSegment);\n byteLength += initSegment.byteLength;\n } // Technically we should be OK appending the init segment separately, however, we\n // haven't yet tested that, and prepending is how we have always done things.\n\n bytes = concatSegments({\n bytes: byteLength,\n segments\n });\n }\n const metadata = {\n segmentInfo: segmentInfoPayload({\n type: this.loaderType_,\n segment: segmentInfo\n })\n };\n this.trigger({\n type: 'segmentappendstart',\n metadata\n });\n this.sourceUpdater_.appendBuffer({\n segmentInfo,\n type,\n bytes\n }, this.handleAppendError_.bind(this, {\n segmentInfo,\n type,\n bytes\n }));\n }\n handleSegmentTimingInfo_(type, requestId, segmentTimingInfo) {\n if (!this.pendingSegment_ || requestId !== this.pendingSegment_.requestId) {\n return;\n }\n const segment = this.pendingSegment_.segment;\n const timingInfoProperty = `${type}TimingInfo`;\n if (!segment[timingInfoProperty]) {\n segment[timingInfoProperty] = {};\n }\n segment[timingInfoProperty].transmuxerPrependedSeconds = segmentTimingInfo.prependedContentDuration || 0;\n segment[timingInfoProperty].transmuxedPresentationStart = segmentTimingInfo.start.presentation;\n segment[timingInfoProperty].transmuxedDecodeStart = segmentTimingInfo.start.decode;\n segment[timingInfoProperty].transmuxedPresentationEnd = segmentTimingInfo.end.presentation;\n segment[timingInfoProperty].transmuxedDecodeEnd = segmentTimingInfo.end.decode; // mainly used as a reference for debugging\n\n segment[timingInfoProperty].baseMediaDecodeTime = segmentTimingInfo.baseMediaDecodeTime;\n }\n appendData_(segmentInfo, result) {\n const {\n type,\n data\n } = result;\n if (!data || !data.byteLength) {\n return;\n }\n if (type === 'audio' && this.audioDisabled_) {\n return;\n }\n const initSegment = this.getInitSegmentAndUpdateState_({\n type,\n initSegment: result.initSegment,\n playlist: segmentInfo.playlist,\n map: segmentInfo.isFmp4 ? segmentInfo.segment.map : null\n });\n this.appendToSourceBuffer_({\n segmentInfo,\n type,\n initSegment,\n data\n });\n }\n /**\n * load a specific segment from a request into the buffer\n *\n * @private\n */\n\n loadSegment_(segmentInfo) {\n this.state = 'WAITING';\n this.pendingSegment_ = segmentInfo;\n this.trimBackBuffer_(segmentInfo);\n if (typeof segmentInfo.timestampOffset === 'number') {\n if (this.transmuxer_) {\n this.transmuxer_.postMessage({\n action: 'clearAllMp4Captions'\n });\n }\n }\n if (!this.hasEnoughInfoToLoad_()) {\n checkAndFixTimelines(this);\n this.loadQueue_.push(() => {\n // regenerate the audioAppendStart, timestampOffset, etc as they\n // may have changed since this function was added to the queue.\n const options = _extends({}, segmentInfo, {\n forceTimestampOffset: true\n });\n _extends(segmentInfo, this.generateSegmentInfo_(options));\n this.isPendingTimestampOffset_ = false;\n this.updateTransmuxerAndRequestSegment_(segmentInfo);\n });\n return;\n }\n this.updateTransmuxerAndRequestSegment_(segmentInfo);\n }\n updateTransmuxerAndRequestSegment_(segmentInfo) {\n // We'll update the source buffer's timestamp offset once we have transmuxed data, but\n // the transmuxer still needs to be updated before then.\n //\n // Even though keepOriginalTimestamps is set to true for the transmuxer, timestamp\n // offset must be passed to the transmuxer for stream correcting adjustments.\n if (this.shouldUpdateTransmuxerTimestampOffset_(segmentInfo.timestampOffset)) {\n this.gopBuffer_.length = 0; // gopsToAlignWith was set before the GOP buffer was cleared\n\n segmentInfo.gopsToAlignWith = [];\n this.timeMapping_ = 0; // reset values in the transmuxer since a discontinuity should start fresh\n\n this.transmuxer_.postMessage({\n action: 'reset'\n });\n this.transmuxer_.postMessage({\n action: 'setTimestampOffset',\n timestampOffset: segmentInfo.timestampOffset\n });\n }\n const simpleSegment = this.createSimplifiedSegmentObj_(segmentInfo);\n const isEndOfStream = this.isEndOfStream_(segmentInfo.mediaIndex, segmentInfo.playlist, segmentInfo.partIndex);\n const isWalkingForward = this.mediaIndex !== null;\n const isDiscontinuity = segmentInfo.timeline !== this.currentTimeline_ &&\n // currentTimeline starts at -1, so we shouldn't end the timeline switching to 0,\n // the first timeline\n segmentInfo.timeline > 0;\n const isEndOfTimeline = isEndOfStream || isWalkingForward && isDiscontinuity;\n this.logger_(`Requesting\n${compactSegmentUrlDescription(segmentInfo.uri)}\n${segmentInfoString(segmentInfo)}`); // If there's an init segment associated with this segment, but it is not cached (identified by a lack of bytes),\n // then this init segment has never been seen before and should be appended.\n //\n // At this point the content type (audio/video or both) is not yet known, but it should be safe to set\n // both to true and leave the decision of whether to append the init segment to append time.\n\n if (simpleSegment.map && !simpleSegment.map.bytes) {\n this.logger_('going to request init segment.');\n this.appendInitSegment_ = {\n video: true,\n audio: true\n };\n }\n segmentInfo.abortRequests = mediaSegmentRequest({\n xhr: this.vhs_.xhr,\n xhrOptions: this.xhrOptions_,\n decryptionWorker: this.decrypter_,\n segment: simpleSegment,\n abortFn: this.handleAbort_.bind(this, segmentInfo),\n progressFn: this.handleProgress_.bind(this),\n trackInfoFn: this.handleTrackInfo_.bind(this),\n timingInfoFn: this.handleTimingInfo_.bind(this),\n videoSegmentTimingInfoFn: this.handleSegmentTimingInfo_.bind(this, 'video', segmentInfo.requestId),\n audioSegmentTimingInfoFn: this.handleSegmentTimingInfo_.bind(this, 'audio', segmentInfo.requestId),\n captionsFn: this.handleCaptions_.bind(this),\n isEndOfTimeline,\n endedTimelineFn: () => {\n this.logger_('received endedtimeline callback');\n },\n id3Fn: this.handleId3_.bind(this),\n dataFn: this.handleData_.bind(this),\n doneFn: this.segmentRequestFinished_.bind(this),\n onTransmuxerLog: ({\n message,\n level,\n stream\n }) => {\n this.logger_(`${segmentInfoString(segmentInfo)} logged from transmuxer stream ${stream} as a ${level}: ${message}`);\n },\n triggerSegmentEventFn: ({\n type,\n segment,\n keyInfo,\n trackInfo,\n timingInfo\n }) => {\n const segInfo = segmentInfoPayload({\n segment\n });\n const metadata = {\n segmentInfo: segInfo\n }; // add other properties if necessary.\n\n if (keyInfo) {\n metadata.keyInfo = keyInfo;\n }\n if (trackInfo) {\n metadata.trackInfo = trackInfo;\n }\n if (timingInfo) {\n metadata.timingInfo = timingInfo;\n }\n this.trigger({\n type,\n metadata\n });\n }\n });\n }\n /**\n * trim the back buffer so that we don't have too much data\n * in the source buffer\n *\n * @private\n *\n * @param {Object} segmentInfo - the current segment\n */\n\n trimBackBuffer_(segmentInfo) {\n const removeToTime = safeBackBufferTrimTime(this.seekable_(), this.currentTime_(), this.playlist_.targetDuration || 10); // Chrome has a hard limit of 150MB of\n // buffer and a very conservative \"garbage collector\"\n // We manually clear out the old buffer to ensure\n // we don't trigger the QuotaExceeded error\n // on the source buffer during subsequent appends\n\n if (removeToTime > 0) {\n this.remove(0, removeToTime);\n }\n }\n /**\n * created a simplified copy of the segment object with just the\n * information necessary to perform the XHR and decryption\n *\n * @private\n *\n * @param {Object} segmentInfo - the current segment\n * @return {Object} a simplified segment object copy\n */\n\n createSimplifiedSegmentObj_(segmentInfo) {\n const segment = segmentInfo.segment;\n const part = segmentInfo.part;\n const isEncrypted = segmentInfo.segment.key || segmentInfo.segment.map && segmentInfo.segment.map.key;\n const isMediaInitialization = segmentInfo.segment.map && !segmentInfo.segment.map.bytes;\n const simpleSegment = {\n resolvedUri: part ? part.resolvedUri : segment.resolvedUri,\n byterange: part ? part.byterange : segment.byterange,\n requestId: segmentInfo.requestId,\n transmuxer: segmentInfo.transmuxer,\n audioAppendStart: segmentInfo.audioAppendStart,\n gopsToAlignWith: segmentInfo.gopsToAlignWith,\n part: segmentInfo.part,\n type: this.loaderType_,\n start: segmentInfo.startOfSegment,\n duration: segmentInfo.duration,\n isEncrypted,\n isMediaInitialization\n };\n const previousSegment = segmentInfo.playlist.segments[segmentInfo.mediaIndex - 1];\n if (previousSegment && previousSegment.timeline === segment.timeline) {\n // The baseStartTime of a segment is used to handle rollover when probing the TS\n // segment to retrieve timing information. Since the probe only looks at the media's\n // times (e.g., PTS and DTS values of the segment), and doesn't consider the\n // player's time (e.g., player.currentTime()), baseStartTime should reflect the\n // media time as well. transmuxedDecodeEnd represents the end time of a segment, in\n // seconds of media time, so should be used here. The previous segment is used since\n // the end of the previous segment should represent the beginning of the current\n // segment, so long as they are on the same timeline.\n if (previousSegment.videoTimingInfo) {\n simpleSegment.baseStartTime = previousSegment.videoTimingInfo.transmuxedDecodeEnd;\n } else if (previousSegment.audioTimingInfo) {\n simpleSegment.baseStartTime = previousSegment.audioTimingInfo.transmuxedDecodeEnd;\n }\n }\n if (segment.key) {\n // if the media sequence is greater than 2^32, the IV will be incorrect\n // assuming 10s segments, that would be about 1300 years\n const iv = segment.key.iv || new Uint32Array([0, 0, 0, segmentInfo.mediaIndex + segmentInfo.playlist.mediaSequence]);\n simpleSegment.key = this.segmentKey(segment.key);\n simpleSegment.key.iv = iv;\n }\n if (segment.map) {\n simpleSegment.map = this.initSegmentForMap(segment.map);\n }\n return simpleSegment;\n }\n saveTransferStats_(stats) {\n // every request counts as a media request even if it has been aborted\n // or canceled due to a timeout\n this.mediaRequests += 1;\n if (stats) {\n this.mediaBytesTransferred += stats.bytesReceived;\n this.mediaTransferDuration += stats.roundTripTime;\n }\n }\n saveBandwidthRelatedStats_(duration, stats) {\n // byteLength will be used for throughput, and should be based on bytes receieved,\n // which we only know at the end of the request and should reflect total bytes\n // downloaded rather than just bytes processed from components of the segment\n this.pendingSegment_.byteLength = stats.bytesReceived;\n if (duration < MIN_SEGMENT_DURATION_TO_SAVE_STATS) {\n this.logger_(`Ignoring segment's bandwidth because its duration of ${duration}` + ` is less than the min to record ${MIN_SEGMENT_DURATION_TO_SAVE_STATS}`);\n return;\n }\n const metadata = {\n bandwidthInfo: {\n from: this.bandwidth,\n to: stats.bandwidth\n }\n }; // player event with payload\n\n this.trigger({\n type: 'bandwidthupdated',\n metadata\n });\n this.bandwidth = stats.bandwidth;\n this.roundTrip = stats.roundTripTime;\n }\n handleTimeout_() {\n // although the VTT segment loader bandwidth isn't really used, it's good to\n // maintain functinality between segment loaders\n this.mediaRequestsTimedout += 1;\n this.bandwidth = 1;\n this.roundTrip = NaN;\n this.trigger('bandwidthupdate');\n this.trigger('timeout');\n }\n /**\n * Handle the callback from the segmentRequest function and set the\n * associated SegmentLoader state and errors if necessary\n *\n * @private\n */\n\n segmentRequestFinished_(error, simpleSegment, result) {\n // TODO handle special cases, e.g., muxed audio/video but only audio in the segment\n // check the call queue directly since this function doesn't need to deal with any\n // data, and can continue even if the source buffers are not set up and we didn't get\n // any data from the segment\n if (this.callQueue_.length) {\n this.callQueue_.push(this.segmentRequestFinished_.bind(this, error, simpleSegment, result));\n return;\n }\n this.saveTransferStats_(simpleSegment.stats); // The request was aborted and the SegmentLoader has already been reset\n\n if (!this.pendingSegment_) {\n return;\n } // the request was aborted and the SegmentLoader has already started\n // another request. this can happen when the timeout for an aborted\n // request triggers due to a limitation in the XHR library\n // do not count this as any sort of request or we risk double-counting\n\n if (simpleSegment.requestId !== this.pendingSegment_.requestId) {\n return;\n } // an error occurred from the active pendingSegment_ so reset everything\n\n if (error) {\n this.pendingSegment_ = null;\n this.state = 'READY'; // aborts are not a true error condition and nothing corrective needs to be done\n\n if (error.code === REQUEST_ERRORS.ABORTED) {\n return;\n }\n this.pause(); // the error is really just that at least one of the requests timed-out\n // set the bandwidth to a very low value and trigger an ABR switch to\n // take emergency action\n\n if (error.code === REQUEST_ERRORS.TIMEOUT) {\n this.handleTimeout_();\n return;\n } // if control-flow has arrived here, then the error is real\n // emit an error event to exclude the current playlist\n\n this.mediaRequestsErrored += 1;\n this.error(error);\n this.trigger('error');\n return;\n }\n const segmentInfo = this.pendingSegment_; // the response was a success so set any bandwidth stats the request\n // generated for ABR purposes\n\n this.saveBandwidthRelatedStats_(segmentInfo.duration, simpleSegment.stats);\n segmentInfo.endOfAllRequests = simpleSegment.endOfAllRequests;\n if (result.gopInfo) {\n this.gopBuffer_ = updateGopBuffer(this.gopBuffer_, result.gopInfo, this.safeAppend_);\n } // Although we may have already started appending on progress, we shouldn't switch the\n // state away from loading until we are officially done loading the segment data.\n\n this.state = 'APPENDING'; // used for testing\n\n this.trigger('appending');\n this.waitForAppendsToComplete_(segmentInfo);\n }\n setTimeMapping_(timeline) {\n const timelineMapping = this.syncController_.mappingForTimeline(timeline);\n if (timelineMapping !== null) {\n this.timeMapping_ = timelineMapping;\n }\n }\n updateMediaSecondsLoaded_(segment) {\n if (typeof segment.start === 'number' && typeof segment.end === 'number') {\n this.mediaSecondsLoaded += segment.end - segment.start;\n } else {\n this.mediaSecondsLoaded += segment.duration;\n }\n }\n shouldUpdateTransmuxerTimestampOffset_(timestampOffset) {\n if (timestampOffset === null) {\n return false;\n } // note that we're potentially using the same timestamp offset for both video and\n // audio\n\n if (this.loaderType_ === 'main' && timestampOffset !== this.sourceUpdater_.videoTimestampOffset()) {\n return true;\n }\n if (!this.audioDisabled_ && timestampOffset !== this.sourceUpdater_.audioTimestampOffset()) {\n return true;\n }\n return false;\n }\n trueSegmentStart_({\n currentStart,\n playlist,\n mediaIndex,\n firstVideoFrameTimeForData,\n currentVideoTimestampOffset,\n useVideoTimingInfo,\n videoTimingInfo,\n audioTimingInfo\n }) {\n if (typeof currentStart !== 'undefined') {\n // if start was set once, keep using it\n return currentStart;\n }\n if (!useVideoTimingInfo) {\n return audioTimingInfo.start;\n }\n const previousSegment = playlist.segments[mediaIndex - 1]; // The start of a segment should be the start of the first full frame contained\n // within that segment. Since the transmuxer maintains a cache of incomplete data\n // from and/or the last frame seen, the start time may reflect a frame that starts\n // in the previous segment. Check for that case and ensure the start time is\n // accurate for the segment.\n\n if (mediaIndex === 0 || !previousSegment || typeof previousSegment.start === 'undefined' || previousSegment.end !== firstVideoFrameTimeForData + currentVideoTimestampOffset) {\n return firstVideoFrameTimeForData;\n }\n return videoTimingInfo.start;\n }\n waitForAppendsToComplete_(segmentInfo) {\n const trackInfo = this.getCurrentMediaInfo_(segmentInfo);\n if (!trackInfo) {\n this.error({\n message: 'No starting media returned, likely due to an unsupported media format.',\n playlistExclusionDuration: Infinity\n });\n this.trigger('error');\n return;\n } // Although transmuxing is done, appends may not yet be finished. Throw a marker\n // on each queue this loader is responsible for to ensure that the appends are\n // complete.\n\n const {\n hasAudio,\n hasVideo,\n isMuxed\n } = trackInfo;\n const waitForVideo = this.loaderType_ === 'main' && hasVideo;\n const waitForAudio = !this.audioDisabled_ && hasAudio && !isMuxed;\n segmentInfo.waitingOnAppends = 0; // segments with no data\n\n if (!segmentInfo.hasAppendedData_) {\n if (!segmentInfo.timingInfo && typeof segmentInfo.timestampOffset === 'number') {\n // When there's no audio or video data in the segment, there's no audio or video\n // timing information.\n //\n // If there's no audio or video timing information, then the timestamp offset\n // can't be adjusted to the appropriate value for the transmuxer and source\n // buffers.\n //\n // Therefore, the next segment should be used to set the timestamp offset.\n this.isPendingTimestampOffset_ = true;\n } // override settings for metadata only segments\n\n segmentInfo.timingInfo = {\n start: 0\n };\n segmentInfo.waitingOnAppends++;\n if (!this.isPendingTimestampOffset_) {\n // update the timestampoffset\n this.updateSourceBufferTimestampOffset_(segmentInfo); // make sure the metadata queue is processed even though we have\n // no video/audio data.\n\n this.processMetadataQueue_();\n } // append is \"done\" instantly with no data.\n\n this.checkAppendsDone_(segmentInfo);\n return;\n } // Since source updater could call back synchronously, do the increments first.\n\n if (waitForVideo) {\n segmentInfo.waitingOnAppends++;\n }\n if (waitForAudio) {\n segmentInfo.waitingOnAppends++;\n }\n if (waitForVideo) {\n this.sourceUpdater_.videoQueueCallback(this.checkAppendsDone_.bind(this, segmentInfo));\n }\n if (waitForAudio) {\n this.sourceUpdater_.audioQueueCallback(this.checkAppendsDone_.bind(this, segmentInfo));\n }\n }\n checkAppendsDone_(segmentInfo) {\n if (this.checkForAbort_(segmentInfo.requestId)) {\n return;\n }\n segmentInfo.waitingOnAppends--;\n if (segmentInfo.waitingOnAppends === 0) {\n this.handleAppendsDone_();\n }\n }\n checkForIllegalMediaSwitch(trackInfo) {\n const illegalMediaSwitchError = illegalMediaSwitch(this.loaderType_, this.getCurrentMediaInfo_(), trackInfo);\n if (illegalMediaSwitchError) {\n this.error({\n message: illegalMediaSwitchError,\n playlistExclusionDuration: Infinity\n });\n this.trigger('error');\n return true;\n }\n return false;\n }\n updateSourceBufferTimestampOffset_(segmentInfo) {\n if (segmentInfo.timestampOffset === null ||\n // we don't yet have the start for whatever media type (video or audio) has\n // priority, timing-wise, so we must wait\n typeof segmentInfo.timingInfo.start !== 'number' ||\n // already updated the timestamp offset for this segment\n segmentInfo.changedTimestampOffset ||\n // the alt audio loader should not be responsible for setting the timestamp offset\n this.loaderType_ !== 'main') {\n return;\n }\n let didChange = false; // Primary timing goes by video, and audio is trimmed in the transmuxer, meaning that\n // the timing info here comes from video. In the event that the audio is longer than\n // the video, this will trim the start of the audio.\n // This also trims any offset from 0 at the beginning of the media\n\n segmentInfo.timestampOffset -= this.getSegmentStartTimeForTimestampOffsetCalculation_({\n videoTimingInfo: segmentInfo.segment.videoTimingInfo,\n audioTimingInfo: segmentInfo.segment.audioTimingInfo,\n timingInfo: segmentInfo.timingInfo\n }); // In the event that there are part segment downloads, each will try to update the\n // timestamp offset. Retaining this bit of state prevents us from updating in the\n // future (within the same segment), however, there may be a better way to handle it.\n\n segmentInfo.changedTimestampOffset = true;\n if (segmentInfo.timestampOffset !== this.sourceUpdater_.videoTimestampOffset()) {\n this.sourceUpdater_.videoTimestampOffset(segmentInfo.timestampOffset);\n didChange = true;\n }\n if (segmentInfo.timestampOffset !== this.sourceUpdater_.audioTimestampOffset()) {\n this.sourceUpdater_.audioTimestampOffset(segmentInfo.timestampOffset);\n didChange = true;\n }\n if (didChange) {\n this.trigger('timestampoffset');\n }\n }\n getSegmentStartTimeForTimestampOffsetCalculation_({\n videoTimingInfo,\n audioTimingInfo,\n timingInfo\n }) {\n if (!this.useDtsForTimestampOffset_) {\n return timingInfo.start;\n }\n if (videoTimingInfo && typeof videoTimingInfo.transmuxedDecodeStart === 'number') {\n return videoTimingInfo.transmuxedDecodeStart;\n } // handle audio only\n\n if (audioTimingInfo && typeof audioTimingInfo.transmuxedDecodeStart === 'number') {\n return audioTimingInfo.transmuxedDecodeStart;\n } // handle content not transmuxed (e.g., MP4)\n\n return timingInfo.start;\n }\n updateTimingInfoEnd_(segmentInfo) {\n segmentInfo.timingInfo = segmentInfo.timingInfo || {};\n const trackInfo = this.getMediaInfo_();\n const useVideoTimingInfo = this.loaderType_ === 'main' && trackInfo && trackInfo.hasVideo;\n const prioritizedTimingInfo = useVideoTimingInfo && segmentInfo.videoTimingInfo ? segmentInfo.videoTimingInfo : segmentInfo.audioTimingInfo;\n if (!prioritizedTimingInfo) {\n return;\n }\n segmentInfo.timingInfo.end = typeof prioritizedTimingInfo.end === 'number' ?\n // End time may not exist in a case where we aren't parsing the full segment (one\n // current example is the case of fmp4), so use the rough duration to calculate an\n // end time.\n prioritizedTimingInfo.end : prioritizedTimingInfo.start + segmentInfo.duration;\n }\n /**\n * callback to run when appendBuffer is finished. detects if we are\n * in a good state to do things with the data we got, or if we need\n * to wait for more\n *\n * @private\n */\n\n handleAppendsDone_() {\n // appendsdone can cause an abort\n if (this.pendingSegment_) {\n const metadata = {\n segmentInfo: segmentInfoPayload({\n type: this.loaderType_,\n segment: this.pendingSegment_\n })\n };\n this.trigger({\n type: 'appendsdone',\n metadata\n });\n }\n if (!this.pendingSegment_) {\n this.state = 'READY'; // TODO should this move into this.checkForAbort to speed up requests post abort in\n // all appending cases?\n\n if (!this.paused()) {\n this.monitorBuffer_();\n }\n return;\n }\n const segmentInfo = this.pendingSegment_;\n if (segmentInfo.part && segmentInfo.part.syncInfo) {\n // low-latency flow\n segmentInfo.part.syncInfo.markAppended();\n } else if (segmentInfo.segment.syncInfo) {\n // normal flow\n segmentInfo.segment.syncInfo.markAppended();\n } // Now that the end of the segment has been reached, we can set the end time. It's\n // best to wait until all appends are done so we're sure that the primary media is\n // finished (and we have its end time).\n\n this.updateTimingInfoEnd_(segmentInfo);\n if (this.shouldSaveSegmentTimingInfo_) {\n // Timeline mappings should only be saved for the main loader. This is for multiple\n // reasons:\n //\n // 1) Only one mapping is saved per timeline, meaning that if both the audio loader\n // and the main loader try to save the timeline mapping, whichever comes later\n // will overwrite the first. In theory this is OK, as the mappings should be the\n // same, however, it breaks for (2)\n // 2) In the event of a live stream, the initial live point will make for a somewhat\n // arbitrary mapping. If audio and video streams are not perfectly in-sync, then\n // the mapping will be off for one of the streams, dependent on which one was\n // first saved (see (1)).\n // 3) Primary timing goes by video in VHS, so the mapping should be video.\n //\n // Since the audio loader will wait for the main loader to load the first segment,\n // the main loader will save the first timeline mapping, and ensure that there won't\n // be a case where audio loads two segments without saving a mapping (thus leading\n // to missing segment timing info).\n this.syncController_.saveSegmentTimingInfo({\n segmentInfo,\n shouldSaveTimelineMapping: this.loaderType_ === 'main'\n });\n }\n const segmentDurationMessage = getTroublesomeSegmentDurationMessage(segmentInfo, this.sourceType_);\n if (segmentDurationMessage) {\n if (segmentDurationMessage.severity === 'warn') {\n videojs.log.warn(segmentDurationMessage.message);\n } else {\n this.logger_(segmentDurationMessage.message);\n }\n }\n this.recordThroughput_(segmentInfo);\n this.pendingSegment_ = null;\n this.state = 'READY';\n if (segmentInfo.isSyncRequest) {\n this.trigger('syncinfoupdate'); // if the sync request was not appended\n // then it was not the correct segment.\n // throw it away and use the data it gave us\n // to get the correct one.\n\n if (!segmentInfo.hasAppendedData_) {\n this.logger_(`Throwing away un-appended sync request ${segmentInfoString(segmentInfo)}`);\n return;\n }\n }\n this.logger_(`Appended ${segmentInfoString(segmentInfo)}`);\n this.addSegmentMetadataCue_(segmentInfo);\n this.fetchAtBuffer_ = true;\n if (this.currentTimeline_ !== segmentInfo.timeline) {\n this.timelineChangeController_.lastTimelineChange({\n type: this.loaderType_,\n from: this.currentTimeline_,\n to: segmentInfo.timeline\n }); // If audio is not disabled, the main segment loader is responsible for updating\n // the audio timeline as well. If the content is video only, this won't have any\n // impact.\n\n if (this.loaderType_ === 'main' && !this.audioDisabled_) {\n this.timelineChangeController_.lastTimelineChange({\n type: 'audio',\n from: this.currentTimeline_,\n to: segmentInfo.timeline\n });\n }\n }\n this.currentTimeline_ = segmentInfo.timeline; // We must update the syncinfo to recalculate the seekable range before\n // the following conditional otherwise it may consider this a bad \"guess\"\n // and attempt to resync when the post-update seekable window and live\n // point would mean that this was the perfect segment to fetch\n\n this.trigger('syncinfoupdate');\n const segment = segmentInfo.segment;\n const part = segmentInfo.part;\n const badSegmentGuess = segment.end && this.currentTime_() - segment.end > segmentInfo.playlist.targetDuration * 3;\n const badPartGuess = part && part.end && this.currentTime_() - part.end > segmentInfo.playlist.partTargetDuration * 3; // If we previously appended a segment/part that ends more than 3 part/targetDurations before\n // the currentTime_ that means that our conservative guess was too conservative.\n // In that case, reset the loader state so that we try to use any information gained\n // from the previous request to create a new, more accurate, sync-point.\n\n if (badSegmentGuess || badPartGuess) {\n this.logger_(`bad ${badSegmentGuess ? 'segment' : 'part'} ${segmentInfoString(segmentInfo)}`);\n this.resetEverything();\n return;\n }\n const isWalkingForward = this.mediaIndex !== null; // Don't do a rendition switch unless we have enough time to get a sync segment\n // and conservatively guess\n\n if (isWalkingForward) {\n this.trigger('bandwidthupdate');\n }\n this.trigger('progress');\n this.mediaIndex = segmentInfo.mediaIndex;\n this.partIndex = segmentInfo.partIndex; // any time an update finishes and the last segment is in the\n // buffer, end the stream. this ensures the \"ended\" event will\n // fire if playback reaches that point.\n\n if (this.isEndOfStream_(segmentInfo.mediaIndex, segmentInfo.playlist, segmentInfo.partIndex)) {\n this.endOfStream();\n } // used for testing\n\n this.trigger('appended');\n if (segmentInfo.hasAppendedData_) {\n this.mediaAppends++;\n }\n if (!this.paused()) {\n this.monitorBuffer_();\n }\n }\n /**\n * Records the current throughput of the decrypt, transmux, and append\n * portion of the semgment pipeline. `throughput.rate` is a the cumulative\n * moving average of the throughput. `throughput.count` is the number of\n * data points in the average.\n *\n * @private\n * @param {Object} segmentInfo the object returned by loadSegment\n */\n\n recordThroughput_(segmentInfo) {\n if (segmentInfo.duration < MIN_SEGMENT_DURATION_TO_SAVE_STATS) {\n this.logger_(`Ignoring segment's throughput because its duration of ${segmentInfo.duration}` + ` is less than the min to record ${MIN_SEGMENT_DURATION_TO_SAVE_STATS}`);\n return;\n }\n const rate = this.throughput.rate; // Add one to the time to ensure that we don't accidentally attempt to divide\n // by zero in the case where the throughput is ridiculously high\n\n const segmentProcessingTime = Date.now() - segmentInfo.endOfAllRequests + 1; // Multiply by 8000 to convert from bytes/millisecond to bits/second\n\n const segmentProcessingThroughput = Math.floor(segmentInfo.byteLength / segmentProcessingTime * 8 * 1000); // This is just a cumulative moving average calculation:\n // newAvg = oldAvg + (sample - oldAvg) / (sampleCount + 1)\n\n this.throughput.rate += (segmentProcessingThroughput - rate) / ++this.throughput.count;\n }\n /**\n * Adds a cue to the segment-metadata track with some metadata information about the\n * segment\n *\n * @private\n * @param {Object} segmentInfo\n * the object returned by loadSegment\n * @method addSegmentMetadataCue_\n */\n\n addSegmentMetadataCue_(segmentInfo) {\n if (!this.segmentMetadataTrack_) {\n return;\n }\n const segment = segmentInfo.segment;\n const start = segment.start;\n const end = segment.end; // Do not try adding the cue if the start and end times are invalid.\n\n if (!finite(start) || !finite(end)) {\n return;\n }\n removeCuesFromTrack(start, end, this.segmentMetadataTrack_);\n const Cue = window$1.WebKitDataCue || window$1.VTTCue;\n const value = {\n custom: segment.custom,\n dateTimeObject: segment.dateTimeObject,\n dateTimeString: segment.dateTimeString,\n programDateTime: segment.programDateTime,\n bandwidth: segmentInfo.playlist.attributes.BANDWIDTH,\n resolution: segmentInfo.playlist.attributes.RESOLUTION,\n codecs: segmentInfo.playlist.attributes.CODECS,\n byteLength: segmentInfo.byteLength,\n uri: segmentInfo.uri,\n timeline: segmentInfo.timeline,\n playlist: segmentInfo.playlist.id,\n start,\n end\n };\n const data = JSON.stringify(value);\n const cue = new Cue(start, end, data); // Attach the metadata to the value property of the cue to keep consistency between\n // the differences of WebKitDataCue in safari and VTTCue in other browsers\n\n cue.value = value;\n this.segmentMetadataTrack_.addCue(cue);\n }\n}\nfunction noop() {}\nconst toTitleCase = function (string) {\n if (typeof string !== 'string') {\n return string;\n }\n return string.replace(/./, w => w.toUpperCase());\n};\n\n/**\n * @file source-updater.js\n */\nconst bufferTypes = ['video', 'audio'];\nconst updating = (type, sourceUpdater) => {\n const sourceBuffer = sourceUpdater[`${type}Buffer`];\n return sourceBuffer && sourceBuffer.updating || sourceUpdater.queuePending[type];\n};\nconst nextQueueIndexOfType = (type, queue) => {\n for (let i = 0; i < queue.length; i++) {\n const queueEntry = queue[i];\n if (queueEntry.type === 'mediaSource') {\n // If the next entry is a media source entry (uses multiple source buffers), block\n // processing to allow it to go through first.\n return null;\n }\n if (queueEntry.type === type) {\n return i;\n }\n }\n return null;\n};\nconst shiftQueue = (type, sourceUpdater) => {\n if (sourceUpdater.queue.length === 0) {\n return;\n }\n let queueIndex = 0;\n let queueEntry = sourceUpdater.queue[queueIndex];\n if (queueEntry.type === 'mediaSource') {\n if (!sourceUpdater.updating() && sourceUpdater.mediaSource.readyState !== 'closed') {\n sourceUpdater.queue.shift();\n queueEntry.action(sourceUpdater);\n if (queueEntry.doneFn) {\n queueEntry.doneFn();\n } // Only specific source buffer actions must wait for async updateend events. Media\n // Source actions process synchronously. Therefore, both audio and video source\n // buffers are now clear to process the next queue entries.\n\n shiftQueue('audio', sourceUpdater);\n shiftQueue('video', sourceUpdater);\n } // Media Source actions require both source buffers, so if the media source action\n // couldn't process yet (because one or both source buffers are busy), block other\n // queue actions until both are available and the media source action can process.\n\n return;\n }\n if (type === 'mediaSource') {\n // If the queue was shifted by a media source action (this happens when pushing a\n // media source action onto the queue), then it wasn't from an updateend event from an\n // audio or video source buffer, so there's no change from previous state, and no\n // processing should be done.\n return;\n } // Media source queue entries don't need to consider whether the source updater is\n // started (i.e., source buffers are created) as they don't need the source buffers, but\n // source buffer queue entries do.\n\n if (!sourceUpdater.ready() || sourceUpdater.mediaSource.readyState === 'closed' || updating(type, sourceUpdater)) {\n return;\n }\n if (queueEntry.type !== type) {\n queueIndex = nextQueueIndexOfType(type, sourceUpdater.queue);\n if (queueIndex === null) {\n // Either there's no queue entry that uses this source buffer type in the queue, or\n // there's a media source queue entry before the next entry of this type, in which\n // case wait for that action to process first.\n return;\n }\n queueEntry = sourceUpdater.queue[queueIndex];\n }\n sourceUpdater.queue.splice(queueIndex, 1); // Keep a record that this source buffer type is in use.\n //\n // The queue pending operation must be set before the action is performed in the event\n // that the action results in a synchronous event that is acted upon. For instance, if\n // an exception is thrown that can be handled, it's possible that new actions will be\n // appended to an empty queue and immediately executed, but would not have the correct\n // pending information if this property was set after the action was performed.\n\n sourceUpdater.queuePending[type] = queueEntry;\n queueEntry.action(type, sourceUpdater);\n if (!queueEntry.doneFn) {\n // synchronous operation, process next entry\n sourceUpdater.queuePending[type] = null;\n shiftQueue(type, sourceUpdater);\n return;\n }\n};\nconst cleanupBuffer = (type, sourceUpdater) => {\n const buffer = sourceUpdater[`${type}Buffer`];\n const titleType = toTitleCase(type);\n if (!buffer) {\n return;\n }\n buffer.removeEventListener('updateend', sourceUpdater[`on${titleType}UpdateEnd_`]);\n buffer.removeEventListener('error', sourceUpdater[`on${titleType}Error_`]);\n sourceUpdater.codecs[type] = null;\n sourceUpdater[`${type}Buffer`] = null;\n};\nconst inSourceBuffers = (mediaSource, sourceBuffer) => mediaSource && sourceBuffer && Array.prototype.indexOf.call(mediaSource.sourceBuffers, sourceBuffer) !== -1;\nconst actions = {\n appendBuffer: (bytes, segmentInfo, onError) => (type, sourceUpdater) => {\n const sourceBuffer = sourceUpdater[`${type}Buffer`]; // can't do anything if the media source / source buffer is null\n // or the media source does not contain this source buffer.\n\n if (!inSourceBuffers(sourceUpdater.mediaSource, sourceBuffer)) {\n return;\n }\n sourceUpdater.logger_(`Appending segment ${segmentInfo.mediaIndex}'s ${bytes.length} bytes to ${type}Buffer`);\n try {\n sourceBuffer.appendBuffer(bytes);\n } catch (e) {\n sourceUpdater.logger_(`Error with code ${e.code} ` + (e.code === QUOTA_EXCEEDED_ERR ? '(QUOTA_EXCEEDED_ERR) ' : '') + `when appending segment ${segmentInfo.mediaIndex} to ${type}Buffer`);\n sourceUpdater.queuePending[type] = null;\n onError(e);\n }\n },\n remove: (start, end) => (type, sourceUpdater) => {\n const sourceBuffer = sourceUpdater[`${type}Buffer`]; // can't do anything if the media source / source buffer is null\n // or the media source does not contain this source buffer.\n\n if (!inSourceBuffers(sourceUpdater.mediaSource, sourceBuffer)) {\n return;\n }\n sourceUpdater.logger_(`Removing ${start} to ${end} from ${type}Buffer`);\n try {\n sourceBuffer.remove(start, end);\n } catch (e) {\n sourceUpdater.logger_(`Remove ${start} to ${end} from ${type}Buffer failed`);\n }\n },\n timestampOffset: offset => (type, sourceUpdater) => {\n const sourceBuffer = sourceUpdater[`${type}Buffer`]; // can't do anything if the media source / source buffer is null\n // or the media source does not contain this source buffer.\n\n if (!inSourceBuffers(sourceUpdater.mediaSource, sourceBuffer)) {\n return;\n }\n sourceUpdater.logger_(`Setting ${type}timestampOffset to ${offset}`);\n sourceBuffer.timestampOffset = offset;\n },\n callback: callback => (type, sourceUpdater) => {\n callback();\n },\n endOfStream: error => sourceUpdater => {\n if (sourceUpdater.mediaSource.readyState !== 'open') {\n return;\n }\n sourceUpdater.logger_(`Calling mediaSource endOfStream(${error || ''})`);\n try {\n sourceUpdater.mediaSource.endOfStream(error);\n } catch (e) {\n videojs.log.warn('Failed to call media source endOfStream', e);\n }\n },\n duration: duration => sourceUpdater => {\n sourceUpdater.logger_(`Setting mediaSource duration to ${duration}`);\n try {\n sourceUpdater.mediaSource.duration = duration;\n } catch (e) {\n videojs.log.warn('Failed to set media source duration', e);\n }\n },\n abort: () => (type, sourceUpdater) => {\n if (sourceUpdater.mediaSource.readyState !== 'open') {\n return;\n }\n const sourceBuffer = sourceUpdater[`${type}Buffer`]; // can't do anything if the media source / source buffer is null\n // or the media source does not contain this source buffer.\n\n if (!inSourceBuffers(sourceUpdater.mediaSource, sourceBuffer)) {\n return;\n }\n sourceUpdater.logger_(`calling abort on ${type}Buffer`);\n try {\n sourceBuffer.abort();\n } catch (e) {\n videojs.log.warn(`Failed to abort on ${type}Buffer`, e);\n }\n },\n addSourceBuffer: (type, codec) => sourceUpdater => {\n const titleType = toTitleCase(type);\n const mime = getMimeForCodec(codec);\n sourceUpdater.logger_(`Adding ${type}Buffer with codec ${codec} to mediaSource`);\n const sourceBuffer = sourceUpdater.mediaSource.addSourceBuffer(mime);\n sourceBuffer.addEventListener('updateend', sourceUpdater[`on${titleType}UpdateEnd_`]);\n sourceBuffer.addEventListener('error', sourceUpdater[`on${titleType}Error_`]);\n sourceUpdater.codecs[type] = codec;\n sourceUpdater[`${type}Buffer`] = sourceBuffer;\n },\n removeSourceBuffer: type => sourceUpdater => {\n const sourceBuffer = sourceUpdater[`${type}Buffer`];\n cleanupBuffer(type, sourceUpdater); // can't do anything if the media source / source buffer is null\n // or the media source does not contain this source buffer.\n\n if (!inSourceBuffers(sourceUpdater.mediaSource, sourceBuffer)) {\n return;\n }\n sourceUpdater.logger_(`Removing ${type}Buffer with codec ${sourceUpdater.codecs[type]} from mediaSource`);\n try {\n sourceUpdater.mediaSource.removeSourceBuffer(sourceBuffer);\n } catch (e) {\n videojs.log.warn(`Failed to removeSourceBuffer ${type}Buffer`, e);\n }\n },\n changeType: codec => (type, sourceUpdater) => {\n const sourceBuffer = sourceUpdater[`${type}Buffer`];\n const mime = getMimeForCodec(codec); // can't do anything if the media source / source buffer is null\n // or the media source does not contain this source buffer.\n\n if (!inSourceBuffers(sourceUpdater.mediaSource, sourceBuffer)) {\n return;\n } // do not update codec if we don't need to.\n // Only update if we change the codec base.\n // For example, going from avc1.640028 to avc1.64001f does not require a changeType call.\n\n const newCodecBase = codec.substring(0, codec.indexOf('.'));\n const oldCodec = sourceUpdater.codecs[type];\n const oldCodecBase = oldCodec.substring(0, oldCodec.indexOf('.'));\n if (oldCodecBase === newCodecBase) {\n return;\n }\n const metadata = {\n codecsChangeInfo: {\n from: oldCodec,\n to: codec\n }\n };\n sourceUpdater.trigger({\n type: 'codecschange',\n metadata\n });\n sourceUpdater.logger_(`changing ${type}Buffer codec from ${oldCodec} to ${codec}`); // check if change to the provided type is supported\n\n try {\n sourceBuffer.changeType(mime);\n sourceUpdater.codecs[type] = codec;\n } catch (e) {\n metadata.errorType = videojs.Error.StreamingCodecsChangeError;\n metadata.error = e;\n e.metadata = metadata;\n sourceUpdater.error_ = e;\n sourceUpdater.trigger('error');\n videojs.log.warn(`Failed to changeType on ${type}Buffer`, e);\n }\n }\n};\nconst pushQueue = ({\n type,\n sourceUpdater,\n action,\n doneFn,\n name\n}) => {\n sourceUpdater.queue.push({\n type,\n action,\n doneFn,\n name\n });\n shiftQueue(type, sourceUpdater);\n};\nconst onUpdateend = (type, sourceUpdater) => e => {\n // Although there should, in theory, be a pending action for any updateend receieved,\n // there are some actions that may trigger updateend events without set definitions in\n // the w3c spec. For instance, setting the duration on the media source may trigger\n // updateend events on source buffers. This does not appear to be in the spec. As such,\n // if we encounter an updateend without a corresponding pending action from our queue\n // for that source buffer type, process the next action.\n const bufferedRangesForType = sourceUpdater[`${type}Buffered`]();\n const descriptiveString = bufferedRangesToString(bufferedRangesForType);\n sourceUpdater.logger_(`received \"updateend\" event for ${type} Source Buffer: `, descriptiveString);\n if (sourceUpdater.queuePending[type]) {\n const doneFn = sourceUpdater.queuePending[type].doneFn;\n sourceUpdater.queuePending[type] = null;\n if (doneFn) {\n // if there's an error, report it\n doneFn(sourceUpdater[`${type}Error_`]);\n }\n }\n shiftQueue(type, sourceUpdater);\n};\n/**\n * A queue of callbacks to be serialized and applied when a\n * MediaSource and its associated SourceBuffers are not in the\n * updating state. It is used by the segment loader to update the\n * underlying SourceBuffers when new data is loaded, for instance.\n *\n * @class SourceUpdater\n * @param {MediaSource} mediaSource the MediaSource to create the SourceBuffer from\n * @param {string} mimeType the desired MIME type of the underlying SourceBuffer\n */\n\nclass SourceUpdater extends videojs.EventTarget {\n constructor(mediaSource) {\n super();\n this.mediaSource = mediaSource;\n this.sourceopenListener_ = () => shiftQueue('mediaSource', this);\n this.mediaSource.addEventListener('sourceopen', this.sourceopenListener_);\n this.logger_ = logger('SourceUpdater'); // initial timestamp offset is 0\n\n this.audioTimestampOffset_ = 0;\n this.videoTimestampOffset_ = 0;\n this.queue = [];\n this.queuePending = {\n audio: null,\n video: null\n };\n this.delayedAudioAppendQueue_ = [];\n this.videoAppendQueued_ = false;\n this.codecs = {};\n this.onVideoUpdateEnd_ = onUpdateend('video', this);\n this.onAudioUpdateEnd_ = onUpdateend('audio', this);\n this.onVideoError_ = e => {\n // used for debugging\n this.videoError_ = e;\n };\n this.onAudioError_ = e => {\n // used for debugging\n this.audioError_ = e;\n };\n this.createdSourceBuffers_ = false;\n this.initializedEme_ = false;\n this.triggeredReady_ = false;\n }\n initializedEme() {\n this.initializedEme_ = true;\n this.triggerReady();\n }\n hasCreatedSourceBuffers() {\n // if false, likely waiting on one of the segment loaders to get enough data to create\n // source buffers\n return this.createdSourceBuffers_;\n }\n hasInitializedAnyEme() {\n return this.initializedEme_;\n }\n ready() {\n return this.hasCreatedSourceBuffers() && this.hasInitializedAnyEme();\n }\n createSourceBuffers(codecs) {\n if (this.hasCreatedSourceBuffers()) {\n // already created them before\n return;\n } // the intial addOrChangeSourceBuffers will always be\n // two add buffers.\n\n this.addOrChangeSourceBuffers(codecs);\n this.createdSourceBuffers_ = true;\n this.trigger('createdsourcebuffers');\n this.triggerReady();\n }\n triggerReady() {\n // only allow ready to be triggered once, this prevents the case\n // where:\n // 1. we trigger createdsourcebuffers\n // 2. ie 11 synchronously initializates eme\n // 3. the synchronous initialization causes us to trigger ready\n // 4. We go back to the ready check in createSourceBuffers and ready is triggered again.\n if (this.ready() && !this.triggeredReady_) {\n this.triggeredReady_ = true;\n this.trigger('ready');\n }\n }\n /**\n * Add a type of source buffer to the media source.\n *\n * @param {string} type\n * The type of source buffer to add.\n *\n * @param {string} codec\n * The codec to add the source buffer with.\n */\n\n addSourceBuffer(type, codec) {\n pushQueue({\n type: 'mediaSource',\n sourceUpdater: this,\n action: actions.addSourceBuffer(type, codec),\n name: 'addSourceBuffer'\n });\n }\n /**\n * call abort on a source buffer.\n *\n * @param {string} type\n * The type of source buffer to call abort on.\n */\n\n abort(type) {\n pushQueue({\n type,\n sourceUpdater: this,\n action: actions.abort(type),\n name: 'abort'\n });\n }\n /**\n * Call removeSourceBuffer and remove a specific type\n * of source buffer on the mediaSource.\n *\n * @param {string} type\n * The type of source buffer to remove.\n */\n\n removeSourceBuffer(type) {\n if (!this.canRemoveSourceBuffer()) {\n videojs.log.error('removeSourceBuffer is not supported!');\n return;\n }\n pushQueue({\n type: 'mediaSource',\n sourceUpdater: this,\n action: actions.removeSourceBuffer(type),\n name: 'removeSourceBuffer'\n });\n }\n /**\n * Whether or not the removeSourceBuffer function is supported\n * on the mediaSource.\n *\n * @return {boolean}\n * if removeSourceBuffer can be called.\n */\n\n canRemoveSourceBuffer() {\n // As of Firefox 83 removeSourceBuffer\n // throws errors, so we report that it does not support this.\n return !videojs.browser.IS_FIREFOX && window$1.MediaSource && window$1.MediaSource.prototype && typeof window$1.MediaSource.prototype.removeSourceBuffer === 'function';\n }\n /**\n * Whether or not the changeType function is supported\n * on our SourceBuffers.\n *\n * @return {boolean}\n * if changeType can be called.\n */\n\n static canChangeType() {\n return window$1.SourceBuffer && window$1.SourceBuffer.prototype && typeof window$1.SourceBuffer.prototype.changeType === 'function';\n }\n /**\n * Whether or not the changeType function is supported\n * on our SourceBuffers.\n *\n * @return {boolean}\n * if changeType can be called.\n */\n\n canChangeType() {\n return this.constructor.canChangeType();\n }\n /**\n * Call the changeType function on a source buffer, given the code and type.\n *\n * @param {string} type\n * The type of source buffer to call changeType on.\n *\n * @param {string} codec\n * The codec string to change type with on the source buffer.\n */\n\n changeType(type, codec) {\n if (!this.canChangeType()) {\n videojs.log.error('changeType is not supported!');\n return;\n }\n pushQueue({\n type,\n sourceUpdater: this,\n action: actions.changeType(codec),\n name: 'changeType'\n });\n }\n /**\n * Add source buffers with a codec or, if they are already created,\n * call changeType on source buffers using changeType.\n *\n * @param {Object} codecs\n * Codecs to switch to\n */\n\n addOrChangeSourceBuffers(codecs) {\n if (!codecs || typeof codecs !== 'object' || Object.keys(codecs).length === 0) {\n throw new Error('Cannot addOrChangeSourceBuffers to undefined codecs');\n }\n Object.keys(codecs).forEach(type => {\n const codec = codecs[type];\n if (!this.hasCreatedSourceBuffers()) {\n return this.addSourceBuffer(type, codec);\n }\n if (this.canChangeType()) {\n this.changeType(type, codec);\n }\n });\n }\n /**\n * Queue an update to append an ArrayBuffer.\n *\n * @param {MediaObject} object containing audioBytes and/or videoBytes\n * @param {Function} done the function to call when done\n * @see http://www.w3.org/TR/media-source/#widl-SourceBuffer-appendBuffer-void-ArrayBuffer-data\n */\n\n appendBuffer(options, doneFn) {\n const {\n segmentInfo,\n type,\n bytes\n } = options;\n this.processedAppend_ = true;\n if (type === 'audio' && this.videoBuffer && !this.videoAppendQueued_) {\n this.delayedAudioAppendQueue_.push([options, doneFn]);\n this.logger_(`delayed audio append of ${bytes.length} until video append`);\n return;\n } // In the case of certain errors, for instance, QUOTA_EXCEEDED_ERR, updateend will\n // not be fired. This means that the queue will be blocked until the next action\n // taken by the segment-loader. Provide a mechanism for segment-loader to handle\n // these errors by calling the doneFn with the specific error.\n\n const onError = doneFn;\n pushQueue({\n type,\n sourceUpdater: this,\n action: actions.appendBuffer(bytes, segmentInfo || {\n mediaIndex: -1\n }, onError),\n doneFn,\n name: 'appendBuffer'\n });\n if (type === 'video') {\n this.videoAppendQueued_ = true;\n if (!this.delayedAudioAppendQueue_.length) {\n return;\n }\n const queue = this.delayedAudioAppendQueue_.slice();\n this.logger_(`queuing delayed audio ${queue.length} appendBuffers`);\n this.delayedAudioAppendQueue_.length = 0;\n queue.forEach(que => {\n this.appendBuffer.apply(this, que);\n });\n }\n }\n /**\n * Get the audio buffer's buffered timerange.\n *\n * @return {TimeRange}\n * The audio buffer's buffered time range\n */\n\n audioBuffered() {\n // no media source/source buffer or it isn't in the media sources\n // source buffer list\n if (!inSourceBuffers(this.mediaSource, this.audioBuffer)) {\n return createTimeRanges();\n }\n return this.audioBuffer.buffered ? this.audioBuffer.buffered : createTimeRanges();\n }\n /**\n * Get the video buffer's buffered timerange.\n *\n * @return {TimeRange}\n * The video buffer's buffered time range\n */\n\n videoBuffered() {\n // no media source/source buffer or it isn't in the media sources\n // source buffer list\n if (!inSourceBuffers(this.mediaSource, this.videoBuffer)) {\n return createTimeRanges();\n }\n return this.videoBuffer.buffered ? this.videoBuffer.buffered : createTimeRanges();\n }\n /**\n * Get a combined video/audio buffer's buffered timerange.\n *\n * @return {TimeRange}\n * the combined time range\n */\n\n buffered() {\n const video = inSourceBuffers(this.mediaSource, this.videoBuffer) ? this.videoBuffer : null;\n const audio = inSourceBuffers(this.mediaSource, this.audioBuffer) ? this.audioBuffer : null;\n if (audio && !video) {\n return this.audioBuffered();\n }\n if (video && !audio) {\n return this.videoBuffered();\n }\n return bufferIntersection(this.audioBuffered(), this.videoBuffered());\n }\n /**\n * Add a callback to the queue that will set duration on the mediaSource.\n *\n * @param {number} duration\n * The duration to set\n *\n * @param {Function} [doneFn]\n * function to run after duration has been set.\n */\n\n setDuration(duration, doneFn = noop) {\n // In order to set the duration on the media source, it's necessary to wait for all\n // source buffers to no longer be updating. \"If the updating attribute equals true on\n // any SourceBuffer in sourceBuffers, then throw an InvalidStateError exception and\n // abort these steps.\" (source: https://www.w3.org/TR/media-source/#attributes).\n pushQueue({\n type: 'mediaSource',\n sourceUpdater: this,\n action: actions.duration(duration),\n name: 'duration',\n doneFn\n });\n }\n /**\n * Add a mediaSource endOfStream call to the queue\n *\n * @param {Error} [error]\n * Call endOfStream with an error\n *\n * @param {Function} [doneFn]\n * A function that should be called when the\n * endOfStream call has finished.\n */\n\n endOfStream(error = null, doneFn = noop) {\n if (typeof error !== 'string') {\n error = undefined;\n } // In order to set the duration on the media source, it's necessary to wait for all\n // source buffers to no longer be updating. \"If the updating attribute equals true on\n // any SourceBuffer in sourceBuffers, then throw an InvalidStateError exception and\n // abort these steps.\" (source: https://www.w3.org/TR/media-source/#attributes).\n\n pushQueue({\n type: 'mediaSource',\n sourceUpdater: this,\n action: actions.endOfStream(error),\n name: 'endOfStream',\n doneFn\n });\n }\n /**\n * Queue an update to remove a time range from the buffer.\n *\n * @param {number} start where to start the removal\n * @param {number} end where to end the removal\n * @param {Function} [done=noop] optional callback to be executed when the remove\n * operation is complete\n * @see http://www.w3.org/TR/media-source/#widl-SourceBuffer-remove-void-double-start-unrestricted-double-end\n */\n\n removeAudio(start, end, done = noop) {\n if (!this.audioBuffered().length || this.audioBuffered().end(0) === 0) {\n done();\n return;\n }\n pushQueue({\n type: 'audio',\n sourceUpdater: this,\n action: actions.remove(start, end),\n doneFn: done,\n name: 'remove'\n });\n }\n /**\n * Queue an update to remove a time range from the buffer.\n *\n * @param {number} start where to start the removal\n * @param {number} end where to end the removal\n * @param {Function} [done=noop] optional callback to be executed when the remove\n * operation is complete\n * @see http://www.w3.org/TR/media-source/#widl-SourceBuffer-remove-void-double-start-unrestricted-double-end\n */\n\n removeVideo(start, end, done = noop) {\n if (!this.videoBuffered().length || this.videoBuffered().end(0) === 0) {\n done();\n return;\n }\n pushQueue({\n type: 'video',\n sourceUpdater: this,\n action: actions.remove(start, end),\n doneFn: done,\n name: 'remove'\n });\n }\n /**\n * Whether the underlying sourceBuffer is updating or not\n *\n * @return {boolean} the updating status of the SourceBuffer\n */\n\n updating() {\n // the audio/video source buffer is updating\n if (updating('audio', this) || updating('video', this)) {\n return true;\n }\n return false;\n }\n /**\n * Set/get the timestampoffset on the audio SourceBuffer\n *\n * @return {number} the timestamp offset\n */\n\n audioTimestampOffset(offset) {\n if (typeof offset !== 'undefined' && this.audioBuffer &&\n // no point in updating if it's the same\n this.audioTimestampOffset_ !== offset) {\n pushQueue({\n type: 'audio',\n sourceUpdater: this,\n action: actions.timestampOffset(offset),\n name: 'timestampOffset'\n });\n this.audioTimestampOffset_ = offset;\n }\n return this.audioTimestampOffset_;\n }\n /**\n * Set/get the timestampoffset on the video SourceBuffer\n *\n * @return {number} the timestamp offset\n */\n\n videoTimestampOffset(offset) {\n if (typeof offset !== 'undefined' && this.videoBuffer &&\n // no point in updating if it's the same\n this.videoTimestampOffset_ !== offset) {\n pushQueue({\n type: 'video',\n sourceUpdater: this,\n action: actions.timestampOffset(offset),\n name: 'timestampOffset'\n });\n this.videoTimestampOffset_ = offset;\n }\n return this.videoTimestampOffset_;\n }\n /**\n * Add a function to the queue that will be called\n * when it is its turn to run in the audio queue.\n *\n * @param {Function} callback\n * The callback to queue.\n */\n\n audioQueueCallback(callback) {\n if (!this.audioBuffer) {\n return;\n }\n pushQueue({\n type: 'audio',\n sourceUpdater: this,\n action: actions.callback(callback),\n name: 'callback'\n });\n }\n /**\n * Add a function to the queue that will be called\n * when it is its turn to run in the video queue.\n *\n * @param {Function} callback\n * The callback to queue.\n */\n\n videoQueueCallback(callback) {\n if (!this.videoBuffer) {\n return;\n }\n pushQueue({\n type: 'video',\n sourceUpdater: this,\n action: actions.callback(callback),\n name: 'callback'\n });\n }\n /**\n * dispose of the source updater and the underlying sourceBuffer\n */\n\n dispose() {\n this.trigger('dispose');\n bufferTypes.forEach(type => {\n this.abort(type);\n if (this.canRemoveSourceBuffer()) {\n this.removeSourceBuffer(type);\n } else {\n this[`${type}QueueCallback`](() => cleanupBuffer(type, this));\n }\n });\n this.videoAppendQueued_ = false;\n this.delayedAudioAppendQueue_.length = 0;\n if (this.sourceopenListener_) {\n this.mediaSource.removeEventListener('sourceopen', this.sourceopenListener_);\n }\n this.off();\n }\n}\nconst uint8ToUtf8 = uintArray => decodeURIComponent(escape(String.fromCharCode.apply(null, uintArray)));\nconst bufferToHexString = buffer => {\n const uInt8Buffer = new Uint8Array(buffer);\n return Array.from(uInt8Buffer).map(byte => byte.toString(16).padStart(2, '0')).join('');\n};\n\n/**\n * @file vtt-segment-loader.js\n */\nconst VTT_LINE_TERMINATORS = new Uint8Array('\\n\\n'.split('').map(char => char.charCodeAt(0)));\nclass NoVttJsError extends Error {\n constructor() {\n super('Trying to parse received VTT cues, but there is no WebVTT. Make sure vtt.js is loaded.');\n }\n}\n/**\n * An object that manages segment loading and appending.\n *\n * @class VTTSegmentLoader\n * @param {Object} options required and optional options\n * @extends videojs.EventTarget\n */\n\nclass VTTSegmentLoader extends SegmentLoader {\n constructor(settings, options = {}) {\n super(settings, options); // SegmentLoader requires a MediaSource be specified or it will throw an error;\n // however, VTTSegmentLoader has no need of a media source, so delete the reference\n\n this.mediaSource_ = null;\n this.subtitlesTrack_ = null;\n this.featuresNativeTextTracks_ = settings.featuresNativeTextTracks;\n this.loadVttJs = settings.loadVttJs; // The VTT segment will have its own time mappings. Saving VTT segment timing info in\n // the sync controller leads to improper behavior.\n\n this.shouldSaveSegmentTimingInfo_ = false;\n }\n createTransmuxer_() {\n // don't need to transmux any subtitles\n return null;\n }\n /**\n * Indicates which time ranges are buffered\n *\n * @return {TimeRange}\n * TimeRange object representing the current buffered ranges\n */\n\n buffered_() {\n if (!this.subtitlesTrack_ || !this.subtitlesTrack_.cues || !this.subtitlesTrack_.cues.length) {\n return createTimeRanges();\n }\n const cues = this.subtitlesTrack_.cues;\n const start = cues[0].startTime;\n const end = cues[cues.length - 1].startTime;\n return createTimeRanges([[start, end]]);\n }\n /**\n * Gets and sets init segment for the provided map\n *\n * @param {Object} map\n * The map object representing the init segment to get or set\n * @param {boolean=} set\n * If true, the init segment for the provided map should be saved\n * @return {Object}\n * map object for desired init segment\n */\n\n initSegmentForMap(map, set = false) {\n if (!map) {\n return null;\n }\n const id = initSegmentId(map);\n let storedMap = this.initSegments_[id];\n if (set && !storedMap && map.bytes) {\n // append WebVTT line terminators to the media initialization segment if it exists\n // to follow the WebVTT spec (https://w3c.github.io/webvtt/#file-structure) that\n // requires two or more WebVTT line terminators between the WebVTT header and the\n // rest of the file\n const combinedByteLength = VTT_LINE_TERMINATORS.byteLength + map.bytes.byteLength;\n const combinedSegment = new Uint8Array(combinedByteLength);\n combinedSegment.set(map.bytes);\n combinedSegment.set(VTT_LINE_TERMINATORS, map.bytes.byteLength);\n this.initSegments_[id] = storedMap = {\n resolvedUri: map.resolvedUri,\n byterange: map.byterange,\n bytes: combinedSegment\n };\n }\n return storedMap || map;\n }\n /**\n * Returns true if all configuration required for loading is present, otherwise false.\n *\n * @return {boolean} True if the all configuration is ready for loading\n * @private\n */\n\n couldBeginLoading_() {\n return this.playlist_ && this.subtitlesTrack_ && !this.paused();\n }\n /**\n * Once all the starting parameters have been specified, begin\n * operation. This method should only be invoked from the INIT\n * state.\n *\n * @private\n */\n\n init_() {\n this.state = 'READY';\n this.resetEverything();\n return this.monitorBuffer_();\n }\n /**\n * Set a subtitle track on the segment loader to add subtitles to\n *\n * @param {TextTrack=} track\n * The text track to add loaded subtitles to\n * @return {TextTrack}\n * Returns the subtitles track\n */\n\n track(track) {\n if (typeof track === 'undefined') {\n return this.subtitlesTrack_;\n }\n this.subtitlesTrack_ = track; // if we were unpaused but waiting for a sourceUpdater, start\n // buffering now\n\n if (this.state === 'INIT' && this.couldBeginLoading_()) {\n this.init_();\n }\n return this.subtitlesTrack_;\n }\n /**\n * Remove any data in the source buffer between start and end times\n *\n * @param {number} start - the start time of the region to remove from the buffer\n * @param {number} end - the end time of the region to remove from the buffer\n */\n\n remove(start, end) {\n removeCuesFromTrack(start, end, this.subtitlesTrack_);\n }\n /**\n * fill the buffer with segements unless the sourceBuffers are\n * currently updating\n *\n * Note: this function should only ever be called by monitorBuffer_\n * and never directly\n *\n * @private\n */\n\n fillBuffer_() {\n // see if we need to begin loading immediately\n const segmentInfo = this.chooseNextRequest_();\n if (!segmentInfo) {\n return;\n }\n if (this.syncController_.timestampOffsetForTimeline(segmentInfo.timeline) === null) {\n // We don't have the timestamp offset that we need to sync subtitles.\n // Rerun on a timestamp offset or user interaction.\n const checkTimestampOffset = () => {\n this.state = 'READY';\n if (!this.paused()) {\n // if not paused, queue a buffer check as soon as possible\n this.monitorBuffer_();\n }\n };\n this.syncController_.one('timestampoffset', checkTimestampOffset);\n this.state = 'WAITING_ON_TIMELINE';\n return;\n }\n this.loadSegment_(segmentInfo);\n } // never set a timestamp offset for vtt segments.\n\n timestampOffsetForSegment_() {\n return null;\n }\n chooseNextRequest_() {\n return this.skipEmptySegments_(super.chooseNextRequest_());\n }\n /**\n * Prevents the segment loader from requesting segments we know contain no subtitles\n * by walking forward until we find the next segment that we don't know whether it is\n * empty or not.\n *\n * @param {Object} segmentInfo\n * a segment info object that describes the current segment\n * @return {Object}\n * a segment info object that describes the current segment\n */\n\n skipEmptySegments_(segmentInfo) {\n while (segmentInfo && segmentInfo.segment.empty) {\n // stop at the last possible segmentInfo\n if (segmentInfo.mediaIndex + 1 >= segmentInfo.playlist.segments.length) {\n segmentInfo = null;\n break;\n }\n segmentInfo = this.generateSegmentInfo_({\n playlist: segmentInfo.playlist,\n mediaIndex: segmentInfo.mediaIndex + 1,\n startOfSegment: segmentInfo.startOfSegment + segmentInfo.duration,\n isSyncRequest: segmentInfo.isSyncRequest\n });\n }\n return segmentInfo;\n }\n stopForError(error) {\n this.error(error);\n this.state = 'READY';\n this.pause();\n this.trigger('error');\n }\n /**\n * append a decrypted segement to the SourceBuffer through a SourceUpdater\n *\n * @private\n */\n\n segmentRequestFinished_(error, simpleSegment, result) {\n if (!this.subtitlesTrack_) {\n this.state = 'READY';\n return;\n }\n this.saveTransferStats_(simpleSegment.stats); // the request was aborted\n\n if (!this.pendingSegment_) {\n this.state = 'READY';\n this.mediaRequestsAborted += 1;\n return;\n }\n if (error) {\n if (error.code === REQUEST_ERRORS.TIMEOUT) {\n this.handleTimeout_();\n }\n if (error.code === REQUEST_ERRORS.ABORTED) {\n this.mediaRequestsAborted += 1;\n } else {\n this.mediaRequestsErrored += 1;\n }\n this.stopForError(error);\n return;\n }\n const segmentInfo = this.pendingSegment_; // although the VTT segment loader bandwidth isn't really used, it's good to\n // maintain functionality between segment loaders\n\n this.saveBandwidthRelatedStats_(segmentInfo.duration, simpleSegment.stats); // if this request included a segment key, save that data in the cache\n\n if (simpleSegment.key) {\n this.segmentKey(simpleSegment.key, true);\n }\n this.state = 'APPENDING'; // used for tests\n\n this.trigger('appending');\n const segment = segmentInfo.segment;\n if (segment.map) {\n segment.map.bytes = simpleSegment.map.bytes;\n }\n segmentInfo.bytes = simpleSegment.bytes; // Make sure that vttjs has loaded, otherwise, load it and wait till it finished loading\n\n if (typeof window$1.WebVTT !== 'function' && typeof this.loadVttJs === 'function') {\n this.state = 'WAITING_ON_VTTJS'; // should be fine to call multiple times\n // script will be loaded once but multiple listeners will be added to the queue, which is expected.\n\n this.loadVttJs().then(() => this.segmentRequestFinished_(error, simpleSegment, result), () => this.stopForError({\n message: 'Error loading vtt.js'\n }));\n return;\n }\n segment.requested = true;\n try {\n this.parseVTTCues_(segmentInfo);\n } catch (e) {\n this.stopForError({\n message: e.message,\n metadata: {\n errorType: videojs.Error.StreamingVttParserError,\n error: e\n }\n });\n return;\n }\n this.updateTimeMapping_(segmentInfo, this.syncController_.timelines[segmentInfo.timeline], this.playlist_);\n if (segmentInfo.cues.length) {\n segmentInfo.timingInfo = {\n start: segmentInfo.cues[0].startTime,\n end: segmentInfo.cues[segmentInfo.cues.length - 1].endTime\n };\n } else {\n segmentInfo.timingInfo = {\n start: segmentInfo.startOfSegment,\n end: segmentInfo.startOfSegment + segmentInfo.duration\n };\n }\n if (segmentInfo.isSyncRequest) {\n this.trigger('syncinfoupdate');\n this.pendingSegment_ = null;\n this.state = 'READY';\n return;\n }\n segmentInfo.byteLength = segmentInfo.bytes.byteLength;\n this.mediaSecondsLoaded += segment.duration; // Create VTTCue instances for each cue in the new segment and add them to\n // the subtitle track\n\n segmentInfo.cues.forEach(cue => {\n this.subtitlesTrack_.addCue(this.featuresNativeTextTracks_ ? new window$1.VTTCue(cue.startTime, cue.endTime, cue.text) : cue);\n }); // Remove any duplicate cues from the subtitle track. The WebVTT spec allows\n // cues to have identical time-intervals, but if the text is also identical\n // we can safely assume it is a duplicate that can be removed (ex. when a cue\n // \"overlaps\" VTT segments)\n\n removeDuplicateCuesFromTrack(this.subtitlesTrack_);\n this.handleAppendsDone_();\n }\n handleData_() {// noop as we shouldn't be getting video/audio data captions\n // that we do not support here.\n }\n updateTimingInfoEnd_() {// noop\n }\n /**\n * Uses the WebVTT parser to parse the segment response\n *\n * @throws NoVttJsError\n *\n * @param {Object} segmentInfo\n * a segment info object that describes the current segment\n * @private\n */\n\n parseVTTCues_(segmentInfo) {\n let decoder;\n let decodeBytesToString = false;\n if (typeof window$1.WebVTT !== 'function') {\n // caller is responsible for exception handling.\n throw new NoVttJsError();\n }\n if (typeof window$1.TextDecoder === 'function') {\n decoder = new window$1.TextDecoder('utf8');\n } else {\n decoder = window$1.WebVTT.StringDecoder();\n decodeBytesToString = true;\n }\n const parser = new window$1.WebVTT.Parser(window$1, window$1.vttjs, decoder);\n segmentInfo.cues = [];\n segmentInfo.timestampmap = {\n MPEGTS: 0,\n LOCAL: 0\n };\n parser.oncue = segmentInfo.cues.push.bind(segmentInfo.cues);\n parser.ontimestampmap = map => {\n segmentInfo.timestampmap = map;\n };\n parser.onparsingerror = error => {\n videojs.log.warn('Error encountered when parsing cues: ' + error.message);\n };\n if (segmentInfo.segment.map) {\n let mapData = segmentInfo.segment.map.bytes;\n if (decodeBytesToString) {\n mapData = uint8ToUtf8(mapData);\n }\n parser.parse(mapData);\n }\n let segmentData = segmentInfo.bytes;\n if (decodeBytesToString) {\n segmentData = uint8ToUtf8(segmentData);\n }\n parser.parse(segmentData);\n parser.flush();\n }\n /**\n * Updates the start and end times of any cues parsed by the WebVTT parser using\n * the information parsed from the X-TIMESTAMP-MAP header and a TS to media time mapping\n * from the SyncController\n *\n * @param {Object} segmentInfo\n * a segment info object that describes the current segment\n * @param {Object} mappingObj\n * object containing a mapping from TS to media time\n * @param {Object} playlist\n * the playlist object containing the segment\n * @private\n */\n\n updateTimeMapping_(segmentInfo, mappingObj, playlist) {\n const segment = segmentInfo.segment;\n if (!mappingObj) {\n // If the sync controller does not have a mapping of TS to Media Time for the\n // timeline, then we don't have enough information to update the cue\n // start/end times\n return;\n }\n if (!segmentInfo.cues.length) {\n // If there are no cues, we also do not have enough information to figure out\n // segment timing. Mark that the segment contains no cues so we don't re-request\n // an empty segment.\n segment.empty = true;\n return;\n }\n const {\n MPEGTS,\n LOCAL\n } = segmentInfo.timestampmap;\n /**\n * From the spec:\n * The MPEGTS media timestamp MUST use a 90KHz timescale,\n * even when non-WebVTT Media Segments use a different timescale.\n */\n\n const mpegTsInSeconds = MPEGTS / ONE_SECOND_IN_TS;\n const diff = mpegTsInSeconds - LOCAL + mappingObj.mapping;\n segmentInfo.cues.forEach(cue => {\n const duration = cue.endTime - cue.startTime;\n const startTime = this.handleRollover_(cue.startTime + diff, mappingObj.time);\n cue.startTime = Math.max(startTime, 0);\n cue.endTime = Math.max(startTime + duration, 0);\n });\n if (!playlist.syncInfo) {\n const firstStart = segmentInfo.cues[0].startTime;\n const lastStart = segmentInfo.cues[segmentInfo.cues.length - 1].startTime;\n playlist.syncInfo = {\n mediaSequence: playlist.mediaSequence + segmentInfo.mediaIndex,\n time: Math.min(firstStart, lastStart - segment.duration)\n };\n }\n }\n /**\n * MPEG-TS PES timestamps are limited to 2^33.\n * Once they reach 2^33, they roll over to 0.\n * mux.js handles PES timestamp rollover for the following scenarios:\n * [forward rollover(right)] ->\n * PES timestamps monotonically increase, and once they reach 2^33, they roll over to 0\n * [backward rollover(left)] -->\n * we seek back to position before rollover.\n *\n * According to the HLS SPEC:\n * When synchronizing WebVTT with PES timestamps, clients SHOULD account\n * for cases where the 33-bit PES timestamps have wrapped and the WebVTT\n * cue times have not. When the PES timestamp wraps, the WebVTT Segment\n * SHOULD have a X-TIMESTAMP-MAP header that maps the current WebVTT\n * time to the new (low valued) PES timestamp.\n *\n * So we want to handle rollover here and align VTT Cue start/end time to the player's time.\n */\n\n handleRollover_(value, reference) {\n if (reference === null) {\n return value;\n }\n let valueIn90khz = value * ONE_SECOND_IN_TS;\n const referenceIn90khz = reference * ONE_SECOND_IN_TS;\n let offset;\n if (referenceIn90khz < valueIn90khz) {\n // - 2^33\n offset = -8589934592;\n } else {\n // + 2^33\n offset = 8589934592;\n } // distance(value - reference) > 2^32\n\n while (Math.abs(valueIn90khz - referenceIn90khz) > 4294967296) {\n valueIn90khz += offset;\n }\n return valueIn90khz / ONE_SECOND_IN_TS;\n }\n}\n\n/**\n * @file ad-cue-tags.js\n */\n/**\n * Searches for an ad cue that overlaps with the given mediaTime\n *\n * @param {Object} track\n * the track to find the cue for\n *\n * @param {number} mediaTime\n * the time to find the cue at\n *\n * @return {Object|null}\n * the found cue or null\n */\n\nconst findAdCue = function (track, mediaTime) {\n const cues = track.cues;\n for (let i = 0; i < cues.length; i++) {\n const cue = cues[i];\n if (mediaTime >= cue.adStartTime && mediaTime <= cue.adEndTime) {\n return cue;\n }\n }\n return null;\n};\nconst updateAdCues = function (media, track, offset = 0) {\n if (!media.segments) {\n return;\n }\n let mediaTime = offset;\n let cue;\n for (let i = 0; i < media.segments.length; i++) {\n const segment = media.segments[i];\n if (!cue) {\n // Since the cues will span for at least the segment duration, adding a fudge\n // factor of half segment duration will prevent duplicate cues from being\n // created when timing info is not exact (e.g. cue start time initialized\n // at 10.006677, but next call mediaTime is 10.003332 )\n cue = findAdCue(track, mediaTime + segment.duration / 2);\n }\n if (cue) {\n if ('cueIn' in segment) {\n // Found a CUE-IN so end the cue\n cue.endTime = mediaTime;\n cue.adEndTime = mediaTime;\n mediaTime += segment.duration;\n cue = null;\n continue;\n }\n if (mediaTime < cue.endTime) {\n // Already processed this mediaTime for this cue\n mediaTime += segment.duration;\n continue;\n } // otherwise extend cue until a CUE-IN is found\n\n cue.endTime += segment.duration;\n } else {\n if ('cueOut' in segment) {\n cue = new window$1.VTTCue(mediaTime, mediaTime + segment.duration, segment.cueOut);\n cue.adStartTime = mediaTime; // Assumes tag format to be\n // #EXT-X-CUE-OUT:30\n\n cue.adEndTime = mediaTime + parseFloat(segment.cueOut);\n track.addCue(cue);\n }\n if ('cueOutCont' in segment) {\n // Entered into the middle of an ad cue\n // Assumes tag formate to be\n // #EXT-X-CUE-OUT-CONT:10/30\n const [adOffset, adTotal] = segment.cueOutCont.split('/').map(parseFloat);\n cue = new window$1.VTTCue(mediaTime, mediaTime + segment.duration, '');\n cue.adStartTime = mediaTime - adOffset;\n cue.adEndTime = cue.adStartTime + adTotal;\n track.addCue(cue);\n }\n }\n mediaTime += segment.duration;\n }\n};\nclass SyncInfo {\n /**\n * @param {number} start - media sequence start\n * @param {number} end - media sequence end\n * @param {number} segmentIndex - index for associated segment\n * @param {number|null} [partIndex] - index for associated part\n * @param {boolean} [appended] - appended indicator\n *\n */\n constructor({\n start,\n end,\n segmentIndex,\n partIndex = null,\n appended = false\n }) {\n this.start_ = start;\n this.end_ = end;\n this.segmentIndex_ = segmentIndex;\n this.partIndex_ = partIndex;\n this.appended_ = appended;\n }\n isInRange(targetTime) {\n return targetTime >= this.start && targetTime < this.end;\n }\n markAppended() {\n this.appended_ = true;\n }\n resetAppendedStatus() {\n this.appended_ = false;\n }\n get isAppended() {\n return this.appended_;\n }\n get start() {\n return this.start_;\n }\n get end() {\n return this.end_;\n }\n get segmentIndex() {\n return this.segmentIndex_;\n }\n get partIndex() {\n return this.partIndex_;\n }\n}\nclass SyncInfoData {\n /**\n *\n * @param {SyncInfo} segmentSyncInfo - sync info for a given segment\n * @param {Array} [partsSyncInfo] - sync infos for a list of parts for a given segment\n */\n constructor(segmentSyncInfo, partsSyncInfo = []) {\n this.segmentSyncInfo_ = segmentSyncInfo;\n this.partsSyncInfo_ = partsSyncInfo;\n }\n get segmentSyncInfo() {\n return this.segmentSyncInfo_;\n }\n get partsSyncInfo() {\n return this.partsSyncInfo_;\n }\n get hasPartsSyncInfo() {\n return this.partsSyncInfo_.length > 0;\n }\n resetAppendStatus() {\n this.segmentSyncInfo_.resetAppendedStatus();\n this.partsSyncInfo_.forEach(partSyncInfo => partSyncInfo.resetAppendedStatus());\n }\n}\nclass MediaSequenceSync {\n constructor() {\n /**\n * @type {Map}\n * @protected\n */\n this.storage_ = new Map();\n this.diagnostics_ = '';\n this.isReliable_ = false;\n this.start_ = -Infinity;\n this.end_ = Infinity;\n }\n get start() {\n return this.start_;\n }\n get end() {\n return this.end_;\n }\n get diagnostics() {\n return this.diagnostics_;\n }\n get isReliable() {\n return this.isReliable_;\n }\n resetAppendedStatus() {\n this.storage_.forEach(syncInfoData => syncInfoData.resetAppendStatus());\n }\n /**\n * update sync storage\n *\n * @param {Object} playlist\n * @param {number} currentTime\n *\n * @return {void}\n */\n\n update(playlist, currentTime) {\n const {\n mediaSequence,\n segments\n } = playlist;\n this.isReliable_ = this.isReliablePlaylist_(mediaSequence, segments);\n if (!this.isReliable_) {\n return;\n }\n return this.updateStorage_(segments, mediaSequence, this.calculateBaseTime_(mediaSequence, currentTime));\n }\n /**\n * @param {number} targetTime\n * @return {SyncInfo|null}\n */\n\n getSyncInfoForTime(targetTime) {\n for (const {\n segmentSyncInfo,\n partsSyncInfo\n } of this.storage_.values()) {\n // Normal segment flow:\n if (!partsSyncInfo.length) {\n if (segmentSyncInfo.isInRange(targetTime)) {\n return segmentSyncInfo;\n }\n } else {\n // Low latency flow:\n for (const partSyncInfo of partsSyncInfo) {\n if (partSyncInfo.isInRange(targetTime)) {\n return partSyncInfo;\n }\n }\n }\n }\n return null;\n }\n getSyncInfoForMediaSequence(mediaSequence) {\n return this.storage_.get(mediaSequence);\n }\n updateStorage_(segments, startingMediaSequence, startingTime) {\n const newStorage = new Map();\n let newDiagnostics = '\\n';\n let currentStart = startingTime;\n let currentMediaSequence = startingMediaSequence;\n this.start_ = currentStart;\n segments.forEach((segment, segmentIndex) => {\n const prevSyncInfoData = this.storage_.get(currentMediaSequence);\n const segmentStart = currentStart;\n const segmentEnd = segmentStart + segment.duration;\n const segmentIsAppended = Boolean(prevSyncInfoData && prevSyncInfoData.segmentSyncInfo && prevSyncInfoData.segmentSyncInfo.isAppended);\n const segmentSyncInfo = new SyncInfo({\n start: segmentStart,\n end: segmentEnd,\n appended: segmentIsAppended,\n segmentIndex\n });\n segment.syncInfo = segmentSyncInfo;\n let currentPartStart = currentStart;\n const partsSyncInfo = (segment.parts || []).map((part, partIndex) => {\n const partStart = currentPartStart;\n const partEnd = currentPartStart + part.duration;\n const partIsAppended = Boolean(prevSyncInfoData && prevSyncInfoData.partsSyncInfo && prevSyncInfoData.partsSyncInfo[partIndex] && prevSyncInfoData.partsSyncInfo[partIndex].isAppended);\n const partSyncInfo = new SyncInfo({\n start: partStart,\n end: partEnd,\n appended: partIsAppended,\n segmentIndex,\n partIndex\n });\n currentPartStart = partEnd;\n newDiagnostics += `Media Sequence: ${currentMediaSequence}.${partIndex} | Range: ${partStart} --> ${partEnd} | Appended: ${partIsAppended}\\n`;\n part.syncInfo = partSyncInfo;\n return partSyncInfo;\n });\n newStorage.set(currentMediaSequence, new SyncInfoData(segmentSyncInfo, partsSyncInfo));\n newDiagnostics += `${compactSegmentUrlDescription(segment.resolvedUri)} | Media Sequence: ${currentMediaSequence} | Range: ${segmentStart} --> ${segmentEnd} | Appended: ${segmentIsAppended}\\n`;\n currentMediaSequence++;\n currentStart = segmentEnd;\n });\n this.end_ = currentStart;\n this.storage_ = newStorage;\n this.diagnostics_ = newDiagnostics;\n }\n calculateBaseTime_(mediaSequence, fallback) {\n if (!this.storage_.size) {\n // Initial setup flow.\n return 0;\n }\n if (this.storage_.has(mediaSequence)) {\n // Normal flow.\n return this.storage_.get(mediaSequence).segmentSyncInfo.start;\n } // Fallback flow.\n // There is a gap between last recorded playlist and a new one received.\n\n return fallback;\n }\n isReliablePlaylist_(mediaSequence, segments) {\n return mediaSequence !== undefined && mediaSequence !== null && Array.isArray(segments) && segments.length;\n }\n}\nclass DependantMediaSequenceSync extends MediaSequenceSync {\n constructor(parent) {\n super();\n this.parent_ = parent;\n }\n calculateBaseTime_(mediaSequence, fallback) {\n if (!this.storage_.size) {\n const info = this.parent_.getSyncInfoForMediaSequence(mediaSequence);\n if (info) {\n return info.segmentSyncInfo.start;\n }\n return 0;\n }\n return super.calculateBaseTime_(mediaSequence, fallback);\n }\n}\n\n/**\n * @file sync-controller.js\n */\n// synchronize expired playlist segments.\n// the max media sequence diff is 48 hours of live stream\n// content with two second segments. Anything larger than that\n// will likely be invalid.\n\nconst MAX_MEDIA_SEQUENCE_DIFF_FOR_SYNC = 86400;\nconst syncPointStrategies = [\n// Stategy \"VOD\": Handle the VOD-case where the sync-point is *always*\n// the equivalence display-time 0 === segment-index 0\n{\n name: 'VOD',\n run: (syncController, playlist, duration, currentTimeline, currentTime) => {\n if (duration !== Infinity) {\n const syncPoint = {\n time: 0,\n segmentIndex: 0,\n partIndex: null\n };\n return syncPoint;\n }\n return null;\n }\n}, {\n name: 'MediaSequence',\n /**\n * run media sequence strategy\n *\n * @param {SyncController} syncController\n * @param {Object} playlist\n * @param {number} duration\n * @param {number} currentTimeline\n * @param {number} currentTime\n * @param {string} type\n */\n run: (syncController, playlist, duration, currentTimeline, currentTime, type) => {\n const mediaSequenceSync = syncController.getMediaSequenceSync(type);\n if (!mediaSequenceSync) {\n return null;\n }\n if (!mediaSequenceSync.isReliable) {\n return null;\n }\n const syncInfo = mediaSequenceSync.getSyncInfoForTime(currentTime);\n if (!syncInfo) {\n return null;\n }\n return {\n time: syncInfo.start,\n partIndex: syncInfo.partIndex,\n segmentIndex: syncInfo.segmentIndex\n };\n }\n},\n// Stategy \"ProgramDateTime\": We have a program-date-time tag in this playlist\n{\n name: 'ProgramDateTime',\n run: (syncController, playlist, duration, currentTimeline, currentTime) => {\n if (!Object.keys(syncController.timelineToDatetimeMappings).length) {\n return null;\n }\n let syncPoint = null;\n let lastDistance = null;\n const partsAndSegments = getPartsAndSegments(playlist);\n currentTime = currentTime || 0;\n for (let i = 0; i < partsAndSegments.length; i++) {\n // start from the end and loop backwards for live\n // or start from the front and loop forwards for non-live\n const index = playlist.endList || currentTime === 0 ? i : partsAndSegments.length - (i + 1);\n const partAndSegment = partsAndSegments[index];\n const segment = partAndSegment.segment;\n const datetimeMapping = syncController.timelineToDatetimeMappings[segment.timeline];\n if (!datetimeMapping || !segment.dateTimeObject) {\n continue;\n }\n const segmentTime = segment.dateTimeObject.getTime() / 1000;\n let start = segmentTime + datetimeMapping; // take part duration into account.\n\n if (segment.parts && typeof partAndSegment.partIndex === 'number') {\n for (let z = 0; z < partAndSegment.partIndex; z++) {\n start += segment.parts[z].duration;\n }\n }\n const distance = Math.abs(currentTime - start); // Once the distance begins to increase, or if distance is 0, we have passed\n // currentTime and can stop looking for better candidates\n\n if (lastDistance !== null && (distance === 0 || lastDistance < distance)) {\n break;\n }\n lastDistance = distance;\n syncPoint = {\n time: start,\n segmentIndex: partAndSegment.segmentIndex,\n partIndex: partAndSegment.partIndex\n };\n }\n return syncPoint;\n }\n},\n// Stategy \"Segment\": We have a known time mapping for a timeline and a\n// segment in the current timeline with timing data\n{\n name: 'Segment',\n run: (syncController, playlist, duration, currentTimeline, currentTime) => {\n let syncPoint = null;\n let lastDistance = null;\n currentTime = currentTime || 0;\n const partsAndSegments = getPartsAndSegments(playlist);\n for (let i = 0; i < partsAndSegments.length; i++) {\n // start from the end and loop backwards for live\n // or start from the front and loop forwards for non-live\n const index = playlist.endList || currentTime === 0 ? i : partsAndSegments.length - (i + 1);\n const partAndSegment = partsAndSegments[index];\n const segment = partAndSegment.segment;\n const start = partAndSegment.part && partAndSegment.part.start || segment && segment.start;\n if (segment.timeline === currentTimeline && typeof start !== 'undefined') {\n const distance = Math.abs(currentTime - start); // Once the distance begins to increase, we have passed\n // currentTime and can stop looking for better candidates\n\n if (lastDistance !== null && lastDistance < distance) {\n break;\n }\n if (!syncPoint || lastDistance === null || lastDistance >= distance) {\n lastDistance = distance;\n syncPoint = {\n time: start,\n segmentIndex: partAndSegment.segmentIndex,\n partIndex: partAndSegment.partIndex\n };\n }\n }\n }\n return syncPoint;\n }\n},\n// Stategy \"Discontinuity\": We have a discontinuity with a known\n// display-time\n{\n name: 'Discontinuity',\n run: (syncController, playlist, duration, currentTimeline, currentTime) => {\n let syncPoint = null;\n currentTime = currentTime || 0;\n if (playlist.discontinuityStarts && playlist.discontinuityStarts.length) {\n let lastDistance = null;\n for (let i = 0; i < playlist.discontinuityStarts.length; i++) {\n const segmentIndex = playlist.discontinuityStarts[i];\n const discontinuity = playlist.discontinuitySequence + i + 1;\n const discontinuitySync = syncController.discontinuities[discontinuity];\n if (discontinuitySync) {\n const distance = Math.abs(currentTime - discontinuitySync.time); // Once the distance begins to increase, we have passed\n // currentTime and can stop looking for better candidates\n\n if (lastDistance !== null && lastDistance < distance) {\n break;\n }\n if (!syncPoint || lastDistance === null || lastDistance >= distance) {\n lastDistance = distance;\n syncPoint = {\n time: discontinuitySync.time,\n segmentIndex,\n partIndex: null\n };\n }\n }\n }\n }\n return syncPoint;\n }\n},\n// Stategy \"Playlist\": We have a playlist with a known mapping of\n// segment index to display time\n{\n name: 'Playlist',\n run: (syncController, playlist, duration, currentTimeline, currentTime) => {\n if (playlist.syncInfo) {\n const syncPoint = {\n time: playlist.syncInfo.time,\n segmentIndex: playlist.syncInfo.mediaSequence - playlist.mediaSequence,\n partIndex: null\n };\n return syncPoint;\n }\n return null;\n }\n}];\nclass SyncController extends videojs.EventTarget {\n constructor(options = {}) {\n super(); // ...for synching across variants\n\n this.timelines = [];\n this.discontinuities = [];\n this.timelineToDatetimeMappings = {}; // TODO: this map should be only available for HLS. Since only HLS has MediaSequence.\n // For some reason this map helps with syncing between quality switch for MPEG-DASH as well.\n // Moreover if we disable this map for MPEG-DASH - quality switch will be broken.\n // MPEG-DASH should have its own separate sync strategy\n\n const main = new MediaSequenceSync();\n const audio = new DependantMediaSequenceSync(main);\n const vtt = new DependantMediaSequenceSync(main);\n this.mediaSequenceStorage_ = {\n main,\n audio,\n vtt\n };\n this.logger_ = logger('SyncController');\n }\n /**\n *\n * @param {string} loaderType\n * @return {MediaSequenceSync|null}\n */\n\n getMediaSequenceSync(loaderType) {\n return this.mediaSequenceStorage_[loaderType] || null;\n }\n /**\n * Find a sync-point for the playlist specified\n *\n * A sync-point is defined as a known mapping from display-time to\n * a segment-index in the current playlist.\n *\n * @param {Playlist} playlist\n * The playlist that needs a sync-point\n * @param {number} duration\n * Duration of the MediaSource (Infinite if playing a live source)\n * @param {number} currentTimeline\n * The last timeline from which a segment was loaded\n * @param {number} currentTime\n * Current player's time\n * @param {string} type\n * Segment loader type\n * @return {Object}\n * A sync-point object\n */\n\n getSyncPoint(playlist, duration, currentTimeline, currentTime, type) {\n // Always use VOD sync point for VOD\n if (duration !== Infinity) {\n const vodSyncPointStrategy = syncPointStrategies.find(({\n name\n }) => name === 'VOD');\n return vodSyncPointStrategy.run(this, playlist, duration);\n }\n const syncPoints = this.runStrategies_(playlist, duration, currentTimeline, currentTime, type);\n if (!syncPoints.length) {\n // Signal that we need to attempt to get a sync-point manually\n // by fetching a segment in the playlist and constructing\n // a sync-point from that information\n return null;\n } // If we have exact match just return it instead of finding the nearest distance\n\n for (const syncPointInfo of syncPoints) {\n const {\n syncPoint,\n strategy\n } = syncPointInfo;\n const {\n segmentIndex,\n time\n } = syncPoint;\n if (segmentIndex < 0) {\n continue;\n }\n const selectedSegment = playlist.segments[segmentIndex];\n const start = time;\n const end = start + selectedSegment.duration;\n this.logger_(`Strategy: ${strategy}. Current time: ${currentTime}. selected segment: ${segmentIndex}. Time: [${start} -> ${end}]}`);\n if (currentTime >= start && currentTime < end) {\n this.logger_('Found sync point with exact match: ', syncPoint);\n return syncPoint;\n }\n } // Now find the sync-point that is closest to the currentTime because\n // that should result in the most accurate guess about which segment\n // to fetch\n\n return this.selectSyncPoint_(syncPoints, {\n key: 'time',\n value: currentTime\n });\n }\n /**\n * Calculate the amount of time that has expired off the playlist during playback\n *\n * @param {Playlist} playlist\n * Playlist object to calculate expired from\n * @param {number} duration\n * Duration of the MediaSource (Infinity if playling a live source)\n * @return {number|null}\n * The amount of time that has expired off the playlist during playback. Null\n * if no sync-points for the playlist can be found.\n */\n\n getExpiredTime(playlist, duration) {\n if (!playlist || !playlist.segments) {\n return null;\n }\n const syncPoints = this.runStrategies_(playlist, duration, playlist.discontinuitySequence, 0); // Without sync-points, there is not enough information to determine the expired time\n\n if (!syncPoints.length) {\n return null;\n }\n const syncPoint = this.selectSyncPoint_(syncPoints, {\n key: 'segmentIndex',\n value: 0\n }); // If the sync-point is beyond the start of the playlist, we want to subtract the\n // duration from index 0 to syncPoint.segmentIndex instead of adding.\n\n if (syncPoint.segmentIndex > 0) {\n syncPoint.time *= -1;\n }\n return Math.abs(syncPoint.time + sumDurations({\n defaultDuration: playlist.targetDuration,\n durationList: playlist.segments,\n startIndex: syncPoint.segmentIndex,\n endIndex: 0\n }));\n }\n /**\n * Runs each sync-point strategy and returns a list of sync-points returned by the\n * strategies\n *\n * @private\n * @param {Playlist} playlist\n * The playlist that needs a sync-point\n * @param {number} duration\n * Duration of the MediaSource (Infinity if playing a live source)\n * @param {number} currentTimeline\n * The last timeline from which a segment was loaded\n * @param {number} currentTime\n * Current player's time\n * @param {string} type\n * Segment loader type\n * @return {Array}\n * A list of sync-point objects\n */\n\n runStrategies_(playlist, duration, currentTimeline, currentTime, type) {\n const syncPoints = []; // Try to find a sync-point in by utilizing various strategies...\n\n for (let i = 0; i < syncPointStrategies.length; i++) {\n const strategy = syncPointStrategies[i];\n const syncPoint = strategy.run(this, playlist, duration, currentTimeline, currentTime, type);\n if (syncPoint) {\n syncPoint.strategy = strategy.name;\n syncPoints.push({\n strategy: strategy.name,\n syncPoint\n });\n }\n }\n return syncPoints;\n }\n /**\n * Selects the sync-point nearest the specified target\n *\n * @private\n * @param {Array} syncPoints\n * List of sync-points to select from\n * @param {Object} target\n * Object specifying the property and value we are targeting\n * @param {string} target.key\n * Specifies the property to target. Must be either 'time' or 'segmentIndex'\n * @param {number} target.value\n * The value to target for the specified key.\n * @return {Object}\n * The sync-point nearest the target\n */\n\n selectSyncPoint_(syncPoints, target) {\n let bestSyncPoint = syncPoints[0].syncPoint;\n let bestDistance = Math.abs(syncPoints[0].syncPoint[target.key] - target.value);\n let bestStrategy = syncPoints[0].strategy;\n for (let i = 1; i < syncPoints.length; i++) {\n const newDistance = Math.abs(syncPoints[i].syncPoint[target.key] - target.value);\n if (newDistance < bestDistance) {\n bestDistance = newDistance;\n bestSyncPoint = syncPoints[i].syncPoint;\n bestStrategy = syncPoints[i].strategy;\n }\n }\n this.logger_(`syncPoint for [${target.key}: ${target.value}] chosen with strategy` + ` [${bestStrategy}]: [time:${bestSyncPoint.time},` + ` segmentIndex:${bestSyncPoint.segmentIndex}` + (typeof bestSyncPoint.partIndex === 'number' ? `,partIndex:${bestSyncPoint.partIndex}` : '') + ']');\n return bestSyncPoint;\n }\n /**\n * Save any meta-data present on the segments when segments leave\n * the live window to the playlist to allow for synchronization at the\n * playlist level later.\n *\n * @param {Playlist} oldPlaylist - The previous active playlist\n * @param {Playlist} newPlaylist - The updated and most current playlist\n */\n\n saveExpiredSegmentInfo(oldPlaylist, newPlaylist) {\n const mediaSequenceDiff = newPlaylist.mediaSequence - oldPlaylist.mediaSequence; // Ignore large media sequence gaps\n\n if (mediaSequenceDiff > MAX_MEDIA_SEQUENCE_DIFF_FOR_SYNC) {\n videojs.log.warn(`Not saving expired segment info. Media sequence gap ${mediaSequenceDiff} is too large.`);\n return;\n } // When a segment expires from the playlist and it has a start time\n // save that information as a possible sync-point reference in future\n\n for (let i = mediaSequenceDiff - 1; i >= 0; i--) {\n const lastRemovedSegment = oldPlaylist.segments[i];\n if (lastRemovedSegment && typeof lastRemovedSegment.start !== 'undefined') {\n newPlaylist.syncInfo = {\n mediaSequence: oldPlaylist.mediaSequence + i,\n time: lastRemovedSegment.start\n };\n this.logger_(`playlist refresh sync: [time:${newPlaylist.syncInfo.time},` + ` mediaSequence: ${newPlaylist.syncInfo.mediaSequence}]`);\n this.trigger('syncinfoupdate');\n break;\n }\n }\n }\n /**\n * Save the mapping from playlist's ProgramDateTime to display. This should only happen\n * before segments start to load.\n *\n * @param {Playlist} playlist - The currently active playlist\n */\n\n setDateTimeMappingForStart(playlist) {\n // It's possible for the playlist to be updated before playback starts, meaning time\n // zero is not yet set. If, during these playlist refreshes, a discontinuity is\n // crossed, then the old time zero mapping (for the prior timeline) would be retained\n // unless the mappings are cleared.\n this.timelineToDatetimeMappings = {};\n if (playlist.segments && playlist.segments.length && playlist.segments[0].dateTimeObject) {\n const firstSegment = playlist.segments[0];\n const playlistTimestamp = firstSegment.dateTimeObject.getTime() / 1000;\n this.timelineToDatetimeMappings[firstSegment.timeline] = -playlistTimestamp;\n }\n }\n /**\n * Calculates and saves timeline mappings, playlist sync info, and segment timing values\n * based on the latest timing information.\n *\n * @param {Object} options\n * Options object\n * @param {SegmentInfo} options.segmentInfo\n * The current active request information\n * @param {boolean} options.shouldSaveTimelineMapping\n * If there's a timeline change, determines if the timeline mapping should be\n * saved for timeline mapping and program date time mappings.\n */\n\n saveSegmentTimingInfo({\n segmentInfo,\n shouldSaveTimelineMapping\n }) {\n const didCalculateSegmentTimeMapping = this.calculateSegmentTimeMapping_(segmentInfo, segmentInfo.timingInfo, shouldSaveTimelineMapping);\n const segment = segmentInfo.segment;\n if (didCalculateSegmentTimeMapping) {\n this.saveDiscontinuitySyncInfo_(segmentInfo); // If the playlist does not have sync information yet, record that information\n // now with segment timing information\n\n if (!segmentInfo.playlist.syncInfo) {\n segmentInfo.playlist.syncInfo = {\n mediaSequence: segmentInfo.playlist.mediaSequence + segmentInfo.mediaIndex,\n time: segment.start\n };\n }\n }\n const dateTime = segment.dateTimeObject;\n if (segment.discontinuity && shouldSaveTimelineMapping && dateTime) {\n this.timelineToDatetimeMappings[segment.timeline] = -(dateTime.getTime() / 1000);\n }\n }\n timestampOffsetForTimeline(timeline) {\n if (typeof this.timelines[timeline] === 'undefined') {\n return null;\n }\n return this.timelines[timeline].time;\n }\n mappingForTimeline(timeline) {\n if (typeof this.timelines[timeline] === 'undefined') {\n return null;\n }\n return this.timelines[timeline].mapping;\n }\n /**\n * Use the \"media time\" for a segment to generate a mapping to \"display time\" and\n * save that display time to the segment.\n *\n * @private\n * @param {SegmentInfo} segmentInfo\n * The current active request information\n * @param {Object} timingInfo\n * The start and end time of the current segment in \"media time\"\n * @param {boolean} shouldSaveTimelineMapping\n * If there's a timeline change, determines if the timeline mapping should be\n * saved in timelines.\n * @return {boolean}\n * Returns false if segment time mapping could not be calculated\n */\n\n calculateSegmentTimeMapping_(segmentInfo, timingInfo, shouldSaveTimelineMapping) {\n // TODO: remove side effects\n const segment = segmentInfo.segment;\n const part = segmentInfo.part;\n let mappingObj = this.timelines[segmentInfo.timeline];\n let start;\n let end;\n if (typeof segmentInfo.timestampOffset === 'number') {\n mappingObj = {\n time: segmentInfo.startOfSegment,\n mapping: segmentInfo.startOfSegment - timingInfo.start\n };\n if (shouldSaveTimelineMapping) {\n this.timelines[segmentInfo.timeline] = mappingObj;\n this.trigger('timestampoffset');\n this.logger_(`time mapping for timeline ${segmentInfo.timeline}: ` + `[time: ${mappingObj.time}] [mapping: ${mappingObj.mapping}]`);\n }\n start = segmentInfo.startOfSegment;\n end = timingInfo.end + mappingObj.mapping;\n } else if (mappingObj) {\n start = timingInfo.start + mappingObj.mapping;\n end = timingInfo.end + mappingObj.mapping;\n } else {\n return false;\n }\n if (part) {\n part.start = start;\n part.end = end;\n } // If we don't have a segment start yet or the start value we got\n // is less than our current segment.start value, save a new start value.\n // We have to do this because parts will have segment timing info saved\n // multiple times and we want segment start to be the earliest part start\n // value for that segment.\n\n if (!segment.start || start < segment.start) {\n segment.start = start;\n }\n segment.end = end;\n return true;\n }\n /**\n * Each time we have discontinuity in the playlist, attempt to calculate the location\n * in display of the start of the discontinuity and save that. We also save an accuracy\n * value so that we save values with the most accuracy (closest to 0.)\n *\n * @private\n * @param {SegmentInfo} segmentInfo - The current active request information\n */\n\n saveDiscontinuitySyncInfo_(segmentInfo) {\n const playlist = segmentInfo.playlist;\n const segment = segmentInfo.segment; // If the current segment is a discontinuity then we know exactly where\n // the start of the range and it's accuracy is 0 (greater accuracy values\n // mean more approximation)\n\n if (segment.discontinuity) {\n this.discontinuities[segment.timeline] = {\n time: segment.start,\n accuracy: 0\n };\n } else if (playlist.discontinuityStarts && playlist.discontinuityStarts.length) {\n // Search for future discontinuities that we can provide better timing\n // information for and save that information for sync purposes\n for (let i = 0; i < playlist.discontinuityStarts.length; i++) {\n const segmentIndex = playlist.discontinuityStarts[i];\n const discontinuity = playlist.discontinuitySequence + i + 1;\n const mediaIndexDiff = segmentIndex - segmentInfo.mediaIndex;\n const accuracy = Math.abs(mediaIndexDiff);\n if (!this.discontinuities[discontinuity] || this.discontinuities[discontinuity].accuracy > accuracy) {\n let time;\n if (mediaIndexDiff < 0) {\n time = segment.start - sumDurations({\n defaultDuration: playlist.targetDuration,\n durationList: playlist.segments,\n startIndex: segmentInfo.mediaIndex,\n endIndex: segmentIndex\n });\n } else {\n time = segment.end + sumDurations({\n defaultDuration: playlist.targetDuration,\n durationList: playlist.segments,\n startIndex: segmentInfo.mediaIndex + 1,\n endIndex: segmentIndex\n });\n }\n this.discontinuities[discontinuity] = {\n time,\n accuracy\n };\n }\n }\n }\n }\n dispose() {\n this.trigger('dispose');\n this.off();\n }\n}\n\n/**\n * The TimelineChangeController acts as a source for segment loaders to listen for and\n * keep track of latest and pending timeline changes. This is useful to ensure proper\n * sync, as each loader may need to make a consideration for what timeline the other\n * loader is on before making changes which could impact the other loader's media.\n *\n * @class TimelineChangeController\n * @extends videojs.EventTarget\n */\n\nclass TimelineChangeController extends videojs.EventTarget {\n constructor() {\n super();\n this.pendingTimelineChanges_ = {};\n this.lastTimelineChanges_ = {};\n }\n clearPendingTimelineChange(type) {\n this.pendingTimelineChanges_[type] = null;\n this.trigger('pendingtimelinechange');\n }\n pendingTimelineChange({\n type,\n from,\n to\n }) {\n if (typeof from === 'number' && typeof to === 'number') {\n this.pendingTimelineChanges_[type] = {\n type,\n from,\n to\n };\n this.trigger('pendingtimelinechange');\n }\n return this.pendingTimelineChanges_[type];\n }\n lastTimelineChange({\n type,\n from,\n to\n }) {\n if (typeof from === 'number' && typeof to === 'number') {\n this.lastTimelineChanges_[type] = {\n type,\n from,\n to\n };\n delete this.pendingTimelineChanges_[type];\n const metadata = {\n timelineChangeInfo: {\n from,\n to\n }\n };\n this.trigger({\n type: 'timelinechange',\n metadata\n });\n }\n return this.lastTimelineChanges_[type];\n }\n dispose() {\n this.trigger('dispose');\n this.pendingTimelineChanges_ = {};\n this.lastTimelineChanges_ = {};\n this.off();\n }\n}\n\n/* rollup-plugin-worker-factory start for worker!/home/runner/work/http-streaming/http-streaming/src/decrypter-worker.js */\nconst workerCode = transform(getWorkerString(function () {\n /**\n * @file stream.js\n */\n\n /**\n * A lightweight readable stream implemention that handles event dispatching.\n *\n * @class Stream\n */\n\n var Stream = /*#__PURE__*/function () {\n function Stream() {\n this.listeners = {};\n }\n /**\n * Add a listener for a specified event type.\n *\n * @param {string} type the event name\n * @param {Function} listener the callback to be invoked when an event of\n * the specified type occurs\n */\n\n var _proto = Stream.prototype;\n _proto.on = function on(type, listener) {\n if (!this.listeners[type]) {\n this.listeners[type] = [];\n }\n this.listeners[type].push(listener);\n }\n /**\n * Remove a listener for a specified event type.\n *\n * @param {string} type the event name\n * @param {Function} listener a function previously registered for this\n * type of event through `on`\n * @return {boolean} if we could turn it off or not\n */;\n _proto.off = function off(type, listener) {\n if (!this.listeners[type]) {\n return false;\n }\n var index = this.listeners[type].indexOf(listener); // TODO: which is better?\n // In Video.js we slice listener functions\n // on trigger so that it does not mess up the order\n // while we loop through.\n //\n // Here we slice on off so that the loop in trigger\n // can continue using it's old reference to loop without\n // messing up the order.\n\n this.listeners[type] = this.listeners[type].slice(0);\n this.listeners[type].splice(index, 1);\n return index > -1;\n }\n /**\n * Trigger an event of the specified type on this stream. Any additional\n * arguments to this function are passed as parameters to event listeners.\n *\n * @param {string} type the event name\n */;\n _proto.trigger = function trigger(type) {\n var callbacks = this.listeners[type];\n if (!callbacks) {\n return;\n } // Slicing the arguments on every invocation of this method\n // can add a significant amount of overhead. Avoid the\n // intermediate object creation for the common case of a\n // single callback argument\n\n if (arguments.length === 2) {\n var length = callbacks.length;\n for (var i = 0; i < length; ++i) {\n callbacks[i].call(this, arguments[1]);\n }\n } else {\n var args = Array.prototype.slice.call(arguments, 1);\n var _length = callbacks.length;\n for (var _i = 0; _i < _length; ++_i) {\n callbacks[_i].apply(this, args);\n }\n }\n }\n /**\n * Destroys the stream and cleans up.\n */;\n _proto.dispose = function dispose() {\n this.listeners = {};\n }\n /**\n * Forwards all `data` events on this stream to the destination stream. The\n * destination stream should provide a method `push` to receive the data\n * events as they arrive.\n *\n * @param {Stream} destination the stream that will receive all `data` events\n * @see http://nodejs.org/api/stream.html#stream_readable_pipe_destination_options\n */;\n _proto.pipe = function pipe(destination) {\n this.on('data', function (data) {\n destination.push(data);\n });\n };\n return Stream;\n }();\n /*! @name pkcs7 @version 1.0.4 @license Apache-2.0 */\n\n /**\n * Returns the subarray of a Uint8Array without PKCS#7 padding.\n *\n * @param padded {Uint8Array} unencrypted bytes that have been padded\n * @return {Uint8Array} the unpadded bytes\n * @see http://tools.ietf.org/html/rfc5652\n */\n\n function unpad(padded) {\n return padded.subarray(0, padded.byteLength - padded[padded.byteLength - 1]);\n }\n /*! @name aes-decrypter @version 4.0.2 @license Apache-2.0 */\n\n /**\n * @file aes.js\n *\n * This file contains an adaptation of the AES decryption algorithm\n * from the Standford Javascript Cryptography Library. That work is\n * covered by the following copyright and permissions notice:\n *\n * Copyright 2009-2010 Emily Stark, Mike Hamburg, Dan Boneh.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * 1. Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\n * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\n * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN\n * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * The views and conclusions contained in the software and documentation\n * are those of the authors and should not be interpreted as representing\n * official policies, either expressed or implied, of the authors.\n */\n\n /**\n * Expand the S-box tables.\n *\n * @private\n */\n\n const precompute = function () {\n const tables = [[[], [], [], [], []], [[], [], [], [], []]];\n const encTable = tables[0];\n const decTable = tables[1];\n const sbox = encTable[4];\n const sboxInv = decTable[4];\n let i;\n let x;\n let xInv;\n const d = [];\n const th = [];\n let x2;\n let x4;\n let x8;\n let s;\n let tEnc;\n let tDec; // Compute double and third tables\n\n for (i = 0; i < 256; i++) {\n th[(d[i] = i << 1 ^ (i >> 7) * 283) ^ i] = i;\n }\n for (x = xInv = 0; !sbox[x]; x ^= x2 || 1, xInv = th[xInv] || 1) {\n // Compute sbox\n s = xInv ^ xInv << 1 ^ xInv << 2 ^ xInv << 3 ^ xInv << 4;\n s = s >> 8 ^ s & 255 ^ 99;\n sbox[x] = s;\n sboxInv[s] = x; // Compute MixColumns\n\n x8 = d[x4 = d[x2 = d[x]]];\n tDec = x8 * 0x1010101 ^ x4 * 0x10001 ^ x2 * 0x101 ^ x * 0x1010100;\n tEnc = d[s] * 0x101 ^ s * 0x1010100;\n for (i = 0; i < 4; i++) {\n encTable[i][x] = tEnc = tEnc << 24 ^ tEnc >>> 8;\n decTable[i][s] = tDec = tDec << 24 ^ tDec >>> 8;\n }\n } // Compactify. Considerable speedup on Firefox.\n\n for (i = 0; i < 5; i++) {\n encTable[i] = encTable[i].slice(0);\n decTable[i] = decTable[i].slice(0);\n }\n return tables;\n };\n let aesTables = null;\n /**\n * Schedule out an AES key for both encryption and decryption. This\n * is a low-level class. Use a cipher mode to do bulk encryption.\n *\n * @class AES\n * @param key {Array} The key as an array of 4, 6 or 8 words.\n */\n\n class AES {\n constructor(key) {\n /**\n * The expanded S-box and inverse S-box tables. These will be computed\n * on the client so that we don't have to send them down the wire.\n *\n * There are two tables, _tables[0] is for encryption and\n * _tables[1] is for decryption.\n *\n * The first 4 sub-tables are the expanded S-box with MixColumns. The\n * last (_tables[01][4]) is the S-box itself.\n *\n * @private\n */\n // if we have yet to precompute the S-box tables\n // do so now\n if (!aesTables) {\n aesTables = precompute();\n } // then make a copy of that object for use\n\n this._tables = [[aesTables[0][0].slice(), aesTables[0][1].slice(), aesTables[0][2].slice(), aesTables[0][3].slice(), aesTables[0][4].slice()], [aesTables[1][0].slice(), aesTables[1][1].slice(), aesTables[1][2].slice(), aesTables[1][3].slice(), aesTables[1][4].slice()]];\n let i;\n let j;\n let tmp;\n const sbox = this._tables[0][4];\n const decTable = this._tables[1];\n const keyLen = key.length;\n let rcon = 1;\n if (keyLen !== 4 && keyLen !== 6 && keyLen !== 8) {\n throw new Error('Invalid aes key size');\n }\n const encKey = key.slice(0);\n const decKey = [];\n this._key = [encKey, decKey]; // schedule encryption keys\n\n for (i = keyLen; i < 4 * keyLen + 28; i++) {\n tmp = encKey[i - 1]; // apply sbox\n\n if (i % keyLen === 0 || keyLen === 8 && i % keyLen === 4) {\n tmp = sbox[tmp >>> 24] << 24 ^ sbox[tmp >> 16 & 255] << 16 ^ sbox[tmp >> 8 & 255] << 8 ^ sbox[tmp & 255]; // shift rows and add rcon\n\n if (i % keyLen === 0) {\n tmp = tmp << 8 ^ tmp >>> 24 ^ rcon << 24;\n rcon = rcon << 1 ^ (rcon >> 7) * 283;\n }\n }\n encKey[i] = encKey[i - keyLen] ^ tmp;\n } // schedule decryption keys\n\n for (j = 0; i; j++, i--) {\n tmp = encKey[j & 3 ? i : i - 4];\n if (i <= 4 || j < 4) {\n decKey[j] = tmp;\n } else {\n decKey[j] = decTable[0][sbox[tmp >>> 24]] ^ decTable[1][sbox[tmp >> 16 & 255]] ^ decTable[2][sbox[tmp >> 8 & 255]] ^ decTable[3][sbox[tmp & 255]];\n }\n }\n }\n /**\n * Decrypt 16 bytes, specified as four 32-bit words.\n *\n * @param {number} encrypted0 the first word to decrypt\n * @param {number} encrypted1 the second word to decrypt\n * @param {number} encrypted2 the third word to decrypt\n * @param {number} encrypted3 the fourth word to decrypt\n * @param {Int32Array} out the array to write the decrypted words\n * into\n * @param {number} offset the offset into the output array to start\n * writing results\n * @return {Array} The plaintext.\n */\n\n decrypt(encrypted0, encrypted1, encrypted2, encrypted3, out, offset) {\n const key = this._key[1]; // state variables a,b,c,d are loaded with pre-whitened data\n\n let a = encrypted0 ^ key[0];\n let b = encrypted3 ^ key[1];\n let c = encrypted2 ^ key[2];\n let d = encrypted1 ^ key[3];\n let a2;\n let b2;\n let c2; // key.length === 2 ?\n\n const nInnerRounds = key.length / 4 - 2;\n let i;\n let kIndex = 4;\n const table = this._tables[1]; // load up the tables\n\n const table0 = table[0];\n const table1 = table[1];\n const table2 = table[2];\n const table3 = table[3];\n const sbox = table[4]; // Inner rounds. Cribbed from OpenSSL.\n\n for (i = 0; i < nInnerRounds; i++) {\n a2 = table0[a >>> 24] ^ table1[b >> 16 & 255] ^ table2[c >> 8 & 255] ^ table3[d & 255] ^ key[kIndex];\n b2 = table0[b >>> 24] ^ table1[c >> 16 & 255] ^ table2[d >> 8 & 255] ^ table3[a & 255] ^ key[kIndex + 1];\n c2 = table0[c >>> 24] ^ table1[d >> 16 & 255] ^ table2[a >> 8 & 255] ^ table3[b & 255] ^ key[kIndex + 2];\n d = table0[d >>> 24] ^ table1[a >> 16 & 255] ^ table2[b >> 8 & 255] ^ table3[c & 255] ^ key[kIndex + 3];\n kIndex += 4;\n a = a2;\n b = b2;\n c = c2;\n } // Last round.\n\n for (i = 0; i < 4; i++) {\n out[(3 & -i) + offset] = sbox[a >>> 24] << 24 ^ sbox[b >> 16 & 255] << 16 ^ sbox[c >> 8 & 255] << 8 ^ sbox[d & 255] ^ key[kIndex++];\n a2 = a;\n a = b;\n b = c;\n c = d;\n d = a2;\n }\n }\n }\n /**\n * @file async-stream.js\n */\n\n /**\n * A wrapper around the Stream class to use setTimeout\n * and run stream \"jobs\" Asynchronously\n *\n * @class AsyncStream\n * @extends Stream\n */\n\n class AsyncStream extends Stream {\n constructor() {\n super(Stream);\n this.jobs = [];\n this.delay = 1;\n this.timeout_ = null;\n }\n /**\n * process an async job\n *\n * @private\n */\n\n processJob_() {\n this.jobs.shift()();\n if (this.jobs.length) {\n this.timeout_ = setTimeout(this.processJob_.bind(this), this.delay);\n } else {\n this.timeout_ = null;\n }\n }\n /**\n * push a job into the stream\n *\n * @param {Function} job the job to push into the stream\n */\n\n push(job) {\n this.jobs.push(job);\n if (!this.timeout_) {\n this.timeout_ = setTimeout(this.processJob_.bind(this), this.delay);\n }\n }\n }\n /**\n * @file decrypter.js\n *\n * An asynchronous implementation of AES-128 CBC decryption with\n * PKCS#7 padding.\n */\n\n /**\n * Convert network-order (big-endian) bytes into their little-endian\n * representation.\n */\n\n const ntoh = function (word) {\n return word << 24 | (word & 0xff00) << 8 | (word & 0xff0000) >> 8 | word >>> 24;\n };\n /**\n * Decrypt bytes using AES-128 with CBC and PKCS#7 padding.\n *\n * @param {Uint8Array} encrypted the encrypted bytes\n * @param {Uint32Array} key the bytes of the decryption key\n * @param {Uint32Array} initVector the initialization vector (IV) to\n * use for the first round of CBC.\n * @return {Uint8Array} the decrypted bytes\n *\n * @see http://en.wikipedia.org/wiki/Advanced_Encryption_Standard\n * @see http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Cipher_Block_Chaining_.28CBC.29\n * @see https://tools.ietf.org/html/rfc2315\n */\n\n const decrypt = function (encrypted, key, initVector) {\n // word-level access to the encrypted bytes\n const encrypted32 = new Int32Array(encrypted.buffer, encrypted.byteOffset, encrypted.byteLength >> 2);\n const decipher = new AES(Array.prototype.slice.call(key)); // byte and word-level access for the decrypted output\n\n const decrypted = new Uint8Array(encrypted.byteLength);\n const decrypted32 = new Int32Array(decrypted.buffer); // temporary variables for working with the IV, encrypted, and\n // decrypted data\n\n let init0;\n let init1;\n let init2;\n let init3;\n let encrypted0;\n let encrypted1;\n let encrypted2;\n let encrypted3; // iteration variable\n\n let wordIx; // pull out the words of the IV to ensure we don't modify the\n // passed-in reference and easier access\n\n init0 = initVector[0];\n init1 = initVector[1];\n init2 = initVector[2];\n init3 = initVector[3]; // decrypt four word sequences, applying cipher-block chaining (CBC)\n // to each decrypted block\n\n for (wordIx = 0; wordIx < encrypted32.length; wordIx += 4) {\n // convert big-endian (network order) words into little-endian\n // (javascript order)\n encrypted0 = ntoh(encrypted32[wordIx]);\n encrypted1 = ntoh(encrypted32[wordIx + 1]);\n encrypted2 = ntoh(encrypted32[wordIx + 2]);\n encrypted3 = ntoh(encrypted32[wordIx + 3]); // decrypt the block\n\n decipher.decrypt(encrypted0, encrypted1, encrypted2, encrypted3, decrypted32, wordIx); // XOR with the IV, and restore network byte-order to obtain the\n // plaintext\n\n decrypted32[wordIx] = ntoh(decrypted32[wordIx] ^ init0);\n decrypted32[wordIx + 1] = ntoh(decrypted32[wordIx + 1] ^ init1);\n decrypted32[wordIx + 2] = ntoh(decrypted32[wordIx + 2] ^ init2);\n decrypted32[wordIx + 3] = ntoh(decrypted32[wordIx + 3] ^ init3); // setup the IV for the next round\n\n init0 = encrypted0;\n init1 = encrypted1;\n init2 = encrypted2;\n init3 = encrypted3;\n }\n return decrypted;\n };\n /**\n * The `Decrypter` class that manages decryption of AES\n * data through `AsyncStream` objects and the `decrypt`\n * function\n *\n * @param {Uint8Array} encrypted the encrypted bytes\n * @param {Uint32Array} key the bytes of the decryption key\n * @param {Uint32Array} initVector the initialization vector (IV) to\n * @param {Function} done the function to run when done\n * @class Decrypter\n */\n\n class Decrypter {\n constructor(encrypted, key, initVector, done) {\n const step = Decrypter.STEP;\n const encrypted32 = new Int32Array(encrypted.buffer);\n const decrypted = new Uint8Array(encrypted.byteLength);\n let i = 0;\n this.asyncStream_ = new AsyncStream(); // split up the encryption job and do the individual chunks asynchronously\n\n this.asyncStream_.push(this.decryptChunk_(encrypted32.subarray(i, i + step), key, initVector, decrypted));\n for (i = step; i < encrypted32.length; i += step) {\n initVector = new Uint32Array([ntoh(encrypted32[i - 4]), ntoh(encrypted32[i - 3]), ntoh(encrypted32[i - 2]), ntoh(encrypted32[i - 1])]);\n this.asyncStream_.push(this.decryptChunk_(encrypted32.subarray(i, i + step), key, initVector, decrypted));\n } // invoke the done() callback when everything is finished\n\n this.asyncStream_.push(function () {\n // remove pkcs#7 padding from the decrypted bytes\n done(null, unpad(decrypted));\n });\n }\n /**\n * a getter for step the maximum number of bytes to process at one time\n *\n * @return {number} the value of step 32000\n */\n\n static get STEP() {\n // 4 * 8000;\n return 32000;\n }\n /**\n * @private\n */\n\n decryptChunk_(encrypted, key, initVector, decrypted) {\n return function () {\n const bytes = decrypt(encrypted, key, initVector);\n decrypted.set(bytes, encrypted.byteOffset);\n };\n }\n }\n var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n var win;\n if (typeof window !== \"undefined\") {\n win = window;\n } else if (typeof commonjsGlobal !== \"undefined\") {\n win = commonjsGlobal;\n } else if (typeof self !== \"undefined\") {\n win = self;\n } else {\n win = {};\n }\n var window_1 = win;\n var isArrayBufferView = function isArrayBufferView(obj) {\n if (ArrayBuffer.isView === 'function') {\n return ArrayBuffer.isView(obj);\n }\n return obj && obj.buffer instanceof ArrayBuffer;\n };\n var BigInt = window_1.BigInt || Number;\n [BigInt('0x1'), BigInt('0x100'), BigInt('0x10000'), BigInt('0x1000000'), BigInt('0x100000000'), BigInt('0x10000000000'), BigInt('0x1000000000000'), BigInt('0x100000000000000'), BigInt('0x10000000000000000')];\n (function () {\n var a = new Uint16Array([0xFFCC]);\n var b = new Uint8Array(a.buffer, a.byteOffset, a.byteLength);\n if (b[0] === 0xFF) {\n return 'big';\n }\n if (b[0] === 0xCC) {\n return 'little';\n }\n return 'unknown';\n })();\n /**\n * Creates an object for sending to a web worker modifying properties that are TypedArrays\n * into a new object with seperated properties for the buffer, byteOffset, and byteLength.\n *\n * @param {Object} message\n * Object of properties and values to send to the web worker\n * @return {Object}\n * Modified message with TypedArray values expanded\n * @function createTransferableMessage\n */\n\n const createTransferableMessage = function (message) {\n const transferable = {};\n Object.keys(message).forEach(key => {\n const value = message[key];\n if (isArrayBufferView(value)) {\n transferable[key] = {\n bytes: value.buffer,\n byteOffset: value.byteOffset,\n byteLength: value.byteLength\n };\n } else {\n transferable[key] = value;\n }\n });\n return transferable;\n };\n /* global self */\n\n /**\n * Our web worker interface so that things can talk to aes-decrypter\n * that will be running in a web worker. the scope is passed to this by\n * webworkify.\n */\n\n self.onmessage = function (event) {\n const data = event.data;\n const encrypted = new Uint8Array(data.encrypted.bytes, data.encrypted.byteOffset, data.encrypted.byteLength);\n const key = new Uint32Array(data.key.bytes, data.key.byteOffset, data.key.byteLength / 4);\n const iv = new Uint32Array(data.iv.bytes, data.iv.byteOffset, data.iv.byteLength / 4);\n /* eslint-disable no-new, handle-callback-err */\n\n new Decrypter(encrypted, key, iv, function (err, bytes) {\n self.postMessage(createTransferableMessage({\n source: data.source,\n decrypted: bytes\n }), [bytes.buffer]);\n });\n /* eslint-enable */\n };\n}));\nvar Decrypter = factory(workerCode);\n/* rollup-plugin-worker-factory end for worker!/home/runner/work/http-streaming/http-streaming/src/decrypter-worker.js */\n\n/**\n * Convert the properties of an HLS track into an audioTrackKind.\n *\n * @private\n */\n\nconst audioTrackKind_ = properties => {\n let kind = properties.default ? 'main' : 'alternative';\n if (properties.characteristics && properties.characteristics.indexOf('public.accessibility.describes-video') >= 0) {\n kind = 'main-desc';\n }\n return kind;\n};\n/**\n * Pause provided segment loader and playlist loader if active\n *\n * @param {SegmentLoader} segmentLoader\n * SegmentLoader to pause\n * @param {Object} mediaType\n * Active media type\n * @function stopLoaders\n */\n\nconst stopLoaders = (segmentLoader, mediaType) => {\n segmentLoader.abort();\n segmentLoader.pause();\n if (mediaType && mediaType.activePlaylistLoader) {\n mediaType.activePlaylistLoader.pause();\n mediaType.activePlaylistLoader = null;\n }\n};\n/**\n * Start loading provided segment loader and playlist loader\n *\n * @param {PlaylistLoader} playlistLoader\n * PlaylistLoader to start loading\n * @param {Object} mediaType\n * Active media type\n * @function startLoaders\n */\n\nconst startLoaders = (playlistLoader, mediaType) => {\n // Segment loader will be started after `loadedmetadata` or `loadedplaylist` from the\n // playlist loader\n mediaType.activePlaylistLoader = playlistLoader;\n playlistLoader.load();\n};\n/**\n * Returns a function to be called when the media group changes. It performs a\n * non-destructive (preserve the buffer) resync of the SegmentLoader. This is because a\n * change of group is merely a rendition switch of the same content at another encoding,\n * rather than a change of content, such as switching audio from English to Spanish.\n *\n * @param {string} type\n * MediaGroup type\n * @param {Object} settings\n * Object containing required information for media groups\n * @return {Function}\n * Handler for a non-destructive resync of SegmentLoader when the active media\n * group changes.\n * @function onGroupChanged\n */\n\nconst onGroupChanged = (type, settings) => () => {\n const {\n segmentLoaders: {\n [type]: segmentLoader,\n main: mainSegmentLoader\n },\n mediaTypes: {\n [type]: mediaType\n }\n } = settings;\n const activeTrack = mediaType.activeTrack();\n const activeGroup = mediaType.getActiveGroup();\n const previousActiveLoader = mediaType.activePlaylistLoader;\n const lastGroup = mediaType.lastGroup_; // the group did not change do nothing\n\n if (activeGroup && lastGroup && activeGroup.id === lastGroup.id) {\n return;\n }\n mediaType.lastGroup_ = activeGroup;\n mediaType.lastTrack_ = activeTrack;\n stopLoaders(segmentLoader, mediaType);\n if (!activeGroup || activeGroup.isMainPlaylist) {\n // there is no group active or active group is a main playlist and won't change\n return;\n }\n if (!activeGroup.playlistLoader) {\n if (previousActiveLoader) {\n // The previous group had a playlist loader but the new active group does not\n // this means we are switching from demuxed to muxed audio. In this case we want to\n // do a destructive reset of the main segment loader and not restart the audio\n // loaders.\n mainSegmentLoader.resetEverything();\n }\n return;\n } // Non-destructive resync\n\n segmentLoader.resyncLoader();\n startLoaders(activeGroup.playlistLoader, mediaType);\n};\nconst onGroupChanging = (type, settings) => () => {\n const {\n segmentLoaders: {\n [type]: segmentLoader\n },\n mediaTypes: {\n [type]: mediaType\n }\n } = settings;\n mediaType.lastGroup_ = null;\n segmentLoader.abort();\n segmentLoader.pause();\n};\n/**\n * Returns a function to be called when the media track changes. It performs a\n * destructive reset of the SegmentLoader to ensure we start loading as close to\n * currentTime as possible.\n *\n * @param {string} type\n * MediaGroup type\n * @param {Object} settings\n * Object containing required information for media groups\n * @return {Function}\n * Handler for a destructive reset of SegmentLoader when the active media\n * track changes.\n * @function onTrackChanged\n */\n\nconst onTrackChanged = (type, settings) => () => {\n const {\n mainPlaylistLoader,\n segmentLoaders: {\n [type]: segmentLoader,\n main: mainSegmentLoader\n },\n mediaTypes: {\n [type]: mediaType\n }\n } = settings;\n const activeTrack = mediaType.activeTrack();\n const activeGroup = mediaType.getActiveGroup();\n const previousActiveLoader = mediaType.activePlaylistLoader;\n const lastTrack = mediaType.lastTrack_; // track did not change, do nothing\n\n if (lastTrack && activeTrack && lastTrack.id === activeTrack.id) {\n return;\n }\n mediaType.lastGroup_ = activeGroup;\n mediaType.lastTrack_ = activeTrack;\n stopLoaders(segmentLoader, mediaType);\n if (!activeGroup) {\n // there is no group active so we do not want to restart loaders\n return;\n }\n if (activeGroup.isMainPlaylist) {\n // track did not change, do nothing\n if (!activeTrack || !lastTrack || activeTrack.id === lastTrack.id) {\n return;\n }\n const pc = settings.vhs.playlistController_;\n const newPlaylist = pc.selectPlaylist(); // media will not change do nothing\n\n if (pc.media() === newPlaylist) {\n return;\n }\n mediaType.logger_(`track change. Switching main audio from ${lastTrack.id} to ${activeTrack.id}`);\n mainPlaylistLoader.pause();\n mainSegmentLoader.resetEverything();\n pc.fastQualityChange_(newPlaylist);\n return;\n }\n if (type === 'AUDIO') {\n if (!activeGroup.playlistLoader) {\n // when switching from demuxed audio/video to muxed audio/video (noted by no\n // playlist loader for the audio group), we want to do a destructive reset of the\n // main segment loader and not restart the audio loaders\n mainSegmentLoader.setAudio(true); // don't have to worry about disabling the audio of the audio segment loader since\n // it should be stopped\n\n mainSegmentLoader.resetEverything();\n return;\n } // although the segment loader is an audio segment loader, call the setAudio\n // function to ensure it is prepared to re-append the init segment (or handle other\n // config changes)\n\n segmentLoader.setAudio(true);\n mainSegmentLoader.setAudio(false);\n }\n if (previousActiveLoader === activeGroup.playlistLoader) {\n // Nothing has actually changed. This can happen because track change events can fire\n // multiple times for a \"single\" change. One for enabling the new active track, and\n // one for disabling the track that was active\n startLoaders(activeGroup.playlistLoader, mediaType);\n return;\n }\n if (segmentLoader.track) {\n // For WebVTT, set the new text track in the segmentloader\n segmentLoader.track(activeTrack);\n } // destructive reset\n\n segmentLoader.resetEverything();\n startLoaders(activeGroup.playlistLoader, mediaType);\n};\nconst onError = {\n /**\n * Returns a function to be called when a SegmentLoader or PlaylistLoader encounters\n * an error.\n *\n * @param {string} type\n * MediaGroup type\n * @param {Object} settings\n * Object containing required information for media groups\n * @return {Function}\n * Error handler. Logs warning (or error if the playlist is excluded) to\n * console and switches back to default audio track.\n * @function onError.AUDIO\n */\n AUDIO: (type, settings) => () => {\n const {\n mediaTypes: {\n [type]: mediaType\n },\n excludePlaylist\n } = settings; // switch back to default audio track\n\n const activeTrack = mediaType.activeTrack();\n const activeGroup = mediaType.activeGroup();\n const id = (activeGroup.filter(group => group.default)[0] || activeGroup[0]).id;\n const defaultTrack = mediaType.tracks[id];\n if (activeTrack === defaultTrack) {\n // Default track encountered an error. All we can do now is exclude the current\n // rendition and hope another will switch audio groups\n excludePlaylist({\n error: {\n message: 'Problem encountered loading the default audio track.'\n }\n });\n return;\n }\n videojs.log.warn('Problem encountered loading the alternate audio track.' + 'Switching back to default.');\n for (const trackId in mediaType.tracks) {\n mediaType.tracks[trackId].enabled = mediaType.tracks[trackId] === defaultTrack;\n }\n mediaType.onTrackChanged();\n },\n /**\n * Returns a function to be called when a SegmentLoader or PlaylistLoader encounters\n * an error.\n *\n * @param {string} type\n * MediaGroup type\n * @param {Object} settings\n * Object containing required information for media groups\n * @return {Function}\n * Error handler. Logs warning to console and disables the active subtitle track\n * @function onError.SUBTITLES\n */\n SUBTITLES: (type, settings) => () => {\n const {\n mediaTypes: {\n [type]: mediaType\n }\n } = settings;\n videojs.log.warn('Problem encountered loading the subtitle track.' + 'Disabling subtitle track.');\n const track = mediaType.activeTrack();\n if (track) {\n track.mode = 'disabled';\n }\n mediaType.onTrackChanged();\n }\n};\nconst setupListeners = {\n /**\n * Setup event listeners for audio playlist loader\n *\n * @param {string} type\n * MediaGroup type\n * @param {PlaylistLoader|null} playlistLoader\n * PlaylistLoader to register listeners on\n * @param {Object} settings\n * Object containing required information for media groups\n * @function setupListeners.AUDIO\n */\n AUDIO: (type, playlistLoader, settings) => {\n if (!playlistLoader) {\n // no playlist loader means audio will be muxed with the video\n return;\n }\n const {\n tech,\n requestOptions,\n segmentLoaders: {\n [type]: segmentLoader\n }\n } = settings;\n playlistLoader.on('loadedmetadata', () => {\n const media = playlistLoader.media();\n segmentLoader.playlist(media, requestOptions); // if the video is already playing, or if this isn't a live video and preload\n // permits, start downloading segments\n\n if (!tech.paused() || media.endList && tech.preload() !== 'none') {\n segmentLoader.load();\n }\n });\n playlistLoader.on('loadedplaylist', () => {\n segmentLoader.playlist(playlistLoader.media(), requestOptions); // If the player isn't paused, ensure that the segment loader is running\n\n if (!tech.paused()) {\n segmentLoader.load();\n }\n });\n playlistLoader.on('error', onError[type](type, settings));\n },\n /**\n * Setup event listeners for subtitle playlist loader\n *\n * @param {string} type\n * MediaGroup type\n * @param {PlaylistLoader|null} playlistLoader\n * PlaylistLoader to register listeners on\n * @param {Object} settings\n * Object containing required information for media groups\n * @function setupListeners.SUBTITLES\n */\n SUBTITLES: (type, playlistLoader, settings) => {\n const {\n tech,\n requestOptions,\n segmentLoaders: {\n [type]: segmentLoader\n },\n mediaTypes: {\n [type]: mediaType\n }\n } = settings;\n playlistLoader.on('loadedmetadata', () => {\n const media = playlistLoader.media();\n segmentLoader.playlist(media, requestOptions);\n segmentLoader.track(mediaType.activeTrack()); // if the video is already playing, or if this isn't a live video and preload\n // permits, start downloading segments\n\n if (!tech.paused() || media.endList && tech.preload() !== 'none') {\n segmentLoader.load();\n }\n });\n playlistLoader.on('loadedplaylist', () => {\n segmentLoader.playlist(playlistLoader.media(), requestOptions); // If the player isn't paused, ensure that the segment loader is running\n\n if (!tech.paused()) {\n segmentLoader.load();\n }\n });\n playlistLoader.on('error', onError[type](type, settings));\n }\n};\nconst initialize = {\n /**\n * Setup PlaylistLoaders and AudioTracks for the audio groups\n *\n * @param {string} type\n * MediaGroup type\n * @param {Object} settings\n * Object containing required information for media groups\n * @function initialize.AUDIO\n */\n 'AUDIO': (type, settings) => {\n const {\n vhs,\n sourceType,\n segmentLoaders: {\n [type]: segmentLoader\n },\n requestOptions,\n main: {\n mediaGroups\n },\n mediaTypes: {\n [type]: {\n groups,\n tracks,\n logger_\n }\n },\n mainPlaylistLoader\n } = settings;\n const audioOnlyMain = isAudioOnly(mainPlaylistLoader.main); // force a default if we have none\n\n if (!mediaGroups[type] || Object.keys(mediaGroups[type]).length === 0) {\n mediaGroups[type] = {\n main: {\n default: {\n default: true\n }\n }\n };\n if (audioOnlyMain) {\n mediaGroups[type].main.default.playlists = mainPlaylistLoader.main.playlists;\n }\n }\n for (const groupId in mediaGroups[type]) {\n if (!groups[groupId]) {\n groups[groupId] = [];\n }\n for (const variantLabel in mediaGroups[type][groupId]) {\n let properties = mediaGroups[type][groupId][variantLabel];\n let playlistLoader;\n if (audioOnlyMain) {\n logger_(`AUDIO group '${groupId}' label '${variantLabel}' is a main playlist`);\n properties.isMainPlaylist = true;\n playlistLoader = null; // if vhs-json was provided as the source, and the media playlist was resolved,\n // use the resolved media playlist object\n } else if (sourceType === 'vhs-json' && properties.playlists) {\n playlistLoader = new PlaylistLoader(properties.playlists[0], vhs, requestOptions);\n } else if (properties.resolvedUri) {\n playlistLoader = new PlaylistLoader(properties.resolvedUri, vhs, requestOptions); // TODO: dash isn't the only type with properties.playlists\n // should we even have properties.playlists in this check.\n } else if (properties.playlists && sourceType === 'dash') {\n playlistLoader = new DashPlaylistLoader(properties.playlists[0], vhs, requestOptions, mainPlaylistLoader);\n } else {\n // no resolvedUri means the audio is muxed with the video when using this\n // audio track\n playlistLoader = null;\n }\n properties = merge({\n id: variantLabel,\n playlistLoader\n }, properties);\n setupListeners[type](type, properties.playlistLoader, settings);\n groups[groupId].push(properties);\n if (typeof tracks[variantLabel] === 'undefined') {\n const track = new videojs.AudioTrack({\n id: variantLabel,\n kind: audioTrackKind_(properties),\n enabled: false,\n language: properties.language,\n default: properties.default,\n label: variantLabel\n });\n tracks[variantLabel] = track;\n }\n }\n } // setup single error event handler for the segment loader\n\n segmentLoader.on('error', onError[type](type, settings));\n },\n /**\n * Setup PlaylistLoaders and TextTracks for the subtitle groups\n *\n * @param {string} type\n * MediaGroup type\n * @param {Object} settings\n * Object containing required information for media groups\n * @function initialize.SUBTITLES\n */\n 'SUBTITLES': (type, settings) => {\n const {\n tech,\n vhs,\n sourceType,\n segmentLoaders: {\n [type]: segmentLoader\n },\n requestOptions,\n main: {\n mediaGroups\n },\n mediaTypes: {\n [type]: {\n groups,\n tracks\n }\n },\n mainPlaylistLoader\n } = settings;\n for (const groupId in mediaGroups[type]) {\n if (!groups[groupId]) {\n groups[groupId] = [];\n }\n for (const variantLabel in mediaGroups[type][groupId]) {\n if (!vhs.options_.useForcedSubtitles && mediaGroups[type][groupId][variantLabel].forced) {\n // Subtitle playlists with the forced attribute are not selectable in Safari.\n // According to Apple's HLS Authoring Specification:\n // If content has forced subtitles and regular subtitles in a given language,\n // the regular subtitles track in that language MUST contain both the forced\n // subtitles and the regular subtitles for that language.\n // Because of this requirement and that Safari does not add forced subtitles,\n // forced subtitles are skipped here to maintain consistent experience across\n // all platforms\n continue;\n }\n let properties = mediaGroups[type][groupId][variantLabel];\n let playlistLoader;\n if (sourceType === 'hls') {\n playlistLoader = new PlaylistLoader(properties.resolvedUri, vhs, requestOptions);\n } else if (sourceType === 'dash') {\n const playlists = properties.playlists.filter(p => p.excludeUntil !== Infinity);\n if (!playlists.length) {\n return;\n }\n playlistLoader = new DashPlaylistLoader(properties.playlists[0], vhs, requestOptions, mainPlaylistLoader);\n } else if (sourceType === 'vhs-json') {\n playlistLoader = new PlaylistLoader(\n // if the vhs-json object included the media playlist, use the media playlist\n // as provided, otherwise use the resolved URI to load the playlist\n properties.playlists ? properties.playlists[0] : properties.resolvedUri, vhs, requestOptions);\n }\n properties = merge({\n id: variantLabel,\n playlistLoader\n }, properties);\n setupListeners[type](type, properties.playlistLoader, settings);\n groups[groupId].push(properties);\n if (typeof tracks[variantLabel] === 'undefined') {\n const track = tech.addRemoteTextTrack({\n id: variantLabel,\n kind: 'subtitles',\n default: properties.default && properties.autoselect,\n language: properties.language,\n label: variantLabel\n }, false).track;\n tracks[variantLabel] = track;\n }\n }\n } // setup single error event handler for the segment loader\n\n segmentLoader.on('error', onError[type](type, settings));\n },\n /**\n * Setup TextTracks for the closed-caption groups\n *\n * @param {String} type\n * MediaGroup type\n * @param {Object} settings\n * Object containing required information for media groups\n * @function initialize['CLOSED-CAPTIONS']\n */\n 'CLOSED-CAPTIONS': (type, settings) => {\n const {\n tech,\n main: {\n mediaGroups\n },\n mediaTypes: {\n [type]: {\n groups,\n tracks\n }\n }\n } = settings;\n for (const groupId in mediaGroups[type]) {\n if (!groups[groupId]) {\n groups[groupId] = [];\n }\n for (const variantLabel in mediaGroups[type][groupId]) {\n const properties = mediaGroups[type][groupId][variantLabel]; // Look for either 608 (CCn) or 708 (SERVICEn) caption services\n\n if (!/^(?:CC|SERVICE)/.test(properties.instreamId)) {\n continue;\n }\n const captionServices = tech.options_.vhs && tech.options_.vhs.captionServices || {};\n let newProps = {\n label: variantLabel,\n language: properties.language,\n instreamId: properties.instreamId,\n default: properties.default && properties.autoselect\n };\n if (captionServices[newProps.instreamId]) {\n newProps = merge(newProps, captionServices[newProps.instreamId]);\n }\n if (newProps.default === undefined) {\n delete newProps.default;\n } // No PlaylistLoader is required for Closed-Captions because the captions are\n // embedded within the video stream\n\n groups[groupId].push(merge({\n id: variantLabel\n }, properties));\n if (typeof tracks[variantLabel] === 'undefined') {\n const track = tech.addRemoteTextTrack({\n id: newProps.instreamId,\n kind: 'captions',\n default: newProps.default,\n language: newProps.language,\n label: newProps.label\n }, false).track;\n tracks[variantLabel] = track;\n }\n }\n }\n }\n};\nconst groupMatch = (list, media) => {\n for (let i = 0; i < list.length; i++) {\n if (playlistMatch(media, list[i])) {\n return true;\n }\n if (list[i].playlists && groupMatch(list[i].playlists, media)) {\n return true;\n }\n }\n return false;\n};\n/**\n * Returns a function used to get the active group of the provided type\n *\n * @param {string} type\n * MediaGroup type\n * @param {Object} settings\n * Object containing required information for media groups\n * @return {Function}\n * Function that returns the active media group for the provided type. Takes an\n * optional parameter {TextTrack} track. If no track is provided, a list of all\n * variants in the group, otherwise the variant corresponding to the provided\n * track is returned.\n * @function activeGroup\n */\n\nconst activeGroup = (type, settings) => track => {\n const {\n mainPlaylistLoader,\n mediaTypes: {\n [type]: {\n groups\n }\n }\n } = settings;\n const media = mainPlaylistLoader.media();\n if (!media) {\n return null;\n }\n let variants = null; // set to variants to main media active group\n\n if (media.attributes[type]) {\n variants = groups[media.attributes[type]];\n }\n const groupKeys = Object.keys(groups);\n if (!variants) {\n // find the mainPlaylistLoader media\n // that is in a media group if we are dealing\n // with audio only\n if (type === 'AUDIO' && groupKeys.length > 1 && isAudioOnly(settings.main)) {\n for (let i = 0; i < groupKeys.length; i++) {\n const groupPropertyList = groups[groupKeys[i]];\n if (groupMatch(groupPropertyList, media)) {\n variants = groupPropertyList;\n break;\n }\n } // use the main group if it exists\n } else if (groups.main) {\n variants = groups.main; // only one group, use that one\n } else if (groupKeys.length === 1) {\n variants = groups[groupKeys[0]];\n }\n }\n if (typeof track === 'undefined') {\n return variants;\n }\n if (track === null || !variants) {\n // An active track was specified so a corresponding group is expected. track === null\n // means no track is currently active so there is no corresponding group\n return null;\n }\n return variants.filter(props => props.id === track.id)[0] || null;\n};\nconst activeTrack = {\n /**\n * Returns a function used to get the active track of type provided\n *\n * @param {string} type\n * MediaGroup type\n * @param {Object} settings\n * Object containing required information for media groups\n * @return {Function}\n * Function that returns the active media track for the provided type. Returns\n * null if no track is active\n * @function activeTrack.AUDIO\n */\n AUDIO: (type, settings) => () => {\n const {\n mediaTypes: {\n [type]: {\n tracks\n }\n }\n } = settings;\n for (const id in tracks) {\n if (tracks[id].enabled) {\n return tracks[id];\n }\n }\n return null;\n },\n /**\n * Returns a function used to get the active track of type provided\n *\n * @param {string} type\n * MediaGroup type\n * @param {Object} settings\n * Object containing required information for media groups\n * @return {Function}\n * Function that returns the active media track for the provided type. Returns\n * null if no track is active\n * @function activeTrack.SUBTITLES\n */\n SUBTITLES: (type, settings) => () => {\n const {\n mediaTypes: {\n [type]: {\n tracks\n }\n }\n } = settings;\n for (const id in tracks) {\n if (tracks[id].mode === 'showing' || tracks[id].mode === 'hidden') {\n return tracks[id];\n }\n }\n return null;\n }\n};\nconst getActiveGroup = (type, {\n mediaTypes\n}) => () => {\n const activeTrack_ = mediaTypes[type].activeTrack();\n if (!activeTrack_) {\n return null;\n }\n return mediaTypes[type].activeGroup(activeTrack_);\n};\n/**\n * Setup PlaylistLoaders and Tracks for media groups (Audio, Subtitles,\n * Closed-Captions) specified in the main manifest.\n *\n * @param {Object} settings\n * Object containing required information for setting up the media groups\n * @param {Tech} settings.tech\n * The tech of the player\n * @param {Object} settings.requestOptions\n * XHR request options used by the segment loaders\n * @param {PlaylistLoader} settings.mainPlaylistLoader\n * PlaylistLoader for the main source\n * @param {VhsHandler} settings.vhs\n * VHS SourceHandler\n * @param {Object} settings.main\n * The parsed main manifest\n * @param {Object} settings.mediaTypes\n * Object to store the loaders, tracks, and utility methods for each media type\n * @param {Function} settings.excludePlaylist\n * Excludes the current rendition and forces a rendition switch.\n * @function setupMediaGroups\n */\n\nconst setupMediaGroups = settings => {\n ['AUDIO', 'SUBTITLES', 'CLOSED-CAPTIONS'].forEach(type => {\n initialize[type](type, settings);\n });\n const {\n mediaTypes,\n mainPlaylistLoader,\n tech,\n vhs,\n segmentLoaders: {\n ['AUDIO']: audioSegmentLoader,\n main: mainSegmentLoader\n }\n } = settings; // setup active group and track getters and change event handlers\n\n ['AUDIO', 'SUBTITLES'].forEach(type => {\n mediaTypes[type].activeGroup = activeGroup(type, settings);\n mediaTypes[type].activeTrack = activeTrack[type](type, settings);\n mediaTypes[type].onGroupChanged = onGroupChanged(type, settings);\n mediaTypes[type].onGroupChanging = onGroupChanging(type, settings);\n mediaTypes[type].onTrackChanged = onTrackChanged(type, settings);\n mediaTypes[type].getActiveGroup = getActiveGroup(type, settings);\n }); // DO NOT enable the default subtitle or caption track.\n // DO enable the default audio track\n\n const audioGroup = mediaTypes.AUDIO.activeGroup();\n if (audioGroup) {\n const groupId = (audioGroup.filter(group => group.default)[0] || audioGroup[0]).id;\n mediaTypes.AUDIO.tracks[groupId].enabled = true;\n mediaTypes.AUDIO.onGroupChanged();\n mediaTypes.AUDIO.onTrackChanged();\n const activeAudioGroup = mediaTypes.AUDIO.getActiveGroup(); // a similar check for handling setAudio on each loader is run again each time the\n // track is changed, but needs to be handled here since the track may not be considered\n // changed on the first call to onTrackChanged\n\n if (!activeAudioGroup.playlistLoader) {\n // either audio is muxed with video or the stream is audio only\n mainSegmentLoader.setAudio(true);\n } else {\n // audio is demuxed\n mainSegmentLoader.setAudio(false);\n audioSegmentLoader.setAudio(true);\n }\n }\n mainPlaylistLoader.on('mediachange', () => {\n ['AUDIO', 'SUBTITLES'].forEach(type => mediaTypes[type].onGroupChanged());\n });\n mainPlaylistLoader.on('mediachanging', () => {\n ['AUDIO', 'SUBTITLES'].forEach(type => mediaTypes[type].onGroupChanging());\n }); // custom audio track change event handler for usage event\n\n const onAudioTrackChanged = () => {\n mediaTypes.AUDIO.onTrackChanged();\n tech.trigger({\n type: 'usage',\n name: 'vhs-audio-change'\n });\n };\n tech.audioTracks().addEventListener('change', onAudioTrackChanged);\n tech.remoteTextTracks().addEventListener('change', mediaTypes.SUBTITLES.onTrackChanged);\n vhs.on('dispose', () => {\n tech.audioTracks().removeEventListener('change', onAudioTrackChanged);\n tech.remoteTextTracks().removeEventListener('change', mediaTypes.SUBTITLES.onTrackChanged);\n }); // clear existing audio tracks and add the ones we just created\n\n tech.clearTracks('audio');\n for (const id in mediaTypes.AUDIO.tracks) {\n tech.audioTracks().addTrack(mediaTypes.AUDIO.tracks[id]);\n }\n};\n/**\n * Creates skeleton object used to store the loaders, tracks, and utility methods for each\n * media type\n *\n * @return {Object}\n * Object to store the loaders, tracks, and utility methods for each media type\n * @function createMediaTypes\n */\n\nconst createMediaTypes = () => {\n const mediaTypes = {};\n ['AUDIO', 'SUBTITLES', 'CLOSED-CAPTIONS'].forEach(type => {\n mediaTypes[type] = {\n groups: {},\n tracks: {},\n activePlaylistLoader: null,\n activeGroup: noop,\n activeTrack: noop,\n getActiveGroup: noop,\n onGroupChanged: noop,\n onTrackChanged: noop,\n lastTrack_: null,\n logger_: logger(`MediaGroups[${type}]`)\n };\n });\n return mediaTypes;\n};\n\n/**\n * A utility class for setting properties and maintaining the state of the content steering manifest.\n *\n * Content Steering manifest format:\n * VERSION: number (required) currently only version 1 is supported.\n * TTL: number in seconds (optional) until the next content steering manifest reload.\n * RELOAD-URI: string (optional) uri to fetch the next content steering manifest.\n * SERVICE-LOCATION-PRIORITY or PATHWAY-PRIORITY a non empty array of unique string values.\n * PATHWAY-CLONES: array (optional) (HLS only) pathway clone objects to copy from other playlists.\n */\n\nclass SteeringManifest {\n constructor() {\n this.priority_ = [];\n this.pathwayClones_ = new Map();\n }\n set version(number) {\n // Only version 1 is currently supported for both DASH and HLS.\n if (number === 1) {\n this.version_ = number;\n }\n }\n set ttl(seconds) {\n // TTL = time-to-live, default = 300 seconds.\n this.ttl_ = seconds || 300;\n }\n set reloadUri(uri) {\n if (uri) {\n // reload URI can be relative to the previous reloadUri.\n this.reloadUri_ = resolveUrl(this.reloadUri_, uri);\n }\n }\n set priority(array) {\n // priority must be non-empty and unique values.\n if (array && array.length) {\n this.priority_ = array;\n }\n }\n set pathwayClones(array) {\n // pathwayClones must be non-empty.\n if (array && array.length) {\n this.pathwayClones_ = new Map(array.map(clone => [clone.ID, clone]));\n }\n }\n get version() {\n return this.version_;\n }\n get ttl() {\n return this.ttl_;\n }\n get reloadUri() {\n return this.reloadUri_;\n }\n get priority() {\n return this.priority_;\n }\n get pathwayClones() {\n return this.pathwayClones_;\n }\n}\n/**\n * This class represents a content steering manifest and associated state. See both HLS and DASH specifications.\n * HLS: https://developer.apple.com/streaming/HLSContentSteeringSpecification.pdf and\n * https://datatracker.ietf.org/doc/draft-pantos-hls-rfc8216bis/ section 4.4.6.6.\n * DASH: https://dashif.org/docs/DASH-IF-CTS-00XX-Content-Steering-Community-Review.pdf\n *\n * @param {function} xhr for making a network request from the browser.\n * @param {function} bandwidth for fetching the current bandwidth from the main segment loader.\n */\n\nclass ContentSteeringController extends videojs.EventTarget {\n constructor(xhr, bandwidth) {\n super();\n this.currentPathway = null;\n this.defaultPathway = null;\n this.queryBeforeStart = false;\n this.availablePathways_ = new Set();\n this.steeringManifest = new SteeringManifest();\n this.proxyServerUrl_ = null;\n this.manifestType_ = null;\n this.ttlTimeout_ = null;\n this.request_ = null;\n this.currentPathwayClones = new Map();\n this.nextPathwayClones = new Map();\n this.excludedSteeringManifestURLs = new Set();\n this.logger_ = logger('Content Steering');\n this.xhr_ = xhr;\n this.getBandwidth_ = bandwidth;\n }\n /**\n * Assigns the content steering tag properties to the steering controller\n *\n * @param {string} baseUrl the baseURL from the main manifest for resolving the steering manifest url\n * @param {Object} steeringTag the content steering tag from the main manifest\n */\n\n assignTagProperties(baseUrl, steeringTag) {\n this.manifestType_ = steeringTag.serverUri ? 'HLS' : 'DASH'; // serverUri is HLS serverURL is DASH\n\n const steeringUri = steeringTag.serverUri || steeringTag.serverURL;\n if (!steeringUri) {\n this.logger_(`steering manifest URL is ${steeringUri}, cannot request steering manifest.`);\n this.trigger('error');\n return;\n } // Content steering manifests can be encoded as a data URI. We can decode, parse and return early if that's the case.\n\n if (steeringUri.startsWith('data:')) {\n this.decodeDataUriManifest_(steeringUri.substring(steeringUri.indexOf(',') + 1));\n return;\n } // reloadUri is the resolution of the main manifest URL and steering URL.\n\n this.steeringManifest.reloadUri = resolveUrl(baseUrl, steeringUri); // pathwayId is HLS defaultServiceLocation is DASH\n\n this.defaultPathway = steeringTag.pathwayId || steeringTag.defaultServiceLocation; // currently only DASH supports the following properties on tags.\n\n this.queryBeforeStart = steeringTag.queryBeforeStart;\n this.proxyServerUrl_ = steeringTag.proxyServerURL; // trigger a steering event if we have a pathway from the content steering tag.\n // this tells VHS which segment pathway to start with.\n // If queryBeforeStart is true we need to wait for the steering manifest response.\n\n if (this.defaultPathway && !this.queryBeforeStart) {\n this.trigger('content-steering');\n }\n }\n /**\n * Requests the content steering manifest and parse the response. This should only be called after\n * assignTagProperties was called with a content steering tag.\n *\n * @param {string} initialUri The optional uri to make the request with.\n * If set, the request should be made with exactly what is passed in this variable.\n * This scenario should only happen once on initalization.\n */\n\n requestSteeringManifest(initial) {\n const reloadUri = this.steeringManifest.reloadUri;\n if (!reloadUri) {\n return;\n } // We currently don't support passing MPD query parameters directly to the content steering URL as this requires\n // ExtUrlQueryInfo tag support. See the DASH content steering spec section 8.1.\n // This request URI accounts for manifest URIs that have been excluded.\n\n const uri = initial ? reloadUri : this.getRequestURI(reloadUri); // If there are no valid manifest URIs, we should stop content steering.\n\n if (!uri) {\n this.logger_('No valid content steering manifest URIs. Stopping content steering.');\n this.trigger('error');\n this.dispose();\n return;\n }\n const metadata = {\n contentSteeringInfo: {\n uri\n }\n };\n this.trigger({\n type: 'contentsteeringloadstart',\n metadata\n });\n this.request_ = this.xhr_({\n uri,\n requestType: 'content-steering-manifest'\n }, (error, errorInfo) => {\n if (error) {\n // If the client receives HTTP 410 Gone in response to a manifest request,\n // it MUST NOT issue another request for that URI for the remainder of the\n // playback session. It MAY continue to use the most-recently obtained set\n // of Pathways.\n if (errorInfo.status === 410) {\n this.logger_(`manifest request 410 ${error}.`);\n this.logger_(`There will be no more content steering requests to ${uri} this session.`);\n this.excludedSteeringManifestURLs.add(uri);\n return;\n } // If the client receives HTTP 429 Too Many Requests with a Retry-After\n // header in response to a manifest request, it SHOULD wait until the time\n // specified by the Retry-After header to reissue the request.\n\n if (errorInfo.status === 429) {\n const retrySeconds = errorInfo.responseHeaders['retry-after'];\n this.logger_(`manifest request 429 ${error}.`);\n this.logger_(`content steering will retry in ${retrySeconds} seconds.`);\n this.startTTLTimeout_(parseInt(retrySeconds, 10));\n return;\n } // If the Steering Manifest cannot be loaded and parsed correctly, the\n // client SHOULD continue to use the previous values and attempt to reload\n // it after waiting for the previously-specified TTL (or 5 minutes if\n // none).\n\n this.logger_(`manifest failed to load ${error}.`);\n this.startTTLTimeout_();\n return;\n }\n this.trigger({\n type: 'contentsteeringloadcomplete',\n metadata\n });\n let steeringManifestJson;\n try {\n steeringManifestJson = JSON.parse(this.request_.responseText);\n } catch (parseError) {\n const errorMetadata = {\n errorType: videojs.Error.StreamingContentSteeringParserError,\n error: parseError\n };\n this.trigger({\n type: 'error',\n metadata: errorMetadata\n });\n }\n this.assignSteeringProperties_(steeringManifestJson);\n const parsedMetadata = {\n contentSteeringInfo: metadata.contentSteeringInfo,\n contentSteeringManifest: {\n version: this.steeringManifest.version,\n reloadUri: this.steeringManifest.reloadUri,\n priority: this.steeringManifest.priority\n }\n };\n this.trigger({\n type: 'contentsteeringparsed',\n metadata: parsedMetadata\n });\n this.startTTLTimeout_();\n });\n }\n /**\n * Set the proxy server URL and add the steering manifest url as a URI encoded parameter.\n *\n * @param {string} steeringUrl the steering manifest url\n * @return the steering manifest url to a proxy server with all parameters set\n */\n\n setProxyServerUrl_(steeringUrl) {\n const steeringUrlObject = new window$1.URL(steeringUrl);\n const proxyServerUrlObject = new window$1.URL(this.proxyServerUrl_);\n proxyServerUrlObject.searchParams.set('url', encodeURI(steeringUrlObject.toString()));\n return this.setSteeringParams_(proxyServerUrlObject.toString());\n }\n /**\n * Decodes and parses the data uri encoded steering manifest\n *\n * @param {string} dataUri the data uri to be decoded and parsed.\n */\n\n decodeDataUriManifest_(dataUri) {\n const steeringManifestJson = JSON.parse(window$1.atob(dataUri));\n this.assignSteeringProperties_(steeringManifestJson);\n }\n /**\n * Set the HLS or DASH content steering manifest request query parameters. For example:\n * _HLS_pathway=\"\" and _HLS_throughput=\n * _DASH_pathway and _DASH_throughput\n *\n * @param {string} uri to add content steering server parameters to.\n * @return a new uri as a string with the added steering query parameters.\n */\n\n setSteeringParams_(url) {\n const urlObject = new window$1.URL(url);\n const path = this.getPathway();\n const networkThroughput = this.getBandwidth_();\n if (path) {\n const pathwayKey = `_${this.manifestType_}_pathway`;\n urlObject.searchParams.set(pathwayKey, path);\n }\n if (networkThroughput) {\n const throughputKey = `_${this.manifestType_}_throughput`;\n urlObject.searchParams.set(throughputKey, networkThroughput);\n }\n return urlObject.toString();\n }\n /**\n * Assigns the current steering manifest properties and to the SteeringManifest object\n *\n * @param {Object} steeringJson the raw JSON steering manifest\n */\n\n assignSteeringProperties_(steeringJson) {\n this.steeringManifest.version = steeringJson.VERSION;\n if (!this.steeringManifest.version) {\n this.logger_(`manifest version is ${steeringJson.VERSION}, which is not supported.`);\n this.trigger('error');\n return;\n }\n this.steeringManifest.ttl = steeringJson.TTL;\n this.steeringManifest.reloadUri = steeringJson['RELOAD-URI']; // HLS = PATHWAY-PRIORITY required. DASH = SERVICE-LOCATION-PRIORITY optional\n\n this.steeringManifest.priority = steeringJson['PATHWAY-PRIORITY'] || steeringJson['SERVICE-LOCATION-PRIORITY']; // Pathway clones to be created/updated in HLS.\n // See section 7.2 https://datatracker.ietf.org/doc/draft-pantos-hls-rfc8216bis/\n\n this.steeringManifest.pathwayClones = steeringJson['PATHWAY-CLONES'];\n this.nextPathwayClones = this.steeringManifest.pathwayClones; // 1. apply first pathway from the array.\n // 2. if first pathway doesn't exist in manifest, try next pathway.\n // a. if all pathways are exhausted, ignore the steering manifest priority.\n // 3. if segments fail from an established pathway, try all variants/renditions, then exclude the failed pathway.\n // a. exclude a pathway for a minimum of the last TTL duration. Meaning, from the next steering response,\n // the excluded pathway will be ignored.\n // See excludePathway usage in excludePlaylist().\n // If there are no available pathways, we need to stop content steering.\n\n if (!this.availablePathways_.size) {\n this.logger_('There are no available pathways for content steering. Ending content steering.');\n this.trigger('error');\n this.dispose();\n }\n const chooseNextPathway = pathwaysByPriority => {\n for (const path of pathwaysByPriority) {\n if (this.availablePathways_.has(path)) {\n return path;\n }\n } // If no pathway matches, ignore the manifest and choose the first available.\n\n return [...this.availablePathways_][0];\n };\n const nextPathway = chooseNextPathway(this.steeringManifest.priority);\n if (this.currentPathway !== nextPathway) {\n this.currentPathway = nextPathway;\n this.trigger('content-steering');\n }\n }\n /**\n * Returns the pathway to use for steering decisions\n *\n * @return {string} returns the current pathway or the default\n */\n\n getPathway() {\n return this.currentPathway || this.defaultPathway;\n }\n /**\n * Chooses the manifest request URI based on proxy URIs and server URLs.\n * Also accounts for exclusion on certain manifest URIs.\n *\n * @param {string} reloadUri the base uri before parameters\n *\n * @return {string} the final URI for the request to the manifest server.\n */\n\n getRequestURI(reloadUri) {\n if (!reloadUri) {\n return null;\n }\n const isExcluded = uri => this.excludedSteeringManifestURLs.has(uri);\n if (this.proxyServerUrl_) {\n const proxyURI = this.setProxyServerUrl_(reloadUri);\n if (!isExcluded(proxyURI)) {\n return proxyURI;\n }\n }\n const steeringURI = this.setSteeringParams_(reloadUri);\n if (!isExcluded(steeringURI)) {\n return steeringURI;\n } // Return nothing if all valid manifest URIs are excluded.\n\n return null;\n }\n /**\n * Start the timeout for re-requesting the steering manifest at the TTL interval.\n *\n * @param {number} ttl time in seconds of the timeout. Defaults to the\n * ttl interval in the steering manifest\n */\n\n startTTLTimeout_(ttl = this.steeringManifest.ttl) {\n // 300 (5 minutes) is the default value.\n const ttlMS = ttl * 1000;\n this.ttlTimeout_ = window$1.setTimeout(() => {\n this.requestSteeringManifest();\n }, ttlMS);\n }\n /**\n * Clear the TTL timeout if necessary.\n */\n\n clearTTLTimeout_() {\n window$1.clearTimeout(this.ttlTimeout_);\n this.ttlTimeout_ = null;\n }\n /**\n * aborts any current steering xhr and sets the current request object to null\n */\n\n abort() {\n if (this.request_) {\n this.request_.abort();\n }\n this.request_ = null;\n }\n /**\n * aborts steering requests clears the ttl timeout and resets all properties.\n */\n\n dispose() {\n this.off('content-steering');\n this.off('error');\n this.abort();\n this.clearTTLTimeout_();\n this.currentPathway = null;\n this.defaultPathway = null;\n this.queryBeforeStart = null;\n this.proxyServerUrl_ = null;\n this.manifestType_ = null;\n this.ttlTimeout_ = null;\n this.request_ = null;\n this.excludedSteeringManifestURLs = new Set();\n this.availablePathways_ = new Set();\n this.steeringManifest = new SteeringManifest();\n }\n /**\n * adds a pathway to the available pathways set\n *\n * @param {string} pathway the pathway string to add\n */\n\n addAvailablePathway(pathway) {\n if (pathway) {\n this.availablePathways_.add(pathway);\n }\n }\n /**\n * Clears all pathways from the available pathways set\n */\n\n clearAvailablePathways() {\n this.availablePathways_.clear();\n }\n /**\n * Removes a pathway from the available pathways set.\n */\n\n excludePathway(pathway) {\n return this.availablePathways_.delete(pathway);\n }\n /**\n * Checks the refreshed DASH manifest content steering tag for changes.\n *\n * @param {string} baseURL new steering tag on DASH manifest refresh\n * @param {Object} newTag the new tag to check for changes\n * @return a true or false whether the new tag has different values\n */\n\n didDASHTagChange(baseURL, newTag) {\n return !newTag && this.steeringManifest.reloadUri || newTag && (resolveUrl(baseURL, newTag.serverURL) !== this.steeringManifest.reloadUri || newTag.defaultServiceLocation !== this.defaultPathway || newTag.queryBeforeStart !== this.queryBeforeStart || newTag.proxyServerURL !== this.proxyServerUrl_);\n }\n getAvailablePathways() {\n return this.availablePathways_;\n }\n}\nconst ABORT_EARLY_EXCLUSION_SECONDS = 10;\nlet Vhs$1; // SegmentLoader stats that need to have each loader's\n// values summed to calculate the final value\n\nconst loaderStats = ['mediaRequests', 'mediaRequestsAborted', 'mediaRequestsTimedout', 'mediaRequestsErrored', 'mediaTransferDuration', 'mediaBytesTransferred', 'mediaAppends'];\nconst sumLoaderStat = function (stat) {\n return this.audioSegmentLoader_[stat] + this.mainSegmentLoader_[stat];\n};\nconst shouldSwitchToMedia = function ({\n currentPlaylist,\n buffered,\n currentTime,\n nextPlaylist,\n bufferLowWaterLine,\n bufferHighWaterLine,\n duration,\n bufferBasedABR,\n log\n}) {\n // we have no other playlist to switch to\n if (!nextPlaylist) {\n videojs.log.warn('We received no playlist to switch to. Please check your stream.');\n return false;\n }\n const sharedLogLine = `allowing switch ${currentPlaylist && currentPlaylist.id || 'null'} -> ${nextPlaylist.id}`;\n if (!currentPlaylist) {\n log(`${sharedLogLine} as current playlist is not set`);\n return true;\n } // no need to switch if playlist is the same\n\n if (nextPlaylist.id === currentPlaylist.id) {\n return false;\n } // determine if current time is in a buffered range.\n\n const isBuffered = Boolean(findRange(buffered, currentTime).length); // If the playlist is live, then we want to not take low water line into account.\n // This is because in LIVE, the player plays 3 segments from the end of the\n // playlist, and if `BUFFER_LOW_WATER_LINE` is greater than the duration availble\n // in those segments, a viewer will never experience a rendition upswitch.\n\n if (!currentPlaylist.endList) {\n // For LLHLS live streams, don't switch renditions before playback has started, as it almost\n // doubles the time to first playback.\n if (!isBuffered && typeof currentPlaylist.partTargetDuration === 'number') {\n log(`not ${sharedLogLine} as current playlist is live llhls, but currentTime isn't in buffered.`);\n return false;\n }\n log(`${sharedLogLine} as current playlist is live`);\n return true;\n }\n const forwardBuffer = timeAheadOf(buffered, currentTime);\n const maxBufferLowWaterLine = bufferBasedABR ? Config.EXPERIMENTAL_MAX_BUFFER_LOW_WATER_LINE : Config.MAX_BUFFER_LOW_WATER_LINE; // For the same reason as LIVE, we ignore the low water line when the VOD\n // duration is below the max potential low water line\n\n if (duration < maxBufferLowWaterLine) {\n log(`${sharedLogLine} as duration < max low water line (${duration} < ${maxBufferLowWaterLine})`);\n return true;\n }\n const nextBandwidth = nextPlaylist.attributes.BANDWIDTH;\n const currBandwidth = currentPlaylist.attributes.BANDWIDTH; // when switching down, if our buffer is lower than the high water line,\n // we can switch down\n\n if (nextBandwidth < currBandwidth && (!bufferBasedABR || forwardBuffer < bufferHighWaterLine)) {\n let logLine = `${sharedLogLine} as next bandwidth < current bandwidth (${nextBandwidth} < ${currBandwidth})`;\n if (bufferBasedABR) {\n logLine += ` and forwardBuffer < bufferHighWaterLine (${forwardBuffer} < ${bufferHighWaterLine})`;\n }\n log(logLine);\n return true;\n } // and if our buffer is higher than the low water line,\n // we can switch up\n\n if ((!bufferBasedABR || nextBandwidth > currBandwidth) && forwardBuffer >= bufferLowWaterLine) {\n let logLine = `${sharedLogLine} as forwardBuffer >= bufferLowWaterLine (${forwardBuffer} >= ${bufferLowWaterLine})`;\n if (bufferBasedABR) {\n logLine += ` and next bandwidth > current bandwidth (${nextBandwidth} > ${currBandwidth})`;\n }\n log(logLine);\n return true;\n }\n log(`not ${sharedLogLine} as no switching criteria met`);\n return false;\n};\n/**\n * the main playlist controller controller all interactons\n * between playlists and segmentloaders. At this time this mainly\n * involves a main playlist and a series of audio playlists\n * if they are available\n *\n * @class PlaylistController\n * @extends videojs.EventTarget\n */\n\nclass PlaylistController extends videojs.EventTarget {\n constructor(options) {\n super();\n const {\n src,\n withCredentials,\n tech,\n bandwidth,\n externVhs,\n useCueTags,\n playlistExclusionDuration,\n enableLowInitialPlaylist,\n sourceType,\n cacheEncryptionKeys,\n bufferBasedABR,\n leastPixelDiffSelector,\n captionServices,\n experimentalUseMMS\n } = options;\n if (!src) {\n throw new Error('A non-empty playlist URL or JSON manifest string is required');\n }\n let {\n maxPlaylistRetries\n } = options;\n if (maxPlaylistRetries === null || typeof maxPlaylistRetries === 'undefined') {\n maxPlaylistRetries = Infinity;\n }\n Vhs$1 = externVhs;\n this.bufferBasedABR = Boolean(bufferBasedABR);\n this.leastPixelDiffSelector = Boolean(leastPixelDiffSelector);\n this.withCredentials = withCredentials;\n this.tech_ = tech;\n this.vhs_ = tech.vhs;\n this.player_ = options.player_;\n this.sourceType_ = sourceType;\n this.useCueTags_ = useCueTags;\n this.playlistExclusionDuration = playlistExclusionDuration;\n this.maxPlaylistRetries = maxPlaylistRetries;\n this.enableLowInitialPlaylist = enableLowInitialPlaylist;\n if (this.useCueTags_) {\n this.cueTagsTrack_ = this.tech_.addTextTrack('metadata', 'ad-cues');\n this.cueTagsTrack_.inBandMetadataTrackDispatchType = '';\n }\n this.requestOptions_ = {\n withCredentials,\n maxPlaylistRetries,\n timeout: null\n };\n this.on('error', this.pauseLoading);\n this.mediaTypes_ = createMediaTypes();\n if (experimentalUseMMS && window$1.ManagedMediaSource) {\n // Airplay source not yet implemented. Remote playback must be disabled.\n this.tech_.el_.disableRemotePlayback = true;\n this.mediaSource = new window$1.ManagedMediaSource();\n videojs.log('Using ManagedMediaSource');\n } else if (window$1.MediaSource) {\n this.mediaSource = new window$1.MediaSource();\n }\n this.handleDurationChange_ = this.handleDurationChange_.bind(this);\n this.handleSourceOpen_ = this.handleSourceOpen_.bind(this);\n this.handleSourceEnded_ = this.handleSourceEnded_.bind(this);\n this.load = this.load.bind(this);\n this.pause = this.pause.bind(this);\n this.mediaSource.addEventListener('durationchange', this.handleDurationChange_); // load the media source into the player\n\n this.mediaSource.addEventListener('sourceopen', this.handleSourceOpen_);\n this.mediaSource.addEventListener('sourceended', this.handleSourceEnded_);\n this.mediaSource.addEventListener('startstreaming', this.load);\n this.mediaSource.addEventListener('endstreaming', this.pause); // we don't have to handle sourceclose since dispose will handle termination of\n // everything, and the MediaSource should not be detached without a proper disposal\n\n this.seekable_ = createTimeRanges();\n this.hasPlayed_ = false;\n this.syncController_ = new SyncController(options);\n this.segmentMetadataTrack_ = tech.addRemoteTextTrack({\n kind: 'metadata',\n label: 'segment-metadata'\n }, false).track;\n this.decrypter_ = new Decrypter();\n this.sourceUpdater_ = new SourceUpdater(this.mediaSource);\n this.inbandTextTracks_ = {};\n this.timelineChangeController_ = new TimelineChangeController();\n this.keyStatusMap_ = new Map();\n const segmentLoaderSettings = {\n vhs: this.vhs_,\n parse708captions: options.parse708captions,\n useDtsForTimestampOffset: options.useDtsForTimestampOffset,\n captionServices,\n mediaSource: this.mediaSource,\n currentTime: this.tech_.currentTime.bind(this.tech_),\n seekable: () => this.seekable(),\n seeking: () => this.tech_.seeking(),\n duration: () => this.duration(),\n hasPlayed: () => this.hasPlayed_,\n goalBufferLength: () => this.goalBufferLength(),\n bandwidth,\n syncController: this.syncController_,\n decrypter: this.decrypter_,\n sourceType: this.sourceType_,\n inbandTextTracks: this.inbandTextTracks_,\n cacheEncryptionKeys,\n sourceUpdater: this.sourceUpdater_,\n timelineChangeController: this.timelineChangeController_,\n exactManifestTimings: options.exactManifestTimings,\n addMetadataToTextTrack: this.addMetadataToTextTrack.bind(this)\n }; // The source type check not only determines whether a special DASH playlist loader\n // should be used, but also covers the case where the provided src is a vhs-json\n // manifest object (instead of a URL). In the case of vhs-json, the default\n // PlaylistLoader should be used.\n\n this.mainPlaylistLoader_ = this.sourceType_ === 'dash' ? new DashPlaylistLoader(src, this.vhs_, merge(this.requestOptions_, {\n addMetadataToTextTrack: this.addMetadataToTextTrack.bind(this)\n })) : new PlaylistLoader(src, this.vhs_, merge(this.requestOptions_, {\n addDateRangesToTextTrack: this.addDateRangesToTextTrack_.bind(this)\n }));\n this.setupMainPlaylistLoaderListeners_(); // setup segment loaders\n // combined audio/video or just video when alternate audio track is selected\n\n this.mainSegmentLoader_ = new SegmentLoader(merge(segmentLoaderSettings, {\n segmentMetadataTrack: this.segmentMetadataTrack_,\n loaderType: 'main'\n }), options); // alternate audio track\n\n this.audioSegmentLoader_ = new SegmentLoader(merge(segmentLoaderSettings, {\n loaderType: 'audio'\n }), options);\n this.subtitleSegmentLoader_ = new VTTSegmentLoader(merge(segmentLoaderSettings, {\n loaderType: 'vtt',\n featuresNativeTextTracks: this.tech_.featuresNativeTextTracks,\n loadVttJs: () => new Promise((resolve, reject) => {\n function onLoad() {\n tech.off('vttjserror', onError);\n resolve();\n }\n function onError() {\n tech.off('vttjsloaded', onLoad);\n reject();\n }\n tech.one('vttjsloaded', onLoad);\n tech.one('vttjserror', onError); // safe to call multiple times, script will be loaded only once:\n\n tech.addWebVttScript_();\n })\n }), options);\n const getBandwidth = () => {\n return this.mainSegmentLoader_.bandwidth;\n };\n this.contentSteeringController_ = new ContentSteeringController(this.vhs_.xhr, getBandwidth);\n this.setupSegmentLoaderListeners_();\n if (this.bufferBasedABR) {\n this.mainPlaylistLoader_.one('loadedplaylist', () => this.startABRTimer_());\n this.tech_.on('pause', () => this.stopABRTimer_());\n this.tech_.on('play', () => this.startABRTimer_());\n } // Create SegmentLoader stat-getters\n // mediaRequests_\n // mediaRequestsAborted_\n // mediaRequestsTimedout_\n // mediaRequestsErrored_\n // mediaTransferDuration_\n // mediaBytesTransferred_\n // mediaAppends_\n\n loaderStats.forEach(stat => {\n this[stat + '_'] = sumLoaderStat.bind(this, stat);\n });\n this.logger_ = logger('pc');\n this.triggeredFmp4Usage = false;\n if (this.tech_.preload() === 'none') {\n this.loadOnPlay_ = () => {\n this.loadOnPlay_ = null;\n this.mainPlaylistLoader_.load();\n };\n this.tech_.one('play', this.loadOnPlay_);\n } else {\n this.mainPlaylistLoader_.load();\n }\n this.timeToLoadedData__ = -1;\n this.mainAppendsToLoadedData__ = -1;\n this.audioAppendsToLoadedData__ = -1;\n const event = this.tech_.preload() === 'none' ? 'play' : 'loadstart'; // start the first frame timer on loadstart or play (for preload none)\n\n this.tech_.one(event, () => {\n const timeToLoadedDataStart = Date.now();\n this.tech_.one('loadeddata', () => {\n this.timeToLoadedData__ = Date.now() - timeToLoadedDataStart;\n this.mainAppendsToLoadedData__ = this.mainSegmentLoader_.mediaAppends;\n this.audioAppendsToLoadedData__ = this.audioSegmentLoader_.mediaAppends;\n });\n });\n }\n mainAppendsToLoadedData_() {\n return this.mainAppendsToLoadedData__;\n }\n audioAppendsToLoadedData_() {\n return this.audioAppendsToLoadedData__;\n }\n appendsToLoadedData_() {\n const main = this.mainAppendsToLoadedData_();\n const audio = this.audioAppendsToLoadedData_();\n if (main === -1 || audio === -1) {\n return -1;\n }\n return main + audio;\n }\n timeToLoadedData_() {\n return this.timeToLoadedData__;\n }\n /**\n * Run selectPlaylist and switch to the new playlist if we should\n *\n * @param {string} [reason=abr] a reason for why the ABR check is made\n * @private\n */\n\n checkABR_(reason = 'abr') {\n const nextPlaylist = this.selectPlaylist();\n if (nextPlaylist && this.shouldSwitchToMedia_(nextPlaylist)) {\n this.switchMedia_(nextPlaylist, reason);\n }\n }\n switchMedia_(playlist, cause, delay) {\n const oldMedia = this.media();\n const oldId = oldMedia && (oldMedia.id || oldMedia.uri);\n const newId = playlist && (playlist.id || playlist.uri);\n if (oldId && oldId !== newId) {\n this.logger_(`switch media ${oldId} -> ${newId} from ${cause}`);\n const metadata = {\n renditionInfo: {\n id: newId,\n bandwidth: playlist.attributes.BANDWIDTH,\n resolution: playlist.attributes.RESOLUTION,\n codecs: playlist.attributes.CODECS\n },\n cause\n };\n this.trigger({\n type: 'renditionselected',\n metadata\n });\n this.tech_.trigger({\n type: 'usage',\n name: `vhs-rendition-change-${cause}`\n });\n }\n this.mainPlaylistLoader_.media(playlist, delay);\n }\n /**\n * A function that ensures we switch our playlists inside of `mediaTypes`\n * to match the current `serviceLocation` provided by the contentSteering controller.\n * We want to check media types of `AUDIO`, `SUBTITLES`, and `CLOSED-CAPTIONS`.\n *\n * This should only be called on a DASH playback scenario while using content steering.\n * This is necessary due to differences in how media in HLS manifests are generally tied to\n * a video playlist, where in DASH that is not always the case.\n */\n\n switchMediaForDASHContentSteering_() {\n ['AUDIO', 'SUBTITLES', 'CLOSED-CAPTIONS'].forEach(type => {\n const mediaType = this.mediaTypes_[type];\n const activeGroup = mediaType ? mediaType.activeGroup() : null;\n const pathway = this.contentSteeringController_.getPathway();\n if (activeGroup && pathway) {\n // activeGroup can be an array or a single group\n const mediaPlaylists = activeGroup.length ? activeGroup[0].playlists : activeGroup.playlists;\n const dashMediaPlaylists = mediaPlaylists.filter(p => p.attributes.serviceLocation === pathway); // Switch the current active playlist to the correct CDN\n\n if (dashMediaPlaylists.length) {\n this.mediaTypes_[type].activePlaylistLoader.media(dashMediaPlaylists[0]);\n }\n }\n });\n }\n /**\n * Start a timer that periodically calls checkABR_\n *\n * @private\n */\n\n startABRTimer_() {\n this.stopABRTimer_();\n this.abrTimer_ = window$1.setInterval(() => this.checkABR_(), 250);\n }\n /**\n * Stop the timer that periodically calls checkABR_\n *\n * @private\n */\n\n stopABRTimer_() {\n // if we're scrubbing, we don't need to pause.\n // This getter will be added to Video.js in version 7.11.\n if (this.tech_.scrubbing && this.tech_.scrubbing()) {\n return;\n }\n window$1.clearInterval(this.abrTimer_);\n this.abrTimer_ = null;\n }\n /**\n * Get a list of playlists for the currently selected audio playlist\n *\n * @return {Array} the array of audio playlists\n */\n\n getAudioTrackPlaylists_() {\n const main = this.main();\n const defaultPlaylists = main && main.playlists || []; // if we don't have any audio groups then we can only\n // assume that the audio tracks are contained in main\n // playlist array, use that or an empty array.\n\n if (!main || !main.mediaGroups || !main.mediaGroups.AUDIO) {\n return defaultPlaylists;\n }\n const AUDIO = main.mediaGroups.AUDIO;\n const groupKeys = Object.keys(AUDIO);\n let track; // get the current active track\n\n if (Object.keys(this.mediaTypes_.AUDIO.groups).length) {\n track = this.mediaTypes_.AUDIO.activeTrack(); // or get the default track from main if mediaTypes_ isn't setup yet\n } else {\n // default group is `main` or just the first group.\n const defaultGroup = AUDIO.main || groupKeys.length && AUDIO[groupKeys[0]];\n for (const label in defaultGroup) {\n if (defaultGroup[label].default) {\n track = {\n label\n };\n break;\n }\n }\n } // no active track no playlists.\n\n if (!track) {\n return defaultPlaylists;\n }\n const playlists = []; // get all of the playlists that are possible for the\n // active track.\n\n for (const group in AUDIO) {\n if (AUDIO[group][track.label]) {\n const properties = AUDIO[group][track.label];\n if (properties.playlists && properties.playlists.length) {\n playlists.push.apply(playlists, properties.playlists);\n } else if (properties.uri) {\n playlists.push(properties);\n } else if (main.playlists.length) {\n // if an audio group does not have a uri\n // see if we have main playlists that use it as a group.\n // if we do then add those to the playlists list.\n for (let i = 0; i < main.playlists.length; i++) {\n const playlist = main.playlists[i];\n if (playlist.attributes && playlist.attributes.AUDIO && playlist.attributes.AUDIO === group) {\n playlists.push(playlist);\n }\n }\n }\n }\n }\n if (!playlists.length) {\n return defaultPlaylists;\n }\n return playlists;\n }\n /**\n * Register event handlers on the main playlist loader. A helper\n * function for construction time.\n *\n * @private\n */\n\n setupMainPlaylistLoaderListeners_() {\n this.mainPlaylistLoader_.on('loadedmetadata', () => {\n const media = this.mainPlaylistLoader_.media();\n const requestTimeout = media.targetDuration * 1.5 * 1000; // If we don't have any more available playlists, we don't want to\n // timeout the request.\n\n if (isLowestEnabledRendition(this.mainPlaylistLoader_.main, this.mainPlaylistLoader_.media())) {\n this.requestOptions_.timeout = 0;\n } else {\n this.requestOptions_.timeout = requestTimeout;\n } // if this isn't a live video and preload permits, start\n // downloading segments\n\n if (media.endList && this.tech_.preload() !== 'none') {\n this.mainSegmentLoader_.playlist(media, this.requestOptions_);\n this.mainSegmentLoader_.load();\n }\n setupMediaGroups({\n sourceType: this.sourceType_,\n segmentLoaders: {\n AUDIO: this.audioSegmentLoader_,\n SUBTITLES: this.subtitleSegmentLoader_,\n main: this.mainSegmentLoader_\n },\n tech: this.tech_,\n requestOptions: this.requestOptions_,\n mainPlaylistLoader: this.mainPlaylistLoader_,\n vhs: this.vhs_,\n main: this.main(),\n mediaTypes: this.mediaTypes_,\n excludePlaylist: this.excludePlaylist.bind(this)\n });\n this.triggerPresenceUsage_(this.main(), media);\n this.setupFirstPlay();\n if (!this.mediaTypes_.AUDIO.activePlaylistLoader || this.mediaTypes_.AUDIO.activePlaylistLoader.media()) {\n this.trigger('selectedinitialmedia');\n } else {\n // We must wait for the active audio playlist loader to\n // finish setting up before triggering this event so the\n // representations API and EME setup is correct\n this.mediaTypes_.AUDIO.activePlaylistLoader.one('loadedmetadata', () => {\n this.trigger('selectedinitialmedia');\n });\n }\n });\n this.mainPlaylistLoader_.on('loadedplaylist', () => {\n if (this.loadOnPlay_) {\n this.tech_.off('play', this.loadOnPlay_);\n }\n let updatedPlaylist = this.mainPlaylistLoader_.media();\n if (!updatedPlaylist) {\n // Add content steering listeners on first load and init.\n this.attachContentSteeringListeners_();\n this.initContentSteeringController_(); // exclude any variants that are not supported by the browser before selecting\n // an initial media as the playlist selectors do not consider browser support\n\n this.excludeUnsupportedVariants_();\n let selectedMedia;\n if (this.enableLowInitialPlaylist) {\n selectedMedia = this.selectInitialPlaylist();\n }\n if (!selectedMedia) {\n selectedMedia = this.selectPlaylist();\n }\n if (!selectedMedia || !this.shouldSwitchToMedia_(selectedMedia)) {\n return;\n }\n this.initialMedia_ = selectedMedia;\n this.switchMedia_(this.initialMedia_, 'initial'); // Under the standard case where a source URL is provided, loadedplaylist will\n // fire again since the playlist will be requested. In the case of vhs-json\n // (where the manifest object is provided as the source), when the media\n // playlist's `segments` list is already available, a media playlist won't be\n // requested, and loadedplaylist won't fire again, so the playlist handler must be\n // called on its own here.\n\n const haveJsonSource = this.sourceType_ === 'vhs-json' && this.initialMedia_.segments;\n if (!haveJsonSource) {\n return;\n }\n updatedPlaylist = this.initialMedia_;\n }\n this.handleUpdatedMediaPlaylist(updatedPlaylist);\n });\n this.mainPlaylistLoader_.on('error', () => {\n const error = this.mainPlaylistLoader_.error;\n this.excludePlaylist({\n playlistToExclude: error.playlist,\n error\n });\n });\n this.mainPlaylistLoader_.on('mediachanging', () => {\n this.mainSegmentLoader_.abort();\n this.mainSegmentLoader_.pause();\n });\n this.mainPlaylistLoader_.on('mediachange', () => {\n const media = this.mainPlaylistLoader_.media();\n const requestTimeout = media.targetDuration * 1.5 * 1000; // If we don't have any more available playlists, we don't want to\n // timeout the request.\n\n if (isLowestEnabledRendition(this.mainPlaylistLoader_.main, this.mainPlaylistLoader_.media())) {\n this.requestOptions_.timeout = 0;\n } else {\n this.requestOptions_.timeout = requestTimeout;\n }\n if (this.sourceType_ === 'dash') {\n // we don't want to re-request the same hls playlist right after it was changed\n this.mainPlaylistLoader_.load();\n } // TODO: Create a new event on the PlaylistLoader that signals\n // that the segments have changed in some way and use that to\n // update the SegmentLoader instead of doing it twice here and\n // on `loadedplaylist`\n\n this.mainSegmentLoader_.pause();\n this.mainSegmentLoader_.playlist(media, this.requestOptions_);\n if (this.waitingForFastQualityPlaylistReceived_) {\n this.runFastQualitySwitch_();\n } else {\n this.mainSegmentLoader_.load();\n }\n this.tech_.trigger({\n type: 'mediachange',\n bubbles: true\n });\n });\n this.mainPlaylistLoader_.on('playlistunchanged', () => {\n const updatedPlaylist = this.mainPlaylistLoader_.media(); // ignore unchanged playlists that have already been\n // excluded for not-changing. We likely just have a really slowly updating\n // playlist.\n\n if (updatedPlaylist.lastExcludeReason_ === 'playlist-unchanged') {\n return;\n }\n const playlistOutdated = this.stuckAtPlaylistEnd_(updatedPlaylist);\n if (playlistOutdated) {\n // Playlist has stopped updating and we're stuck at its end. Try to\n // exclude it and switch to another playlist in the hope that that\n // one is updating (and give the player a chance to re-adjust to the\n // safe live point).\n this.excludePlaylist({\n error: {\n message: 'Playlist no longer updating.',\n reason: 'playlist-unchanged'\n }\n }); // useful for monitoring QoS\n\n this.tech_.trigger('playliststuck');\n }\n });\n this.mainPlaylistLoader_.on('renditiondisabled', () => {\n this.tech_.trigger({\n type: 'usage',\n name: 'vhs-rendition-disabled'\n });\n });\n this.mainPlaylistLoader_.on('renditionenabled', () => {\n this.tech_.trigger({\n type: 'usage',\n name: 'vhs-rendition-enabled'\n });\n });\n const playlistLoaderEvents = ['manifestrequeststart', 'manifestrequestcomplete', 'manifestparsestart', 'manifestparsecomplete', 'playlistrequeststart', 'playlistrequestcomplete', 'playlistparsestart', 'playlistparsecomplete', 'renditiondisabled', 'renditionenabled'];\n playlistLoaderEvents.forEach(eventName => {\n this.mainPlaylistLoader_.on(eventName, metadata => {\n // trigger directly on the player to ensure early events are fired.\n this.player_.trigger(_extends({}, metadata));\n });\n });\n }\n /**\n * Given an updated media playlist (whether it was loaded for the first time, or\n * refreshed for live playlists), update any relevant properties and state to reflect\n * changes in the media that should be accounted for (e.g., cues and duration).\n *\n * @param {Object} updatedPlaylist the updated media playlist object\n *\n * @private\n */\n\n handleUpdatedMediaPlaylist(updatedPlaylist) {\n if (this.useCueTags_) {\n this.updateAdCues_(updatedPlaylist);\n } // TODO: Create a new event on the PlaylistLoader that signals\n // that the segments have changed in some way and use that to\n // update the SegmentLoader instead of doing it twice here and\n // on `mediachange`\n\n this.mainSegmentLoader_.pause();\n this.mainSegmentLoader_.playlist(updatedPlaylist, this.requestOptions_);\n if (this.waitingForFastQualityPlaylistReceived_) {\n this.runFastQualitySwitch_();\n }\n this.updateDuration(!updatedPlaylist.endList); // If the player isn't paused, ensure that the segment loader is running,\n // as it is possible that it was temporarily stopped while waiting for\n // a playlist (e.g., in case the playlist errored and we re-requested it).\n\n if (!this.tech_.paused()) {\n this.mainSegmentLoader_.load();\n if (this.audioSegmentLoader_) {\n this.audioSegmentLoader_.load();\n }\n }\n }\n /**\n * A helper function for triggerring presence usage events once per source\n *\n * @private\n */\n\n triggerPresenceUsage_(main, media) {\n const mediaGroups = main.mediaGroups || {};\n let defaultDemuxed = true;\n const audioGroupKeys = Object.keys(mediaGroups.AUDIO);\n for (const mediaGroup in mediaGroups.AUDIO) {\n for (const label in mediaGroups.AUDIO[mediaGroup]) {\n const properties = mediaGroups.AUDIO[mediaGroup][label];\n if (!properties.uri) {\n defaultDemuxed = false;\n }\n }\n }\n if (defaultDemuxed) {\n this.tech_.trigger({\n type: 'usage',\n name: 'vhs-demuxed'\n });\n }\n if (Object.keys(mediaGroups.SUBTITLES).length) {\n this.tech_.trigger({\n type: 'usage',\n name: 'vhs-webvtt'\n });\n }\n if (Vhs$1.Playlist.isAes(media)) {\n this.tech_.trigger({\n type: 'usage',\n name: 'vhs-aes'\n });\n }\n if (audioGroupKeys.length && Object.keys(mediaGroups.AUDIO[audioGroupKeys[0]]).length > 1) {\n this.tech_.trigger({\n type: 'usage',\n name: 'vhs-alternate-audio'\n });\n }\n if (this.useCueTags_) {\n this.tech_.trigger({\n type: 'usage',\n name: 'vhs-playlist-cue-tags'\n });\n }\n }\n shouldSwitchToMedia_(nextPlaylist) {\n const currentPlaylist = this.mainPlaylistLoader_.media() || this.mainPlaylistLoader_.pendingMedia_;\n const currentTime = this.tech_.currentTime();\n const bufferLowWaterLine = this.bufferLowWaterLine();\n const bufferHighWaterLine = this.bufferHighWaterLine();\n const buffered = this.tech_.buffered();\n return shouldSwitchToMedia({\n buffered,\n currentTime,\n currentPlaylist,\n nextPlaylist,\n bufferLowWaterLine,\n bufferHighWaterLine,\n duration: this.duration(),\n bufferBasedABR: this.bufferBasedABR,\n log: this.logger_\n });\n }\n /**\n * Register event handlers on the segment loaders. A helper function\n * for construction time.\n *\n * @private\n */\n\n setupSegmentLoaderListeners_() {\n this.mainSegmentLoader_.on('bandwidthupdate', () => {\n // Whether or not buffer based ABR or another ABR is used, on a bandwidth change it's\n // useful to check to see if a rendition switch should be made.\n this.checkABR_('bandwidthupdate');\n this.tech_.trigger('bandwidthupdate');\n });\n this.mainSegmentLoader_.on('timeout', () => {\n if (this.bufferBasedABR) {\n // If a rendition change is needed, then it would've be done on `bandwidthupdate`.\n // Here the only consideration is that for buffer based ABR there's no guarantee\n // of an immediate switch (since the bandwidth is averaged with a timeout\n // bandwidth value of 1), so force a load on the segment loader to keep it going.\n this.mainSegmentLoader_.load();\n }\n }); // `progress` events are not reliable enough of a bandwidth measure to trigger buffer\n // based ABR.\n\n if (!this.bufferBasedABR) {\n this.mainSegmentLoader_.on('progress', () => {\n this.trigger('progress');\n });\n }\n this.mainSegmentLoader_.on('error', () => {\n const error = this.mainSegmentLoader_.error();\n this.excludePlaylist({\n playlistToExclude: error.playlist,\n error\n });\n });\n this.mainSegmentLoader_.on('appenderror', () => {\n this.error = this.mainSegmentLoader_.error_;\n this.trigger('error');\n });\n this.mainSegmentLoader_.on('syncinfoupdate', () => {\n this.onSyncInfoUpdate_();\n });\n this.mainSegmentLoader_.on('timestampoffset', () => {\n this.tech_.trigger({\n type: 'usage',\n name: 'vhs-timestamp-offset'\n });\n });\n this.audioSegmentLoader_.on('syncinfoupdate', () => {\n this.onSyncInfoUpdate_();\n });\n this.audioSegmentLoader_.on('appenderror', () => {\n this.error = this.audioSegmentLoader_.error_;\n this.trigger('error');\n });\n this.mainSegmentLoader_.on('ended', () => {\n this.logger_('main segment loader ended');\n this.onEndOfStream();\n }); // There is the possibility of the video segment and the audio segment\n // at a current time to be on different timelines. When this occurs, the player\n // forwards playback to a point where these two segment types are back on the same\n // timeline. This time will be just after the end of the audio segment that is on\n // a previous timeline.\n\n this.timelineChangeController_.on('audioTimelineBehind', () => {\n const segmentInfo = this.audioSegmentLoader_.pendingSegment_;\n if (!segmentInfo || !segmentInfo.segment || !segmentInfo.segment.syncInfo) {\n return;\n } // Update the current time to just after the faulty audio segment.\n // This moves playback to a spot where both audio and video segments\n // are on the same timeline.\n\n const newTime = segmentInfo.segment.syncInfo.end + 0.01;\n this.tech_.setCurrentTime(newTime);\n });\n this.mainSegmentLoader_.on('earlyabort', event => {\n // never try to early abort with the new ABR algorithm\n if (this.bufferBasedABR) {\n return;\n }\n this.delegateLoaders_('all', ['abort']);\n this.excludePlaylist({\n error: {\n message: 'Aborted early because there isn\\'t enough bandwidth to complete ' + 'the request without rebuffering.'\n },\n playlistExclusionDuration: ABORT_EARLY_EXCLUSION_SECONDS\n });\n });\n const updateCodecs = () => {\n if (!this.sourceUpdater_.hasCreatedSourceBuffers()) {\n return this.tryToCreateSourceBuffers_();\n }\n const codecs = this.getCodecsOrExclude_(); // no codecs means that the playlist was excluded\n\n if (!codecs) {\n return;\n }\n this.sourceUpdater_.addOrChangeSourceBuffers(codecs);\n };\n this.mainSegmentLoader_.on('trackinfo', updateCodecs);\n this.audioSegmentLoader_.on('trackinfo', updateCodecs);\n this.mainSegmentLoader_.on('fmp4', () => {\n if (!this.triggeredFmp4Usage) {\n this.tech_.trigger({\n type: 'usage',\n name: 'vhs-fmp4'\n });\n this.triggeredFmp4Usage = true;\n }\n });\n this.audioSegmentLoader_.on('fmp4', () => {\n if (!this.triggeredFmp4Usage) {\n this.tech_.trigger({\n type: 'usage',\n name: 'vhs-fmp4'\n });\n this.triggeredFmp4Usage = true;\n }\n });\n this.audioSegmentLoader_.on('ended', () => {\n this.logger_('audioSegmentLoader ended');\n this.onEndOfStream();\n });\n const segmentLoaderEvents = ['segmentselected', 'segmentloadstart', 'segmentloaded', 'segmentkeyloadstart', 'segmentkeyloadcomplete', 'segmentdecryptionstart', 'segmentdecryptioncomplete', 'segmenttransmuxingstart', 'segmenttransmuxingcomplete', 'segmenttransmuxingtrackinfoavailable', 'segmenttransmuxingtiminginfoavailable', 'segmentappendstart', 'appendsdone', 'bandwidthupdated', 'timelinechange', 'codecschange'];\n segmentLoaderEvents.forEach(eventName => {\n this.mainSegmentLoader_.on(eventName, metadata => {\n this.player_.trigger(_extends({}, metadata));\n });\n this.audioSegmentLoader_.on(eventName, metadata => {\n this.player_.trigger(_extends({}, metadata));\n });\n this.subtitleSegmentLoader_.on(eventName, metadata => {\n this.player_.trigger(_extends({}, metadata));\n });\n });\n }\n mediaSecondsLoaded_() {\n return Math.max(this.audioSegmentLoader_.mediaSecondsLoaded + this.mainSegmentLoader_.mediaSecondsLoaded);\n }\n /**\n * Call load on our SegmentLoaders\n */\n\n load() {\n this.mainSegmentLoader_.load();\n if (this.mediaTypes_.AUDIO.activePlaylistLoader) {\n this.audioSegmentLoader_.load();\n }\n if (this.mediaTypes_.SUBTITLES.activePlaylistLoader) {\n this.subtitleSegmentLoader_.load();\n }\n }\n /**\n * Call pause on our SegmentLoaders\n */\n\n pause() {\n this.mainSegmentLoader_.pause();\n if (this.mediaTypes_.AUDIO.activePlaylistLoader) {\n this.audioSegmentLoader_.pause();\n }\n if (this.mediaTypes_.SUBTITLES.activePlaylistLoader) {\n this.subtitleSegmentLoader_.pause();\n }\n }\n /**\n * Re-tune playback quality level for the current player\n * conditions. This method will perform destructive actions like removing\n * already buffered content in order to readjust the currently active\n * playlist quickly. This is good for manual quality changes\n *\n * @private\n */\n\n fastQualityChange_(media = this.selectPlaylist()) {\n if (media && media === this.mainPlaylistLoader_.media()) {\n this.logger_('skipping fastQualityChange because new media is same as old');\n return;\n }\n this.switchMedia_(media, 'fast-quality'); // we would like to avoid race condition when we call fastQuality,\n // reset everything and start loading segments from prev segments instead of new because new playlist is not received yet\n\n this.waitingForFastQualityPlaylistReceived_ = true;\n }\n runFastQualitySwitch_() {\n this.waitingForFastQualityPlaylistReceived_ = false; // Delete all buffered data to allow an immediate quality switch.\n\n this.mainSegmentLoader_.pause();\n this.mainSegmentLoader_.resetEverything(() => {\n this.mainSegmentLoader_.load();\n }); // don't need to reset audio as it is reset when media changes\n }\n /**\n * Begin playback.\n */\n\n play() {\n if (this.setupFirstPlay()) {\n return;\n }\n if (this.tech_.ended()) {\n this.tech_.setCurrentTime(0);\n }\n if (this.hasPlayed_) {\n this.load();\n }\n const seekable = this.tech_.seekable(); // if the viewer has paused and we fell out of the live window,\n // seek forward to the live point\n\n if (this.tech_.duration() === Infinity) {\n if (this.tech_.currentTime() < seekable.start(0)) {\n return this.tech_.setCurrentTime(seekable.end(seekable.length - 1));\n }\n }\n }\n /**\n * Seek to the latest media position if this is a live video and the\n * player and video are loaded and initialized.\n */\n\n setupFirstPlay() {\n const media = this.mainPlaylistLoader_.media(); // Check that everything is ready to begin buffering for the first call to play\n // If 1) there is no active media\n // 2) the player is paused\n // 3) the first play has already been setup\n // then exit early\n\n if (!media || this.tech_.paused() || this.hasPlayed_) {\n return false;\n } // when the video is a live stream and/or has a start time\n\n if (!media.endList || media.start) {\n const seekable = this.seekable();\n if (!seekable.length) {\n // without a seekable range, the player cannot seek to begin buffering at the\n // live or start point\n return false;\n }\n const seekableEnd = seekable.end(0);\n let startPoint = seekableEnd;\n if (media.start) {\n const offset = media.start.timeOffset;\n if (offset < 0) {\n startPoint = Math.max(seekableEnd + offset, seekable.start(0));\n } else {\n startPoint = Math.min(seekableEnd, offset);\n }\n } // trigger firstplay to inform the source handler to ignore the next seek event\n\n this.trigger('firstplay'); // seek to the live point\n\n this.tech_.setCurrentTime(startPoint);\n }\n this.hasPlayed_ = true; // we can begin loading now that everything is ready\n\n this.load();\n return true;\n }\n /**\n * handle the sourceopen event on the MediaSource\n *\n * @private\n */\n\n handleSourceOpen_() {\n // Only attempt to create the source buffer if none already exist.\n // handleSourceOpen is also called when we are \"re-opening\" a source buffer\n // after `endOfStream` has been called (in response to a seek for instance)\n this.tryToCreateSourceBuffers_(); // if autoplay is enabled, begin playback. This is duplicative of\n // code in video.js but is required because play() must be invoked\n // *after* the media source has opened.\n\n if (this.tech_.autoplay()) {\n const playPromise = this.tech_.play(); // Catch/silence error when a pause interrupts a play request\n // on browsers which return a promise\n\n if (typeof playPromise !== 'undefined' && typeof playPromise.then === 'function') {\n playPromise.then(null, e => {});\n }\n }\n this.trigger('sourceopen');\n }\n /**\n * handle the sourceended event on the MediaSource\n *\n * @private\n */\n\n handleSourceEnded_() {\n if (!this.inbandTextTracks_.metadataTrack_) {\n return;\n }\n const cues = this.inbandTextTracks_.metadataTrack_.cues;\n if (!cues || !cues.length) {\n return;\n }\n const duration = this.duration();\n cues[cues.length - 1].endTime = isNaN(duration) || Math.abs(duration) === Infinity ? Number.MAX_VALUE : duration;\n }\n /**\n * handle the durationchange event on the MediaSource\n *\n * @private\n */\n\n handleDurationChange_() {\n this.tech_.trigger('durationchange');\n }\n /**\n * Calls endOfStream on the media source when all active stream types have called\n * endOfStream\n *\n * @param {string} streamType\n * Stream type of the segment loader that called endOfStream\n * @private\n */\n\n onEndOfStream() {\n let isEndOfStream = this.mainSegmentLoader_.ended_;\n if (this.mediaTypes_.AUDIO.activePlaylistLoader) {\n const mainMediaInfo = this.mainSegmentLoader_.getCurrentMediaInfo_(); // if the audio playlist loader exists, then alternate audio is active\n\n if (!mainMediaInfo || mainMediaInfo.hasVideo) {\n // if we do not know if the main segment loader contains video yet or if we\n // definitively know the main segment loader contains video, then we need to wait\n // for both main and audio segment loaders to call endOfStream\n isEndOfStream = isEndOfStream && this.audioSegmentLoader_.ended_;\n } else {\n // otherwise just rely on the audio loader\n isEndOfStream = this.audioSegmentLoader_.ended_;\n }\n }\n if (!isEndOfStream) {\n return;\n }\n this.stopABRTimer_();\n this.sourceUpdater_.endOfStream();\n }\n /**\n * Check if a playlist has stopped being updated\n *\n * @param {Object} playlist the media playlist object\n * @return {boolean} whether the playlist has stopped being updated or not\n */\n\n stuckAtPlaylistEnd_(playlist) {\n const seekable = this.seekable();\n if (!seekable.length) {\n // playlist doesn't have enough information to determine whether we are stuck\n return false;\n }\n const expired = this.syncController_.getExpiredTime(playlist, this.duration());\n if (expired === null) {\n return false;\n } // does not use the safe live end to calculate playlist end, since we\n // don't want to say we are stuck while there is still content\n\n const absolutePlaylistEnd = Vhs$1.Playlist.playlistEnd(playlist, expired);\n const currentTime = this.tech_.currentTime();\n const buffered = this.tech_.buffered();\n if (!buffered.length) {\n // return true if the playhead reached the absolute end of the playlist\n return absolutePlaylistEnd - currentTime <= SAFE_TIME_DELTA;\n }\n const bufferedEnd = buffered.end(buffered.length - 1); // return true if there is too little buffer left and buffer has reached absolute\n // end of playlist\n\n return bufferedEnd - currentTime <= SAFE_TIME_DELTA && absolutePlaylistEnd - bufferedEnd <= SAFE_TIME_DELTA;\n }\n /**\n * Exclude a playlist for a set amount of time, making it unavailable for selection by\n * the rendition selection algorithm, then force a new playlist (rendition) selection.\n *\n * @param {Object=} playlistToExclude\n * the playlist to exclude, defaults to the currently selected playlist\n * @param {Object=} error\n * an optional error\n * @param {number=} playlistExclusionDuration\n * an optional number of seconds to exclude the playlist\n */\n\n excludePlaylist({\n playlistToExclude = this.mainPlaylistLoader_.media(),\n error = {},\n playlistExclusionDuration\n }) {\n // If the `error` was generated by the playlist loader, it will contain\n // the playlist we were trying to load (but failed) and that should be\n // excluded instead of the currently selected playlist which is likely\n // out-of-date in this scenario\n playlistToExclude = playlistToExclude || this.mainPlaylistLoader_.media();\n playlistExclusionDuration = playlistExclusionDuration || error.playlistExclusionDuration || this.playlistExclusionDuration; // If there is no current playlist, then an error occurred while we were\n // trying to load the main OR while we were disposing of the tech\n\n if (!playlistToExclude) {\n this.error = error;\n if (this.mediaSource.readyState !== 'open') {\n this.trigger('error');\n } else {\n this.sourceUpdater_.endOfStream('network');\n }\n return;\n }\n playlistToExclude.playlistErrors_++;\n const playlists = this.mainPlaylistLoader_.main.playlists;\n const enabledPlaylists = playlists.filter(isEnabled);\n const isFinalRendition = enabledPlaylists.length === 1 && enabledPlaylists[0] === playlistToExclude; // Don't exclude the only playlist unless it was excluded\n // forever\n\n if (playlists.length === 1 && playlistExclusionDuration !== Infinity) {\n videojs.log.warn(`Problem encountered with playlist ${playlistToExclude.id}. ` + 'Trying again since it is the only playlist.');\n this.tech_.trigger('retryplaylist'); // if this is a final rendition, we should delay\n\n return this.mainPlaylistLoader_.load(isFinalRendition);\n }\n if (isFinalRendition) {\n // If we're content steering, try other pathways.\n if (this.main().contentSteering) {\n const pathway = this.pathwayAttribute_(playlistToExclude); // Ignore at least 1 steering manifest refresh.\n\n const reIncludeDelay = this.contentSteeringController_.steeringManifest.ttl * 1000;\n this.contentSteeringController_.excludePathway(pathway);\n this.excludeThenChangePathway_();\n setTimeout(() => {\n this.contentSteeringController_.addAvailablePathway(pathway);\n }, reIncludeDelay);\n return;\n } // Since we're on the final non-excluded playlist, and we're about to exclude\n // it, instead of erring the player or retrying this playlist, clear out the current\n // exclusion list. This allows other playlists to be attempted in case any have been\n // fixed.\n\n let reincluded = false;\n playlists.forEach(playlist => {\n // skip current playlist which is about to be excluded\n if (playlist === playlistToExclude) {\n return;\n }\n const excludeUntil = playlist.excludeUntil; // a playlist cannot be reincluded if it wasn't excluded to begin with.\n\n if (typeof excludeUntil !== 'undefined' && excludeUntil !== Infinity) {\n reincluded = true;\n delete playlist.excludeUntil;\n }\n });\n if (reincluded) {\n videojs.log.warn('Removing other playlists from the exclusion list because the last ' + 'rendition is about to be excluded.'); // Technically we are retrying a playlist, in that we are simply retrying a previous\n // playlist. This is needed for users relying on the retryplaylist event to catch a\n // case where the player might be stuck and looping through \"dead\" playlists.\n\n this.tech_.trigger('retryplaylist');\n }\n } // Exclude this playlist\n\n let excludeUntil;\n if (playlistToExclude.playlistErrors_ > this.maxPlaylistRetries) {\n excludeUntil = Infinity;\n } else {\n excludeUntil = Date.now() + playlistExclusionDuration * 1000;\n }\n playlistToExclude.excludeUntil = excludeUntil;\n if (error.reason) {\n playlistToExclude.lastExcludeReason_ = error.reason;\n }\n this.tech_.trigger('excludeplaylist');\n this.tech_.trigger({\n type: 'usage',\n name: 'vhs-rendition-excluded'\n }); // TODO: only load a new playlist if we're excluding the current playlist\n // If this function was called with a playlist that's not the current active playlist\n // (e.g., media().id !== playlistToExclude.id),\n // then a new playlist should not be selected and loaded, as there's nothing wrong with the current playlist.\n\n const nextPlaylist = this.selectPlaylist();\n if (!nextPlaylist) {\n this.error = 'Playback cannot continue. No available working or supported playlists.';\n this.trigger('error');\n return;\n }\n const logFn = error.internal ? this.logger_ : videojs.log.warn;\n const errorMessage = error.message ? ' ' + error.message : '';\n logFn(`${error.internal ? 'Internal problem' : 'Problem'} encountered with playlist ${playlistToExclude.id}.` + `${errorMessage} Switching to playlist ${nextPlaylist.id}.`); // if audio group changed reset audio loaders\n\n if (nextPlaylist.attributes.AUDIO !== playlistToExclude.attributes.AUDIO) {\n this.delegateLoaders_('audio', ['abort', 'pause']);\n } // if subtitle group changed reset subtitle loaders\n\n if (nextPlaylist.attributes.SUBTITLES !== playlistToExclude.attributes.SUBTITLES) {\n this.delegateLoaders_('subtitle', ['abort', 'pause']);\n }\n this.delegateLoaders_('main', ['abort', 'pause']);\n const delayDuration = nextPlaylist.targetDuration / 2 * 1000 || 5 * 1000;\n const shouldDelay = typeof nextPlaylist.lastRequest === 'number' && Date.now() - nextPlaylist.lastRequest <= delayDuration; // delay if it's a final rendition or if the last refresh is sooner than half targetDuration\n\n return this.switchMedia_(nextPlaylist, 'exclude', isFinalRendition || shouldDelay);\n }\n /**\n * Pause all segment/playlist loaders\n */\n\n pauseLoading() {\n this.delegateLoaders_('all', ['abort', 'pause']);\n this.stopABRTimer_();\n }\n /**\n * Call a set of functions in order on playlist loaders, segment loaders,\n * or both types of loaders.\n *\n * @param {string} filter\n * Filter loaders that should call fnNames using a string. Can be:\n * * all - run on all loaders\n * * audio - run on all audio loaders\n * * subtitle - run on all subtitle loaders\n * * main - run on the main loaders\n *\n * @param {Array|string} fnNames\n * A string or array of function names to call.\n */\n\n delegateLoaders_(filter, fnNames) {\n const loaders = [];\n const dontFilterPlaylist = filter === 'all';\n if (dontFilterPlaylist || filter === 'main') {\n loaders.push(this.mainPlaylistLoader_);\n }\n const mediaTypes = [];\n if (dontFilterPlaylist || filter === 'audio') {\n mediaTypes.push('AUDIO');\n }\n if (dontFilterPlaylist || filter === 'subtitle') {\n mediaTypes.push('CLOSED-CAPTIONS');\n mediaTypes.push('SUBTITLES');\n }\n mediaTypes.forEach(mediaType => {\n const loader = this.mediaTypes_[mediaType] && this.mediaTypes_[mediaType].activePlaylistLoader;\n if (loader) {\n loaders.push(loader);\n }\n });\n ['main', 'audio', 'subtitle'].forEach(name => {\n const loader = this[`${name}SegmentLoader_`];\n if (loader && (filter === name || filter === 'all')) {\n loaders.push(loader);\n }\n });\n loaders.forEach(loader => fnNames.forEach(fnName => {\n if (typeof loader[fnName] === 'function') {\n loader[fnName]();\n }\n }));\n }\n /**\n * set the current time on all segment loaders\n *\n * @param {TimeRange} currentTime the current time to set\n * @return {TimeRange} the current time\n */\n\n setCurrentTime(currentTime) {\n const buffered = findRange(this.tech_.buffered(), currentTime);\n if (!(this.mainPlaylistLoader_ && this.mainPlaylistLoader_.media())) {\n // return immediately if the metadata is not ready yet\n return 0;\n } // it's clearly an edge-case but don't thrown an error if asked to\n // seek within an empty playlist\n\n if (!this.mainPlaylistLoader_.media().segments) {\n return 0;\n } // if the seek location is already buffered, continue buffering as usual\n\n if (buffered && buffered.length) {\n return currentTime;\n } // cancel outstanding requests so we begin buffering at the new\n // location\n\n this.mainSegmentLoader_.pause();\n this.mainSegmentLoader_.resetEverything();\n if (this.mediaTypes_.AUDIO.activePlaylistLoader) {\n this.audioSegmentLoader_.pause();\n this.audioSegmentLoader_.resetEverything();\n }\n if (this.mediaTypes_.SUBTITLES.activePlaylistLoader) {\n this.subtitleSegmentLoader_.pause();\n this.subtitleSegmentLoader_.resetEverything();\n } // start segment loader loading in case they are paused\n\n this.load();\n }\n /**\n * get the current duration\n *\n * @return {TimeRange} the duration\n */\n\n duration() {\n if (!this.mainPlaylistLoader_) {\n return 0;\n }\n const media = this.mainPlaylistLoader_.media();\n if (!media) {\n // no playlists loaded yet, so can't determine a duration\n return 0;\n } // Don't rely on the media source for duration in the case of a live playlist since\n // setting the native MediaSource's duration to infinity ends up with consequences to\n // seekable behavior. See https://github.com/w3c/media-source/issues/5 for details.\n //\n // This is resolved in the spec by https://github.com/w3c/media-source/pull/92,\n // however, few browsers have support for setLiveSeekableRange()\n // https://developer.mozilla.org/en-US/docs/Web/API/MediaSource/setLiveSeekableRange\n //\n // Until a time when the duration of the media source can be set to infinity, and a\n // seekable range specified across browsers, just return Infinity.\n\n if (!media.endList) {\n return Infinity;\n } // Since this is a VOD video, it is safe to rely on the media source's duration (if\n // available). If it's not available, fall back to a playlist-calculated estimate.\n\n if (this.mediaSource) {\n return this.mediaSource.duration;\n }\n return Vhs$1.Playlist.duration(media);\n }\n /**\n * check the seekable range\n *\n * @return {TimeRange} the seekable range\n */\n\n seekable() {\n return this.seekable_;\n }\n onSyncInfoUpdate_() {\n let audioSeekable; // TODO check for creation of both source buffers before updating seekable\n //\n // A fix was made to this function where a check for\n // this.sourceUpdater_.hasCreatedSourceBuffers\n // was added to ensure that both source buffers were created before seekable was\n // updated. However, it originally had a bug where it was checking for a true and\n // returning early instead of checking for false. Setting it to check for false to\n // return early though created other issues. A call to play() would check for seekable\n // end without verifying that a seekable range was present. In addition, even checking\n // for that didn't solve some issues, as handleFirstPlay is sometimes worked around\n // due to a media update calling load on the segment loaders, skipping a seek to live,\n // thereby starting live streams at the beginning of the stream rather than at the end.\n //\n // This conditional should be fixed to wait for the creation of two source buffers at\n // the same time as the other sections of code are fixed to properly seek to live and\n // not throw an error due to checking for a seekable end when no seekable range exists.\n //\n // For now, fall back to the older behavior, with the understanding that the seekable\n // range may not be completely correct, leading to a suboptimal initial live point.\n\n if (!this.mainPlaylistLoader_) {\n return;\n }\n let media = this.mainPlaylistLoader_.media();\n if (!media) {\n return;\n }\n let expired = this.syncController_.getExpiredTime(media, this.duration());\n if (expired === null) {\n // not enough information to update seekable\n return;\n }\n const main = this.mainPlaylistLoader_.main;\n const mainSeekable = Vhs$1.Playlist.seekable(media, expired, Vhs$1.Playlist.liveEdgeDelay(main, media));\n if (mainSeekable.length === 0) {\n return;\n }\n if (this.mediaTypes_.AUDIO.activePlaylistLoader) {\n media = this.mediaTypes_.AUDIO.activePlaylistLoader.media();\n expired = this.syncController_.getExpiredTime(media, this.duration());\n if (expired === null) {\n return;\n }\n audioSeekable = Vhs$1.Playlist.seekable(media, expired, Vhs$1.Playlist.liveEdgeDelay(main, media));\n if (audioSeekable.length === 0) {\n return;\n }\n }\n let oldEnd;\n let oldStart;\n if (this.seekable_ && this.seekable_.length) {\n oldEnd = this.seekable_.end(0);\n oldStart = this.seekable_.start(0);\n }\n if (!audioSeekable) {\n // seekable has been calculated based on buffering video data so it\n // can be returned directly\n this.seekable_ = mainSeekable;\n } else if (audioSeekable.start(0) > mainSeekable.end(0) || mainSeekable.start(0) > audioSeekable.end(0)) {\n // seekables are pretty far off, rely on main\n this.seekable_ = mainSeekable;\n } else {\n this.seekable_ = createTimeRanges([[audioSeekable.start(0) > mainSeekable.start(0) ? audioSeekable.start(0) : mainSeekable.start(0), audioSeekable.end(0) < mainSeekable.end(0) ? audioSeekable.end(0) : mainSeekable.end(0)]]);\n } // seekable is the same as last time\n\n if (this.seekable_ && this.seekable_.length) {\n if (this.seekable_.end(0) === oldEnd && this.seekable_.start(0) === oldStart) {\n return;\n }\n }\n this.logger_(`seekable updated [${printableRange(this.seekable_)}]`);\n const metadata = {\n seekableRanges: this.seekable_\n };\n this.trigger({\n type: 'seekablerangeschanged',\n metadata\n });\n this.tech_.trigger('seekablechanged');\n }\n /**\n * Update the player duration\n */\n\n updateDuration(isLive) {\n if (this.updateDuration_) {\n this.mediaSource.removeEventListener('sourceopen', this.updateDuration_);\n this.updateDuration_ = null;\n }\n if (this.mediaSource.readyState !== 'open') {\n this.updateDuration_ = this.updateDuration.bind(this, isLive);\n this.mediaSource.addEventListener('sourceopen', this.updateDuration_);\n return;\n }\n if (isLive) {\n const seekable = this.seekable();\n if (!seekable.length) {\n return;\n } // Even in the case of a live playlist, the native MediaSource's duration should not\n // be set to Infinity (even though this would be expected for a live playlist), since\n // setting the native MediaSource's duration to infinity ends up with consequences to\n // seekable behavior. See https://github.com/w3c/media-source/issues/5 for details.\n //\n // This is resolved in the spec by https://github.com/w3c/media-source/pull/92,\n // however, few browsers have support for setLiveSeekableRange()\n // https://developer.mozilla.org/en-US/docs/Web/API/MediaSource/setLiveSeekableRange\n //\n // Until a time when the duration of the media source can be set to infinity, and a\n // seekable range specified across browsers, the duration should be greater than or\n // equal to the last possible seekable value.\n // MediaSource duration starts as NaN\n // It is possible (and probable) that this case will never be reached for many\n // sources, since the MediaSource reports duration as the highest value without\n // accounting for timestamp offset. For example, if the timestamp offset is -100 and\n // we buffered times 0 to 100 with real times of 100 to 200, even though current\n // time will be between 0 and 100, the native media source may report the duration\n // as 200. However, since we report duration separate from the media source (as\n // Infinity), and as long as the native media source duration value is greater than\n // our reported seekable range, seeks will work as expected. The large number as\n // duration for live is actually a strategy used by some players to work around the\n // issue of live seekable ranges cited above.\n\n if (isNaN(this.mediaSource.duration) || this.mediaSource.duration < seekable.end(seekable.length - 1)) {\n this.sourceUpdater_.setDuration(seekable.end(seekable.length - 1));\n }\n return;\n }\n const buffered = this.tech_.buffered();\n let duration = Vhs$1.Playlist.duration(this.mainPlaylistLoader_.media());\n if (buffered.length > 0) {\n duration = Math.max(duration, buffered.end(buffered.length - 1));\n }\n if (this.mediaSource.duration !== duration) {\n this.sourceUpdater_.setDuration(duration);\n }\n }\n /**\n * dispose of the PlaylistController and everything\n * that it controls\n */\n\n dispose() {\n this.trigger('dispose');\n this.decrypter_.terminate();\n this.mainPlaylistLoader_.dispose();\n this.mainSegmentLoader_.dispose();\n this.contentSteeringController_.dispose();\n this.keyStatusMap_.clear();\n if (this.loadOnPlay_) {\n this.tech_.off('play', this.loadOnPlay_);\n }\n ['AUDIO', 'SUBTITLES'].forEach(type => {\n const groups = this.mediaTypes_[type].groups;\n for (const id in groups) {\n groups[id].forEach(group => {\n if (group.playlistLoader) {\n group.playlistLoader.dispose();\n }\n });\n }\n });\n this.audioSegmentLoader_.dispose();\n this.subtitleSegmentLoader_.dispose();\n this.sourceUpdater_.dispose();\n this.timelineChangeController_.dispose();\n this.stopABRTimer_();\n if (this.updateDuration_) {\n this.mediaSource.removeEventListener('sourceopen', this.updateDuration_);\n }\n this.mediaSource.removeEventListener('durationchange', this.handleDurationChange_); // load the media source into the player\n\n this.mediaSource.removeEventListener('sourceopen', this.handleSourceOpen_);\n this.mediaSource.removeEventListener('sourceended', this.handleSourceEnded_);\n this.off();\n }\n /**\n * return the main playlist object if we have one\n *\n * @return {Object} the main playlist object that we parsed\n */\n\n main() {\n return this.mainPlaylistLoader_.main;\n }\n /**\n * return the currently selected playlist\n *\n * @return {Object} the currently selected playlist object that we parsed\n */\n\n media() {\n // playlist loader will not return media if it has not been fully loaded\n return this.mainPlaylistLoader_.media() || this.initialMedia_;\n }\n areMediaTypesKnown_() {\n const usingAudioLoader = !!this.mediaTypes_.AUDIO.activePlaylistLoader;\n const hasMainMediaInfo = !!this.mainSegmentLoader_.getCurrentMediaInfo_(); // if we are not using an audio loader, then we have audio media info\n // otherwise check on the segment loader.\n\n const hasAudioMediaInfo = !usingAudioLoader ? true : !!this.audioSegmentLoader_.getCurrentMediaInfo_(); // one or both loaders has not loaded sufficently to get codecs\n\n if (!hasMainMediaInfo || !hasAudioMediaInfo) {\n return false;\n }\n return true;\n } // find from and to for codec switch event\n\n getCodecsOrExclude_() {\n const media = {\n main: this.mainSegmentLoader_.getCurrentMediaInfo_() || {},\n audio: this.audioSegmentLoader_.getCurrentMediaInfo_() || {}\n };\n const playlist = this.mainSegmentLoader_.getPendingSegmentPlaylist() || this.media(); // set \"main\" media equal to video\n\n media.video = media.main;\n const playlistCodecs = codecsForPlaylist(this.main(), playlist);\n const codecs = {};\n const usingAudioLoader = !!this.mediaTypes_.AUDIO.activePlaylistLoader;\n if (media.main.hasVideo) {\n codecs.video = playlistCodecs.video || media.main.videoCodec || DEFAULT_VIDEO_CODEC;\n }\n if (media.main.isMuxed) {\n codecs.video += `,${playlistCodecs.audio || media.main.audioCodec || DEFAULT_AUDIO_CODEC}`;\n }\n if (media.main.hasAudio && !media.main.isMuxed || media.audio.hasAudio || usingAudioLoader) {\n codecs.audio = playlistCodecs.audio || media.main.audioCodec || media.audio.audioCodec || DEFAULT_AUDIO_CODEC; // set audio isFmp4 so we use the correct \"supports\" function below\n\n media.audio.isFmp4 = media.main.hasAudio && !media.main.isMuxed ? media.main.isFmp4 : media.audio.isFmp4;\n } // no codecs, no playback.\n\n if (!codecs.audio && !codecs.video) {\n this.excludePlaylist({\n playlistToExclude: playlist,\n error: {\n message: 'Could not determine codecs for playlist.'\n },\n playlistExclusionDuration: Infinity\n });\n return;\n } // fmp4 relies on browser support, while ts relies on muxer support\n\n const supportFunction = (isFmp4, codec) => isFmp4 ? browserSupportsCodec(codec) : muxerSupportsCodec(codec);\n const unsupportedCodecs = {};\n let unsupportedAudio;\n ['video', 'audio'].forEach(function (type) {\n if (codecs.hasOwnProperty(type) && !supportFunction(media[type].isFmp4, codecs[type])) {\n const supporter = media[type].isFmp4 ? 'browser' : 'muxer';\n unsupportedCodecs[supporter] = unsupportedCodecs[supporter] || [];\n unsupportedCodecs[supporter].push(codecs[type]);\n if (type === 'audio') {\n unsupportedAudio = supporter;\n }\n }\n });\n if (usingAudioLoader && unsupportedAudio && playlist.attributes.AUDIO) {\n const audioGroup = playlist.attributes.AUDIO;\n this.main().playlists.forEach(variant => {\n const variantAudioGroup = variant.attributes && variant.attributes.AUDIO;\n if (variantAudioGroup === audioGroup && variant !== playlist) {\n variant.excludeUntil = Infinity;\n }\n });\n this.logger_(`excluding audio group ${audioGroup} as ${unsupportedAudio} does not support codec(s): \"${codecs.audio}\"`);\n } // if we have any unsupported codecs exclude this playlist.\n\n if (Object.keys(unsupportedCodecs).length) {\n const message = Object.keys(unsupportedCodecs).reduce((acc, supporter) => {\n if (acc) {\n acc += ', ';\n }\n acc += `${supporter} does not support codec(s): \"${unsupportedCodecs[supporter].join(',')}\"`;\n return acc;\n }, '') + '.';\n this.excludePlaylist({\n playlistToExclude: playlist,\n error: {\n internal: true,\n message\n },\n playlistExclusionDuration: Infinity\n });\n return;\n } // check if codec switching is happening\n\n if (this.sourceUpdater_.hasCreatedSourceBuffers() && !this.sourceUpdater_.canChangeType()) {\n const switchMessages = [];\n ['video', 'audio'].forEach(type => {\n const newCodec = (parseCodecs(this.sourceUpdater_.codecs[type] || '')[0] || {}).type;\n const oldCodec = (parseCodecs(codecs[type] || '')[0] || {}).type;\n if (newCodec && oldCodec && newCodec.toLowerCase() !== oldCodec.toLowerCase()) {\n switchMessages.push(`\"${this.sourceUpdater_.codecs[type]}\" -> \"${codecs[type]}\"`);\n }\n });\n if (switchMessages.length) {\n this.excludePlaylist({\n playlistToExclude: playlist,\n error: {\n message: `Codec switching not supported: ${switchMessages.join(', ')}.`,\n internal: true\n },\n playlistExclusionDuration: Infinity\n });\n return;\n }\n } // TODO: when using the muxer shouldn't we just return\n // the codecs that the muxer outputs?\n\n return codecs;\n }\n /**\n * Create source buffers and exlude any incompatible renditions.\n *\n * @private\n */\n\n tryToCreateSourceBuffers_() {\n // media source is not ready yet or sourceBuffers are already\n // created.\n if (this.mediaSource.readyState !== 'open' || this.sourceUpdater_.hasCreatedSourceBuffers()) {\n return;\n }\n if (!this.areMediaTypesKnown_()) {\n return;\n }\n const codecs = this.getCodecsOrExclude_(); // no codecs means that the playlist was excluded\n\n if (!codecs) {\n return;\n }\n this.sourceUpdater_.createSourceBuffers(codecs);\n const codecString = [codecs.video, codecs.audio].filter(Boolean).join(',');\n this.excludeIncompatibleVariants_(codecString);\n }\n /**\n * Excludes playlists with codecs that are unsupported by the muxer and browser.\n */\n\n excludeUnsupportedVariants_() {\n const playlists = this.main().playlists;\n const ids = []; // TODO: why don't we have a property to loop through all\n // playlist? Why did we ever mix indexes and keys?\n\n Object.keys(playlists).forEach(key => {\n const variant = playlists[key]; // check if we already processed this playlist.\n\n if (ids.indexOf(variant.id) !== -1) {\n return;\n }\n ids.push(variant.id);\n const codecs = codecsForPlaylist(this.main, variant);\n const unsupported = [];\n if (codecs.audio && !muxerSupportsCodec(codecs.audio) && !browserSupportsCodec(codecs.audio)) {\n unsupported.push(`audio codec ${codecs.audio}`);\n }\n if (codecs.video && !muxerSupportsCodec(codecs.video) && !browserSupportsCodec(codecs.video)) {\n unsupported.push(`video codec ${codecs.video}`);\n }\n if (codecs.text && codecs.text === 'stpp.ttml.im1t') {\n unsupported.push(`text codec ${codecs.text}`);\n }\n if (unsupported.length) {\n variant.excludeUntil = Infinity;\n this.logger_(`excluding ${variant.id} for unsupported: ${unsupported.join(', ')}`);\n }\n });\n }\n /**\n * Exclude playlists that are known to be codec or\n * stream-incompatible with the SourceBuffer configuration. For\n * instance, Media Source Extensions would cause the video element to\n * stall waiting for video data if you switched from a variant with\n * video and audio to an audio-only one.\n *\n * @param {Object} media a media playlist compatible with the current\n * set of SourceBuffers. Variants in the current main playlist that\n * do not appear to have compatible codec or stream configurations\n * will be excluded from the default playlist selection algorithm\n * indefinitely.\n * @private\n */\n\n excludeIncompatibleVariants_(codecString) {\n const ids = [];\n const playlists = this.main().playlists;\n const codecs = unwrapCodecList(parseCodecs(codecString));\n const codecCount_ = codecCount(codecs);\n const videoDetails = codecs.video && parseCodecs(codecs.video)[0] || null;\n const audioDetails = codecs.audio && parseCodecs(codecs.audio)[0] || null;\n Object.keys(playlists).forEach(key => {\n const variant = playlists[key]; // check if we already processed this playlist.\n // or it if it is already excluded forever.\n\n if (ids.indexOf(variant.id) !== -1 || variant.excludeUntil === Infinity) {\n return;\n }\n ids.push(variant.id);\n const exclusionReasons = []; // get codecs from the playlist for this variant\n\n const variantCodecs = codecsForPlaylist(this.mainPlaylistLoader_.main, variant);\n const variantCodecCount = codecCount(variantCodecs); // if no codecs are listed, we cannot determine that this\n // variant is incompatible. Wait for mux.js to probe\n\n if (!variantCodecs.audio && !variantCodecs.video) {\n return;\n } // TODO: we can support this by removing the\n // old media source and creating a new one, but it will take some work.\n // The number of streams cannot change\n\n if (variantCodecCount !== codecCount_) {\n exclusionReasons.push(`codec count \"${variantCodecCount}\" !== \"${codecCount_}\"`);\n } // only exclude playlists by codec change, if codecs cannot switch\n // during playback.\n\n if (!this.sourceUpdater_.canChangeType()) {\n const variantVideoDetails = variantCodecs.video && parseCodecs(variantCodecs.video)[0] || null;\n const variantAudioDetails = variantCodecs.audio && parseCodecs(variantCodecs.audio)[0] || null; // the video codec cannot change\n\n if (variantVideoDetails && videoDetails && variantVideoDetails.type.toLowerCase() !== videoDetails.type.toLowerCase()) {\n exclusionReasons.push(`video codec \"${variantVideoDetails.type}\" !== \"${videoDetails.type}\"`);\n } // the audio codec cannot change\n\n if (variantAudioDetails && audioDetails && variantAudioDetails.type.toLowerCase() !== audioDetails.type.toLowerCase()) {\n exclusionReasons.push(`audio codec \"${variantAudioDetails.type}\" !== \"${audioDetails.type}\"`);\n }\n }\n if (exclusionReasons.length) {\n variant.excludeUntil = Infinity;\n this.logger_(`excluding ${variant.id}: ${exclusionReasons.join(' && ')}`);\n }\n });\n }\n updateAdCues_(media) {\n let offset = 0;\n const seekable = this.seekable();\n if (seekable.length) {\n offset = seekable.start(0);\n }\n updateAdCues(media, this.cueTagsTrack_, offset);\n }\n /**\n * Calculates the desired forward buffer length based on current time\n *\n * @return {number} Desired forward buffer length in seconds\n */\n\n goalBufferLength() {\n const currentTime = this.tech_.currentTime();\n const initial = Config.GOAL_BUFFER_LENGTH;\n const rate = Config.GOAL_BUFFER_LENGTH_RATE;\n const max = Math.max(initial, Config.MAX_GOAL_BUFFER_LENGTH);\n return Math.min(initial + currentTime * rate, max);\n }\n /**\n * Calculates the desired buffer low water line based on current time\n *\n * @return {number} Desired buffer low water line in seconds\n */\n\n bufferLowWaterLine() {\n const currentTime = this.tech_.currentTime();\n const initial = Config.BUFFER_LOW_WATER_LINE;\n const rate = Config.BUFFER_LOW_WATER_LINE_RATE;\n const max = Math.max(initial, Config.MAX_BUFFER_LOW_WATER_LINE);\n const newMax = Math.max(initial, Config.EXPERIMENTAL_MAX_BUFFER_LOW_WATER_LINE);\n return Math.min(initial + currentTime * rate, this.bufferBasedABR ? newMax : max);\n }\n bufferHighWaterLine() {\n return Config.BUFFER_HIGH_WATER_LINE;\n }\n addDateRangesToTextTrack_(dateRanges) {\n createMetadataTrackIfNotExists(this.inbandTextTracks_, 'com.apple.streaming', this.tech_);\n addDateRangeMetadata({\n inbandTextTracks: this.inbandTextTracks_,\n dateRanges\n });\n }\n addMetadataToTextTrack(dispatchType, metadataArray, videoDuration) {\n const timestampOffset = this.sourceUpdater_.videoBuffer ? this.sourceUpdater_.videoTimestampOffset() : this.sourceUpdater_.audioTimestampOffset(); // There's potentially an issue where we could double add metadata if there's a muxed\n // audio/video source with a metadata track, and an alt audio with a metadata track.\n // However, this probably won't happen, and if it does it can be handled then.\n\n createMetadataTrackIfNotExists(this.inbandTextTracks_, dispatchType, this.tech_);\n addMetadata({\n inbandTextTracks: this.inbandTextTracks_,\n metadataArray,\n timestampOffset,\n videoDuration\n });\n }\n /**\n * Utility for getting the pathway or service location from an HLS or DASH playlist.\n *\n * @param {Object} playlist for getting pathway from.\n * @return the pathway attribute of a playlist\n */\n\n pathwayAttribute_(playlist) {\n return playlist.attributes['PATHWAY-ID'] || playlist.attributes.serviceLocation;\n }\n /**\n * Initialize available pathways and apply the tag properties.\n */\n\n initContentSteeringController_() {\n const main = this.main();\n if (!main.contentSteering) {\n return;\n }\n for (const playlist of main.playlists) {\n this.contentSteeringController_.addAvailablePathway(this.pathwayAttribute_(playlist));\n }\n this.contentSteeringController_.assignTagProperties(main.uri, main.contentSteering); // request the steering manifest immediately if queryBeforeStart is set.\n\n if (this.contentSteeringController_.queryBeforeStart) {\n // When queryBeforeStart is true, initial request should omit steering parameters.\n this.contentSteeringController_.requestSteeringManifest(true);\n return;\n } // otherwise start content steering after playback starts\n\n this.tech_.one('canplay', () => {\n this.contentSteeringController_.requestSteeringManifest();\n });\n }\n /**\n * Reset the content steering controller and re-init.\n */\n\n resetContentSteeringController_() {\n this.contentSteeringController_.clearAvailablePathways();\n this.contentSteeringController_.dispose();\n this.initContentSteeringController_();\n }\n /**\n * Attaches the listeners for content steering.\n */\n\n attachContentSteeringListeners_() {\n this.contentSteeringController_.on('content-steering', this.excludeThenChangePathway_.bind(this));\n const contentSteeringEvents = ['contentsteeringloadstart', 'contentsteeringloadcomplete', 'contentsteeringparsed'];\n contentSteeringEvents.forEach(eventName => {\n this.contentSteeringController_.on(eventName, metadata => {\n this.trigger(_extends({}, metadata));\n });\n });\n if (this.sourceType_ === 'dash') {\n this.mainPlaylistLoader_.on('loadedplaylist', () => {\n const main = this.main(); // check if steering tag or pathways changed.\n\n const didDashTagChange = this.contentSteeringController_.didDASHTagChange(main.uri, main.contentSteering);\n const didPathwaysChange = () => {\n const availablePathways = this.contentSteeringController_.getAvailablePathways();\n const newPathways = [];\n for (const playlist of main.playlists) {\n const serviceLocation = playlist.attributes.serviceLocation;\n if (serviceLocation) {\n newPathways.push(serviceLocation);\n if (!availablePathways.has(serviceLocation)) {\n return true;\n }\n }\n } // If we have no new serviceLocations and previously had availablePathways\n\n if (!newPathways.length && availablePathways.size) {\n return true;\n }\n return false;\n };\n if (didDashTagChange || didPathwaysChange()) {\n this.resetContentSteeringController_();\n }\n });\n }\n }\n /**\n * Simple exclude and change playlist logic for content steering.\n */\n\n excludeThenChangePathway_() {\n const currentPathway = this.contentSteeringController_.getPathway();\n if (!currentPathway) {\n return;\n }\n this.handlePathwayClones_();\n const main = this.main();\n const playlists = main.playlists;\n const ids = new Set();\n let didEnablePlaylists = false;\n Object.keys(playlists).forEach(key => {\n const variant = playlists[key];\n const pathwayId = this.pathwayAttribute_(variant);\n const differentPathwayId = pathwayId && currentPathway !== pathwayId;\n const steeringExclusion = variant.excludeUntil === Infinity && variant.lastExcludeReason_ === 'content-steering';\n if (steeringExclusion && !differentPathwayId) {\n delete variant.excludeUntil;\n delete variant.lastExcludeReason_;\n didEnablePlaylists = true;\n }\n const noExcludeUntil = !variant.excludeUntil && variant.excludeUntil !== Infinity;\n const shouldExclude = !ids.has(variant.id) && differentPathwayId && noExcludeUntil;\n if (!shouldExclude) {\n return;\n }\n ids.add(variant.id);\n variant.excludeUntil = Infinity;\n variant.lastExcludeReason_ = 'content-steering'; // TODO: kind of spammy, maybe move this.\n\n this.logger_(`excluding ${variant.id} for ${variant.lastExcludeReason_}`);\n });\n if (this.contentSteeringController_.manifestType_ === 'DASH') {\n Object.keys(this.mediaTypes_).forEach(key => {\n const type = this.mediaTypes_[key];\n if (type.activePlaylistLoader) {\n const currentPlaylist = type.activePlaylistLoader.media_; // Check if the current media playlist matches the current CDN\n\n if (currentPlaylist && currentPlaylist.attributes.serviceLocation !== currentPathway) {\n didEnablePlaylists = true;\n }\n }\n });\n }\n if (didEnablePlaylists) {\n this.changeSegmentPathway_();\n }\n }\n /**\n * Add, update, or delete playlists and media groups for\n * the pathway clones for HLS Content Steering.\n *\n * See https://datatracker.ietf.org/doc/draft-pantos-hls-rfc8216bis/\n *\n * NOTE: Pathway cloning does not currently support the `PER_VARIANT_URIS` and\n * `PER_RENDITION_URIS` as we do not handle `STABLE-VARIANT-ID` or\n * `STABLE-RENDITION-ID` values.\n */\n\n handlePathwayClones_() {\n const main = this.main();\n const playlists = main.playlists;\n const currentPathwayClones = this.contentSteeringController_.currentPathwayClones;\n const nextPathwayClones = this.contentSteeringController_.nextPathwayClones;\n const hasClones = currentPathwayClones && currentPathwayClones.size || nextPathwayClones && nextPathwayClones.size;\n if (!hasClones) {\n return;\n }\n for (const [id, clone] of currentPathwayClones.entries()) {\n const newClone = nextPathwayClones.get(id); // Delete the old pathway clone.\n\n if (!newClone) {\n this.mainPlaylistLoader_.updateOrDeleteClone(clone);\n this.contentSteeringController_.excludePathway(id);\n }\n }\n for (const [id, clone] of nextPathwayClones.entries()) {\n const oldClone = currentPathwayClones.get(id); // Create a new pathway if it is a new pathway clone object.\n\n if (!oldClone) {\n const playlistsToClone = playlists.filter(p => {\n return p.attributes['PATHWAY-ID'] === clone['BASE-ID'];\n });\n playlistsToClone.forEach(p => {\n this.mainPlaylistLoader_.addClonePathway(clone, p);\n });\n this.contentSteeringController_.addAvailablePathway(id);\n continue;\n } // There have not been changes to the pathway clone object, so skip.\n\n if (this.equalPathwayClones_(oldClone, clone)) {\n continue;\n } // Update a preexisting cloned pathway.\n // True is set for the update flag.\n\n this.mainPlaylistLoader_.updateOrDeleteClone(clone, true);\n this.contentSteeringController_.addAvailablePathway(id);\n } // Deep copy contents of next to current pathways.\n\n this.contentSteeringController_.currentPathwayClones = new Map(JSON.parse(JSON.stringify([...nextPathwayClones])));\n }\n /**\n * Determines whether two pathway clone objects are equivalent.\n *\n * @param {Object} a The first pathway clone object.\n * @param {Object} b The second pathway clone object.\n * @return {boolean} True if the pathway clone objects are equal, false otherwise.\n */\n\n equalPathwayClones_(a, b) {\n if (a['BASE-ID'] !== b['BASE-ID'] || a.ID !== b.ID || a['URI-REPLACEMENT'].HOST !== b['URI-REPLACEMENT'].HOST) {\n return false;\n }\n const aParams = a['URI-REPLACEMENT'].PARAMS;\n const bParams = b['URI-REPLACEMENT'].PARAMS; // We need to iterate through both lists of params because one could be\n // missing a parameter that the other has.\n\n for (const p in aParams) {\n if (aParams[p] !== bParams[p]) {\n return false;\n }\n }\n for (const p in bParams) {\n if (aParams[p] !== bParams[p]) {\n return false;\n }\n }\n return true;\n }\n /**\n * Changes the current playlists for audio, video and subtitles after a new pathway\n * is chosen from content steering.\n */\n\n changeSegmentPathway_() {\n const nextPlaylist = this.selectPlaylist();\n this.pauseLoading(); // Switch audio and text track playlists if necessary in DASH\n\n if (this.contentSteeringController_.manifestType_ === 'DASH') {\n this.switchMediaForDASHContentSteering_();\n }\n this.switchMedia_(nextPlaylist, 'content-steering');\n }\n /**\n * Iterates through playlists and check their keyId set and compare with the\n * keyStatusMap, only enable playlists that have a usable key. If the playlist\n * has no keyId leave it enabled by default.\n */\n\n excludeNonUsablePlaylistsByKeyId_() {\n if (!this.mainPlaylistLoader_ || !this.mainPlaylistLoader_.main) {\n return;\n }\n let nonUsableKeyStatusCount = 0;\n const NON_USABLE = 'non-usable';\n this.mainPlaylistLoader_.main.playlists.forEach(playlist => {\n const keyIdSet = this.mainPlaylistLoader_.getKeyIdSet(playlist); // If the playlist doesn't have keyIDs lets not exclude it.\n\n if (!keyIdSet || !keyIdSet.size) {\n return;\n }\n keyIdSet.forEach(key => {\n const USABLE = 'usable';\n const hasUsableKeyStatus = this.keyStatusMap_.has(key) && this.keyStatusMap_.get(key) === USABLE;\n const nonUsableExclusion = playlist.lastExcludeReason_ === NON_USABLE && playlist.excludeUntil === Infinity;\n if (!hasUsableKeyStatus) {\n // Only exclude playlists that haven't already been excluded as non-usable.\n if (playlist.excludeUntil !== Infinity && playlist.lastExcludeReason_ !== NON_USABLE) {\n playlist.excludeUntil = Infinity;\n playlist.lastExcludeReason_ = NON_USABLE;\n this.logger_(`excluding playlist ${playlist.id} because the key ID ${key} doesn't exist in the keyStatusMap or is not ${USABLE}`);\n } // count all nonUsableKeyStatus\n\n nonUsableKeyStatusCount++;\n } else if (hasUsableKeyStatus && nonUsableExclusion) {\n delete playlist.excludeUntil;\n delete playlist.lastExcludeReason_;\n this.logger_(`enabling playlist ${playlist.id} because key ID ${key} is ${USABLE}`);\n }\n });\n }); // If for whatever reason every playlist has a non usable key status. Lets try re-including the SD renditions as a failsafe.\n\n if (nonUsableKeyStatusCount >= this.mainPlaylistLoader_.main.playlists.length) {\n this.mainPlaylistLoader_.main.playlists.forEach(playlist => {\n const isNonHD = playlist && playlist.attributes && playlist.attributes.RESOLUTION && playlist.attributes.RESOLUTION.height < 720;\n const excludedForNonUsableKey = playlist.excludeUntil === Infinity && playlist.lastExcludeReason_ === NON_USABLE;\n if (isNonHD && excludedForNonUsableKey) {\n // Only delete the excludeUntil so we don't try and re-exclude these playlists.\n delete playlist.excludeUntil;\n videojs.log.warn(`enabling non-HD playlist ${playlist.id} because all playlists were excluded due to ${NON_USABLE} key IDs`);\n }\n });\n }\n }\n /**\n * Adds a keystatus to the keystatus map, tries to convert to string if necessary.\n *\n * @param {any} keyId the keyId to add a status for\n * @param {string} status the status of the keyId\n */\n\n addKeyStatus_(keyId, status) {\n const isString = typeof keyId === 'string';\n const keyIdHexString = isString ? keyId : bufferToHexString(keyId);\n const formattedKeyIdString = keyIdHexString.slice(0, 32).toLowerCase();\n this.logger_(`KeyStatus '${status}' with key ID ${formattedKeyIdString} added to the keyStatusMap`);\n this.keyStatusMap_.set(formattedKeyIdString, status);\n }\n /**\n * Utility function for adding key status to the keyStatusMap and filtering usable encrypted playlists.\n *\n * @param {any} keyId the keyId from the keystatuschange event\n * @param {string} status the key status string\n */\n\n updatePlaylistByKeyStatus(keyId, status) {\n this.addKeyStatus_(keyId, status);\n if (!this.waitingForFastQualityPlaylistReceived_) {\n this.excludeNonUsableThenChangePlaylist_();\n } // Listen to loadedplaylist with a single listener and check for new contentProtection elements when a playlist is updated.\n\n this.mainPlaylistLoader_.off('loadedplaylist', this.excludeNonUsableThenChangePlaylist_.bind(this));\n this.mainPlaylistLoader_.on('loadedplaylist', this.excludeNonUsableThenChangePlaylist_.bind(this));\n }\n excludeNonUsableThenChangePlaylist_() {\n this.excludeNonUsablePlaylistsByKeyId_();\n this.fastQualityChange_();\n }\n}\n\n/**\n * Returns a function that acts as the Enable/disable playlist function.\n *\n * @param {PlaylistLoader} loader - The main playlist loader\n * @param {string} playlistID - id of the playlist\n * @param {Function} changePlaylistFn - A function to be called after a\n * playlist's enabled-state has been changed. Will NOT be called if a\n * playlist's enabled-state is unchanged\n * @param {boolean=} enable - Value to set the playlist enabled-state to\n * or if undefined returns the current enabled-state for the playlist\n * @return {Function} Function for setting/getting enabled\n */\n\nconst enableFunction = (loader, playlistID, changePlaylistFn) => enable => {\n const playlist = loader.main.playlists[playlistID];\n const incompatible = isIncompatible(playlist);\n const currentlyEnabled = isEnabled(playlist);\n if (typeof enable === 'undefined') {\n return currentlyEnabled;\n }\n if (enable) {\n delete playlist.disabled;\n } else {\n playlist.disabled = true;\n }\n const metadata = {\n renditionInfo: {\n id: playlistID,\n bandwidth: playlist.attributes.BANDWIDTH,\n resolution: playlist.attributes.RESOLUTION,\n codecs: playlist.attributes.CODECS\n },\n cause: 'fast-quality'\n };\n if (enable !== currentlyEnabled && !incompatible) {\n // Ensure the outside world knows about our changes\n changePlaylistFn(playlist);\n if (enable) {\n loader.trigger({\n type: 'renditionenabled',\n metadata\n });\n } else {\n loader.trigger({\n type: 'renditiondisabled',\n metadata\n });\n }\n }\n return enable;\n};\n/**\n * The representation object encapsulates the publicly visible information\n * in a media playlist along with a setter/getter-type function (enabled)\n * for changing the enabled-state of a particular playlist entry\n *\n * @class Representation\n */\n\nclass Representation {\n constructor(vhsHandler, playlist, id) {\n const {\n playlistController_: pc\n } = vhsHandler;\n const qualityChangeFunction = pc.fastQualityChange_.bind(pc); // some playlist attributes are optional\n\n if (playlist.attributes) {\n const resolution = playlist.attributes.RESOLUTION;\n this.width = resolution && resolution.width;\n this.height = resolution && resolution.height;\n this.bandwidth = playlist.attributes.BANDWIDTH;\n this.frameRate = playlist.attributes['FRAME-RATE'];\n }\n this.codecs = codecsForPlaylist(pc.main(), playlist);\n this.playlist = playlist; // The id is simply the ordinality of the media playlist\n // within the main playlist\n\n this.id = id; // Partially-apply the enableFunction to create a playlist-\n // specific variant\n\n this.enabled = enableFunction(vhsHandler.playlists, playlist.id, qualityChangeFunction);\n }\n}\n/**\n * A mixin function that adds the `representations` api to an instance\n * of the VhsHandler class\n *\n * @param {VhsHandler} vhsHandler - An instance of VhsHandler to add the\n * representation API into\n */\n\nconst renditionSelectionMixin = function (vhsHandler) {\n // Add a single API-specific function to the VhsHandler instance\n vhsHandler.representations = () => {\n const main = vhsHandler.playlistController_.main();\n const playlists = isAudioOnly(main) ? vhsHandler.playlistController_.getAudioTrackPlaylists_() : main.playlists;\n if (!playlists) {\n return [];\n }\n return playlists.filter(media => !isIncompatible(media)).map((e, i) => new Representation(vhsHandler, e, e.id));\n };\n};\n\n/**\n * @file playback-watcher.js\n *\n * Playback starts, and now my watch begins. It shall not end until my death. I shall\n * take no wait, hold no uncleared timeouts, father no bad seeks. I shall wear no crowns\n * and win no glory. I shall live and die at my post. I am the corrector of the underflow.\n * I am the watcher of gaps. I am the shield that guards the realms of seekable. I pledge\n * my life and honor to the Playback Watch, for this Player and all the Players to come.\n */\n\nconst timerCancelEvents = ['seeking', 'seeked', 'pause', 'playing', 'error'];\n/**\n * @class PlaybackWatcher\n */\n\nclass PlaybackWatcher extends videojs.EventTarget {\n /**\n * Represents an PlaybackWatcher object.\n *\n * @class\n * @param {Object} options an object that includes the tech and settings\n */\n constructor(options) {\n super();\n this.playlistController_ = options.playlistController;\n this.tech_ = options.tech;\n this.seekable = options.seekable;\n this.allowSeeksWithinUnsafeLiveWindow = options.allowSeeksWithinUnsafeLiveWindow;\n this.liveRangeSafeTimeDelta = options.liveRangeSafeTimeDelta;\n this.media = options.media;\n this.playedRanges_ = [];\n this.consecutiveUpdates = 0;\n this.lastRecordedTime = null;\n this.checkCurrentTimeTimeout_ = null;\n this.logger_ = logger('PlaybackWatcher');\n this.logger_('initialize');\n const playHandler = () => this.monitorCurrentTime_();\n const canPlayHandler = () => this.monitorCurrentTime_();\n const waitingHandler = () => this.techWaiting_();\n const cancelTimerHandler = () => this.resetTimeUpdate_();\n const pc = this.playlistController_;\n const loaderTypes = ['main', 'subtitle', 'audio'];\n const loaderChecks = {};\n loaderTypes.forEach(type => {\n loaderChecks[type] = {\n reset: () => this.resetSegmentDownloads_(type),\n updateend: () => this.checkSegmentDownloads_(type)\n };\n pc[`${type}SegmentLoader_`].on('appendsdone', loaderChecks[type].updateend); // If a rendition switch happens during a playback stall where the buffer\n // isn't changing we want to reset. We cannot assume that the new rendition\n // will also be stalled, until after new appends.\n\n pc[`${type}SegmentLoader_`].on('playlistupdate', loaderChecks[type].reset); // Playback stalls should not be detected right after seeking.\n // This prevents one segment playlists (single vtt or single segment content)\n // from being detected as stalling. As the buffer will not change in those cases, since\n // the buffer is the entire video duration.\n\n this.tech_.on(['seeked', 'seeking'], loaderChecks[type].reset);\n });\n /**\n * We check if a seek was into a gap through the following steps:\n * 1. We get a seeking event and we do not get a seeked event. This means that\n * a seek was attempted but not completed.\n * 2. We run `fixesBadSeeks_` on segment loader appends. This means that we already\n * removed everything from our buffer and appended a segment, and should be ready\n * to check for gaps.\n */\n\n const setSeekingHandlers = fn => {\n ['main', 'audio'].forEach(type => {\n pc[`${type}SegmentLoader_`][fn]('appended', this.seekingAppendCheck_);\n });\n };\n this.seekingAppendCheck_ = () => {\n if (this.fixesBadSeeks_()) {\n this.consecutiveUpdates = 0;\n this.lastRecordedTime = this.tech_.currentTime();\n setSeekingHandlers('off');\n }\n };\n this.clearSeekingAppendCheck_ = () => setSeekingHandlers('off');\n this.watchForBadSeeking_ = () => {\n this.clearSeekingAppendCheck_();\n setSeekingHandlers('on');\n };\n this.tech_.on('seeked', this.clearSeekingAppendCheck_);\n this.tech_.on('seeking', this.watchForBadSeeking_);\n this.tech_.on('waiting', waitingHandler);\n this.tech_.on(timerCancelEvents, cancelTimerHandler);\n this.tech_.on('canplay', canPlayHandler);\n /*\n An edge case exists that results in gaps not being skipped when they exist at the beginning of a stream. This case\n is surfaced in one of two ways:\n 1) The `waiting` event is fired before the player has buffered content, making it impossible\n to find or skip the gap. The `waiting` event is followed by a `play` event. On first play\n we can check if playback is stalled due to a gap, and skip the gap if necessary.\n 2) A source with a gap at the beginning of the stream is loaded programatically while the player\n is in a playing state. To catch this case, it's important that our one-time play listener is setup\n even if the player is in a playing state\n */\n\n this.tech_.one('play', playHandler); // Define the dispose function to clean up our events\n\n this.dispose = () => {\n this.clearSeekingAppendCheck_();\n this.logger_('dispose');\n this.tech_.off('waiting', waitingHandler);\n this.tech_.off(timerCancelEvents, cancelTimerHandler);\n this.tech_.off('canplay', canPlayHandler);\n this.tech_.off('play', playHandler);\n this.tech_.off('seeking', this.watchForBadSeeking_);\n this.tech_.off('seeked', this.clearSeekingAppendCheck_);\n loaderTypes.forEach(type => {\n pc[`${type}SegmentLoader_`].off('appendsdone', loaderChecks[type].updateend);\n pc[`${type}SegmentLoader_`].off('playlistupdate', loaderChecks[type].reset);\n this.tech_.off(['seeked', 'seeking'], loaderChecks[type].reset);\n });\n if (this.checkCurrentTimeTimeout_) {\n window$1.clearTimeout(this.checkCurrentTimeTimeout_);\n }\n this.resetTimeUpdate_();\n };\n }\n /**\n * Periodically check current time to see if playback stopped\n *\n * @private\n */\n\n monitorCurrentTime_() {\n this.checkCurrentTime_();\n if (this.checkCurrentTimeTimeout_) {\n window$1.clearTimeout(this.checkCurrentTimeTimeout_);\n } // 42 = 24 fps // 250 is what Webkit uses // FF uses 15\n\n this.checkCurrentTimeTimeout_ = window$1.setTimeout(this.monitorCurrentTime_.bind(this), 250);\n }\n /**\n * Reset stalled download stats for a specific type of loader\n *\n * @param {string} type\n * The segment loader type to check.\n *\n * @listens SegmentLoader#playlistupdate\n * @listens Tech#seeking\n * @listens Tech#seeked\n */\n\n resetSegmentDownloads_(type) {\n const loader = this.playlistController_[`${type}SegmentLoader_`];\n if (this[`${type}StalledDownloads_`] > 0) {\n this.logger_(`resetting possible stalled download count for ${type} loader`);\n }\n this[`${type}StalledDownloads_`] = 0;\n this[`${type}Buffered_`] = loader.buffered_();\n }\n /**\n * Checks on every segment `appendsdone` to see\n * if segment appends are making progress. If they are not\n * and we are still downloading bytes. We exclude the playlist.\n *\n * @param {string} type\n * The segment loader type to check.\n *\n * @listens SegmentLoader#appendsdone\n */\n\n checkSegmentDownloads_(type) {\n const pc = this.playlistController_;\n const loader = pc[`${type}SegmentLoader_`];\n const buffered = loader.buffered_();\n const isBufferedDifferent = isRangeDifferent(this[`${type}Buffered_`], buffered);\n this[`${type}Buffered_`] = buffered; // if another watcher is going to fix the issue or\n // the buffered value for this loader changed\n // appends are working\n\n if (isBufferedDifferent) {\n const metadata = {\n bufferedRanges: buffered\n };\n pc.trigger({\n type: 'bufferedrangeschanged',\n metadata\n });\n this.resetSegmentDownloads_(type);\n return;\n }\n this[`${type}StalledDownloads_`]++;\n this.logger_(`found #${this[`${type}StalledDownloads_`]} ${type} appends that did not increase buffer (possible stalled download)`, {\n playlistId: loader.playlist_ && loader.playlist_.id,\n buffered: timeRangesToArray(buffered)\n }); // after 10 possibly stalled appends with no reset, exclude\n\n if (this[`${type}StalledDownloads_`] < 10) {\n return;\n }\n this.logger_(`${type} loader stalled download exclusion`);\n this.resetSegmentDownloads_(type);\n this.tech_.trigger({\n type: 'usage',\n name: `vhs-${type}-download-exclusion`\n });\n if (type === 'subtitle') {\n return;\n } // TODO: should we exclude audio tracks rather than main tracks\n // when type is audio?\n\n pc.excludePlaylist({\n error: {\n message: `Excessive ${type} segment downloading detected.`\n },\n playlistExclusionDuration: Infinity\n });\n }\n /**\n * The purpose of this function is to emulate the \"waiting\" event on\n * browsers that do not emit it when they are waiting for more\n * data to continue playback\n *\n * @private\n */\n\n checkCurrentTime_() {\n if (this.tech_.paused() || this.tech_.seeking()) {\n return;\n }\n const currentTime = this.tech_.currentTime();\n const buffered = this.tech_.buffered();\n if (this.lastRecordedTime === currentTime && (!buffered.length || currentTime + SAFE_TIME_DELTA >= buffered.end(buffered.length - 1))) {\n // If current time is at the end of the final buffered region, then any playback\n // stall is most likely caused by buffering in a low bandwidth environment. The tech\n // should fire a `waiting` event in this scenario, but due to browser and tech\n // inconsistencies. Calling `techWaiting_` here allows us to simulate\n // responding to a native `waiting` event when the tech fails to emit one.\n return this.techWaiting_();\n }\n if (this.consecutiveUpdates >= 5 && currentTime === this.lastRecordedTime) {\n this.consecutiveUpdates++;\n this.waiting_();\n } else if (currentTime === this.lastRecordedTime) {\n this.consecutiveUpdates++;\n } else {\n this.playedRanges_.push(createTimeRanges([this.lastRecordedTime, currentTime]));\n const metadata = {\n playedRanges: this.playedRanges_\n };\n this.playlistController_.trigger({\n type: 'playedrangeschanged',\n metadata\n });\n this.consecutiveUpdates = 0;\n this.lastRecordedTime = currentTime;\n }\n }\n /**\n * Resets the 'timeupdate' mechanism designed to detect that we are stalled\n *\n * @private\n */\n\n resetTimeUpdate_() {\n this.consecutiveUpdates = 0;\n }\n /**\n * Fixes situations where there's a bad seek\n *\n * @return {boolean} whether an action was taken to fix the seek\n * @private\n */\n\n fixesBadSeeks_() {\n const seeking = this.tech_.seeking();\n if (!seeking) {\n return false;\n } // TODO: It's possible that these seekable checks should be moved out of this function\n // and into a function that runs on seekablechange. It's also possible that we only need\n // afterSeekableWindow as the buffered check at the bottom is good enough to handle before\n // seekable range.\n\n const seekable = this.seekable();\n const currentTime = this.tech_.currentTime();\n const isAfterSeekableRange = this.afterSeekableWindow_(seekable, currentTime, this.media(), this.allowSeeksWithinUnsafeLiveWindow);\n let seekTo;\n if (isAfterSeekableRange) {\n const seekableEnd = seekable.end(seekable.length - 1); // sync to live point (if VOD, our seekable was updated and we're simply adjusting)\n\n seekTo = seekableEnd;\n }\n if (this.beforeSeekableWindow_(seekable, currentTime)) {\n const seekableStart = seekable.start(0); // sync to the beginning of the live window\n // provide a buffer of .1 seconds to handle rounding/imprecise numbers\n\n seekTo = seekableStart + (\n // if the playlist is too short and the seekable range is an exact time (can\n // happen in live with a 3 segment playlist), then don't use a time delta\n seekableStart === seekable.end(0) ? 0 : SAFE_TIME_DELTA);\n }\n if (typeof seekTo !== 'undefined') {\n this.logger_(`Trying to seek outside of seekable at time ${currentTime} with ` + `seekable range ${printableRange(seekable)}. Seeking to ` + `${seekTo}.`);\n this.tech_.setCurrentTime(seekTo);\n return true;\n }\n const sourceUpdater = this.playlistController_.sourceUpdater_;\n const buffered = this.tech_.buffered();\n const audioBuffered = sourceUpdater.audioBuffer ? sourceUpdater.audioBuffered() : null;\n const videoBuffered = sourceUpdater.videoBuffer ? sourceUpdater.videoBuffered() : null;\n const media = this.media(); // verify that at least two segment durations or one part duration have been\n // appended before checking for a gap.\n\n const minAppendedDuration = media.partTargetDuration ? media.partTargetDuration : (media.targetDuration - TIME_FUDGE_FACTOR) * 2; // verify that at least two segment durations have been\n // appended before checking for a gap.\n\n const bufferedToCheck = [audioBuffered, videoBuffered];\n for (let i = 0; i < bufferedToCheck.length; i++) {\n // skip null buffered\n if (!bufferedToCheck[i]) {\n continue;\n }\n const timeAhead = timeAheadOf(bufferedToCheck[i], currentTime); // if we are less than two video/audio segment durations or one part\n // duration behind we haven't appended enough to call this a bad seek.\n\n if (timeAhead < minAppendedDuration) {\n return false;\n }\n }\n const nextRange = findNextRange(buffered, currentTime); // we have appended enough content, but we don't have anything buffered\n // to seek over the gap\n\n if (nextRange.length === 0) {\n return false;\n }\n seekTo = nextRange.start(0) + SAFE_TIME_DELTA;\n this.logger_(`Buffered region starts (${nextRange.start(0)}) ` + ` just beyond seek point (${currentTime}). Seeking to ${seekTo}.`);\n this.tech_.setCurrentTime(seekTo);\n return true;\n }\n /**\n * Handler for situations when we determine the player is waiting.\n *\n * @private\n */\n\n waiting_() {\n if (this.techWaiting_()) {\n return;\n } // All tech waiting checks failed. Use last resort correction\n\n const currentTime = this.tech_.currentTime();\n const buffered = this.tech_.buffered();\n const currentRange = findRange(buffered, currentTime); // Sometimes the player can stall for unknown reasons within a contiguous buffered\n // region with no indication that anything is amiss (seen in Firefox). Seeking to\n // currentTime is usually enough to kickstart the player. This checks that the player\n // is currently within a buffered region before attempting a corrective seek.\n // Chrome does not appear to continue `timeupdate` events after a `waiting` event\n // until there is ~ 3 seconds of forward buffer available. PlaybackWatcher should also\n // make sure there is ~3 seconds of forward buffer before taking any corrective action\n // to avoid triggering an `unknownwaiting` event when the network is slow.\n\n if (currentRange.length && currentTime + 3 <= currentRange.end(0)) {\n this.resetTimeUpdate_();\n this.tech_.setCurrentTime(currentTime);\n this.logger_(`Stopped at ${currentTime} while inside a buffered region ` + `[${currentRange.start(0)} -> ${currentRange.end(0)}]. Attempting to resume ` + 'playback by seeking to the current time.'); // unknown waiting corrections may be useful for monitoring QoS\n\n this.tech_.trigger({\n type: 'usage',\n name: 'vhs-unknown-waiting'\n });\n return;\n }\n }\n /**\n * Handler for situations when the tech fires a `waiting` event\n *\n * @return {boolean}\n * True if an action (or none) was needed to correct the waiting. False if no\n * checks passed\n * @private\n */\n\n techWaiting_() {\n const seekable = this.seekable();\n const currentTime = this.tech_.currentTime();\n if (this.tech_.seeking()) {\n // Tech is seeking or already waiting on another action, no action needed\n return true;\n }\n if (this.beforeSeekableWindow_(seekable, currentTime)) {\n const livePoint = seekable.end(seekable.length - 1);\n this.logger_(`Fell out of live window at time ${currentTime}. Seeking to ` + `live point (seekable end) ${livePoint}`);\n this.resetTimeUpdate_();\n this.tech_.setCurrentTime(livePoint); // live window resyncs may be useful for monitoring QoS\n\n this.tech_.trigger({\n type: 'usage',\n name: 'vhs-live-resync'\n });\n return true;\n }\n const sourceUpdater = this.tech_.vhs.playlistController_.sourceUpdater_;\n const buffered = this.tech_.buffered();\n const videoUnderflow = this.videoUnderflow_({\n audioBuffered: sourceUpdater.audioBuffered(),\n videoBuffered: sourceUpdater.videoBuffered(),\n currentTime\n });\n if (videoUnderflow) {\n // Even though the video underflowed and was stuck in a gap, the audio overplayed\n // the gap, leading currentTime into a buffered range. Seeking to currentTime\n // allows the video to catch up to the audio position without losing any audio\n // (only suffering ~3 seconds of frozen video and a pause in audio playback).\n this.resetTimeUpdate_();\n this.tech_.setCurrentTime(currentTime); // video underflow may be useful for monitoring QoS\n\n this.tech_.trigger({\n type: 'usage',\n name: 'vhs-video-underflow'\n });\n return true;\n }\n const nextRange = findNextRange(buffered, currentTime); // check for gap\n\n if (nextRange.length > 0) {\n this.logger_(`Stopped at ${currentTime} and seeking to ${nextRange.start(0)}`);\n this.resetTimeUpdate_();\n this.skipTheGap_(currentTime);\n return true;\n } // All checks failed. Returning false to indicate failure to correct waiting\n\n return false;\n }\n afterSeekableWindow_(seekable, currentTime, playlist, allowSeeksWithinUnsafeLiveWindow = false) {\n if (!seekable.length) {\n // we can't make a solid case if there's no seekable, default to false\n return false;\n }\n let allowedEnd = seekable.end(seekable.length - 1) + SAFE_TIME_DELTA;\n const isLive = !playlist.endList;\n const isLLHLS = typeof playlist.partTargetDuration === 'number';\n if (isLive && (isLLHLS || allowSeeksWithinUnsafeLiveWindow)) {\n allowedEnd = seekable.end(seekable.length - 1) + playlist.targetDuration * 3;\n }\n if (currentTime > allowedEnd) {\n return true;\n }\n return false;\n }\n beforeSeekableWindow_(seekable, currentTime) {\n if (seekable.length &&\n // can't fall before 0 and 0 seekable start identifies VOD stream\n seekable.start(0) > 0 && currentTime < seekable.start(0) - this.liveRangeSafeTimeDelta) {\n return true;\n }\n return false;\n }\n videoUnderflow_({\n videoBuffered,\n audioBuffered,\n currentTime\n }) {\n // audio only content will not have video underflow :)\n if (!videoBuffered) {\n return;\n }\n let gap; // find a gap in demuxed content.\n\n if (videoBuffered.length && audioBuffered.length) {\n // in Chrome audio will continue to play for ~3s when we run out of video\n // so we have to check that the video buffer did have some buffer in the\n // past.\n const lastVideoRange = findRange(videoBuffered, currentTime - 3);\n const videoRange = findRange(videoBuffered, currentTime);\n const audioRange = findRange(audioBuffered, currentTime);\n if (audioRange.length && !videoRange.length && lastVideoRange.length) {\n gap = {\n start: lastVideoRange.end(0),\n end: audioRange.end(0)\n };\n } // find a gap in muxed content.\n } else {\n const nextRange = findNextRange(videoBuffered, currentTime); // Even if there is no available next range, there is still a possibility we are\n // stuck in a gap due to video underflow.\n\n if (!nextRange.length) {\n gap = this.gapFromVideoUnderflow_(videoBuffered, currentTime);\n }\n }\n if (gap) {\n this.logger_(`Encountered a gap in video from ${gap.start} to ${gap.end}. ` + `Seeking to current time ${currentTime}`);\n return true;\n }\n return false;\n }\n /**\n * Timer callback. If playback still has not proceeded, then we seek\n * to the start of the next buffered region.\n *\n * @private\n */\n\n skipTheGap_(scheduledCurrentTime) {\n const buffered = this.tech_.buffered();\n const currentTime = this.tech_.currentTime();\n const nextRange = findNextRange(buffered, currentTime);\n this.resetTimeUpdate_();\n if (nextRange.length === 0 || currentTime !== scheduledCurrentTime) {\n return;\n }\n this.logger_('skipTheGap_:', 'currentTime:', currentTime, 'scheduled currentTime:', scheduledCurrentTime, 'nextRange start:', nextRange.start(0)); // only seek if we still have not played\n\n this.tech_.setCurrentTime(nextRange.start(0) + TIME_FUDGE_FACTOR);\n const metadata = {\n gapInfo: {\n from: currentTime,\n to: nextRange.start(0)\n }\n };\n this.playlistController_.trigger({\n type: 'gapjumped',\n metadata\n });\n this.tech_.trigger({\n type: 'usage',\n name: 'vhs-gap-skip'\n });\n }\n gapFromVideoUnderflow_(buffered, currentTime) {\n // At least in Chrome, if there is a gap in the video buffer, the audio will continue\n // playing for ~3 seconds after the video gap starts. This is done to account for\n // video buffer underflow/underrun (note that this is not done when there is audio\n // buffer underflow/underrun -- in that case the video will stop as soon as it\n // encounters the gap, as audio stalls are more noticeable/jarring to a user than\n // video stalls). The player's time will reflect the playthrough of audio, so the\n // time will appear as if we are in a buffered region, even if we are stuck in a\n // \"gap.\"\n //\n // Example:\n // video buffer: 0 => 10.1, 10.2 => 20\n // audio buffer: 0 => 20\n // overall buffer: 0 => 10.1, 10.2 => 20\n // current time: 13\n //\n // Chrome's video froze at 10 seconds, where the video buffer encountered the gap,\n // however, the audio continued playing until it reached ~3 seconds past the gap\n // (13 seconds), at which point it stops as well. Since current time is past the\n // gap, findNextRange will return no ranges.\n //\n // To check for this issue, we see if there is a gap that starts somewhere within\n // a 3 second range (3 seconds +/- 1 second) back from our current time.\n const gaps = findGaps(buffered);\n for (let i = 0; i < gaps.length; i++) {\n const start = gaps.start(i);\n const end = gaps.end(i); // gap is starts no more than 4 seconds back\n\n if (currentTime - start < 4 && currentTime - start > 2) {\n return {\n start,\n end\n };\n }\n }\n return null;\n }\n}\nconst defaultOptions = {\n errorInterval: 30,\n getSource(next) {\n const tech = this.tech({\n IWillNotUseThisInPlugins: true\n });\n const sourceObj = tech.currentSource_ || this.currentSource();\n return next(sourceObj);\n }\n};\n/**\n * Main entry point for the plugin\n *\n * @param {Player} player a reference to a videojs Player instance\n * @param {Object} [options] an object with plugin options\n * @private\n */\n\nconst initPlugin = function (player, options) {\n let lastCalled = 0;\n let seekTo = 0;\n const localOptions = merge(defaultOptions, options);\n player.ready(() => {\n player.trigger({\n type: 'usage',\n name: 'vhs-error-reload-initialized'\n });\n });\n /**\n * Player modifications to perform that must wait until `loadedmetadata`\n * has been triggered\n *\n * @private\n */\n\n const loadedMetadataHandler = function () {\n if (seekTo) {\n player.currentTime(seekTo);\n }\n };\n /**\n * Set the source on the player element, play, and seek if necessary\n *\n * @param {Object} sourceObj An object specifying the source url and mime-type to play\n * @private\n */\n\n const setSource = function (sourceObj) {\n if (sourceObj === null || sourceObj === undefined) {\n return;\n }\n seekTo = player.duration() !== Infinity && player.currentTime() || 0;\n player.one('loadedmetadata', loadedMetadataHandler);\n player.src(sourceObj);\n player.trigger({\n type: 'usage',\n name: 'vhs-error-reload'\n });\n player.play();\n };\n /**\n * Attempt to get a source from either the built-in getSource function\n * or a custom function provided via the options\n *\n * @private\n */\n\n const errorHandler = function () {\n // Do not attempt to reload the source if a source-reload occurred before\n // 'errorInterval' time has elapsed since the last source-reload\n if (Date.now() - lastCalled < localOptions.errorInterval * 1000) {\n player.trigger({\n type: 'usage',\n name: 'vhs-error-reload-canceled'\n });\n return;\n }\n if (!localOptions.getSource || typeof localOptions.getSource !== 'function') {\n videojs.log.error('ERROR: reloadSourceOnError - The option getSource must be a function!');\n return;\n }\n lastCalled = Date.now();\n return localOptions.getSource.call(player, setSource);\n };\n /**\n * Unbind any event handlers that were bound by the plugin\n *\n * @private\n */\n\n const cleanupEvents = function () {\n player.off('loadedmetadata', loadedMetadataHandler);\n player.off('error', errorHandler);\n player.off('dispose', cleanupEvents);\n };\n /**\n * Cleanup before re-initializing the plugin\n *\n * @param {Object} [newOptions] an object with plugin options\n * @private\n */\n\n const reinitPlugin = function (newOptions) {\n cleanupEvents();\n initPlugin(player, newOptions);\n };\n player.on('error', errorHandler);\n player.on('dispose', cleanupEvents); // Overwrite the plugin function so that we can correctly cleanup before\n // initializing the plugin\n\n player.reloadSourceOnError = reinitPlugin;\n};\n/**\n * Reload the source when an error is detected as long as there\n * wasn't an error previously within the last 30 seconds\n *\n * @param {Object} [options] an object with plugin options\n */\n\nconst reloadSourceOnError = function (options) {\n initPlugin(this, options);\n};\nvar version$4 = \"3.15.0\";\nvar version$3 = \"7.0.3\";\nvar version$2 = \"1.3.1\";\nvar version$1 = \"7.2.0\";\nvar version = \"4.0.2\";\nconst Vhs = {\n PlaylistLoader,\n Playlist,\n utils,\n STANDARD_PLAYLIST_SELECTOR: lastBandwidthSelector,\n INITIAL_PLAYLIST_SELECTOR: lowestBitrateCompatibleVariantSelector,\n lastBandwidthSelector,\n movingAverageBandwidthSelector,\n comparePlaylistBandwidth,\n comparePlaylistResolution,\n xhr: xhrFactory()\n}; // Define getter/setters for config properties\n\nObject.keys(Config).forEach(prop => {\n Object.defineProperty(Vhs, prop, {\n get() {\n videojs.log.warn(`using Vhs.${prop} is UNSAFE be sure you know what you are doing`);\n return Config[prop];\n },\n set(value) {\n videojs.log.warn(`using Vhs.${prop} is UNSAFE be sure you know what you are doing`);\n if (typeof value !== 'number' || value < 0) {\n videojs.log.warn(`value of Vhs.${prop} must be greater than or equal to 0`);\n return;\n }\n Config[prop] = value;\n }\n });\n});\nconst LOCAL_STORAGE_KEY = 'videojs-vhs';\n/**\n * Updates the selectedIndex of the QualityLevelList when a mediachange happens in vhs.\n *\n * @param {QualityLevelList} qualityLevels The QualityLevelList to update.\n * @param {PlaylistLoader} playlistLoader PlaylistLoader containing the new media info.\n * @function handleVhsMediaChange\n */\n\nconst handleVhsMediaChange = function (qualityLevels, playlistLoader) {\n const newPlaylist = playlistLoader.media();\n let selectedIndex = -1;\n for (let i = 0; i < qualityLevels.length; i++) {\n if (qualityLevels[i].id === newPlaylist.id) {\n selectedIndex = i;\n break;\n }\n }\n qualityLevels.selectedIndex_ = selectedIndex;\n qualityLevels.trigger({\n selectedIndex,\n type: 'change'\n });\n};\n/**\n * Adds quality levels to list once playlist metadata is available\n *\n * @param {QualityLevelList} qualityLevels The QualityLevelList to attach events to.\n * @param {Object} vhs Vhs object to listen to for media events.\n * @function handleVhsLoadedMetadata\n */\n\nconst handleVhsLoadedMetadata = function (qualityLevels, vhs) {\n vhs.representations().forEach(rep => {\n qualityLevels.addQualityLevel(rep);\n });\n handleVhsMediaChange(qualityLevels, vhs.playlists);\n}; // VHS is a source handler, not a tech. Make sure attempts to use it\n// as one do not cause exceptions.\n\nVhs.canPlaySource = function () {\n return videojs.log.warn('VHS is no longer a tech. Please remove it from ' + 'your player\\'s techOrder.');\n};\nconst emeKeySystems = (keySystemOptions, mainPlaylist, audioPlaylist) => {\n if (!keySystemOptions) {\n return keySystemOptions;\n }\n let codecs = {};\n if (mainPlaylist && mainPlaylist.attributes && mainPlaylist.attributes.CODECS) {\n codecs = unwrapCodecList(parseCodecs(mainPlaylist.attributes.CODECS));\n }\n if (audioPlaylist && audioPlaylist.attributes && audioPlaylist.attributes.CODECS) {\n codecs.audio = audioPlaylist.attributes.CODECS;\n }\n const videoContentType = getMimeForCodec(codecs.video);\n const audioContentType = getMimeForCodec(codecs.audio); // upsert the content types based on the selected playlist\n\n const keySystemContentTypes = {};\n for (const keySystem in keySystemOptions) {\n keySystemContentTypes[keySystem] = {};\n if (audioContentType) {\n keySystemContentTypes[keySystem].audioContentType = audioContentType;\n }\n if (videoContentType) {\n keySystemContentTypes[keySystem].videoContentType = videoContentType;\n } // Default to using the video playlist's PSSH even though they may be different, as\n // videojs-contrib-eme will only accept one in the options.\n //\n // This shouldn't be an issue for most cases as early intialization will handle all\n // unique PSSH values, and if they aren't, then encrypted events should have the\n // specific information needed for the unique license.\n\n if (mainPlaylist.contentProtection && mainPlaylist.contentProtection[keySystem] && mainPlaylist.contentProtection[keySystem].pssh) {\n keySystemContentTypes[keySystem].pssh = mainPlaylist.contentProtection[keySystem].pssh;\n } // videojs-contrib-eme accepts the option of specifying: 'com.some.cdm': 'url'\n // so we need to prevent overwriting the URL entirely\n\n if (typeof keySystemOptions[keySystem] === 'string') {\n keySystemContentTypes[keySystem].url = keySystemOptions[keySystem];\n }\n }\n return merge(keySystemOptions, keySystemContentTypes);\n};\n/**\n * @typedef {Object} KeySystems\n *\n * keySystems configuration for https://github.com/videojs/videojs-contrib-eme\n * Note: not all options are listed here.\n *\n * @property {Uint8Array} [pssh]\n * Protection System Specific Header\n */\n\n/**\n * Goes through all the playlists and collects an array of KeySystems options objects\n * containing each playlist's keySystems and their pssh values, if available.\n *\n * @param {Object[]} playlists\n * The playlists to look through\n * @param {string[]} keySystems\n * The keySystems to collect pssh values for\n *\n * @return {KeySystems[]}\n * An array of KeySystems objects containing available key systems and their\n * pssh values\n */\n\nconst getAllPsshKeySystemsOptions = (playlists, keySystems) => {\n return playlists.reduce((keySystemsArr, playlist) => {\n if (!playlist.contentProtection) {\n return keySystemsArr;\n }\n const keySystemsOptions = keySystems.reduce((keySystemsObj, keySystem) => {\n const keySystemOptions = playlist.contentProtection[keySystem];\n if (keySystemOptions && keySystemOptions.pssh) {\n keySystemsObj[keySystem] = {\n pssh: keySystemOptions.pssh\n };\n }\n return keySystemsObj;\n }, {});\n if (Object.keys(keySystemsOptions).length) {\n keySystemsArr.push(keySystemsOptions);\n }\n return keySystemsArr;\n }, []);\n};\n/**\n * Returns a promise that waits for the\n * [eme plugin](https://github.com/videojs/videojs-contrib-eme) to create a key session.\n *\n * Works around https://bugs.chromium.org/p/chromium/issues/detail?id=895449 in non-IE11\n * browsers.\n *\n * As per the above ticket, this is particularly important for Chrome, where, if\n * unencrypted content is appended before encrypted content and the key session has not\n * been created, a MEDIA_ERR_DECODE will be thrown once the encrypted content is reached\n * during playback.\n *\n * @param {Object} player\n * The player instance\n * @param {Object[]} sourceKeySystems\n * The key systems options from the player source\n * @param {Object} [audioMedia]\n * The active audio media playlist (optional)\n * @param {Object[]} mainPlaylists\n * The playlists found on the main playlist object\n *\n * @return {Object}\n * Promise that resolves when the key session has been created\n */\n\nconst waitForKeySessionCreation = ({\n player,\n sourceKeySystems,\n audioMedia,\n mainPlaylists\n}) => {\n if (!player.eme.initializeMediaKeys) {\n return Promise.resolve();\n } // TODO should all audio PSSH values be initialized for DRM?\n //\n // All unique video rendition pssh values are initialized for DRM, but here only\n // the initial audio playlist license is initialized. In theory, an encrypted\n // event should be fired if the user switches to an alternative audio playlist\n // where a license is required, but this case hasn't yet been tested. In addition, there\n // may be many alternate audio playlists unlikely to be used (e.g., multiple different\n // languages).\n\n const playlists = audioMedia ? mainPlaylists.concat([audioMedia]) : mainPlaylists;\n const keySystemsOptionsArr = getAllPsshKeySystemsOptions(playlists, Object.keys(sourceKeySystems));\n const initializationFinishedPromises = [];\n const keySessionCreatedPromises = []; // Since PSSH values are interpreted as initData, EME will dedupe any duplicates. The\n // only place where it should not be deduped is for ms-prefixed APIs, but\n // the existence of modern EME APIs in addition to\n // ms-prefixed APIs on Edge should prevent this from being a concern.\n // initializeMediaKeys also won't use the webkit-prefixed APIs.\n\n keySystemsOptionsArr.forEach(keySystemsOptions => {\n keySessionCreatedPromises.push(new Promise((resolve, reject) => {\n player.tech_.one('keysessioncreated', resolve);\n }));\n initializationFinishedPromises.push(new Promise((resolve, reject) => {\n player.eme.initializeMediaKeys({\n keySystems: keySystemsOptions\n }, err => {\n if (err) {\n reject(err);\n return;\n }\n resolve();\n });\n }));\n }); // The reasons Promise.race is chosen over Promise.any:\n //\n // * Promise.any is only available in Safari 14+.\n // * None of these promises are expected to reject. If they do reject, it might be\n // better here for the race to surface the rejection, rather than mask it by using\n // Promise.any.\n\n return Promise.race([\n // If a session was previously created, these will all finish resolving without\n // creating a new session, otherwise it will take until the end of all license\n // requests, which is why the key session check is used (to make setup much faster).\n Promise.all(initializationFinishedPromises),\n // Once a single session is created, the browser knows DRM will be used.\n Promise.race(keySessionCreatedPromises)]);\n};\n/**\n * If the [eme](https://github.com/videojs/videojs-contrib-eme) plugin is available, and\n * there are keySystems on the source, sets up source options to prepare the source for\n * eme.\n *\n * @param {Object} player\n * The player instance\n * @param {Object[]} sourceKeySystems\n * The key systems options from the player source\n * @param {Object} media\n * The active media playlist\n * @param {Object} [audioMedia]\n * The active audio media playlist (optional)\n *\n * @return {boolean}\n * Whether or not options were configured and EME is available\n */\n\nconst setupEmeOptions = ({\n player,\n sourceKeySystems,\n media,\n audioMedia\n}) => {\n const sourceOptions = emeKeySystems(sourceKeySystems, media, audioMedia);\n if (!sourceOptions) {\n return false;\n }\n player.currentSource().keySystems = sourceOptions; // eme handles the rest of the setup, so if it is missing\n // do nothing.\n\n if (sourceOptions && !player.eme) {\n videojs.log.warn('DRM encrypted source cannot be decrypted without a DRM plugin');\n return false;\n }\n return true;\n};\nconst getVhsLocalStorage = () => {\n if (!window$1.localStorage) {\n return null;\n }\n const storedObject = window$1.localStorage.getItem(LOCAL_STORAGE_KEY);\n if (!storedObject) {\n return null;\n }\n try {\n return JSON.parse(storedObject);\n } catch (e) {\n // someone may have tampered with the value\n return null;\n }\n};\nconst updateVhsLocalStorage = options => {\n if (!window$1.localStorage) {\n return false;\n }\n let objectToStore = getVhsLocalStorage();\n objectToStore = objectToStore ? merge(objectToStore, options) : options;\n try {\n window$1.localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(objectToStore));\n } catch (e) {\n // Throws if storage is full (e.g., always on iOS 5+ Safari private mode, where\n // storage is set to 0).\n // https://developer.mozilla.org/en-US/docs/Web/API/Storage/setItem#Exceptions\n // No need to perform any operation.\n return false;\n }\n return objectToStore;\n};\n/**\n * Parses VHS-supported media types from data URIs. See\n * https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs\n * for information on data URIs.\n *\n * @param {string} dataUri\n * The data URI\n *\n * @return {string|Object}\n * The parsed object/string, or the original string if no supported media type\n * was found\n */\n\nconst expandDataUri = dataUri => {\n if (dataUri.toLowerCase().indexOf('data:application/vnd.videojs.vhs+json,') === 0) {\n return JSON.parse(dataUri.substring(dataUri.indexOf(',') + 1));\n } // no known case for this data URI, return the string as-is\n\n return dataUri;\n};\n/**\n * Adds a request hook to an xhr object\n *\n * @param {Object} xhr object to add the onRequest hook to\n * @param {function} callback hook function for an xhr request\n */\n\nconst addOnRequestHook = (xhr, callback) => {\n if (!xhr._requestCallbackSet) {\n xhr._requestCallbackSet = new Set();\n }\n xhr._requestCallbackSet.add(callback);\n};\n/**\n * Adds a response hook to an xhr object\n *\n * @param {Object} xhr object to add the onResponse hook to\n * @param {function} callback hook function for an xhr response\n */\n\nconst addOnResponseHook = (xhr, callback) => {\n if (!xhr._responseCallbackSet) {\n xhr._responseCallbackSet = new Set();\n }\n xhr._responseCallbackSet.add(callback);\n};\n/**\n * Removes a request hook on an xhr object, deletes the onRequest set if empty.\n *\n * @param {Object} xhr object to remove the onRequest hook from\n * @param {function} callback hook function to remove\n */\n\nconst removeOnRequestHook = (xhr, callback) => {\n if (!xhr._requestCallbackSet) {\n return;\n }\n xhr._requestCallbackSet.delete(callback);\n if (!xhr._requestCallbackSet.size) {\n delete xhr._requestCallbackSet;\n }\n};\n/**\n * Removes a response hook on an xhr object, deletes the onResponse set if empty.\n *\n * @param {Object} xhr object to remove the onResponse hook from\n * @param {function} callback hook function to remove\n */\n\nconst removeOnResponseHook = (xhr, callback) => {\n if (!xhr._responseCallbackSet) {\n return;\n }\n xhr._responseCallbackSet.delete(callback);\n if (!xhr._responseCallbackSet.size) {\n delete xhr._responseCallbackSet;\n }\n};\n/**\n * Whether the browser has built-in HLS support.\n */\n\nVhs.supportsNativeHls = function () {\n if (!document$1 || !document$1.createElement) {\n return false;\n }\n const video = document$1.createElement('video'); // native HLS is definitely not supported if HTML5 video isn't\n\n if (!videojs.getTech('Html5').isSupported()) {\n return false;\n } // HLS manifests can go by many mime-types\n\n const canPlay = [\n // Apple santioned\n 'application/vnd.apple.mpegurl',\n // Apple sanctioned for backwards compatibility\n 'audio/mpegurl',\n // Very common\n 'audio/x-mpegurl',\n // Very common\n 'application/x-mpegurl',\n // Included for completeness\n 'video/x-mpegurl', 'video/mpegurl', 'application/mpegurl'];\n return canPlay.some(function (canItPlay) {\n return /maybe|probably/i.test(video.canPlayType(canItPlay));\n });\n}();\nVhs.supportsNativeDash = function () {\n if (!document$1 || !document$1.createElement || !videojs.getTech('Html5').isSupported()) {\n return false;\n }\n return /maybe|probably/i.test(document$1.createElement('video').canPlayType('application/dash+xml'));\n}();\nVhs.supportsTypeNatively = type => {\n if (type === 'hls') {\n return Vhs.supportsNativeHls;\n }\n if (type === 'dash') {\n return Vhs.supportsNativeDash;\n }\n return false;\n};\n/**\n * VHS is a source handler, not a tech. Make sure attempts to use it\n * as one do not cause exceptions.\n */\n\nVhs.isSupported = function () {\n return videojs.log.warn('VHS is no longer a tech. Please remove it from ' + 'your player\\'s techOrder.');\n};\n/**\n * A global function for setting an onRequest hook\n *\n * @param {function} callback for request modifiction\n */\n\nVhs.xhr.onRequest = function (callback) {\n addOnRequestHook(Vhs.xhr, callback);\n};\n/**\n * A global function for setting an onResponse hook\n *\n * @param {callback} callback for response data retrieval\n */\n\nVhs.xhr.onResponse = function (callback) {\n addOnResponseHook(Vhs.xhr, callback);\n};\n/**\n * Deletes a global onRequest callback if it exists\n *\n * @param {function} callback to delete from the global set\n */\n\nVhs.xhr.offRequest = function (callback) {\n removeOnRequestHook(Vhs.xhr, callback);\n};\n/**\n * Deletes a global onResponse callback if it exists\n *\n * @param {function} callback to delete from the global set\n */\n\nVhs.xhr.offResponse = function (callback) {\n removeOnResponseHook(Vhs.xhr, callback);\n};\nconst Component = videojs.getComponent('Component');\n/**\n * The Vhs Handler object, where we orchestrate all of the parts\n * of VHS to interact with video.js\n *\n * @class VhsHandler\n * @extends videojs.Component\n * @param {Object} source the soruce object\n * @param {Tech} tech the parent tech object\n * @param {Object} options optional and required options\n */\n\nclass VhsHandler extends Component {\n constructor(source, tech, options) {\n super(tech, options.vhs); // if a tech level `initialBandwidth` option was passed\n // use that over the VHS level `bandwidth` option\n\n if (typeof options.initialBandwidth === 'number') {\n this.options_.bandwidth = options.initialBandwidth;\n }\n this.logger_ = logger('VhsHandler'); // we need access to the player in some cases,\n // so, get it from Video.js via the `playerId`\n\n if (tech.options_ && tech.options_.playerId) {\n const _player = videojs.getPlayer(tech.options_.playerId);\n this.player_ = _player;\n }\n this.tech_ = tech;\n this.source_ = source;\n this.stats = {};\n this.ignoreNextSeekingEvent_ = false;\n this.setOptions_();\n if (this.options_.overrideNative && tech.overrideNativeAudioTracks && tech.overrideNativeVideoTracks) {\n tech.overrideNativeAudioTracks(true);\n tech.overrideNativeVideoTracks(true);\n } else if (this.options_.overrideNative && (tech.featuresNativeVideoTracks || tech.featuresNativeAudioTracks)) {\n // overriding native VHS only works if audio tracks have been emulated\n // error early if we're misconfigured\n throw new Error('Overriding native VHS requires emulated tracks. ' + 'See https://git.io/vMpjB');\n } // listen for fullscreenchange events for this player so that we\n // can adjust our quality selection quickly\n\n this.on(document$1, ['fullscreenchange', 'webkitfullscreenchange', 'mozfullscreenchange', 'MSFullscreenChange'], event => {\n const fullscreenElement = document$1.fullscreenElement || document$1.webkitFullscreenElement || document$1.mozFullScreenElement || document$1.msFullscreenElement;\n if (fullscreenElement && fullscreenElement.contains(this.tech_.el())) {\n this.playlistController_.fastQualityChange_();\n } else {\n // When leaving fullscreen, since the in page pixel dimensions should be smaller\n // than full screen, see if there should be a rendition switch down to preserve\n // bandwidth.\n this.playlistController_.checkABR_();\n }\n });\n this.on(this.tech_, 'seeking', function () {\n if (this.ignoreNextSeekingEvent_) {\n this.ignoreNextSeekingEvent_ = false;\n return;\n }\n this.setCurrentTime(this.tech_.currentTime());\n });\n this.on(this.tech_, 'error', function () {\n // verify that the error was real and we are loaded\n // enough to have pc loaded.\n if (this.tech_.error() && this.playlistController_) {\n this.playlistController_.pauseLoading();\n }\n });\n this.on(this.tech_, 'play', this.play);\n }\n /**\n * Set VHS options based on options from configuration, as well as partial\n * options to be passed at a later time.\n *\n * @param {Object} options A partial chunk of config options\n */\n\n setOptions_(options = {}) {\n this.options_ = merge(this.options_, options); // defaults\n\n this.options_.withCredentials = this.options_.withCredentials || false;\n this.options_.limitRenditionByPlayerDimensions = this.options_.limitRenditionByPlayerDimensions === false ? false : true;\n this.options_.useDevicePixelRatio = this.options_.useDevicePixelRatio || false;\n this.options_.useBandwidthFromLocalStorage = typeof this.source_.useBandwidthFromLocalStorage !== 'undefined' ? this.source_.useBandwidthFromLocalStorage : this.options_.useBandwidthFromLocalStorage || false;\n this.options_.useForcedSubtitles = this.options_.useForcedSubtitles || false;\n this.options_.useNetworkInformationApi = this.options_.useNetworkInformationApi || false;\n this.options_.useDtsForTimestampOffset = this.options_.useDtsForTimestampOffset || false;\n this.options_.customTagParsers = this.options_.customTagParsers || [];\n this.options_.customTagMappers = this.options_.customTagMappers || [];\n this.options_.cacheEncryptionKeys = this.options_.cacheEncryptionKeys || false;\n this.options_.llhls = this.options_.llhls === false ? false : true;\n this.options_.bufferBasedABR = this.options_.bufferBasedABR || false;\n if (typeof this.options_.playlistExclusionDuration !== 'number') {\n this.options_.playlistExclusionDuration = 60;\n }\n if (typeof this.options_.bandwidth !== 'number') {\n if (this.options_.useBandwidthFromLocalStorage) {\n const storedObject = getVhsLocalStorage();\n if (storedObject && storedObject.bandwidth) {\n this.options_.bandwidth = storedObject.bandwidth;\n this.tech_.trigger({\n type: 'usage',\n name: 'vhs-bandwidth-from-local-storage'\n });\n }\n if (storedObject && storedObject.throughput) {\n this.options_.throughput = storedObject.throughput;\n this.tech_.trigger({\n type: 'usage',\n name: 'vhs-throughput-from-local-storage'\n });\n }\n }\n } // if bandwidth was not set by options or pulled from local storage, start playlist\n // selection at a reasonable bandwidth\n\n if (typeof this.options_.bandwidth !== 'number') {\n this.options_.bandwidth = Config.INITIAL_BANDWIDTH;\n } // If the bandwidth number is unchanged from the initial setting\n // then this takes precedence over the enableLowInitialPlaylist option\n\n this.options_.enableLowInitialPlaylist = this.options_.enableLowInitialPlaylist && this.options_.bandwidth === Config.INITIAL_BANDWIDTH; // grab options passed to player.src\n\n ['withCredentials', 'useDevicePixelRatio', 'customPixelRatio', 'limitRenditionByPlayerDimensions', 'bandwidth', 'customTagParsers', 'customTagMappers', 'cacheEncryptionKeys', 'playlistSelector', 'initialPlaylistSelector', 'bufferBasedABR', 'liveRangeSafeTimeDelta', 'llhls', 'useForcedSubtitles', 'useNetworkInformationApi', 'useDtsForTimestampOffset', 'exactManifestTimings', 'leastPixelDiffSelector'].forEach(option => {\n if (typeof this.source_[option] !== 'undefined') {\n this.options_[option] = this.source_[option];\n }\n });\n this.limitRenditionByPlayerDimensions = this.options_.limitRenditionByPlayerDimensions;\n this.useDevicePixelRatio = this.options_.useDevicePixelRatio;\n const customPixelRatio = this.options_.customPixelRatio; // Ensure the custom pixel ratio is a number greater than or equal to 0\n\n if (typeof customPixelRatio === 'number' && customPixelRatio >= 0) {\n this.customPixelRatio = customPixelRatio;\n }\n } // alias for public method to set options\n\n setOptions(options = {}) {\n this.setOptions_(options);\n }\n /**\n * called when player.src gets called, handle a new source\n *\n * @param {Object} src the source object to handle\n */\n\n src(src, type) {\n // do nothing if the src is falsey\n if (!src) {\n return;\n }\n this.setOptions_(); // add main playlist controller options\n\n this.options_.src = expandDataUri(this.source_.src);\n this.options_.tech = this.tech_;\n this.options_.externVhs = Vhs;\n this.options_.sourceType = simpleTypeFromSourceType(type); // Whenever we seek internally, we should update the tech\n\n this.options_.seekTo = time => {\n this.tech_.setCurrentTime(time);\n }; // pass player to allow for player level eventing on construction.\n\n this.options_.player_ = this.player_;\n this.playlistController_ = new PlaylistController(this.options_);\n const playbackWatcherOptions = merge({\n liveRangeSafeTimeDelta: SAFE_TIME_DELTA\n }, this.options_, {\n seekable: () => this.seekable(),\n media: () => this.playlistController_.media(),\n playlistController: this.playlistController_\n });\n this.playbackWatcher_ = new PlaybackWatcher(playbackWatcherOptions);\n this.attachStreamingEventListeners_();\n this.playlistController_.on('error', () => {\n const player = videojs.players[this.tech_.options_.playerId];\n let error = this.playlistController_.error;\n if (typeof error === 'object' && !error.code) {\n error.code = 3;\n } else if (typeof error === 'string') {\n error = {\n message: error,\n code: 3\n };\n }\n player.error(error);\n });\n const defaultSelector = this.options_.bufferBasedABR ? Vhs.movingAverageBandwidthSelector(0.55) : Vhs.STANDARD_PLAYLIST_SELECTOR; // `this` in selectPlaylist should be the VhsHandler for backwards\n // compatibility with < v2\n\n this.playlistController_.selectPlaylist = this.selectPlaylist ? this.selectPlaylist.bind(this) : defaultSelector.bind(this);\n this.playlistController_.selectInitialPlaylist = Vhs.INITIAL_PLAYLIST_SELECTOR.bind(this); // re-expose some internal objects for backwards compatibility with < v2\n\n this.playlists = this.playlistController_.mainPlaylistLoader_;\n this.mediaSource = this.playlistController_.mediaSource; // Proxy assignment of some properties to the main playlist\n // controller. Using a custom property for backwards compatibility\n // with < v2\n\n Object.defineProperties(this, {\n selectPlaylist: {\n get() {\n return this.playlistController_.selectPlaylist;\n },\n set(selectPlaylist) {\n this.playlistController_.selectPlaylist = selectPlaylist.bind(this);\n }\n },\n throughput: {\n get() {\n return this.playlistController_.mainSegmentLoader_.throughput.rate;\n },\n set(throughput) {\n this.playlistController_.mainSegmentLoader_.throughput.rate = throughput; // By setting `count` to 1 the throughput value becomes the starting value\n // for the cumulative average\n\n this.playlistController_.mainSegmentLoader_.throughput.count = 1;\n }\n },\n bandwidth: {\n get() {\n let playerBandwidthEst = this.playlistController_.mainSegmentLoader_.bandwidth;\n const networkInformation = window$1.navigator.connection || window$1.navigator.mozConnection || window$1.navigator.webkitConnection;\n const tenMbpsAsBitsPerSecond = 10e6;\n if (this.options_.useNetworkInformationApi && networkInformation) {\n // downlink returns Mbps\n // https://developer.mozilla.org/en-US/docs/Web/API/NetworkInformation/downlink\n const networkInfoBandwidthEstBitsPerSec = networkInformation.downlink * 1000 * 1000; // downlink maxes out at 10 Mbps. In the event that both networkInformationApi and the player\n // estimate a bandwidth greater than 10 Mbps, use the larger of the two estimates to ensure that\n // high quality streams are not filtered out.\n\n if (networkInfoBandwidthEstBitsPerSec >= tenMbpsAsBitsPerSecond && playerBandwidthEst >= tenMbpsAsBitsPerSecond) {\n playerBandwidthEst = Math.max(playerBandwidthEst, networkInfoBandwidthEstBitsPerSec);\n } else {\n playerBandwidthEst = networkInfoBandwidthEstBitsPerSec;\n }\n }\n return playerBandwidthEst;\n },\n set(bandwidth) {\n this.playlistController_.mainSegmentLoader_.bandwidth = bandwidth; // setting the bandwidth manually resets the throughput counter\n // `count` is set to zero that current value of `rate` isn't included\n // in the cumulative average\n\n this.playlistController_.mainSegmentLoader_.throughput = {\n rate: 0,\n count: 0\n };\n }\n },\n /**\n * `systemBandwidth` is a combination of two serial processes bit-rates. The first\n * is the network bitrate provided by `bandwidth` and the second is the bitrate of\n * the entire process after that - decryption, transmuxing, and appending - provided\n * by `throughput`.\n *\n * Since the two process are serial, the overall system bandwidth is given by:\n * sysBandwidth = 1 / (1 / bandwidth + 1 / throughput)\n */\n systemBandwidth: {\n get() {\n const invBandwidth = 1 / (this.bandwidth || 1);\n let invThroughput;\n if (this.throughput > 0) {\n invThroughput = 1 / this.throughput;\n } else {\n invThroughput = 0;\n }\n const systemBitrate = Math.floor(1 / (invBandwidth + invThroughput));\n return systemBitrate;\n },\n set() {\n videojs.log.error('The \"systemBandwidth\" property is read-only');\n }\n }\n });\n if (this.options_.bandwidth) {\n this.bandwidth = this.options_.bandwidth;\n }\n if (this.options_.throughput) {\n this.throughput = this.options_.throughput;\n }\n Object.defineProperties(this.stats, {\n bandwidth: {\n get: () => this.bandwidth || 0,\n enumerable: true\n },\n mediaRequests: {\n get: () => this.playlistController_.mediaRequests_() || 0,\n enumerable: true\n },\n mediaRequestsAborted: {\n get: () => this.playlistController_.mediaRequestsAborted_() || 0,\n enumerable: true\n },\n mediaRequestsTimedout: {\n get: () => this.playlistController_.mediaRequestsTimedout_() || 0,\n enumerable: true\n },\n mediaRequestsErrored: {\n get: () => this.playlistController_.mediaRequestsErrored_() || 0,\n enumerable: true\n },\n mediaTransferDuration: {\n get: () => this.playlistController_.mediaTransferDuration_() || 0,\n enumerable: true\n },\n mediaBytesTransferred: {\n get: () => this.playlistController_.mediaBytesTransferred_() || 0,\n enumerable: true\n },\n mediaSecondsLoaded: {\n get: () => this.playlistController_.mediaSecondsLoaded_() || 0,\n enumerable: true\n },\n mediaAppends: {\n get: () => this.playlistController_.mediaAppends_() || 0,\n enumerable: true\n },\n mainAppendsToLoadedData: {\n get: () => this.playlistController_.mainAppendsToLoadedData_() || 0,\n enumerable: true\n },\n audioAppendsToLoadedData: {\n get: () => this.playlistController_.audioAppendsToLoadedData_() || 0,\n enumerable: true\n },\n appendsToLoadedData: {\n get: () => this.playlistController_.appendsToLoadedData_() || 0,\n enumerable: true\n },\n timeToLoadedData: {\n get: () => this.playlistController_.timeToLoadedData_() || 0,\n enumerable: true\n },\n buffered: {\n get: () => timeRangesToArray(this.tech_.buffered()),\n enumerable: true\n },\n currentTime: {\n get: () => this.tech_.currentTime(),\n enumerable: true\n },\n currentSource: {\n get: () => this.tech_.currentSource_,\n enumerable: true\n },\n currentTech: {\n get: () => this.tech_.name_,\n enumerable: true\n },\n duration: {\n get: () => this.tech_.duration(),\n enumerable: true\n },\n main: {\n get: () => this.playlists.main,\n enumerable: true\n },\n playerDimensions: {\n get: () => this.tech_.currentDimensions(),\n enumerable: true\n },\n seekable: {\n get: () => timeRangesToArray(this.tech_.seekable()),\n enumerable: true\n },\n timestamp: {\n get: () => Date.now(),\n enumerable: true\n },\n videoPlaybackQuality: {\n get: () => this.tech_.getVideoPlaybackQuality(),\n enumerable: true\n }\n });\n this.tech_.one('canplay', this.playlistController_.setupFirstPlay.bind(this.playlistController_));\n this.tech_.on('bandwidthupdate', () => {\n if (this.options_.useBandwidthFromLocalStorage) {\n updateVhsLocalStorage({\n bandwidth: this.bandwidth,\n throughput: Math.round(this.throughput)\n });\n }\n });\n this.playlistController_.on('selectedinitialmedia', () => {\n // Add the manual rendition mix-in to VhsHandler\n renditionSelectionMixin(this);\n });\n this.playlistController_.sourceUpdater_.on('createdsourcebuffers', () => {\n this.setupEme_();\n }); // the bandwidth of the primary segment loader is our best\n // estimate of overall bandwidth\n\n this.on(this.playlistController_, 'progress', function () {\n this.tech_.trigger('progress');\n }); // In the live case, we need to ignore the very first `seeking` event since\n // that will be the result of the seek-to-live behavior\n\n this.on(this.playlistController_, 'firstplay', function () {\n this.ignoreNextSeekingEvent_ = true;\n });\n this.setupQualityLevels_(); // do nothing if the tech has been disposed already\n // this can occur if someone sets the src in player.ready(), for instance\n\n if (!this.tech_.el()) {\n return;\n }\n this.mediaSourceUrl_ = window$1.URL.createObjectURL(this.playlistController_.mediaSource); // If we are playing HLS with MSE in Safari, add source elements for both the blob and manifest URLs.\n // The latter will enable Airplay playback on receiver devices.\n\n if ((videojs.browser.IS_ANY_SAFARI || videojs.browser.IS_IOS) && this.options_.overrideNative && this.options_.sourceType === 'hls' && typeof this.tech_.addSourceElement === 'function') {\n this.tech_.addSourceElement(this.mediaSourceUrl_);\n this.tech_.addSourceElement(this.source_.src);\n } else {\n this.tech_.src(this.mediaSourceUrl_);\n }\n }\n createKeySessions_() {\n const audioPlaylistLoader = this.playlistController_.mediaTypes_.AUDIO.activePlaylistLoader;\n this.logger_('waiting for EME key session creation');\n waitForKeySessionCreation({\n player: this.player_,\n sourceKeySystems: this.source_.keySystems,\n audioMedia: audioPlaylistLoader && audioPlaylistLoader.media(),\n mainPlaylists: this.playlists.main.playlists\n }).then(() => {\n this.logger_('created EME key session');\n this.playlistController_.sourceUpdater_.initializedEme();\n }).catch(err => {\n this.logger_('error while creating EME key session', err);\n this.player_.error({\n message: 'Failed to initialize media keys for EME',\n code: 3\n });\n });\n }\n handleWaitingForKey_() {\n // If waitingforkey is fired, it's possible that the data that's necessary to retrieve\n // the key is in the manifest. While this should've happened on initial source load, it\n // may happen again in live streams where the keys change, and the manifest info\n // reflects the update.\n //\n // Because videojs-contrib-eme compares the PSSH data we send to that of PSSH data it's\n // already requested keys for, we don't have to worry about this generating extraneous\n // requests.\n this.logger_('waitingforkey fired, attempting to create any new key sessions');\n this.createKeySessions_();\n }\n /**\n * If necessary and EME is available, sets up EME options and waits for key session\n * creation.\n *\n * This function also updates the source updater so taht it can be used, as for some\n * browsers, EME must be configured before content is appended (if appending unencrypted\n * content before encrypted content).\n */\n\n setupEme_() {\n const audioPlaylistLoader = this.playlistController_.mediaTypes_.AUDIO.activePlaylistLoader;\n const didSetupEmeOptions = setupEmeOptions({\n player: this.player_,\n sourceKeySystems: this.source_.keySystems,\n media: this.playlists.media(),\n audioMedia: audioPlaylistLoader && audioPlaylistLoader.media()\n });\n this.player_.tech_.on('keystatuschange', e => {\n this.playlistController_.updatePlaylistByKeyStatus(e.keyId, e.status);\n });\n this.handleWaitingForKey_ = this.handleWaitingForKey_.bind(this);\n this.player_.tech_.on('waitingforkey', this.handleWaitingForKey_);\n if (!didSetupEmeOptions) {\n // If EME options were not set up, we've done all we could to initialize EME.\n this.playlistController_.sourceUpdater_.initializedEme();\n return;\n }\n this.createKeySessions_();\n }\n /**\n * Initializes the quality levels and sets listeners to update them.\n *\n * @method setupQualityLevels_\n * @private\n */\n\n setupQualityLevels_() {\n const player = videojs.players[this.tech_.options_.playerId]; // if there isn't a player or there isn't a qualityLevels plugin\n // or qualityLevels_ listeners have already been setup, do nothing.\n\n if (!player || !player.qualityLevels || this.qualityLevels_) {\n return;\n }\n this.qualityLevels_ = player.qualityLevels();\n this.playlistController_.on('selectedinitialmedia', () => {\n handleVhsLoadedMetadata(this.qualityLevels_, this);\n });\n this.playlists.on('mediachange', () => {\n handleVhsMediaChange(this.qualityLevels_, this.playlists);\n });\n }\n /**\n * return the version\n */\n\n static version() {\n return {\n '@videojs/http-streaming': version$4,\n 'mux.js': version$3,\n 'mpd-parser': version$2,\n 'm3u8-parser': version$1,\n 'aes-decrypter': version\n };\n }\n /**\n * return the version\n */\n\n version() {\n return this.constructor.version();\n }\n canChangeType() {\n return SourceUpdater.canChangeType();\n }\n /**\n * Begin playing the video.\n */\n\n play() {\n this.playlistController_.play();\n }\n /**\n * a wrapper around the function in PlaylistController\n */\n\n setCurrentTime(currentTime) {\n this.playlistController_.setCurrentTime(currentTime);\n }\n /**\n * a wrapper around the function in PlaylistController\n */\n\n duration() {\n return this.playlistController_.duration();\n }\n /**\n * a wrapper around the function in PlaylistController\n */\n\n seekable() {\n return this.playlistController_.seekable();\n }\n /**\n * Abort all outstanding work and cleanup.\n */\n\n dispose() {\n if (this.playbackWatcher_) {\n this.playbackWatcher_.dispose();\n }\n if (this.playlistController_) {\n this.playlistController_.dispose();\n }\n if (this.qualityLevels_) {\n this.qualityLevels_.dispose();\n }\n if (this.tech_ && this.tech_.vhs) {\n delete this.tech_.vhs;\n }\n if (this.mediaSourceUrl_ && window$1.URL.revokeObjectURL) {\n window$1.URL.revokeObjectURL(this.mediaSourceUrl_);\n this.mediaSourceUrl_ = null;\n }\n if (this.tech_) {\n this.tech_.off('waitingforkey', this.handleWaitingForKey_);\n }\n super.dispose();\n }\n convertToProgramTime(time, callback) {\n return getProgramTime({\n playlist: this.playlistController_.media(),\n time,\n callback\n });\n } // the player must be playing before calling this\n\n seekToProgramTime(programTime, callback, pauseAfterSeek = true, retryCount = 2) {\n return seekToProgramTime({\n programTime,\n playlist: this.playlistController_.media(),\n retryCount,\n pauseAfterSeek,\n seekTo: this.options_.seekTo,\n tech: this.options_.tech,\n callback\n });\n }\n /**\n * Adds the onRequest, onResponse, offRequest and offResponse functions\n * to the VhsHandler xhr Object.\n */\n\n setupXhrHooks_() {\n /**\n * A player function for setting an onRequest hook\n *\n * @param {function} callback for request modifiction\n */\n this.xhr.onRequest = callback => {\n addOnRequestHook(this.xhr, callback);\n };\n /**\n * A player function for setting an onResponse hook\n *\n * @param {callback} callback for response data retrieval\n */\n\n this.xhr.onResponse = callback => {\n addOnResponseHook(this.xhr, callback);\n };\n /**\n * Deletes a player onRequest callback if it exists\n *\n * @param {function} callback to delete from the player set\n */\n\n this.xhr.offRequest = callback => {\n removeOnRequestHook(this.xhr, callback);\n };\n /**\n * Deletes a player onResponse callback if it exists\n *\n * @param {function} callback to delete from the player set\n */\n\n this.xhr.offResponse = callback => {\n removeOnResponseHook(this.xhr, callback);\n }; // Trigger an event on the player to notify the user that vhs is ready to set xhr hooks.\n // This allows hooks to be set before the source is set to vhs when handleSource is called.\n\n this.player_.trigger('xhr-hooks-ready');\n }\n attachStreamingEventListeners_() {\n const playlistControllerEvents = ['seekablerangeschanged', 'bufferedrangeschanged', 'contentsteeringloadstart', 'contentsteeringloadcomplete', 'contentsteeringparsed'];\n const playbackWatcher = ['gapjumped', 'playedrangeschanged']; // re-emit streaming events and payloads on the player.\n\n playlistControllerEvents.forEach(eventName => {\n this.playlistController_.on(eventName, metadata => {\n this.player_.trigger(_extends({}, metadata));\n });\n });\n playbackWatcher.forEach(eventName => {\n this.playbackWatcher_.on(eventName, metadata => {\n this.player_.trigger(_extends({}, metadata));\n });\n });\n }\n}\n/**\n * The Source Handler object, which informs video.js what additional\n * MIME types are supported and sets up playback. It is registered\n * automatically to the appropriate tech based on the capabilities of\n * the browser it is running in. It is not necessary to use or modify\n * this object in normal usage.\n */\n\nconst VhsSourceHandler = {\n name: 'videojs-http-streaming',\n VERSION: version$4,\n canHandleSource(srcObj, options = {}) {\n const localOptions = merge(videojs.options, options); // If not opting to experimentalUseMMS, and playback is only supported with MediaSource, cannot handle source\n\n if (!localOptions.vhs.experimentalUseMMS && !browserSupportsCodec('avc1.4d400d,mp4a.40.2', false)) {\n return false;\n }\n return VhsSourceHandler.canPlayType(srcObj.type, localOptions);\n },\n handleSource(source, tech, options = {}) {\n const localOptions = merge(videojs.options, options);\n tech.vhs = new VhsHandler(source, tech, localOptions);\n tech.vhs.xhr = xhrFactory();\n tech.vhs.setupXhrHooks_();\n tech.vhs.src(source.src, source.type);\n return tech.vhs;\n },\n canPlayType(type, options) {\n const simpleType = simpleTypeFromSourceType(type);\n if (!simpleType) {\n return '';\n }\n const overrideNative = VhsSourceHandler.getOverrideNative(options);\n const supportsTypeNatively = Vhs.supportsTypeNatively(simpleType);\n const canUseMsePlayback = !supportsTypeNatively || overrideNative;\n return canUseMsePlayback ? 'maybe' : '';\n },\n getOverrideNative(options = {}) {\n const {\n vhs = {}\n } = options;\n const defaultOverrideNative = !(videojs.browser.IS_ANY_SAFARI || videojs.browser.IS_IOS);\n const {\n overrideNative = defaultOverrideNative\n } = vhs;\n return overrideNative;\n }\n};\n/**\n * Check to see if either the native MediaSource or ManagedMediaSource\n * objectx exist and support an MP4 container with both H.264 video\n * and AAC-LC audio.\n *\n * @return {boolean} if native media sources are supported\n */\n\nconst supportsNativeMediaSources = () => {\n return browserSupportsCodec('avc1.4d400d,mp4a.40.2', true);\n}; // register source handlers with the appropriate techs\n\nif (supportsNativeMediaSources()) {\n videojs.getTech('Html5').registerSourceHandler(VhsSourceHandler, 0);\n}\nvideojs.VhsHandler = VhsHandler;\nvideojs.VhsSourceHandler = VhsSourceHandler;\nvideojs.Vhs = Vhs;\nif (!videojs.use) {\n videojs.registerComponent('Vhs', Vhs);\n}\nvideojs.options.vhs = videojs.options.vhs || {};\nif (!videojs.getPlugin || !videojs.getPlugin('reloadSourceOnError')) {\n videojs.registerPlugin('reloadSourceOnError', reloadSourceOnError);\n}\n\nexport { videojs as default };\n"],"names":["d","b","p","__","s","i","n","e","t","thisArg","_arguments","P","generator","adopt","value","resolve","reject","fulfilled","step","rejected","result","body","_","f","y","g","verb","v","op","il","r","k","a","j","jl","chars","lookup","bytes","base64","len","decodeFromBase64","bufferLength","encoded1","encoded2","encoded3","encoded4","dataUri","trimmedUri","prefix","res","fullMatch","data","character","num","minLength","padStart","code","hex","length","padChar","padding","idx","str","buffer","offset","text","index","cuFirst","cuSecond","nextIndex","_a","c","cLen","wordBreaks","newlineCharUnion","escapedRules","wordBreak","breakRules","maxWidth","computeWidthOfText","regex","words","currLine","currWidth","lines","pushCurrLine","word","width","parseDate","dateStr","match","year","month","_b","day","_c","hours","_d","mins","_e","secs","_f","offsetSign","_g","offsetHours","_h","offsetMins","tzOffset","date","position","lastMatch","array","typedArray","arrays","_i","arrayCount","typedArrays","element","totalSize","merged","arrIdx","arr","byteIdx","arrLen","mergedBuffer","indexer","uniq","curr","prev","arrayLen","leftIdx","rightIdx","temp","total","range","start","end","indices","plucked","input","byteOrderMark","encoded","codePoint","ByteOrder","byteOrder","codePoints","first","second","numStr","negative","msg","TYPED_OK","_has","obj","key","exports","sources","source","buf","size","fnTyped","dest","src","src_offs","dest_offs","chunks","pos","chunk","fnUntyped","on","utils","require$$0","Z_FIXED","Z_UNKNOWN","zero","MIN_MATCH","MAX_MATCH","LENGTH_CODES","LITERALS","L_CODES","D_CODES","BL_CODES","HEAP_SIZE","MAX_BITS","static_tree","extra_bits","extra_base","elems","max_length","dyn_tree","stat_desc","dist","w","tree","desc","max_code","stree","has_stree","extra","base","m","bits","xbits","overflow","bl_count","next_code","header","depth","_n2","_m2","ltree","dtree","lc","lx","node","prevlen","curlen","nextlen","count","max_count","min_count","max_blindex","lcodes","dcodes","blcodes","rank","black_mask","stored_len","last","opt_lenb","static_lenb","trees","adler32","adler","s1","s2","table","crc32","crc","require$$1","require$$2","require$$3","require$$4","Z_NO_FLUSH","Z_FINISH","Z_BLOCK","Z_OK","Z_STREAM_END","Z_STREAM_ERROR","Z_DATA_ERROR","Z_BUF_ERROR","Z_DEFAULT_COMPRESSION","Z_DEFAULT_STRATEGY","Z_DEFLATED","MAX_WBITS","strm","errorCode","cur_match","chain_length","scan","best_len","nice_match","limit","_win","wmask","strend","scan_end1","scan_end","_w_size","more","flush","max_block_size","max_start","hash_head","bflush","max_insert","Config","good_length","max_lazy","nice_length","max_chain","func","ret","head","level","method","windowBits","memLevel","strategy","wrap","deflate","old_flush","beg","val","level_flags","bstate","status","dictionary","dictLength","avail","next","tmpDict","deflate_1","strings","c2","m_pos","str_len","buf_len","max","out","c_len","utf16buf","ZStream","toString","options","opt","dict","mode","chunkSize","_mode","deflator","BAD","TYPE","state","_in","_out","dmax","wsize","whave","wnext","s_window","hold","lcode","dcode","lmask","dmask","here","from","from_source","output","top","dolen","dodist","ENOUGH_LENS","ENOUGH_DISTS","CODES","LENS","DISTS","type","lens","lens_index","codes","table_index","work","opts","sym","min","root","drop","left","used","huff","incr","fill","low","mask","base_index","offs","extra_index","here_bits","here_op","here_val","q","copy","inflate","put","have","last_bits","last_op","last_val","hbuf","order","inf_leave","dictid","inflate_1","constants","GZheader","require$$5","require$$6","next_out_utf8","tail","utf8str","allowBufError","inflator","assign","compressedJson","pako","FontNames","Font","_this","glyphName","leftGlyphName","rightGlyphName","fontName","cachedFont","json","font","acc","metric","name1","name2","Encoding","name","unicodeMappings","mapped","hexCode","values","valueName","allowedValues","joinedValues","objectValues","types","allowedTypes","joinedTypes","multiplier","Cache","populate","_super","MethodNotImplementedError","className","methodName","PrivateConstructorError","UnexpectedObjectTypeError","expected","actual","expectedTypes","UnsupportedEncodingError","encoding","ReparseError","MissingCatalogError","ref","MissingPageContentsEmbeddingError","UnrecognizedStreamTypeError","stream","streamType","PageEmbeddingMismatchedContextError","PDFArrayIsNotRectangleError","InvalidPDFDateStringError","InvalidTargetIndexError","targetIndex","Count","CorruptPageTreeError","operation","IndexOutOfBoundsError","InvalidAcroFieldValueError","MultiSelectValueError","MissingDAEntryError","fieldName","MissingTfOperatorError","NumberParsingError","PDFParsingError","details","NextByteAssertionError","expectedByte","actualByte","PDFObjectParsingError","byte","PDFInvalidObjectParsingError","PDFStreamParsingError","UnbalancedParenthesisError","StalledParserError","MissingPDFHeaderError","MissingKeywordError","keyword","CharCodes","PDFHeader","major","minor","bc","initialOffset","PDFObject","_context","_buffer","_offset","PDFNumber","PDFArray","context","object","lowerLeftX","lowerLeftY","upperRightX","upperRightY","x","height","clone","arrayString","el","factor","ENFORCER","PDFBool","enforcer","charCode","pool","PDFName","encodedName","escaped","pushByte","char","nextChar","decodedValue","instance","PDFNull","PDFDict","map","preservePDFNull","tag","existingKeys","entries","dictString","PDFStream","contentsSize","streamString","contents","PDFRawStream","PDFRef","objectNumber","generationNumber","PDFOperator","args","arg","PDFOperatorNames","PDFFlateStream","encode","unencodedContents","PDFContentStream","operators","SimpleRNG","seed","PDFContext","pdfObject","literal","keys","suffixLength","PDFPageLeaf","autoNormalizeCTM","dictOrRef","arrayOrRef","numberOrRef","attribute","parentRef","contentStreamRef","Contents","startStream","endStream","annotRef","Annots","fontDictRef","xObjectRef","XObject","extGStateRef","ExtGState","visitor","Parent","contentsRef","Resources","parent","PDFObjectCopier","originalPage","clonedPage","InheritableEntries","originalDict","clonedDict","originalArray","clonedArray","originalStream","clonedStream","alreadyMapped","newRef","dereferencedValue","cloned","PDFCrossRefSection","firstEntry","nextFreeObjectNumber","section","rangeIdx","rangeLen","entryIdx","entryLen","entry","subsection","subsectionLength","subsections","firstObjectNumber","rangeLength","entryOffset","entryGen","currEntry","prevEntry","PDFTrailer","lastXRefOffset","PDFTrailerDict","PDFObjectStream","objects","offsetsString","offsets","PDFWriter","objectsPerTick","indirectObjects","xref","trailerDict","trailer","refSize","objectSize","indirectObject","xrefOffset","PDFInvalidObject","EntryType","PDFCrossRefStream","entryTuples","objectStreamRef","widths","third","firstSize","secondSize","thirdSize","byteWidths","entriesLen","firstBytes","secondBytes","thirdBytes","entryWidth","PDFStreamWriter","encodeStreams","objectsPerStream","xrefStream","uncompressedObjects","compressedObjects","objectStreamRefs","shouldNotCompress","objectStream","xrefStreamRef","PDFHexString","hexLength","hexOffset","bytesOffset","StandardFontEmbedder","customName","glyphs","hexCodes","totalWidth","right","kernAmount","scale","descender","Ascender","Descender","FontBBox","yTop","yBottom","fontDict","glyphId","bfChars","glyph","id","unicode","hs","ls","flags","flipBit","bit","familyClass","PDFString","octal","CustomFontEmbedder","fontData","fontFeatures","fontkit","ascent","descent","bbox","cidFontDictRef","unicodeCMapRef","fontDescriptorRef","cidFontDict","fontStreamRef","italicAngle","capHeight","xHeight","minX","minY","maxX","maxY","fontDescriptor","fontStream","cmap","cmapStream","currSection","currGlyph","prevGlyph","currGlyphId","prevGlyphId","CustomFontSubsetEmbedder","customFontName","subsetGlyphId","parts","err","AFRelationship","FileEmbedder","fileData","fileName","mimeType","description","creationDate","modificationDate","afRelationship","embeddedFileStream","embeddedFileStreamRef","fileSpecDict","ColorSpace","JpegEmbedder","imageData","bitsPerComponent","colorSpace","dataView","soi","marker","channelByte","channelName","xObject","h","frms","img","empty","frm","fx","fy","fw","fh","fdata","area","bpp","bpl","bf","bf32","ctype","rs","qarea","ts","ti","tr","tg","tb","qi","ap","tl","s0","t0","cj","di","gr","off","to","al","buff","bin","rUs","rUi","dd","doff","fd","foff","mgck","fr","rct","del","nz","keyw","pl","H","N","W","R","J","Q","X","u","C","V","A","l","M","I","Z","D","K","S","T","z","$","Y","cbpp","starting_row","starting_col","row_increment","col_increment","pass","ri","ci","sw","sh","cr","cc","bpll","row","col","cdi","ii","noc","paeth","pa","pb","pc","ns","sb","tw","th","xoff","yoff","si","fa","fg","fb","ba","br","bg","bb","ifa","oa","ioa","bufs","ps","dels","tabs","forbidPlte","nimg","ac","bipp","bipl","wUi","wUs","wAs","anim","pltAlpha","leng","dl","wr","fi","imgd","ioff","filter","levelZero","nh","prms","onlyBlend","evenCrd","forbidPrev","minBits","alphaAnd","ilen","gotAlpha","plte","inds","nbufs","abuf","qres","cof","bln","img32","nw","ind","cmc","cimg","inj","alwaysBlend","cimg32","nx","ny","blend","tlim","tstp","tarea","it","pimg","p32","mix","miy","may","sarea","r0","r1","miX","miY","maX","maY","U8","U32","pimg32","cx","cy","rec","fls","ftry","CMPR","tsize","tab","o","oimg","nimg32","KD","leafs","nd","maxL","mi","s0wrong","ln","rn","planeDst","node0","node1","est","d0","d1","d2","d3","i0","i1","eMq","vecDot","stats","m0","m1","m2","m3","iN","Rj","tmi","eMq255","tlen","noff","rgbaChannel","pixelCount","rgbChannel","alphaChannel","rgbaOffset","rgbOffset","alphaOffset","PngType","PNG","pngData","upng","frames","frame","hasAlphaValues","PngEmbedder","png","SMask","Stream","b0","b1","b2","b3","forceClamped","strEnd","subarray","peekedByte","DecodeStream","maybeMinBufferLength","bufEnd","requested","buffer2","ch","Ascii85Stream","maybeLength","TILDA_CHAR","Z_LOWER_CHAR","EOF","AsciiHexStream","UPSTREAM_BLOCK_SIZE","maxDecodeLength","firstDigit","digit","FlateStream","cmf","flg","hdr","blockLen","check","litCodeTable","distCodeTable","numLitCodes","numDistCodes","numCodeLenCodes","codeLenCodeLengths","codeLenCodeTab","codeLengths","bitsLength","bitsOffset","what","repeatLength","code1","code2","codeSize","codeBuf","maxLen","codeLen","codeVal","lengths","skip","LZWStream","earlyChange","maxLzwDictionarySize","lzwState","blockSize","estimatedDecodedSize","decodedSizeDelta","nextCode","dictionaryValues","dictionaryLengths","dictionaryPrevCodes","codeLength","prevCode","currentSequence","currentSequenceLength","decodedLength","currentBufferLength","hasPrev","bitsCached","cachedData","RunLengthStream","repeatHeader","params","EarlyChange","Filter","DecodeParms","page","mediaBox","PDFPageEmbedder","boundingBox","transformationMatrix","decodedContents","bottom","newline","content","rawValue","enumType","NonFullScreenPageMode","ReadingDirection","PrintScaling","Duplex","ViewerPreferences","returnObj","PrintPageRange","NumCopies","direction","scaling","duplex","rng","pageRanges","hideToolbar","HideToolbar","hideMenubar","HideMenubar","hideWindowUI","HideWindowUI","fitWindow","FitWindow","centerWindow","CenterWindow","displayTitle","DisplayDocTitle","nonFullScreenPageMode","readingDirection","printScaling","dup","pickTrayByPDFSize","PickTrayByPDFSize","printPageRange","flatRange","numCopies","tfRegex","PDFAcroField","valueOrRef","da","kids","parent_1","partialName","appearance","DA","fontSize","daMatch","daStart","daEnd","modifiedDa","flag","enable","BorderStyle","PDFAnnotation","Rect","rect","AS","appearances","AP","AppearanceCharacteristics","BC","BG","CA","RC","AC","components","component","rotation","color","captions","PDFWidgetAnnotation","MK","BS","bs","normal","PDFAcroTerminal","nameOrRef","kidDicts","widgets","Kids","PDFAcroButton","exportValues","Opt","widget","exportVal","useExistingOptIdx","optText","existingIdx","optIdx","apStateValue","PDFAcroCheckBox","onValue","bitIndex","AcroFieldFlags","AcroButtonFlags","AcroTextFlags","AcroChoiceFlags","PDFAcroChoice","_loop_1","state_1","_loop_2","newOpt","display","item","PDFAcroComboBox","PDFAcroNonTerminal","field","PDFAcroSignature","PDFAcroText","maxLength","quadding","PDFAcroPushButton","PDFAcroRadioButton","onValues","PDFAcroListBox","isNonTerminal","kid","kidIsField","ftNameOrRef","ffNumberOrRef","ffNumber","startNode","PDFAcroForm","fields","Fields","allFields","pushFields","fieldModel","PDFCatalog","acroForm","acroFormRef","viewerPrefs","viewerPrefsRef","leafRef","pagesRef","maybeParentRef","pages","PDFPageTree","treeRef","leafsRemainingUntilTarget","kidRef","prune","kidIdx","newCount","Newline","CarriageReturn","BaseParser","capNumbers","numberValue","ByteStream","steps","rawStream","PDFObjectParser","byteStream","firstNum","lookaheadStart","secondNum","nestingLvl","isEscaped","pdfArray","Type","startPos","Length","PDFObjectStreamParser","shouldWaitForTick","offsetsAndObjectNumbers","PDFXRefStreamParser","Size","Index","length_1","typeFieldWidth","offsetFieldWidth","genFieldWidth","subsectionIdx","subsectionLen","length_2","objIdx","PDFParser","pdfBytes","throwOnInvalidObject","prevOffset","isValidCatalog","catalog","failed","firstInt","secondInt","isAlphaNumeric","AnnotationFlags","RotationTypes","degreeAngle","degree","radian","quadrants","dims","rectangle","borderWidth","xPos","yPos","angle","xSkewAngle","ySkewAngle","dashArray","dashPhase","LineCapStyle","style","LineJoinStyle","x1","y1","x2","y2","x3","y3","lineHeight","TextRenderingMode","rotationAngle","gray","red","green","blue","cyan","magenta","yellow","ColorTypes","comps","parse","path","cmd","curArg","foundDecimal","path_1","commands","cmds","coords","rx","ry","rot","large","sweep","ex","ey","segs","segs_1","seg","bez","rotateX","ox","oy","sinTh","cosTh","a00","a01","a10","a11","x0","y0","sfactorSq","sfactor","xc","yc","th0","th1","thArc","segments","th2","th3","cx1","cy1","thHalf","config","xScale","yScale","xe","ye","xm","ym","centerX","centerY","p2x","p2y","p3y","p3x","p1x","p1y","outline","checkMarkSize","checkMark","outlineScale","dot","background","clipX","clipY","clipWidth","clipHeight","clippingArea","markedContent","highlights","line","EncryptedPDFError","FontkitNotRegisteredError","ForeignPageError","RemovePageFromEmptyDocumentError","NoSuchFieldError","UnexpectedFieldTypeError","expectedType","actualType","MissingOnValueCheckError","FieldAlreadyExistsError","InvalidFieldNamePartError","namePart","FieldExistsAsNonTerminalError","RichTextFieldReadError","CombedTextLayoutError","lineLength","cellCount","ExceededMaxLengthError","textLength","InvalidMaxLengthError","TextAlignment","bounds","multiline","linesUsed","lineIdx","lineLen","spaceInLineRemaining","isLastWord","widthOfWord","totalHeight","cellWidth","cellHeight","tooLong","lastWhitespaceIdx","remainder","alignment","textLines","prevRemainder","cells","cellOffset","charOffset","charLength","cellCenter","defaultFontSize","c1","c3","c4","checkBox","widgetColor","fieldColor","rotate","black","borderColor","normalBackgroundColor","downBackgroundColor","textColor","radioGroup","button","widgetFontSize","fieldFontSize","normalText","downText","normalLayout","downLayout","textField","layout","dropdown","optionList","selected","selectedLines","PDFEmbeddedPage","doc","embedder","PDFFont","PDFImage","imgWidthScale","imgHeightScale","ImageAlignment","PDFField","acroField","_font","backgroundColor","degreesAngle","caption","hidden","pageRef","newDa","rollover","down","streamRef","image","adj","imageDims","imageName","onStreamRef","offStreamRef","appearanceDict","PDFCheckBox","acroCheckBox","widgetRef","provider","apProvider","PDFDropdown","acroComboBox","rawOptions","optionObjects","optionsArr","existingOptions","newOptions","merge","validOptions","hasCustomOption","option","existingValues","hasAppearances","PDFOptionList","acroListBox","PDFRadioGroup","acroRadioButton","exportOptions","onOptions","_j","PDFSignature","acroSignature","PDFTextField","acroText","fieldAlignment","StandardFonts","PDFForm","nameParts","comboBox","listBox","radioButton","lenFields","lenWidgets","xObjectKey","fieldKids","kidsCount","childIndex","child","fieldRef","refOrDict","name_1","partialNames","nonTerminal","nodeRef","fullyQualifiedName","ParseSpeeds","PDFEmbeddedFile","Names","EmbeddedFiles","EFNames","AF","PDFJavaScript","Javascript","JSNames","JavaScriptEmbedder","script","scriptName","jsActionDict","PDFDocument","ignoreEncryption","updateMetadata","pdf","parseSpeed","pageTree","pageTreeRef","form","title","author","subject","keywords","creator","producer","prefs","language","pageCount","srcDoc","copier","srcPages","copiedPages","srcPage","copiedPage","pdfCopy","contentPages","javaScript","attachment","embeddedFile","subset","features","pdfFont","jpg","pdfImage","embeddedPage","boundingBoxes","transformationMatrices","currPage","nextPage","maybeCopyPage","embeddedPages","box","matrix","useObjectStreams","addDefaultPage","updateFieldAppearances","Writer","otherOptions","annotations","embeddables","pdfLib","now","info","existingInfo","newInfo","BlendMode","PDFPage","leafNode","Rotate","cropBox","bleedBox","trimBox","artBox","hasCropBox","hasBleedBox","hasTrimBox","hasArtBox","startRef","endRef","annots","annot","fontColor","yDecrease","yIncrease","xDecrease","xIncrease","operator","contentStream","oldFont","newFont","newFontKey","textWidth","encodedLines","graphicsStateKey","_k","_l","_m","_o","oldFontKey","useExisting","opacity","borderOpacity","blendMode","graphicsState","selectors","list","inkLists","dummyRef","pageLeaf","PDFButton","acroPushButton","factory","module","this","modules","installedModules","__w_pdfjs_require__","moduleId","getter","property","_worker","_regenerator","_interopRequireDefault","_util","_primitives","_pdf_manager","_is_node","_message_handler","_worker_stream","_core_utils","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","minLen","_arrayLikeToArray","arr2","_arr","_n","_s","asyncGeneratorStep","gen","_next","_throw","error","_asyncToGenerator","fn","self","WorkerTask","WorkerMessageHandler","handler","port","testMessageProcessed","supportTransfers","docParams","pdfManager","terminated","cancelXHRs","WorkerTasks","verbosity","apiVersion","workerVersion","enumerableProperties","docId","docBaseUrl","workerHandlerName","ensureNotTerminated","startWorkerTask","task","finishWorkerTask","loadDocument","_x","_loadDocument","_callee","recoveryMode","_yield$Promise$all","_yield$Promise$all2","numPages","fingerprint","getPdfManager","evaluatorOptions","pdfManagerCapability","newPdfManager","pdfStream","cachedChunks","fullRequest","disableAutoFetch","reason","loaded","flushChunks","pdfFile","readPromise","readChunk","_ref","done","setupDoc","onSuccess","onFailure","_ref2","password","pdfManagerReady","_ref3","_ref4","userUnit","view","_ref5","pageIndex","intent","sink","operatorListInfo","desiredSize","waitOn","cleanupPromise","isMessagePort","maybePort","_typeof","runtime","Op","hasOwn","undefined","$Symbol","iteratorSymbol","asyncIteratorSymbol","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","Generator","Context","makeInvokeMethod","tryCatch","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","prototype","genFun","ctor","AsyncIterator","PromiseImpl","invoke","record","unwrapped","previousPromise","enqueue","callInvokeWithMethodAndArg","iter","doneResult","delegate","delegateResult","maybeInvokeDelegate","pushTryEntry","locs","resetTryEntry","iterable","iteratorMethod","skipTempReset","rootEntry","rootRecord","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","afterLoc","finallyLoc","tryLoc","thrown","resultName","nextLoc","accidentalStrictMode","arrayByteLength","arraysToBytes","assert","bytesToString","createPromiseCapability","getVerbosityLevel","isArrayBuffer","isArrayEqual","isBool","isEmptyObj","isNum","isString","isSameOrigin","createValidAbsoluteUrl","removeNullCharacters","setVerbosityLevel","shadow","string32","stringToBytes","stringToPDFString","stringToUTF8String","utf8StringToString","warn","unreachable","_defineProperties","target","props","descriptor","_createClass","Constructor","protoProps","staticProps","_classCallCheck","_inherits","subClass","superClass","_setPrototypeOf","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","_possibleConstructorReturn","call","_assertThisInitialized","IDENTITY_MATRIX","FONT_IDENTITY_MATRIX","PermissionFlag","ImageKind","AnnotationType","AnnotationStateModelType","AnnotationMarkedState","AnnotationReviewState","AnnotationReplyType","AnnotationFlag","AnnotationFieldFlag","AnnotationBorderStyleType","StreamType","FontType","VerbosityLevel","CMapCompressionType","OPS","UNSUPPORTED_FEATURES","PasswordResponses","cond","baseUrl","otherUrl","other","_isValidProtocol","url","absoluteUrl","prop","BaseException","message","PasswordException","_BaseException","UnknownErrorException","_BaseException2","_super2","_this2","InvalidPDFException","_BaseException3","_super3","MissingPDFException","_BaseException4","_super4","UnexpectedResponseException","_BaseException5","_super5","_this3","FormatError","_BaseException6","_super6","AbortException","_BaseException7","_super7","NullCharactersRegExp","MAX_ARGUMENT_COUNT","strBuf","chunkEnd","resultLength","itemLength","isLittleEndian","buffer8","view32","IsLittleEndianCached","isEvalSupported","IsEvalSupportedCached","rgbBuf","Util","xt","yt","p1","p2","p3","p4","transpose","sx","sy","rect1","rect2","compare","orderedX","orderedY","PDFStringTranslateTable","_i2","_i3","arr1","capability","isSettled","createObjectURL","digits","contentType","forceDataSchema","blob","d4","hasDOM","userAgent","isIE","div","OriginalDOMTokenListAdd","OriginalDOMTokenListRemove","_len","tokens","_key","_tokens","token","_len2","_key2","_tokens2","force","OriginalPushState","OriginalReplaceState","isReadableStreamSupported","controller","isNodeJS","global","getOwnPropertyDescriptor","createNonEnumerableProperty","redefine","setGlobal","copyConstructorProperties","isForced","TARGET","GLOBAL","STATIC","FORCED","targetProperty","sourceProperty","DESCRIPTORS","propertyIsEnumerableModule","createPropertyDescriptor","toIndexedObject","toPrimitive","has","IE8_DOM_DEFINE","nativeGetOwnPropertyDescriptor","O","fails","exec","nativePropertyIsEnumerable","NASHORN_BUG","bitmap","IndexedObject","requireObjectCoercible","classof","split","isObject","PREFERRED_STRING","hasOwnProperty","createElement","document","EXISTS","definePropertyModule","anObject","nativeDefineProperty","Attributes","inspectSource","InternalStateModule","getInternalState","enforceInternalState","TEMPLATE","unsafe","simple","noTargetGet","store","functionToString","SHARED","NATIVE_WEAK_MAP","objectHas","sharedKey","hiddenKeys","WeakMap","set","get","enforce","getterFor","wmget","wmhas","wmset","metadata","STATE","shared","uid","IS_PURE","postfix","ownKeys","getOwnPropertyDescriptorModule","defineProperty","getBuiltIn","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","getOwnPropertySymbols","aFunction","variable","namespace","internalObjectKeys","enumBugKeys","indexOf","names","toLength","toAbsoluteIndex","createMethod","IS_INCLUDES","$this","fromIndex","toInteger","argument","ceil","floor","integer","replacement","feature","detection","normalize","POLYFILL","NATIVE","string","entryUnbind","notARegExp","correctIsRegExpLogic","nativeStartsWith","CORRECT_IS_REGEXP_LOGIC","MDN_POLYFILL_BUG","searchString","that","search","isRegExp","wellKnownSymbol","MATCH","NATIVE_SYMBOL","USE_SYMBOL_AS_UID","WellKnownSymbolsStore","Symbol","createWellKnownSymbol","METHOD_NAME","regexp","bind","CONSTRUCTOR","METHOD","nativeEndsWith","endPosition","$includes","addToUnscopables","arrayMethodUsesToLength","USES_TO_LENGTH","create","UNSCOPABLES","ArrayPrototype","defineProperties","html","documentCreateElement","GT","LT","PROTOTYPE","SCRIPT","IE_PROTO","EmptyConstructor","scriptTag","NullProtoObjectViaActiveX","activeXDocument","NullProtoObjectViaIFrame","iframe","JS","iframeDocument","NullProtoObject","Properties","objectKeys","cache","thrower","ACCESSORS","argument0","argument1","charAt","defineIterator","STRING_ITERATOR","setInternalState","iterated","point","CONVERT_TO_STRING","createIteratorConstructor","getPrototypeOf","setPrototypeOf","setToStringTag","Iterators","IteratorsCore","BUGGY_SAFARI_ITERATORS","ITERATOR","KEYS","VALUES","ENTRIES","returnThis","Iterable","NAME","IteratorConstructor","DEFAULT","IS_SET","getIterationMethod","KIND","defaultIterator","IterablePrototype","TO_STRING_TAG","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","CurrentIteratorPrototype","methods","KEY","PrototypeOfArrayIteratorPrototype","arrayIterator","toObject","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","F","TAG","aPossiblePrototype","CORRECT_SETTER","test","setter","proto","checkCorrectnessOfIteration","INCORRECT_ITERATION","callWithSafeIterationClosing","isArrayIteratorMethod","createProperty","getIteratorMethod","arrayLike","argumentsLength","mapfn","mapping","iterator","returnMethod","propertyKey","TO_STRING_TAG_SUPPORT","classofRaw","CORRECT_ARGUMENTS","tryGet","SAFE_CLOSING","called","iteratorWithReturn","SKIP_CLOSING","ITERATION_SUPPORT","nativeAssign","B","symbol","alphabet","chr","propertyIsEnumerable","log","LN2","number","isInteger","ArrayBufferViewCore","speciesConstructor","aTypedArray","aTypedArrayConstructor","exportTypedArrayMethod","$slice","NATIVE_ARRAY_BUFFER","Int8Array","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","isPrototypeOf","TYPED_ARRAY_TAG","NATIVE_ARRAY_BUFFER_VIEWS","TYPED_ARRAY_TAG_REQIRED","TypedArrayConstructorsList","isView","klass","isTypedArray","ARRAY","TypedArrayConstructor","forced","exportTypedArrayStaticMethod","SPECIES","defaultConstructor","DOMIterables","ArrayIteratorMethods","ArrayValues","COLLECTION_NAME","Collection","CollectionPrototype","ARRAY_ITERATOR","kind","NativePromise","redefineAll","setSpecies","anInstance","iterate","microtask","promiseResolve","hostReportErrors","newPromiseCapabilityModule","perform","V8_VERSION","PROMISE","getInternalPromiseState","PromiseConstructor","TypeError","process","$fetch","newPromiseCapability","newGenericPromiseCapability","IS_NODE","DISPATCH_EVENT","UNHANDLED_REJECTION","REJECTION_HANDLED","PENDING","FULFILLED","REJECTED","HANDLED","UNHANDLED","Internal","OwnPromiseCapability","PromiseWrapper","nativeThen","GLOBAL_CORE_JS_PROMISE","promise","FakePromise","constructor","isThenable","then","notify","isReject","chain","ok","reaction","domain","exited","onHandleUnhandled","onUnhandled","dispatchEvent","event","IS_UNHANDLED","isUnhandled","unwrap","internalReject","internalResolve","wrapper","executor","onFulfilled","onRejected","$promiseResolve","counter","remaining","alreadyCalled","CONSTRUCTOR_NAME","Result","stopped","AS_ENTRIES","IS_ITERATOR","boundFunction","iterFn","IS_IOS","location","clear","MessageChannel","Dispatch","queue","ONREADYSTATECHANGE","defer","channel","run","runner","listener","post","macrotask","MutationObserver","Promise","queueMicrotaskDescriptor","queueMicrotask","toggle","promiseCapability","PromiseCapability","$$resolve","$$reject","console","versions","v8","version","NON_GENERIC","onFinally","isFunction","USE_NATIVE_URL","arrayFrom","codeAt","toASCII","URLSearchParamsModule","NativeURL","URLSearchParams","getInternalSearchParamsState","getInternalURLState","pow","INVALID_AUTHORITY","INVALID_SCHEME","INVALID_HOST","INVALID_PORT","ALPHA","ALPHANUMERIC","DIGIT","HEX_START","OCT","DEC","HEX","FORBIDDEN_HOST_CODE_POINT","FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT","LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE","TAB_AND_NEW_LINE","parseHost","parseIPv6","isSpecial","parseIPv4","percentEncode","C0ControlPercentEncodeSet","partsLength","numbers","part","radix","ipv4","address","pieceIndex","compress","pointer","numbersSeen","ipv4Piece","swaps","swap","findLongestZeroSequence","ipv6","maxIndex","currStart","currLength","serializeHost","host","ignore0","fragmentPercentEncodeSet","pathPercentEncodeSet","userinfoPercentEncodeSet","specialSchemes","includesCredentials","cannotHaveUsernamePasswordPort","isWindowsDriveLetter","normalized","startsWithWindowsDriveLetter","shortenURLsPath","pathSize","isSingleDot","segment","isDoubleDot","SCHEME_START","SCHEME","NO_SCHEME","SPECIAL_RELATIVE_OR_AUTHORITY","PATH_OR_AUTHORITY","RELATIVE","RELATIVE_SLASH","SPECIAL_AUTHORITY_SLASHES","SPECIAL_AUTHORITY_IGNORE_SLASHES","AUTHORITY","HOST","HOSTNAME","PORT","FILE","FILE_SLASH","FILE_HOST","PATH_START","PATH","CANNOT_BE_A_BASE_URL_PATH","QUERY","FRAGMENT","parseURL","stateOverride","seenAt","seenBracket","seenPasswordToken","bufferCodePoints","failure","encodedCodePoints","URLConstructor","urlString","baseState","searchParams","searchParamsState","serializeURL","getOrigin","getProtocol","getUsername","getPassword","getHost","getHostname","getPort","getPathname","getSearch","getSearchParams","getHash","URLPrototype","scheme","username","query","fragment","accessorDescriptor","href","protocol","hostname","pathname","hash","nativeCreateObjectURL","nativeRevokeObjectURL","maxInt","tMin","tMax","skew","damp","initialBias","initialN","delimiter","regexNonASCII","regexSeparators","OVERFLOW_ERROR","baseMinusTMin","stringFromCharCode","ucs2decode","digitToBasic","adapt","delta","numPoints","firstTime","inputLength","bias","currentValue","basicLength","handledCPCount","handledCPCountPlusOne","qMinusT","baseMinusT","labels","label","getIterator","Headers","URL_SEARCH_PARAMS","URL_SEARCH_PARAMS_ITERATOR","getInternalParamsState","getInternalIteratorState","plus","sequences","percentSequence","percentDecode","sequence","deserialize","find","replace","replacer","serialize","parseSearchParams","attributes","updateSearchParams","validateArgumentsLength","passed","required","URLSearchParamsIterator","URLSearchParamsConstructor","init","entryIterator","entryNext","URLSearchParamsPrototype","found","slice","entriesIndex","sliceIndex","callback","headers","SymbolPolyfill","noop","NumberIsNaN","rethrowAssertionErrorRejection","typeIsObject","createArrayFromList","elements","ArrayBufferCopy","destOffset","srcOffset","IsFiniteNonNegativeNumber","IsNonNegativeNumber","Call","CreateAlgorithmFromUnderlyingMethod","underlyingObject","algoArgCount","extraArgs","PromiseCall","fullArgs","promiseResolvedWith","InvokeOrNoop","promiseRejectedWith","TransferArrayBuffer","IsDetachedBuffer","ValidateAndNormalizeHighWaterMark","highWaterMark","MakeSizeAlgorithmFromSizeFunction","originalPromise","originalPromiseThen","originalPromiseResolve","originalPromiseReject","newPromise","PerformPromiseThen","uponPromise","uponFulfillment","uponRejection","transformPromiseWith","fulfillmentHandler","rejectionHandler","setPromiseIsHandledToTrue","QUEUE_MAX_ARRAY_SIZE","SimpleQueue","oldBack","newBack","oldFront","newFront","oldCursor","newCursor","front","cursor","ReadableStreamCreateReadResult","forAuthorCode","ReadableStreamReaderGenericInitialize","reader","defaultReaderClosedPromiseInitialize","defaultReaderClosedPromiseInitializeAsResolved","defaultReaderClosedPromiseInitializeAsRejected","ReadableStreamReaderGenericCancel","ReadableStreamCancel","ReadableStreamReaderGenericRelease","defaultReaderClosedPromiseReject","defaultReaderClosedPromiseResetToRejected","readerLockException","defaultReaderClosedPromiseResolve","CancelSteps","PullSteps","AcquireReadableStreamDefaultReader","ReadableStreamDefaultReader","ReadableStreamAddReadRequest","readRequest","ReadableStreamFulfillReadRequest","ReadableStreamGetNumReadRequests","ReadableStreamHasDefaultReader","IsReadableStreamDefaultReader","IsReadableStream","IsReadableStreamLocked","defaultReaderBrandCheckException","ReadableStreamDefaultReaderRead","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","IsReadableStreamAsyncIterator","streamAsyncIteratorBrandCheckException","AcquireReadableStreamAsyncIterator","preventCancel","DequeueValue","container","pair","EnqueueValueWithSize","PeekQueueValue","ResetQueue","AbortSteps","ErrorSteps","WritableStream","underlyingSink","InitializeWritableStream","sizeAlgorithm","SetUpWritableStreamDefaultControllerFromUnderlyingSink","IsWritableStream","streamBrandCheckException","IsWritableStreamLocked","WritableStreamAbort","WritableStreamCloseQueuedOrInFlight","WritableStreamClose","AcquireWritableStreamDefaultWriter","WritableStreamDefaultWriter","CreateWritableStream","startAlgorithm","writeAlgorithm","closeAlgorithm","abortAlgorithm","WritableStreamDefaultController","SetUpWritableStreamDefaultController","wasAlreadyErroring","WritableStreamStartErroring","closeRequest","writer","defaultWriterReadyPromiseResolve","WritableStreamDefaultControllerClose","WritableStreamAddWriteRequest","writeRequest","WritableStreamDealWithRejection","WritableStreamFinishErroring","WritableStreamDefaultWriterEnsureReadyPromiseRejected","WritableStreamHasOperationMarkedInFlight","storedError","WritableStreamRejectCloseAndClosedPromiseIfNeeded","abortRequest","WritableStreamFinishInFlightWrite","WritableStreamFinishInFlightWriteWithError","WritableStreamFinishInFlightClose","defaultWriterClosedPromiseResolve","WritableStreamFinishInFlightCloseWithError","WritableStreamMarkCloseRequestInFlight","WritableStreamMarkFirstWriteRequestInFlight","defaultWriterClosedPromiseReject","WritableStreamUpdateBackpressure","backpressure","defaultWriterReadyPromiseReset","defaultWriterReadyPromiseInitialize","defaultWriterReadyPromiseInitializeAsResolved","defaultWriterClosedPromiseInitialize","defaultWriterReadyPromiseInitializeAsRejected","defaultWriterClosedPromiseInitializeAsResolved","defaultWriterClosedPromiseInitializeAsRejected","IsWritableStreamDefaultWriter","defaultWriterBrandCheckException","defaultWriterLockException","WritableStreamDefaultWriterGetDesiredSize","WritableStreamDefaultWriterAbort","WritableStreamDefaultWriterClose","WritableStreamDefaultWriterRelease","WritableStreamDefaultWriterWrite","WritableStreamDefaultWriterCloseWithErrorPropagation","WritableStreamDefaultWriterEnsureClosedPromiseRejected","defaultWriterClosedPromiseResetToRejected","defaultWriterReadyPromiseReject","defaultWriterReadyPromiseResetToRejected","WritableStreamDefaultControllerGetDesiredSize","releasedError","WritableStreamDefaultControllerGetChunkSize","WritableStreamDefaultControllerWrite","IsWritableStreamDefaultController","WritableStreamDefaultControllerError","WritableStreamDefaultControllerClearAlgorithms","WritableStreamDefaultControllerGetBackpressure","startResult","startPromise","WritableStreamDefaultControllerAdvanceQueueIfNeeded","chunkSizeE","WritableStreamDefaultControllerErrorIfNeeded","writeRecord","enqueueE","WritableStreamDefaultControllerProcessClose","WritableStreamDefaultControllerProcessWrite","sinkClosePromise","sinkWritePromise","isAbortSignal","NativeDOMException","isDOMExceptionConstructor","createDOMExceptionPolyfill","DOMException$1","ReadableStreamPipeTo","preventClose","preventAbort","signal","shuttingDown","currentWrite","actions","shutdownWithAction","action","pipeLoop","resolveLoop","rejectLoop","pipeStep","isOrBecomesErrored","shutdown","isOrBecomesClosed","destClosed_1","waitForWritesToFinish","oldCurrentWrite","originalIsError","originalError","doTheRest","finalize","newError","isError","ReadableStreamDefaultController","IsReadableStreamDefaultController","defaultControllerBrandCheckException","ReadableStreamDefaultControllerGetDesiredSize","ReadableStreamDefaultControllerCanCloseOrEnqueue","ReadableStreamDefaultControllerClose","ReadableStreamDefaultControllerEnqueue","ReadableStreamDefaultControllerError","ReadableStreamDefaultControllerClearAlgorithms","ReadableStreamClose","ReadableStreamDefaultControllerCallPullIfNeeded","pendingPromise","shouldPull","ReadableStreamDefaultControllerShouldCallPull","pullPromise","ReadableStreamError","ReadableStreamDefaultControllerHasBackpressure","SetUpReadableStreamDefaultController","pullAlgorithm","cancelAlgorithm","SetUpReadableStreamDefaultControllerFromUnderlyingSource","underlyingSource","ReadableStreamTee","cloneForBranch2","reading","canceled1","canceled2","reason1","reason2","branch1","branch2","resolveCancelPromise","cancelPromise","value1","value2","cancel1Algorithm","compositeReason","cancelResult","cancel2Algorithm","CreateReadableStream","NumberIsInteger","ReadableStreamBYOBRequest","IsReadableStreamBYOBRequest","byobRequestBrandCheckException","bytesWritten","ReadableByteStreamControllerRespond","ReadableByteStreamControllerRespondWithNewView","ReadableByteStreamController","IsReadableByteStreamController","byteStreamControllerBrandCheckException","firstDescriptor","byobRequest","SetUpReadableStreamBYOBRequest","ReadableByteStreamControllerGetDesiredSize","ReadableByteStreamControllerClose","ReadableByteStreamControllerEnqueue","ReadableByteStreamControllerError","ReadableByteStreamControllerClearAlgorithms","ReadableByteStreamControllerHandleQueueDrain","viewE","autoAllocateChunkSize","bufferE","pullIntoDescriptor","ReadableByteStreamControllerCallPullIfNeeded","ReadableByteStreamControllerShouldCallPull","ReadableByteStreamControllerClearPendingPullIntos","ReadableByteStreamControllerInvalidateBYOBRequest","ReadableByteStreamControllerCommitPullIntoDescriptor","filledView","ReadableByteStreamControllerConvertPullIntoDescriptor","ReadableStreamFulfillReadIntoRequest","bytesFilled","elementSize","ReadableByteStreamControllerEnqueueChunkToQueue","byteOffset","byteLength","ReadableByteStreamControllerFillPullIntoDescriptorFromQueue","currentAlignedBytes","maxBytesToCopy","maxBytesFilled","maxAlignedBytes","totalBytesToCopyRemaining","ready","headOfQueue","bytesToCopy","destStart","ReadableByteStreamControllerFillHeadPullIntoDescriptor","ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue","ReadableByteStreamControllerShiftPendingPullInto","ReadableByteStreamControllerPullInto","ReadableStreamAddReadIntoRequest","emptyView","ReadableByteStreamControllerRespondInClosedState","ReadableStreamHasBYOBReader","ReadableStreamGetNumReadIntoRequests","ReadableByteStreamControllerRespondInReadableState","remainderSize","ReadableByteStreamControllerRespondInternal","firstPendingPullInto","transferredBuffer","transferredView","SetUpReadableByteStreamController","SetUpReadableByteStreamControllerFromUnderlyingSource","underlyingByteSource","request","AcquireReadableStreamBYOBReader","ReadableStreamBYOBReader","readIntoRequest","IsReadableStreamBYOBReader","byobReaderBrandCheckException","ReadableStreamBYOBReaderRead","ReadableStream","InitializeReadableStream","typeString","streamBrandCheckException$1","writable","readable","branches","sourceCancelPromise","ByteLengthQueuingStrategy","CountQueuingStrategy","TransformStream","transformer","writableStrategy","readableStrategy","writableSizeFunction","writableHighWaterMark","readableSizeFunction","readableHighWaterMark","writableType","writableSizeAlgorithm","readableType","readableSizeAlgorithm","startPromise_resolve","InitializeTransformStream","SetUpTransformStreamDefaultControllerFromTransformer","IsTransformStream","streamBrandCheckException$2","TransformStreamDefaultSinkWriteAlgorithm","TransformStreamDefaultSinkAbortAlgorithm","TransformStreamDefaultSinkCloseAlgorithm","TransformStreamDefaultSourcePullAlgorithm","TransformStreamErrorWritableAndUnblockWrite","TransformStreamSetBackpressure","TransformStreamError","TransformStreamDefaultControllerClearAlgorithms","TransformStreamDefaultController","IsTransformStreamDefaultController","defaultControllerBrandCheckException$1","readableController","TransformStreamDefaultControllerEnqueue","TransformStreamDefaultControllerError","TransformStreamDefaultControllerTerminate","SetUpTransformStreamDefaultController","transformAlgorithm","flushAlgorithm","transformResultE","transformMethod","TransformStreamDefaultControllerPerformTransform","transformPromise","backpressureChangePromise","flushPromise","collection","collectionStrong","InternalMetadataModule","inheritIfRequired","common","IS_MAP","IS_WEAK","ADDER","NativeConstructor","NativePrototype","exported","fixMethod","nativeMethod","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","dummy","FREEZING","METADATA","isExtensible","setMetadata","fastKey","getWeakData","onFreeze","meta","Wrapper","NewTargetPrototype","internalStateGetterFor","define","getEntry","previous","callbackfn","ITERATOR_NAME","getInternalCollectionState","collectionWeak","enforceIternalState","IS_IE11","InternalWeakMap","$WeakMap","WeakMapPrototype","nativeDelete","nativeHas","nativeGet","nativeSet","ArrayIterationModule","$has","findIndex","uncaughtFrozenStore","UncaughtFrozenStore","findUncaughtFrozen","arraySpeciesCreate","push","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","specificCreate","isArray","fromCharCode","nativeFromCodePoint","INCORRECT_LENGTH","arrayMethodHasSpeciesSupport","IS_CONCAT_SPREADABLE","MAX_SAFE_INTEGER","MAXIMUM_ALLOWED_INDEX_EXCEEDED","IS_CONCAT_SPREADABLE_SUPPORT","SPECIES_SUPPORT","isConcatSpreadable","spreadable","E","nativeObjectCreate","getOwnPropertyNamesExternal","wrappedWellKnownSymbolModule","defineWellKnownSymbol","$forEach","HIDDEN","SYMBOL","TO_PRIMITIVE","$stringify","nativeGetOwnPropertyNames","AllSymbols","ObjectPrototypeSymbols","StringToSymbolRegistry","SymbolToStringRegistry","QObject","USE_SETTER","setSymbolDescriptor","ObjectPrototypeDescriptor","isSymbol","$defineProperty","$defineProperties","properties","$getOwnPropertySymbols","$propertyIsEnumerable","$create","enumerable","$getOwnPropertyDescriptor","$getOwnPropertyNames","IS_OBJECT_PROTOTYPE","FORCED_JSON_STRINGIFY","space","$replacer","windowNames","getWindowNames","NativeSymbol","EmptyStringDescriptionStore","SymbolWrapper","symbolPrototype","symbolToString","native","$padStart","WEBKIT_BUG","repeat","IS_END","fillString","stringLength","fillStr","intMaxLength","fillLen","stringFiller","$padEnd","$values","TO_ENTRIES","clearPrimitiveCaches","isEOF","isCmd","isDict","isName","isRef","isRefsEqual","isStream","Name","nameCache","nameValue","Cmd","cmdCache","cmdValue","Dict","nonSerializable","newXref","key1","key2","key3","Ref","dictArray","mergedDict","keyName","refCache","refValue","RefSet","RefSetCache","aliasRef","v1","v2","_chunked_stream","_document","_stream","BasePdfManager","manuallyTriggered","_ensure","ensure","_x2","_x3","begin","LocalPdfManager","_BasePdfManager","_ensure2","_callee2","_context2","_x4","_x5","_x6","NetworkPdfManager","_BasePdfManager2","pdfNetworkStream","_ensure3","_callee3","_context3","_x7","_x8","_x9","_createForOfIteratorHelper","allowArrayLike","normalCompletion","didErr","_e2","ChunkedStream","manager","beginChunk","endChunk","curChunk","numChunks","_subarray","ChunkedStreamSubstream","missingChunks","subStream","ChunkedStreamManager","rangeReader","chunkData","requestId","chunksNeeded","_iterator","_step","_chunk","chunksToRequest","groupedChunksToRequest","_iterator2","_step2","groupedChunk","ranges","_iterator3","_step3","groupedChunks","prevChunk","isProgressive","loadedRequests","requestIds","_iterator4","_step4","nextEmptyChunk","lastChunk","_loadedRequests","_requestId","getLookupTableFactory","getInheritableProperty","toRomanNumerals","log2","readInt8","readUint16","readUint32","isWhiteSpace","initializer","MissingDataException","XRefEntryException","XRefParseException","_ref$getArray","getArray","_ref$stopWhenFound","stopWhenFound","LOOP_LIMIT","loopCount","ROMAN_NUMBER_MAP","lowerCase","romanBuf","romanStr","_obj","_annotation","_crypto","_parser","_operator_list","_evaluator","_function","_e3","DEFAULT_USER_UNIT","LETTER_SIZE_MEDIABOX","isAnnotationRenderable","annotation","Page","pageDict","fontCache","builtInCMapCache","globalImageCache","pdfFunctionFactory","idCounters","streams","objectLoader","renderInteractiveForms","contentStreamPromise","resourcesPromise","partialEvaluator","dataPromises","pageListPromise","opList","_ref6","pageOpList","opListPromises","opLists","_ref7","normalizeWhitespace","combineTextItems","_ref8","_ref9","annotationsData","_this4","parsedAnnotations","annotationPromises","annotationRef","PDF_HEADER_SIGNATURE","STARTXREF_SIGNATURE","ENDOBJ_SIGNATURE","FINGERPRINT_FIRST_BYTES","EMPTY_FINGERPRINT","PDF_HEADER_VERSION_REGEXP","signature","backwards","signatureLength","scanBytes","scanLength","signatureEnd","_pos","MAX_PDF_VERSION_LENGTH","linearization","_this5","_ref10","_ref11","_this6","_ref12","_cleanup","_args2","cleanup","startXRef","startXRefLength","DocumentInfoValidators","docInfo","infoDict","_iterator5","_step5","customValue","idArray","fingerprintBuf","_colorspace","_image_utils","fetchDestination","Catalog","processed","blackColor","outlineDict","rgbColor","outlineItem","encrypt","permissions","destinationId","NameTree","pageLabels","numberTree","NumberTree","nums","currentLabel","currentIndex","labelDict","st","LIMIT","A_UPPER_CASE","A_LOWER_CASE","baseCharCode","letterIndex","charBuf","jj","promises","translatedFonts","translatedFont","nodesToVisit","visitedNodes","pageKidsCountCache","currentPageIndex","_loop","currentNode","objId","_ret","pagesBeforeRef","kidPromises","_args","suppressEncryption","subtype","pagesObj","dests","pageLayout","pageMode","ViewerPreferencesValidators","prefValue","isValid","openAction","destDict","resultObj","attachments","nameTree","fs","FileSpec","appendIfJavaScriptDict","jsDict","js","addDefaultProtocolToUrl","tryConvertUrlEncoding","actionType","actionName","urlDict","remoteDest","newWindow","namedAction","jsAction","URL_OPEN_METHODS","jsUrl","XRef","ids","fileId","parser","tableState","streamParameters","streamState","generationFieldWidth","entryRanges","generation","TAB","LF","CR","SPACE","PERCENT","readToken","skipUntil","dataLength","skipped","objRegExp","endobjRegExp","nestedObjRegExp","CHECK_CONTENT_LENGTH","trailerBytes","startxrefBytes","objBytes","xrefBytes","trailers","xrefStms","contentLength","endPos","checkPos","tokenStr","objToken","xrefTagOffset","rootDict","startXRefParsedCache","xrefEntry","cacheEntry","obj1","obj2","obj3","tableOffset","_num","NameOrNumberTree","_ii","kidsOrEntries","MAX_LEVELS","limits","_r","tmp","currentKey","mm","_currentKey","_NameOrNumberTree","_NameOrNumberTree2","pickPlatformItem","filename","fileObj","ObjectLoader","mayHaveChildren","addChildren","dictKeys","_i4","_ii2","_callee4","nodesToRevisit","pendingRequests","baseStreams","foundMissingData","_i5","_ii3","_context4","_ccitt_stream","_jbig2_stream","_jpeg_stream","_jpx_stream","MAX_LENGTH_TO_CACHE","MAX_ADLER32_LENGTH","computeAdler32","bytesLength","Parser","lexer","_ref$allowStreams","allowStreams","_ref$recoveryMode","cipherTransform","buf1","NUL","maybeEIPos","followingBytes","endOffset","foundEOI","markerLength","TILDE","tildePos","maybeEI","filterName","filterZero","imageStream","cacheKey","imageBytes","initialStreamPos","dictBytes","SCAN_BLOCK_LENGTH","ENDSTREAM_SIGNATURE","actualLength","MAX_TRUNCATION","TRUNCATED_SIGNATURE","lastByte","filterArray","paramsArray","xrefStreamStats","specialChars","toHexDigit","Lexer","knownCommands","eNotation","divideBy","sign","baseValue","powerValue","powerValueSign","currentDigit","numParen","charBuffered","previousCh","MAX_HEX_STRING_NUM_WARN","isFirstHex","secondDigit","comment","knownCommandFound","possibleCommand","Linearization","getInt","linDict","allowZeroValue","getHints","hints","hintsLength","hint","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","arrayBuffer","StringStream","emptyBuffer","StreamsSequenceStream","newLength","codeLenCodeMap","lengthDecode","distDecode","fixedLitCodeTab","fixedDistCodeTab","block","PredictorStream","predictor","colors","columns","rowBytes","rawBytes","inbuf","outbuf","inbits","outbits","bytesPerPixel","sum","compArray","bitMask","kk","pixBytes","prevRow","up","upLeft","DecryptStream","decrypt","hasMoreData","NullStream","_ccitt","CCITTFaxStream","CCITTFaxDecoder","ccittEOL","ccittEOF","twoDimPass","twoDimHoriz","twoDimVert0","twoDimVertR1","twoDimVertL1","twoDimVertR2","twoDimVertL2","twoDimVertR3","twoDimVertL3","twoDimTable","whiteTable1","whiteTable2","blackTable1","blackTable2","blackTable3","eoblock","refLine","codingLine","refPos","blackPixels","code3","gotEOL","a1","codingPos","limitValue","_jbig","Jbig2Stream","jbig2Image","globalsStream","globals","_arithmetic_decoder","Jbig2Error","Jbig2Image","ContextCache","DecodingContext","decoder","decodeInteger","contextCache","procedure","contexts","readBits","decodeIAID","SegmentTypes","CodingTemplates","RefinementTemplates","ReusedContexts","decodeBitmapTemplate0","decodingContext","contextLabel","pixel","row1","row2","OLD_PIXEL_MASK","decodeBitmap","mmr","templateIndex","prediction","at","Reader","decodeMMRBitmap","template","templateLength","templateX","templateY","changingTemplateEntries","reuseMask","changingEntriesLength","changingTemplateX","changingTemplateY","changingTemplateBit","sbb_left","sbb_top","sbb_right","pseudoPixelContext","ltp","j0","shift","sltp","decodeRefinement","referenceBitmap","offsetX","offsetY","codingTemplate","codingTemplateLength","codingTemplateX","codingTemplateY","referenceTemplate","referenceTemplateLength","referenceTemplateX","referenceTemplateY","referenceWidth","referenceHeight","decodeSymbolDictionary","huffman","refinement","symbols","numberOfNewSymbols","numberOfExportedSymbols","huffmanTables","refinementTemplateIndex","refinementAt","huffmanInput","newSymbols","currentHeight","symbolCodeLength","tableB1","symbolWidths","getStandardTable","deltaHeight","currentWidth","firstSymbol","deltaWidth","numberOfInstances","decodeTextRegion","symbolId","rdx","rdy","bitmapSize","collectiveBitmap","readUncompressedBitmap","originalEnd","bitmapEnd","numberOfSymbolsDecoded","xMin","xMax","bitmapWidth","symbolBitmap","exportedSymbols","currentFlag","totalSymbolsLength","runLength","defaultPixelValue","numberOfSymbolInstances","stripSize","inputSymbols","transposed","dsOffset","referenceCorner","combinationOperator","logStripSize","stripT","firstS","deltaT","deltaFirstS","currentS","currentT","applyRefinement","symbolWidth","symbolHeight","rdw","rdh","offsetT","offsetS","t2","symbolRow","deltaS","decodePatternDictionary","patternWidth","patternHeight","maxPatternIndex","collectiveWidth","patterns","patternBitmap","decodeHalftoneRegion","regionWidth","regionHeight","enableSkip","gridWidth","gridHeight","gridOffsetX","gridOffsetY","gridVectorX","gridVectorY","regionBitmap","numberOfPatterns","pattern0","bitsPerValue","grayScaleBitPlanes","mmrInput","mg","ng","patternIndex","patternRow","regionRow","regionX","regionY","readSegmentHeader","segmentHeader","segmentType","pageAssociationFieldSize","referredFlags","referredToCount","retainBits","referredToSegmentNumberSize","referredTo","genericRegionInfo","readRegionSegmentInformation","genericRegionSegmentFlags","RegionSegmentInformationFieldLength","genericRegionMmr","searchPatternLength","searchPattern","readSegments","processSegment","atLength","dictionaryFlags","textRegion","textRegionSegmentFlags","textRegionHuffmanFlags","patternDictionary","patternDictionaryFlags","halftoneRegion","halftoneRegionFlags","genericRegion","pageInfo","pageSegmentFlags","callbackName","processSegments","parseJbig2Chunks","SimpleSegmentVisitor","parseJbig2","_visitor$currentPageI","bitPacked","imgData","rowSize","regionInfo","mask0","offset0","region","currentSegment","referredSegments","getSymbolDictionaryHuffmanTables","referredSymbols","getTextRegionHuffmanTables","customTables","decodeTablesSegment","HuffmanLine","lineData","HuffmanTreeNode","htOffset","HuffmanTable","prefixCodesDone","linesLength","prefixLengthMax","histogram","currentLength","firstCode","currentCode","currentTemp","lowestValue","highestValue","prefixSizeBits","rangeSizeBits","prefixLength","currentRangeLow","standardTablesCache","numBits","getCustomHuffmanTable","numberOfSymbols","runCodesTable","_codeLength","repeatedLength","numberOfRepeats","symbolIDTable","customIndex","tableFirstS","tableDeltaS","tableDeltaT","tableDeltaHeight","tableDeltaWidth","tableBitmapSize","tableAggregateInstances","endOfBlock","currentByte","eof","lookForEOFLimit","_parseJbig","QeTable","ArithmeticDecoder","bp","cx_index","cx_mps","qeTableIcx","qeIcx","_jpg","JpegStream","jpegOptions","decodeArr","decodeArrLength","transform","transformNeeded","maxValue","colorTransform","jpegImage","JpegError","DNLMarkerError","scanLines","EOIMarkerError","JpegImage","dctZigZag","dctCos1","dctSin1","dctCos3","dctSin3","dctCos6","dctSin6","dctSqrt2","dctSqrt1d2","_ref$decodeTransform","decodeTransform","_ref$colorTransform","buildHuffmanTable","getBlockBufferOffset","decodeScan","resetInterval","spectralStart","spectralEnd","successivePrev","successive","parseDNLMarker","mcusPerLine","progressive","startOffset","bitsData","bitsCount","readBit","nextByte","maybeScanLines","blockRow","decodeHuffman","receive","receiveAndExtend","decodeBaseline","blockOffset","diff","decodeDCFirst","decodeDCSuccessive","eobrun","decodeACFirst","successiveACState","successiveACNextValue","decodeACSuccessive","offsetZ","decodeMcu","decode","mcu","mcuRow","mcuCol","blockCol","decodeBlock","componentsLength","decodeFn","fileMarker","mcuExpected","mcuToRead","findNextFileMarker","partialMsg","quantizeAndInverse","blockBufferOffset","qt","blockData","v0","v3","v4","v5","v6","v7","p0","p5","p6","p7","buildComponentData","blocksPerLine","blocksPerColumn","computationBuffer","currentPos","maxPos","newPos","currentMarker","newMarker","_ref2$dnlScanLines","dnlScanLines","readDataBlock","prepareComponents","mcusPerColumn","blocksPerLineForMcu","blocksPerColumnForMcu","blocksBufferSize","jfif","adobe","numSOSMarkers","quantizationTables","huffmanTablesAC","huffmanTablesDC","markerLoop","appData","quantizationTablesLength","quantizationTablesEnd","quantizationTableSpec","tableData","sofScanLines","componentsCount","componentId","maxH","maxV","qId","huffmanLength","huffmanTableSpec","codeLengthSum","huffmanValues","selectorsCount","componentIndex","tableSpec","successiveApproximation","nextFileMarker","quantizationTable","isSourcePDF","scaleX","scaleY","componentScaleX","componentScaleY","blocksPerScanline","numComponents","xScaleBlockOffset","mask3LSB","lastComponentScaleX","Cb","Cr","_ref3$forceRGB","forceRGB","_ref3$isSourcePDF","rgbData","grayColor","_jpx","JpxStream","jpxImage","tileCount","tileComponents","tileWidth","tileHeight","tileLeft","tileTop","srcPosition","dataPosition","imgRowSize","tileRowSize","JpxError","JpxImage","SubbandsGainLog2","headerSize","lbox","tbox","jumpDataLength","colorspace","headerType","newByte","oldByte","Xsiz","Ysiz","XOsiz","YOsiz","Csiz","doNotRecover","sqcd","spqcds","spqcdSize","scalarExpounded","tile","siz","calculateComponentDimensions","calculateTileGrids","qcd","spqcd","qcc","cqcc","cod","scod","blockStyle","precinctsSizes","precinctsSize","unsupported","initializeTile","buildPackets","parseTilePackets","transformComponents","tiles","numXtiles","numYtiles","tileComponent","getBlocksDimensions","codOrCoc","buildPrecincts","resolution","dimensions","precinctWidth","precinctHeight","isZeroRes","precinctWidthInSubband","precinctHeightInSubband","numprecinctswide","numprecinctshigh","numprecincts","buildCodeblocks","subband","xcb_","ycb_","codeblockWidth","codeblockHeight","cbx0","cby0","cbx1","cby1","precinctParameters","codeblocks","precincts","codeblock","precinctNumber","pi","pj","precinct","createPacket","layerNumber","precinctCodeblocks","subbands","LayerResolutionComponentPositionIterator","tileIndex","layersCount","maxDecompositionLevelsCount","packet","ResolutionLayerComponentPositionIterator","ResolutionPositionComponentLayerIterator","maxNumPrecinctsInLevel","maxNumPrecincts","resolutions","_component","PositionComponentResolutionLayerIterator","getPrecinctSizesInImageScale","precinctsIterationSizes","px","py","decompositionLevelsCount","sizeInImageScale","getPrecinctIndexIfExist","ComponentPositionResolutionLayerIterator","pxIndex","pyIndex","precinctIterationSizes","posX","posY","startPrecinctRowIndex","minWidth","minHeight","maxNumWide","maxNumHigh","sizePerComponent","sizePerResolution","minWidthCurrentComponent","minHeightCurrentComponent","maxNumWideCurrentComponent","maxNumHighCurrentComponent","widthCurrentResolution","heightCurrentResolution","blocksDimensions","bscale","resolutionSubbands","progressionOrder","bufferSize","skipNextBit","skipMarkerIfEqual","skipBytes","alignToByte","readCodingpasses","sopMarkerUsed","ephMarkerUsed","packetsIterator","codeblockColumn","codeblockRow","codeblockIncluded","firstTimeInclusion","valueReady","inclusionTree","zeroBitPlanesTree","InclusionTree","TagTree","codingpasses","codingpassesLog2","codedDataLength","packetItem","copyCoefficients","coefficients","levelWidth","levelHeight","mb","reversible","segmentationSymbolUsed","blockWidth","blockHeight","bitModel","currentCodingpassType","BitModel","totalLength","dataItem","encodedData","magnitude","bitsDecoded","magnitudeCorrection","nb","interleave","levelOffset","transformTile","codingStyleParameters","quantizationParameters","guardBits","precision","ReversibleTransform","IrreversibleTransform","subbandCoefficients","mu","epsilon","gainLog2","resultImages","transformedTiles","tile0","fourComponents","y0items","y1items","y2items","y3items","component0","alpha01","items","qcdOrQcc","levelsLength","currentLevel","defaultValue","stopValue","levelIndex","UNIFORM_CONTEXT","RUNLENGTH_CONTEXT","LLAndLHContextsLabel","HLContextLabel","HHContextLabel","zeroBitPlanes","contextLabelTable","coefficientCount","coefficentsMagnitude","column","neighborsSignificance","coefficentsSign","processingFlags","processedInverseMask","processedMask","firstMagnitudeBitMask","decision","contribution","sign0","sign1","significance1","decoded","horizontalContribution","width4","index0","indexNext","significance","oneRowDown","twoRowsDown","threeRowsDown","iNext","indexBase","checkAllEmpty","allEmpty","hasSignificantCoefficent","i2","Transform","u0","ll","j1","j2","hl_lh_hh","llWidth","llHeight","llItems","bufferPadding","rowBuffer","numBuffers","colBuffers","currentBuffer","current","alpha","beta","gamma","K_","ARCFourCipher","keyLength","tmp2","calculateMD5","h0","h1","h2","h3","paddedLength","padded","rotateArg","Word64","highInteger","lowInteger","places","high","lowAdd","highAdd","calculateSHA256","rotr","maj","sigma","sigmaPrime","littleSigma","littleSigmaPrime","h4","h5","h6","h7","t1","calculateSHA512","mode384","tmp1","tmp3","calculateSHA384","NullCipher","AESBaseCipher","cipherKey","_j2","_j3","s3","_j4","_j5","_j6","_j7","_j8","_j9","_k2","sourceLength","iv","plain","outputLength","lastBlock","psLen","_j10","cipher","_j11","AES128Cipher","_AESBaseCipher","rcon","t3","t4","AES256Cipher","_AESBaseCipher2","PDF17","compareByteArrays","array1","array2","ownerValidationSalt","userBytes","ownerPassword","hashData","userValidationSalt","userPassword","ownerKeySalt","ownerEncryption","userKeySalt","userEncryption","PDF20","concatArrays","calculatePDF20Hash","arrayLength","k1","concatBytes","CipherTransform","stringCipherConstructor","streamCipherConstructor","CipherTransformFactory","defaultPasswordBytes","createEncryptionKey20","revision","uBytes","perms","passwordLength","pdfAlgorithm","prepareKeyData","encryptMetadata","hashDataSize","keyLengthInBytes","encryptionKey","checkData","derivedKey","decodeUserPassword","identityName","algorithm","cfDict","streamCryptoName","handlerDict","fileIdBytes","passwordBytes","decodedPassword","cf","buildObjectKey","isAes","buildCipherConstructor","cryptFilter","cfm","cipherConstructor","resizeRgbImage","w1","w2","COMPONENTS","xRatio","yRatio","newIndex","oldIndex","xScaled","w1Scanline","numComps","rgb","decodeMap","bpc","originalWidth","originalHeight","actualHeight","numComponentColors","needsResizing","allColors","colorMap","rgbPos","destPos","_destPos","_rgbPos","cs","IR","whitePoint","blackPoint","CalGrayCS","CalRGBCS","basePatternCS","PatternCS","baseIndexedCS","hiVal","IndexedCS","alt","tintFn","AlternateCS","LabCS","colorSpaces","resCS","altIR","altCS","DeviceGrayCS","DeviceRgbCS","DeviceCmykCS","_ColorSpace","tmpBuf","baseNumComps","usesZeroToOneRange","isPassthrough","baseBuf","scaled","tinted","_ColorSpace2","baseCS","_ColorSpace3","highVal","outputDelta","lookupPos","_ColorSpace4","_ColorSpace5","convertToRgb","srcScale","_ColorSpace6","AG","_ColorSpace7","BRADFORD_SCALE_MATRIX","BRADFORD_SCALE_INVERSE_MATRIX","SRGB_D65_XYZ_TO_RGB_MATRIX","FLAT_WHITEPOINT_MATRIX","tempNormalizeMatrix","tempConvertMatrix1","tempConvertMatrix2","DECODE_L_CONSTANT","matrixProduct","convertToFlat","sourceWhitePoint","LMS","convertToD65","D65X","D65Y","D65Z","sRGBTransferFunction","adjustToRange","decodeL","L","compensateBlackPoint","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","normalizeWhitePointToFlat","XYZ_In","LMS_Flat","normalizeWhitePointToD65","LMS_D65","AGR","BGG","CGB","XYZ","XYZ_Black","XYZ_D65","SRGB","_ColorSpace8","_super8","XW","YW","ZW","XB","YB","ZB","fn_g","high1","low2","high2","maxVal","Ls","as","_ColorSpace9","_super9","LocalImageCache","GlobalImageCache","pageIndexSet","onlyData","getQuadPoints","_get","receiver","_superPropBase","AnnotationFactory","idFactory","parameters","LinkAnnotation","TextAnnotation","fieldType","TextWidgetAnnotation","ButtonWidgetAnnotation","ChoiceWidgetAnnotation","WidgetAnnotation","PopupAnnotation","FreeTextAnnotation","LineAnnotation","SquareAnnotation","CircleAnnotation","PolylineAnnotation","PolygonAnnotation","CaretAnnotation","InkAnnotation","HighlightAnnotation","UnderlineAnnotation","SquigglyAnnotation","StrikeOutAnnotation","StampAnnotation","FileAttachmentAnnotation","Annotation","quadPoints","quadPointsLists","getTransformMatrix","_Util$getAxialAligned","_Util$getAxialAligned2","borderStyle","AnnotationBorderStyle","dictType","appearanceStates","normalAppearanceState","resources","evaluator","renderForms","maxHeight","allZeros","validNumber","radius","MarkupAnnotation","_Annotation","rawIRT","rt","_Annotation2","loopDict","_WidgetAnnotation","maximumLength","operatorList","_WidgetAnnotation2","customAppearance","exportValueOptionsDict","hasCorrectOptionCount","fieldParent","fieldParentValue","_WidgetAnnotation3","isOptionArray","_MarkupAnnotation","_this7","DEFAULT_ICON_SIZE","_Annotation3","_this8","_Annotation4","_this9","parentItem","parentSubtype","rawParent","parentFlags","_MarkupAnnotation2","_this10","_MarkupAnnotation3","_super10","_this11","_MarkupAnnotation4","_super11","_this12","_MarkupAnnotation5","_super12","_this13","_MarkupAnnotation6","_super13","_this14","rawVertices","_PolylineAnnotation","_super14","_this15","_MarkupAnnotation7","_super15","_this16","_MarkupAnnotation8","_super16","_this17","originalInkLists","_MarkupAnnotation9","_super17","_this18","_MarkupAnnotation10","_super18","_this19","_MarkupAnnotation11","_super19","_this20","_MarkupAnnotation12","_super20","_this21","_MarkupAnnotation13","_super21","_this22","_MarkupAnnotation14","_super22","_this23","file","QueueOptimizer","addState","parentState","pattern","checkFn","iterateFn","processFn","handlePaintSolidColorImageMask","iFirstSave","fnArray","argsArray","iFirstPIMXO","imageMask","InitialState","MIN_IMAGES_IN_INLINE_IMAGES_BLOCK","MAX_IMAGES_IN_INLINE_IMAGES_BLOCK","MAX_WIDTH","IMAGE_PADDING","iFirstTransform","iFirstPIIXO","maxLineHeight","currentX","currentY","imgWidth","imgHeight","dataOffset","MIN_IMAGES_IN_MASKS_BLOCK","MAX_IMAGES_IN_MASKS_BLOCK","MAX_SAME_IMAGES_IN_MASKS_BLOCK","isSameImage","iTransform","transformArgs","firstPIMXOArg0","firstTransformArg0","firstTransformArg3","iPIMXO","positions","images","maskParams","iFirstPIXO","firstPIXOArg0","MIN_IMAGES_IN_BLOCK","MAX_IMAGES_IN_BLOCK","iFirstSetFont","firstSetFontArg0","firstSetFontArg1","MIN_CHARS_IN_BLOCK","MAX_CHARS_IN_BLOCK","iFirstBeginText","iFirstSetTextMatrix","iFirstShowText","iFirstEndText","iFirst","iEndText","NullOptimizer","OperatorList","CHUNK_SIZE","CHUNK_SIZE_ABOUT","streamSink","dependency","dependencies","transfers","_cmap","_fonts","_encodings","_unicode","_standard_fonts","_pattern","_bidi","_glyphlist","_metrics","_murmurhash","_image","PartialEvaluator","DefaultPartialEvaluatorOptions","_ref$options","readableStream","pump","TIME_SLOT_DURATION_MS","CHECK_TIME_EVERY","TimeSlotManager","normalizeBlendMode","parsingArray","maybeBM","deferred","TILING_PATTERN","SHADING_PATTERN","newEvaluator","nodes","graphicStates","graphicStatesKeys","graphicState","bm","xObjects","xObjectsKeys","xResources","xobj","smask","initialState","group","groupOptions","groupSubtype","_ref4$isInline","isInline","localImageCache","imageRef","maxImageSize","bitStrideLength","imgArray","softMask","SMALL_IMAGE_DIMENSIONS","imageObj","cacheGlobally","imgPromise","stateManager","smaskContent","smaskOptions","transferObj","transferFn","transferMap","patternDict","tilingOpList","resourcesArray","patternResources","tilingPatternIR","fontArgs","fontRef","translated","TranslatedFont","isAddToPathSet","gState","gStateObj","gStateKeys","loadedName","errorFont","fontRes","fontCapability","preEvaluatedFont","fontRefIsRef","fontID","fontAliases","aliasFontRef","translatedPromise","xrefFontStats","fontFile3","fontType","parsingText","lastIndex","opArgs","patternName","typeNum","shading","_ref6$initialState","EvalState","xobjs","StateManager","preprocessor","EvaluatorPreprocessor","timeSlotManager","closePendingRestoreOPS","promiseBody","stop","localImage","resolveXObject","rejectXObject","_localImage","globalImage","_localImage2","combinedGlyphs","arrLength","arrItem","shadingRes","shadingFill","patternIR","dictName","extGState","_ref7$stateManager","_ref7$normalizeWhites","_ref7$combineTextItem","_ref7$seenStyles","seenStyles","TextState","WhitespaceRegexp","textContent","textContentItem","SPACE_FACTOR","MULTI_SPACE_FACTOR","MULTI_SPACE_FACTOR_MAX","emptyXObjectCache","textState","ensureTextContentItem","tsm","glyphHeight","trm","scaleLineX","scaleCtmX","spaceWidth","replaceWhitespace","runBidiTransform","textChunk","bidiResult","handleSetFont","buildTextContentItem","glyphWidth","glyphUnicode","NormalizedUnicodes","charSpacing","wordSpacing","addFakeSpaces","tx","ty","w0","fakeSpaces","flushTextContentItem","enqueueChunk","advance","fontNameArg","fontSizeArg","isSameTextLine","breakTextRun","currentState","xObjStateManager","sinkWrapper","gStateFont","baseDict","cidToGidBytes","toUnicode","toUnicodePromise","cidSystemInfo","cidToGidMap","differences","baseEncodingName","diffEncoding","isSymbolicFont","isNonsymbolicFont","readToUnicode","builtToUnicode","forceGlyphs","charcode","glyphsUnicodeMap","_charcode","_glyphName","codeStr","baseEncoding","registry","ordering","ucs2CMapName","ucs2CMap","cMap","cid","ucs2","cmapObj","glyphsData","glyphID","glyphsWidths","defaultWidth","glyphsVMetrics","defaultVMetrics","vmetrics","vmetric","firstChar","baseFontName","metrics","isMonospace","firstWidth","fontNameWoStyle","monospace","stdFontMap","lookupName","Metrics","glyphWidths","widthsByGlyphName","composite","uint8array","df","diffLength","diffBuf","diffEntry","lastChar","maxCharIndex","newProperties","baseFont","fontNameStr","baseFontStr","fontFile","length1","length2","length3","cMapPromise","cidEncoding","buildPath","fontChar","accent","_ref8$extraProperties","extraProperties","parentOperatorList","type3Options","type3Evaluator","loadCharProcsPromise","charProcs","fontResources","charProcKeys","charProcOperatorList","_loop2","glyphStream","dummyOperatorList","old","txDiff","tyDiff","denominator","ctm","getOPMap","MAX_INVALID_PATH_OPS","opSpec","numArgs","argsLength","nonProcessedArgs","BUILT_IN_CMAPS","MAX_MAP_RANGE","CMap","builtInCMap","dstLow","dst","codespaceRanges","nn","codespaceRange","IdentityCMap","_CMap","vertical","BinaryCMapReader","hexToInt","hexToStr","addHex","incHex","MAX_NUM_SIZE","MAX_ENCODED_NUM_SIZE","BinaryCMapStream","stack","sp","processBinaryCMap","extend","useCMap","_char","dataSize","ucs2DataSize","subitemsCount","CMapFactory","strToInt","expectString","expectInt","parseBfChar","parseBfRange","parseCidChar","parseCidRange","parseCodespaceRange","parseWMode","parseCMapName","parseCMap","fetchBuiltInCMap","embeddedUseCMap","objLoop","extendCMap","createBuiltInCMap","newCMap","useCodespaceRanges","cMapData","compressionType","parsedCMap","getFontType","_cff_parser","_font_renderer","_type1_parser","PRIVATE_USE_AREAS","PDF_GLYPH_SPACE_UNITS","SEAC_ANALYSIS_ENABLED","EXPORT_DATA_PROPERTIES","EXPORT_DATA_EXTRA_PROPERTIES","FontFlags","MacStandardGlyphOrdering","adjustWidths","adjustToUnicode","builtInEncoding","IdentityToUnicodeMap","recoverGlyphName","Glyph","operatorListId","isSpace","isInFont","ToUnicodeMap","OpenTypeFileBuilder","writeInt16","writeInt32","writeData","sfnt","entriesCount","entrySize","maxPower2","searchRange","OTF_HEADER_SIZE","OTF_TABLE_ENTRY_SIZE","tables","tablesNames","numTables","tableName","tableOffsets","checksum","quad","fallbackName","_getFontFileType","getFontFileType","_getFontFileType2","cff","CFFFont","Type1Font","ID","int16","writeSignedInt16","signedInt16","int32","string16","safeString16","isTrueTypeFile","isTrueTypeCollectionFile","isOpenTypeFile","isType1File","isCFFFile","fileType","fileSubtype","buildToFontChar","toFontChar","adjustMapping","charCodeToGlyphId","hasGlyph","newGlyphZeroId","newMap","privateUseAreaIndex","nextAvailableFontCharCode","privateUseOffetEnd","originalCharCode","fontCharCode","getRanges","numGlyphs","codeIndices","createCmapTable","bmpLength","trailingRangesCount","segCount","startCount","endCount","idDeltas","idRangeOffsets","glyphsIds","contiguous","startCode","format314","format31012","header31012","validateOS2Table","os2","selection","usWinAscent","createOS2Table","charstrings","override","ulUnicodeRange1","ulUnicodeRange2","ulUnicodeRange3","ulUnicodeRange4","firstCharIndex","lastCharIndex","unitsPerEm","typoAscent","typoDescent","winAscent","winDescent","createPostTable","createNameTable","stringsUnicode","strBufUnicode","platforms","encodings","languages","namesRecordCount","nameTable","strOffset","strs","nameRecord","renderer","exportDataProperties","nonStdFontMap","isStandardFont","GlyphMapForStandardFonts","SupplementalGlyphMapForArialBlack","_charCode","SupplementalGlyphMapForCalibri","_charCode2","isIdentityUnicode","unicodeCharCode","_map","_GlyphMapForStandardFonts","_charCode3","VALID_TABLES","readTables","readTableEntry","previousPosition","readOpenTypeHeader","ttf","readTrueTypeCollectionHeader","ttc","ttcTag","majorVersion","minorVersion","numFonts","offsetTable","readTrueTypeCollectionData","_readTrueTypeCollecti","potentialHeader","potentialTables","readNameTable","nameEntry","readCmapTable","hasEncoding","potentialTable","canBreak","platformId","encodingId","useTable","format","hasShortCmap","mappings","segIndex","offsetsCount","rangeOffset","offsetIndex","entryCount","sanitizeMetrics","dupFirstEntry","numOfMetrics","numOfSidebearings","numMissing","sanitizeGlyph","sourceStart","sourceEnd","hintsValid","glyphProfile","glyf","contoursCount","flagsCount","endPoint","instructionsStart","instructionsLength","instructionsEnd","coordinatesLength","xLength","yLength","xyLength","glyphDataLength","sanitizeHead","locaLength","indexToLocFormat","numGlyphsPlusOne","sanitizeGlyphLocations","loca","isGlyphLocationsLong","maxSizeOfInstructions","itemSize","itemDecode","itemEncode","numGlyphsOut","locaDataSize","locaData","oldGlyfData","oldGlyfDataLength","newGlyfData","writeOffset","missingGlyphs","simpleGlyph","firstEntryLength","readPostScriptTable","propertiesObj","maxpNumGlyphs","glyphNames","valid","glyphNameIndexes","customNames","FORMAT_0_HEADER_LENGTH","numRecords","stringsStart","records","NAME_RECORD_LENGTH","nameIndex","TTOpsStackDeltas","sanitizeTTProgram","ttContext","funcId","lastEndf","lastDeff","callstack","functionsCalled","tooComplexToFollowFunctions","inFDEF","ifLevel","inELSE","newStackLength","stackDelta","foldTTTable","checkInvalidFunctions","maxFunctionDefs","sanitizeTTPrograms","fpgm","prep","cvt","cvtData","ttcData","cffFile","isTrueType","isComposite","maxZones","glyphsInfo","metricsOverride","isCidToGidMapEmpty","cmapTable","cmapPlatformId","cmapEncodingId","cmapMappings","cmapMappingsLength","standardGlyphName","unicodeOrCharCode","_charCode4","glyphZeroId","newMapping","compiler","namePrototype","builder","tableTag","getCharCodes","charCodes","createCharCode","seacs","charset","seacMap","seac","baseGlyphName","accentGlyphName","baseGlyphId","accentGlyphId","accentOffset","baseFontCharCode","accentFontCharCode","cffWidths","hmtx","charstring","possibleSpaceReplacements","widthCode","charsCache","charsCacheKey","ErrorFont","type1FontGlyphMapping","findBlock","streamBytes","startIndex","streamBytesLength","getHeaderBlock","suggestedLength","EEXEC_SIGNATURE","streamStartPos","headerBytes","headerBytesLength","getEexecBlock","eexecBytes","PFB_HEADER_SIZE","headerBlockLength","pfbHeader","pfbHeaderPresent","headerBlock","headerBlockParser","eexecBlock","eexecBlockParser","type2Charstrings","subrs","_glyphId","charstringsLen","_charCode5","type1Charstrings","type1Subrs","type2Subrs","topDict","charsetArray","charStringsIndex","privateDict","subrIndex","charsets","_charsets","MAX_SUBR_NESTING","CFFStandardStrings","NUM_STANDARD_CFF_STRINGS","CFFParser","CharstringValidationData","CharstringValidationData12","seacAnalysisEnabled","CFF","topDictIndex","stringIndex","globalSubrIndex","topDictParsed","CFFTopDict","charStringOffset","charStringIndex","fontMatrix","fontBBox","fdArrayIndex","dictRaw","charStringsAndSeacs","hdrSize","offSize","CFFHeader","parseOperand","parseFloatOperand","operands","cffIndex","CFFIndex","offsetSize","offsetStart","offsetEnd","CFFStrings","cffDict","localSubrIndex","stackSize","validationCommand","subrsIndex","subrNumber","charStrings","fdSelect","fdArray","localSubrToUse","privateDictToUse","fdIndex","nominalWidth","parentDict","CFFPrivateDict","privateOffset","privateDictEnd","dictData","subrsOffset","relativeOffset","CFFCharset","CFFCharsetPredefinedTypes","raw","predefined","readSupplement","supplementsCount","sid","dataStart","glyphsCount","rangesCount","gid","dataEnd","CFFEncoding","CFFFDSelect","glyphZero","CFFDict","valueLength","glyphIndex","CFFOffsetTracker","offset1","offset2","offset3","offset4","CFFCompiler","subDict","compiled","topDictTracker","fontDictTrackers","nibbles","sanitizedName","dicts","removeCidKeys","fontDictTracker","fontDictData","trackers","privateDictTracker","privateDictData","offsetTracker","isCIDFont","numGlyphsLessNotDef","charsetIndex","numCharsets","warned","lastFD","currentFD","numRanges","lastOffset","ISOAdobeCharset","ExpertCharset","ExpertSubsetCharset","getEncoding","ExpertEncoding","MacExpertEncoding","MacRomanEncoding","StandardEncoding","WinAnsiEncoding","SymbolSetEncoding","ZapfDingbatsEncoding","encodingName","getGlyphsUnicode","getDingbatsGlyphsUnicode","getStdFontMap","getNonStdFontMap","getSerifFonts","getSymbolsFonts","getGlyphMapForStandardFonts","getSupplementalGlyphMapForArialBlack","getSupplementalGlyphMapForCalibri","getSpecialPUASymbols","mapSpecialUnicodeValues","getUnicodeForGlyph","nameLen","hexStr","UnicodeRanges","getUnicodeRangeFor","isRTLRangeFor","getNormalizedUnicodes","reverseIfRtl","charsLength","FontRendererFactory","getLong","getUshort","getSubroutineBias","numSubrs","parseCmap","idOffset","groups","parseCff","parseGlyfTable","lookupCmap","compileGlyf","moveTo","lineTo","quadraticCurveTo","xa","ya","numberOfContours","arg1","arg2","scale01","scale10","subglyph","endPtsOfContours","instructionLength","numberOfPoints","points","startPoint","contour","compileCharString","charStringCode","bezierCurveTo","stems","stackClean","xb","yb","subrCode","achar","bchar","NOOP","CompiledFont","TrueTypeCompiled","_CompiledFont","Type2Compiled","_CompiledFont2","cffInfo","glyphNameMap","HINTING_ENABLED","Type1CharString","COMMAND_MAP","wx","sbx","dy","sby","num2","num1","flexArgs","howManyArgs","command","keepStack","stackLength","Type1Parser","EEXEC_ENCRYPT_KEY","CHAR_STRS_ENCRYPT_KEY","isHexDigit","discardNumber","decrypted","decryptAscii","digit1","digit2","encrypted","isBinary","lenIV","privateData","program","blueArray","charString","charStringObject","_index","encodingArg","getTilingPatternIR","ShadingType","Pattern","ctx","Shadings","RadialAxial","domainArr","extendStart","extendEnd","extendArr","r2","distance","fnObj","NUMBER_OF_SAMPLES","colorStops","ratio","cssColor","coordsArr","shadingType","MeshStreamReader","csNumComps","bitsPerCoordinate","xi","yi","decodeType4Shading","mesh","verticesLeft","coord","decodeType5Shading","verticesPerRow","MIN_SPLIT_PATCH_CHUNKS_AMOUNT","MAX_SPLIT_PATCH_CHUNKS_AMOUNT","TRIANGLE_DENSITY","getB","buildB","lut","t_","buildFigureFromPatch","figure","figureMinX","figureMinY","figureMaxX","figureMaxY","splitXBy","splitYBy","figureCoords","figureColors","cl","c0","bRow","bCol","newColor","decodeType6Shading","tmp4","decodeType7Shading","updateBounds","packData","coordsPacked","xy","colorsPacked","figures","Mesh","decodeContext","patchMesh","Dummy","xstep","ystep","paintType","tilingType","bidi","baseTypes","arabicTypes","isOdd","isEven","findUnequal","setValues","reverseValues","createBidiText","isLTR","dir","startLevel","strLength","numBidi","charType","levels","sor","eor","lastType","before","after","highestLevel","lowestOddLevel","getMetrics","isPDFFunction","_ps_parser","PDFFunctionFactory","_ref$isEvalSupported","PDFFunction","toNumberArray","CONSTRUCT_SAMPLED","CONSTRUCT_INTERPOLATED","CONSTRUCT_STICHED","CONSTRUCT_POSTSCRIPT","outputSize","bps","sampleMul","strBytes","strIdx","typeFn","toMultiArray","inputSize","samples","interpolate","xmin","xmax","ymin","ymax","cubeVertices","cubeN","cubeVertex","domain_2i","domain_2i_1","size_i","e0","n0","n1","rj","fnRefs","fns","clip","dmin","rmin","rmax","_ref13","PostScriptCompiler","numOutputs","numInputs","PostScriptEvaluator","MAX_CACHE_SIZE","cache_available","cachedValue","stackIndex","bound","fnDict","PostScriptStack","MAX_STACK_SIZE","initialStack","AstNode","AstArgument","AstLiteral","AstBinaryOperation","AstMin","AstVariable","AstVariableDefinition","ExpressionBuilderVisitor","definition","buildAddOperation","buildMulOperation","buildSubOperation","buildMinOperation","instructions","lastRegister","ast1","ast2","tmpVar","instruction","statementBuilder","expr","PostScriptParser","PostScriptTokenTypes","conditionLocation","jumpLocation","endOfTrue","PostScriptToken","opCache","opValue","PostScriptLexer","SEED","MASK_HIGH","MASK_LOW","MurmurHash3_64","blockCounts","tailLength","dataUint32","k2","C1","C2","C1_LOW","C2_LOW","hex1","hex2","decodeAndClamp","addend","coefficient","resizeImageMask","_ref$isInline","_ref$smask","_ref$mask","_ref$isMask","isMask","isIndexed","maskDict","_ref2$isInline","smaskData","maskData","imageIsFromDecodeStream","inverseDecode","computedLength","haveFullData","decodeAddends","decodeCoefficients","bufferPos","rowComps","loop1End","loop2End","remainingBits","rgbaBuf","alphaBuf","imageOffset","maskOffset","matte","matteRgb","matteR","matteG","matteB","forceRGBA","drawWidth","drawHeight","newArray","imageLength","maybeUndoPreblend","CallbackKind","StreamKind","wrapReason","MessageHandler","sourceName","targetName","comObj","callbackId","cbSourceName","cbTargetName","ah","queueingStrategy","streamId","startCapability","pullCapability","cancelCapability","lastDesiredSize","onPull","onCancel","_deleteStreamController2","_deleteStreamController","PDFWorkerStream","msgHandler","PDFWorkerStreamReader","PDFWorkerStreamRangeReader","readers","_read","_yield$this$_reader$r","read","_read2","_yield$this$_reader$r2","_display_utils","_api","_annotation_layer","_api_compatibility","_worker_options","_text_layer","_svg","_require","PDFNodeStream","PDFNetworkStream","PDFFetchStream","addLinkAttributes","getFilenameFromUrl","isFetchSupported","isValidFetchUrl","loadScript","deprecated","DEFAULT_LINK_REL","SVG_NS","DOMCanvasFactory","canvas","canvasAndContext","DOMCMapReaderFactory","_ref$baseUrl","_ref$isCompressed","isCompressed","_fetch","fetch","response","DOMSVGFactory","svg","PageViewport","viewBox","_ref5$offsetX","_ref5$offsetY","_ref5$dontFlip","dontFlip","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","_ref6$scale","_ref6$rotation","_ref6$offsetX","_ref6$offsetY","_ref6$dontFlip","topLeft","bottomRight","RenderingCancelledException","LinkTarget","link","rel","_ref7$enabled","enabled","urlNullRemoved","targetStr","anchor","StatTimer","outBuf","longest","time","_time","duration","pdfDateStringRegex","PDFDateString","matches","hour","minute","universalTimeRelation","offsetHour","offsetMinute","pdfNetworkStreamFactory","rangeTransport","worker","workerParams","workerIdPromise","networkStreamPromise","networkStream","workerId","messageHandler","transport","pdfDataRangeTransport","nextDocumentId","PDFDocumentLoadingTask","transportDestroyed","PDFDataRangeTransport","initialData","progressiveDone","PDFDocumentProxy","pdfInfo","pageNumber","PDFPageProxy","pdfBug","_ref3$rotation","_ref3$offsetX","_ref3$offsetY","_ref3$dontFlip","_ref4$intent","canvasContext","viewport","_ref5$intent","_ref5$enableWebGL","enableWebGL","_ref5$renderInteracti","_ref5$transform","_ref5$imageLayer","imageLayer","_ref5$canvasFactory","canvasFactory","_ref5$background","renderingIntent","intentState","canvasFactoryInstance","webGLContext","complete","internalRenderTask","renderTask","transparency","operatorListChanged","opListTask","_ref6$normalizeWhites","_ref6$disableCombineT","disableCombineTextItems","TEXT_CONTENT_CHUNK_SIZE","_textContent$items","renderCompleted","resetStats","operatorListChunk","_ref9$force","LoopbackPort","cloneValue","transferable","require","mainWorkerMessageHandler","loader","PDFWorker","_ref11$name","_ref11$port","_ref11$verbosity","workerSrc","terminateEarly","onWorkerError","sendTest","testObj","workerHandler","WorkerTransport","loadingTask","evt","headersCapability","fullReader","_ref14","updatePassword","_data","exportedData","exportedError","fontRegistry","_data2","pageProxy","MAX_IMAGE_SIZE_TO_STORE","fetched","_ref15","featureId","results","cleanupSuccessful","PDFObjects","RenderTask","InternalRenderTaskClosure","canvasInRendering","InternalRenderTask","_ref16","objs","commonObjs","_ref16$useRequestAnim","useRequestAnimationFrame","_ref16$pdfBug","_this$params","_next2","BaseFontLoader","onUnsupportedFeature","nativeFontFace","rule","styleElement","styleSheet","_bind","rules","fontsToLoad","supported","FontLoader","_BaseFontLoader","GenericFontLoader","completeRequest","otherRequest","fonts","spliceString","remove","insert","chunk1","chunk2","isFontReady","loadTestFontId","COMMENT_OFFSET","CFF_CHECKSUM_OFFSET","XXXX_VALUE","span","getLoadTestFont","FontFaceObject","translatedData","_ref2$isEvalSupported","_ref2$disableFontFace","disableFontFace","_ref2$ignoreErrors","ignoreErrors","_ref2$onUnsupportedFe","_ref2$fontRegistry","compatibilityParams","apiCompatibilityParams","_pattern_helper","MIN_FONT_SIZE","MAX_FONT_SIZE","MAX_GROUP_SIZE","MIN_WIDTH_FACTOR","MAX_SIZE_TO_COMPILE","FULL_CHUNK_HEIGHT","addContextCurrentTransform","ad_bc","bc_ad","cosValue","sinValue","CachedCanvases","trackTransform","canvasEntry","compileType3Glyph","POINT_TO_PROCESS_LIMIT","width1","POINT_TYPES","lineSize","data0","elem","outlines","pp","drawOutline","CanvasExtraState","CanvasGraphics","EXECUTION_TIME","EXECUTION_STEPS","canvasCtx","putBinaryImageData","partialChunkHeight","fullChunks","totalChunks","chunkImgData","srcPos","thisChunkHeight","elemsInThisChunk","srcLength","dest32","dest32DataLength","fullSrcDiff","white","srcDiff","kEnd","kEndUnrolled","srcByte","putBinaryImageMask","copyCtxState","sourceCtx","destCtx","resetCtxToDefault","composeSMaskBackdrop","g0","alpha_","composeSMaskAlpha","layerData","composeSMaskLuminosity","genericComposeSMask","maskCtx","layerCtx","backdrop","hasBackdrop","composeFn","PIXELS_TO_PROCESS","chunkHeight","composeSMask","composed","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","_ref$transparency","_ref$background","transparentCanvas","executionStartIdx","continueCallback","stepper","argsArrayLen","chunkOperations","endTime","fnId","depObjId","objsPool","flatness","states","activeSMask","drawnWidth","drawnHeight","cacheId","scratchCanvas","currentCtx","currentTransform","groupCtx","deltaTransform","ops","xw","yh","consumePath","strokeColor","fillColor","isPatternFill","needRestore","paths","spacing","leading","fontRefName","fontObj","bold","italic","typeface","browserFontSize","rise","patternTransform","textRenderingMode","fillStrokeMode","patternFill","addToPath","_this$cachedCanvases$","fontSizeScale","fontDirection","textHScale","glyphsLength","spacingDir","widthAdvanceScale","simpleFillText","lineWidth","restoreNeeded","scaledX","scaledY","scaledAccentX","scaledAccentY","vx","vy","measuredWidth","characterScaleX","charWidth","isTextInvisible","spacingLength","transformed","xWidth","yWidth","llx","lly","urx","ury","baseTransform","canvasGraphicsFactory","inv","bl","ul","ur","canvasBounds","maskCanvas","widthScale","heightScale","imgToPaint","tmpCanvas","tmpCtx","paintWidth","paintHeight","tmpCanvasId","newWidth","newHeight","inverse","getShadingPatternFromIR","ShadingIRs","applyBoundingBox","grad","createMeshCanvas","drawTriangle","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","car","cag","cab","cbr","cbg","cbb","x1_","x2_","drawFigure","rows","cols","combinesScale","cachedCanvases","EXPECTED_SCALE","MAX_PATTERN_SIZE","BORDER_SIZE","boundsWidth","boundsHeight","paddedWidth","paddedHeight","owner","matrixScale","temporaryPatternCanvas","shadingIR","TilingPattern","PaintType","curMatrixScale","combinedScale","dimx","dimy","graphics","realOutputSize","maxSize","bboxWidth","bboxHeight","GlobalWorkerOptions","_xml_parser","Metadata","xmlDocument","all","rdf","nodeName","children","_step$value","XMLParserErrorCode","isWhitespace","isWhitespaceString","XMLParserBase","entity","skipWs","attrName","attrValue","attrEndChar","attrEndIndex","attrStart","ch2","q2","complexDoctype","doctypeContent","isClosed","isEmpty","SimpleDOMNode","nodeValue","childNodes","SimpleXMLParser","_XMLParserBase","_this$_currentFragmen","documentElement","lastElement","PDFDataTransportStream","firstReader","queuedChunks","PDFDataTransportStreamReader","PDFDataTransportStreamRangeReader","requestCapability","requestsCapability","WebGLContext","_ref$enable","layer","WebGLUtils","loadShader","gl","shaderType","shader","errorMsg","createVertexShader","createFragmentShader","createProgram","shaders","linked","createTexture","textureId","texture","currentGL","currentCanvas","generateGL","smaskVertexShaderCode","smaskFragmentShaderCode","smaskCache","initSmaskGL","vertexShader","fragmentShader","texCoordLocation","texLayerLocation","texMaskLocation","texCoordBuffer","maskTexture","figuresVertexShaderCode","figuresFragmentShaderCode","figuresCache","initFiguresGL","drawFigures","coordsMap","colorsMap","pIndex","cIndex","coordsBuffer","colorsBuffer","AnnotationElementFactory","LinkAnnotationElement","TextAnnotationElement","TextWidgetAnnotationElement","RadioButtonWidgetAnnotationElement","CheckboxWidgetAnnotationElement","PushButtonWidgetAnnotationElement","ChoiceWidgetAnnotationElement","WidgetAnnotationElement","PopupAnnotationElement","FreeTextAnnotationElement","LineAnnotationElement","SquareAnnotationElement","CircleAnnotationElement","PolylineAnnotationElement","CaretAnnotationElement","InkAnnotationElement","PolygonAnnotationElement","HighlightAnnotationElement","UnderlineAnnotationElement","SquigglyAnnotationElement","StrikeOutAnnotationElement","StampAnnotationElement","FileAttachmentAnnotationElement","AnnotationElement","isRenderable","ignoreBorder","horizontalRadius","verticalRadius","trigger","popupElement","PopupElement","popup","_AnnotationElement","linkService","destination","_AnnotationElement2","_AnnotationElement3","_WidgetAnnotationElem","TEXT_ALIGNMENT","fieldWidth","combWidth","fontFamily","_WidgetAnnotationElem2","_WidgetAnnotationElem3","_LinkAnnotationElemen","_WidgetAnnotationElem4","selectElement","optionElement","_AnnotationElement4","IGNORE_TYPES","selector","parentElement","parentLeft","parentWidth","BACKGROUND_ENLIGHT","dateObject","pin","unpin","_AnnotationElement5","_AnnotationElement6","_AnnotationElement7","square","_AnnotationElement8","circle","_AnnotationElement9","coordinate","polyline","_PolylineAnnotationEl","_AnnotationElement10","_AnnotationElement11","inkList","_AnnotationElement12","_AnnotationElement13","_AnnotationElement14","_AnnotationElement15","_AnnotationElement16","_AnnotationElement17","_super23","_this6$data$file","AnnotationLayer","sortedAnnotations","popupAnnotations","_sortedAnnotations","_iterator6","_step6","renderTextLayer","MAX_TEXT_DIVS_TO_RENDER","NonWhitespaceRegexp","isAllWhitespace","appendText","geom","styles","textDiv","textDivProperties","fontHeight","fontAscent","shouldScaleText","absScaleX","absScaleY","angleCos","angleSin","divWidth","divHeight","render","textDivs","textDivsLength","findPositiveMin","expand","expanded","expandBounds","divProperties","boxScale","boxes","expandBoundsLTR","fakeBoundary","horizon","boundary","horizonPart","affectedBoundary","maxXNew","xNew","changedHorizon","lastBoundary","useBoundary","TextLayerRenderTask","textContentStream","textContentItemsStr","enhanceTextSelection","styleCache","_textDiv$style","_this$_layoutTextCtx$","timeout","textItems","textStyles","expandDivs","transformBuf","paddingBuf","divProps","renderParameters","SVGGraphics","opListToTree","opTree","opListElement","pf","pm","SVG_DEFAULTS","XML_NS","XLINK_NS","convertImgDataToPng","PNG_HEADER","CHUNK_WRAPPER_SIZE","crcTable","writePngChunk","deflateSync","literals","deflateSyncUncompressed","maxBlockLength","deflateBlocks","idat","bitDepth","colorType","offsetLiterals","offsetBytes","_y","ihdr","pngLength","SVGExtraState","clipCount","maskCount","shadingCount","transformMatrix","svgElement","operatorIdMapping","opTreeElement","lineWidthScale","textMatrix","strokeAlpha","fillAlpha","_args$","tilingId","_Util$applyTransform","_Util$applyTransform2","tx0","ty0","_Util$applyTransform3","_Util$applyTransform4","tx1","ty1","_Util$singularValueDe","_Util$singularValueDe2","xscale","yscale","txstep","tystep","tiling","shadingId","gradient","point0","point1","focalPoint","circlePoint","focalRadius","circleRadius","colorStop","clipId","clipPath","clipElement","textRise","_iterator7","_step7","_step7$value","imgSrc","cliprect","imgEl","definitions","rootGroup","clipGroup","_network_utils","http","https","fileUriRegex","parseUrl","sourceUrl","parsedUrl","PDFNodeStreamFsFullReader","PDFNodeStreamFullReader","PDFNodeStreamFsRangeReader","PDFNodeStreamRangeReader","BaseFullReader","BaseRangeReader","createRequestOptions","_BaseFullReader","handleResponse","getResponseHeader","_validateRangeRequest","allowRangeRequests","_BaseRangeReader","_BaseFullReader2","stat","_BaseRangeReader2","createResponseStatusError","extractFilenameFromHeader","validateRangeRequestCapabilities","validateResponseStatus","_content_disposition","isHttp","rangeChunkSize","disableRange","returnValues","contentEncoding","contentDisposition","getFilenameFromContentDispositionHeader","needsEncodingFixup","toParamRegExp","rfc2616unquote","rfc5987decode","rfc2047decode","fixupEncoding","rfc2231getparam","_filename","_filename2","attributePattern","textdecode","contentDispositionStr","_match","_match2","quot","_matches$_n","_quot","_part","quotindex","extvalue","encodingend","langvalue","OK_RESPONSE","PARTIAL_CONTENT_RESPONSE","getArrayBuffer","xhr","NetworkManager","listeners","xhrId","pendingRequest","xhrStatus","ok_response_on_range_request","rangeHeader","PDFNetworkStreamFullRequestReader","PDFNetworkStreamRangeRequestReader","fullRequestXhrId","fullRequestXhr","createFetchOptions","withCredentials","abortController","createHeaders","httpHeaders","PDFFetchStreamReader","PDFFetchStreamRangeReader","_extends","InterceptorsStorage","_proto","interceptor","interceptorsSet","payload","interceptors","RetryManager","maxAttempts","delayFactor","fuzzFactor","initialDelay","_temp","Retry","_proto2","delayDelta","lowValue","highValue","window","httpResponseHandler","decodeResponseBody","responseBody","cause","contentTypeHeader","_contentType$split","parseHeaders","libModule","uri","requestInterceptorPayload","updatedPayload","readystatechange","loadFunc","getBody","isJson","errorFunc","timeoutTimer","aborted","responseInterceptorPayload","failureResponse","_updatedPayload","_updatedPayload2","sync","firefoxBugTakenEffect","errorData","computeSeconds","dflt","defaultKey","keyValueDelim","groupDelim","kv","cue","regionList","oInput","consumeTimeStamp","consumeCueSettings","settings","vals","vals0","skipWhitespace","nextToken","consume","unescape","shouldAdd","tagName","rootDiv","tagStack","classes","bgColor","colorName","propName","propValue","currentRange","cueDiv","nodeStack","pushNodes","nextTextNode","track","trackList","unit","styleOptions","textPos","lh","rects","axis","toMove","intersectArea","reference","styleBox","containerBox","boxPositions","findBestPosition","bestPosition","specifiedPosition","percentage","boxPosition","linePos","maxPosition","initialAxis","calculatedPercentage","WebVTT","cuetext","cues","overlay","paddedOverlay","shouldCompute","vttjs","collectNextLine","parseRegion","parseTimestampMap","parseHeader","alreadyCollectedLine","hasSubstring","vtt","align","startTime","_id","_pauseOnExit","_startTime","_endTime","_text","_region","_vertical","_snapToLines","_line","_lineAlign","_position","_positionAlign","_size","_align","setting","scroll","_width","_lines","_regionAnchorX","_regionAnchorY","_viewportAnchorX","_viewportAnchorY","_scroll","browserIndexModule","resolveUrl","relativeUrl","protocolLess","removeLocation","newUrl","callbacks","_length","atob","b64Text","decodedString","nextNewline","byterangeString","keyvalue","parseAttributes","attrs","attr","mapper","mappedLine","newLine","subkey","clientAttributePattern","isHexaDecimal","isDecimalFloating","expression","customType","dataParser","mapFn","manifest","serverControl","targetDuration","partTargetDuration","hb","phb","minTargetDuration","minPartDuration","uris","currentUri","currentMap","hasParts","defaultMediaGroups","widevineUuid","currentTimeline","lastByterangeEnd","lastPartByterangeEnd","dateRangeTags","mediaGroup","rendition","def","byterange","mediaGroupType","lastProgramDateTime","programDateTime","segmentIndex","partIndex","isPart","otherHint","report","dateRange","endOnNextYes","newDateInSeconds","dateRangeWithSameId","dateRangeToFind","addDef","currentVersion","targetVersion","identifier","missing","translateLegacyCodec","codec","orig","profile","avcLevel","profileHex","avcLevelHex","parseCodecs","codecString","codecs","codecType","codecsFromDefault","master","audioGroupId","audioGroup","audioType","isAudioCodec","isTextCodec","getMimeForCodec","browserSupportsCodec","withMMS","muxerSupportsCodec","simpleTypeFromSourceType","countBits","countBytes","isArrayBufferView","toUint8","bytesToNumber","_ref$signed","signed","_ref$le","le","exponent","numberToBytes","_temp2","_ref2$le","byteCount","byteIndex","stringIsBytes","concatTypedArrays","buffers","totalLen","tempBuffer","bytesMatch","_temp3","_ref3$offset","_ref3$mask","bByte","aByte","forEachMediaGroup","mediaType","groupKey","labelKey","mediaProperties","predicate","oc","NAMESPACE","conventions","Class","pt","DOMException","isHTML","nodeFilter","refresh","inc","newAttr","oldAttr","namespaceURI","localName","DOMImplementation","qualifiedName","doctype","publicId","systemId","newChild","refChild","oldChild","deep","parentNode","isTextNode","parentChildNodes","docTypeNode","hasElementChildThatIsNotChild","nodeChildNodes","nodeChildElements","parentElementChild","_inDocumentAssertion","cp","newFirst","newLast","pre","importedNode","rtv","classNames","classNamesSet","nodeClassNames","nodeClassNamesSet","Element","newText","newNode","isHtml","refNode","visibleNamespaces","prefixedNodeName","defaultNS","ai","nsi","pubid","sysid","sub","node2","attrs2","getTextContent","dom","freeze","ParseError","locator","XMLReader","defaultNSMap","entityMap","domBuilder","defaultNSMapCopy","errorHandler","fixedFromCharCode","surrogate1","surrogate2","entityReplacer","lineEnd","linePattern","lineStart","parseStack","closeMap","tagStart","localNSMap","endMatch","endIgnoreCaseMach","currentNSMap","locator2","appendElement","addAttribute","qname","qName","nsp","nsPrefix","elStartEnd","elEndStart","matchs","reg","sax","DOMParser","errorImpl","isCallback","build","ins","charNode","comm","impl","dt","hander","lists","keyFunction","indexRange","startRange","endRange","endNumber","timescale","sourceDuration","periodDuration","segmentDuration","NOW","clientOffset","availabilityStartTime","periodStart","minimumUpdatePeriod","timeShiftBufferDepth","periodStartWC","segmentCount","availableStart","availableEnd","startNumber","sectionDuration","initialization","presentationTime","initSegment","segmentTimeInfo","playlist","sidx","timeline","sidxByteRange","sidxEnd","mediaReferences","endIndex","timelineStarts","playlists","mediaGroupPlaylists","mediaSequence","oldPlaylists","newPlaylists","oldPlaylist","firstNewSegment","oldMatchingSegmentIndex","oldSegment","oldManifest","newManifest","playlistsByBaseUrl","cur","allPlaylists","playlistGroup","mergedPlaylists","sidxMapping","sidxKey","sidxMatch","discontinuitySequence","discontinuityStarts","isAudioOnly","m3u8Attributes","vttPlaylist","mainPlaylist","formattedPlaylists","role","roleLabel","formatted","firstLabel","captionServices","svcObj","svc","service","mediaGroupObject","labelContents","dashPlaylists","locations","contentSteering","previousManifest","eventStream","suggestedPresentationDelay","videoPlaylists","audioPlaylists","vttPlaylists","organizedAudioGroup","organizedVttGroup","playlistTimelineStarts","segmentTimeline","media","sIndex","segmentTime","nextS","templateValues","mapSegment","presentationTimeOffset","segmentUrl","segmentUrls","segmentUrlMap","segmentUrlObject","segmentInfo","segmentAttributes","segmentsFn","segmentsInfo","representations","parsedValue","parseFn","references","baseUrlElements","baseUrlElement","initialBaseUrl","resolvedBaseUrl","finalBaseUrl","adaptationSet","segmentTemplate","segmentList","segmentBase","segmentTimelineParentNode","segmentInitializationParentNode","segmentInitialization","adaptationSetAttributes","adaptationSetBaseUrls","adaptationSetSegmentInfo","representation","repBaseUrlElements","repBaseUrls","representationSegmentInfo","contentProtectionNodes","keySystem","psshNode","pssh","period","eventStreamAttributes","schemeIdUri","eventAttributes","periodAttributes","periodBaseUrls","periodSegmentInfo","roleAttributes","accessibility","labelVal","contentProtection","mpdAttributes","mpdBaseUrls","adaptationSets","contentSteeringNodes","eventHandler","infoFromContentSteeringTag","priorPeriodAttributes","mpdType","mpd","manifestUri","periodNodes","periods","priorPeriod","manifestString","xml","UTCTimingNode","parsedManifestInfo","getUint64","uint8","dv","referenceCount","getId3Size","returnSize","footerPresent","getId3Offset","normalizePath","normalizePaths","findBox","getLength","getvint","removeLength","valueBytes","getInfinityDataSize","innerid","dataHeader","findEbml","discardEmulationPreventionBytes","newData","sourceIndex","findNal","dataType","nalLimit","nalStart","nalsFound","nalOffset","nalType","findH264Nal","findH265Nal","aac","mp3","webm","docType","mkv","mp4","mov","gp","ac3","flac","ogg","avi","wav","h264","h265","isLikelyFn","detectContainerForBytes","isLikelyFmp4MediaSegment","seconds","sampleRate","timestamp","timelineStartPts","keepOriginalTimestamps","original","document$1","lvl","lvlRegExp","splice","window$1","logByType","subName","subDelimiter","subStyles","resultDelimiter","resultStyles","newName","newDelimiter","newStyles","fname","historyItem","initial","accum","getValue","USER_AGENT","classToCheck","classesToAdd","classesToRemove","classToToggle","knownBooleans","attrVal","transformValue","boxTarget","boxW","boxH","computedStyleValue","win","cssRules","vids","audios","divs","mediaEls","mediaEl","wait","vjs","returnTrue","returnFalse","deprecatedProps","handlers","handlersCopy","removeType","elemData","targetData","immediate","cancel","debounced","later","ael","oldTimeout","fnName","isTargetingSelf","removeListenerOnDispose","removeRemoverOnTargetDispose","largs","targetOrType","typeOrListener","eventBusKey","stateUpdates","changes","defaultState","str1","str2","player","primaryCode","primaryLang","localizedString","currentChild","iconName","xmlnsURL","iconContainer","svgEl","useEl","componentName","componentClassName","ComponentClass","childFound","compEl","parentOptions","handleAdd","workingChildren","Tech","wchild","readyQueue","skipListeners","widthOrHeight","computedWidthOrHeight","boundingClientRect","center","touchStart","firstTouch","tapMovementThreshold","touchTimeThreshold","couldBeTap","xdiff","ydiff","noTap","touchHolding","touchEnd","timeoutId","interval","intervalId","idName","cancelName","isVisibleStyleProperty","elementStyle","thisVisibility","isBeingRendered","isVisible","elementCenter","pointContainer","ComponentToRegister","isTech","isComp","Player","players","playerNames","pname","valueIndex","rangeIndex","timeRangesObj","guide","gm","gh","customImplementation","buffered","bufferedDuration","tech","trackEls","trackObjs","trackEl","addedTrack","closeable","close","contentEl","parentEl","nextSiblingEl","closeButton","activeEl","playerEl","focusableEls","focusIndex","allChildren","tracks","rtrack","trackElements","trackElement","trackElement_","oldLength","defineProp","trackProps","newLabel","pathParts","winLoc","srcContent","errors","crossOrigin","default_","activeCues","changed","disposeHandler","newMode","ct","active","originalCue","removeCue","newEnabled","newSelected","readyState","numBufferedPercent","_isScrubbing","_seconds","trackListChanges","remoteTracks","handleAddTrack","handleRemoveTrack","updateDisplay","textTracksChanges","manualCleanup","htmlTrackElement","cb","_type","srcObj","_Tech","can","originalFn","middleware","mw","callMethod","middlewareValue","returnValue","mws","mwFactory","mwf","mwi","lastRun","mwrest","_src","ext","matchingSources","newsrc","srcobj","mimetype","actualEvent","nextFocusedElement","isChildrenOfPlayer","currentComponent","focusableComponents","searchForChildrenCandidates","componentsArray","buttonContainer","searchForSuitableChild","suitableChild","curComp","currentFocusedComponent","currentPositions","candidates","bestCandidate","currentCenter","minDistance","candidate","candidateCenter","srcRect","targetRect","center1","center2","dx","spatialNavigation","options_","techName","localizedText","updateDisplayTextHandler","updateDisplayHandler","screenOrientation","changeOrientationEvent","modes","userPref","firstDesc","firstCaptions","preferredTrack","allowMultipleShowingTracks","showingTracks","descriptionsTrack","captionsSubtitlesTrack","textTrackDisplay","vjsTextTrackCues","controlBarHeight","playerHeight","vjsTextTrackCue","insetStyles","playerWidth","playerAspectRatio","videoAspectRatio","insetInlineMatch","insetBlockMatch","overrides","cueEl","isAudio","playerType","controlText","playPromise","playToggle","playFocus","oldNode","updateContent","progress","sizeKey","spatialNavOptions","spatialNavEnabled","horizontalSeek","bool","loadedText","separator","liveTracker","bufferedEnd","percent","seekBarRect","seekBarPoint","tooltipRect","playerRect","seekBarPointPx","spaceLeftOfPoint","spaceRightOfPoint","pullTooltipBy","liveWindow","secondsBehind","timeTooltip","currentTime","mouseDown","newTime","seekableStart","seekableEnd","mouseTimeDisplay","gotoFraction","seekBar","playProgressBar","seekBarEl","rangeBarRect","rangeBarPoint","volumeBarPointPx","volume","mouseVolumeLevelDisplay","volumeBarEl","volumeBarRect","volumeBarPoint","ariaValue","volumeBeforeDrag","orientationClass","vol","lastVolume","volumeToSet","playerOptions","currentVideoTime","childComponent","contentElType","relatedTarget","btn","childComponents","foundComponent","stepChild","buttonClass","handleClick","menu","titleEl","titleComponent","menuButtonClass","updateHandler","menuItemEl","changeHandler","selectedLanguageChangeHandler","referenceTrack","shouldBeSelected","selectedLanguage","allHidden","TrackMenuItem","remoteTextTrackEl","disabled","parentSpan","rate","rates","optionText","optionId","legendElement","selects","selectConfig","selectClassName","guid","textTrackSelect","id_","ElFgColorFieldset","ElBgColorFieldset","ElWinColorFieldset","defaultsDescription","resetButton","doneButton","textTrackSettingsColors","textTrackSettingsFont","trackSettingsControls","ttDisplay","RESIZE_OBSERVER_AVAILABLE","debouncedHandler_","unloadListener_","seekable","deltaTime","liveCurrentTime","isBehind","timeDiff","seekableEnds","seekableStarts","techEl","techAriaAttrs","techAriaAttr","srcUrls","docFrag","priority","innerDescriptor","appendWrapper","appendFn","retval","srcDescriptor","oldSetAttribute","oldLoad","crossoriginTracks","nodesLength","removeNodes","textTracks","metadataTracksPreFullscreenState","takeMetadataTrackSnapshot","restoreTrackMode","storedTrack","lowerCaseType","eventName","elTracks","techTracks","removeOldTracks","removeTracks","tagAttributes","settingsAttrs","loadstartFired","setLoadstartFired","triggerLoadstart","eventsToTrigger","isScrubbing","checkProgress","endFn","beginFn","video","srcUrl","sourceAttributes","sourceElement","sourceElements","videoPlaybackQuality","canControl","muted","playbackRate","closest","languagesToLower","playerOptionsCopy","parsedSVG","sprite","playerElIngest","divEmbed","deviceClassNames","defaultsStyleEl","links","linkEl","dimension","privDimension","parsedVal","aspectRatio","idClass","ratioParts","ratioMultiplier","titleTechName","camelTechName","autoplay","techOptions","TechClass","eventObj","safety","resolveMuted","previouslyMuted","restoreMuted","mutedPromise","sourceElSources","sourceEls","matchingSourceEls","sourceObj","updateSourceCaches","playerSrc","eventSrc","techSrc","queued","timeWhenWaiting","timeUpdateListener","targetPlayer","isFs","isSrcReady","isSafariOrIOS","percentAsDecimal","defaultMuted","isFS","oldValue","fullscreenOptions","offHandler","fsOptions","isPiP","pipContainer","pipWindow","pipVideo","userActions","allowedInputTypes","hotkeys","fullscreenKey","keydownEvent","muteKey","playPauseKey","FSToggle","techs","findFirstPassingTechSourcePair","outerArray","innerArray","tester","outerChoice","innerChoice","foundSourceAndTech","flip","finder","isRetry","middlewareSource","retry","stopListeningForErrors","sourceTech","currentTimeDisplay","durationDisplay","progressControl","remainingTimeDisplay","techAutoplay","newPoster","hookFunction","newErr","triggerSuppressedError","mouseInProgress","lastMoveX","lastMoveY","handleActivity","handleMouseMove","handleMouseDown","handleMouseUpAndMouseLeave","controlBar","inactivityTimeout","activityCheck","playerChildren","exitPromises","modal","currentBreakpoint","candidateBreakpoint","breakpoints","artist","artwork","poster","tt","baseOptions","tagOptions","dataSetup","childName","newRates","navigator","plugin","basicPluginWrapper","PluginSubClass","oldName","rootNode","PlayerComponent","nId","playerId","comp","qualityLevel","removed","originalPluginFn","qualityLevelList","_resolveUrl","req","bufferedRangesStr","timeRanges","bufferA","bufferB","arity","extents","strArr","timeRangesList","lastSegment","preloadSegment","preloadHints","partCount","main","endSequence","expired","backward","forward","defaultDuration","durationList","durations","useSafeLiveEnd","liveEdgePadding","lastSegmentEndTime","startingSegmentIndex","startingPartIndex","exactManifestTimings","partsAndSegments","partAndSegment","canUseFudgeFactor","isExactlyAtTheEnd","isExtremelyCloseToTheEnd","excluded","bandwidth","bytesReceived","currentBandwidth","AUDIO","groupName","variant","CODECS","onwarn","oninfo","customTagParsers","customTagMappers","llhls","customParser","createGroupID","phonyUri","audioOnlyMain","groupId","firstSegment","dateRanges","pendingDateRange","dateRangeClasses","dateRangesToProcess","classList","requestType","parseFailure","isBadStatus","isFailure","errorMetadata","isBadStatusOrParseFailure","errorType","nextMSN","nextPart","parsedUri","update","oldSegments","newSegments","newSegment","baseUri","newMedia","unchangedCheck","oldMedia","mergedPlaylist","lastPart","lastDuration","isLive","renditions","BANDWIDTH","RESOLUTION","vhs","vhsOptions","mediaPlaylist","availableDateRanges","startingState","playlistString","playlistObject","oldRequest","shouldDelay","delay","mediaChange","mainPlaylistRef","isUpdate","pathway","oldPlaylistUri","oldPlaylistId","newPlaylistUri","newPlaylistId","updatedPlaylist","oldMediaPlaylist","basePlaylist","playlistId","baseID","newUri","newPlaylistID","newMediaPlaylist","newProps","baseURI","oldAttributes","keyIds","keysystem","keyId","reqResponse","requestSet","requestCallback","responseSet","responseCallback","XhrFunction","beforeRequest","_requestCallbackSet","_responseCallbackSet","xhrMethod","beforeRequestOptions","originalAbort","byterangeEnd","byterangeStart","ascii","playerTime","transmuxerPrependedSeconds","startOfSegment","offsetFromSegmentStart","videoTimingInfo","programTime","dateTimeObject","nextSegmentStart","lastSegmentStart","lastSegmentDuration","lastSegmentEnd","segmentEnd","comparisonTimeStamp","segmentDateTime","segmentTimeEpoch","matchedSegment","programTimeObject","retryCount","seekTo","pauseAfterSeek","mediaOffset","seekToTime","seekedCallback","id3Offset","finished","endRequestAndCallback","_bytes","progressListener","newPart","aSegment","bSegment","aByterange","bByterange","mainXml","newMain","oldMain","noChanges","addSidxSegmentsToPlaylist","playlistUpdate","oldSidxMapping","newSidxMapping","currentSidxInfo","savedSidxInfo","mediaGroupSidx","srcUrlOrPlaylist","mainPlaylistLoader","fin","parseSidx","REQUEST_TYPE","sidxContainer","sidxChanged","isFinalRendition","mainChanged","utcTiming","serverTime","endList","parsedManifest","mpl","mup","mediaID","mediaChanged","createMediaUpdateTimeout","metadataArray","eventStreamNode","defaultKID","workerObj","objectUrl","terminate","commonjsGlobal","Stream$8","flushSource","MAX_UINT32$1","getUint64$3","MAX_UINT32","dinf","esds","ftyp","mdat","mfhd","minf","moof","moov","mvex","mvhd","trak","tkhd","mdia","mdhd","hdlr","sdtp","stbl","stsd","traf","trex","trun$1","MAJOR_BRAND","MINOR_VERSION","AVC1_BRAND","VIDEO_HDLR","AUDIO_HDLR","HDLR_TYPES","VMHD","SMHD","DREF","STCO","STSC","STSZ","STTS","sequenceNumber","trackFragments","videoSample","audioSample","sps","pps","sequenceParameterSets","pictureParameterSets","avc1Box","hSpacing","vSpacing","trackFragmentHeader","trackFragmentDecodeTime","trackFragmentRun","sampleDependencyTable","upperWordBaseMediaDecodeTime","lowerWordBaseMediaDecodeTime","audioTrun","videoTrun","trunHeader","durationPresent","sizePresent","flagsPresent","compositionTimeOffset","bytesOffest","sample","mp4Generator","movie","groupNalsIntoFrames","nalUnits","currentNal","currentFrame","groupFramesIntoGops","currentGop","gops","extendFirstKeyFrame","createDefaultSample","sampleForFrame","generateSampleTable$1","baseDataOffset","concatenateNalData","nalsByteLength","numberOfNals","totalByteLength","generateSampleTableForFrame","concatenateNalDataForFrame","frameUtils$1","highPrefix","lowPrefix","zeroFill","makeTable","metaTable","silence","silence_1","coneOfSilence","ONE_SECOND_IN_TS$4","secondsToVideoTs","secondsToAudioTs","videoTsToSeconds","audioTsToSeconds","audioTsToVideoTs","videoTsToAudioTs","metadataTsToSeconds","clock$2","clock$1","sumFrameByteLengths","currentObj","prefixWithSilence","audioAppendStartTs","videoBaseMediaDecodeTime","baseMediaDecodeTimeTs","frameDuration","audioGapDuration","audioFillFrameCount","audioFillDuration","silentFrame","firstFrame","trimAdtsFramesByEarliestDts","adtsFrames","earliestAllowedDts","generateSampleTable","concatenateFrameData","audioFrameUtils$1","ONE_SECOND_IN_TS$3","collectDtsInfo","clearDtsInfo","calculateTrackBaseMediaDecodeTime","baseMediaDecodeTime","minSegmentDts","trackDecodeInfo$1","USER_DATA_REGISTERED_ITU_T_T35","RBSP_TRAILING_BITS","parseSei","payloadType","payloadSize","userIdentifier","parseUserData","sei","parseCaptionPackets","pts","userData","discardEmulationPreventionBytes$1","emulationPreventionBytesPositions","captionPacketParser","Stream$7","cea708Parser","CaptionStream$2","Cea608Stream","Cea708Stream","newCaptionPackets","flushType","ccStream","CHARACTER_TRANSLATION_708","get708CharFromCode","newCode","within708TextBlock","Cea708Window","windowNum","Cea708Service","serviceNum","beforeRowOverflow","captionServiceEncodings","serviceProps","serviceName","byte0","byte1","packet708","packetData","isExtended","isMultiByte","extended","charCodeArray","toHexString","byteArray","firstByte","secondByte","winAttr","displayedText","winId","penAttr","penColor","penLoc","CHARACTER_TRANSLATION","getCharFromCode","BOTTOM_ROW","ROWS","createDisplayBuffer","dataChannel","char0","char1","indentations","logWarning","newBaseRow","baseRow","captionStream","streamTypes","Stream$6","MAX_TS","RO_THRESH","TYPE_SHARED","handleRollover$1","TimestampRolloverStream$1","lastDTS","referenceDTS","timestampRolloverStream","typedArrayIndexOf$1","typedArrayIndexOf","textEncodingDescriptionByte","percentEncode$1","parseUtf8","parseIso88591$1","parseSyncSafeInteger$1","frameParsers","mimeTypeEndIndex","descriptionEndIndex","LINK_MIME_TYPE","parseId3Frames$1","frameSize","frameHeader","frameStart","tagSize","hasExtendedHeader","parseId3","Stream$5","StreamTypes$3","id3","MetadataStream","metadataStream","Stream$4","CaptionStream$1","StreamTypes$2","TimestampRolloverStream","TransportPacketStream","TransportParseStream","ElementaryStream","MP2T_PACKET_LENGTH$1","SYNC_BYTE$1","bytesInBuffer","everything","parsePsi","parsePat","parsePmt","psi","pat","pmt","sectionLength","tableEnd","programInfoLength","pid","segmentHadPmt","audio","timedMetadata","programMapTable","parsePes","pes","ptsDtsFlags","startPrefix","flushStream","forceFlush","packetFlushable","m2ts$1","m2ts_1","Stream$3","ONE_SECOND_IN_TS$2","AdtsStream$1","ADTS_SAMPLING_FREQUENCIES$1","handlePartialSegments","frameNum","frameLength","protectionSkipBytes","oldBuffer","sampleCount","adtsFrameDuration","adts","ExpGolomb$1","workingData","workingBytesAvailable","workingWord","workingBitsAvailable","workingBytes","availableBytes","valu","leadingZeroCount","clz","expGolomb","Stream$2","ExpGolomb","H264Stream$1","NalByteStream","PROFILES_WITH_OPTIONAL_SPS_DATA","syncPoint","swapBuffer","nalByteStream","trackId","currentPts","currentDts","readSequenceParameterSet","skipScalingList","expGolombDecoder","lastScale","nextScale","deltaScale","frameCropLeftOffset","frameCropRightOffset","frameCropTopOffset","frameCropBottomOffset","profileIdc","levelIdc","profileCompatibility","chromaFormatIdc","picOrderCntType","numRefFramesInPicOrderCntCycle","picWidthInMbsMinus1","picHeightInMapUnitsMinus1","frameMbsOnlyFlag","scalingListCount","sarRatio","aspectRatioIdc","ADTS_SAMPLING_FREQUENCIES","parseId3TagSize","isLikelyAacData$1","parseSyncSafeInteger","parseIso88591","parseAdtsSize","lowThree","middle","highTwo","parseType$4","parseSampleRate","parseAacTimestamp","Stream$1","aacUtils","AacStream$1","timeStamp","bytesLeft","tempLength","AUDIO_PROPERTIES$1","audioProperties","VIDEO_PROPERTIES$1","videoProperties","frameUtils","audioFrameUtils","trackDecodeInfo","m2ts","clock","AdtsStream","H264Stream","AacStream","isLikelyAacData","ONE_SECOND_IN_TS$1","AUDIO_PROPERTIES","VIDEO_PROPERTIES","VideoSegmentStream","AudioSegmentStream","Transmuxer","CoalesceStream","retriggerForStream","addPipelineLogRetriggers","transmuxer","pipeline","arrayEquals","generateSegmentTimingInfo","startDts","startPts","endDts","endPts","prependedContentDuration","ptsOffsetFromDts","decodeDuration","presentationDuration","earliestDts","videoClockCyclesOfSilencePrefixed","gopsToAlignWith","nalUnit","gopForFusion","firstGop","lastGop","alignedGops","gop","halfSecond","allowableOverlap","nearestDistance","dtsDistance","nearestGopObj","currentGopObj","alignIndex","gopIndex","nalCount","alignEndIndex","matchFound","trimIndex","newGopsToAlignWith","hasFlushed","videoTrack","audioTrack","timelineStartInfo","id3Frame","isAac","toUnsigned$3","toHexString$1","parseType$3","parseType_1","toUnsigned$2","parseType$2","findBox$2","subresults","findBox_1","toUnsigned$1","getUint64$2","tfdt","parseTfdt$2","parseSampleFlags$1","parseSampleFlags_1","parseSampleFlags","trun","dataOffsetPresent","firstSampleFlagsPresent","sampleDurationPresent","sampleSizePresent","sampleFlagsPresent","sampleCompositionTimeOffsetPresent","parseTrun$2","tfhd","baseDataOffsetPresent","sampleDescriptionIndexPresent","defaultSampleDurationPresent","defaultSampleSizePresent","defaultSampleFlagsPresent","durationIsEmpty","defaultBaseIsMoof","parseTfhd$2","window_1","CaptionStream","findBox$1","parseTfdt$1","parseTrun$1","parseTfhd$1","window$2","mapToSample","approximateOffset","findSeiNals","avcStream","avcView","seiNal","lastMatchedSample","matchingSample","parseSamples","truns","defaultSampleDuration","defaultSampleSize","allSamples","trackRun","parseCaptionNals","videoTrackId","trafs","mdats","captionNals","mdatTrafPairs","matchingTraf","headerInfo","parseEmbeddedCaptions","trackNals","CaptionParser","isInitialized","segmentCache","parsedCaptions","parsingPartial","videoTrackIds","timescales","parsedData","cachedSegment","nals","nal","captionParser","uint8ToCString$1","curChar","retString","uint8ToCString","getUint64$1","parseEmsgBox","boxData","scheme_id_uri","presentation_time","presentation_time_delta","event_duration","message_data","emsgBox","isValidEmsgBox","scaleTime","timeDelta","emsg","hasScheme","isValidV0Box","isDefined","isValidV1Box","emsg$1","toUnsigned","parseType$1","parseTfhd","parseTrun","parseTfdt","compositionStartTime","getVideoTrackIds","getTracks","getTimescaleFromMediaHeader","getEmsgID3","parseId3Frames","traks","lowestTime","baseTime","trafBoxes","parsedTfhd","parsedTfdt","parsedTrun","hdlrs","tkhds","handlerType","tkhdVersion","sampleDescriptions","codecBox","codecConfig","codecConfigType","segmentData","emsgBoxes","parsedBox","parsedId3Frames","probe$2","StreamTypes$1","parsePid","parsePayloadUnitStartIndicator","parseAdaptionField","parseType","pmtPid","pusi","payloadOffset","parsePesType","parsePesTime","parseNalUnitType","videoPacketContainsKeyFrame","frameBuffer","frameI","frameSyncPoint","foundKeyFrame","probe$1","StreamTypes","handleRollover","probe","ONE_SECOND_IN_TS","MP2T_PACKET_LENGTH","SYNC_BYTE","parsePsi_","parseAudioPes_","pesType","parsed","endLoop","parseVideoPes_","firstKeyFrame","adjustTimestamp_","baseTimestamp","audioBaseTimestamp","videoBaseTimestamp","inspectAac_","audioCount","audioTimescale","inspectTs_","inspect","isAacData","tsInspector","wireTransmuxerEvents","initArray","gopInfo","timingInfo","videoSegmentTimingInfo","audioSegmentTimingInfo","trackInfo","audioTimingInfo","MessageHandlers","id3Frames","baseStartTime","tsStartTime","timeInfo","timestampOffset","transmuxedData","captionStreams","videoFrameDtsTime","videoFramePtsTime","audioAppendStart","remux","onData","onTrackInfo","onAudioTimingInfo","onVideoTimingInfo","onVideoSegmentTimingInfo","onAudioSegmentTimingInfo","onId3","onCaptions","onDone","onEndedTimeline","onTransmuxerLog","isEndOfTimeline","triggerSegmentEventFn","waitForEndedTimelineEvent","handleMessage","handleError","term","endAction","listenForEndEvent","activeXhrs","progressEvent","finishProcessingFn","errorObj","keyInfo","parseError","responseType","newBytes","trackInfoFn","timingInfoFn","videoSegmentTimingInfoFn","audioSegmentTimingInfoFn","id3Fn","captionsFn","endedTimelineFn","dataFn","doneFn","fmp4Tracks","isMuxed","audioStartFn","audioEndFn","videoStartFn","videoEndFn","finish","dispatchType","probeResult","bytesAsUint8Array","finishLoading","emsgData","encryptedBytes","decryptionWorker","decryptionHandler","decryptError","keyBytes","decryptedBytes","didError","segmentFinish","loadendState","abortFn","progressFn","xhrOptions","keyRequestOptions","keyRequestCallback","keyXhr","mapKeyRequestOptions","mapKeyRequestCallback","mapKeyXhr","initSegmentOptions","initSegmentRequestCallback","initSegmentXhr","segmentRequestOptions","segmentRequestCallback","segmentXhr","activeXhr","mediaAttributes","codecList","codecObj","codecInfo","defaultCodecs","sortFn","cmp","leftBandwidth","rightBandwidth","leftWidth","rightWidth","playerBandwidth","limitRenditionByPlayerDimensions","playlistController","sortedPlaylistReps","rep","enabledPlaylistReps","bandwidthPlaylistReps","highestRemainingBandwidthRep","bandwidthBestRep","chosenRep","haveResolution","resolutionBestRepList","resolutionBestRep","resolutionPlusOneList","resolutionPlusOneSmallest","resolutionPlusOneRep","leastPixelDiffRep","leastPixelDiffList","pixelRatio","decay","average","lastSystemBandwidth","timeUntilRebuffer","syncController","compatiblePlaylists","enabledPlaylists","rebufferingEstimates","numRequests","rebufferingImpact","noRebufferingPlaylists","estimate","segmentObj","resolvedUri","inbandTextTracks","instreamId","captionService","captionArray","Cue","videoDuration","metadataTrack","cuesArray","cuesGroupedByStartTime","timeSlot","sortedStartTimes","cueGroup","finiteDuration","nextTime","uniqueCues","cueKey","currentTimePts","updatedBuffer","akeys","bkeys","targetTime","timelineSegments","loaderType","startingMedia","trimTime","maxTrimTime","seq","segmentLen","hasPartIndex","zeroBasedPartCount","overrideCheck","timelineChangeController","audioDisabled","lastMainTimelineChange","pendingAudioTimelineChange","pendingMainTimelineChange","hasPendingTimelineChanges","differentPendingChanges","segmentLoader","timingInfos","maxDuration","typeTimingInfo","sourceType","isSegmentWayTooLong","isSegmentSlightlyTooLong","segmentTooLongMessage","isEncrypted","isMediaInitialization","newState","hasAudio","hasVideo","storedMap","storedKey","newPlaylist","oldId","mediaSequenceDiff","mediaIndex","isFmp4","removesRemaining","removeFinished","appendedLastSegment","appendedLastPart","bufferedTime","preloaded","haveEnoughBuffer","syncInfo","mediaInfoForTime","nextSegment","hasIndependentSegments","lastSegmentLastPart","ended","finalTargetTime","mediaSequenceSyncInfo","nextMediaSequenceSyncInfo","independent","isSyncRequest","forceTimestampOffset","getMediaInfoForTime","audioBufferedEnd","measuredBandwidth","requestTimeRemaining","timeUntilRebuffer$1","switchCandidate","timeSavedBySwitching","minimumTimeSaving","simpleSegment","timeType","timingInfoProperty","captionData","captionTracks","captionTrack","trackName","callQueue","fun","loadQueue","useVideoTimingInfo","firstVideoFrameTimeForData","audioBuffered","videoBuffered","audioBufferStart","audioBufferEnd","videoBufferStart","videoBufferEnd","timeToRemoveUntil","segmentTimingInfo","isEndOfStream","isWalkingForward","isDiscontinuity","removeToTime","previousSegment","timelineMapping","currentStart","currentVideoTimestampOffset","waitForVideo","waitForAudio","illegalMediaSwitchError","didChange","prioritizedTimingInfo","segmentDurationMessage","badSegmentGuess","badPartGuess","segmentProcessingTime","segmentProcessingThroughput","sourceUpdater","sourceBuffer","queueEntry","queueIndex","titleType","mediaSource","onError","mime","newCodecBase","oldCodec","bufferedRangesForType","descriptiveString","que","uintArray","uInt8Buffer","combinedByteLength","combinedSegment","checkTimestampOffset","decodeBytesToString","mapData","mappingObj","MPEGTS","LOCAL","firstStart","lastStart","valueIn90khz","referenceIn90khz","mediaTime","adOffset","adTotal","appended","segmentSyncInfo","partsSyncInfo","partSyncInfo","syncInfoData","startingMediaSequence","startingTime","newStorage","newDiagnostics","currentMediaSequence","prevSyncInfoData","segmentStart","segmentIsAppended","currentPartStart","partStart","partEnd","partIsAppended","fallback","mediaSequenceSync","lastDistance","datetimeMapping","discontinuity","discontinuitySync","syncPoints","syncPointInfo","selectedSegment","bestSyncPoint","bestDistance","bestStrategy","newDistance","lastRemovedSegment","playlistTimestamp","shouldSaveTimelineMapping","didCalculateSegmentTimeMapping","dateTime","mediaIndexDiff","accuracy","unpad","precompute","encTable","decTable","sbox","sboxInv","xInv","x4","x8","tEnc","tDec","aesTables","AES","keyLen","encKey","decKey","encrypted0","encrypted1","encrypted2","encrypted3","a2","nInnerRounds","kIndex","table0","table1","table2","table3","AsyncStream","job","ntoh","initVector","encrypted32","decipher","decrypted32","init0","init1","init2","init3","wordIx","Decrypter","BigInt","createTransferableMessage","playlistLoader","mainSegmentLoader","activeTrack","activeGroup","previousActiveLoader","lastGroup","lastTrack","excludePlaylist","defaultTrack","requestOptions","mediaGroups","logger_","variantLabel","variants","groupKeys","groupPropertyList","mediaTypes","activeTrack_","audioSegmentLoader","onAudioTrackChanged","steeringTag","steeringUri","reloadUri","errorInfo","retrySeconds","steeringManifestJson","parsedMetadata","steeringUrl","steeringUrlObject","proxyServerUrlObject","urlObject","networkThroughput","pathwayKey","throughputKey","steeringJson","nextPathway","pathwaysByPriority","isExcluded","proxyURI","steeringURI","ttl","ttlMS","baseURL","newTag","currentPlaylist","nextPlaylist","bufferLowWaterLine","bufferHighWaterLine","bufferBasedABR","sharedLogLine","isBuffered","forwardBuffer","maxBufferLowWaterLine","nextBandwidth","currBandwidth","logLine","externVhs","useCueTags","playlistExclusionDuration","enableLowInitialPlaylist","cacheEncryptionKeys","leastPixelDiffSelector","experimentalUseMMS","maxPlaylistRetries","segmentLoaderSettings","onLoad","getBandwidth","timeToLoadedDataStart","newId","dashMediaPlaylists","defaultPlaylists","defaultGroup","requestTimeout","selectedMedia","defaultDemuxed","audioGroupKeys","updateCodecs","mainMediaInfo","absolutePlaylistEnd","playlistToExclude","reIncludeDelay","reincluded","excludeUntil","logFn","errorMessage","delayDuration","fnNames","loaders","dontFilterPlaylist","audioSeekable","mainSeekable","oldEnd","oldStart","usingAudioLoader","hasMainMediaInfo","hasAudioMediaInfo","playlistCodecs","supportFunction","unsupportedCodecs","unsupportedAudio","supporter","switchMessages","newCodec","codecCount_","videoDetails","audioDetails","exclusionReasons","variantCodecs","variantCodecCount","variantVideoDetails","variantAudioDetails","newMax","availablePathways","newPathways","serviceLocation","currentPathway","didEnablePlaylists","pathwayId","differentPathwayId","noExcludeUntil","currentPathwayClones","nextPathwayClones","oldClone","aParams","bParams","nonUsableKeyStatusCount","NON_USABLE","keyIdSet","USABLE","hasUsableKeyStatus","nonUsableExclusion","isNonHD","excludedForNonUsableKey","formattedKeyIdString","playlistID","changePlaylistFn","incompatible","currentlyEnabled","vhsHandler","qualityChangeFunction","playHandler","canPlayHandler","waitingHandler","cancelTimerHandler","loaderTypes","loaderChecks","setSeekingHandlers","isBufferedDifferent","isAfterSeekableRange","minAppendedDuration","bufferedToCheck","nextRange","livePoint","allowSeeksWithinUnsafeLiveWindow","allowedEnd","isLLHLS","gap","lastVideoRange","videoRange","audioRange","scheduledCurrentTime","gaps","lastCalled","localOptions","loadedMetadataHandler","setSource","cleanupEvents","reinitPlugin","qualityLevels","selectedIndex","keySystemOptions","audioPlaylist","videoContentType","audioContentType","keySystemContentTypes","keySystems","keySystemsArr","keySystemsOptions","keySystemsObj","sourceKeySystems","audioMedia","mainPlaylists","keySystemsOptionsArr","initializationFinishedPromises","keySessionCreatedPromises","sourceOptions","storedObject","objectToStore","canItPlay","_player","fullscreenElement","customPixelRatio","playbackWatcherOptions","defaultSelector","selectPlaylist","throughput","playerBandwidthEst","networkInformation","tenMbpsAsBitsPerSecond","networkInfoBandwidthEstBitsPerSec","invBandwidth","invThroughput","audioPlaylistLoader","didSetupEmeOptions","playlistControllerEvents","playbackWatcher","simpleType","overrideNative","defaultOverrideNative"],"mappings":"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AAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,KAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAA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AAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,O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,EAAGA,CAAY,EAAG,CAAC,EAAGA,CAAY,EAAG,CAAC,EAAGA,CAAY,EAAG,CAAC,EAAGA,CAAY,EAAG,CAAC,EAAGA,CAAY,EAAG,CAAC,EAAGA,CAAY,EAAG,CAAC,EAAGA,CAAY,EAAG,CAAC,EAAGA,CAAY,EAAG,CAAC,EAAGA,CAAY,EAAG,CAAC,EAAGD,CAAY,EAAG,CAAC,EAAGA,CAAY,EAAG,CAAC,EAAGA,CAAY,EAAG,CAAC,EAAGA,CAAY,EAAG,CAAC,EAAGA,CAAY,EAAG,CAAC,EAAGA,CAAY,EAAG,CAAC,EAAGA,CAAY,EAAG,CAAC,EAAGA,CAAY,EAAG,CAAC,EAAGA,CAAY,EAAG,CAAC,EAAGA,CAAY,EAAG,CAAC,EAAGA,CAAY,EAAG,CAAC,EAAGA,CAAY,EAAG,CAAC,EAAGA,CAAY,EAAG,CAAC,EAAGA,CAAY,EAAG,CAAC,EAAGA,CAAY,EAAG,CAAC,EAAGA,CAAY,EAAG,CAAC,EAAGD,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,EAAG,CAAC,EAAGA,CAAW,CAAC,EAC3xEQ,EAAc,CAAC,CAAC,GAAI,EAAE,EAAG,CAAC,GAAIZ,CAAQ,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,CAAC,EACnXa,EAAc,CAAC,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,IAAI,EAAG,CAAC,EAAG,IAAI,EAAG,CAAC,EAAG,IAAI,EAAG,CAAC,EAAG,IAAI,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,IAAI,EAAG,CAAC,EAAG,IAAI,EAAG,CAAC,EAAG,IAAI,EAAG,CAAC,EAAG,IAAI,EAAG,CAAC,EAAG,IAAI,EAAG,CAAC,EAAG,IAAI,EAAG,CAAC,EAAG,IAAI,EAAG,CAAC,EAAG,IAAI,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,IAAI,EAAG,CAAC,EAAG,IAAI,EAAG,CAAC,EAAG,IAAI,EAAG,CAAC,EAAG,IAAI,EAAG,CAAC,EAAG,IAAI,EAAG,CAAC,EAAG,IAAI,EAAG,CAAC,EAAG,IAAI,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,EAC13IC,EAAc,CAAC,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAId,CAAQ,EAAG,CAAC,GAAIA,CAAQ,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,GAAG,EAAG,CAAC,GAAI,GAAG,EAAG,CAAC,GAAI,GAAG,EAAG,CAAC,GAAI,GAAG,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,GAAG,EAAG,CAAC,GAAI,GAAG,EAAG,CAAC,GAAI,GAAG,EAAG,CAAC,GAAI,GAAG,EAAG,CAAC,GAAI,GAAG,EAAG,CAAC,GAAI,GAAG,EAAG,CAAC,GAAI,GAAG,EAAG,CAAC,GAAI,GAAG,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,GAAG,EAAG,CAAC,GAAI,GAAG,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,IAAI,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,CAAC,EAC/3Ce,EAAc,CAAC,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,GAAG,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,GAAI,GAAG,EAAG,CAAC,GAAI,GAAG,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,EAAG,CAAC,EAAG,EAAE,CAAC,EACpwDC,EAAc,CAAC,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,GAAI,EAAE,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAA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AAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,MACdA,EAAE,UAAY,MACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,MACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,MACdA,EAAE,UAAY,MACdA,EAAE,UAAY,KACdA,EAAE,QAAU,KACZA,EAAE,QAAU,KACZA,EAAE,QAAU,KACZA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,U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IAAM,MACRA,EAAE,IAAM,MACRA,EAAE,IAAM,MACRA,EAAE,IAAM,MACRA,EAAE,IAAM,MACRA,EAAE,IAAM,MACRA,EAAE,IAAM,MACRA,EAAE,IAAM,MACRA,EAAE,IAAM,MACRA,EAAE,IAAM,MACRA,EAAE,IAAM,MACRA,EAAE,IAAM,MACRA,EAAE,IAAM,MACRA,EAAE,IAAM,MACRA,EAAE,IAAM,MACRA,EAAE,IAAM,MACRA,EAAE,IAAM,MACRA,EAAE,IAAM,MACRA,EAAE,IAAM,MACRA,EAAE,IAAM,MACRA,EAAE,IAAM,MACRA,EAAE,IAAM,KACRA,EAAE,IAAM,MACRA,EAAE,IAAM,KACRA,EAAE,IAAM,MACRA,EAAE,KAAO,MACTA,EAAE,IAAM,MACRA,EAAE,KAAO,MACTA,EAAE,IAAM,KACRA,EAAE,IAAM,KACRA,EAAE,IAAM,KACRA,EAAE,IAAM,MACRA,EAAE,IAAM,KACRA,EAAE,IAAM,MACRA,EAAE,IAAM,MACRA,EAAE,IAAM,MACRA,EAAE,IAAM,MACRA,EAAE,IAAM,MACRA,EAAE,IAAM,MACRA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,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EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,IACRA,EAAE,EAAE,EAAI,IACRA,EAAE,EAAE,EAAI,IACRA,EAAE,EAAE,EAAI,IACRA,EAAE,EAAE,EAAI,IACRA,EAAE,EAAE,EAAI,IACRA,EAAE,EAAE,EAAI,IACRA,EAAE,EAAE,EAAI,IACRA,EAAE,EAAE,EAAI,IACRA,EAAE,EAAE,EAAI,IACRA,EAAE,EAAE,EAAI,IACRA,EAAE,EAAE,EAAI,IACRA,EAAE,EAAE,EAAI,IACRA,EAAE,EAAE,EAAI,IACRA,EAAE,EAAE,EAAI,IACRA,EAAE,EAAE,EAAI,IACRA,EAAE,EAAE,EAAI,IACRA,EAAE,EAAE,EAAI,IACRA,EAAE,EAAE,EAAI,IACRA,EAAE,EAAE,EAAI,IACRA,EAAE,EAAE,EAAI,IACRA,EAAE,EAAE,EAAI,IACRA,EAAE,EAAE,EAAI,IACRA,EAAE,EAAE,EAAI,IACRA,EAAE,EAAE,EAAI,IACRA,EAAE,EAAE,EAAI,IACRA,EAAE,EAAE,EAAI,IACRA,EAAE,EAAE,EAAI,IACRA,EAAE,EAAE,EAAI,IACRA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,KACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,KACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,KACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,KACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,KACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,KACTA,EAAE,GAAG,EAAI,KACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,KACTA,EAAE,GAAG,EAAI,KACTA,EAAE,GAAG,EAAI,KACTA,EAAE,GAAG,EAAI,KACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,KACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,KACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,KACTA,EAAE,GAAG,EAAI,KACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,KACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,KACTA,EAAE,GAAG,EAAI,KACTA,EAAE,GAAG,EAAI,KACTA,EAAE,GAAG,EAAI,KACTA,EAAE,GAAG,EAAI,KACTA,EAAE,GAAG,EAAI,KACTA,EAAE,GAAG,EAAI,KACTA,EAAE,GAAG,EAAI,KACTA,EAAE,GAAG,EAAI,KACTA,EAAE,GAAG,EAAI,KACTA,EAAE,GAAG,EAAI,KACTA,EAAE,GAAG,EAAI,MACTA,EAAE,GAAG,EAAI,MACTA,EAAE,GAAG,EAAI,KACTA,EAAE,GAAG,EAAI,KACTA,EAAE,GAAG,EAAI,KACTA,EAAE,GAAG,EAAI,KACTA,EAAE,GAAG,EAAI,KACTA,EAAE,GAAG,EAAI,KACTA,EAAE,GAAG,EAAI,KACTA,EAAE,GAAG,EAAI,KACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,MACTA,EAAE,GAAG,EAAI,KACTA,EAAE,GAAG,EAAI,KACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,MACTA,EAAE,GAAG,EAAI,MACTA,EAAE,GAAG,EAAI,MACTA,EAAE,GAAG,EAAI,MACTA,EAAE,GAAG,EAAI,MACTA,EAAE,GAAG,EAAI,MACTA,EAAE,GAAG,EAAI,MACTA,EAAE,GAAG,EAAI,MACTA,EAAE,GAAG,EAAI,MACTA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,IACVA,EAAE,IAAI,EAAI,IACVA,EAAE,IAAI,EAAI,IACVA,EAAE,IAAI,EAAI,IACVA,EAAE,IAAI,EAAI,IACVA,EAAE,IAAI,EAAI,IACVA,EAAE,IAAI,EAAI,IACVA,EAAE,IAAI,EAAI,IACVA,EAAE,IAAI,EAAI,IACVA,EAAE,IAAI,EAAI,IACVA,EAAE,IAAI,EAAI,IACVA,EAAE,IAAI,EAAI,IACVA,EAAE,IAAI,EAAI,IACVA,EAAE,IAAI,EAAI,IACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,MACVA,EAAE,IAAI,EAAI,MACVA,EAAE,IAAI,EAAI,MACVA,EAAE,IAAI,EAAI,MACVA,EAAE,IAAI,EAAI,MACVA,EAAE,IAAI,EAAI,MACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,IACVA,EAAE,IAAI,EAAI,IACVA,EAAE,IAAI,EAAI,IACVA,EAAE,IAAI,EAAI,IACVA,EAAE,IAAI,EAAI,IACVA,EAAE,IAAI,EAAI,IACVA,EAAE,IAAI,EAAI,IACVA,EAAE,IAAI,EAAI,IACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,MACVA,EAAE,IAAI,EAAI,IACVA,EAAE,IAAI,EAAI,MACVA,EAAE,IAAI,EAAI,KACVA,EAAE,IAAI,EAAI,IACZ,CAAC,EACDmJ,EAAQ,4BAA8B8iK,EACtC,IAAIC,KAA2C9mH,EAAY,uBAAuB,SAAUplD,EAAG,CAC7FA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,GACX,CAAC,EACDmJ,EAAQ,qCAAuC+iK,EAC/C,IAAIC,KAAwC/mH,EAAY,uBAAuB,SAAUplD,EAAG,CAC1FA,EAAE,CAAC,EAAI,GACPA,EAAE,CAAC,EAAI,GACPA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,EAAE,EAAI,GACRA,EAAE,GAAG,EAAI,GACTA,EAAE,GAAG,EAAI,GACTA,EAAE,GAAG,EAAI,GACTA,EAAE,GAAG,EAAI,GACTA,EAAE,GAAG,EAAI,GACTA,EAAE,GAAG,EAAI,GACTA,EAAE,GAAG,EAAI,GACTA,EAAE,GAAG,EAAI,GACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,GACTA,EAAE,GAAG,EAAI,GACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,IACTA,EAAE,GAAG,EAAI,GACTA,EAAE,GAAG,EAAI,GACTA,EAAE,GAAG,EAAI,GACTA,EAAE,GAAG,EAAI,GACTA,EAAE,GAAG,EAAI,GACTA,EAAE,GAAG,EAAI,GACTA,EAAE,GAAG,EAAI,GACTA,EAAE,GAAG,EAAI,GACTA,EAAE,GAAG,EAAI,GACTA,EAAE,GAAG,EAAI,GACTA,EAAE,GAAG,EAAI,GACTA,EAAE,IAAI,EAAI,GACVA,EAAE,IAAI,EAAI,GACVA,EAAE,IAAI,EAAI,GACVA,EAAE,IAAI,EAAI,GACVA,EAAE,IAAI,EAAI,GACVA,EAAE,IAAI,EAAI,GACVA,EAAE,IAAI,EAAI,GACVA,EAAE,IAAI,EAAI,GACVA,EAAE,IAAI,EAAI,GACVA,EAAE,IAAI,EAAI,GACVA,EAAE,IAAI,EAAI,GACVA,EAAE,IAAI,EAAI,GACVA,EAAE,IAAI,EAAI,EACZ,CAAC,EACDmJ,EAAQ,kCAAoCgjK,CAErC,EAEA,SAAShoH,EAAQh7C,EAASo7C,EAAqB,CAEtD,IAAIq8C,EAAwBr8C,EAAoB,GAAG,EAAE,sBACjD6nH,EAAuBxrE,EAAsB,SAAU5gG,EAAG,CAC7DA,EAAE,KAAK,EAAI,IACXA,EAAE,KAAK,EAAI,IACXA,EAAE,KAAK,EAAI,IACXA,EAAE,KAAK,EAAI,IACXA,EAAE,KAAK,EAAI,KACXA,EAAE,KAAK,EAAI,KACXA,EAAE,KAAK,EAAI,KACXA,EAAE,KAAK,EAAI,KACXA,EAAE,KAAK,EAAI,KACXA,EAAE,KAAK,EAAI,KACXA,EAAE,KAAK,EAAI,KACXA,EAAE,KAAK,EAAI,KACXA,EAAE,KAAK,EAAI,KACXA,EAAE,KAAK,EAAI,KACXA,EAAE,KAAK,EAAI,KACXA,EAAE,KAAK,EAAI,KACXA,EAAE,KAAK,EAAI,KACXA,EAAE,KAAK,EAAI,KACXA,EAAE,KAAK,EAAI,KACXA,EAAE,KAAK,EAAI,KACXA,EAAE,KAAK,EAAI,KACXA,EAAE,KAAK,EAAI,KACXA,EAAE,KAAK,EAAI,KACXA,EAAE,KAAK,EAAI,IACZ,CAAC,EACD,SAASqsK,EAAwBrpK,EAAM,CACtC,OAAIA,GAAQ,OAAUA,GAAQ,MACtB,EACGA,GAAQ,OAAUA,GAAQ,MAC7BopK,EAAoB,EAAGppK,CAAI,GAAKA,EAC7BA,IAAS,IACZ,GAEDA,EAER,SAASspK,EAAmBlzJ,EAAMkvI,EAAkB,CACnD,IAAIt/H,EAAUs/H,EAAiBlvI,CAAI,EACnC,GAAI4P,IAAY,OACf,OAAOA,EAER,GAAI,CAAC5P,EACJ,MAAO,GAER,GAAIA,EAAK,CAAC,IAAM,IAAK,CACpB,IAAImzJ,EAAUnzJ,EAAK,OAAQozJ,EAC3B,GAAID,IAAY,GAAKnzJ,EAAK,CAAC,IAAM,KAAOA,EAAK,CAAC,IAAM,IACnDozJ,EAASpzJ,EAAK,UAAU,CAAC,UACfmzJ,GAAW,GAAKA,GAAW,EACrCC,EAASpzJ,EAAK,UAAU,CAAC,MAEzB,OAAO,GAER,GAAIozJ,IAAWA,EAAO,gBACrBxjJ,EAAU,SAASwjJ,EAAQ,EAAE,EACzBxjJ,GAAW,GACd,OAAOA,EAIV,MAAO,GAER,IAAIyjJ,EAAgB,CACnB,CACC,MAAO,EACP,IAAK,GACL,EACD,CACC,MAAO,IACP,IAAK,GACL,EACD,CACC,MAAO,IACP,IAAK,GACL,EACD,CACC,MAAO,IACP,IAAK,GACL,EACD,CACC,MAAO,IACP,IAAK,GACL,EACD,CACC,MAAO,IACP,IAAK,GACL,EACD,CACC,MAAO,IACP,IAAK,GACL,EACD,CACC,MAAO,IACP,IAAK,IACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,KACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,OACP,IAAK,MACL,EACD,CACC,MAAO,OACP,IAAK,MACL,EACD,CACC,MAAO,QACP,IAAK,OACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,OACP,IAAK,MACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,OACP,IAAK,MACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,OACP,IAAK,MACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,KACP,IAAK,IACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,KACP,IAAK,KACL,EACD,CACC,MAAO,MACP,IAAK,KACL,EACD,CACC,MAAO,OACP,IAAK,OAEN,EACD,SAASC,EAAmBpsK,EAAO,CAClC,QAAST,EAAI,EAAG2yB,EAAKi6I,EAAc,OAAQ5sK,EAAI2yB,EAAI3yB,IAAK,CACvD,IAAIiI,EAAQ2kK,EAAc5sK,CAAC,EAC3B,GAAIS,GAASwH,EAAM,OAASxH,EAAQwH,EAAM,IACzC,OAAOjI,EAGT,MAAO,GAER,SAAS8sK,EAAcrsK,EAAO,CAC7B,IAAIwH,EAAQ2kK,EAAc,EAAE,EAK5B,OAJInsK,GAASwH,EAAM,OAASxH,EAAQwH,EAAM,MAG1CA,EAAQ2kK,EAAc,EAAE,EACpBnsK,GAASwH,EAAM,OAASxH,EAAQwH,EAAM,KAK3C,IAAI8kK,EAAwBhsE,EAAsB,SAAU5gG,EAAG,CAC9DA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,EAAY,IACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,IACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,EAAY,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,EAAY,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,OACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,EAAY,IACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,KAAY,IACdA,EAAE,KAAY,KACdA,EAAE,KAAY,MACdA,EAAE,KAAY,KACdA,EAAE,KAAY,IACdA,EAAE,KAAY,KACdA,EAAE,KAAY,MACdA,EAAE,KAAY,OACdA,EAAE,KAAY,KACdA,EAAE,KAAY,IACdA,EAAE,KAAY,KACdA,EAAE,KAAY,MACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,KACdA,EAAE,KAAY,MACdA,EAAE,KAAY,KACdA,EAAE,KAAY,IACdA,EAAE,KAAY,KACdA,EAAE,KAAY,MACdA,EAAE,KAAY,OACdA,EAAE,KAAY,KACdA,EAAE,KAAY,IACdA,EAAE,KAAY,KACdA,EAAE,KAAY,MACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,OACdA,EAAE,GAAQ,EAAI,OACdA,EAAE,GAAQ,EAAI,OACdA,EAAE,GAAQ,EAAI,OACdA,EAAE,GAAQ,EAAI,OACdA,EAAE,GAAQ,EAAI,OACdA,EAAE,GAAQ,EAAI,OACdA,EAAE,GAAQ,EAAI,OACdA,EAAE,GAAQ,EAAI,OACdA,EAAE,GAAQ,EAAI,OACdA,EAAE,GAAQ,EAAI,OACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,OACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,OACdA,EAAE,GAAQ,EAAI,OACdA,EAAE,GAAQ,EAAI,OACdA,EAAE,GAAQ,EAAI,OACdA,EAAE,GAAQ,EAAI,OACdA,EAAE,GAAQ,EAAI,OACdA,EAAE,GAAQ,EAAI,OACdA,EAAE,GAAQ,EAAI,OACdA,EAAE,GAAQ,EAAI,OACdA,EAAE,GAAQ,EAAI,OACdA,EAAE,GAAQ,EAAI,OACdA,EAAE,GAAQ,EAAI,OACdA,EAAE,GAAQ,EAAI,OACdA,EAAE,GAAQ,EAAI,OACdA,EAAE,GAAQ,EAAI,OACdA,EAAE,GAAQ,EAAI,UACdA,EAAE,GAAQ,EAAI,SACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,KACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,GAAQ,EAAI,MACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,KACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,EAAY,MACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,GAAQ,EAAI,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,EAAY,IACdA,EAAE,E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AAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAC74CC,EAAc,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,GAAI,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAA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ACVA,EAAE,GAAK,IACPA,EAAE,GAAK,IACPA,EAAE,KAAO,IACTA,EAAE,GAAK,IACPA,EAAE,GAAK,IACPA,EAAE,GAAK,IACPA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,KAAO,IACTA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,GAAK,IACPA,EAAE,GAAK,IACPA,EAAE,GAAK,IACPA,EAAE,GAAK,IACPA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,KAAO,IACTA,EAAE,IAAM,IACRA,EAAE,KAAO,IACTA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,KAAO,IACTA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,KAAO,IACTA,EAAE,IAAM,IACRA,EAAE,KAAO,IACTA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,I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","x_google_ignoreList":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186]}