Welcome to mirror list, hosted at ThFree Co, Russian Federation.

pdf.worker.js.map « build « pdfjs « js - github.com/nextcloud/files_pdfviewer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 9c3762c21e2b7d0e1ab1e6099ce3e2a34570c54d (plain)
1
{"version":3,"sources":["webpack://pdfjs-dist/build/pdf.worker/webpack/universalModuleDefinition","webpack://pdfjs-dist/build/pdf.worker/webpack/bootstrap","webpack://pdfjs-dist/build/pdf.worker/src/pdf.worker.js","webpack://pdfjs-dist/build/pdf.worker/src/core/worker.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/util.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/compatibility.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/is_node.js","webpack://pdfjs-dist/build/pdf.worker/src/core/primitives.js","webpack://pdfjs-dist/build/pdf.worker/src/core/pdf_manager.js","webpack://pdfjs-dist/build/pdf.worker/src/core/chunked_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/core_utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/document.js","webpack://pdfjs-dist/build/pdf.worker/src/core/obj.js","webpack://pdfjs-dist/build/pdf.worker/src/core/parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ccitt_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ccitt.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jbig2_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jbig2.js","webpack://pdfjs-dist/build/pdf.worker/src/core/arithmetic_decoder.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpeg_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpg.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpx_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpx.js","webpack://pdfjs-dist/build/pdf.worker/src/core/crypto.js","webpack://pdfjs-dist/build/pdf.worker/src/core/colorspace.js","webpack://pdfjs-dist/build/pdf.worker/src/core/image_utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/annotation.js","webpack://pdfjs-dist/build/pdf.worker/src/core/operator_list.js","webpack://pdfjs-dist/build/pdf.worker/src/core/evaluator.js","webpack://pdfjs-dist/build/pdf.worker/src/core/cmap.js","webpack://pdfjs-dist/build/pdf.worker/src/core/fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/cff_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/charsets.js","webpack://pdfjs-dist/build/pdf.worker/src/core/encodings.js","webpack://pdfjs-dist/build/pdf.worker/src/core/glyphlist.js","webpack://pdfjs-dist/build/pdf.worker/src/core/standard_fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/unicode.js","webpack://pdfjs-dist/build/pdf.worker/src/core/font_renderer.js","webpack://pdfjs-dist/build/pdf.worker/src/core/type1_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/pattern.js","webpack://pdfjs-dist/build/pdf.worker/src/core/bidi.js","webpack://pdfjs-dist/build/pdf.worker/src/core/metrics.js","webpack://pdfjs-dist/build/pdf.worker/src/core/function.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ps_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/murmurhash3.js","webpack://pdfjs-dist/build/pdf.worker/src/core/image.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/message_handler.js","webpack://pdfjs-dist/build/pdf.worker/src/core/worker_stream.js"],"names":["pdfjsVersion","pdfjsBuild","WorkerTask","finish","terminate","ensureNotTerminated","WorkerMessageHandler","setup","testMessageProcessed","handler","supportTransfers","data","setVerbosityLevel","createDocumentHandler","terminated","cancelXHRs","WorkerTasks","verbosity","apiVersion","docParams","workerVersion","enumerableProperties","Promise","docId","docBaseUrl","workerHandlerName","task","i","pdfManager","pdfManagerCapability","source","newPdfManager","cachedChunks","pdfStream","fullRequest","disableAutoFetch","msgHandler","password","length","rangeChunkSize","loaded","flushChunks","pdfFile","arraysToBytes","warn","readPromise","readChunk","arrayByteLength","total","Math","reject","pdfInfo","ex","startWorkerTask","finishWorkerTask","pdfManagerReady","loadDocument","onFailure","evaluatorOptions","maxImageSize","disableFontFace","ignoreErrors","isEvalSupported","fontExtraProperties","getPdfManager","stream","ref","Ref","catalog","page","pageIndex","start","VerbosityLevel","Date","intent","renderInteractiveForms","info","operatorListInfo","sink","featureId","UNSUPPORTED_FEATURES","normalizeWhitespace","combineTextItems","waitOn","cleanupPromise","setupDoc","initializeFromPort","maybePort","isMessagePort","IDENTITY_MATRIX","FONT_IDENTITY_MATRIX","PermissionFlag","PRINT","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","TextRenderingMode","FILL","STROKE","FILL_STROKE","INVISIBLE","FILL_ADD_TO_PATH","STROKE_ADD_TO_PATH","FILL_STROKE_ADD_TO_PATH","ADD_TO_PATH","FILL_STROKE_MASK","ADD_TO_PATH_FLAG","ImageKind","GRAYSCALE_1BPP","RGB_24BPP","RGBA_32BPP","AnnotationType","TEXT","LINK","FREETEXT","LINE","SQUARE","CIRCLE","POLYGON","POLYLINE","HIGHLIGHT","UNDERLINE","SQUIGGLY","STRIKEOUT","STAMP","CARET","INK","POPUP","FILEATTACHMENT","SOUND","MOVIE","WIDGET","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","AnnotationStateModelType","MARKED","REVIEW","AnnotationMarkedState","UNMARKED","AnnotationReviewState","ACCEPTED","REJECTED","CANCELLED","COMPLETED","NONE","AnnotationReplyType","GROUP","REPLY","AnnotationFlag","HIDDEN","NOZOOM","NOROTATE","NOVIEW","READONLY","LOCKED","TOGGLENOVIEW","LOCKEDCONTENTS","AnnotationFieldFlag","REQUIRED","NOEXPORT","MULTILINE","PASSWORD","NOTOGGLETOOFF","RADIO","PUSHBUTTON","COMBO","EDIT","SORT","FILESELECT","MULTISELECT","DONOTSPELLCHECK","DONOTSCROLL","COMB","RICHTEXT","RADIOSINUNISON","COMMITONSELCHANGE","AnnotationBorderStyleType","SOLID","DASHED","BEVELED","INSET","StreamType","UNKNOWN","FLATE","LZW","DCT","JPX","JBIG","A85","AHX","CCF","RLX","FontType","TYPE1","TYPE1C","CIDFONTTYPE0","CIDFONTTYPE0C","TRUETYPE","CIDFONTTYPE2","TYPE3","OPENTYPE","TYPE0","MMTYPE1","ERRORS","WARNINGS","INFOS","CMapCompressionType","BINARY","STREAM","OPS","dependency","setLineWidth","setLineCap","setLineJoin","setMiterLimit","setDash","setRenderingIntent","setFlatness","setGState","save","restore","transform","moveTo","lineTo","curveTo","curveTo2","curveTo3","closePath","rectangle","stroke","closeStroke","fill","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","endPath","clip","eoClip","beginText","endText","setCharSpacing","setWordSpacing","setHScale","setLeading","setFont","setTextRenderingMode","setTextRise","moveText","setLeadingMoveText","setTextMatrix","nextLine","showText","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setCharWidth","setCharWidthAndBounds","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setStrokeColorN","setFillColor","setFillColorN","setStrokeGray","setFillGray","setStrokeRGBColor","setFillRGBColor","setStrokeCMYKColor","setFillCMYKColor","shadingFill","beginInlineImage","beginImageData","endInlineImage","paintXObject","markPoint","markPointProps","beginMarkedContent","beginMarkedContentProps","endMarkedContent","beginCompat","endCompat","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","endGroup","beginAnnotations","endAnnotations","beginAnnotation","endAnnotation","paintJpegXObject","paintImageMaskXObject","paintImageMaskXObjectGroup","paintImageXObject","paintInlineImageXObject","paintInlineImageXObjectGroup","paintImageXObjectRepeat","paintImageMaskXObjectRepeat","paintSolidColorImageMask","constructPath","unknown","forms","javaScript","smask","shadingPattern","font","errorTilingPattern","errorExtGState","errorXObject","errorFontLoadType3","errorFontState","errorFontMissing","errorFontTranslate","errorColorSpace","errorOperatorList","errorFontToUnicode","errorFontLoadNative","errorFontGetPath","PasswordResponses","NEED_PASSWORD","INCORRECT_PASSWORD","Number","console","unreachable","base","other","url","absoluteUrl","baseUrl","_isValidProtocol","Object","enumerable","configurable","writable","BaseException","constructor","NullCharactersRegExp","str","assert","bytes","MAX_ARGUMENT_COUNT","String","strBuf","chunkEnd","chunk","arr","resultLength","pos","item","stringToBytes","itemLength","value","buffer8","view32","IsLittleEndianCached","shadow","isLittleEndian","IsEvalSupportedCached","rgbBuf","m1","m2","xt","p","m","yt","d","p1","Util","p2","r","p3","p4","v","transpose","a","b","c","first","second","sx","sy","rect","orderedX","rect1","rect2","orderedY","result","PDFStringTranslateTable","code","decodeURIComponent","escape","unescape","encodeURIComponent","arr1","arr2","element","capability","isSettled","get","resolve","createObjectURL","digits","forceDataSchema","URL","blob","type","buffer","ii","b1","b2","b3","d1","d2","d3","d4","isNodeJS","process","EOF","Name","nameCache","nameValue","Cmd","cmdCache","cmdValue","Dict","nonSerializable","assignXref","key2","key3","getArray","Array","getRaw","getKeys","set","has","forEach","callback","mergedDict","dictArray","dict","isDict","refCache","toString","key","gen","refValue","RefSet","put","remove","RefSetCache","putAlias","clear","isName","v1","v2","createValidAbsoluteUrl","onLoadedStream","ensureDoc","ensureXRef","ensureCatalog","getPage","fontFallback","cleanup","manuallyTriggered","requestRange","requestLoadedStream","sendProgressiveData","updatePassword","obj","args","getMissingChunks","chunks","n","getBaseStreams","allChunksLoaded","onReceiveData","chunkSize","begin","end","beginChunk","endChunk","curChunk","onReceiveProgressiveData","position","ensureByte","ensureRange","nextEmptyChunk","numChunks","hasChunk","getByte","getUint16","b0","getInt32","getBytes","forceClamped","strEnd","subarray","peekByte","peekedByte","peekBytes","getByteRange","skip","reset","moveStart","makeSubStream","ChunkedStreamSubstream","missingChunks","subStream","sendRequest","rangeReader","promise","chunkData","requestAllChunks","_requestChunks","requestId","chunksNeeded","isEmptyObj","chunksToRequest","groupedChunksToRequest","groupedChunk","getStream","requestRanges","ranges","range","groupChunks","groupedChunks","prevChunk","onProgress","isProgressive","loadedRequests","requestIds","lastChunk","onError","getBeginChunk","getEndChunk","abort","lookup","initializer","stopWhenFound","LOOP_LIMIT","loopCount","values","ROMAN_NUMBER_MAP","lowerCase","number","romanBuf","romanStr","x","offset","ch","DEFAULT_USER_UNIT","LETTER_SIZE_MEDIABOX","annotation","idCounters","createObjId","getDocId","_getInheritableProperty","_getBoundingBox","box","isNum","cropBox","isArrayEqual","view","rotate","getContentStream","content","xref","streams","isStream","loadResources","objectLoader","getOperatorList","contentStreamPromise","resourcesPromise","partialEvaluator","idFactory","fontCache","builtInCMapCache","globalImageCache","options","pdfFunctionFactory","dataPromises","pageListPromise","opList","transparency","resources","operatorList","annotations","pageOpList","opListPromises","isAnnotationRenderable","extractTextContent","getAnnotationsData","annotationsData","parsedAnnotations","annotationPromises","PDF_HEADER_SIGNATURE","STARTXREF_SIGNATURE","ENDOBJ_SIGNATURE","FINGERPRINT_FIRST_BYTES","EMPTY_FINGERPRINT","PDF_HEADER_VERSION_REGEXP","limit","backwards","signatureLength","signature","scanBytes","scanLength","signatureEnd","j","isArrayBuffer","parse","version","fields","collection","linearization","Linearization","err","startXRef","find","step","startXRefLength","found","isWhiteSpace","parseInt","isNaN","checkHeader","MAX_PDF_VERSION_LENGTH","parseStartXRef","num","DocumentInfoValidators","Title","Author","Subject","Keywords","Creator","Producer","CreationDate","ModDate","Trapped","docInfo","PDFFormatVersion","IsLinearized","IsAcroFormPresent","IsXFAPresent","IsCollectionPresent","infoDict","stringToPDFString","isString","customValue","isBool","idArray","hash","calculateMD5","fingerprintBuf","hex","_getLinearizationPage","reason","checkFirstPage","dest","streamRef","isRef","suppressEncryption","subtype","metadata","stringToUTF8String","bytesToString","e","pagesObj","_readDocumentOutline","root","items","queue","parent","processed","blackColor","outlineDict","Catalog","destDict","resultObj","title","flags","color","count","rgbColor","ColorSpace","outlineItem","unsafeUrl","newWindow","bold","italic","permissions","_readPermissions","encrypt","dests","names","fetchDestination","getDestination","_readDests","_readPageLabels","pageLabels","style","prefix","numberTree","nums","currentLabel","currentIndex","labelDict","s","st","toRomanNumerals","LIMIT","A_UPPER_CASE","A_LOWER_CASE","baseCharCode","letterIndex","character","charBuf","jj","pageLayout","pageMode","ViewerPreferencesValidators","HideToolbar","HideMenubar","HideWindowUI","FitWindow","CenterWindow","DisplayDocTitle","NonFullScreenPageMode","Direction","ViewArea","ViewClip","PrintArea","PrintClip","PrintScaling","Duplex","PickTrayByPDFSize","PrintPageRange","NumCopies","prefs","prefValue","isValid","openAction","action","attachments","nameTree","fs","jsDict","js","appendIfJavaScriptDict","promises","translatedFonts","translatedFont","getPageDict","nodesToVisit","visitedNodes","pageKidsCountCache","currentPageIndex","currentNode","next","objId","kids","last","getPageIndex","isRefsEqual","node","parentRef","kidPromises","kid","params","actionType","actionName","addDefaultProtocolToUrl","urlDict","remoteDest","JSON","namedAction","jsAction","URL_OPEN_METHODS","regex","jsUrl","tryConvertUrlEncoding","XRef","streamTypes","fontTypes","setStartXRef","trailerDict","ids","fileId","processXRefTable","entryNum","streamPos","parser","parserBuf1","parserBuf2","isCmd","readXRefTable","tableState","entry","processXRefStream","streamParameters","byteWidths","entryRanges","readXRefStream","streamState","typeFieldWidth","offsetFieldWidth","generationFieldWidth","generation","indexObjects","TAB","LF","CR","SPACE","PERCENT","LT","token","what","dataLength","skipped","objRegExp","endobjRegExp","nestedObjRegExp","CHECK_CONTENT_LENGTH","trailerBytes","startxrefBytes","objBytes","xrefBytes","trailers","xrefStms","readToken","skipUntil","uncompressed","startPos","endPos","contentLength","checkPos","tokenStr","objToken","xrefTagOffset","lexer","allowStreams","recoveryMode","rootDict","readXRef","startXRefParsedCache","getEntry","xrefEntry","fetchIfRef","fetch","cacheEntry","fetchUncompressed","obj1","obj2","obj3","fetchCompressed","tableOffset","entries","getCatalogObj","getAll","kidsOrEntries","MAX_LEVELS","l","limits","tmp","currentKey","mm","FileSpec","filename","pickPlatformItem","fileObj","ObjectLoader","dictKeys","rawValue","mayHaveChildren","keys","nodesToRevisit","pendingRequests","baseStreams","foundMissingData","addChildren","MAX_LENGTH_TO_CACHE","MAX_ADLER32_LENGTH","bytesLength","refill","shift","tryShift","getObj","cipherTransform","buf1","array","isEOF","findDefaultInlineStreamEnd","E","I","NUL","state","maybeEIPos","followingBytes","endOffset","findDCTDecodeInlineStreamEnd","foundEOI","markerLength","findASCII85DecodeInlineStreamEnd","TILDE","GT","tildePos","maybeEI","findASCIIHexDecodeInlineStreamEnd","inlineStreamSkipEI","makeInlineImage","dictLength","filter","filterName","filterZero","imageStream","imageBytes","initialStreamPos","dictBytes","cacheKey","computeAdler32","_findStreamLength","SCAN_BLOCK_LENGTH","makeStream","ENDSTREAM_SIGNATURE","actualLength","MAX_TRUNCATION","TRUNCATED_SIGNATURE","maybeLength","lastByte","filterArray","paramsArray","makeFilter","xrefStreamStats","name","earlyChange","specialChars","knownCommands","nextChar","peekChar","getNumber","eNotation","divideBy","sign","baseValue","powerValue","powerValueSign","currentDigit","getString","numParen","done","charBuffered","getName","toHexDigit","previousCh","x2","_hexStringWarn","MAX_HEX_STRING_NUM_WARN","getHexString","isFirstHex","firstDigit","secondDigit","comment","knownCommandFound","possibleCommand","skipToNextLine","allowZeroValue","linDict","hints","hintsLength","index","hint","getInt","getHints","objectNumberFirst","endFirst","numPages","mainXRefEntriesOffset","pageFirst","Stream","arrayBuffer","StringStream","DecodeStream","emptyBuffer","maybeMinBufferLength","ensureBuffer","requested","size","buffer2","bufEnd","StreamsSequenceStream","bufferLength","newLength","FlateStream","codeLenCodeMap","lengthDecode","distDecode","fixedLitCodeTab","fixedDistCodeTab","cmf","flg","codeSize","codeBuf","codes","table","maxLen","codeLen","codeVal","lengths","len","val","code2","t","hdr","blockLen","check","block","litCodeTable","distCodeTable","numLitCodes","numDistCodes","numCodeLenCodes","codeLenCodeLengths","codeLenCodeTab","codeLengths","bitsLength","bitsOffset","repeatLength","code1","dist","k","PredictorStream","predictor","colors","bits","columns","rowBytes","rawBytes","inbuf","outbuf","inbits","outbits","bytesPerPixel","sum","compArray","bitMask","kk","pixBytes","prevRow","up","upLeft","left","pa","pb","pc","DecryptStream","hasMoreData","decrypt","Ascii85Stream","TILDA_CHAR","Z_LOWER_CHAR","input","AsciiHexStream","UPSTREAM_BLOCK_SIZE","maxDecodeLength","digit","RunLengthStream","repeatHeader","LZWStream","maxLzwDictionarySize","lzwState","codeLength","nextCode","dictionaryValues","dictionaryLengths","dictionaryPrevCodes","currentSequence","currentSequenceLength","bitsCached","cachedData","blockSize","estimatedDecodedSize","decodedSizeDelta","prevCode","decodedLength","currentBufferLength","hasPrev","q","NullStream","CCITTFaxStream","K","EndOfLine","EncodedByteAlign","Columns","Rows","EndOfBlock","BlackIs1","CCITTFaxDecoder","ccittEOL","ccittEOF","twoDimPass","twoDimHoriz","twoDimVert0","twoDimVertR1","twoDimVertL1","twoDimVertR2","twoDimVertL2","twoDimVertR3","twoDimVertL3","twoDimTable","whiteTable1","whiteTable2","blackTable1","blackTable2","blackTable3","eoblock","readNextChar","refLine","codingLine","refPos","blackPixels","code3","gotEOL","_addPixels","codingPos","a1","_addPixelsNeg","_findTableCode","limitValue","_getTwoDimCode","_getWhiteCode","_getBlackCode","_lookBits","_eatBits","Jbig2Stream","jbig2Image","globalsStream","globals","Jbig2Image","ContextCache","getContexts","id","DecodingContext","decoder","cache","contexts","contextCache","prev","bit","readBits","SegmentTypes","CodingTemplates","y","RefinementTemplates","coding","reference","ReusedContexts","RefinementReusedContexts","decodingContext","bitmap","OLD_PIXEL_MASK","row","row1","row2","contextLabel","pixel","decodeMMRBitmap","templateIndex","at","decodeBitmapTemplate0","useskip","template","templateLength","templateX","templateY","changingTemplateEntries","reuseMask","minX","maxX","minY","changingEntriesLength","changingTemplateX","changingTemplateY","changingTemplateBit","sbb_left","sbb_top","sbb_right","width","pseudoPixelContext","ltp","sltp","i0","j0","codingTemplate","codingTemplateLength","codingTemplateX","codingTemplateY","referenceTemplate","referenceTemplateLength","referenceTemplateX","referenceTemplateY","referenceWidth","referenceBitmap","referenceHeight","huffman","newSymbols","currentHeight","symbolCodeLength","log2","symbols","tableB1","getStandardTable","symbolWidths","deltaHeight","huffmanTables","decodeInteger","currentWidth","totalWidth","firstSymbol","deltaWidth","numberOfInstances","decodeTextRegion","symbolId","decodeIAID","rdx","rdy","symbol","decodeRefinement","decodeBitmap","bitmapSize","huffmanInput","collectiveBitmap","readUncompressedBitmap","originalEnd","bitmapEnd","numberOfSymbolsDecoded","xMin","bitmapWidth","xMax","symbolBitmap","exportedSymbols","currentFlag","totalSymbolsLength","runLength","stripT","firstS","deltaT","deltaFirstS","currentS","currentT","stripSize","applyRefinement","refinement","inputSymbols","symbolWidth","symbolHeight","rdw","rdh","offsetT","offsetS","s2","symbolRow","maxWidth","t2","deltaS","collectiveWidth","patterns","patternBitmap","patternWidth","combinationOperator","regionBitmap","numberOfPatterns","pattern0","patternHeight","bitsPerValue","grayScaleBitPlanes","mmrInput","mg","ng","patternIndex","gridOffsetX","gridOffsetY","regionRow","patternRow","regionY","regionX","segmentHeader","readUint32","segmentType","pageAssociationFieldSize","referredFlags","referredToCount","retainBits","referredToSegmentNumberSize","referredTo","readUint16","genericRegionInfo","readRegionSegmentInformation","genericRegionSegmentFlags","genericRegionMmr","searchPatternLength","searchPattern","segments","readSegmentHeader","segment","header","height","RegionSegmentInformationFieldLength","dictionary","dictionaryFlags","atLength","readInt8","textRegion","textRegionSegmentFlags","textRegionHuffmanFlags","patternDictionary","patternDictionaryFlags","halftoneRegion","halftoneRegionFlags","genericRegion","pageInfo","resolutionX","resolutionY","pageSegmentFlags","callbackName","visitor","processSegment","readSegments","processSegments","bitPacked","imgData","mask","SimpleSegmentVisitor","onPageInformation","rowSize","drawBitmap","regionInfo","mask0","offset0","onImmediateGenericRegion","region","onImmediateLosslessGenericRegion","onSymbolDictionary","getSymbolDictionaryHuffmanTables","referredSegments","referredSymbols","decodeSymbolDictionary","onImmediateTextRegion","getTextRegionHuffmanTables","onImmediateLosslessTextRegion","onPatternDictionary","decodePatternDictionary","onImmediateHalftoneRegion","decodeHalftoneRegion","onImmediateLosslessHalftoneRegion","onTables","customTables","decodeTablesSegment","lineData","line","HuffmanTreeNode","buildTree","decodeNode","htOffset","reader","lines","HuffmanTable","decode","assignPrefixCodes","linesLength","prefixLengthMax","histogram","currentLength","firstCode","currentCode","currentTemp","lowestValue","highestValue","prefixSizeBits","rangeSizeBits","currentRangeLow","prefixLength","rangeLength","standardTablesCache","Reader","readBit","numBits","byteAlign","runCodesTable","numberOfRepeats","repeatedLength","symbolIDTable","customIndex","tableFirstS","getCustomHuffmanTable","tableDeltaS","tableDeltaT","tableDeltaHeight","tableDeltaWidth","tableBitmapSize","tableAggregateInstances","eof","currentByte","endOfBlock","lookForEOFLimit","parseChunks","parseJbig2Chunks","parseJbig2","QeTable","qe","nmps","nlps","switchFlag","byteIn","bp","cx_index","cx_mps","qeTableIcx","qeIcx","JpegStream","jpegOptions","decodeTransform","colorTransform","decodeArr","bitsPerComponent","decodeArrLength","transformNeeded","maxValue","jpegImage","forceRGB","isSourcePDF","JpegImage","dctZigZag","dctCos1","dctSin1","dctCos3","dctSin3","dctCos6","dctSin6","dctSqrt2","dctSqrt1d2","children","parseDNLMarker","mcusPerLine","frame","progressive","startOffset","bitsData","bitsCount","nextByte","scanLines","maybeScanLines","blockRow","receive","decodeHuffman","component","diff","receiveAndExtend","rs","z","blockOffset","eobrun","successiveACState","offsetZ","successiveACNextValue","mcuRow","mcu","mcuCol","blockCol","getBlockBufferOffset","componentsLength","components","spectralStart","decodeFn","successivePrev","mcuExpected","mcuToRead","resetInterval","decodeBlock","h","decodeMcu","fileMarker","findNextFileMarker","partialMsg","qt","blockData","p0","blockBufferOffset","p5","p6","p7","v0","v3","v4","v7","v5","v6","col","blocksPerLine","blocksPerColumn","computationBuffer","quantizeAndInverse","maxPos","newPos","currentPos","currentMarker","invalid","marker","newMarker","dnlScanLines","mcusPerColumn","blocksPerLineForMcu","blocksPerColumnForMcu","blocksBufferSize","jfif","adobe","numSOSMarkers","quantizationTables","huffmanTablesAC","huffmanTablesDC","appData","readDataBlock","major","minor","densityUnits","xDensity","yDensity","thumbWidth","thumbHeight","thumbData","flags0","flags1","transformCode","quantizationTablesLength","quantizationTablesEnd","quantizationTableSpec","tableData","sofScanLines","componentsCount","maxH","maxV","componentId","qId","quantizationId","quantizationTable","prepareComponents","huffmanLength","huffmanTableSpec","codeLengthSum","huffmanValues","buildHuffmanTable","selectorsCount","componentIndex","tableSpec","spectralEnd","successiveApproximation","decodeScan","nextFileMarker","output","buildComponentData","scaleX","scaleY","_getLinearizedBlockData","numComponents","xScaleBlockOffset","mask3LSB","componentScaleX","componentScaleY","blocksPerScanline","lastComponentScaleX","_convertYccToRgb","Y","Cb","Cr","_convertYcckToRgb","_convertYcckToCmyk","_convertCmykToRgb","getData","rgbData","grayColor","JpxStream","jpxImage","tileCount","tileComponents","tileWidth","tileHeight","tileLeft","tileTop","src","srcPosition","dataPosition","imgRowSize","tileRowSize","JpxImage","SubbandsGainLog2","LL","LH","HL","HH","head","headerSize","lbox","tbox","jumpDataLength","method","colorspace","headerType","parseImageProperties","newByte","oldByte","Xsiz","Ysiz","XOsiz","YOsiz","Csiz","parseCodestream","context","doNotRecover","siz","precision","isSigned","XRsiz","YRsiz","calculateComponentDimensions","calculateTileGrids","qcd","sqcd","spqcdSize","scalarExpounded","spqcds","spqcd","qcc","cqcc","cod","scod","blockStyle","precinctsSizes","precinctsSize","PPx","PPy","unsupported","tile","initializeTile","buildPackets","parseTilePackets","transformComponents","tiles","numXtiles","numYtiles","tileComponent","codOrCoc","precinctWidth","dimensions","precinctHeight","isZeroRes","resolution","precinctWidthInSubband","precinctHeightInSubband","numprecinctswide","numprecinctshigh","numprecincts","xcb_","ycb_","codeblockWidth","codeblockHeight","cbx0","subband","cby0","cbx1","cby1","precinctParameters","codeblocks","precincts","codeblock","cbx","cby","tbx0","tby0","tbx1","tby1","pi","pj","precinctNumber","precinct","cbxMin","cbyMin","cbxMax","cbyMax","numcodeblockwide","numcodeblockhigh","precinctCodeblocks","subbands","tileIndex","layersCount","maxDecompositionLevelsCount","packet","createPacket","maxNumPrecinctsInLevel","maxNumPrecincts","resolutions","getPrecinctSizesInImageScale","precinctsIterationSizes","px","py","decompositionLevelsCount","sizeInImageScale","getPrecinctIndexIfExist","posX","pxIndex","precinctIterationSizes","posY","pyIndex","startPrecinctRowIndex","minWidth","minHeight","maxNumWide","maxNumHigh","sizePerComponent","sizePerResolution","minWidthCurrentComponent","minHeightCurrentComponent","maxNumWideCurrentComponent","maxNumHighCurrentComponent","scale","widthCurrentResolution","heightCurrentResolution","blocksDimensions","getBlocksDimensions","buildPrecincts","buildCodeblocks","bscale","resolutionSubbands","progressionOrder","bufferSize","skipNextBit","skipBytes","sopMarkerUsed","ephMarkerUsed","packetsIterator","alignToByte","skipMarkerIfEqual","layerNumber","codeblockColumn","codeblockRow","codeblockIncluded","firstTimeInclusion","inclusionTree","zeroBitPlanesTree","valueReady","codingpasses","readCodingpasses","codingpassesLog2","codedDataLength","packetItem","x0","y0","right","bottom","blockWidth","blockHeight","bitModel","currentCodingpassType","totalLength","dataItem","encodedData","magnitude","bitsDecoded","magnitudeCorrection","reversible","interleave","levelOffset","nb","coefficients","mb","codingStyleParameters","quantizationParameters","guardBits","segmentationSymbolUsed","subbandCoefficients","mu","epsilon","gainLog2","delta","copyCoefficients","top","resultImages","transformedTiles","transformTile","tile0","out","fourComponents","y0items","y1items","y2items","y3items","component0","alpha01","y1","y2","g","qcdOrQcc","TagTree","levelsLength","level","currentLevel","incrementValue","nextLevel","InclusionTree","stopValue","propagateValues","levelIndex","currentValue","BitModel","UNIFORM_CONTEXT","RUNLENGTH_CONTEXT","LLAndLHContextsLabel","HLContextLabel","HHContextLabel","contextLabelTable","coefficientCount","coefficentsMagnitude","zeroBitPlanes","setDecoder","setNeighborsSignificance","neighborsSignificance","column","runSignificancePropagationPass","coefficentsSign","processingFlags","labels","processedInverseMask","processedMask","firstMagnitudeBitMask","i1","decision","decodeSignBit","significance1","sign1","sign0","contribution","horizontalContribution","decoded","runMagnitudeRefinementPass","width4","index0","indexNext","significance","runCleanupPass","oneRowDown","twoRowsDown","threeRowsDown","iNext","indexBase","checkAllEmpty","allEmpty","hasSignificantCoefficent","i2","checkSegmentationSymbol","Transform","ll","j1","j2","llWidth","llHeight","llItems","hl_lh_hh","bufferPadding","rowBuffer","numBuffers","colBuffers","currentBuffer","u","IrreversibleTransform","alpha","beta","gamma","K_","current","ReversibleTransform","ARCFourCipher","keyLength","encryptBlock","tmp2","h0","h1","h2","h3","paddedLength","padded","w","f","rotateArg","Word64","highInteger","lowInteger","and","word","xor","or","shiftRight","places","shiftLeft","rotateRight","high","low","not","add","lowAdd","highAdd","copyTo","assign","calculateSHA256","rotr","h4","h5","h6","h7","littleSigmaPrime","littleSigma","t1","sigmaPrime","sigma","maj","calculateSHA512","mode384","tmp1","tmp3","calculateSHA384","NullCipher","decryptBlock","_expandKey","_decrypt","s0","s1","s3","_encrypt","_decryptBlock2","sourceLength","iv","plain","outputLength","lastBlock","psLen","cipher","rcon","t3","t4","PDF17","array1","array2","checkOwnerPassword","hashData","ownerValidationSalt","compareByteArrays","checkUserPassword","getOwnerKey","ownerKeySalt","getUserKey","PDF20","arrayLength","userBytes","k1","concatArrays","remainder","calculatePDF20Hash","CipherTransform","createStream","decryptString","CipherTransformFactory","defaultPasswordBytes","passwordLength","revision","pdfAlgorithm","hashDataSize","ownerPassword","keyLengthInBytes","encryptionKey","checkData","derivedKey","userPassword","identityName","algorithm","cfDict","streamCryptoName","handlerDict","encryptMetadata","fileIdBytes","utf8StringToString","passwordBytes","prepareKeyData","uBytes","userValidationSalt","userKeySalt","ownerEncryption","userEncryption","perms","createEncryptionKey20","decodedPassword","decodeUserPassword","cf","cryptFilter","cfm","buildObjectKey","createCipherTransform","buildCipherConstructor","cipherConstructor","COMPONENTS","xRatio","w1","yRatio","newIndex","xScaled","w1Scanline","oldIndex","getRgb","rgb","getRgbItem","getRgbBuffer","getOutputLength","isPassthrough","isDefaultDecode","fillRgb","originalWidth","numComponentColors","needsResizing","originalHeight","allColors","bpc","colorMap","destPos","comps","rgbPos","resizeRgbImage","IR","whitePoint","blackPoint","matrix","basePatternCS","baseIndexedCS","hiVal","numComps","alt","tintFn","res","cs","colorSpaces","resCS","mode","altIR","altCS","tmpBuf","baseNumComps","usesZeroToOneRange","baseBuf","scaled","tinted","srcOffset","inputLength","outputDelta","lookupPos","destOffset","decodeMap","DeviceCmykCS","convertToRgb","CalGrayCS","A","AG","L","CalRGBCS","BRADFORD_SCALE_MATRIX","BRADFORD_SCALE_INVERSE_MATRIX","SRGB_D65_XYZ_TO_RGB_MATRIX","FLAT_WHITEPOINT_MATRIX","tempNormalizeMatrix","tempConvertMatrix1","tempConvertMatrix2","DECODE_L_CONSTANT","LMS","sourceWhitePoint","D65X","D65Y","D65Z","adjustToRange","decodeL","sourceBlackPoint","XYZ_Flat","zeroDecodeL","X_DST","X_SRC","Y_DST","Y_SRC","Z_DST","Z_SRC","X_Scale","X_Offset","Y_Scale","Y_Offset","Z_Scale","Z_Offset","XYZ_In","matrixProduct","LMS_Flat","convertToFlat","LMS_D65","convertToD65","B","C","AGR","BGG","CGB","X","Z","XYZ","normalizeWhitePointToFlat","XYZ_Black","compensateBlackPoint","XYZ_D65","normalizeWhitePointToD65","SRGB","sRGBTransferFunction","XW","YW","ZW","XB","YB","ZB","LabCS","low2","Ls","as","bs","maxVal","M","N","fn_g","getByName","getByRef","shouldCache","pageIndexSet","GlobalImageCache","addPageIndex","setData","onlyData","parameters","fieldType","quadPoints","quadPointsLists","annotationFlags","borderStyle","contents","hasAppearance","modificationDate","_hasFlag","_isViewable","_isPrintable","setContents","setModificationDate","setFlags","hasFlag","setRectangle","setColor","setBorderStyle","dictType","setAppearance","appearanceStates","normalAppearanceState","appearanceDict","bbox","getTransformMatrix","setWidth","maxHeight","setStyle","setDashArray","dashArray","allZeros","validNumber","setHorizontalCornerRadius","setVerticalCornerRadius","rawIRT","rt","setCreationDate","_constructFieldName","fieldName","loopDict","hasFieldFlag","alignment","maximumLength","renderForms","_processCheckBox","customAppearance","exportValueOptionsDict","exportValues","hasCorrectOptionCount","_processRadioButton","fieldParent","fieldParentValue","_processPushButton","option","isOptionArray","exportValue","displayValue","DEFAULT_ICON_SIZE","getQuadPoints","parentItem","parentSubtype","rawParent","parentFlags","rawVertices","originalInkLists","file","QueueOptimizer","pattern","iFirstPIMXO","iFirstSave","arg","argsArray","imageMask","fnArray","InitialState","addState","MIN_IMAGES_IN_INLINE_IMAGES_BLOCK","MAX_IMAGES_IN_INLINE_IMAGES_BLOCK","MAX_WIDTH","IMAGE_PADDING","curr","iFirstTransform","iFirstPIIXO","map","maxLineHeight","currentX","currentY","img","imgWidth","imgHeight","dataOffset","kind","MIN_IMAGES_IN_MASKS_BLOCK","MAX_IMAGES_IN_MASKS_BLOCK","MAX_SAME_IMAGES_IN_MASKS_BLOCK","handlePaintSolidColorImageMask","isSameImage","firstPIMXOArg0","firstTransformArg0","firstTransformArg3","iTransform","iPIMXO","transformArgs","positions","images","maskParams","iFirstPIXO","firstPIXOArg0","MIN_IMAGES_IN_BLOCK","MAX_IMAGES_IN_BLOCK","iFirstSetFont","firstSetFontArg0","firstSetFontArg1","MIN_CHARS_IN_BLOCK","MAX_CHARS_IN_BLOCK","iFirstBeginText","iFirstSetTextMatrix","iFirstShowText","iFirstEndText","iFirst","iEndText","iCurr","_optimize","match","iterate","push","flush","NullOptimizer","OperatorList","CHUNK_SIZE","CHUNK_SIZE_ABOUT","streamSink","addOp","fn","addDependency","addDependencies","addOpList","getIR","transfers","PartialEvaluator","DefaultPartialEvaluatorOptions","readableStream","pump","TIME_SLOT_DURATION_MS","CHECK_TIME_EVERY","TimeSlotManager","parsingArray","maybeBM","normalizeBlendMode","deferred","TILING_PATTERN","SHADING_PATTERN","clone","newOptions","newEvaluator","hasBlendModes","nodes","graphicStates","graphicStatesKeys","graphicState","bm","xObjects","xObjectsKeys","xObject","xResources","xobj","group","groupOptions","isolated","knockout","groupSubtype","colorSpace","isInline","image","imageRef","bitStrideLength","imgArray","imageIsFromDecodeStream","inverseDecode","localImageCache","softMask","SMALL_IMAGE_DIMENSIONS","imageObj","cacheGlobally","imgPromise","handleSMask","smaskContent","smaskOptions","backdrop","transferObj","isPDFFunction","transferFn","transferMap","stateManager","handleTilingType","tilingOpList","resourcesArray","patternDict","patternResources","handleSetFont","fontArgs","fontName","translated","loadedName","extraProperties","handleText","glyphs","isAddToPathSet","ensureStateFont","gStateObj","gStateKeys","gState","loadFont","errorFont","fontRef","fontRes","fontCapability","preEvaluatedFont","fontRefIsRef","fontID","descriptor","fontAliases","aliasFontRef","Font","translatedPromise","xrefFontStats","fontFile3","fontType","getFontType","buildPath","parsingText","lastIndex","opArgs","parseColorSpace","patternName","typeNum","shading","Pattern","initialState","self","xobjs","preprocessor","timeSlotManager","promiseBody","operation","localImage","resolveXObject","globalImage","fontSize","combinedGlyphs","arrLength","arrItem","shadingRes","patternIR","dictName","extGState","closePendingRestoreOPS","getTextContent","seenStyles","WhitespaceRegexp","textContent","styles","textContentItem","initialized","vertical","lastAdvanceWidth","lastAdvanceHeight","textAdvanceScale","spaceWidth","fakeSpaceMin","fakeMultiSpaceMin","fakeMultiSpaceMax","textRunBreakAllowed","SPACE_FACTOR","MULTI_SPACE_FACTOR","MULTI_SPACE_FACTOR_MAX","emptyXObjectCache","textState","fontFamily","ascent","descent","tsm","glyphHeight","trm","scaleLineX","scaleCtmX","textChunk","bidiResult","bidi","replaceWhitespace","dir","ensureTextContentItem","glyph","glyphWidth","glyphUnicode","NormalizedUnicodes","reverseIfRtl","charSpacing","wordSpacing","addFakeSpaces","tx","ty","w0","fakeSpaces","runBidiTransform","enqueueChunk","fontNameArg","fontSizeArg","flushTextContentItem","isSameTextLine","advance","buildTextContentItem","breakTextRun","currentState","xObjStateManager","sinkWrapper","enqueueInvoked","enqueue","gStateFont","stop","extractDataStructures","toUnicode","baseDict","toUnicodePromise","properties","cidSystemInfo","registry","ordering","supplement","cidToGidMap","cidToGidBytes","differences","baseEncodingName","encoding","diffEncoding","getEncoding","isSymbolicFont","FontFlags","isNonsymbolicFont","readToUnicode","builtToUnicode","_buildSimpleFontToUnicode","forceGlyphs","glyphName","glyphsUnicodeMap","codeStr","unicode","getUnicodeForGlyph","baseEncoding","buildToUnicode","ucs2CMapName","fetchBuiltInCMap","useCMap","cMap","cid","ucs2","ucs2CMap","cmapObj","cmap","w2","readCidToGidMap","glyphsData","glyphID","extractWidths","glyphsWidths","defaultWidth","glyphsVMetrics","widths","vmetrics","defaultVMetrics","vmetric","firstChar","parseFloat","baseFontName","metrics","isMonospace","firstWidth","isSerifFont","fontNameWoStyle","getBaseFontMetrics","monospace","stdFontMap","lookupName","Metrics","glyphWidths","buildCharCodeToWidth","charCode","widthsByGlyphName","preEvaluateFont","composite","df","diffLength","diffBuf","diffEntry","lastChar","uint8array","translateFont","maxCharIndex","newProperties","baseFont","fontNameStr","baseFontStr","fontFile","length1","length2","length3","fixedPitch","fontMatrix","xHeight","capHeight","italicAngle","isType3Font","cidEncoding","cMapPromise","accent","send","fallback","loadType3Data","type3Options","evaluator","type3Evaluator","loadCharProcsPromise","charProcs","fontResources","charProcKeys","charProcOperatorList","glyphStream","parentOperatorList","dummyOperatorList","StateManager","old","TextState","setTextLineMatrix","translateTextMatrix","translateTextLineMatrix","calcTextLineMatrixAdvance","txDiff","tyDiff","denominator","calcRenderMatrix","carriageReturn","EvalState","EvaluatorPreprocessor","getOPMap","numArgs","variableArgs","MAX_INVALID_PATH_OPS","read","cmd","opSpec","argsLength","nonProcessedArgs","preprocessCommand","BUILT_IN_CMAPS","MAX_MAP_RANGE","builtInCMap","addCodespaceRange","mapCidRange","dstLow","mapBfRange","mapBfRangeToArray","mapOne","contains","charCodeOf","getMap","readCharCode","codespaceRanges","nn","codespaceRange","BinaryCMapReader","MAX_NUM_SIZE","MAX_ENCODED_NUM_SIZE","BinaryCMapStream","readByte","readNumber","readSigned","readHex","readHexNumber","stack","sp","readHexSigned","readString","char","sequence","dataSize","ucs2DataSize","subitemsCount","addHex","hexToInt","incHex","hexToStr","extend","CMapFactory","expectString","strToInt","dst","expectInt","parseWMode","parseCMapName","previous","embeddedUseCMap","parseCodespaceRange","parseBfChar","parseCidChar","parseBfRange","parseCidRange","extendCMap","useCodespaceRanges","cMapData","compressionType","parseCMap","createBuiltInCMap","parsedCMap","PRIVATE_USE_AREAS","PDF_GLYPH_SPACE_UNITS","SEAC_ANALYSIS_ENABLED","EXPORT_DATA_PROPERTIES","EXPORT_DATA_EXTRA_PROPERTIES","FixedPitch","Serif","Symbolic","Script","Nonsymbolic","Italic","AllCap","SmallCap","ForceBold","MacStandardGlyphOrdering","builtInEncoding","Glyph","ToUnicodeMap","amend","IdentityToUnicodeMap","OpenTypeFileBuilder","maxPower2","searchRange","rangeShift","entrySize","OTF_HEADER_SIZE","OTF_TABLE_ENTRY_SIZE","toArray","sfnt","tables","tablesNames","numTables","tableOffsets","writeData","string32","writeInt16","searchParams","tableName","checksum","quad","writeInt32","addTable","tag","fallbackName","getFontFileType","cff","adjustWidths","ID","isTrueTypeFile","isTrueTypeCollectionFile","fileType","isOpenTypeFile","isType1File","isCFFFile","fileSubtype","toFontChar","newMap","privateUseAreaIndex","nextAvailableFontCharCode","privateUseOffetEnd","originalCharCode","glyphId","charCodeToGlyphId","hasGlyph","fontCharCode","codeIndices","getRanges","string16","bmpLength","trailingRangesCount","segCount","startCount","endCount","idDeltas","idRangeOffsets","glyphsIds","bias","contiguous","startCode","format314","format31012","header31012","os2","selection","usWinAscent","override","unitsPerEm","yMax","yMin","ulUnicodeRange1","ulUnicodeRange2","ulUnicodeRange3","ulUnicodeRange4","firstCharIndex","lastCharIndex","getUnicodeRangeFor","typoAscent","typoDescent","winAscent","winDescent","angle","proto","strings","stringsUnicode","strBufUnicode","platforms","encodings","languages","namesRecordCount","nameTable","strOffset","strs","nameRecord","mimetype","renderer","FontRendererFactory","exportData","exportDataProperties","fallbackToSystemFont","nonStdFontMap","isStandardFont","GlyphMapForStandardFonts","SupplementalGlyphMapForArialBlack","SupplementalGlyphMapForCalibri","isIdentityUnicode","buildToFontChar","unicodeCharCode","checkAndRepair","VALID_TABLES","readTableEntry","previousPosition","ttf","entrySelector","ttcTag","ttc","majorVersion","minorVersion","numFonts","offsetTable","readTrueTypeCollectionHeader","potentialHeader","readOpenTypeHeader","potentialTables","readTables","readNameTable","nameEntry","platformId","encodingId","mappings","hasShortCmap","canBreak","useTable","potentialTable","format","segIndex","offsetsCount","rangeOffset","offsetIndex","offsets","entryCount","numOfMetrics","numOfSidebearings","numGlyphs","numMissing","glyphProfile","sizeOfInstructions","sourceEnd","glyf","contoursCount","signedInt16","writeSignedInt16","flagsCount","endPoint","instructionsStart","instructionsLength","instructionsEnd","coordinatesLength","flag","xLength","yLength","xyLength","repeat","glyphDataLength","destStart","int32","indexToLocFormat","int16","numGlyphsPlusOne","locaLength","itemSize","itemDecode","itemEncode","numGlyphsOut","dupFirstEntry","locaDataSize","locaData","loca","oldGlyfData","oldGlyfDataLength","newGlyfData","writeOffset","missingGlyphs","sanitizeGlyph","maxSizeOfInstructions","simpleGlyph","firstEntryLength","post","valid","glyphNames","glyphNameIndexes","customNames","stringLength","propertiesObj","FORMAT_0_HEADER_LENGTH","numRecords","stringsStart","records","NAME_RECORD_LENGTH","platform","language","record","nameIndex","TTOpsStackDeltas","lastEndf","lastDeff","callstack","functionsCalled","tooComplexToFollowFunctions","ttContext","inFDEF","ifLevel","inELSE","op","funcId","newStackLength","stackTop","stackDelta","foldTTTable","functionsDefined","functionsUsed","functionsStackDeltas","hintsValid","sanitizeTTProgram","checkInvalidFunctions","cvt","cvtData","ttcData","readTrueTypeCollectionData","isTrueType","isComposite","cffFile","maxFunctionDefs","maxZones","sanitizeTTPrograms","sanitizeMetrics","sanitizeHead","isGlyphLocationsLong","glyphsInfo","sanitizeGlyphLocations","metricsOverride","readPostScriptTable","createPostTable","isCidToGidMapEmpty","cmapTable","readCmapTable","cmapPlatformId","cmapEncodingId","cmapMappings","cmapMappingsLength","StandardEncoding","standardGlyphName","recoverGlyphName","unicodeOrCharCode","MacRomanEncoding","glyphZeroId","newMapping","adjustMapping","createCmapTable","validateOS2Table","createOS2Table","compiler","createNameTable","namePrototype","builder","convert","adjustToUnicode","mapping","charCodes","seacs","charset","seacMap","seac","baseGlyphName","accentGlyphName","baseGlyphId","accentGlyphId","accentOffset","getCharCodes","baseFontCharCode","createCharCode","accentFontCharCode","safeString16","charstrings","cffWidths","hmtx","charstring","possibleSpaceReplacements","charcode","charToGlyph","widthCode","isInFont","mapSpecialUnicodeValues","operatorListId","fontChar","charsToGlyphs","charsCache","charsCacheKey","chars","isSpace","ErrorFont","error","Type1Font","streamBytesLength","streamBytes","EEXEC_SIGNATURE","streamStartPos","headerBytes","headerBytesLength","findBlock","suggestedLength","eexecBytes","PFB_HEADER_SIZE","headerBlockLength","eexecBlockLength","pfbHeader","pfbHeaderPresent","headerBlock","getHeaderBlock","headerBlockParser","eexecBlock","getEexecBlock","eexecBlockParser","type2Charstrings","subrs","getCharset","getGlyphMapping","charstringsLen","type1FontGlyphMapping","hasGlyphId","getSeacs","getType2Charstrings","type1Charstrings","getType2Subrs","type1Subrs","type2Subrs","wrap","topDict","charsetArray","CFFStandardStrings","charStringsIndex","privateDict","field","subrIndex","CFFFont","charsets","MAX_SUBR_NESTING","NUM_STANDARD_CFF_STRINGS","CFFParser","CharstringValidationData","min","stackClearing","stem","resetStack","undefStack","CharstringValidationData12","stackFn","topDictIndex","stringIndex","globalSubrIndex","topDictParsed","charStringOffset","charStringIndex","fontBBox","fdArrayIndex","dictRaw","fontDict","charStringsAndSeacs","charStrings","localSubrIndex","fdSelect","fdArray","parseHeader","hdrSize","offSize","parseDict","parseFloatOperand","operands","parseOperand","parseIndex","cffIndex","offsetSize","offsetStart","offsetEnd","parseNameIndex","parseStringIndex","createDict","cffDict","pair","parseCharString","stackSize","validationCommand","subrsIndex","subrNumber","parseCharStrings","callDepth","firstStackClearing","hasVStems","localSubrToUse","privateDictToUse","fdIndex","nominalWidth","emptyPrivateDictionary","parentDict","parsePrivateDict","privateOffset","privateDictEnd","dictData","subrsOffset","relativeOffset","parseCharsets","CFFCharsetPredefinedTypes","raw","parseEncoding","predefined","supplementsCount","sid","dataStart","glyphsCount","rangesCount","gid","dataEnd","readSupplement","parseFDSelect","CFF","duplicateFirstGlyph","glyphZero","CFFHeader","CFFStrings","getSID","CFFIndex","CFFDict","setByKey","valueLength","setByName","hasName","removeByName","keyToNameMap","nameToKeyMap","defaults","types","opcodes","order","layout","CFFTopDict","CFFPrivateDict","ISO_ADOBE","EXPERT","EXPERT_SUBSET","CFFCharset","CFFEncoding","CFFFDSelect","getFDIndex","glyphIndex","CFFOffsetTracker","isTracking","track","setEntryLocation","offset1","offset2","offset3","offset4","CFFCompiler","compile","subDict","compiled","topDictTracker","fontDictTrackers","encodeNumber","encodeFloat","nibbles","encodeInteger","compileHeader","compileNameIndex","sanitizedName","compileTopDicts","dicts","fontDictTracker","fontDictData","trackers","compilePrivateDicts","privateDictTracker","privateDictData","compileDict","offsetTracker","compileStringIndex","compileGlobalSubrIndex","compileCharStrings","compileCharset","numGlyphsLessNotDef","charsetIndex","numCharsets","warned","compileEncoding","compileFDSelect","lastFD","currentFD","numRanges","compileTypedArray","compileIndex","objects","lastOffset","ISOAdobeCharset","ExpertCharset","ExpertSubsetCharset","ExpertEncoding","MacExpertEncoding","WinAnsiEncoding","SymbolSetEncoding","ZapfDingbatsEncoding","getLookupTableFactory","require","getGlyphsUnicode","AE","AEacute","AEmacron","AEsmall","Aacute","Aacutesmall","Abreve","Abreveacute","Abrevecyrillic","Abrevedotbelow","Abrevegrave","Abrevehookabove","Abrevetilde","Acaron","Acircle","Acircumflex","Acircumflexacute","Acircumflexdotbelow","Acircumflexgrave","Acircumflexhookabove","Acircumflexsmall","Acircumflextilde","Acute","Acutesmall","Acyrillic","Adblgrave","Adieresis","Adieresiscyrillic","Adieresismacron","Adieresissmall","Adotbelow","Adotmacron","Agrave","Agravesmall","Ahookabove","Aiecyrillic","Ainvertedbreve","Alpha","Alphatonos","Amacron","Amonospace","Aogonek","Aring","Aringacute","Aringbelow","Aringsmall","Asmall","Atilde","Atildesmall","Aybarmenian","Bcircle","Bdotaccent","Bdotbelow","Becyrillic","Benarmenian","Beta","Bhook","Blinebelow","Bmonospace","Brevesmall","Bsmall","Btopbar","Caarmenian","Cacute","Caron","Caronsmall","Ccaron","Ccedilla","Ccedillaacute","Ccedillasmall","Ccircle","Ccircumflex","Cdot","Cdotaccent","Cedillasmall","Chaarmenian","Cheabkhasiancyrillic","Checyrillic","Chedescenderabkhasiancyrillic","Chedescendercyrillic","Chedieresiscyrillic","Cheharmenian","Chekhakassiancyrillic","Cheverticalstrokecyrillic","Chi","Chook","Circumflexsmall","Cmonospace","Coarmenian","Csmall","D","DZ","DZcaron","Daarmenian","Dafrican","Dcaron","Dcedilla","Dcircle","Dcircumflexbelow","Dcroat","Ddotaccent","Ddotbelow","Decyrillic","Deicoptic","Delta","Deltagreek","Dhook","Dieresis","DieresisAcute","DieresisGrave","Dieresissmall","Digammagreek","Djecyrillic","Dlinebelow","Dmonospace","Dotaccentsmall","Dslash","Dsmall","Dtopbar","Dz","Dzcaron","Dzeabkhasiancyrillic","Dzecyrillic","Dzhecyrillic","Eacute","Eacutesmall","Ebreve","Ecaron","Ecedillabreve","Echarmenian","Ecircle","Ecircumflex","Ecircumflexacute","Ecircumflexbelow","Ecircumflexdotbelow","Ecircumflexgrave","Ecircumflexhookabove","Ecircumflexsmall","Ecircumflextilde","Ecyrillic","Edblgrave","Edieresis","Edieresissmall","Edot","Edotaccent","Edotbelow","Efcyrillic","Egrave","Egravesmall","Eharmenian","Ehookabove","Eightroman","Einvertedbreve","Eiotifiedcyrillic","Elcyrillic","Elevenroman","Emacron","Emacronacute","Emacrongrave","Emcyrillic","Emonospace","Encyrillic","Endescendercyrillic","Eng","Enghecyrillic","Enhookcyrillic","Eogonek","Eopen","Epsilon","Epsilontonos","Ercyrillic","Ereversed","Ereversedcyrillic","Escyrillic","Esdescendercyrillic","Esh","Esmall","Eta","Etarmenian","Etatonos","Eth","Ethsmall","Etilde","Etildebelow","Euro","Ezh","Ezhcaron","Ezhreversed","F","Fcircle","Fdotaccent","Feharmenian","Feicoptic","Fhook","Fitacyrillic","Fiveroman","Fmonospace","Fourroman","Fsmall","G","GBsquare","Gacute","Gamma","Gammaafrican","Gangiacoptic","Gbreve","Gcaron","Gcedilla","Gcircle","Gcircumflex","Gcommaaccent","Gdot","Gdotaccent","Gecyrillic","Ghadarmenian","Ghemiddlehookcyrillic","Ghestrokecyrillic","Gheupturncyrillic","Ghook","Gimarmenian","Gjecyrillic","Gmacron","Gmonospace","Grave","Gravesmall","Gsmall","Gsmallhook","Gstroke","H","H18533","H18543","H18551","H22073","HPsquare","Haabkhasiancyrillic","Hadescendercyrillic","Hardsigncyrillic","Hbar","Hbrevebelow","Hcedilla","Hcircle","Hcircumflex","Hdieresis","Hdotaccent","Hdotbelow","Hmonospace","Hoarmenian","Horicoptic","Hsmall","Hungarumlaut","Hungarumlautsmall","Hzsquare","IAcyrillic","IJ","IUcyrillic","Iacute","Iacutesmall","Ibreve","Icaron","Icircle","Icircumflex","Icircumflexsmall","Icyrillic","Idblgrave","Idieresis","Idieresisacute","Idieresiscyrillic","Idieresissmall","Idot","Idotaccent","Idotbelow","Iebrevecyrillic","Iecyrillic","Ifraktur","Igrave","Igravesmall","Ihookabove","Iicyrillic","Iinvertedbreve","Iishortcyrillic","Imacron","Imacroncyrillic","Imonospace","Iniarmenian","Iocyrillic","Iogonek","Iota","Iotaafrican","Iotadieresis","Iotatonos","Ismall","Istroke","Itilde","Itildebelow","Izhitsacyrillic","Izhitsadblgravecyrillic","J","Jaarmenian","Jcircle","Jcircumflex","Jecyrillic","Jheharmenian","Jmonospace","Jsmall","KBsquare","KKsquare","Kabashkircyrillic","Kacute","Kacyrillic","Kadescendercyrillic","Kahookcyrillic","Kappa","Kastrokecyrillic","Kaverticalstrokecyrillic","Kcaron","Kcedilla","Kcircle","Kcommaaccent","Kdotbelow","Keharmenian","Kenarmenian","Khacyrillic","Kheicoptic","Khook","Kjecyrillic","Klinebelow","Kmonospace","Koppacyrillic","Koppagreek","Ksicyrillic","Ksmall","LJ","Lacute","Lambda","Lcaron","Lcedilla","Lcircle","Lcircumflexbelow","Lcommaaccent","Ldot","Ldotaccent","Ldotbelow","Ldotbelowmacron","Liwnarmenian","Lj","Ljecyrillic","Llinebelow","Lmonospace","Lslash","Lslashsmall","Lsmall","MBsquare","Macron","Macronsmall","Macute","Mcircle","Mdotaccent","Mdotbelow","Menarmenian","Mmonospace","Msmall","Mturned","Mu","NJ","Nacute","Ncaron","Ncedilla","Ncircle","Ncircumflexbelow","Ncommaaccent","Ndotaccent","Ndotbelow","Nhookleft","Nineroman","Nj","Njecyrillic","Nlinebelow","Nmonospace","Nowarmenian","Nsmall","Ntilde","Ntildesmall","Nu","O","OE","OEsmall","Oacute","Oacutesmall","Obarredcyrillic","Obarreddieresiscyrillic","Obreve","Ocaron","Ocenteredtilde","Ocircle","Ocircumflex","Ocircumflexacute","Ocircumflexdotbelow","Ocircumflexgrave","Ocircumflexhookabove","Ocircumflexsmall","Ocircumflextilde","Ocyrillic","Odblacute","Odblgrave","Odieresis","Odieresiscyrillic","Odieresissmall","Odotbelow","Ogoneksmall","Ograve","Ogravesmall","Oharmenian","Ohm","Ohookabove","Ohorn","Ohornacute","Ohorndotbelow","Ohorngrave","Ohornhookabove","Ohorntilde","Ohungarumlaut","Oi","Oinvertedbreve","Omacron","Omacronacute","Omacrongrave","Omega","Omegacyrillic","Omegagreek","Omegaroundcyrillic","Omegatitlocyrillic","Omegatonos","Omicron","Omicrontonos","Omonospace","Oneroman","Oogonek","Oogonekmacron","Oopen","Oslash","Oslashacute","Oslashsmall","Osmall","Ostrokeacute","Otcyrillic","Otilde","Otildeacute","Otildedieresis","Otildesmall","P","Pacute","Pcircle","Pdotaccent","Pecyrillic","Peharmenian","Pemiddlehookcyrillic","Phi","Phook","Pi","Piwrarmenian","Pmonospace","Psi","Psicyrillic","Psmall","Q","Qcircle","Qmonospace","Qsmall","R","Raarmenian","Racute","Rcaron","Rcedilla","Rcircle","Rcommaaccent","Rdblgrave","Rdotaccent","Rdotbelow","Rdotbelowmacron","Reharmenian","Rfraktur","Rho","Ringsmall","Rinvertedbreve","Rlinebelow","Rmonospace","Rsmall","Rsmallinverted","Rsmallinvertedsuperior","S","SF010000","SF020000","SF030000","SF040000","SF050000","SF060000","SF070000","SF080000","SF090000","SF100000","SF110000","SF190000","SF200000","SF210000","SF220000","SF230000","SF240000","SF250000","SF260000","SF270000","SF280000","SF360000","SF370000","SF380000","SF390000","SF400000","SF410000","SF420000","SF430000","SF440000","SF450000","SF460000","SF470000","SF480000","SF490000","SF500000","SF510000","SF520000","SF530000","SF540000","Sacute","Sacutedotaccent","Sampigreek","Scaron","Scarondotaccent","Scaronsmall","Scedilla","Schwa","Schwacyrillic","Schwadieresiscyrillic","Scircle","Scircumflex","Scommaaccent","Sdotaccent","Sdotbelow","Sdotbelowdotaccent","Seharmenian","Sevenroman","Shaarmenian","Shacyrillic","Shchacyrillic","Sheicoptic","Shhacyrillic","Shimacoptic","Sigma","Sixroman","Smonospace","Softsigncyrillic","Ssmall","Stigmagreek","T","Tau","Tbar","Tcaron","Tcedilla","Tcircle","Tcircumflexbelow","Tcommaaccent","Tdotaccent","Tdotbelow","Tecyrillic","Tedescendercyrillic","Tenroman","Tetsecyrillic","Theta","Thook","Thorn","Thornsmall","Threeroman","Tildesmall","Tiwnarmenian","Tlinebelow","Tmonospace","Toarmenian","Tonefive","Tonesix","Tonetwo","Tretroflexhook","Tsecyrillic","Tshecyrillic","Tsmall","Twelveroman","Tworoman","U","Uacute","Uacutesmall","Ubreve","Ucaron","Ucircle","Ucircumflex","Ucircumflexbelow","Ucircumflexsmall","Ucyrillic","Udblacute","Udblgrave","Udieresis","Udieresisacute","Udieresisbelow","Udieresiscaron","Udieresiscyrillic","Udieresisgrave","Udieresismacron","Udieresissmall","Udotbelow","Ugrave","Ugravesmall","Uhookabove","Uhorn","Uhornacute","Uhorndotbelow","Uhorngrave","Uhornhookabove","Uhorntilde","Uhungarumlaut","Uhungarumlautcyrillic","Uinvertedbreve","Ukcyrillic","Umacron","Umacroncyrillic","Umacrondieresis","Umonospace","Uogonek","Upsilon","Upsilon1","Upsilonacutehooksymbolgreek","Upsilonafrican","Upsilondieresis","Upsilondieresishooksymbolgreek","Upsilonhooksymbol","Upsilontonos","Uring","Ushortcyrillic","Usmall","Ustraightcyrillic","Ustraightstrokecyrillic","Utilde","Utildeacute","Utildebelow","V","Vcircle","Vdotbelow","Vecyrillic","Vewarmenian","Vhook","Vmonospace","Voarmenian","Vsmall","Vtilde","W","Wacute","Wcircle","Wcircumflex","Wdieresis","Wdotaccent","Wdotbelow","Wgrave","Wmonospace","Wsmall","Xcircle","Xdieresis","Xdotaccent","Xeharmenian","Xi","Xmonospace","Xsmall","Yacute","Yacutesmall","Yatcyrillic","Ycircle","Ycircumflex","Ydieresis","Ydieresissmall","Ydotaccent","Ydotbelow","Yericyrillic","Yerudieresiscyrillic","Ygrave","Yhook","Yhookabove","Yiarmenian","Yicyrillic","Yiwnarmenian","Ymonospace","Ysmall","Ytilde","Yusbigcyrillic","Yusbigiotifiedcyrillic","Yuslittlecyrillic","Yuslittleiotifiedcyrillic","Zaarmenian","Zacute","Zcaron","Zcaronsmall","Zcircle","Zcircumflex","Zdot","Zdotaccent","Zdotbelow","Zecyrillic","Zedescendercyrillic","Zedieresiscyrillic","Zeta","Zhearmenian","Zhebrevecyrillic","Zhecyrillic","Zhedescendercyrillic","Zhedieresiscyrillic","Zlinebelow","Zmonospace","Zsmall","Zstroke","aabengali","aacute","aadeva","aagujarati","aagurmukhi","aamatragurmukhi","aarusquare","aavowelsignbengali","aavowelsigndeva","aavowelsigngujarati","abbreviationmarkarmenian","abbreviationsigndeva","abengali","abopomofo","abreve","abreveacute","abrevecyrillic","abrevedotbelow","abrevegrave","abrevehookabove","abrevetilde","acaron","acircle","acircumflex","acircumflexacute","acircumflexdotbelow","acircumflexgrave","acircumflexhookabove","acircumflextilde","acute","acutebelowcmb","acutecmb","acutecomb","acutedeva","acutelowmod","acutetonecmb","acyrillic","adblgrave","addakgurmukhi","adeva","adieresis","adieresiscyrillic","adieresismacron","adotbelow","adotmacron","ae","aeacute","aekorean","aemacron","afii00208","afii08941","afii10017","afii10018","afii10019","afii10020","afii10021","afii10022","afii10023","afii10024","afii10025","afii10026","afii10027","afii10028","afii10029","afii10030","afii10031","afii10032","afii10033","afii10034","afii10035","afii10036","afii10037","afii10038","afii10039","afii10040","afii10041","afii10042","afii10043","afii10044","afii10045","afii10046","afii10047","afii10048","afii10049","afii10050","afii10051","afii10052","afii10053","afii10054","afii10055","afii10056","afii10057","afii10058","afii10059","afii10060","afii10061","afii10062","afii10063","afii10064","afii10065","afii10066","afii10067","afii10068","afii10069","afii10070","afii10071","afii10072","afii10073","afii10074","afii10075","afii10076","afii10077","afii10078","afii10079","afii10080","afii10081","afii10082","afii10083","afii10084","afii10085","afii10086","afii10087","afii10088","afii10089","afii10090","afii10091","afii10092","afii10093","afii10094","afii10095","afii10096","afii10097","afii10098","afii10099","afii10100","afii10101","afii10102","afii10103","afii10104","afii10105","afii10106","afii10107","afii10108","afii10109","afii10110","afii10145","afii10146","afii10147","afii10148","afii10192","afii10193","afii10194","afii10195","afii10196","afii10831","afii10832","afii10846","afii299","afii300","afii301","afii57381","afii57388","afii57392","afii57393","afii57394","afii57395","afii57396","afii57397","afii57398","afii57399","afii57400","afii57401","afii57403","afii57407","afii57409","afii57410","afii57411","afii57412","afii57413","afii57414","afii57415","afii57416","afii57417","afii57418","afii57419","afii57420","afii57421","afii57422","afii57423","afii57424","afii57425","afii57426","afii57427","afii57428","afii57429","afii57430","afii57431","afii57432","afii57433","afii57434","afii57440","afii57441","afii57442","afii57443","afii57444","afii57445","afii57446","afii57448","afii57449","afii57450","afii57451","afii57452","afii57453","afii57454","afii57455","afii57456","afii57457","afii57458","afii57470","afii57505","afii57506","afii57507","afii57508","afii57509","afii57511","afii57512","afii57513","afii57514","afii57519","afii57534","afii57636","afii57645","afii57658","afii57664","afii57665","afii57666","afii57667","afii57668","afii57669","afii57670","afii57671","afii57672","afii57673","afii57674","afii57675","afii57676","afii57677","afii57678","afii57679","afii57680","afii57681","afii57682","afii57683","afii57684","afii57685","afii57686","afii57687","afii57688","afii57689","afii57690","afii57694","afii57695","afii57700","afii57705","afii57716","afii57717","afii57718","afii57723","afii57793","afii57794","afii57795","afii57796","afii57797","afii57798","afii57799","afii57800","afii57801","afii57802","afii57803","afii57804","afii57806","afii57807","afii57839","afii57841","afii57842","afii57929","afii61248","afii61289","afii61352","afii61573","afii61574","afii61575","afii61664","afii63167","afii64937","agrave","agujarati","agurmukhi","ahiragana","ahookabove","aibengali","aibopomofo","aideva","aiecyrillic","aigujarati","aigurmukhi","aimatragurmukhi","ainarabic","ainfinalarabic","aininitialarabic","ainmedialarabic","ainvertedbreve","aivowelsignbengali","aivowelsigndeva","aivowelsigngujarati","akatakana","akatakanahalfwidth","akorean","alef","alefarabic","alefdageshhebrew","aleffinalarabic","alefhamzaabovearabic","alefhamzaabovefinalarabic","alefhamzabelowarabic","alefhamzabelowfinalarabic","alefhebrew","aleflamedhebrew","alefmaddaabovearabic","alefmaddaabovefinalarabic","alefmaksuraarabic","alefmaksurafinalarabic","alefmaksurainitialarabic","alefmaksuramedialarabic","alefpatahhebrew","alefqamatshebrew","aleph","allequal","alphatonos","amacron","amonospace","ampersand","ampersandmonospace","ampersandsmall","amsquare","anbopomofo","angbopomofo","angbracketleft","angbracketright","angkhankhuthai","anglebracketleft","anglebracketleftvertical","anglebracketright","anglebracketrightvertical","angleleft","angleright","angstrom","anoteleia","anudattadeva","anusvarabengali","anusvaradeva","anusvaragujarati","aogonek","apaatosquare","aparen","apostrophearmenian","apostrophemod","apple","approaches","approxequal","approxequalorimage","approximatelyequal","araeaekorean","araeakorean","arc","arighthalfring","aring","aringacute","aringbelow","arrowboth","arrowdashdown","arrowdashleft","arrowdashright","arrowdashup","arrowdblboth","arrowdbldown","arrowdblleft","arrowdblright","arrowdblup","arrowdown","arrowdownleft","arrowdownright","arrowdownwhite","arrowheaddownmod","arrowheadleftmod","arrowheadrightmod","arrowheadupmod","arrowhorizex","arrowleft","arrowleftdbl","arrowleftdblstroke","arrowleftoverright","arrowleftwhite","arrowright","arrowrightdblstroke","arrowrightheavy","arrowrightoverleft","arrowrightwhite","arrowtableft","arrowtabright","arrowup","arrowupdn","arrowupdnbse","arrowupdownbase","arrowupleft","arrowupleftofdown","arrowupright","arrowupwhite","arrowvertex","asciicircum","asciicircummonospace","asciitilde","asciitildemonospace","ascript","ascriptturned","asmallhiragana","asmallkatakana","asmallkatakanahalfwidth","asterisk","asteriskaltonearabic","asteriskarabic","asteriskmath","asteriskmonospace","asterisksmall","asterism","asuperior","asymptoticallyequal","atilde","atmonospace","atsmall","aturned","aubengali","aubopomofo","audeva","augujarati","augurmukhi","aulengthmarkbengali","aumatragurmukhi","auvowelsignbengali","auvowelsigndeva","auvowelsigngujarati","avagrahadeva","aybarmenian","ayin","ayinaltonehebrew","ayinhebrew","babengali","backslash","backslashmonospace","badeva","bagujarati","bagurmukhi","bahiragana","bahtthai","bakatakana","bar","barmonospace","bbopomofo","bcircle","bdotaccent","bdotbelow","beamedsixteenthnotes","because","becyrillic","beharabic","behfinalarabic","behinitialarabic","behiragana","behmedialarabic","behmeeminitialarabic","behmeemisolatedarabic","behnoonfinalarabic","bekatakana","benarmenian","bet","betasymbolgreek","betdagesh","betdageshhebrew","bethebrew","betrafehebrew","bhabengali","bhadeva","bhagujarati","bhagurmukhi","bhook","bihiragana","bikatakana","bilabialclick","bindigurmukhi","birusquare","blackcircle","blackdiamond","blackdownpointingtriangle","blackleftpointingpointer","blackleftpointingtriangle","blacklenticularbracketleft","blacklenticularbracketleftvertical","blacklenticularbracketright","blacklenticularbracketrightvertical","blacklowerlefttriangle","blacklowerrighttriangle","blackrectangle","blackrightpointingpointer","blackrightpointingtriangle","blacksmallsquare","blacksmilingface","blacksquare","blackstar","blackupperlefttriangle","blackupperrighttriangle","blackuppointingsmalltriangle","blackuppointingtriangle","blank","blinebelow","bmonospace","bobaimaithai","bohiragana","bokatakana","bparen","bqsquare","braceex","braceleft","braceleftbt","braceleftmid","braceleftmonospace","braceleftsmall","bracelefttp","braceleftvertical","braceright","bracerightbt","bracerightmid","bracerightmonospace","bracerightsmall","bracerighttp","bracerightvertical","bracketleft","bracketleftbt","bracketleftex","bracketleftmonospace","bracketlefttp","bracketright","bracketrightbt","bracketrightex","bracketrightmonospace","bracketrighttp","breve","brevebelowcmb","brevecmb","breveinvertedbelowcmb","breveinvertedcmb","breveinverteddoublecmb","bridgebelowcmb","bridgeinvertedbelowcmb","brokenbar","bstroke","bsuperior","btopbar","buhiragana","bukatakana","bullet","bulletinverse","bulletoperator","bullseye","caarmenian","cabengali","cacute","cadeva","cagujarati","cagurmukhi","calsquare","candrabindubengali","candrabinducmb","candrabindudeva","candrabindugujarati","capslock","careof","caron","caronbelowcmb","caroncmb","carriagereturn","cbopomofo","ccaron","ccedilla","ccedillaacute","ccircle","ccircumflex","ccurl","cdot","cdotaccent","cdsquare","cedilla","cedillacmb","cent","centigrade","centinferior","centmonospace","centoldstyle","centsuperior","chaarmenian","chabengali","chadeva","chagujarati","chagurmukhi","chbopomofo","cheabkhasiancyrillic","checkmark","checyrillic","chedescenderabkhasiancyrillic","chedescendercyrillic","chedieresiscyrillic","cheharmenian","chekhakassiancyrillic","cheverticalstrokecyrillic","chi","chieuchacirclekorean","chieuchaparenkorean","chieuchcirclekorean","chieuchkorean","chieuchparenkorean","chochangthai","chochanthai","chochingthai","chochoethai","chook","cieucacirclekorean","cieucaparenkorean","cieuccirclekorean","cieuckorean","cieucparenkorean","cieucuparenkorean","circle","circlecopyrt","circlemultiply","circleot","circleplus","circlepostalmark","circlewithlefthalfblack","circlewithrighthalfblack","circumflex","circumflexbelowcmb","circumflexcmb","clickalveolar","clickdental","clicklateral","clickretroflex","club","clubsuitblack","clubsuitwhite","cmcubedsquare","cmonospace","cmsquaredsquare","coarmenian","colon","colonmonetary","colonmonospace","colonsign","colonsmall","colontriangularhalfmod","colontriangularmod","comma","commaabovecmb","commaaboverightcmb","commaaccent","commaarabic","commaarmenian","commainferior","commamonospace","commareversedabovecmb","commareversedmod","commasmall","commasuperior","commaturnedabovecmb","commaturnedmod","compass","congruent","contourintegral","control","controlACK","controlBEL","controlBS","controlCAN","controlCR","controlDC1","controlDC2","controlDC3","controlDC4","controlDEL","controlDLE","controlEM","controlENQ","controlEOT","controlESC","controlETB","controlETX","controlFF","controlFS","controlGS","controlHT","controlLF","controlNAK","controlNULL","controlRS","controlSI","controlSO","controlSOT","controlSTX","controlSUB","controlSYN","controlUS","controlVT","copyright","copyrightsans","copyrightserif","cornerbracketleft","cornerbracketlefthalfwidth","cornerbracketleftvertical","cornerbracketright","cornerbracketrighthalfwidth","cornerbracketrightvertical","corporationsquare","cosquare","coverkgsquare","cparen","cruzeiro","cstretched","curlyand","curlyor","currency","cyrBreve","cyrFlex","cyrbreve","cyrflex","daarmenian","dabengali","dadarabic","dadeva","dadfinalarabic","dadinitialarabic","dadmedialarabic","dagesh","dageshhebrew","dagger","daggerdbl","dagujarati","dagurmukhi","dahiragana","dakatakana","dalarabic","dalet","daletdagesh","daletdageshhebrew","dalethebrew","dalfinalarabic","dammaarabic","dammalowarabic","dammatanaltonearabic","dammatanarabic","danda","dargahebrew","dargalefthebrew","dasiapneumatacyrilliccmb","dblGrave","dblanglebracketleft","dblanglebracketleftvertical","dblanglebracketright","dblanglebracketrightvertical","dblarchinvertedbelowcmb","dblarrowleft","dblarrowright","dbldanda","dblgrave","dblgravecmb","dblintegral","dbllowline","dbllowlinecmb","dbloverlinecmb","dblprimemod","dblverticalbar","dblverticallineabovecmb","dbopomofo","dbsquare","dcaron","dcedilla","dcircle","dcircumflexbelow","dcroat","ddabengali","ddadeva","ddagujarati","ddagurmukhi","ddalarabic","ddalfinalarabic","dddhadeva","ddhabengali","ddhadeva","ddhagujarati","ddhagurmukhi","ddotaccent","ddotbelow","decimalseparatorarabic","decimalseparatorpersian","decyrillic","degree","dehihebrew","dehiragana","deicoptic","dekatakana","deleteleft","deleteright","deltaturned","denominatorminusonenumeratorbengali","dezh","dhabengali","dhadeva","dhagujarati","dhagurmukhi","dhook","dialytikatonos","dialytikatonoscmb","diamond","diamondsuitwhite","dieresis","dieresisacute","dieresisbelowcmb","dieresiscmb","dieresisgrave","dieresistonos","dihiragana","dikatakana","dittomark","divide","divides","divisionslash","djecyrillic","dkshade","dlinebelow","dlsquare","dmacron","dmonospace","dnblock","dochadathai","dodekthai","dohiragana","dokatakana","dollar","dollarinferior","dollarmonospace","dollaroldstyle","dollarsmall","dollarsuperior","dong","dorusquare","dotaccent","dotaccentcmb","dotbelowcmb","dotbelowcomb","dotkatakana","dotlessi","dotlessj","dotlessjstrokehook","dotmath","dottedcircle","doubleyodpatah","doubleyodpatahhebrew","downtackbelowcmb","downtackmod","dparen","dsuperior","dtail","dtopbar","duhiragana","dukatakana","dz","dzaltone","dzcaron","dzcurl","dzeabkhasiancyrillic","dzecyrillic","dzhecyrillic","eacute","earth","ebengali","ebopomofo","ebreve","ecandradeva","ecandragujarati","ecandravowelsigndeva","ecandravowelsigngujarati","ecaron","ecedillabreve","echarmenian","echyiwnarmenian","ecircle","ecircumflex","ecircumflexacute","ecircumflexbelow","ecircumflexdotbelow","ecircumflexgrave","ecircumflexhookabove","ecircumflextilde","ecyrillic","edblgrave","edeva","edieresis","edot","edotaccent","edotbelow","eegurmukhi","eematragurmukhi","efcyrillic","egrave","egujarati","eharmenian","ehbopomofo","ehiragana","ehookabove","eibopomofo","eight","eightarabic","eightbengali","eightcircle","eightcircleinversesansserif","eightdeva","eighteencircle","eighteenparen","eighteenperiod","eightgujarati","eightgurmukhi","eighthackarabic","eighthangzhou","eighthnotebeamed","eightideographicparen","eightinferior","eightmonospace","eightoldstyle","eightparen","eightperiod","eightpersian","eightroman","eightsuperior","eightthai","einvertedbreve","eiotifiedcyrillic","ekatakana","ekatakanahalfwidth","ekonkargurmukhi","ekorean","elcyrillic","elevencircle","elevenparen","elevenperiod","elevenroman","ellipsis","ellipsisvertical","emacron","emacronacute","emacrongrave","emcyrillic","emdash","emdashvertical","emonospace","emphasismarkarmenian","emptyset","enbopomofo","encyrillic","endash","endashvertical","endescendercyrillic","eng","engbopomofo","enghecyrillic","enhookcyrillic","enspace","eogonek","eokorean","eopen","eopenclosed","eopenreversed","eopenreversedclosed","eopenreversedhook","eparen","epsilontonos","equal","equalmonospace","equalsmall","equalsuperior","equivalence","erbopomofo","ercyrillic","ereversed","ereversedcyrillic","escyrillic","esdescendercyrillic","esh","eshcurl","eshortdeva","eshortvowelsigndeva","eshreversedloop","eshsquatreversed","esmallhiragana","esmallkatakana","esmallkatakanahalfwidth","estimated","esuperior","eta","etarmenian","etatonos","eth","etilde","etildebelow","etnahtafoukhhebrew","etnahtafoukhlefthebrew","etnahtahebrew","etnahtalefthebrew","eturned","eukorean","euro","evowelsignbengali","evowelsigndeva","evowelsigngujarati","exclam","exclamarmenian","exclamdbl","exclamdown","exclamdownsmall","exclammonospace","exclamsmall","existential","ezh","ezhcaron","ezhcurl","ezhreversed","ezhtail","fadeva","fagurmukhi","fahrenheit","fathaarabic","fathalowarabic","fathatanarabic","fbopomofo","fcircle","fdotaccent","feharabic","feharmenian","fehfinalarabic","fehinitialarabic","fehmedialarabic","feicoptic","female","ff","f_f","ffi","ffl","fi","fifteencircle","fifteenparen","fifteenperiod","figuredash","filledbox","filledrect","finalkaf","finalkafdagesh","finalkafdageshhebrew","finalkafhebrew","finalmem","finalmemhebrew","finalnun","finalnunhebrew","finalpe","finalpehebrew","finaltsadi","finaltsadihebrew","firsttonechinese","fisheye","fitacyrillic","five","fivearabic","fivebengali","fivecircle","fivecircleinversesansserif","fivedeva","fiveeighths","fivegujarati","fivegurmukhi","fivehackarabic","fivehangzhou","fiveideographicparen","fiveinferior","fivemonospace","fiveoldstyle","fiveparen","fiveperiod","fivepersian","fiveroman","fivesuperior","fivethai","fl","florin","fmonospace","fmsquare","fofanthai","fofathai","fongmanthai","forall","four","fourarabic","fourbengali","fourcircle","fourcircleinversesansserif","fourdeva","fourgujarati","fourgurmukhi","fourhackarabic","fourhangzhou","fourideographicparen","fourinferior","fourmonospace","fournumeratorbengali","fouroldstyle","fourparen","fourperiod","fourpersian","fourroman","foursuperior","fourteencircle","fourteenparen","fourteenperiod","fourthai","fourthtonechinese","fparen","fraction","franc","gabengali","gacute","gadeva","gafarabic","gaffinalarabic","gafinitialarabic","gafmedialarabic","gagujarati","gagurmukhi","gahiragana","gakatakana","gammalatinsmall","gammasuperior","gangiacoptic","gbopomofo","gbreve","gcaron","gcedilla","gcircle","gcircumflex","gcommaaccent","gdot","gdotaccent","gecyrillic","gehiragana","gekatakana","geometricallyequal","gereshaccenthebrew","gereshhebrew","gereshmuqdamhebrew","germandbls","gershayimaccenthebrew","gershayimhebrew","getamark","ghabengali","ghadarmenian","ghadeva","ghagujarati","ghagurmukhi","ghainarabic","ghainfinalarabic","ghaininitialarabic","ghainmedialarabic","ghemiddlehookcyrillic","ghestrokecyrillic","gheupturncyrillic","ghhadeva","ghhagurmukhi","ghook","ghzsquare","gihiragana","gikatakana","gimarmenian","gimel","gimeldagesh","gimeldageshhebrew","gimelhebrew","gjecyrillic","glottalinvertedstroke","glottalstop","glottalstopinverted","glottalstopmod","glottalstopreversed","glottalstopreversedmod","glottalstopreversedsuperior","glottalstopstroke","glottalstopstrokereversed","gmacron","gmonospace","gohiragana","gokatakana","gparen","gpasquare","gradient","grave","gravebelowcmb","gravecmb","gravecomb","gravedeva","gravelowmod","gravemonospace","gravetonecmb","greater","greaterequal","greaterequalorless","greatermonospace","greaterorequivalent","greaterorless","greateroverequal","greatersmall","gscript","gstroke","guhiragana","guillemotleft","guillemotright","guilsinglleft","guilsinglright","gukatakana","guramusquare","gysquare","haabkhasiancyrillic","haaltonearabic","habengali","hadescendercyrillic","hadeva","hagujarati","hagurmukhi","haharabic","hahfinalarabic","hahinitialarabic","hahiragana","hahmedialarabic","haitusquare","hakatakana","hakatakanahalfwidth","halantgurmukhi","hamzaarabic","hamzalowarabic","hangulfiller","hardsigncyrillic","harpoonleftbarbup","harpoonrightbarbup","hasquare","hatafpatah","hatafpatah16","hatafpatah23","hatafpatah2f","hatafpatahhebrew","hatafpatahnarrowhebrew","hatafpatahquarterhebrew","hatafpatahwidehebrew","hatafqamats","hatafqamats1b","hatafqamats28","hatafqamats34","hatafqamatshebrew","hatafqamatsnarrowhebrew","hatafqamatsquarterhebrew","hatafqamatswidehebrew","hatafsegol","hatafsegol17","hatafsegol24","hatafsegol30","hatafsegolhebrew","hatafsegolnarrowhebrew","hatafsegolquarterhebrew","hatafsegolwidehebrew","hbar","hbopomofo","hbrevebelow","hcedilla","hcircle","hcircumflex","hdieresis","hdotaccent","hdotbelow","he","heart","heartsuitblack","heartsuitwhite","hedagesh","hedageshhebrew","hehaltonearabic","heharabic","hehebrew","hehfinalaltonearabic","hehfinalalttwoarabic","hehfinalarabic","hehhamzaabovefinalarabic","hehhamzaaboveisolatedarabic","hehinitialaltonearabic","hehinitialarabic","hehiragana","hehmedialaltonearabic","hehmedialarabic","heiseierasquare","hekatakana","hekatakanahalfwidth","hekutaarusquare","henghook","herutusquare","het","hethebrew","hhook","hhooksuperior","hieuhacirclekorean","hieuhaparenkorean","hieuhcirclekorean","hieuhkorean","hieuhparenkorean","hihiragana","hikatakana","hikatakanahalfwidth","hiriq","hiriq14","hiriq21","hiriq2d","hiriqhebrew","hiriqnarrowhebrew","hiriqquarterhebrew","hiriqwidehebrew","hlinebelow","hmonospace","hoarmenian","hohipthai","hohiragana","hokatakana","hokatakanahalfwidth","holam","holam19","holam26","holam32","holamhebrew","holamnarrowhebrew","holamquarterhebrew","holamwidehebrew","honokhukthai","hookabovecomb","hookcmb","hookpalatalizedbelowcmb","hookretroflexbelowcmb","hoonsquare","horicoptic","horizontalbar","horncmb","hotsprings","house","hparen","hsuperior","hturned","huhiragana","huiitosquare","hukatakana","hukatakanahalfwidth","hungarumlaut","hungarumlautcmb","hv","hyphen","hypheninferior","hyphenmonospace","hyphensmall","hyphensuperior","hyphentwo","iacute","iacyrillic","ibengali","ibopomofo","ibreve","icaron","icircle","icircumflex","icyrillic","idblgrave","ideographearthcircle","ideographfirecircle","ideographicallianceparen","ideographiccallparen","ideographiccentrecircle","ideographicclose","ideographiccomma","ideographiccommaleft","ideographiccongratulationparen","ideographiccorrectcircle","ideographicearthparen","ideographicenterpriseparen","ideographicexcellentcircle","ideographicfestivalparen","ideographicfinancialcircle","ideographicfinancialparen","ideographicfireparen","ideographichaveparen","ideographichighcircle","ideographiciterationmark","ideographiclaborcircle","ideographiclaborparen","ideographicleftcircle","ideographiclowcircle","ideographicmedicinecircle","ideographicmetalparen","ideographicmoonparen","ideographicnameparen","ideographicperiod","ideographicprintcircle","ideographicreachparen","ideographicrepresentparen","ideographicresourceparen","ideographicrightcircle","ideographicsecretcircle","ideographicselfparen","ideographicsocietyparen","ideographicspace","ideographicspecialparen","ideographicstockparen","ideographicstudyparen","ideographicsunparen","ideographicsuperviseparen","ideographicwaterparen","ideographicwoodparen","ideographiczero","ideographmetalcircle","ideographmooncircle","ideographnamecircle","ideographsuncircle","ideographwatercircle","ideographwoodcircle","ideva","idieresis","idieresisacute","idieresiscyrillic","idotbelow","iebrevecyrillic","iecyrillic","ieungacirclekorean","ieungaparenkorean","ieungcirclekorean","ieungkorean","ieungparenkorean","igrave","igujarati","igurmukhi","ihiragana","ihookabove","iibengali","iicyrillic","iideva","iigujarati","iigurmukhi","iimatragurmukhi","iinvertedbreve","iishortcyrillic","iivowelsignbengali","iivowelsigndeva","iivowelsigngujarati","ij","ikatakana","ikatakanahalfwidth","ikorean","ilde","iluyhebrew","imacron","imacroncyrillic","imageorapproximatelyequal","imatragurmukhi","imonospace","increment","infinity","iniarmenian","integral","integralbottom","integralbt","integralex","integraltop","integraltp","intersection","intisquare","invbullet","invcircle","invsmileface","iocyrillic","iogonek","iota","iotadieresis","iotadieresistonos","iotalatin","iotatonos","iparen","irigurmukhi","ismallhiragana","ismallkatakana","ismallkatakanahalfwidth","issharbengali","istroke","isuperior","iterationhiragana","iterationkatakana","itilde","itildebelow","iubopomofo","iucyrillic","ivowelsignbengali","ivowelsigndeva","ivowelsigngujarati","izhitsacyrillic","izhitsadblgravecyrillic","jaarmenian","jabengali","jadeva","jagujarati","jagurmukhi","jbopomofo","jcaron","jcircle","jcircumflex","jcrossedtail","jdotlessstroke","jecyrillic","jeemarabic","jeemfinalarabic","jeeminitialarabic","jeemmedialarabic","jeharabic","jehfinalarabic","jhabengali","jhadeva","jhagujarati","jhagurmukhi","jheharmenian","jis","jmonospace","jparen","jsuperior","kabashkircyrillic","kabengali","kacute","kacyrillic","kadescendercyrillic","kadeva","kaf","kafarabic","kafdagesh","kafdageshhebrew","kaffinalarabic","kafhebrew","kafinitialarabic","kafmedialarabic","kafrafehebrew","kagujarati","kagurmukhi","kahiragana","kahookcyrillic","kakatakana","kakatakanahalfwidth","kappa","kappasymbolgreek","kapyeounmieumkorean","kapyeounphieuphkorean","kapyeounpieupkorean","kapyeounssangpieupkorean","karoriisquare","kashidaautoarabic","kashidaautonosidebearingarabic","kasmallkatakana","kasquare","kasraarabic","kasratanarabic","kastrokecyrillic","katahiraprolongmarkhalfwidth","kaverticalstrokecyrillic","kbopomofo","kcalsquare","kcaron","kcedilla","kcircle","kcommaaccent","kdotbelow","keharmenian","kehiragana","kekatakana","kekatakanahalfwidth","kenarmenian","kesmallkatakana","kgreenlandic","khabengali","khacyrillic","khadeva","khagujarati","khagurmukhi","khaharabic","khahfinalarabic","khahinitialarabic","khahmedialarabic","kheicoptic","khhadeva","khhagurmukhi","khieukhacirclekorean","khieukhaparenkorean","khieukhcirclekorean","khieukhkorean","khieukhparenkorean","khokhaithai","khokhonthai","khokhuatthai","khokhwaithai","khomutthai","khook","khorakhangthai","khzsquare","kihiragana","kikatakana","kikatakanahalfwidth","kiroguramusquare","kiromeetorusquare","kirosquare","kiyeokacirclekorean","kiyeokaparenkorean","kiyeokcirclekorean","kiyeokkorean","kiyeokparenkorean","kiyeoksioskorean","kjecyrillic","klinebelow","klsquare","kmcubedsquare","kmonospace","kmsquaredsquare","kohiragana","kohmsquare","kokaithai","kokatakana","kokatakanahalfwidth","kooposquare","koppacyrillic","koreanstandardsymbol","koroniscmb","kparen","kpasquare","ksicyrillic","ktsquare","kturned","kuhiragana","kukatakana","kukatakanahalfwidth","kvsquare","kwsquare","labengali","lacute","ladeva","lagujarati","lagurmukhi","lakkhangyaothai","lamaleffinalarabic","lamalefhamzaabovefinalarabic","lamalefhamzaaboveisolatedarabic","lamalefhamzabelowfinalarabic","lamalefhamzabelowisolatedarabic","lamalefisolatedarabic","lamalefmaddaabovefinalarabic","lamalefmaddaaboveisolatedarabic","lamarabic","lambda","lambdastroke","lamed","lameddagesh","lameddageshhebrew","lamedhebrew","lamfinalarabic","lamhahinitialarabic","laminitialarabic","lamjeeminitialarabic","lamkhahinitialarabic","lamlamhehisolatedarabic","lammedialarabic","lammeemhahinitialarabic","lammeeminitialarabic","largecircle","lbar","lbelt","lbopomofo","lcaron","lcedilla","lcircle","lcircumflexbelow","lcommaaccent","ldot","ldotaccent","ldotbelow","ldotbelowmacron","leftangleabovecmb","lefttackbelowcmb","less","lessequal","lessequalorgreater","lessmonospace","lessorequivalent","lessorgreater","lessoverequal","lesssmall","lezh","lfblock","lhookretroflex","lira","liwnarmenian","lj","ljecyrillic","lladeva","llagujarati","llinebelow","llladeva","llvocalicbengali","llvocalicdeva","llvocalicvowelsignbengali","llvocalicvowelsigndeva","lmiddletilde","lmonospace","lmsquare","lochulathai","logicaland","logicalnot","logicalnotreversed","logicalor","lolingthai","longs","lowlinecenterline","lowlinecmb","lowlinedashed","lozenge","lparen","lslash","lsquare","lsuperior","ltshade","luthai","lvocalicbengali","lvocalicdeva","lvocalicvowelsignbengali","lvocalicvowelsigndeva","lxsquare","mabengali","macron","macronbelowcmb","macroncmb","macronlowmod","macronmonospace","macute","madeva","magujarati","magurmukhi","mahapakhhebrew","mahapakhlefthebrew","mahiragana","maichattawalowleftthai","maichattawalowrightthai","maichattawathai","maichattawaupperleftthai","maieklowleftthai","maieklowrightthai","maiekthai","maiekupperleftthai","maihanakatleftthai","maihanakatthai","maitaikhuleftthai","maitaikhuthai","maitholowleftthai","maitholowrightthai","maithothai","maithoupperleftthai","maitrilowleftthai","maitrilowrightthai","maitrithai","maitriupperleftthai","maiyamokthai","makatakana","makatakanahalfwidth","male","mansyonsquare","maqafhebrew","mars","masoracirclehebrew","masquare","mbopomofo","mbsquare","mcircle","mcubedsquare","mdotaccent","mdotbelow","meemarabic","meemfinalarabic","meeminitialarabic","meemmedialarabic","meemmeeminitialarabic","meemmeemisolatedarabic","meetorusquare","mehiragana","meizierasquare","mekatakana","mekatakanahalfwidth","mem","memdagesh","memdageshhebrew","memhebrew","menarmenian","merkhahebrew","merkhakefulahebrew","merkhakefulalefthebrew","merkhalefthebrew","mhook","mhzsquare","middledotkatakanahalfwidth","middot","mieumacirclekorean","mieumaparenkorean","mieumcirclekorean","mieumkorean","mieumpansioskorean","mieumparenkorean","mieumpieupkorean","mieumsioskorean","mihiragana","mikatakana","mikatakanahalfwidth","minus","minusbelowcmb","minuscircle","minusmod","minusplus","minute","miribaarusquare","mirisquare","mlonglegturned","mlsquare","mmcubedsquare","mmonospace","mmsquaredsquare","mohiragana","mohmsquare","mokatakana","mokatakanahalfwidth","molsquare","momathai","moverssquare","moverssquaredsquare","mparen","mpasquare","mssquare","msuperior","mturned","mu1","muasquare","muchgreater","muchless","mufsquare","mugreek","mugsquare","muhiragana","mukatakana","mukatakanahalfwidth","mulsquare","multiply","mumsquare","munahhebrew","munahlefthebrew","musicalnote","musicalnotedbl","musicflatsign","musicsharpsign","mussquare","muvsquare","muwsquare","mvmegasquare","mvsquare","mwmegasquare","mwsquare","nabengali","nabla","nacute","nadeva","nagujarati","nagurmukhi","nahiragana","nakatakana","nakatakanahalfwidth","napostrophe","nasquare","nbopomofo","nbspace","ncaron","ncedilla","ncircle","ncircumflexbelow","ncommaaccent","ndotaccent","ndotbelow","nehiragana","nekatakana","nekatakanahalfwidth","newsheqelsign","nfsquare","ngabengali","ngadeva","ngagujarati","ngagurmukhi","ngonguthai","nhiragana","nhookleft","nhookretroflex","nieunacirclekorean","nieunaparenkorean","nieuncieuckorean","nieuncirclekorean","nieunhieuhkorean","nieunkorean","nieunpansioskorean","nieunparenkorean","nieunsioskorean","nieuntikeutkorean","nihiragana","nikatakana","nikatakanahalfwidth","nikhahitleftthai","nikhahitthai","nine","ninearabic","ninebengali","ninecircle","ninecircleinversesansserif","ninedeva","ninegujarati","ninegurmukhi","ninehackarabic","ninehangzhou","nineideographicparen","nineinferior","ninemonospace","nineoldstyle","nineparen","nineperiod","ninepersian","nineroman","ninesuperior","nineteencircle","nineteenparen","nineteenperiod","ninethai","nj","njecyrillic","nkatakana","nkatakanahalfwidth","nlegrightlong","nlinebelow","nmonospace","nmsquare","nnabengali","nnadeva","nnagujarati","nnagurmukhi","nnnadeva","nohiragana","nokatakana","nokatakanahalfwidth","nonbreakingspace","nonenthai","nonuthai","noonarabic","noonfinalarabic","noonghunnaarabic","noonghunnafinalarabic","nooninitialarabic","noonjeeminitialarabic","noonjeemisolatedarabic","noonmedialarabic","noonmeeminitialarabic","noonmeemisolatedarabic","noonnoonfinalarabic","notcontains","notelement","notelementof","notequal","notgreater","notgreaternorequal","notgreaternorless","notidentical","notless","notlessnorequal","notparallel","notprecedes","notsubset","notsucceeds","notsuperset","nowarmenian","nparen","nssquare","nsuperior","ntilde","nu","nuhiragana","nukatakana","nukatakanahalfwidth","nuktabengali","nuktadeva","nuktagujarati","nuktagurmukhi","numbersign","numbersignmonospace","numbersignsmall","numeralsigngreek","numeralsignlowergreek","numero","nun","nundagesh","nundageshhebrew","nunhebrew","nvsquare","nwsquare","nyabengali","nyadeva","nyagujarati","nyagurmukhi","o","oacute","oangthai","obarred","obarredcyrillic","obarreddieresiscyrillic","obengali","obopomofo","obreve","ocandradeva","ocandragujarati","ocandravowelsigndeva","ocandravowelsigngujarati","ocaron","ocircle","ocircumflex","ocircumflexacute","ocircumflexdotbelow","ocircumflexgrave","ocircumflexhookabove","ocircumflextilde","ocyrillic","odblacute","odblgrave","odeva","odieresis","odieresiscyrillic","odotbelow","oe","oekorean","ogonek","ogonekcmb","ograve","ogujarati","oharmenian","ohiragana","ohookabove","ohorn","ohornacute","ohorndotbelow","ohorngrave","ohornhookabove","ohorntilde","ohungarumlaut","oi","oinvertedbreve","okatakana","okatakanahalfwidth","okorean","olehebrew","omacron","omacronacute","omacrongrave","omdeva","omega","omega1","omegacyrillic","omegalatinclosed","omegaroundcyrillic","omegatitlocyrillic","omegatonos","omgujarati","omicron","omicrontonos","omonospace","one","onearabic","onebengali","onecircle","onecircleinversesansserif","onedeva","onedotenleader","oneeighth","onefitted","onegujarati","onegurmukhi","onehackarabic","onehalf","onehangzhou","oneideographicparen","oneinferior","onemonospace","onenumeratorbengali","oneoldstyle","oneparen","oneperiod","onepersian","onequarter","oneroman","onesuperior","onethai","onethird","oogonek","oogonekmacron","oogurmukhi","oomatragurmukhi","oopen","oparen","openbullet","ordfeminine","ordmasculine","orthogonal","oshortdeva","oshortvowelsigndeva","oslash","oslashacute","osmallhiragana","osmallkatakana","osmallkatakanahalfwidth","ostrokeacute","osuperior","otcyrillic","otilde","otildeacute","otildedieresis","oubopomofo","overline","overlinecenterline","overlinecmb","overlinedashed","overlinedblwavy","overlinewavy","overscore","ovowelsignbengali","ovowelsigndeva","ovowelsigngujarati","paampssquare","paasentosquare","pabengali","pacute","padeva","pagedown","pageup","pagujarati","pagurmukhi","pahiragana","paiyannoithai","pakatakana","palatalizationcyrilliccmb","palochkacyrillic","pansioskorean","paragraph","parallel","parenleft","parenleftaltonearabic","parenleftbt","parenleftex","parenleftinferior","parenleftmonospace","parenleftsmall","parenleftsuperior","parenlefttp","parenleftvertical","parenright","parenrightaltonearabic","parenrightbt","parenrightex","parenrightinferior","parenrightmonospace","parenrightsmall","parenrightsuperior","parenrighttp","parenrightvertical","partialdiff","paseqhebrew","pashtahebrew","pasquare","patah","patah11","patah1d","patah2a","patahhebrew","patahnarrowhebrew","patahquarterhebrew","patahwidehebrew","pazerhebrew","pbopomofo","pcircle","pdotaccent","pe","pecyrillic","pedagesh","pedageshhebrew","peezisquare","pefinaldageshhebrew","peharabic","peharmenian","pehebrew","pehfinalarabic","pehinitialarabic","pehiragana","pehmedialarabic","pekatakana","pemiddlehookcyrillic","perafehebrew","percent","percentarabic","percentmonospace","percentsmall","period","periodarmenian","periodcentered","periodhalfwidth","periodinferior","periodmonospace","periodsmall","periodsuperior","perispomenigreekcmb","perpendicular","perthousand","peseta","pfsquare","phabengali","phadeva","phagujarati","phagurmukhi","phi","phi1","phieuphacirclekorean","phieuphaparenkorean","phieuphcirclekorean","phieuphkorean","phieuphparenkorean","philatin","phinthuthai","phisymbolgreek","phook","phophanthai","phophungthai","phosamphaothai","pieupacirclekorean","pieupaparenkorean","pieupcieuckorean","pieupcirclekorean","pieupkiyeokkorean","pieupkorean","pieupparenkorean","pieupsioskiyeokkorean","pieupsioskorean","pieupsiostikeutkorean","pieupthieuthkorean","pieuptikeutkorean","pihiragana","pikatakana","pisymbolgreek","piwrarmenian","plus","plusbelowcmb","pluscircle","plusminus","plusmod","plusmonospace","plussmall","plussuperior","pmonospace","pmsquare","pohiragana","pointingindexdownwhite","pointingindexleftwhite","pointingindexrightwhite","pointingindexupwhite","pokatakana","poplathai","postalmark","postalmarkface","pparen","precedes","prescription","primemod","primereversed","product","projective","prolongedkana","propellor","propersubset","propersuperset","proportion","proportional","psi","psicyrillic","psilipneumatacyrilliccmb","pssquare","puhiragana","pukatakana","pvsquare","pwsquare","qadeva","qadmahebrew","qafarabic","qaffinalarabic","qafinitialarabic","qafmedialarabic","qamats","qamats10","qamats1a","qamats1c","qamats27","qamats29","qamats33","qamatsde","qamatshebrew","qamatsnarrowhebrew","qamatsqatanhebrew","qamatsqatannarrowhebrew","qamatsqatanquarterhebrew","qamatsqatanwidehebrew","qamatsquarterhebrew","qamatswidehebrew","qarneyparahebrew","qbopomofo","qcircle","qhook","qmonospace","qof","qofdagesh","qofdageshhebrew","qofhebrew","qparen","quarternote","qubuts","qubuts18","qubuts25","qubuts31","qubutshebrew","qubutsnarrowhebrew","qubutsquarterhebrew","qubutswidehebrew","question","questionarabic","questionarmenian","questiondown","questiondownsmall","questiongreek","questionmonospace","questionsmall","quotedbl","quotedblbase","quotedblleft","quotedblmonospace","quotedblprime","quotedblprimereversed","quotedblright","quoteleft","quoteleftreversed","quotereversed","quoteright","quoterightn","quotesinglbase","quotesingle","quotesinglemonospace","raarmenian","rabengali","racute","radeva","radical","radicalex","radoverssquare","radoverssquaredsquare","radsquare","rafe","rafehebrew","ragujarati","ragurmukhi","rahiragana","rakatakana","rakatakanahalfwidth","ralowerdiagonalbengali","ramiddlediagonalbengali","ramshorn","ratio","rbopomofo","rcaron","rcedilla","rcircle","rcommaaccent","rdblgrave","rdotaccent","rdotbelow","rdotbelowmacron","referencemark","reflexsubset","reflexsuperset","registered","registersans","registerserif","reharabic","reharmenian","rehfinalarabic","rehiragana","rekatakana","rekatakanahalfwidth","resh","reshdageshhebrew","reshhebrew","reversedtilde","reviahebrew","reviamugrashhebrew","revlogicalnot","rfishhook","rfishhookreversed","rhabengali","rhadeva","rho","rhook","rhookturned","rhookturnedsuperior","rhosymbolgreek","rhotichookmod","rieulacirclekorean","rieulaparenkorean","rieulcirclekorean","rieulhieuhkorean","rieulkiyeokkorean","rieulkiyeoksioskorean","rieulkorean","rieulmieumkorean","rieulpansioskorean","rieulparenkorean","rieulphieuphkorean","rieulpieupkorean","rieulpieupsioskorean","rieulsioskorean","rieulthieuthkorean","rieultikeutkorean","rieulyeorinhieuhkorean","rightangle","righttackbelowcmb","righttriangle","rihiragana","rikatakana","rikatakanahalfwidth","ring","ringbelowcmb","ringcmb","ringhalfleft","ringhalfleftarmenian","ringhalfleftbelowcmb","ringhalfleftcentered","ringhalfright","ringhalfrightbelowcmb","ringhalfrightcentered","rinvertedbreve","rittorusquare","rlinebelow","rlongleg","rlonglegturned","rmonospace","rohiragana","rokatakana","rokatakanahalfwidth","roruathai","rparen","rrabengali","rradeva","rragurmukhi","rreharabic","rrehfinalarabic","rrvocalicbengali","rrvocalicdeva","rrvocalicgujarati","rrvocalicvowelsignbengali","rrvocalicvowelsigndeva","rrvocalicvowelsigngujarati","rsuperior","rtblock","rturned","rturnedsuperior","ruhiragana","rukatakana","rukatakanahalfwidth","rupeemarkbengali","rupeesignbengali","rupiah","ruthai","rvocalicbengali","rvocalicdeva","rvocalicgujarati","rvocalicvowelsignbengali","rvocalicvowelsigndeva","rvocalicvowelsigngujarati","sabengali","sacute","sacutedotaccent","sadarabic","sadeva","sadfinalarabic","sadinitialarabic","sadmedialarabic","sagujarati","sagurmukhi","sahiragana","sakatakana","sakatakanahalfwidth","sallallahoualayhewasallamarabic","samekh","samekhdagesh","samekhdageshhebrew","samekhhebrew","saraaathai","saraaethai","saraaimaimalaithai","saraaimaimuanthai","saraamthai","saraathai","saraethai","saraiileftthai","saraiithai","saraileftthai","saraithai","saraothai","saraueeleftthai","saraueethai","saraueleftthai","sarauethai","sarauthai","sarauuthai","sbopomofo","scaron","scarondotaccent","scedilla","schwa","schwacyrillic","schwadieresiscyrillic","schwahook","scircle","scircumflex","scommaaccent","sdotaccent","sdotbelow","sdotbelowdotaccent","seagullbelowcmb","secondtonechinese","section","seenarabic","seenfinalarabic","seeninitialarabic","seenmedialarabic","segol","segol13","segol1f","segol2c","segolhebrew","segolnarrowhebrew","segolquarterhebrew","segoltahebrew","segolwidehebrew","seharmenian","sehiragana","sekatakana","sekatakanahalfwidth","semicolon","semicolonarabic","semicolonmonospace","semicolonsmall","semivoicedmarkkana","semivoicedmarkkanahalfwidth","sentisquare","sentosquare","seven","sevenarabic","sevenbengali","sevencircle","sevencircleinversesansserif","sevendeva","seveneighths","sevengujarati","sevengurmukhi","sevenhackarabic","sevenhangzhou","sevenideographicparen","seveninferior","sevenmonospace","sevenoldstyle","sevenparen","sevenperiod","sevenpersian","sevenroman","sevensuperior","seventeencircle","seventeenparen","seventeenperiod","seventhai","sfthyphen","shaarmenian","shabengali","shacyrillic","shaddaarabic","shaddadammaarabic","shaddadammatanarabic","shaddafathaarabic","shaddakasraarabic","shaddakasratanarabic","shade","shadedark","shadelight","shademedium","shadeva","shagujarati","shagurmukhi","shalshelethebrew","shbopomofo","shchacyrillic","sheenarabic","sheenfinalarabic","sheeninitialarabic","sheenmedialarabic","sheicoptic","sheqel","sheqelhebrew","sheva","sheva115","sheva15","sheva22","sheva2e","shevahebrew","shevanarrowhebrew","shevaquarterhebrew","shevawidehebrew","shhacyrillic","shimacoptic","shin","shindagesh","shindageshhebrew","shindageshshindot","shindageshshindothebrew","shindageshsindot","shindageshsindothebrew","shindothebrew","shinhebrew","shinshindot","shinshindothebrew","shinsindot","shinsindothebrew","shook","sigma1","sigmafinal","sigmalunatesymbolgreek","sihiragana","sikatakana","sikatakanahalfwidth","siluqhebrew","siluqlefthebrew","similar","sindothebrew","siosacirclekorean","siosaparenkorean","sioscieuckorean","sioscirclekorean","sioskiyeokkorean","sioskorean","siosnieunkorean","siosparenkorean","siospieupkorean","siostikeutkorean","six","sixarabic","sixbengali","sixcircle","sixcircleinversesansserif","sixdeva","sixgujarati","sixgurmukhi","sixhackarabic","sixhangzhou","sixideographicparen","sixinferior","sixmonospace","sixoldstyle","sixparen","sixperiod","sixpersian","sixroman","sixsuperior","sixteencircle","sixteencurrencydenominatorbengali","sixteenparen","sixteenperiod","sixthai","slash","slashmonospace","slong","slongdotaccent","smileface","smonospace","sofpasuqhebrew","softhyphen","softsigncyrillic","sohiragana","sokatakana","sokatakanahalfwidth","soliduslongoverlaycmb","solidusshortoverlaycmb","sorusithai","sosalathai","sosothai","sosuathai","space","spacehackarabic","spade","spadesuitblack","spadesuitwhite","sparen","squarebelowcmb","squarecc","squarecm","squarediagonalcrosshatchfill","squarehorizontalfill","squarekg","squarekm","squarekmcapital","squareln","squarelog","squaremg","squaremil","squaremm","squaremsquared","squareorthogonalcrosshatchfill","squareupperlefttolowerrightfill","squareupperrighttolowerleftfill","squareverticalfill","squarewhitewithsmallblack","srsquare","ssabengali","ssadeva","ssagujarati","ssangcieuckorean","ssanghieuhkorean","ssangieungkorean","ssangkiyeokkorean","ssangnieunkorean","ssangpieupkorean","ssangsioskorean","ssangtikeutkorean","ssuperior","sterling","sterlingmonospace","strokelongoverlaycmb","strokeshortoverlaycmb","subset","subsetnotequal","subsetorequal","succeeds","suchthat","suhiragana","sukatakana","sukatakanahalfwidth","sukunarabic","summation","sun","superset","supersetnotequal","supersetorequal","svsquare","syouwaerasquare","tabengali","tackdown","tackleft","tadeva","tagujarati","tagurmukhi","taharabic","tahfinalarabic","tahinitialarabic","tahiragana","tahmedialarabic","taisyouerasquare","takatakana","takatakanahalfwidth","tatweelarabic","tau","tav","tavdages","tavdagesh","tavdageshhebrew","tavhebrew","tbar","tbopomofo","tcaron","tccurl","tcedilla","tcheharabic","tchehfinalarabic","tchehinitialarabic","tchehmedialarabic","tcircle","tcircumflexbelow","tcommaaccent","tdieresis","tdotaccent","tdotbelow","tecyrillic","tedescendercyrillic","teharabic","tehfinalarabic","tehhahinitialarabic","tehhahisolatedarabic","tehinitialarabic","tehiragana","tehjeeminitialarabic","tehjeemisolatedarabic","tehmarbutaarabic","tehmarbutafinalarabic","tehmedialarabic","tehmeeminitialarabic","tehmeemisolatedarabic","tehnoonfinalarabic","tekatakana","tekatakanahalfwidth","telephone","telephoneblack","telishagedolahebrew","telishaqetanahebrew","tencircle","tenideographicparen","tenparen","tenperiod","tenroman","tesh","tet","tetdagesh","tetdageshhebrew","tethebrew","tetsecyrillic","tevirhebrew","tevirlefthebrew","thabengali","thadeva","thagujarati","thagurmukhi","thalarabic","thalfinalarabic","thanthakhatlowleftthai","thanthakhatlowrightthai","thanthakhatthai","thanthakhatupperleftthai","theharabic","thehfinalarabic","thehinitialarabic","thehmedialarabic","thereexists","therefore","theta","theta1","thetasymbolgreek","thieuthacirclekorean","thieuthaparenkorean","thieuthcirclekorean","thieuthkorean","thieuthparenkorean","thirteencircle","thirteenparen","thirteenperiod","thonangmonthothai","thook","thophuthaothai","thorn","thothahanthai","thothanthai","thothongthai","thothungthai","thousandcyrillic","thousandsseparatorarabic","thousandsseparatorpersian","three","threearabic","threebengali","threecircle","threecircleinversesansserif","threedeva","threeeighths","threegujarati","threegurmukhi","threehackarabic","threehangzhou","threeideographicparen","threeinferior","threemonospace","threenumeratorbengali","threeoldstyle","threeparen","threeperiod","threepersian","threequarters","threequartersemdash","threeroman","threesuperior","threethai","thzsquare","tihiragana","tikatakana","tikatakanahalfwidth","tikeutacirclekorean","tikeutaparenkorean","tikeutcirclekorean","tikeutkorean","tikeutparenkorean","tilde","tildebelowcmb","tildecmb","tildecomb","tildedoublecmb","tildeoperator","tildeoverlaycmb","tildeverticalcmb","timescircle","tipehahebrew","tipehalefthebrew","tippigurmukhi","titlocyrilliccmb","tiwnarmenian","tlinebelow","tmonospace","toarmenian","tohiragana","tokatakana","tokatakanahalfwidth","tonebarextrahighmod","tonebarextralowmod","tonebarhighmod","tonebarlowmod","tonebarmidmod","tonefive","tonesix","tonetwo","tonos","tonsquare","topatakthai","tortoiseshellbracketleft","tortoiseshellbracketleftsmall","tortoiseshellbracketleftvertical","tortoiseshellbracketright","tortoiseshellbracketrightsmall","tortoiseshellbracketrightvertical","totaothai","tpalatalhook","tparen","trademark","trademarksans","trademarkserif","tretroflexhook","triagdn","triaglf","triagrt","triagup","ts","tsadi","tsadidagesh","tsadidageshhebrew","tsadihebrew","tsecyrillic","tsere","tsere12","tsere1e","tsere2b","tserehebrew","tserenarrowhebrew","tserequarterhebrew","tserewidehebrew","tshecyrillic","tsuperior","ttabengali","ttadeva","ttagujarati","ttagurmukhi","tteharabic","ttehfinalarabic","ttehinitialarabic","ttehmedialarabic","tthabengali","tthadeva","tthagujarati","tthagurmukhi","tturned","tuhiragana","tukatakana","tukatakanahalfwidth","tusmallhiragana","tusmallkatakana","tusmallkatakanahalfwidth","twelvecircle","twelveparen","twelveperiod","twelveroman","twentycircle","twentyhangzhou","twentyparen","twentyperiod","two","twoarabic","twobengali","twocircle","twocircleinversesansserif","twodeva","twodotenleader","twodotleader","twodotleadervertical","twogujarati","twogurmukhi","twohackarabic","twohangzhou","twoideographicparen","twoinferior","twomonospace","twonumeratorbengali","twooldstyle","twoparen","twoperiod","twopersian","tworoman","twostroke","twosuperior","twothai","twothirds","uacute","ubar","ubengali","ubopomofo","ubreve","ucaron","ucircle","ucircumflex","ucircumflexbelow","ucyrillic","udattadeva","udblacute","udblgrave","udeva","udieresis","udieresisacute","udieresisbelow","udieresiscaron","udieresiscyrillic","udieresisgrave","udieresismacron","udotbelow","ugrave","ugujarati","ugurmukhi","uhiragana","uhookabove","uhorn","uhornacute","uhorndotbelow","uhorngrave","uhornhookabove","uhorntilde","uhungarumlaut","uhungarumlautcyrillic","uinvertedbreve","ukatakana","ukatakanahalfwidth","ukcyrillic","ukorean","umacron","umacroncyrillic","umacrondieresis","umatragurmukhi","umonospace","underscore","underscoredbl","underscoremonospace","underscorevertical","underscorewavy","union","universal","uogonek","uparen","upblock","upperdothebrew","upsilon","upsilondieresis","upsilondieresistonos","upsilonlatin","upsilontonos","uptackbelowcmb","uptackmod","uragurmukhi","uring","ushortcyrillic","usmallhiragana","usmallkatakana","usmallkatakanahalfwidth","ustraightcyrillic","ustraightstrokecyrillic","utilde","utildeacute","utildebelow","uubengali","uudeva","uugujarati","uugurmukhi","uumatragurmukhi","uuvowelsignbengali","uuvowelsigndeva","uuvowelsigngujarati","uvowelsignbengali","uvowelsigndeva","uvowelsigngujarati","vadeva","vagujarati","vagurmukhi","vakatakana","vav","vavdagesh","vavdagesh65","vavdageshhebrew","vavhebrew","vavholam","vavholamhebrew","vavvavhebrew","vavyodhebrew","vcircle","vdotbelow","vecyrillic","veharabic","vehfinalarabic","vehinitialarabic","vehmedialarabic","vekatakana","venus","verticalbar","verticallineabovecmb","verticallinebelowcmb","verticallinelowmod","verticallinemod","vewarmenian","vhook","vikatakana","viramabengali","viramadeva","viramagujarati","visargabengali","visargadeva","visargagujarati","vmonospace","voarmenian","voicediterationhiragana","voicediterationkatakana","voicedmarkkana","voicedmarkkanahalfwidth","vokatakana","vparen","vtilde","vturned","vuhiragana","vukatakana","wacute","waekorean","wahiragana","wakatakana","wakatakanahalfwidth","wakorean","wasmallhiragana","wasmallkatakana","wattosquare","wavedash","wavyunderscorevertical","wawarabic","wawfinalarabic","wawhamzaabovearabic","wawhamzaabovefinalarabic","wbsquare","wcircle","wcircumflex","wdieresis","wdotaccent","wdotbelow","wehiragana","weierstrass","wekatakana","wekorean","weokorean","wgrave","whitebullet","whitecircle","whitecircleinverse","whitecornerbracketleft","whitecornerbracketleftvertical","whitecornerbracketright","whitecornerbracketrightvertical","whitediamond","whitediamondcontainingblacksmalldiamond","whitedownpointingsmalltriangle","whitedownpointingtriangle","whiteleftpointingsmalltriangle","whiteleftpointingtriangle","whitelenticularbracketleft","whitelenticularbracketright","whiterightpointingsmalltriangle","whiterightpointingtriangle","whitesmallsquare","whitesmilingface","whitesquare","whitestar","whitetelephone","whitetortoiseshellbracketleft","whitetortoiseshellbracketright","whiteuppointingsmalltriangle","whiteuppointingtriangle","wihiragana","wikatakana","wikorean","wmonospace","wohiragana","wokatakana","wokatakanahalfwidth","won","wonmonospace","wowaenthai","wparen","wring","wsuperior","wturned","wynn","xabovecmb","xbopomofo","xcircle","xdieresis","xdotaccent","xeharmenian","xi","xmonospace","xparen","xsuperior","yaadosquare","yabengali","yacute","yadeva","yaekorean","yagujarati","yagurmukhi","yahiragana","yakatakana","yakatakanahalfwidth","yakorean","yamakkanthai","yasmallhiragana","yasmallkatakana","yasmallkatakanahalfwidth","yatcyrillic","ycircle","ycircumflex","ydieresis","ydotaccent","ydotbelow","yeharabic","yehbarreearabic","yehbarreefinalarabic","yehfinalarabic","yehhamzaabovearabic","yehhamzaabovefinalarabic","yehhamzaaboveinitialarabic","yehhamzaabovemedialarabic","yehinitialarabic","yehmedialarabic","yehmeeminitialarabic","yehmeemisolatedarabic","yehnoonfinalarabic","yehthreedotsbelowarabic","yekorean","yen","yenmonospace","yeokorean","yeorinhieuhkorean","yerahbenyomohebrew","yerahbenyomolefthebrew","yericyrillic","yerudieresiscyrillic","yesieungkorean","yesieungpansioskorean","yesieungsioskorean","yetivhebrew","ygrave","yhook","yhookabove","yiarmenian","yicyrillic","yikorean","yinyang","yiwnarmenian","ymonospace","yod","yoddagesh","yoddageshhebrew","yodhebrew","yodyodhebrew","yodyodpatahhebrew","yohiragana","yoikorean","yokatakana","yokatakanahalfwidth","yokorean","yosmallhiragana","yosmallkatakana","yosmallkatakanahalfwidth","yotgreek","yoyaekorean","yoyakorean","yoyakthai","yoyingthai","yparen","ypogegrammeni","ypogegrammenigreekcmb","yr","yring","ysuperior","ytilde","yturned","yuhiragana","yuikorean","yukatakana","yukatakanahalfwidth","yukorean","yusbigcyrillic","yusbigiotifiedcyrillic","yuslittlecyrillic","yuslittleiotifiedcyrillic","yusmallhiragana","yusmallkatakana","yusmallkatakanahalfwidth","yuyekorean","yuyeokorean","yyabengali","yyadeva","zaarmenian","zacute","zadeva","zagurmukhi","zaharabic","zahfinalarabic","zahinitialarabic","zahiragana","zahmedialarabic","zainarabic","zainfinalarabic","zakatakana","zaqefgadolhebrew","zaqefqatanhebrew","zarqahebrew","zayin","zayindagesh","zayindageshhebrew","zayinhebrew","zbopomofo","zcaron","zcircle","zcircumflex","zcurl","zdot","zdotaccent","zdotbelow","zecyrillic","zedescendercyrillic","zedieresiscyrillic","zehiragana","zekatakana","zero","zeroarabic","zerobengali","zerodeva","zerogujarati","zerogurmukhi","zerohackarabic","zeroinferior","zeromonospace","zerooldstyle","zeropersian","zerosuperior","zerothai","zerowidthjoiner","zerowidthnonjoiner","zerowidthspace","zeta","zhbopomofo","zhearmenian","zhebrevecyrillic","zhecyrillic","zhedescendercyrillic","zhedieresiscyrillic","zihiragana","zikatakana","zinorhebrew","zlinebelow","zmonospace","zohiragana","zokatakana","zparen","zretroflexhook","zstroke","zuhiragana","zukatakana","angbracketleftbig","angbracketleftBig","angbracketleftbigg","angbracketleftBigg","angbracketrightBig","angbracketrightbig","angbracketrightBigg","angbracketrightbigg","arrowhookleft","arrowhookright","arrowlefttophalf","arrowleftbothalf","arrownortheast","arrownorthwest","arrowrighttophalf","arrowrightbothalf","arrowsoutheast","arrowsouthwest","backslashbig","backslashBig","backslashBigg","backslashbigg","bardbl","bracehtipdownleft","bracehtipdownright","bracehtipupleft","bracehtipupright","braceleftBig","braceleftbig","braceleftbigg","braceleftBigg","bracerightBig","bracerightbig","bracerightbigg","bracerightBigg","bracketleftbig","bracketleftBig","bracketleftbigg","bracketleftBigg","bracketrightBig","bracketrightbig","bracketrightbigg","bracketrightBigg","ceilingleftbig","ceilingleftBig","ceilingleftBigg","ceilingleftbigg","ceilingrightbig","ceilingrightBig","ceilingrightbigg","ceilingrightBigg","circledotdisplay","circledottext","circlemultiplydisplay","circlemultiplytext","circleplusdisplay","circleplustext","contintegraldisplay","contintegraltext","coproductdisplay","coproducttext","floorleftBig","floorleftbig","floorleftbigg","floorleftBigg","floorrightbig","floorrightBig","floorrightBigg","floorrightbigg","hatwide","hatwider","hatwidest","intercal","integraldisplay","integraltext","intersectiondisplay","intersectiontext","logicalanddisplay","logicalandtext","logicalordisplay","logicalortext","parenleftBig","parenleftbig","parenleftBigg","parenleftbigg","parenrightBig","parenrightbig","parenrightBigg","parenrightbigg","prime","productdisplay","producttext","radicalbig","radicalBig","radicalBigg","radicalbigg","radicalbt","radicaltp","radicalvertex","slashbig","slashBig","slashBigg","slashbigg","summationdisplay","summationtext","tildewide","tildewider","tildewidest","uniondisplay","unionmultidisplay","unionmultitext","unionsqdisplay","unionsqtext","uniontext","vextenddouble","vextendsingle","getDingbatsGlyphsUnicode","a2","a202","a3","a4","a5","a119","a118","a117","a11","a12","a13","a14","a15","a16","a105","a17","a18","a19","a20","a21","a22","a23","a24","a25","a26","a27","a28","a6","a7","a8","a9","a10","a29","a30","a31","a32","a33","a34","a35","a36","a37","a38","a39","a40","a41","a42","a43","a44","a45","a46","a47","a48","a49","a50","a51","a52","a53","a54","a55","a56","a57","a58","a59","a60","a61","a62","a63","a64","a65","a66","a67","a68","a69","a70","a71","a72","a73","a74","a203","a75","a204","a76","a77","a78","a79","a81","a82","a83","a84","a97","a98","a99","a100","a101","a102","a103","a104","a106","a107","a108","a112","a111","a110","a109","a120","a121","a122","a123","a124","a125","a126","a127","a128","a129","a130","a131","a132","a133","a134","a135","a136","a137","a138","a139","a140","a141","a142","a143","a144","a145","a146","a147","a148","a149","a150","a151","a152","a153","a154","a155","a156","a157","a158","a159","a160","a161","a163","a164","a196","a165","a192","a166","a167","a168","a169","a170","a171","a172","a173","a162","a174","a175","a176","a177","a178","a179","a193","a180","a199","a181","a200","a182","a201","a183","a184","a197","a185","a194","a198","a186","a195","a187","a188","a189","a190","a191","a89","a90","a93","a94","a91","a92","a205","a85","a206","a86","a87","a88","a95","a96","exports","getStdFontMap","getNonStdFontMap","getSerifFonts","getSymbolsFonts","getGlyphMapForStandardFonts","getSupplementalGlyphMapForArialBlack","getSupplementalGlyphMapForCalibri","getSpecialPUASymbols","undefined","nameLen","hexStr","substring","toUpperCase","UnicodeRanges","isRTLRangeFor","getNormalizedUnicodes","charsLength","charCodeAt","numSubrs","getUshort","getLong","idOffset","groups","idDelta","gsubrs","isCFFCIDFont","cmds","numberOfContours","arg1","arg2","scale01","scale10","subglyph","compileGlyf","endPtsOfContours","instructionLength","numberOfPoints","points","startPoint","contour","quadraticCurveTo","stems","stackClean","xa","ya","xb","yb","bezierCurveTo","subrCode","getSubroutineBias","y3","achar","bchar","lookupCmap","compileCharString","NOOP","getPathJs","compileGlyph","compileGlyphImpl","hasBuiltPath","cffInfo","glyphNameMap","create","parseCmap","parseCff","parseGlyfTable","HINTING_ENABLED","Type1CharString","COMMAND_MAP","hstem","vstem","vmoveto","rlineto","hlineto","vlineto","rrcurveto","callsubr","flex","drop","endchar","rmoveto","hmoveto","vhcurveto","hvcurveto","encoded","dy","wx","sbx","sby","num2","num1","flexArgs","executeCommand","stackLength","howManyArgs","Type1Parser","EEXEC_ENCRYPT_KEY","CHAR_STRS_ENCRYPT_KEY","discardNumber","c1","c2","decrypted","digit1","isHexDigit","digit2","isBinary","decryptAscii","readNumberArray","readInt","readBoolean","getToken","isSpecial","readCharStrings","lenIV","extractFontProgram","privateData","program","blueArray","charString","charStringObject","lsb","extractFontHeader","encodingArg","ShadingType","FUNCTION_BASED","AXIAL","RADIAL","FREE_FORM_MESH","LATTICE_FORM_MESH","COONS_PATCH_MESH","TENSOR_PATCH_MESH","getPattern","Shadings","t0","domainArr","extendStart","extendEnd","extendArr","x1","r1","r2","distance","fnObj","NUMBER_OF_SAMPLES","colorStops","cssColor","background","RadialAxial","coordsArr","shadingType","r0","csNumComps","MeshStreamReader","align","readFlag","readCoordinate","bitsPerCoordinate","yi","readComponents","ci","coords","mesh","operators","ps","verticesLeft","coord","MIN_SPLIT_PATCH_CHUNKS_AMOUNT","MAX_SPLIT_PATCH_CHUNKS_AMOUNT","TRIANGLE_DENSITY","getB","lut","t_","buildB","figure","figureMinX","figureMinY","figureMaxX","figureMaxY","splitXBy","splitYBy","verticesPerRow","figureCoords","figureColors","cl","cr","c0","c3","bRow","bCol","newColor","tmp4","maxY","coordsPacked","xy","colorsPacked","figures","decodeContext","bitsPerFlag","colorFn","patchMesh","decodeType4Shading","decodeType5Shading","decodeType6Shading","decodeType7Shading","updateBounds","buildFigureFromPatch","packData","Mesh","Dummy","xstep","ystep","paintType","tilingType","baseTypes","arabicTypes","temp","isLTR","strLength","createBidiText","numBidi","charType","startLevel","levels","isOdd","sor","eor","lastType","findUnequal","before","after","setValues","isEven","highestLevel","lowestOddLevel","reverseValues","getMetrics","createFromArray","PDFFunction","CONSTRUCT_SAMPLED","CONSTRUCT_INTERPOLATED","CONSTRUCT_STICHED","CONSTRUCT_POSTSCRIPT","getSampleArray","sampleMul","strBytes","strIdx","typeFn","fromIR","parseArray","constructSampled","domain","toNumberArray","inputSize","outputSize","toMultiArray","bps","encode","samples","constructSampledFromIR","ymin","cubeVertices","cubeN","cubeVertex","domain_2i","domain_2i_1","interpolate","size_i","e0","n0","n1","rj","constructInterpolated","constructInterpolatedFromIR","constructStiched","fnRefs","fns","bounds","constructStichedFromIR","dmin","dmax","rmin","rmax","constructPostScript","constructPostScriptFromIR","numOutputs","numInputs","MAX_CACHE_SIZE","cache_available","cachedValue","stackIndex","bound","fnDict","PostScriptStack","MAX_STACK_SIZE","pop","copy","roll","PostScriptEvaluator","execute","counter","operator","PostScriptCompiler","AstNode","AstArgument","AstLiteral","AstBinaryOperation","AstMin","AstVariable","AstVariableDefinition","ExpressionBuilderVisitor","visitArgument","visitVariable","variable","visitLiteral","literal","visitBinaryOperation","visitVariableDefinition","definition","visitMin","max","instructions","lastRegister","buildAddOperation","buildMulOperation","buildSubOperation","ast1","ast2","tmpVar","buildMinOperation","statementBuilder","instruction","expr","nextToken","accept","expect","PostScriptTokenTypes","parseBlock","parseCondition","conditionLocation","jumpLocation","endOfTrue","LBRACE","RBRACE","NUMBER","OPERATOR","IF","IFELSE","PostScriptToken","opCache","opValue","SEED","MASK_HIGH","MASK_LOW","seed","update","blockCounts","tailLength","dataUint32","k2","C1","C2","C1_LOW","C2_LOW","hexdigest","hex1","hex2","PDFImage","addend","isMask","isIndexed","maskDict","imageData","smaskData","maskData","computedLength","haveFullData","decodeBuffer","decodeAddends","decodeCoefficients","decodeAndClamp","getComponents","bufferPos","rowComps","loop1End","loop2End","buf","remainingBits","fillOpacity","sw","sh","alphaBuf","resizeImageMask","opacity","imageOffset","maskOffset","rgbaBuf","undoPreblend","matte","matteRgb","matteR","matteG","matteB","createImageData","forceRGBA","drawWidth","drawHeight","newArray","imageLength","actualHeight","maybeUndoPreblend","fillGrayBuffer","getImageBytes","CallbackKind","DATA","ERROR","StreamKind","CANCEL","CANCEL_COMPLETE","CLOSE","ENQUEUE","PULL","PULL_COMPLETE","START_COMPLETE","event","callbackId","wrapReason","cbSourceName","cbTargetName","comObj","sourceName","targetName","on","ah","sendWithPromise","sendWithStream","streamId","controller","startCapability","startCall","pullCall","cancelCall","isClosed","desiredSize","pull","pullCapability","cancel","cancelCapability","_createStreamSink","lastDesiredSize","close","sinkCapability","onPull","onCancel","isCancelled","ready","success","_processStreamMessage","_postMessage","destroy","getFullReader","getRangeReader","cancelAllRequests","readers"],"mappings":"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","file":"pdf.worker.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/build/pdf.worker\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf.worker\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf.worker\"] = factory();\n})(this, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __w_pdfjs_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__w_pdfjs_require__.m = modules;\n\n \t// expose the module cache\n \t__w_pdfjs_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__w_pdfjs_require__.d = function(exports, name, getter) {\n \t\tif(!__w_pdfjs_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__w_pdfjs_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__w_pdfjs_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __w_pdfjs_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__w_pdfjs_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __w_pdfjs_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__w_pdfjs_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__w_pdfjs_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__w_pdfjs_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__w_pdfjs_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __w_pdfjs_require__(__w_pdfjs_require__.s = 0);\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WorkerMessageHandler } from \"./core/worker.js\";\n\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsVersion = PDFJSDev.eval(\"BUNDLE_VERSION\");\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsBuild = PDFJSDev.eval(\"BUNDLE_BUILD\");\n\nexport { WorkerMessageHandler };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  AbortException,\n  arrayByteLength,\n  arraysToBytes,\n  createPromiseCapability,\n  getVerbosityLevel,\n  info,\n  InvalidPDFException,\n  MissingPDFException,\n  PasswordException,\n  setVerbosityLevel,\n  UnexpectedResponseException,\n  UnknownErrorException,\n  UNSUPPORTED_FEATURES,\n  VerbosityLevel,\n  warn,\n} from \"../shared/util.js\";\nimport { clearPrimitiveCaches, Ref } from \"./primitives.js\";\nimport { LocalPdfManager, NetworkPdfManager } from \"./pdf_manager.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\nimport { MessageHandler } from \"../shared/message_handler.js\";\nimport { PDFWorkerStream } from \"./worker_stream.js\";\nimport { XRefParseException } from \"./core_utils.js\";\n\nvar WorkerTask = (function WorkerTaskClosure() {\n  // eslint-disable-next-line no-shadow\n  function WorkerTask(name) {\n    this.name = name;\n    this.terminated = false;\n    this._capability = createPromiseCapability();\n  }\n\n  WorkerTask.prototype = {\n    get finished() {\n      return this._capability.promise;\n    },\n\n    finish() {\n      this._capability.resolve();\n    },\n\n    terminate() {\n      this.terminated = true;\n    },\n\n    ensureNotTerminated() {\n      if (this.terminated) {\n        throw new Error(\"Worker task was terminated\");\n      }\n    },\n  };\n\n  return WorkerTask;\n})();\n\nvar WorkerMessageHandler = {\n  setup(handler, port) {\n    var testMessageProcessed = false;\n    handler.on(\"test\", function wphSetupTest(data) {\n      if (testMessageProcessed) {\n        return; // we already processed 'test' message once\n      }\n      testMessageProcessed = true;\n\n      // check if Uint8Array can be sent to worker\n      if (!(data instanceof Uint8Array)) {\n        handler.send(\"test\", null);\n        return;\n      }\n      // making sure postMessage transfers are working\n      const supportTransfers = data[0] === 255;\n      handler.postMessageTransfers = supportTransfers;\n\n      handler.send(\"test\", { supportTransfers });\n    });\n\n    handler.on(\"configure\", function wphConfigure(data) {\n      setVerbosityLevel(data.verbosity);\n    });\n\n    handler.on(\"GetDocRequest\", function wphSetupDoc(data) {\n      return WorkerMessageHandler.createDocumentHandler(data, port);\n    });\n  },\n  createDocumentHandler(docParams, port) {\n    // This context is actually holds references on pdfManager and handler,\n    // until the latter is destroyed.\n    var pdfManager;\n    var terminated = false;\n    var cancelXHRs = null;\n    var WorkerTasks = [];\n    const verbosity = getVerbosityLevel();\n\n    const apiVersion = docParams.apiVersion;\n    const workerVersion =\n      typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"TESTING\")\n        ? PDFJSDev.eval(\"BUNDLE_VERSION\")\n        : null;\n    if (apiVersion !== workerVersion) {\n      throw new Error(\n        `The API version \"${apiVersion}\" does not match ` +\n          `the Worker version \"${workerVersion}\".`\n      );\n    }\n\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n      // Fail early, and predictably, rather than having (some) fonts fail to\n      // load/render with slightly cryptic error messages in environments where\n      // the `Array.prototype` has been *incorrectly* extended.\n      //\n      // PLEASE NOTE: We do *not* want to slow down font parsing by adding\n      //              `hasOwnProperty` checks all over the code-base.\n      const enumerableProperties = [];\n      for (const property in []) {\n        enumerableProperties.push(property);\n      }\n      if (enumerableProperties.length) {\n        throw new Error(\n          \"The `Array.prototype` contains unexpected enumerable properties: \" +\n            enumerableProperties.join(\", \") +\n            \"; thus breaking e.g. `for...in` iteration of `Array`s.\"\n        );\n      }\n\n      // Ensure that (primarily) Node.js users won't accidentally attempt to use\n      // a non-translated/non-polyfilled build of the library, since that would\n      // quickly fail anyway because of missing functionality (such as e.g.\n      // `ReadableStream` and `Promise.allSettled`).\n      if (\n        (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"SKIP_BABEL\")) &&\n        (typeof ReadableStream === \"undefined\" ||\n          typeof Promise.allSettled === \"undefined\")\n      ) {\n        throw new Error(\n          \"The browser/environment lacks native support for critical \" +\n            \"functionality used by the PDF.js library (e.g. \" +\n            \"`ReadableStream` and/or `Promise.allSettled`); \" +\n            \"please use an ES5-compatible build instead.\"\n        );\n      }\n    }\n\n    var docId = docParams.docId;\n    var docBaseUrl = docParams.docBaseUrl;\n    var workerHandlerName = docParams.docId + \"_worker\";\n    var handler = new MessageHandler(workerHandlerName, docId, port);\n\n    // Ensure that postMessage transfers are always correctly enabled/disabled,\n    // to prevent \"DataCloneError\" in browsers without transfers support.\n    handler.postMessageTransfers = docParams.postMessageTransfers;\n\n    function ensureNotTerminated() {\n      if (terminated) {\n        throw new Error(\"Worker was terminated\");\n      }\n    }\n\n    function startWorkerTask(task) {\n      WorkerTasks.push(task);\n    }\n\n    function finishWorkerTask(task) {\n      task.finish();\n      var i = WorkerTasks.indexOf(task);\n      WorkerTasks.splice(i, 1);\n    }\n\n    async function loadDocument(recoveryMode) {\n      await pdfManager.ensureDoc(\"checkHeader\");\n      await pdfManager.ensureDoc(\"parseStartXRef\");\n      await pdfManager.ensureDoc(\"parse\", [recoveryMode]);\n\n      if (!recoveryMode) {\n        // Check that at least the first page can be successfully loaded,\n        // since otherwise the XRef table is definitely not valid.\n        await pdfManager.ensureDoc(\"checkFirstPage\");\n      }\n\n      const [numPages, fingerprint] = await Promise.all([\n        pdfManager.ensureDoc(\"numPages\"),\n        pdfManager.ensureDoc(\"fingerprint\"),\n      ]);\n      return { numPages, fingerprint };\n    }\n\n    function getPdfManager(data, evaluatorOptions) {\n      var pdfManagerCapability = createPromiseCapability();\n      let newPdfManager;\n\n      var source = data.source;\n      if (source.data) {\n        try {\n          newPdfManager = new LocalPdfManager(\n            docId,\n            source.data,\n            source.password,\n            evaluatorOptions,\n            docBaseUrl\n          );\n          pdfManagerCapability.resolve(newPdfManager);\n        } catch (ex) {\n          pdfManagerCapability.reject(ex);\n        }\n        return pdfManagerCapability.promise;\n      }\n\n      var pdfStream,\n        cachedChunks = [];\n      try {\n        pdfStream = new PDFWorkerStream(handler);\n      } catch (ex) {\n        pdfManagerCapability.reject(ex);\n        return pdfManagerCapability.promise;\n      }\n\n      var fullRequest = pdfStream.getFullReader();\n      fullRequest.headersReady\n        .then(function () {\n          if (!fullRequest.isRangeSupported) {\n            return;\n          }\n\n          // We don't need auto-fetch when streaming is enabled.\n          var disableAutoFetch =\n            source.disableAutoFetch || fullRequest.isStreamingSupported;\n          newPdfManager = new NetworkPdfManager(\n            docId,\n            pdfStream,\n            {\n              msgHandler: handler,\n              password: source.password,\n              length: fullRequest.contentLength,\n              disableAutoFetch,\n              rangeChunkSize: source.rangeChunkSize,\n            },\n            evaluatorOptions,\n            docBaseUrl\n          );\n          // There may be a chance that `newPdfManager` is not initialized for\n          // the first few runs of `readchunk` block of code. Be sure to send\n          // all cached chunks, if any, to chunked_stream via pdf_manager.\n          for (let i = 0; i < cachedChunks.length; i++) {\n            newPdfManager.sendProgressiveData(cachedChunks[i]);\n          }\n\n          cachedChunks = [];\n          pdfManagerCapability.resolve(newPdfManager);\n          cancelXHRs = null;\n        })\n        .catch(function (reason) {\n          pdfManagerCapability.reject(reason);\n          cancelXHRs = null;\n        });\n\n      var loaded = 0;\n      var flushChunks = function () {\n        var pdfFile = arraysToBytes(cachedChunks);\n        if (source.length && pdfFile.length !== source.length) {\n          warn(\"reported HTTP length is different from actual\");\n        }\n        // the data is array, instantiating directly from it\n        try {\n          newPdfManager = new LocalPdfManager(\n            docId,\n            pdfFile,\n            source.password,\n            evaluatorOptions,\n            docBaseUrl\n          );\n          pdfManagerCapability.resolve(newPdfManager);\n        } catch (ex) {\n          pdfManagerCapability.reject(ex);\n        }\n        cachedChunks = [];\n      };\n      var readPromise = new Promise(function (resolve, reject) {\n        var readChunk = function ({ value, done }) {\n          try {\n            ensureNotTerminated();\n            if (done) {\n              if (!newPdfManager) {\n                flushChunks();\n              }\n              cancelXHRs = null;\n              return;\n            }\n\n            loaded += arrayByteLength(value);\n            if (!fullRequest.isStreamingSupported) {\n              handler.send(\"DocProgress\", {\n                loaded,\n                total: Math.max(loaded, fullRequest.contentLength || 0),\n              });\n            }\n\n            if (newPdfManager) {\n              newPdfManager.sendProgressiveData(value);\n            } else {\n              cachedChunks.push(value);\n            }\n\n            fullRequest.read().then(readChunk, reject);\n          } catch (e) {\n            reject(e);\n          }\n        };\n        fullRequest.read().then(readChunk, reject);\n      });\n      readPromise.catch(function (e) {\n        pdfManagerCapability.reject(e);\n        cancelXHRs = null;\n      });\n\n      cancelXHRs = function (reason) {\n        pdfStream.cancelAllRequests(reason);\n      };\n\n      return pdfManagerCapability.promise;\n    }\n\n    function setupDoc(data) {\n      function onSuccess(doc) {\n        ensureNotTerminated();\n        handler.send(\"GetDoc\", { pdfInfo: doc });\n      }\n\n      function onFailure(ex) {\n        ensureNotTerminated();\n\n        if (ex instanceof PasswordException) {\n          var task = new WorkerTask(`PasswordException: response ${ex.code}`);\n          startWorkerTask(task);\n\n          handler\n            .sendWithPromise(\"PasswordRequest\", ex)\n            .then(function ({ password }) {\n              finishWorkerTask(task);\n              pdfManager.updatePassword(password);\n              pdfManagerReady();\n            })\n            .catch(function () {\n              finishWorkerTask(task);\n              handler.send(\"DocException\", ex);\n            });\n        } else if (\n          ex instanceof InvalidPDFException ||\n          ex instanceof MissingPDFException ||\n          ex instanceof UnexpectedResponseException ||\n          ex instanceof UnknownErrorException\n        ) {\n          handler.send(\"DocException\", ex);\n        } else {\n          handler.send(\n            \"DocException\",\n            new UnknownErrorException(ex.message, ex.toString())\n          );\n        }\n      }\n\n      function pdfManagerReady() {\n        ensureNotTerminated();\n\n        loadDocument(false).then(\n          onSuccess,\n          function loadFailure(ex) {\n            ensureNotTerminated();\n\n            // Try again with recoveryMode == true\n            if (!(ex instanceof XRefParseException)) {\n              onFailure(ex);\n              return;\n            }\n            pdfManager.requestLoadedStream();\n            pdfManager.onLoadedStream().then(function () {\n              ensureNotTerminated();\n\n              loadDocument(true).then(onSuccess, onFailure);\n            });\n          },\n          onFailure\n        );\n      }\n\n      ensureNotTerminated();\n\n      var evaluatorOptions = {\n        maxImageSize: data.maxImageSize,\n        disableFontFace: data.disableFontFace,\n        ignoreErrors: data.ignoreErrors,\n        isEvalSupported: data.isEvalSupported,\n        fontExtraProperties: data.fontExtraProperties,\n      };\n\n      getPdfManager(data, evaluatorOptions)\n        .then(function (newPdfManager) {\n          if (terminated) {\n            // We were in a process of setting up the manager, but it got\n            // terminated in the middle.\n            newPdfManager.terminate(\n              new AbortException(\"Worker was terminated.\")\n            );\n            throw new Error(\"Worker was terminated\");\n          }\n          pdfManager = newPdfManager;\n\n          pdfManager.onLoadedStream().then(function (stream) {\n            handler.send(\"DataLoaded\", { length: stream.bytes.byteLength });\n          });\n        })\n        .then(pdfManagerReady, onFailure);\n    }\n\n    handler.on(\"GetPage\", function wphSetupGetPage(data) {\n      return pdfManager.getPage(data.pageIndex).then(function (page) {\n        return Promise.all([\n          pdfManager.ensure(page, \"rotate\"),\n          pdfManager.ensure(page, \"ref\"),\n          pdfManager.ensure(page, \"userUnit\"),\n          pdfManager.ensure(page, \"view\"),\n        ]).then(function ([rotate, ref, userUnit, view]) {\n          return {\n            rotate,\n            ref,\n            userUnit,\n            view,\n          };\n        });\n      });\n    });\n\n    handler.on(\"GetPageIndex\", function wphSetupGetPageIndex(data) {\n      var ref = Ref.get(data.ref.num, data.ref.gen);\n      var catalog = pdfManager.pdfDocument.catalog;\n      return catalog.getPageIndex(ref);\n    });\n\n    handler.on(\"GetDestinations\", function wphSetupGetDestinations(data) {\n      return pdfManager.ensureCatalog(\"destinations\");\n    });\n\n    handler.on(\"GetDestination\", function wphSetupGetDestination(data) {\n      return pdfManager.ensureCatalog(\"getDestination\", [data.id]);\n    });\n\n    handler.on(\"GetPageLabels\", function wphSetupGetPageLabels(data) {\n      return pdfManager.ensureCatalog(\"pageLabels\");\n    });\n\n    handler.on(\"GetPageLayout\", function wphSetupGetPageLayout(data) {\n      return pdfManager.ensureCatalog(\"pageLayout\");\n    });\n\n    handler.on(\"GetPageMode\", function wphSetupGetPageMode(data) {\n      return pdfManager.ensureCatalog(\"pageMode\");\n    });\n\n    handler.on(\"GetViewerPreferences\", function (data) {\n      return pdfManager.ensureCatalog(\"viewerPreferences\");\n    });\n\n    handler.on(\"GetOpenAction\", function (data) {\n      return pdfManager.ensureCatalog(\"openAction\");\n    });\n\n    handler.on(\"GetAttachments\", function wphSetupGetAttachments(data) {\n      return pdfManager.ensureCatalog(\"attachments\");\n    });\n\n    handler.on(\"GetJavaScript\", function wphSetupGetJavaScript(data) {\n      return pdfManager.ensureCatalog(\"javaScript\");\n    });\n\n    handler.on(\"GetOutline\", function wphSetupGetOutline(data) {\n      return pdfManager.ensureCatalog(\"documentOutline\");\n    });\n\n    handler.on(\"GetPermissions\", function (data) {\n      return pdfManager.ensureCatalog(\"permissions\");\n    });\n\n    handler.on(\"GetMetadata\", function wphSetupGetMetadata(data) {\n      return Promise.all([\n        pdfManager.ensureDoc(\"documentInfo\"),\n        pdfManager.ensureCatalog(\"metadata\"),\n      ]);\n    });\n\n    handler.on(\"GetData\", function wphSetupGetData(data) {\n      pdfManager.requestLoadedStream();\n      return pdfManager.onLoadedStream().then(function (stream) {\n        return stream.bytes;\n      });\n    });\n\n    handler.on(\"GetStats\", function wphSetupGetStats(data) {\n      return pdfManager.pdfDocument.xref.stats;\n    });\n\n    handler.on(\"GetAnnotations\", function ({ pageIndex, intent }) {\n      return pdfManager.getPage(pageIndex).then(function (page) {\n        return page.getAnnotationsData(intent);\n      });\n    });\n\n    handler.on(\n      \"GetOperatorList\",\n      function wphSetupRenderPage(data, sink) {\n        var pageIndex = data.pageIndex;\n        pdfManager.getPage(pageIndex).then(function (page) {\n          var task = new WorkerTask(`GetOperatorList: page ${pageIndex}`);\n          startWorkerTask(task);\n\n          // NOTE: Keep this condition in sync with the `info` helper function.\n          const start = verbosity >= VerbosityLevel.INFOS ? Date.now() : 0;\n\n          // Pre compile the pdf page and fetch the fonts/images.\n          page\n            .getOperatorList({\n              handler,\n              sink,\n              task,\n              intent: data.intent,\n              renderInteractiveForms: data.renderInteractiveForms,\n            })\n            .then(\n              function (operatorListInfo) {\n                finishWorkerTask(task);\n\n                if (start) {\n                  info(\n                    `page=${pageIndex + 1} - getOperatorList: time=` +\n                      `${Date.now() - start}ms, len=${operatorListInfo.length}`\n                  );\n                }\n                sink.close();\n              },\n              function (reason) {\n                finishWorkerTask(task);\n                if (task.terminated) {\n                  return; // ignoring errors from the terminated thread\n                }\n                // For compatibility with older behavior, generating unknown\n                // unsupported feature notification on errors.\n                handler.send(\"UnsupportedFeature\", {\n                  featureId: UNSUPPORTED_FEATURES.errorOperatorList,\n                });\n\n                sink.error(reason);\n\n                // TODO: Should `reason` be re-thrown here (currently that\n                //       casues \"Uncaught exception: ...\" messages in the\n                //       console)?\n              }\n            );\n        });\n      },\n      this\n    );\n\n    handler.on(\"GetTextContent\", function wphExtractText(data, sink) {\n      var pageIndex = data.pageIndex;\n      sink.onPull = function (desiredSize) {};\n      sink.onCancel = function (reason) {};\n\n      pdfManager.getPage(pageIndex).then(function (page) {\n        var task = new WorkerTask(\"GetTextContent: page \" + pageIndex);\n        startWorkerTask(task);\n\n        // NOTE: Keep this condition in sync with the `info` helper function.\n        const start = verbosity >= VerbosityLevel.INFOS ? Date.now() : 0;\n\n        page\n          .extractTextContent({\n            handler,\n            task,\n            sink,\n            normalizeWhitespace: data.normalizeWhitespace,\n            combineTextItems: data.combineTextItems,\n          })\n          .then(\n            function () {\n              finishWorkerTask(task);\n\n              if (start) {\n                info(\n                  `page=${pageIndex + 1} - getTextContent: time=` +\n                    `${Date.now() - start}ms`\n                );\n              }\n              sink.close();\n            },\n            function (reason) {\n              finishWorkerTask(task);\n              if (task.terminated) {\n                return; // ignoring errors from the terminated thread\n              }\n              sink.error(reason);\n\n              // TODO: Should `reason` be re-thrown here (currently that casues\n              //       \"Uncaught exception: ...\" messages in the console)?\n            }\n          );\n      });\n    });\n\n    handler.on(\"FontFallback\", function (data) {\n      return pdfManager.fontFallback(data.id, handler);\n    });\n\n    handler.on(\"Cleanup\", function wphCleanup(data) {\n      return pdfManager.cleanup(/* manuallyTriggered = */ true);\n    });\n\n    handler.on(\"Terminate\", function wphTerminate(data) {\n      terminated = true;\n\n      const waitOn = [];\n      if (pdfManager) {\n        pdfManager.terminate(new AbortException(\"Worker was terminated.\"));\n\n        const cleanupPromise = pdfManager.cleanup();\n        waitOn.push(cleanupPromise);\n\n        pdfManager = null;\n      } else {\n        clearPrimitiveCaches();\n      }\n      if (cancelXHRs) {\n        cancelXHRs(new AbortException(\"Worker was terminated.\"));\n      }\n\n      WorkerTasks.forEach(function (task) {\n        waitOn.push(task.finished);\n        task.terminate();\n      });\n\n      return Promise.all(waitOn).then(function () {\n        // Notice that even if we destroying handler, resolved response promise\n        // must be sent back.\n        handler.destroy();\n        handler = null;\n      });\n    });\n\n    handler.on(\"Ready\", function wphReady(data) {\n      setupDoc(docParams);\n      docParams = null; // we don't need docParams anymore -- saving memory.\n    });\n    return workerHandlerName;\n  },\n  initializeFromPort(port) {\n    var handler = new MessageHandler(\"worker\", \"main\", port);\n    WorkerMessageHandler.setup(handler, port);\n    handler.send(\"ready\", null);\n  },\n};\n\nfunction isMessagePort(maybePort) {\n  return (\n    typeof maybePort.postMessage === \"function\" && \"onmessage\" in maybePort\n  );\n}\n\n// Worker thread (and not Node.js)?\nif (\n  typeof window === \"undefined\" &&\n  !isNodeJS &&\n  typeof self !== \"undefined\" &&\n  isMessagePort(self)\n) {\n  WorkerMessageHandler.initializeFromPort(self);\n}\n\nexport { WorkerTask, WorkerMessageHandler };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\nimport \"./compatibility.js\";\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\n// Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\nconst PermissionFlag = {\n  PRINT: 0x04,\n  MODIFY_CONTENTS: 0x08,\n  COPY: 0x10,\n  MODIFY_ANNOTATIONS: 0x20,\n  FILL_INTERACTIVE_FORMS: 0x100,\n  COPY_FOR_ACCESSIBILITY: 0x200,\n  ASSEMBLE: 0x400,\n  PRINT_HIGH_QUALITY: 0x800,\n};\n\nconst TextRenderingMode = {\n  FILL: 0,\n  STROKE: 1,\n  FILL_STROKE: 2,\n  INVISIBLE: 3,\n  FILL_ADD_TO_PATH: 4,\n  STROKE_ADD_TO_PATH: 5,\n  FILL_STROKE_ADD_TO_PATH: 6,\n  ADD_TO_PATH: 7,\n  FILL_STROKE_MASK: 3,\n  ADD_TO_PATH_FLAG: 4,\n};\n\nconst ImageKind = {\n  GRAYSCALE_1BPP: 1,\n  RGB_24BPP: 2,\n  RGBA_32BPP: 3,\n};\n\nconst AnnotationType = {\n  TEXT: 1,\n  LINK: 2,\n  FREETEXT: 3,\n  LINE: 4,\n  SQUARE: 5,\n  CIRCLE: 6,\n  POLYGON: 7,\n  POLYLINE: 8,\n  HIGHLIGHT: 9,\n  UNDERLINE: 10,\n  SQUIGGLY: 11,\n  STRIKEOUT: 12,\n  STAMP: 13,\n  CARET: 14,\n  INK: 15,\n  POPUP: 16,\n  FILEATTACHMENT: 17,\n  SOUND: 18,\n  MOVIE: 19,\n  WIDGET: 20,\n  SCREEN: 21,\n  PRINTERMARK: 22,\n  TRAPNET: 23,\n  WATERMARK: 24,\n  THREED: 25,\n  REDACT: 26,\n};\n\nconst AnnotationStateModelType = {\n  MARKED: \"Marked\",\n  REVIEW: \"Review\",\n};\n\nconst AnnotationMarkedState = {\n  MARKED: \"Marked\",\n  UNMARKED: \"Unmarked\",\n};\n\nconst AnnotationReviewState = {\n  ACCEPTED: \"Accepted\",\n  REJECTED: \"Rejected\",\n  CANCELLED: \"Cancelled\",\n  COMPLETED: \"Completed\",\n  NONE: \"None\",\n};\n\nconst AnnotationReplyType = {\n  GROUP: \"Group\",\n  REPLY: \"R\",\n};\n\nconst AnnotationFlag = {\n  INVISIBLE: 0x01,\n  HIDDEN: 0x02,\n  PRINT: 0x04,\n  NOZOOM: 0x08,\n  NOROTATE: 0x10,\n  NOVIEW: 0x20,\n  READONLY: 0x40,\n  LOCKED: 0x80,\n  TOGGLENOVIEW: 0x100,\n  LOCKEDCONTENTS: 0x200,\n};\n\nconst AnnotationFieldFlag = {\n  READONLY: 0x0000001,\n  REQUIRED: 0x0000002,\n  NOEXPORT: 0x0000004,\n  MULTILINE: 0x0001000,\n  PASSWORD: 0x0002000,\n  NOTOGGLETOOFF: 0x0004000,\n  RADIO: 0x0008000,\n  PUSHBUTTON: 0x0010000,\n  COMBO: 0x0020000,\n  EDIT: 0x0040000,\n  SORT: 0x0080000,\n  FILESELECT: 0x0100000,\n  MULTISELECT: 0x0200000,\n  DONOTSPELLCHECK: 0x0400000,\n  DONOTSCROLL: 0x0800000,\n  COMB: 0x1000000,\n  RICHTEXT: 0x2000000,\n  RADIOSINUNISON: 0x2000000,\n  COMMITONSELCHANGE: 0x4000000,\n};\n\nconst AnnotationBorderStyleType = {\n  SOLID: 1,\n  DASHED: 2,\n  BEVELED: 3,\n  INSET: 4,\n  UNDERLINE: 5,\n};\n\nconst StreamType = {\n  UNKNOWN: \"UNKNOWN\",\n  FLATE: \"FLATE\",\n  LZW: \"LZW\",\n  DCT: \"DCT\",\n  JPX: \"JPX\",\n  JBIG: \"JBIG\",\n  A85: \"A85\",\n  AHX: \"AHX\",\n  CCF: \"CCF\",\n  RLX: \"RLX\", // PDF short name is 'RL', but telemetry requires three chars.\n};\n\nconst FontType = {\n  UNKNOWN: \"UNKNOWN\",\n  TYPE1: \"TYPE1\",\n  TYPE1C: \"TYPE1C\",\n  CIDFONTTYPE0: \"CIDFONTTYPE0\",\n  CIDFONTTYPE0C: \"CIDFONTTYPE0C\",\n  TRUETYPE: \"TRUETYPE\",\n  CIDFONTTYPE2: \"CIDFONTTYPE2\",\n  TYPE3: \"TYPE3\",\n  OPENTYPE: \"OPENTYPE\",\n  TYPE0: \"TYPE0\",\n  MMTYPE1: \"MMTYPE1\",\n};\n\nconst VerbosityLevel = {\n  ERRORS: 0,\n  WARNINGS: 1,\n  INFOS: 5,\n};\n\nconst CMapCompressionType = {\n  NONE: 0,\n  BINARY: 1,\n  STREAM: 2,\n};\n\n// All the possible operations for an operator list.\nconst OPS = {\n  // Intentionally start from 1 so it is easy to spot bad operators that will be\n  // 0's.\n  dependency: 1,\n  setLineWidth: 2,\n  setLineCap: 3,\n  setLineJoin: 4,\n  setMiterLimit: 5,\n  setDash: 6,\n  setRenderingIntent: 7,\n  setFlatness: 8,\n  setGState: 9,\n  save: 10,\n  restore: 11,\n  transform: 12,\n  moveTo: 13,\n  lineTo: 14,\n  curveTo: 15,\n  curveTo2: 16,\n  curveTo3: 17,\n  closePath: 18,\n  rectangle: 19,\n  stroke: 20,\n  closeStroke: 21,\n  fill: 22,\n  eoFill: 23,\n  fillStroke: 24,\n  eoFillStroke: 25,\n  closeFillStroke: 26,\n  closeEOFillStroke: 27,\n  endPath: 28,\n  clip: 29,\n  eoClip: 30,\n  beginText: 31,\n  endText: 32,\n  setCharSpacing: 33,\n  setWordSpacing: 34,\n  setHScale: 35,\n  setLeading: 36,\n  setFont: 37,\n  setTextRenderingMode: 38,\n  setTextRise: 39,\n  moveText: 40,\n  setLeadingMoveText: 41,\n  setTextMatrix: 42,\n  nextLine: 43,\n  showText: 44,\n  showSpacedText: 45,\n  nextLineShowText: 46,\n  nextLineSetSpacingShowText: 47,\n  setCharWidth: 48,\n  setCharWidthAndBounds: 49,\n  setStrokeColorSpace: 50,\n  setFillColorSpace: 51,\n  setStrokeColor: 52,\n  setStrokeColorN: 53,\n  setFillColor: 54,\n  setFillColorN: 55,\n  setStrokeGray: 56,\n  setFillGray: 57,\n  setStrokeRGBColor: 58,\n  setFillRGBColor: 59,\n  setStrokeCMYKColor: 60,\n  setFillCMYKColor: 61,\n  shadingFill: 62,\n  beginInlineImage: 63,\n  beginImageData: 64,\n  endInlineImage: 65,\n  paintXObject: 66,\n  markPoint: 67,\n  markPointProps: 68,\n  beginMarkedContent: 69,\n  beginMarkedContentProps: 70,\n  endMarkedContent: 71,\n  beginCompat: 72,\n  endCompat: 73,\n  paintFormXObjectBegin: 74,\n  paintFormXObjectEnd: 75,\n  beginGroup: 76,\n  endGroup: 77,\n  beginAnnotations: 78,\n  endAnnotations: 79,\n  beginAnnotation: 80,\n  endAnnotation: 81,\n  paintJpegXObject: 82,\n  paintImageMaskXObject: 83,\n  paintImageMaskXObjectGroup: 84,\n  paintImageXObject: 85,\n  paintInlineImageXObject: 86,\n  paintInlineImageXObjectGroup: 87,\n  paintImageXObjectRepeat: 88,\n  paintImageMaskXObjectRepeat: 89,\n  paintSolidColorImageMask: 90,\n  constructPath: 91,\n};\n\nconst UNSUPPORTED_FEATURES = {\n  /** @deprecated unused */\n  unknown: \"unknown\",\n  forms: \"forms\",\n  javaScript: \"javaScript\",\n  smask: \"smask\",\n  shadingPattern: \"shadingPattern\",\n  /** @deprecated unused */\n  font: \"font\",\n  errorTilingPattern: \"errorTilingPattern\",\n  errorExtGState: \"errorExtGState\",\n  errorXObject: \"errorXObject\",\n  errorFontLoadType3: \"errorFontLoadType3\",\n  errorFontState: \"errorFontState\",\n  errorFontMissing: \"errorFontMissing\",\n  errorFontTranslate: \"errorFontTranslate\",\n  errorColorSpace: \"errorColorSpace\",\n  errorOperatorList: \"errorOperatorList\",\n  errorFontToUnicode: \"errorFontToUnicode\",\n  errorFontLoadNative: \"errorFontLoadNative\",\n  errorFontGetPath: \"errorFontGetPath\",\n};\n\nconst PasswordResponses = {\n  NEED_PASSWORD: 1,\n  INCORRECT_PASSWORD: 2,\n};\n\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n  if (Number.isInteger(level)) {\n    verbosity = level;\n  }\n}\n\nfunction getVerbosityLevel() {\n  return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n  if (verbosity >= VerbosityLevel.INFOS) {\n    console.log(`Info: ${msg}`);\n  }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n  if (verbosity >= VerbosityLevel.WARNINGS) {\n    console.log(`Warning: ${msg}`);\n  }\n}\n\nfunction unreachable(msg) {\n  throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n  if (!cond) {\n    unreachable(msg);\n  }\n}\n\n// Checks if URLs have the same origin. For non-HTTP based URLs, returns false.\nfunction isSameOrigin(baseUrl, otherUrl) {\n  let base;\n  try {\n    base = new URL(baseUrl);\n    if (!base.origin || base.origin === \"null\") {\n      return false; // non-HTTP url\n    }\n  } catch (e) {\n    return false;\n  }\n\n  const other = new URL(otherUrl, base);\n  return base.origin === other.origin;\n}\n\n// Checks if URLs use one of the whitelisted protocols, e.g. to avoid XSS.\nfunction _isValidProtocol(url) {\n  if (!url) {\n    return false;\n  }\n  switch (url.protocol) {\n    case \"http:\":\n    case \"https:\":\n    case \"ftp:\":\n    case \"mailto:\":\n    case \"tel:\":\n      return true;\n    default:\n      return false;\n  }\n}\n\n/**\n * Attempts to create a valid absolute URL.\n *\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} baseUrl - An absolute URL.\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl) {\n  if (!url) {\n    return null;\n  }\n  try {\n    const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n    if (_isValidProtocol(absoluteUrl)) {\n      return absoluteUrl;\n    }\n  } catch (ex) {\n    /* `new URL()` will throw on incorrect data. */\n  }\n  return null;\n}\n\nfunction shadow(obj, prop, value) {\n  Object.defineProperty(obj, prop, {\n    value,\n    enumerable: true,\n    configurable: true,\n    writable: false,\n  });\n  return value;\n}\n\nconst BaseException = (function BaseExceptionClosure() {\n  // eslint-disable-next-line no-shadow\n  function BaseException(message) {\n    if (this.constructor === BaseException) {\n      unreachable(\"Cannot initialize BaseException.\");\n    }\n    this.message = message;\n    this.name = this.constructor.name;\n  }\n  BaseException.prototype = new Error();\n  BaseException.constructor = BaseException;\n\n  return BaseException;\n})();\n\nclass PasswordException extends BaseException {\n  constructor(msg, code) {\n    super(msg);\n    this.code = code;\n  }\n}\n\nclass UnknownErrorException extends BaseException {\n  constructor(msg, details) {\n    super(msg);\n    this.details = details;\n  }\n}\n\nclass InvalidPDFException extends BaseException {}\n\nclass MissingPDFException extends BaseException {}\n\nclass UnexpectedResponseException extends BaseException {\n  constructor(msg, status) {\n    super(msg);\n    this.status = status;\n  }\n}\n\n/**\n * Error caused during parsing PDF data.\n */\nclass FormatError extends BaseException {}\n\n/**\n * Error used to indicate task cancellation.\n */\nclass AbortException extends BaseException {}\n\nconst NullCharactersRegExp = /\\x00/g;\n\nfunction removeNullCharacters(str) {\n  if (typeof str !== \"string\") {\n    warn(\"The argument for removeNullCharacters must be a string.\");\n    return str;\n  }\n  return str.replace(NullCharactersRegExp, \"\");\n}\n\nfunction bytesToString(bytes) {\n  assert(\n    bytes !== null && typeof bytes === \"object\" && bytes.length !== undefined,\n    \"Invalid argument for bytesToString\"\n  );\n  const length = bytes.length;\n  const MAX_ARGUMENT_COUNT = 8192;\n  if (length < MAX_ARGUMENT_COUNT) {\n    return String.fromCharCode.apply(null, bytes);\n  }\n  const strBuf = [];\n  for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n    const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n    const chunk = bytes.subarray(i, chunkEnd);\n    strBuf.push(String.fromCharCode.apply(null, chunk));\n  }\n  return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n  assert(typeof str === \"string\", \"Invalid argument for stringToBytes\");\n  const length = str.length;\n  const bytes = new Uint8Array(length);\n  for (let i = 0; i < length; ++i) {\n    bytes[i] = str.charCodeAt(i) & 0xff;\n  }\n  return bytes;\n}\n\n/**\n * Gets length of the array (Array, Uint8Array, or string) in bytes.\n * @param {Array|Uint8Array|string} arr\n * @returns {number}\n */\nfunction arrayByteLength(arr) {\n  if (arr.length !== undefined) {\n    return arr.length;\n  }\n  assert(arr.byteLength !== undefined, \"arrayByteLength - invalid argument.\");\n  return arr.byteLength;\n}\n\n/**\n * Combines array items (arrays) into single Uint8Array object.\n * @param {Array} arr - the array of the arrays (Array, Uint8Array, or string).\n * @returns {Uint8Array}\n */\nfunction arraysToBytes(arr) {\n  const length = arr.length;\n  // Shortcut: if first and only item is Uint8Array, return it.\n  if (length === 1 && arr[0] instanceof Uint8Array) {\n    return arr[0];\n  }\n  let resultLength = 0;\n  for (let i = 0; i < length; i++) {\n    resultLength += arrayByteLength(arr[i]);\n  }\n  let pos = 0;\n  const data = new Uint8Array(resultLength);\n  for (let i = 0; i < length; i++) {\n    let item = arr[i];\n    if (!(item instanceof Uint8Array)) {\n      if (typeof item === \"string\") {\n        item = stringToBytes(item);\n      } else {\n        item = new Uint8Array(item);\n      }\n    }\n    const itemLength = item.byteLength;\n    data.set(item, pos);\n    pos += itemLength;\n  }\n  return data;\n}\n\nfunction string32(value) {\n  return String.fromCharCode(\n    (value >> 24) & 0xff,\n    (value >> 16) & 0xff,\n    (value >> 8) & 0xff,\n    value & 0xff\n  );\n}\n\n// Checks the endianness of the platform.\nfunction isLittleEndian() {\n  const buffer8 = new Uint8Array(4);\n  buffer8[0] = 1;\n  const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n  return view32[0] === 1;\n}\nconst IsLittleEndianCached = {\n  get value() {\n    return shadow(this, \"value\", isLittleEndian());\n  },\n};\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n  try {\n    new Function(\"\"); // eslint-disable-line no-new, no-new-func\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\nconst IsEvalSupportedCached = {\n  get value() {\n    return shadow(this, \"value\", isEvalSupported());\n  },\n};\n\nconst rgbBuf = [\"rgb(\", 0, \",\", 0, \",\", 0, \")\"];\n\nclass Util {\n  // makeCssRgb() can be called thousands of times. Using ´rgbBuf` avoids\n  // creating many intermediate strings.\n  static makeCssRgb(r, g, b) {\n    rgbBuf[1] = r;\n    rgbBuf[3] = g;\n    rgbBuf[5] = b;\n    return rgbBuf.join(\"\");\n  }\n\n  // Concatenates two transformation matrices together and returns the result.\n  static transform(m1, m2) {\n    return [\n      m1[0] * m2[0] + m1[2] * m2[1],\n      m1[1] * m2[0] + m1[3] * m2[1],\n      m1[0] * m2[2] + m1[2] * m2[3],\n      m1[1] * m2[2] + m1[3] * m2[3],\n      m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n      m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n    ];\n  }\n\n  // For 2d affine transforms\n  static applyTransform(p, m) {\n    const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n    const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n    return [xt, yt];\n  }\n\n  static applyInverseTransform(p, m) {\n    const d = m[0] * m[3] - m[1] * m[2];\n    const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n    const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n    return [xt, yt];\n  }\n\n  // Applies the transform to the rectangle and finds the minimum axially\n  // aligned bounding box.\n  static getAxialAlignedBoundingBox(r, m) {\n    const p1 = Util.applyTransform(r, m);\n    const p2 = Util.applyTransform(r.slice(2, 4), m);\n    const p3 = Util.applyTransform([r[0], r[3]], m);\n    const p4 = Util.applyTransform([r[2], r[1]], m);\n    return [\n      Math.min(p1[0], p2[0], p3[0], p4[0]),\n      Math.min(p1[1], p2[1], p3[1], p4[1]),\n      Math.max(p1[0], p2[0], p3[0], p4[0]),\n      Math.max(p1[1], p2[1], p3[1], p4[1]),\n    ];\n  }\n\n  static inverseTransform(m) {\n    const d = m[0] * m[3] - m[1] * m[2];\n    return [\n      m[3] / d,\n      -m[1] / d,\n      -m[2] / d,\n      m[0] / d,\n      (m[2] * m[5] - m[4] * m[3]) / d,\n      (m[4] * m[1] - m[5] * m[0]) / d,\n    ];\n  }\n\n  // Apply a generic 3d matrix M on a 3-vector v:\n  //   | a b c |   | X |\n  //   | d e f | x | Y |\n  //   | g h i |   | Z |\n  // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i],\n  // with v as [X,Y,Z]\n  static apply3dTransform(m, v) {\n    return [\n      m[0] * v[0] + m[1] * v[1] + m[2] * v[2],\n      m[3] * v[0] + m[4] * v[1] + m[5] * v[2],\n      m[6] * v[0] + m[7] * v[1] + m[8] * v[2],\n    ];\n  }\n\n  // This calculation uses Singular Value Decomposition.\n  // The SVD can be represented with formula A = USV. We are interested in the\n  // matrix S here because it represents the scale values.\n  static singularValueDecompose2dScale(m) {\n    const transpose = [m[0], m[2], m[1], m[3]];\n\n    // Multiply matrix m with its transpose.\n    const a = m[0] * transpose[0] + m[1] * transpose[2];\n    const b = m[0] * transpose[1] + m[1] * transpose[3];\n    const c = m[2] * transpose[0] + m[3] * transpose[2];\n    const d = m[2] * transpose[1] + m[3] * transpose[3];\n\n    // Solve the second degree polynomial to get roots.\n    const first = (a + d) / 2;\n    const second = Math.sqrt((a + d) * (a + d) - 4 * (a * d - c * b)) / 2;\n    const sx = first + second || 1;\n    const sy = first - second || 1;\n\n    // Scale values are the square roots of the eigenvalues.\n    return [Math.sqrt(sx), Math.sqrt(sy)];\n  }\n\n  // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n  // For coordinate systems whose origin lies in the bottom-left, this\n  // means normalization to (BL,TR) ordering. For systems with origin in the\n  // top-left, this means (TL,BR) ordering.\n  static normalizeRect(rect) {\n    const r = rect.slice(0); // clone rect\n    if (rect[0] > rect[2]) {\n      r[0] = rect[2];\n      r[2] = rect[0];\n    }\n    if (rect[1] > rect[3]) {\n      r[1] = rect[3];\n      r[3] = rect[1];\n    }\n    return r;\n  }\n\n  // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n  // intersection of rect1 and rect2. If no intersection, returns 'false'\n  // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n  static intersect(rect1, rect2) {\n    function compare(a, b) {\n      return a - b;\n    }\n\n    // Order points along the axes\n    const orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare);\n    const orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare);\n    const result = [];\n\n    rect1 = Util.normalizeRect(rect1);\n    rect2 = Util.normalizeRect(rect2);\n\n    // X: first and second points belong to different rectangles?\n    if (\n      (orderedX[0] === rect1[0] && orderedX[1] === rect2[0]) ||\n      (orderedX[0] === rect2[0] && orderedX[1] === rect1[0])\n    ) {\n      // Intersection must be between second and third points\n      result[0] = orderedX[1];\n      result[2] = orderedX[2];\n    } else {\n      return null;\n    }\n\n    // Y: first and second points belong to different rectangles?\n    if (\n      (orderedY[0] === rect1[1] && orderedY[1] === rect2[1]) ||\n      (orderedY[0] === rect2[1] && orderedY[1] === rect1[1])\n    ) {\n      // Intersection must be between second and third points\n      result[1] = orderedY[1];\n      result[3] = orderedY[2];\n    } else {\n      return null;\n    }\n\n    return result;\n  }\n}\n\n// prettier-ignore\nconst PDFStringTranslateTable = [\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0x2D8, 0x2C7, 0x2C6, 0x2D9, 0x2DD, 0x2DB, 0x2DA, 0x2DC, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014,\n  0x2013, 0x192, 0x2044, 0x2039, 0x203A, 0x2212, 0x2030, 0x201E, 0x201C,\n  0x201D, 0x2018, 0x2019, 0x201A, 0x2122, 0xFB01, 0xFB02, 0x141, 0x152, 0x160,\n  0x178, 0x17D, 0x131, 0x142, 0x153, 0x161, 0x17E, 0, 0x20AC\n];\n\nfunction stringToPDFString(str) {\n  const length = str.length,\n    strBuf = [];\n  if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n    // UTF16BE BOM\n    for (let i = 2; i < length; i += 2) {\n      strBuf.push(\n        String.fromCharCode((str.charCodeAt(i) << 8) | str.charCodeAt(i + 1))\n      );\n    }\n  } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n    // UTF16LE BOM\n    for (let i = 2; i < length; i += 2) {\n      strBuf.push(\n        String.fromCharCode((str.charCodeAt(i + 1) << 8) | str.charCodeAt(i))\n      );\n    }\n  } else {\n    for (let i = 0; i < length; ++i) {\n      const code = PDFStringTranslateTable[str.charCodeAt(i)];\n      strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n    }\n  }\n  return strBuf.join(\"\");\n}\n\nfunction stringToUTF8String(str) {\n  return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n  return unescape(encodeURIComponent(str));\n}\n\nfunction isEmptyObj(obj) {\n  for (const key in obj) {\n    return false;\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  return arr1.every(function (element, index) {\n    return element === arr2[index];\n  });\n}\n\n/**\n * Promise Capability object.\n *\n * @typedef {Object} PromiseCapability\n * @property {Promise} promise - A Promise object.\n * @property {boolean} settled - If the Promise has been fulfilled/rejected.\n * @property {function} resolve - Fulfills the Promise.\n * @property {function} reject - Rejects the Promise.\n */\n\n/**\n * Creates a promise capability object.\n * @alias createPromiseCapability\n *\n * @returns {PromiseCapability}\n */\nfunction createPromiseCapability() {\n  const capability = Object.create(null);\n  let isSettled = false;\n\n  Object.defineProperty(capability, \"settled\", {\n    get() {\n      return isSettled;\n    },\n  });\n  capability.promise = new Promise(function (resolve, reject) {\n    capability.resolve = function (data) {\n      isSettled = true;\n      resolve(data);\n    };\n    capability.reject = function (reason) {\n      isSettled = true;\n      reject(reason);\n    };\n  });\n  return capability;\n}\n\nconst createObjectURL = (function createObjectURLClosure() {\n  // Blob/createObjectURL is not available, falling back to data schema.\n  const digits =\n    \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n  // eslint-disable-next-line no-shadow\n  return function createObjectURL(data, contentType, forceDataSchema = false) {\n    if (!forceDataSchema && URL.createObjectURL) {\n      const blob = new Blob([data], { type: contentType });\n      return URL.createObjectURL(blob);\n    }\n\n    let buffer = `data:${contentType};base64,`;\n    for (let i = 0, ii = data.length; i < ii; i += 3) {\n      const b1 = data[i] & 0xff;\n      const b2 = data[i + 1] & 0xff;\n      const b3 = data[i + 2] & 0xff;\n      const d1 = b1 >> 2,\n        d2 = ((b1 & 3) << 4) | (b2 >> 4);\n      const d3 = i + 1 < ii ? ((b2 & 0xf) << 2) | (b3 >> 6) : 64;\n      const d4 = i + 2 < ii ? b3 & 0x3f : 64;\n      buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];\n    }\n    return buffer;\n  };\n})();\n\nexport {\n  BaseException,\n  FONT_IDENTITY_MATRIX,\n  IDENTITY_MATRIX,\n  OPS,\n  VerbosityLevel,\n  UNSUPPORTED_FEATURES,\n  AnnotationBorderStyleType,\n  AnnotationFieldFlag,\n  AnnotationFlag,\n  AnnotationMarkedState,\n  AnnotationReplyType,\n  AnnotationReviewState,\n  AnnotationStateModelType,\n  AnnotationType,\n  FontType,\n  ImageKind,\n  CMapCompressionType,\n  AbortException,\n  InvalidPDFException,\n  MissingPDFException,\n  PasswordException,\n  PasswordResponses,\n  PermissionFlag,\n  StreamType,\n  TextRenderingMode,\n  UnexpectedResponseException,\n  UnknownErrorException,\n  Util,\n  FormatError,\n  arrayByteLength,\n  arraysToBytes,\n  assert,\n  bytesToString,\n  createPromiseCapability,\n  createObjectURL,\n  getVerbosityLevel,\n  info,\n  isArrayBuffer,\n  isArrayEqual,\n  isBool,\n  isEmptyObj,\n  isNum,\n  isString,\n  isSameOrigin,\n  createValidAbsoluteUrl,\n  IsLittleEndianCached,\n  IsEvalSupportedCached,\n  removeNullCharacters,\n  setVerbosityLevel,\n  shadow,\n  string32,\n  stringToBytes,\n  stringToPDFString,\n  stringToUTF8String,\n  utf8StringToString,\n  warn,\n  unreachable,\n};\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\nimport { isNodeJS } from \"./is_node.js\";\n\n// Skip compatibility checks for modern builds and if we already ran the module.\nif (\n  (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"SKIP_BABEL\")) &&\n  (typeof globalThis === \"undefined\" || !globalThis._pdfjsCompatibilityChecked)\n) {\n  // Provides support for globalThis in legacy browsers.\n  // Support: IE11/Edge, Opera\n  if (typeof globalThis === \"undefined\" || globalThis.Math !== Math) {\n    // eslint-disable-next-line no-global-assign\n    globalThis = require(\"core-js/es/global-this\");\n  }\n  globalThis._pdfjsCompatibilityChecked = true;\n\n  const hasDOM = typeof window === \"object\" && typeof document === \"object\";\n  const userAgent =\n    (typeof navigator !== \"undefined\" && navigator.userAgent) || \"\";\n  const isIE = /Trident/.test(userAgent);\n\n  // Support: Node.js\n  (function checkNodeBtoa() {\n    if (globalThis.btoa || !isNodeJS) {\n      return;\n    }\n    globalThis.btoa = function (chars) {\n      // eslint-disable-next-line no-undef\n      return Buffer.from(chars, \"binary\").toString(\"base64\");\n    };\n  })();\n\n  // Support: Node.js\n  (function checkNodeAtob() {\n    if (globalThis.atob || !isNodeJS) {\n      return;\n    }\n    globalThis.atob = function (input) {\n      // eslint-disable-next-line no-undef\n      return Buffer.from(input, \"base64\").toString(\"binary\");\n    };\n  })();\n\n  // Provides support for ChildNode.remove in legacy browsers.\n  // Support: IE.\n  (function checkChildNodeRemove() {\n    if (!hasDOM) {\n      return;\n    }\n    if (typeof Element.prototype.remove !== \"undefined\") {\n      return;\n    }\n    Element.prototype.remove = function () {\n      if (this.parentNode) {\n        // eslint-disable-next-line mozilla/avoid-removeChild\n        this.parentNode.removeChild(this);\n      }\n    };\n  })();\n\n  // Provides support for DOMTokenList.prototype.{add, remove}, with more than\n  // one parameter, in legacy browsers.\n  // Support: IE\n  (function checkDOMTokenListAddRemove() {\n    if (!hasDOM || isNodeJS) {\n      return;\n    }\n    const div = document.createElement(\"div\");\n    div.classList.add(\"testOne\", \"testTwo\");\n\n    if (\n      div.classList.contains(\"testOne\") === true &&\n      div.classList.contains(\"testTwo\") === true\n    ) {\n      return;\n    }\n    const OriginalDOMTokenListAdd = DOMTokenList.prototype.add;\n    const OriginalDOMTokenListRemove = DOMTokenList.prototype.remove;\n\n    DOMTokenList.prototype.add = function (...tokens) {\n      for (const token of tokens) {\n        OriginalDOMTokenListAdd.call(this, token);\n      }\n    };\n    DOMTokenList.prototype.remove = function (...tokens) {\n      for (const token of tokens) {\n        OriginalDOMTokenListRemove.call(this, token);\n      }\n    };\n  })();\n\n  // Provides support for DOMTokenList.prototype.toggle, with the optional\n  // \"force\" parameter, in legacy browsers.\n  // Support: IE\n  (function checkDOMTokenListToggle() {\n    if (!hasDOM || isNodeJS) {\n      return;\n    }\n    const div = document.createElement(\"div\");\n    if (div.classList.toggle(\"test\", 0) === false) {\n      return;\n    }\n\n    DOMTokenList.prototype.toggle = function (token) {\n      const force =\n        arguments.length > 1 ? !!arguments[1] : !this.contains(token);\n      return this[force ? \"add\" : \"remove\"](token), force;\n    };\n  })();\n\n  // Provides support for window.history.{pushState, replaceState}, with the\n  // `url` parameter set to `undefined`, without breaking the document URL.\n  // Support: IE\n  (function checkWindowHistoryPushStateReplaceState() {\n    if (!hasDOM || !isIE) {\n      return;\n    }\n    const OriginalPushState = window.history.pushState;\n    const OriginalReplaceState = window.history.replaceState;\n\n    window.history.pushState = function (state, title, url) {\n      const args = url === undefined ? [state, title] : [state, title, url];\n      OriginalPushState.apply(this, args);\n    };\n    window.history.replaceState = function (state, title, url) {\n      const args = url === undefined ? [state, title] : [state, title, url];\n      OriginalReplaceState.apply(this, args);\n    };\n  })();\n\n  // Provides support for String.prototype.startsWith in legacy browsers.\n  // Support: IE, Chrome<41\n  (function checkStringStartsWith() {\n    if (String.prototype.startsWith) {\n      return;\n    }\n    require(\"core-js/es/string/starts-with.js\");\n  })();\n\n  // Provides support for String.prototype.endsWith in legacy browsers.\n  // Support: IE, Chrome<41\n  (function checkStringEndsWith() {\n    if (String.prototype.endsWith) {\n      return;\n    }\n    require(\"core-js/es/string/ends-with.js\");\n  })();\n\n  // Provides support for String.prototype.includes in legacy browsers.\n  // Support: IE, Chrome<41\n  (function checkStringIncludes() {\n    if (String.prototype.includes) {\n      return;\n    }\n    require(\"core-js/es/string/includes.js\");\n  })();\n\n  // Provides support for Array.prototype.includes in legacy browsers.\n  // Support: IE, Chrome<47\n  (function checkArrayIncludes() {\n    if (Array.prototype.includes) {\n      return;\n    }\n    require(\"core-js/es/array/includes.js\");\n  })();\n\n  // Provides support for Array.from in legacy browsers.\n  // Support: IE\n  (function checkArrayFrom() {\n    if (Array.from) {\n      return;\n    }\n    require(\"core-js/es/array/from.js\");\n  })();\n\n  // Provides support for Object.assign in legacy browsers.\n  // Support: IE\n  (function checkObjectAssign() {\n    if (Object.assign) {\n      return;\n    }\n    require(\"core-js/es/object/assign.js\");\n  })();\n\n  // Provides support for Math.log2 in legacy browsers.\n  // Support: IE, Chrome<38\n  (function checkMathLog2() {\n    if (Math.log2) {\n      return;\n    }\n    Math.log2 = require(\"core-js/es/math/log2.js\");\n  })();\n\n  // Provides support for Number.isNaN in legacy browsers.\n  // Support: IE.\n  (function checkNumberIsNaN() {\n    if (Number.isNaN) {\n      return;\n    }\n    Number.isNaN = require(\"core-js/es/number/is-nan.js\");\n  })();\n\n  // Provides support for Number.isInteger in legacy browsers.\n  // Support: IE, Chrome<34\n  (function checkNumberIsInteger() {\n    if (Number.isInteger) {\n      return;\n    }\n    Number.isInteger = require(\"core-js/es/number/is-integer.js\");\n  })();\n\n  // Provides support for TypedArray.prototype.slice in legacy browsers.\n  // Support: IE\n  (function checkTypedArraySlice() {\n    if (Uint8Array.prototype.slice) {\n      return;\n    }\n    require(\"core-js/es/typed-array/slice\");\n  })();\n\n  // Support: IE, Safari<11, Chrome<63\n  (function checkPromise() {\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n      // The current image decoders are synchronous, hence `Promise` shouldn't\n      // need to be polyfilled for the IMAGE_DECODERS build target.\n      return;\n    }\n    if (globalThis.Promise && globalThis.Promise.allSettled) {\n      return;\n    }\n    globalThis.Promise = require(\"core-js/es/promise/index.js\");\n  })();\n\n  // Support: IE\n  (function checkURL() {\n    if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")) {\n      // Prevent \"require is not a function\" errors in development mode,\n      // since the `URL` constructor should be available in modern browers.\n      return;\n    } else if (!PDFJSDev.test(\"GENERIC\")) {\n      // The `URL` constructor is assumed to be available in the extension\n      // builds.\n      return;\n    } else if (PDFJSDev.test(\"IMAGE_DECODERS\")) {\n      // The current image decoders don't use the `URL` constructor, so it\n      // doesn't need to be polyfilled for the IMAGE_DECODERS build target.\n      return;\n    }\n    globalThis.URL = require(\"core-js/web/url.js\");\n  })();\n\n  // Support: IE, Node.js\n  (function checkReadableStream() {\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n      // The current image decoders are synchronous, hence `ReadableStream`\n      // shouldn't need to be polyfilled for the IMAGE_DECODERS build target.\n      return;\n    }\n    let isReadableStreamSupported = false;\n\n    if (typeof ReadableStream !== \"undefined\") {\n      // MS Edge may say it has ReadableStream but they are not up to spec yet.\n      try {\n        // eslint-disable-next-line no-new\n        new ReadableStream({\n          start(controller) {\n            controller.close();\n          },\n        });\n        isReadableStreamSupported = true;\n      } catch (e) {\n        // The ReadableStream constructor cannot be used.\n      }\n    }\n    if (isReadableStreamSupported) {\n      return;\n    }\n    globalThis.ReadableStream = require(\"web-streams-polyfill/dist/ponyfill.js\").ReadableStream;\n  })();\n\n  // We want to support Map iteration, but it doesn't seem possible to easily\n  // test for that specifically; hence using a similarly unsupported property.\n  // Support: IE11\n  (function checkMapEntries() {\n    if (globalThis.Map && globalThis.Map.prototype.entries) {\n      return;\n    }\n    globalThis.Map = require(\"core-js/es/map/index.js\");\n  })();\n\n  // We want to support Set iteration, but it doesn't seem possible to easily\n  // test for that specifically; hence using a similarly unsupported property.\n  // Support: IE11\n  (function checkSetEntries() {\n    if (globalThis.Set && globalThis.Set.prototype.entries) {\n      return;\n    }\n    globalThis.Set = require(\"core-js/es/set/index.js\");\n  })();\n\n  // Support: IE<11, Safari<8, Chrome<36\n  (function checkWeakMap() {\n    if (globalThis.WeakMap) {\n      return;\n    }\n    globalThis.WeakMap = require(\"core-js/es/weak-map/index.js\");\n  })();\n\n  // Support: IE11\n  (function checkWeakSet() {\n    if (globalThis.WeakSet) {\n      return;\n    }\n    globalThis.WeakSet = require(\"core-js/es/weak-set/index.js\");\n  })();\n\n  // Provides support for String.codePointAt in legacy browsers.\n  // Support: IE11.\n  (function checkStringCodePointAt() {\n    if (String.prototype.codePointAt) {\n      return;\n    }\n    require(\"core-js/es/string/code-point-at.js\");\n  })();\n\n  // Provides support for String.fromCodePoint in legacy browsers.\n  // Support: IE11.\n  (function checkStringFromCodePoint() {\n    if (String.fromCodePoint) {\n      return;\n    }\n    String.fromCodePoint = require(\"core-js/es/string/from-code-point.js\");\n  })();\n\n  // Support: IE\n  (function checkSymbol() {\n    if (globalThis.Symbol) {\n      return;\n    }\n    require(\"core-js/es/symbol/index.js\");\n  })();\n\n  // Provides support for String.prototype.padStart in legacy browsers.\n  // Support: IE, Chrome<57\n  (function checkStringPadStart() {\n    if (String.prototype.padStart) {\n      return;\n    }\n    require(\"core-js/es/string/pad-start.js\");\n  })();\n\n  // Provides support for String.prototype.padEnd in legacy browsers.\n  // Support: IE, Chrome<57\n  (function checkStringPadEnd() {\n    if (String.prototype.padEnd) {\n      return;\n    }\n    require(\"core-js/es/string/pad-end.js\");\n  })();\n\n  // Provides support for Object.values in legacy browsers.\n  // Support: IE, Chrome<54\n  (function checkObjectValues() {\n    if (Object.values) {\n      return;\n    }\n    Object.values = require(\"core-js/es/object/values.js\");\n  })();\n}\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals process */\n\n// NW.js / Electron is a browser context, but copies some Node.js objects; see\n// http://docs.nwjs.io/en/latest/For%20Users/Advanced/JavaScript%20Contexts%20in%20NW.js/#access-nodejs-and-nwjs-api-in-browser-context\n// https://electronjs.org/docs/api/process#processversionselectron\nconst isNodeJS =\n  typeof process === \"object\" &&\n  process + \"\" === \"[object process]\" &&\n  !process.versions.nw &&\n  !process.versions.electron;\n\nexport { isNodeJS };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* uses XRef */\n\nimport { assert, unreachable } from \"../shared/util.js\";\n\nvar EOF = {};\n\nvar Name = (function NameClosure() {\n  let nameCache = Object.create(null);\n\n  // eslint-disable-next-line no-shadow\n  function Name(name) {\n    this.name = name;\n  }\n\n  Name.prototype = {};\n\n  Name.get = function Name_get(name) {\n    var nameValue = nameCache[name];\n    // eslint-disable-next-line no-restricted-syntax\n    return nameValue ? nameValue : (nameCache[name] = new Name(name));\n  };\n\n  Name._clearCache = function () {\n    nameCache = Object.create(null);\n  };\n\n  return Name;\n})();\n\nvar Cmd = (function CmdClosure() {\n  let cmdCache = Object.create(null);\n\n  // eslint-disable-next-line no-shadow\n  function Cmd(cmd) {\n    this.cmd = cmd;\n  }\n\n  Cmd.prototype = {};\n\n  Cmd.get = function Cmd_get(cmd) {\n    var cmdValue = cmdCache[cmd];\n    // eslint-disable-next-line no-restricted-syntax\n    return cmdValue ? cmdValue : (cmdCache[cmd] = new Cmd(cmd));\n  };\n\n  Cmd._clearCache = function () {\n    cmdCache = Object.create(null);\n  };\n\n  return Cmd;\n})();\n\nvar Dict = (function DictClosure() {\n  var nonSerializable = function nonSerializableClosure() {\n    return nonSerializable; // creating closure on some variable\n  };\n\n  // xref is optional\n  // eslint-disable-next-line no-shadow\n  function Dict(xref) {\n    // Map should only be used internally, use functions below to access.\n    this._map = Object.create(null);\n    this.xref = xref;\n    this.objId = null;\n    this.suppressEncryption = false;\n    this.__nonSerializable__ = nonSerializable; // disable cloning of the Dict\n  }\n\n  Dict.prototype = {\n    assignXref: function Dict_assignXref(newXref) {\n      this.xref = newXref;\n    },\n\n    // automatically dereferences Ref objects\n    get(key1, key2, key3) {\n      let value = this._map[key1];\n      if (value === undefined && key2 !== undefined) {\n        value = this._map[key2];\n        if (value === undefined && key3 !== undefined) {\n          value = this._map[key3];\n        }\n      }\n      if (value instanceof Ref && this.xref) {\n        return this.xref.fetch(value, this.suppressEncryption);\n      }\n      return value;\n    },\n\n    // Same as get(), but returns a promise and uses fetchIfRefAsync().\n    async getAsync(key1, key2, key3) {\n      let value = this._map[key1];\n      if (value === undefined && key2 !== undefined) {\n        value = this._map[key2];\n        if (value === undefined && key3 !== undefined) {\n          value = this._map[key3];\n        }\n      }\n      if (value instanceof Ref && this.xref) {\n        return this.xref.fetchAsync(value, this.suppressEncryption);\n      }\n      return value;\n    },\n\n    // Same as get(), but dereferences all elements if the result is an Array.\n    getArray(key1, key2, key3) {\n      let value = this.get(key1, key2, key3);\n      if (!Array.isArray(value) || !this.xref) {\n        return value;\n      }\n      value = value.slice(); // Ensure that we don't modify the Dict data.\n      for (let i = 0, ii = value.length; i < ii; i++) {\n        if (!(value[i] instanceof Ref)) {\n          continue;\n        }\n        value[i] = this.xref.fetch(value[i], this.suppressEncryption);\n      }\n      return value;\n    },\n\n    // no dereferencing\n    getRaw: function Dict_getRaw(key) {\n      return this._map[key];\n    },\n\n    getKeys: function Dict_getKeys() {\n      return Object.keys(this._map);\n    },\n\n    set: function Dict_set(key, value) {\n      if (\n        (typeof PDFJSDev === \"undefined\" ||\n          PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n        value === undefined\n      ) {\n        unreachable('Dict.set: The \"value\" cannot be undefined.');\n      }\n      this._map[key] = value;\n    },\n\n    has: function Dict_has(key) {\n      return this._map[key] !== undefined;\n    },\n\n    forEach: function Dict_forEach(callback) {\n      for (var key in this._map) {\n        callback(key, this.get(key));\n      }\n    },\n  };\n\n  Dict.empty = new Dict(null);\n\n  Dict.merge = function (xref, dictArray) {\n    const mergedDict = new Dict(xref);\n\n    for (let i = 0, ii = dictArray.length; i < ii; i++) {\n      const dict = dictArray[i];\n      if (!isDict(dict)) {\n        continue;\n      }\n      for (const keyName in dict._map) {\n        if (mergedDict._map[keyName] !== undefined) {\n          continue;\n        }\n        mergedDict._map[keyName] = dict._map[keyName];\n      }\n    }\n    return mergedDict;\n  };\n\n  return Dict;\n})();\n\nvar Ref = (function RefClosure() {\n  let refCache = Object.create(null);\n\n  // eslint-disable-next-line no-shadow\n  function Ref(num, gen) {\n    this.num = num;\n    this.gen = gen;\n  }\n\n  Ref.prototype = {\n    toString: function Ref_toString() {\n      // This function is hot, so we make the string as compact as possible.\n      // |this.gen| is almost always zero, so we treat that case specially.\n      if (this.gen === 0) {\n        return `${this.num}R`;\n      }\n      return `${this.num}R${this.gen}`;\n    },\n  };\n\n  Ref.get = function (num, gen) {\n    const key = gen === 0 ? `${num}R` : `${num}R${gen}`;\n    const refValue = refCache[key];\n    // eslint-disable-next-line no-restricted-syntax\n    return refValue ? refValue : (refCache[key] = new Ref(num, gen));\n  };\n\n  Ref._clearCache = function () {\n    refCache = Object.create(null);\n  };\n\n  return Ref;\n})();\n\n// The reference is identified by number and generation.\n// This structure stores only one instance of the reference.\nvar RefSet = (function RefSetClosure() {\n  // eslint-disable-next-line no-shadow\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\n    put: function RefSet_put(ref) {\n      this.dict[ref.toString()] = true;\n    },\n\n    remove: function RefSet_remove(ref) {\n      delete this.dict[ref.toString()];\n    },\n  };\n\n  return RefSet;\n})();\n\nvar RefSetCache = (function RefSetCacheClosure() {\n  // eslint-disable-next-line no-shadow\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\n    has: function RefSetCache_has(ref) {\n      return ref.toString() in this.dict;\n    },\n\n    put: function RefSetCache_put(ref, obj) {\n      this.dict[ref.toString()] = obj;\n    },\n\n    putAlias: function RefSetCache_putAlias(ref, aliasRef) {\n      this.dict[ref.toString()] = this.get(aliasRef);\n    },\n\n    forEach: function RefSetCache_forEach(callback) {\n      for (const i in this.dict) {\n        callback(this.dict[i]);\n      }\n    },\n\n    clear: function RefSetCache_clear() {\n      this.dict = Object.create(null);\n    },\n  };\n\n  return RefSetCache;\n})();\n\nfunction isEOF(v) {\n  return v === EOF;\n}\n\nfunction isName(v, name) {\n  return v instanceof Name && (name === undefined || v.name === name);\n}\n\nfunction isCmd(v, cmd) {\n  return v instanceof Cmd && (cmd === undefined || v.cmd === cmd);\n}\n\nfunction isDict(v, type) {\n  return (\n    v instanceof Dict && (type === undefined || isName(v.get(\"Type\"), type))\n  );\n}\n\nfunction isRef(v) {\n  return v instanceof Ref;\n}\n\nfunction isRefsEqual(v1, v2) {\n  if (\n    typeof PDFJSDev === \"undefined\" ||\n    PDFJSDev.test(\"!PRODUCTION || TESTING\")\n  ) {\n    assert(\n      v1 instanceof Ref && v2 instanceof Ref,\n      \"isRefsEqual: Both parameters should be `Ref`s.\"\n    );\n  }\n  return v1.num === v2.num && v1.gen === v2.gen;\n}\n\nfunction isStream(v) {\n  return typeof v === \"object\" && v !== null && v.getBytes !== undefined;\n}\n\nfunction clearPrimitiveCaches() {\n  Cmd._clearCache();\n  Name._clearCache();\n  Ref._clearCache();\n}\n\nexport {\n  EOF,\n  clearPrimitiveCaches,\n  Cmd,\n  Dict,\n  Name,\n  Ref,\n  RefSet,\n  RefSetCache,\n  isEOF,\n  isCmd,\n  isDict,\n  isName,\n  isRef,\n  isRefsEqual,\n  isStream,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  createValidAbsoluteUrl,\n  shadow,\n  unreachable,\n  warn,\n} from \"../shared/util.js\";\nimport { ChunkedStreamManager } from \"./chunked_stream.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { PDFDocument } from \"./document.js\";\nimport { Stream } from \"./stream.js\";\n\nclass BasePdfManager {\n  constructor() {\n    if (this.constructor === BasePdfManager) {\n      unreachable(\"Cannot initialize BasePdfManager.\");\n    }\n  }\n\n  get docId() {\n    return this._docId;\n  }\n\n  get password() {\n    return this._password;\n  }\n\n  get docBaseUrl() {\n    let docBaseUrl = null;\n    if (this._docBaseUrl) {\n      const absoluteUrl = createValidAbsoluteUrl(this._docBaseUrl);\n      if (absoluteUrl) {\n        docBaseUrl = absoluteUrl.href;\n      } else {\n        warn(`Invalid absolute docBaseUrl: \"${this._docBaseUrl}\".`);\n      }\n    }\n    return shadow(this, \"docBaseUrl\", docBaseUrl);\n  }\n\n  onLoadedStream() {\n    unreachable(\"Abstract method `onLoadedStream` called\");\n  }\n\n  ensureDoc(prop, args) {\n    return this.ensure(this.pdfDocument, prop, args);\n  }\n\n  ensureXRef(prop, args) {\n    return this.ensure(this.pdfDocument.xref, prop, args);\n  }\n\n  ensureCatalog(prop, args) {\n    return this.ensure(this.pdfDocument.catalog, prop, args);\n  }\n\n  getPage(pageIndex) {\n    return this.pdfDocument.getPage(pageIndex);\n  }\n\n  fontFallback(id, handler) {\n    return this.pdfDocument.fontFallback(id, handler);\n  }\n\n  cleanup(manuallyTriggered = false) {\n    return this.pdfDocument.cleanup(manuallyTriggered);\n  }\n\n  async ensure(obj, prop, args) {\n    unreachable(\"Abstract method `ensure` called\");\n  }\n\n  requestRange(begin, end) {\n    unreachable(\"Abstract method `requestRange` called\");\n  }\n\n  requestLoadedStream() {\n    unreachable(\"Abstract method `requestLoadedStream` called\");\n  }\n\n  sendProgressiveData(chunk) {\n    unreachable(\"Abstract method `sendProgressiveData` called\");\n  }\n\n  updatePassword(password) {\n    this._password = password;\n  }\n\n  terminate(reason) {\n    unreachable(\"Abstract method `terminate` called\");\n  }\n}\n\nclass LocalPdfManager extends BasePdfManager {\n  constructor(docId, data, password, evaluatorOptions, docBaseUrl) {\n    super();\n\n    this._docId = docId;\n    this._password = password;\n    this._docBaseUrl = docBaseUrl;\n    this.evaluatorOptions = evaluatorOptions;\n\n    const stream = new Stream(data);\n    this.pdfDocument = new PDFDocument(this, stream);\n    this._loadedStreamPromise = Promise.resolve(stream);\n  }\n\n  async ensure(obj, prop, args) {\n    const value = obj[prop];\n    if (typeof value === \"function\") {\n      return value.apply(obj, args);\n    }\n    return value;\n  }\n\n  requestRange(begin, end) {\n    return Promise.resolve();\n  }\n\n  requestLoadedStream() {}\n\n  onLoadedStream() {\n    return this._loadedStreamPromise;\n  }\n\n  terminate(reason) {}\n}\n\nclass NetworkPdfManager extends BasePdfManager {\n  constructor(docId, pdfNetworkStream, args, evaluatorOptions, docBaseUrl) {\n    super();\n\n    this._docId = docId;\n    this._password = args.password;\n    this._docBaseUrl = docBaseUrl;\n    this.msgHandler = args.msgHandler;\n    this.evaluatorOptions = evaluatorOptions;\n\n    this.streamManager = new ChunkedStreamManager(pdfNetworkStream, {\n      msgHandler: args.msgHandler,\n      length: args.length,\n      disableAutoFetch: args.disableAutoFetch,\n      rangeChunkSize: args.rangeChunkSize,\n    });\n    this.pdfDocument = new PDFDocument(this, this.streamManager.getStream());\n  }\n\n  async ensure(obj, prop, args) {\n    try {\n      const value = obj[prop];\n      if (typeof value === \"function\") {\n        return value.apply(obj, args);\n      }\n      return value;\n    } catch (ex) {\n      if (!(ex instanceof MissingDataException)) {\n        throw ex;\n      }\n      await this.requestRange(ex.begin, ex.end);\n      return this.ensure(obj, prop, args);\n    }\n  }\n\n  requestRange(begin, end) {\n    return this.streamManager.requestRange(begin, end);\n  }\n\n  requestLoadedStream() {\n    this.streamManager.requestAllChunks();\n  }\n\n  sendProgressiveData(chunk) {\n    this.streamManager.onReceiveData({ chunk });\n  }\n\n  onLoadedStream() {\n    return this.streamManager.onLoadedStream();\n  }\n\n  terminate(reason) {\n    this.streamManager.abort(reason);\n  }\n}\n\nexport { LocalPdfManager, NetworkPdfManager };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\nimport {\n  arrayByteLength,\n  arraysToBytes,\n  createPromiseCapability,\n  isEmptyObj,\n} from \"../shared/util.js\";\nimport { MissingDataException } from \"./core_utils.js\";\n\nclass ChunkedStream {\n  constructor(length, chunkSize, manager) {\n    this.bytes = new Uint8Array(length);\n    this.start = 0;\n    this.pos = 0;\n    this.end = length;\n    this.chunkSize = chunkSize;\n    this.loadedChunks = [];\n    this.numChunksLoaded = 0;\n    this.numChunks = Math.ceil(length / chunkSize);\n    this.manager = manager;\n    this.progressiveDataLength = 0;\n    this.lastSuccessfulEnsureByteChunk = -1; // Single-entry cache\n  }\n\n  // If a particular stream does not implement one or more of these methods,\n  // an error should be thrown.\n  getMissingChunks() {\n    const chunks = [];\n    for (let chunk = 0, n = this.numChunks; chunk < n; ++chunk) {\n      if (!this.loadedChunks[chunk]) {\n        chunks.push(chunk);\n      }\n    }\n    return chunks;\n  }\n\n  getBaseStreams() {\n    return [this];\n  }\n\n  allChunksLoaded() {\n    return this.numChunksLoaded === this.numChunks;\n  }\n\n  onReceiveData(begin, chunk) {\n    const chunkSize = this.chunkSize;\n    if (begin % chunkSize !== 0) {\n      throw new Error(`Bad begin offset: ${begin}`);\n    }\n\n    // Using `this.length` is inaccurate here since `this.start` can be moved\n    // (see the `moveStart` method).\n    const end = begin + chunk.byteLength;\n    if (end % chunkSize !== 0 && end !== this.bytes.length) {\n      throw new Error(`Bad end offset: ${end}`);\n    }\n\n    this.bytes.set(new Uint8Array(chunk), begin);\n    const beginChunk = Math.floor(begin / chunkSize);\n    const endChunk = Math.floor((end - 1) / chunkSize) + 1;\n\n    for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n      if (!this.loadedChunks[curChunk]) {\n        this.loadedChunks[curChunk] = true;\n        ++this.numChunksLoaded;\n      }\n    }\n  }\n\n  onReceiveProgressiveData(data) {\n    let position = this.progressiveDataLength;\n    const beginChunk = Math.floor(position / this.chunkSize);\n\n    this.bytes.set(new Uint8Array(data), position);\n    position += data.byteLength;\n    this.progressiveDataLength = position;\n    const endChunk =\n      position >= this.end\n        ? this.numChunks\n        : Math.floor(position / this.chunkSize);\n\n    for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n      if (!this.loadedChunks[curChunk]) {\n        this.loadedChunks[curChunk] = true;\n        ++this.numChunksLoaded;\n      }\n    }\n  }\n\n  ensureByte(pos) {\n    if (pos < this.progressiveDataLength) {\n      return;\n    }\n\n    const chunk = Math.floor(pos / this.chunkSize);\n    if (chunk === this.lastSuccessfulEnsureByteChunk) {\n      return;\n    }\n\n    if (!this.loadedChunks[chunk]) {\n      throw new MissingDataException(pos, pos + 1);\n    }\n    this.lastSuccessfulEnsureByteChunk = chunk;\n  }\n\n  ensureRange(begin, end) {\n    if (begin >= end) {\n      return;\n    }\n    if (end <= this.progressiveDataLength) {\n      return;\n    }\n\n    const chunkSize = this.chunkSize;\n    const beginChunk = Math.floor(begin / chunkSize);\n    const endChunk = Math.floor((end - 1) / chunkSize) + 1;\n    for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n      if (!this.loadedChunks[chunk]) {\n        throw new MissingDataException(begin, end);\n      }\n    }\n  }\n\n  nextEmptyChunk(beginChunk) {\n    const numChunks = this.numChunks;\n    for (let i = 0; i < numChunks; ++i) {\n      const chunk = (beginChunk + i) % numChunks; // Wrap around to beginning.\n      if (!this.loadedChunks[chunk]) {\n        return chunk;\n      }\n    }\n    return null;\n  }\n\n  hasChunk(chunk) {\n    return !!this.loadedChunks[chunk];\n  }\n\n  get length() {\n    return this.end - this.start;\n  }\n\n  get isEmpty() {\n    return this.length === 0;\n  }\n\n  getByte() {\n    const pos = this.pos;\n    if (pos >= this.end) {\n      return -1;\n    }\n    if (pos >= this.progressiveDataLength) {\n      this.ensureByte(pos);\n    }\n    return this.bytes[this.pos++];\n  }\n\n  getUint16() {\n    const b0 = this.getByte();\n    const b1 = this.getByte();\n    if (b0 === -1 || b1 === -1) {\n      return -1;\n    }\n    return (b0 << 8) + b1;\n  }\n\n  getInt32() {\n    const b0 = this.getByte();\n    const b1 = this.getByte();\n    const b2 = this.getByte();\n    const b3 = this.getByte();\n    return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n  }\n\n  // Returns subarray of original buffer, should only be read.\n  getBytes(length, forceClamped = false) {\n    const bytes = this.bytes;\n    const pos = this.pos;\n    const strEnd = this.end;\n\n    if (!length) {\n      if (strEnd > this.progressiveDataLength) {\n        this.ensureRange(pos, strEnd);\n      }\n      const subarray = bytes.subarray(pos, strEnd);\n      // `this.bytes` is always a `Uint8Array` here.\n      return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n    }\n\n    let end = pos + length;\n    if (end > strEnd) {\n      end = strEnd;\n    }\n    if (end > this.progressiveDataLength) {\n      this.ensureRange(pos, end);\n    }\n\n    this.pos = end;\n    const subarray = bytes.subarray(pos, end);\n    // `this.bytes` is always a `Uint8Array` here.\n    return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n  }\n\n  peekByte() {\n    const peekedByte = this.getByte();\n    if (peekedByte !== -1) {\n      this.pos--;\n    }\n    return peekedByte;\n  }\n\n  peekBytes(length, forceClamped = false) {\n    const bytes = this.getBytes(length, forceClamped);\n    this.pos -= bytes.length;\n    return bytes;\n  }\n\n  getByteRange(begin, end) {\n    if (begin < 0) {\n      begin = 0;\n    }\n    if (end > this.end) {\n      end = this.end;\n    }\n    if (end > this.progressiveDataLength) {\n      this.ensureRange(begin, end);\n    }\n    return this.bytes.subarray(begin, end);\n  }\n\n  skip(n) {\n    if (!n) {\n      n = 1;\n    }\n    this.pos += n;\n  }\n\n  reset() {\n    this.pos = this.start;\n  }\n\n  moveStart() {\n    this.start = this.pos;\n  }\n\n  makeSubStream(start, length, dict) {\n    if (length) {\n      if (start + length > this.progressiveDataLength) {\n        this.ensureRange(start, start + length);\n      }\n    } else {\n      // When the `length` is undefined you do *not*, under any circumstances,\n      // want to fallback on calling `this.ensureRange(start, this.end)` since\n      // that would force the *entire* PDF file to be loaded, thus completely\n      // breaking the whole purpose of using streaming and/or range requests.\n      //\n      // However, not doing any checking here could very easily lead to wasted\n      // time/resources during e.g. parsing, since `MissingDataException`s will\n      // require data to be re-parsed, which we attempt to minimize by at least\n      // checking that the *beginning* of the data is available here.\n      if (start >= this.progressiveDataLength) {\n        this.ensureByte(start);\n      }\n    }\n\n    function ChunkedStreamSubstream() {}\n    ChunkedStreamSubstream.prototype = Object.create(this);\n    ChunkedStreamSubstream.prototype.getMissingChunks = function () {\n      const chunkSize = this.chunkSize;\n      const beginChunk = Math.floor(this.start / chunkSize);\n      const endChunk = Math.floor((this.end - 1) / chunkSize) + 1;\n      const missingChunks = [];\n      for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n        if (!this.loadedChunks[chunk]) {\n          missingChunks.push(chunk);\n        }\n      }\n      return missingChunks;\n    };\n    ChunkedStreamSubstream.prototype.allChunksLoaded = function () {\n      if (this.numChunksLoaded === this.numChunks) {\n        return true;\n      }\n      return this.getMissingChunks().length === 0;\n    };\n\n    const subStream = new ChunkedStreamSubstream();\n    subStream.pos = subStream.start = start;\n    subStream.end = start + length || this.end;\n    subStream.dict = dict;\n    return subStream;\n  }\n}\n\nclass ChunkedStreamManager {\n  constructor(pdfNetworkStream, args) {\n    this.length = args.length;\n    this.chunkSize = args.rangeChunkSize;\n    this.stream = new ChunkedStream(this.length, this.chunkSize, this);\n    this.pdfNetworkStream = pdfNetworkStream;\n    this.disableAutoFetch = args.disableAutoFetch;\n    this.msgHandler = args.msgHandler;\n\n    this.currRequestId = 0;\n\n    this.chunksNeededByRequest = Object.create(null);\n    this.requestsByChunk = Object.create(null);\n    this.promisesByRequest = Object.create(null);\n    this.progressiveDataLength = 0;\n    this.aborted = false;\n\n    this._loadedStreamCapability = createPromiseCapability();\n  }\n\n  onLoadedStream() {\n    return this._loadedStreamCapability.promise;\n  }\n\n  sendRequest(begin, end) {\n    const rangeReader = this.pdfNetworkStream.getRangeReader(begin, end);\n    if (!rangeReader.isStreamingSupported) {\n      rangeReader.onProgress = this.onProgress.bind(this);\n    }\n\n    let chunks = [],\n      loaded = 0;\n    const promise = new Promise((resolve, reject) => {\n      const readChunk = chunk => {\n        try {\n          if (!chunk.done) {\n            const data = chunk.value;\n            chunks.push(data);\n            loaded += arrayByteLength(data);\n            if (rangeReader.isStreamingSupported) {\n              this.onProgress({ loaded });\n            }\n            rangeReader.read().then(readChunk, reject);\n            return;\n          }\n          const chunkData = arraysToBytes(chunks);\n          chunks = null;\n          resolve(chunkData);\n        } catch (e) {\n          reject(e);\n        }\n      };\n      rangeReader.read().then(readChunk, reject);\n    });\n    promise.then(data => {\n      if (this.aborted) {\n        return; // Ignoring any data after abort.\n      }\n      this.onReceiveData({ chunk: data, begin });\n    });\n    // TODO check errors\n  }\n\n  /**\n   * Get all the chunks that are not yet loaded and group them into\n   * contiguous ranges to load in as few requests as possible.\n   */\n  requestAllChunks() {\n    const missingChunks = this.stream.getMissingChunks();\n    this._requestChunks(missingChunks);\n    return this._loadedStreamCapability.promise;\n  }\n\n  _requestChunks(chunks) {\n    const requestId = this.currRequestId++;\n\n    const chunksNeeded = Object.create(null);\n    this.chunksNeededByRequest[requestId] = chunksNeeded;\n    for (const chunk of chunks) {\n      if (!this.stream.hasChunk(chunk)) {\n        chunksNeeded[chunk] = true;\n      }\n    }\n\n    if (isEmptyObj(chunksNeeded)) {\n      return Promise.resolve();\n    }\n\n    const capability = createPromiseCapability();\n    this.promisesByRequest[requestId] = capability;\n\n    const chunksToRequest = [];\n    for (let chunk in chunksNeeded) {\n      chunk = chunk | 0;\n      if (!(chunk in this.requestsByChunk)) {\n        this.requestsByChunk[chunk] = [];\n        chunksToRequest.push(chunk);\n      }\n      this.requestsByChunk[chunk].push(requestId);\n    }\n\n    if (!chunksToRequest.length) {\n      return capability.promise;\n    }\n\n    const groupedChunksToRequest = this.groupChunks(chunksToRequest);\n    for (const groupedChunk of groupedChunksToRequest) {\n      const begin = groupedChunk.beginChunk * this.chunkSize;\n      const end = Math.min(groupedChunk.endChunk * this.chunkSize, this.length);\n      this.sendRequest(begin, end);\n    }\n\n    return capability.promise;\n  }\n\n  getStream() {\n    return this.stream;\n  }\n\n  /**\n   * Loads any chunks in the requested range that are not yet loaded.\n   */\n  requestRange(begin, end) {\n    end = Math.min(end, this.length);\n\n    const beginChunk = this.getBeginChunk(begin);\n    const endChunk = this.getEndChunk(end);\n\n    const chunks = [];\n    for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n      chunks.push(chunk);\n    }\n    return this._requestChunks(chunks);\n  }\n\n  requestRanges(ranges = []) {\n    const chunksToRequest = [];\n    for (const range of ranges) {\n      const beginChunk = this.getBeginChunk(range.begin);\n      const endChunk = this.getEndChunk(range.end);\n      for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n        if (!chunksToRequest.includes(chunk)) {\n          chunksToRequest.push(chunk);\n        }\n      }\n    }\n\n    chunksToRequest.sort(function (a, b) {\n      return a - b;\n    });\n    return this._requestChunks(chunksToRequest);\n  }\n\n  /**\n   * Groups a sorted array of chunks into as few contiguous larger\n   * chunks as possible.\n   */\n  groupChunks(chunks) {\n    const groupedChunks = [];\n    let beginChunk = -1;\n    let prevChunk = -1;\n\n    for (let i = 0, ii = chunks.length; i < ii; ++i) {\n      const chunk = chunks[i];\n      if (beginChunk < 0) {\n        beginChunk = chunk;\n      }\n\n      if (prevChunk >= 0 && prevChunk + 1 !== chunk) {\n        groupedChunks.push({ beginChunk, endChunk: prevChunk + 1 });\n        beginChunk = chunk;\n      }\n      if (i + 1 === chunks.length) {\n        groupedChunks.push({ beginChunk, endChunk: chunk + 1 });\n      }\n\n      prevChunk = chunk;\n    }\n    return groupedChunks;\n  }\n\n  onProgress(args) {\n    this.msgHandler.send(\"DocProgress\", {\n      loaded: this.stream.numChunksLoaded * this.chunkSize + args.loaded,\n      total: this.length,\n    });\n  }\n\n  onReceiveData(args) {\n    const chunk = args.chunk;\n    const isProgressive = args.begin === undefined;\n    const begin = isProgressive ? this.progressiveDataLength : args.begin;\n    const end = begin + chunk.byteLength;\n\n    const beginChunk = Math.floor(begin / this.chunkSize);\n    const endChunk =\n      end < this.length\n        ? Math.floor(end / this.chunkSize)\n        : Math.ceil(end / this.chunkSize);\n\n    if (isProgressive) {\n      this.stream.onReceiveProgressiveData(chunk);\n      this.progressiveDataLength = end;\n    } else {\n      this.stream.onReceiveData(begin, chunk);\n    }\n\n    if (this.stream.allChunksLoaded()) {\n      this._loadedStreamCapability.resolve(this.stream);\n    }\n\n    const loadedRequests = [];\n    for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n      // The server might return more chunks than requested.\n      const requestIds = this.requestsByChunk[curChunk] || [];\n      delete this.requestsByChunk[curChunk];\n\n      for (const requestId of requestIds) {\n        const chunksNeeded = this.chunksNeededByRequest[requestId];\n        if (curChunk in chunksNeeded) {\n          delete chunksNeeded[curChunk];\n        }\n\n        if (!isEmptyObj(chunksNeeded)) {\n          continue;\n        }\n        loadedRequests.push(requestId);\n      }\n    }\n\n    // If there are no pending requests, automatically fetch the next\n    // unfetched chunk of the PDF file.\n    if (!this.disableAutoFetch && isEmptyObj(this.requestsByChunk)) {\n      let nextEmptyChunk;\n      if (this.stream.numChunksLoaded === 1) {\n        // This is a special optimization so that after fetching the first\n        // chunk, rather than fetching the second chunk, we fetch the last\n        // chunk.\n        const lastChunk = this.stream.numChunks - 1;\n        if (!this.stream.hasChunk(lastChunk)) {\n          nextEmptyChunk = lastChunk;\n        }\n      } else {\n        nextEmptyChunk = this.stream.nextEmptyChunk(endChunk);\n      }\n      if (Number.isInteger(nextEmptyChunk)) {\n        this._requestChunks([nextEmptyChunk]);\n      }\n    }\n\n    for (const requestId of loadedRequests) {\n      const capability = this.promisesByRequest[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  onError(err) {\n    this._loadedStreamCapability.reject(err);\n  }\n\n  getBeginChunk(begin) {\n    return Math.floor(begin / this.chunkSize);\n  }\n\n  getEndChunk(end) {\n    return Math.floor((end - 1) / this.chunkSize) + 1;\n  }\n\n  abort(reason) {\n    this.aborted = true;\n    if (this.pdfNetworkStream) {\n      this.pdfNetworkStream.cancelAllRequests(reason);\n    }\n    for (const requestId in this.promisesByRequest) {\n      this.promisesByRequest[requestId].reject(reason);\n    }\n  }\n}\n\nexport { ChunkedStream, ChunkedStreamManager };\n","/* Copyright 2019 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\nimport { assert, BaseException, warn } from \"../shared/util.js\";\n\nfunction getLookupTableFactory(initializer) {\n  let lookup;\n  return function () {\n    if (initializer) {\n      lookup = Object.create(null);\n      initializer(lookup);\n      initializer = null;\n    }\n    return lookup;\n  };\n}\n\nclass MissingDataException extends BaseException {\n  constructor(begin, end) {\n    super(`Missing data [${begin}, ${end})`);\n    this.begin = begin;\n    this.end = end;\n  }\n}\n\nclass XRefEntryException extends BaseException {}\n\nclass XRefParseException extends BaseException {}\n\n/**\n * Get the value of an inheritable property.\n *\n * If the PDF specification explicitly lists a property in a dictionary as\n * inheritable, then the value of the property may be present in the dictionary\n * itself or in one or more parents of the dictionary.\n *\n * If the key is not found in the tree, `undefined` is returned. Otherwise,\n * the value for the key is returned or, if `stopWhenFound` is `false`, a list\n * of values is returned. To avoid infinite loops, the traversal is stopped when\n * the loop limit is reached.\n *\n * @param {Dict} dict - Dictionary from where to start the traversal.\n * @param {string} key - The key of the property to find the value for.\n * @param {boolean} getArray - Whether or not the value should be fetched as an\n *   array. The default value is `false`.\n * @param {boolean} stopWhenFound - Whether or not to stop the traversal when\n *   the key is found. If set to `false`, we always walk up the entire parent\n *   chain, for example to be able to find `\\Resources` placed on multiple\n *   levels of the tree. The default value is `true`.\n */\nfunction getInheritableProperty({\n  dict,\n  key,\n  getArray = false,\n  stopWhenFound = true,\n}) {\n  const LOOP_LIMIT = 100;\n  let loopCount = 0;\n  let values;\n\n  while (dict) {\n    const value = getArray ? dict.getArray(key) : dict.get(key);\n    if (value !== undefined) {\n      if (stopWhenFound) {\n        return value;\n      }\n      if (!values) {\n        values = [];\n      }\n      values.push(value);\n    }\n    if (++loopCount > LOOP_LIMIT) {\n      warn(`getInheritableProperty: maximum loop count exceeded for \"${key}\"`);\n      break;\n    }\n    dict = dict.get(\"Parent\");\n  }\n  return values;\n}\n\n// prettier-ignore\nconst ROMAN_NUMBER_MAP = [\n  \"\", \"C\", \"CC\", \"CCC\", \"CD\", \"D\", \"DC\", \"DCC\", \"DCCC\", \"CM\",\n  \"\", \"X\", \"XX\", \"XXX\", \"XL\", \"L\", \"LX\", \"LXX\", \"LXXX\", \"XC\",\n  \"\", \"I\", \"II\", \"III\", \"IV\", \"V\", \"VI\", \"VII\", \"VIII\", \"IX\"\n];\n\n/**\n * Converts positive integers to (upper case) Roman numerals.\n * @param {number} number - The number that should be converted.\n * @param {boolean} lowerCase - Indicates if the result should be converted\n *   to lower case letters. The default value is `false`.\n * @returns {string} The resulting Roman number.\n */\nfunction toRomanNumerals(number, lowerCase = false) {\n  assert(\n    Number.isInteger(number) && number > 0,\n    \"The number should be a positive integer.\"\n  );\n  const romanBuf = [];\n  let pos;\n  // Thousands\n  while (number >= 1000) {\n    number -= 1000;\n    romanBuf.push(\"M\");\n  }\n  // Hundreds\n  pos = (number / 100) | 0;\n  number %= 100;\n  romanBuf.push(ROMAN_NUMBER_MAP[pos]);\n  // Tens\n  pos = (number / 10) | 0;\n  number %= 10;\n  romanBuf.push(ROMAN_NUMBER_MAP[10 + pos]);\n  // Ones\n  romanBuf.push(ROMAN_NUMBER_MAP[20 + number]);\n\n  const romanStr = romanBuf.join(\"\");\n  return lowerCase ? romanStr.toLowerCase() : romanStr;\n}\n\n// Calculate the base 2 logarithm of the number `x`. This differs from the\n// native function in the sense that it returns the ceiling value and that it\n// returns 0 instead of `Infinity`/`NaN` for `x` values smaller than/equal to 0.\nfunction log2(x) {\n  if (x <= 0) {\n    return 0;\n  }\n  return Math.ceil(Math.log2(x));\n}\n\nfunction readInt8(data, offset) {\n  return (data[offset] << 24) >> 24;\n}\n\nfunction readUint16(data, offset) {\n  return (data[offset] << 8) | data[offset + 1];\n}\n\nfunction readUint32(data, offset) {\n  return (\n    ((data[offset] << 24) |\n      (data[offset + 1] << 16) |\n      (data[offset + 2] << 8) |\n      data[offset + 3]) >>>\n    0\n  );\n}\n\n// Checks if ch is one of the following characters: SPACE, TAB, CR or LF.\nfunction isWhiteSpace(ch) {\n  return ch === 0x20 || ch === 0x09 || ch === 0x0d || ch === 0x0a;\n}\n\nexport {\n  getLookupTableFactory,\n  MissingDataException,\n  XRefEntryException,\n  XRefParseException,\n  getInheritableProperty,\n  toRomanNumerals,\n  log2,\n  readInt8,\n  readUint16,\n  readUint32,\n  isWhiteSpace,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\nimport {\n  assert,\n  FormatError,\n  info,\n  InvalidPDFException,\n  isArrayBuffer,\n  isArrayEqual,\n  isBool,\n  isNum,\n  isString,\n  OPS,\n  shadow,\n  stringToBytes,\n  stringToPDFString,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport { Catalog, ObjectLoader, XRef } from \"./obj.js\";\nimport {\n  clearPrimitiveCaches,\n  Dict,\n  isDict,\n  isName,\n  isStream,\n  Ref,\n} from \"./primitives.js\";\nimport {\n  getInheritableProperty,\n  isWhiteSpace,\n  MissingDataException,\n  XRefEntryException,\n  XRefParseException,\n} from \"./core_utils.js\";\nimport { NullStream, Stream, StreamsSequenceStream } from \"./stream.js\";\nimport { AnnotationFactory } from \"./annotation.js\";\nimport { calculateMD5 } from \"./crypto.js\";\nimport { Linearization } from \"./parser.js\";\nimport { OperatorList } from \"./operator_list.js\";\nimport { PartialEvaluator } from \"./evaluator.js\";\nimport { PDFFunctionFactory } from \"./function.js\";\n\nconst DEFAULT_USER_UNIT = 1.0;\nconst LETTER_SIZE_MEDIABOX = [0, 0, 612, 792];\n\nfunction isAnnotationRenderable(annotation, intent) {\n  return (\n    (intent === \"display\" && annotation.viewable) ||\n    (intent === \"print\" && annotation.printable)\n  );\n}\n\nclass Page {\n  constructor({\n    pdfManager,\n    xref,\n    pageIndex,\n    pageDict,\n    ref,\n    fontCache,\n    builtInCMapCache,\n    globalImageCache,\n    pdfFunctionFactory,\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\n    const idCounters = {\n      obj: 0,\n    };\n    this.idFactory = {\n      createObjId() {\n        return `p${pageIndex}_${++idCounters.obj}`;\n      },\n      getDocId() {\n        return `g_${pdfManager.docId}`;\n      },\n    };\n  }\n\n  /**\n   * @private\n   */\n  _getInheritableProperty(key, getArray = false) {\n    const value = getInheritableProperty({\n      dict: this.pageDict,\n      key,\n      getArray,\n      stopWhenFound: false,\n    });\n    if (!Array.isArray(value)) {\n      return value;\n    }\n    if (value.length === 1 || !isDict(value[0])) {\n      return value[0];\n    }\n    return Dict.merge(this.xref, value);\n  }\n\n  get content() {\n    return this.pageDict.get(\"Contents\");\n  }\n\n  get resources() {\n    // For robustness: The spec states that a \\Resources entry has to be\n    // present, but can be empty. Some documents still omit it; in this case\n    // we return an empty dictionary.\n    return shadow(\n      this,\n      \"resources\",\n      this._getInheritableProperty(\"Resources\") || Dict.empty\n    );\n  }\n\n  _getBoundingBox(name) {\n    const box = this._getInheritableProperty(name, /* getArray = */ true);\n\n    if (Array.isArray(box) && box.length === 4) {\n      if (box[2] - box[0] !== 0 && box[3] - box[1] !== 0) {\n        return box;\n      }\n      warn(`Empty /${name} entry.`);\n    }\n    return null;\n  }\n\n  get mediaBox() {\n    // Reset invalid media box to letter size.\n    return shadow(\n      this,\n      \"mediaBox\",\n      this._getBoundingBox(\"MediaBox\") || LETTER_SIZE_MEDIABOX\n    );\n  }\n\n  get cropBox() {\n    // Reset invalid crop box to media box.\n    return shadow(\n      this,\n      \"cropBox\",\n      this._getBoundingBox(\"CropBox\") || this.mediaBox\n    );\n  }\n\n  get userUnit() {\n    let obj = this.pageDict.get(\"UserUnit\");\n    if (!isNum(obj) || obj <= 0) {\n      obj = DEFAULT_USER_UNIT;\n    }\n    return shadow(this, \"userUnit\", obj);\n  }\n\n  get view() {\n    // From the spec, 6th ed., p.963:\n    // \"The crop, bleed, trim, and art boxes should not ordinarily\n    // extend beyond the boundaries of the media box. If they do, they are\n    // effectively reduced to their intersection with the media box.\"\n    const { cropBox, mediaBox } = this;\n    let view;\n    if (cropBox === mediaBox || isArrayEqual(cropBox, mediaBox)) {\n      view = mediaBox;\n    } else {\n      const box = Util.intersect(cropBox, mediaBox);\n      if (box && box[2] - box[0] !== 0 && box[3] - box[1] !== 0) {\n        view = box;\n      } else {\n        warn(\"Empty /CropBox and /MediaBox intersection.\");\n      }\n    }\n    return shadow(this, \"view\", view || mediaBox);\n  }\n\n  get rotate() {\n    let rotate = this._getInheritableProperty(\"Rotate\") || 0;\n\n    // Normalize rotation so it's a multiple of 90 and between 0 and 270.\n    if (rotate % 90 !== 0) {\n      rotate = 0;\n    } else if (rotate >= 360) {\n      rotate = rotate % 360;\n    } else if (rotate < 0) {\n      // The spec doesn't cover negatives. Assume it's counterclockwise\n      // rotation. The following is the other implementation of modulo.\n      rotate = ((rotate % 360) + 360) % 360;\n    }\n    return shadow(this, \"rotate\", rotate);\n  }\n\n  getContentStream() {\n    const content = this.content;\n    let stream;\n\n    if (Array.isArray(content)) {\n      // Fetching the individual streams from the array.\n      const xref = this.xref;\n      const streams = [];\n      for (const subStream of content) {\n        streams.push(xref.fetchIfRef(subStream));\n      }\n      stream = new StreamsSequenceStream(streams);\n    } else if (isStream(content)) {\n      stream = content;\n    } else {\n      // Replace non-existent page content with empty content.\n      stream = new NullStream();\n    }\n    return stream;\n  }\n\n  loadResources(keys) {\n    if (!this.resourcesPromise) {\n      // TODO: add async `_getInheritableProperty` and remove this.\n      this.resourcesPromise = this.pdfManager.ensure(this, \"resources\");\n    }\n    return this.resourcesPromise.then(() => {\n      const objectLoader = new ObjectLoader(this.resources, keys, this.xref);\n      return objectLoader.load();\n    });\n  }\n\n  getOperatorList({ handler, sink, task, intent, renderInteractiveForms }) {\n    const contentStreamPromise = this.pdfManager.ensure(\n      this,\n      \"getContentStream\"\n    );\n    const resourcesPromise = this.loadResources([\n      \"ExtGState\",\n      \"ColorSpace\",\n      \"Pattern\",\n      \"Shading\",\n      \"XObject\",\n      \"Font\",\n    ]);\n\n    const partialEvaluator = new PartialEvaluator({\n      xref: this.xref,\n      handler,\n      pageIndex: this.pageIndex,\n      idFactory: this.idFactory,\n      fontCache: this.fontCache,\n      builtInCMapCache: this.builtInCMapCache,\n      globalImageCache: this.globalImageCache,\n      options: this.evaluatorOptions,\n      pdfFunctionFactory: this.pdfFunctionFactory,\n    });\n\n    const dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);\n    const pageListPromise = dataPromises.then(([contentStream]) => {\n      const opList = new OperatorList(intent, sink, this.pageIndex);\n\n      handler.send(\"StartRenderPage\", {\n        transparency: partialEvaluator.hasBlendModes(this.resources),\n        pageIndex: this.pageIndex,\n        intent,\n      });\n\n      return partialEvaluator\n        .getOperatorList({\n          stream: contentStream,\n          task,\n          resources: this.resources,\n          operatorList: opList,\n        })\n        .then(function () {\n          return opList;\n        });\n    });\n\n    // Fetch the page's annotations and add their operator lists to the\n    // page's operator list to render them.\n    return Promise.all([pageListPromise, this._parsedAnnotations]).then(\n      function ([pageOpList, annotations]) {\n        if (annotations.length === 0) {\n          pageOpList.flush(true);\n          return { length: pageOpList.totalLength };\n        }\n\n        // Collect the operator list promises for the annotations. Each promise\n        // is resolved with the complete operator list for a single annotation.\n        const opListPromises = [];\n        for (const annotation of annotations) {\n          if (isAnnotationRenderable(annotation, intent)) {\n            opListPromises.push(\n              annotation\n                .getOperatorList(partialEvaluator, task, renderInteractiveForms)\n                .catch(function (reason) {\n                  warn(\n                    \"getOperatorList - ignoring annotation data during \" +\n                      `\"${task.name}\" task: \"${reason}\".`\n                  );\n                  return null;\n                })\n            );\n          }\n        }\n\n        return Promise.all(opListPromises).then(function (opLists) {\n          pageOpList.addOp(OPS.beginAnnotations, []);\n          for (const opList of opLists) {\n            pageOpList.addOpList(opList);\n          }\n          pageOpList.addOp(OPS.endAnnotations, []);\n          pageOpList.flush(true);\n          return { length: pageOpList.totalLength };\n        });\n      }\n    );\n  }\n\n  extractTextContent({\n    handler,\n    task,\n    normalizeWhitespace,\n    sink,\n    combineTextItems,\n  }) {\n    const contentStreamPromise = this.pdfManager.ensure(\n      this,\n      \"getContentStream\"\n    );\n    const resourcesPromise = this.loadResources([\n      \"ExtGState\",\n      \"XObject\",\n      \"Font\",\n    ]);\n\n    const dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);\n    return dataPromises.then(([contentStream]) => {\n      const partialEvaluator = new PartialEvaluator({\n        xref: this.xref,\n        handler,\n        pageIndex: this.pageIndex,\n        idFactory: this.idFactory,\n        fontCache: this.fontCache,\n        builtInCMapCache: this.builtInCMapCache,\n        globalImageCache: this.globalImageCache,\n        options: this.evaluatorOptions,\n        pdfFunctionFactory: this.pdfFunctionFactory,\n      });\n\n      return partialEvaluator.getTextContent({\n        stream: contentStream,\n        task,\n        resources: this.resources,\n        normalizeWhitespace,\n        combineTextItems,\n        sink,\n      });\n    });\n  }\n\n  getAnnotationsData(intent) {\n    return this._parsedAnnotations.then(function (annotations) {\n      const annotationsData = [];\n      for (let i = 0, ii = annotations.length; i < ii; i++) {\n        if (!intent || isAnnotationRenderable(annotations[i], intent)) {\n          annotationsData.push(annotations[i].data);\n        }\n      }\n      return annotationsData;\n    });\n  }\n\n  get annotations() {\n    return shadow(\n      this,\n      \"annotations\",\n      this._getInheritableProperty(\"Annots\") || []\n    );\n  }\n\n  get _parsedAnnotations() {\n    const parsedAnnotations = this.pdfManager\n      .ensure(this, \"annotations\")\n      .then(() => {\n        const annotationPromises = [];\n        for (const annotationRef of this.annotations) {\n          annotationPromises.push(\n            AnnotationFactory.create(\n              this.xref,\n              annotationRef,\n              this.pdfManager,\n              this.idFactory\n            ).catch(function (reason) {\n              warn(`_parsedAnnotations: \"${reason}\".`);\n              return null;\n            })\n          );\n        }\n\n        return Promise.all(annotationPromises).then(function (annotations) {\n          return annotations.filter(annotation => !!annotation);\n        });\n      });\n\n    return shadow(this, \"_parsedAnnotations\", parsedAnnotations);\n  }\n}\n\nconst PDF_HEADER_SIGNATURE = new Uint8Array([0x25, 0x50, 0x44, 0x46, 0x2d]);\n// prettier-ignore\nconst STARTXREF_SIGNATURE = new Uint8Array([\n  0x73, 0x74, 0x61, 0x72, 0x74, 0x78, 0x72, 0x65, 0x66]);\nconst ENDOBJ_SIGNATURE = new Uint8Array([0x65, 0x6e, 0x64, 0x6f, 0x62, 0x6a]);\n\nconst FINGERPRINT_FIRST_BYTES = 1024;\nconst EMPTY_FINGERPRINT =\n  \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\n\nconst PDF_HEADER_VERSION_REGEXP = /^[1-9]\\.[0-9]$/;\n\nfunction find(stream, signature, limit = 1024, backwards = false) {\n  if (\n    typeof PDFJSDev === \"undefined\" ||\n    PDFJSDev.test(\"!PRODUCTION || TESTING\")\n  ) {\n    assert(limit > 0, 'The \"limit\" must be a positive integer.');\n  }\n  const signatureLength = signature.length;\n\n  const scanBytes = stream.peekBytes(limit);\n  const scanLength = scanBytes.length - signatureLength;\n\n  if (scanLength <= 0) {\n    return false;\n  }\n  if (backwards) {\n    const signatureEnd = signatureLength - 1;\n\n    let pos = scanBytes.length - 1;\n    while (pos >= signatureEnd) {\n      let j = 0;\n      while (\n        j < signatureLength &&\n        scanBytes[pos - j] === signature[signatureEnd - j]\n      ) {\n        j++;\n      }\n      if (j >= signatureLength) {\n        // `signature` found.\n        stream.pos += pos - signatureEnd;\n        return true;\n      }\n      pos--;\n    }\n  } else {\n    // forwards\n    let pos = 0;\n    while (pos <= scanLength) {\n      let j = 0;\n      while (j < signatureLength && scanBytes[pos + j] === signature[j]) {\n        j++;\n      }\n      if (j >= signatureLength) {\n        // `signature` found.\n        stream.pos += pos;\n        return true;\n      }\n      pos++;\n    }\n  }\n  return false;\n}\n\n/**\n * The `PDFDocument` class holds all the (worker-thread) data of the PDF file.\n */\nclass PDFDocument {\n  constructor(pdfManager, arg) {\n    let stream;\n    if (isStream(arg)) {\n      stream = arg;\n    } else if (isArrayBuffer(arg)) {\n      stream = new Stream(arg);\n    } else {\n      throw new Error(\"PDFDocument: Unknown argument type\");\n    }\n    if (stream.length <= 0) {\n      throw new InvalidPDFException(\n        \"The PDF file is empty, i.e. its size is zero bytes.\"\n      );\n    }\n\n    this.pdfManager = pdfManager;\n    this.stream = stream;\n    this.xref = new XRef(stream, pdfManager);\n\n    this.pdfFunctionFactory = new PDFFunctionFactory({\n      xref: this.xref,\n      isEvalSupported: pdfManager.evaluatorOptions.isEvalSupported,\n    });\n    this._pagePromises = [];\n  }\n\n  parse(recoveryMode) {\n    this.setup(recoveryMode);\n\n    const version = this.catalog.catDict.get(\"Version\");\n    if (isName(version)) {\n      this.pdfFormatVersion = version.name;\n    }\n\n    // Check if AcroForms are present in the document.\n    try {\n      this.acroForm = this.catalog.catDict.get(\"AcroForm\");\n      if (this.acroForm) {\n        this.xfa = this.acroForm.get(\"XFA\");\n        const fields = this.acroForm.get(\"Fields\");\n        if ((!Array.isArray(fields) || fields.length === 0) && !this.xfa) {\n          this.acroForm = null; // No fields and no XFA, so it's not a form.\n        }\n      }\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      info(\"Cannot fetch AcroForm entry; assuming no AcroForms are present\");\n      this.acroForm = null;\n    }\n\n    // Check if a Collection dictionary is present in the document.\n    try {\n      const collection = this.catalog.catDict.get(\"Collection\");\n      if (isDict(collection) && collection.getKeys().length > 0) {\n        this.collection = collection;\n      }\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      info(\"Cannot fetch Collection dictionary.\");\n    }\n  }\n\n  get linearization() {\n    let linearization = null;\n    try {\n      linearization = Linearization.create(this.stream);\n    } catch (err) {\n      if (err instanceof MissingDataException) {\n        throw err;\n      }\n      info(err);\n    }\n    return shadow(this, \"linearization\", linearization);\n  }\n\n  get startXRef() {\n    const stream = this.stream;\n    let startXRef = 0;\n\n    if (this.linearization) {\n      // Find the end of the first object.\n      stream.reset();\n      if (find(stream, ENDOBJ_SIGNATURE)) {\n        startXRef = stream.pos + 6 - stream.start;\n      }\n    } else {\n      // Find `startxref` by checking backwards from the end of the file.\n      const step = 1024;\n      const startXRefLength = STARTXREF_SIGNATURE.length;\n      let found = false,\n        pos = stream.end;\n\n      while (!found && pos > 0) {\n        pos -= step - startXRefLength;\n        if (pos < 0) {\n          pos = 0;\n        }\n        stream.pos = pos;\n        found = find(stream, STARTXREF_SIGNATURE, step, true);\n      }\n\n      if (found) {\n        stream.skip(9);\n        let ch;\n        do {\n          ch = stream.getByte();\n        } while (isWhiteSpace(ch));\n        let str = \"\";\n        while (ch >= /* Space = */ 0x20 && ch <= /* '9' = */ 0x39) {\n          str += String.fromCharCode(ch);\n          ch = stream.getByte();\n        }\n        startXRef = parseInt(str, 10);\n        if (isNaN(startXRef)) {\n          startXRef = 0;\n        }\n      }\n    }\n    return shadow(this, \"startXRef\", startXRef);\n  }\n\n  // Find the header, get the PDF format version and setup the\n  // stream to start from the header.\n  checkHeader() {\n    const stream = this.stream;\n    stream.reset();\n\n    if (!find(stream, PDF_HEADER_SIGNATURE)) {\n      // May not be a PDF file, but don't throw an error and let\n      // parsing continue.\n      return;\n    }\n    stream.moveStart();\n\n    // Read the PDF format version.\n    const MAX_PDF_VERSION_LENGTH = 12;\n    let version = \"\",\n      ch;\n    while ((ch = stream.getByte()) > /* Space = */ 0x20) {\n      if (version.length >= MAX_PDF_VERSION_LENGTH) {\n        break;\n      }\n      version += String.fromCharCode(ch);\n    }\n    if (!this.pdfFormatVersion) {\n      // Remove the \"%PDF-\" prefix.\n      this.pdfFormatVersion = version.substring(5);\n    }\n  }\n\n  parseStartXRef() {\n    this.xref.setStartXRef(this.startXRef);\n  }\n\n  setup(recoveryMode) {\n    this.xref.parse(recoveryMode);\n    this.catalog = new Catalog(this.pdfManager, this.xref);\n  }\n\n  get numPages() {\n    const linearization = this.linearization;\n    const num = linearization ? linearization.numPages : this.catalog.numPages;\n    return shadow(this, \"numPages\", num);\n  }\n\n  get documentInfo() {\n    const DocumentInfoValidators = {\n      Title: isString,\n      Author: isString,\n      Subject: isString,\n      Keywords: isString,\n      Creator: isString,\n      Producer: isString,\n      CreationDate: isString,\n      ModDate: isString,\n      Trapped: isName,\n    };\n\n    let version = this.pdfFormatVersion;\n    if (\n      typeof version !== \"string\" ||\n      !PDF_HEADER_VERSION_REGEXP.test(version)\n    ) {\n      warn(`Invalid PDF header version number: ${version}`);\n      version = null;\n    }\n\n    const docInfo = {\n      PDFFormatVersion: version,\n      IsLinearized: !!this.linearization,\n      IsAcroFormPresent: !!this.acroForm,\n      IsXFAPresent: !!this.xfa,\n      IsCollectionPresent: !!this.collection,\n    };\n\n    let infoDict;\n    try {\n      infoDict = this.xref.trailer.get(\"Info\");\n    } catch (err) {\n      if (err instanceof MissingDataException) {\n        throw err;\n      }\n      info(\"The document information dictionary is invalid.\");\n    }\n\n    if (isDict(infoDict)) {\n      // Fill the document info with valid entries from the specification,\n      // as well as any existing well-formed custom entries.\n      for (const key of infoDict.getKeys()) {\n        const value = infoDict.get(key);\n\n        if (DocumentInfoValidators[key]) {\n          // Make sure the (standard) value conforms to the specification.\n          if (DocumentInfoValidators[key](value)) {\n            docInfo[key] =\n              typeof value !== \"string\" ? value : stringToPDFString(value);\n          } else {\n            info(`Bad value in document info for \"${key}\".`);\n          }\n        } else if (typeof key === \"string\") {\n          // For custom values, only accept white-listed types to prevent\n          // errors that would occur when trying to send non-serializable\n          // objects to the main-thread (for example `Dict` or `Stream`).\n          let customValue;\n          if (isString(value)) {\n            customValue = stringToPDFString(value);\n          } else if (isName(value) || isNum(value) || isBool(value)) {\n            customValue = value;\n          } else {\n            info(`Unsupported value in document info for (custom) \"${key}\".`);\n            continue;\n          }\n\n          if (!docInfo.Custom) {\n            docInfo.Custom = Object.create(null);\n          }\n          docInfo.Custom[key] = customValue;\n        }\n      }\n    }\n    return shadow(this, \"documentInfo\", docInfo);\n  }\n\n  get fingerprint() {\n    let hash;\n    const idArray = this.xref.trailer.get(\"ID\");\n    if (\n      Array.isArray(idArray) &&\n      idArray[0] &&\n      isString(idArray[0]) &&\n      idArray[0] !== EMPTY_FINGERPRINT\n    ) {\n      hash = stringToBytes(idArray[0]);\n    } else {\n      hash = calculateMD5(\n        this.stream.getByteRange(0, FINGERPRINT_FIRST_BYTES),\n        0,\n        FINGERPRINT_FIRST_BYTES\n      );\n    }\n\n    const fingerprintBuf = [];\n    for (let i = 0, ii = hash.length; i < ii; i++) {\n      const hex = hash[i].toString(16);\n      fingerprintBuf.push(hex.padStart(2, \"0\"));\n    }\n    return shadow(this, \"fingerprint\", fingerprintBuf.join(\"\"));\n  }\n\n  _getLinearizationPage(pageIndex) {\n    const { catalog, linearization } = this;\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        linearization && linearization.pageFirst === pageIndex,\n        \"_getLinearizationPage - invalid pageIndex argument.\"\n      );\n    }\n\n    const ref = Ref.get(linearization.objectNumberFirst, 0);\n    return this.xref\n      .fetchAsync(ref)\n      .then(obj => {\n        // Ensure that the object that was found is actually a Page dictionary.\n        if (\n          isDict(obj, \"Page\") ||\n          (isDict(obj) && !obj.has(\"Type\") && obj.has(\"Contents\"))\n        ) {\n          if (ref && !catalog.pageKidsCountCache.has(ref)) {\n            catalog.pageKidsCountCache.put(ref, 1); // Cache the Page reference.\n          }\n          return [obj, ref];\n        }\n        throw new FormatError(\n          \"The Linearization dictionary doesn't point \" +\n            \"to a valid Page dictionary.\"\n        );\n      })\n      .catch(reason => {\n        info(reason);\n        return catalog.getPageDict(pageIndex);\n      });\n  }\n\n  getPage(pageIndex) {\n    if (this._pagePromises[pageIndex] !== undefined) {\n      return this._pagePromises[pageIndex];\n    }\n    const { catalog, linearization } = this;\n\n    const promise =\n      linearization && linearization.pageFirst === pageIndex\n        ? this._getLinearizationPage(pageIndex)\n        : catalog.getPageDict(pageIndex);\n\n    return (this._pagePromises[pageIndex] = promise.then(([pageDict, ref]) => {\n      return new Page({\n        pdfManager: this.pdfManager,\n        xref: this.xref,\n        pageIndex,\n        pageDict,\n        ref,\n        fontCache: catalog.fontCache,\n        builtInCMapCache: catalog.builtInCMapCache,\n        globalImageCache: catalog.globalImageCache,\n        pdfFunctionFactory: this.pdfFunctionFactory,\n      });\n    }));\n  }\n\n  checkFirstPage() {\n    return this.getPage(0).catch(async reason => {\n      if (reason instanceof XRefEntryException) {\n        // Clear out the various caches to ensure that we haven't stored any\n        // inconsistent and/or incorrect state, since that could easily break\n        // subsequent `this.getPage` calls.\n        this._pagePromises.length = 0;\n        await this.cleanup();\n\n        throw new XRefParseException();\n      }\n    });\n  }\n\n  fontFallback(id, handler) {\n    return this.catalog.fontFallback(id, handler);\n  }\n\n  async cleanup(manuallyTriggered = false) {\n    return this.catalog\n      ? this.catalog.cleanup(manuallyTriggered)\n      : clearPrimitiveCaches();\n  }\n}\n\nexport { Page, PDFDocument };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  assert,\n  bytesToString,\n  createPromiseCapability,\n  createValidAbsoluteUrl,\n  FormatError,\n  info,\n  InvalidPDFException,\n  isBool,\n  isNum,\n  isString,\n  PermissionFlag,\n  shadow,\n  stringToPDFString,\n  stringToUTF8String,\n  unreachable,\n  warn,\n} from \"../shared/util.js\";\nimport {\n  clearPrimitiveCaches,\n  Cmd,\n  Dict,\n  isCmd,\n  isDict,\n  isName,\n  isRef,\n  isRefsEqual,\n  isStream,\n  Ref,\n  RefSet,\n  RefSetCache,\n} from \"./primitives.js\";\nimport { Lexer, Parser } from \"./parser.js\";\nimport {\n  MissingDataException,\n  toRomanNumerals,\n  XRefEntryException,\n  XRefParseException,\n} from \"./core_utils.js\";\nimport { CipherTransformFactory } from \"./crypto.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { GlobalImageCache } from \"./image_utils.js\";\n\nfunction fetchDestination(dest) {\n  return isDict(dest) ? dest.get(\"D\") : dest;\n}\n\nclass Catalog {\n  constructor(pdfManager, xref) {\n    this.pdfManager = pdfManager;\n    this.xref = xref;\n\n    this.catDict = xref.getCatalogObj();\n    if (!isDict(this.catDict)) {\n      throw new FormatError(\"Catalog object is not a dictionary.\");\n    }\n\n    this.fontCache = new RefSetCache();\n    this.builtInCMapCache = new Map();\n    this.globalImageCache = new GlobalImageCache();\n    this.pageKidsCountCache = new RefSetCache();\n  }\n\n  get metadata() {\n    const streamRef = this.catDict.getRaw(\"Metadata\");\n    if (!isRef(streamRef)) {\n      return shadow(this, \"metadata\", null);\n    }\n\n    const suppressEncryption = !(\n      this.xref.encrypt && this.xref.encrypt.encryptMetadata\n    );\n    const stream = this.xref.fetch(streamRef, suppressEncryption);\n    let metadata;\n\n    if (stream && isDict(stream.dict)) {\n      const type = stream.dict.get(\"Type\");\n      const subtype = stream.dict.get(\"Subtype\");\n\n      if (isName(type, \"Metadata\") && isName(subtype, \"XML\")) {\n        // XXX: This should examine the charset the XML document defines,\n        // however since there are currently no real means to decode\n        // arbitrary charsets, let's just hope that the author of the PDF\n        // was reasonable enough to stick with the XML default charset,\n        // which is UTF-8.\n        try {\n          metadata = stringToUTF8String(bytesToString(stream.getBytes()));\n        } catch (e) {\n          if (e instanceof MissingDataException) {\n            throw e;\n          }\n          info(\"Skipping invalid metadata.\");\n        }\n      }\n    }\n    return shadow(this, \"metadata\", metadata);\n  }\n\n  get toplevelPagesDict() {\n    const pagesObj = this.catDict.get(\"Pages\");\n    if (!isDict(pagesObj)) {\n      throw new FormatError(\"Invalid top-level pages dictionary.\");\n    }\n    return shadow(this, \"toplevelPagesDict\", pagesObj);\n  }\n\n  get documentOutline() {\n    let obj = null;\n    try {\n      obj = this._readDocumentOutline();\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(\"Unable to read document outline.\");\n    }\n    return shadow(this, \"documentOutline\", obj);\n  }\n\n  /**\n   * @private\n   */\n  _readDocumentOutline() {\n    let obj = this.catDict.get(\"Outlines\");\n    if (!isDict(obj)) {\n      return null;\n    }\n    obj = obj.getRaw(\"First\");\n    if (!isRef(obj)) {\n      return null;\n    }\n\n    const root = { items: [] };\n    const queue = [{ obj, parent: root }];\n    // To avoid recursion, keep track of the already processed items.\n    const processed = new RefSet();\n    processed.put(obj);\n    const xref = this.xref,\n      blackColor = new Uint8ClampedArray(3);\n\n    while (queue.length > 0) {\n      const i = queue.shift();\n      const outlineDict = xref.fetchIfRef(i.obj);\n      if (outlineDict === null) {\n        continue;\n      }\n      if (!outlineDict.has(\"Title\")) {\n        throw new FormatError(\"Invalid outline item encountered.\");\n      }\n\n      const data = { url: null, dest: null };\n      Catalog.parseDestDictionary({\n        destDict: outlineDict,\n        resultObj: data,\n        docBaseUrl: this.pdfManager.docBaseUrl,\n      });\n      const title = outlineDict.get(\"Title\");\n      const flags = outlineDict.get(\"F\") || 0;\n      const color = outlineDict.getArray(\"C\");\n      const count = outlineDict.get(\"Count\");\n      let rgbColor = blackColor;\n\n      // We only need to parse the color when it's valid, and non-default.\n      if (\n        Array.isArray(color) &&\n        color.length === 3 &&\n        (color[0] !== 0 || color[1] !== 0 || color[2] !== 0)\n      ) {\n        rgbColor = ColorSpace.singletons.rgb.getRgb(color, 0);\n      }\n\n      const outlineItem = {\n        dest: data.dest,\n        url: data.url,\n        unsafeUrl: data.unsafeUrl,\n        newWindow: data.newWindow,\n        title: stringToPDFString(title),\n        color: rgbColor,\n        count: Number.isInteger(count) ? count : undefined,\n        bold: !!(flags & 2),\n        italic: !!(flags & 1),\n        items: [],\n      };\n\n      i.parent.items.push(outlineItem);\n      obj = outlineDict.getRaw(\"First\");\n      if (isRef(obj) && !processed.has(obj)) {\n        queue.push({ obj, parent: outlineItem });\n        processed.put(obj);\n      }\n      obj = outlineDict.getRaw(\"Next\");\n      if (isRef(obj) && !processed.has(obj)) {\n        queue.push({ obj, parent: i.parent });\n        processed.put(obj);\n      }\n    }\n    return root.items.length > 0 ? root.items : null;\n  }\n\n  get permissions() {\n    let permissions = null;\n    try {\n      permissions = this._readPermissions();\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(\"Unable to read permissions.\");\n    }\n    return shadow(this, \"permissions\", permissions);\n  }\n\n  /**\n   * @private\n   */\n  _readPermissions() {\n    const encrypt = this.xref.trailer.get(\"Encrypt\");\n    if (!isDict(encrypt)) {\n      return null;\n    }\n\n    let flags = encrypt.get(\"P\");\n    if (!isNum(flags)) {\n      return null;\n    }\n\n    // PDF integer objects are represented internally in signed 2's complement\n    // form. Therefore, convert the signed decimal integer to a signed 2's\n    // complement binary integer so we can use regular bitwise operations on it.\n    flags += 2 ** 32;\n\n    const permissions = [];\n    for (const key in PermissionFlag) {\n      const value = PermissionFlag[key];\n      if (flags & value) {\n        permissions.push(value);\n      }\n    }\n    return permissions;\n  }\n\n  get numPages() {\n    const obj = this.toplevelPagesDict.get(\"Count\");\n    if (!Number.isInteger(obj)) {\n      throw new FormatError(\n        \"Page count in top-level pages dictionary is not an integer.\"\n      );\n    }\n    return shadow(this, \"numPages\", obj);\n  }\n\n  get destinations() {\n    const obj = this._readDests(),\n      dests = Object.create(null);\n    if (obj instanceof NameTree) {\n      const names = obj.getAll();\n      for (const name in names) {\n        dests[name] = fetchDestination(names[name]);\n      }\n    } else if (obj instanceof Dict) {\n      obj.forEach(function (key, value) {\n        if (value) {\n          dests[key] = fetchDestination(value);\n        }\n      });\n    }\n    return shadow(this, \"destinations\", dests);\n  }\n\n  getDestination(destinationId) {\n    const obj = this._readDests();\n    if (obj instanceof NameTree || obj instanceof Dict) {\n      return fetchDestination(obj.get(destinationId) || null);\n    }\n    return null;\n  }\n\n  /**\n   * @private\n   */\n  _readDests() {\n    const obj = this.catDict.get(\"Names\");\n    if (obj && obj.has(\"Dests\")) {\n      return new NameTree(obj.getRaw(\"Dests\"), this.xref);\n    } else if (this.catDict.has(\"Dests\")) {\n      // Simple destination dictionary.\n      return this.catDict.get(\"Dests\");\n    }\n    return undefined;\n  }\n\n  get pageLabels() {\n    let obj = null;\n    try {\n      obj = this._readPageLabels();\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(\"Unable to read page labels.\");\n    }\n    return shadow(this, \"pageLabels\", obj);\n  }\n\n  /**\n   * @private\n   */\n  _readPageLabels() {\n    const obj = this.catDict.getRaw(\"PageLabels\");\n    if (!obj) {\n      return null;\n    }\n\n    const pageLabels = new Array(this.numPages);\n    let style = null,\n      prefix = \"\";\n\n    const numberTree = new NumberTree(obj, this.xref);\n    const nums = numberTree.getAll();\n    let currentLabel = \"\",\n      currentIndex = 1;\n\n    for (let i = 0, ii = this.numPages; i < ii; i++) {\n      if (i in nums) {\n        const labelDict = nums[i];\n        if (!isDict(labelDict)) {\n          throw new FormatError(\"PageLabel is not a dictionary.\");\n        }\n\n        if (\n          labelDict.has(\"Type\") &&\n          !isName(labelDict.get(\"Type\"), \"PageLabel\")\n        ) {\n          throw new FormatError(\"Invalid type in PageLabel dictionary.\");\n        }\n\n        if (labelDict.has(\"S\")) {\n          const s = labelDict.get(\"S\");\n          if (!isName(s)) {\n            throw new FormatError(\"Invalid style in PageLabel dictionary.\");\n          }\n          style = s.name;\n        } else {\n          style = null;\n        }\n\n        if (labelDict.has(\"P\")) {\n          const p = labelDict.get(\"P\");\n          if (!isString(p)) {\n            throw new FormatError(\"Invalid prefix in PageLabel dictionary.\");\n          }\n          prefix = stringToPDFString(p);\n        } else {\n          prefix = \"\";\n        }\n\n        if (labelDict.has(\"St\")) {\n          const st = labelDict.get(\"St\");\n          if (!(Number.isInteger(st) && st >= 1)) {\n            throw new FormatError(\"Invalid start in PageLabel dictionary.\");\n          }\n          currentIndex = st;\n        } else {\n          currentIndex = 1;\n        }\n      }\n\n      switch (style) {\n        case \"D\":\n          currentLabel = currentIndex;\n          break;\n        case \"R\":\n        case \"r\":\n          currentLabel = toRomanNumerals(currentIndex, style === \"r\");\n          break;\n        case \"A\":\n        case \"a\":\n          const LIMIT = 26; // Use only the characters A-Z, or a-z.\n          const A_UPPER_CASE = 0x41,\n            A_LOWER_CASE = 0x61;\n\n          const baseCharCode = style === \"a\" ? A_LOWER_CASE : A_UPPER_CASE;\n          const letterIndex = currentIndex - 1;\n          const character = String.fromCharCode(\n            baseCharCode + (letterIndex % LIMIT)\n          );\n          const charBuf = [];\n          for (let j = 0, jj = (letterIndex / LIMIT) | 0; j <= jj; j++) {\n            charBuf.push(character);\n          }\n          currentLabel = charBuf.join(\"\");\n          break;\n        default:\n          if (style) {\n            throw new FormatError(\n              `Invalid style \"${style}\" in PageLabel dictionary.`\n            );\n          }\n          currentLabel = \"\";\n      }\n\n      pageLabels[i] = prefix + currentLabel;\n      currentIndex++;\n    }\n    return pageLabels;\n  }\n\n  get pageLayout() {\n    const obj = this.catDict.get(\"PageLayout\");\n    // Purposely use a non-standard default value, rather than 'SinglePage', to\n    // allow differentiating between `undefined` and /SinglePage since that does\n    // affect the Scroll mode (continuous/non-continuous) used in Adobe Reader.\n    let pageLayout = \"\";\n\n    if (isName(obj)) {\n      switch (obj.name) {\n        case \"SinglePage\":\n        case \"OneColumn\":\n        case \"TwoColumnLeft\":\n        case \"TwoColumnRight\":\n        case \"TwoPageLeft\":\n        case \"TwoPageRight\":\n          pageLayout = obj.name;\n      }\n    }\n    return shadow(this, \"pageLayout\", pageLayout);\n  }\n\n  get pageMode() {\n    const obj = this.catDict.get(\"PageMode\");\n    let pageMode = \"UseNone\"; // Default value.\n\n    if (isName(obj)) {\n      switch (obj.name) {\n        case \"UseNone\":\n        case \"UseOutlines\":\n        case \"UseThumbs\":\n        case \"FullScreen\":\n        case \"UseOC\":\n        case \"UseAttachments\":\n          pageMode = obj.name;\n      }\n    }\n    return shadow(this, \"pageMode\", pageMode);\n  }\n\n  get viewerPreferences() {\n    const ViewerPreferencesValidators = {\n      HideToolbar: isBool,\n      HideMenubar: isBool,\n      HideWindowUI: isBool,\n      FitWindow: isBool,\n      CenterWindow: isBool,\n      DisplayDocTitle: isBool,\n      NonFullScreenPageMode: isName,\n      Direction: isName,\n      ViewArea: isName,\n      ViewClip: isName,\n      PrintArea: isName,\n      PrintClip: isName,\n      PrintScaling: isName,\n      Duplex: isName,\n      PickTrayByPDFSize: isBool,\n      PrintPageRange: Array.isArray,\n      NumCopies: Number.isInteger,\n    };\n\n    const obj = this.catDict.get(\"ViewerPreferences\");\n    let prefs = null;\n\n    if (isDict(obj)) {\n      for (const key in ViewerPreferencesValidators) {\n        if (!obj.has(key)) {\n          continue;\n        }\n        const value = obj.get(key);\n        // Make sure the (standard) value conforms to the specification.\n        if (!ViewerPreferencesValidators[key](value)) {\n          info(`Bad value in ViewerPreferences for \"${key}\".`);\n          continue;\n        }\n        let prefValue;\n\n        switch (key) {\n          case \"NonFullScreenPageMode\":\n            switch (value.name) {\n              case \"UseNone\":\n              case \"UseOutlines\":\n              case \"UseThumbs\":\n              case \"UseOC\":\n                prefValue = value.name;\n                break;\n              default:\n                prefValue = \"UseNone\";\n            }\n            break;\n          case \"Direction\":\n            switch (value.name) {\n              case \"L2R\":\n              case \"R2L\":\n                prefValue = value.name;\n                break;\n              default:\n                prefValue = \"L2R\";\n            }\n            break;\n          case \"ViewArea\":\n          case \"ViewClip\":\n          case \"PrintArea\":\n          case \"PrintClip\":\n            switch (value.name) {\n              case \"MediaBox\":\n              case \"CropBox\":\n              case \"BleedBox\":\n              case \"TrimBox\":\n              case \"ArtBox\":\n                prefValue = value.name;\n                break;\n              default:\n                prefValue = \"CropBox\";\n            }\n            break;\n          case \"PrintScaling\":\n            switch (value.name) {\n              case \"None\":\n              case \"AppDefault\":\n                prefValue = value.name;\n                break;\n              default:\n                prefValue = \"AppDefault\";\n            }\n            break;\n          case \"Duplex\":\n            switch (value.name) {\n              case \"Simplex\":\n              case \"DuplexFlipShortEdge\":\n              case \"DuplexFlipLongEdge\":\n                prefValue = value.name;\n                break;\n              default:\n                prefValue = \"None\";\n            }\n            break;\n          case \"PrintPageRange\":\n            const length = value.length;\n            if (length % 2 !== 0) {\n              // The number of elements must be even.\n              break;\n            }\n            const isValid = value.every((page, i, arr) => {\n              return (\n                Number.isInteger(page) &&\n                page > 0 &&\n                (i === 0 || page >= arr[i - 1]) &&\n                page <= this.numPages\n              );\n            });\n            if (isValid) {\n              prefValue = value;\n            }\n            break;\n          case \"NumCopies\":\n            if (value > 0) {\n              prefValue = value;\n            }\n            break;\n          default:\n            if (typeof value !== \"boolean\") {\n              throw new FormatError(\n                `viewerPreferences - expected a boolean value for: ${key}`\n              );\n            }\n            prefValue = value;\n        }\n\n        if (prefValue !== undefined) {\n          if (!prefs) {\n            prefs = Object.create(null);\n          }\n          prefs[key] = prefValue;\n        } else {\n          info(`Bad value in ViewerPreferences for \"${key}\".`);\n        }\n      }\n    }\n    return shadow(this, \"viewerPreferences\", prefs);\n  }\n\n  /**\n   * NOTE: \"JavaScript\" actions are, for now, handled by `get javaScript` below.\n   */\n  get openAction() {\n    const obj = this.catDict.get(\"OpenAction\");\n    let openAction = null;\n\n    if (isDict(obj)) {\n      // Convert the OpenAction dictionary into a format that works with\n      // `parseDestDictionary`, to avoid having to re-implement those checks.\n      const destDict = new Dict(this.xref);\n      destDict.set(\"A\", obj);\n\n      const resultObj = { url: null, dest: null, action: null };\n      Catalog.parseDestDictionary({ destDict, resultObj });\n\n      if (Array.isArray(resultObj.dest)) {\n        if (!openAction) {\n          openAction = Object.create(null);\n        }\n        openAction.dest = resultObj.dest;\n      } else if (resultObj.action) {\n        if (!openAction) {\n          openAction = Object.create(null);\n        }\n        openAction.action = resultObj.action;\n      }\n    } else if (Array.isArray(obj)) {\n      if (!openAction) {\n        openAction = Object.create(null);\n      }\n      openAction.dest = obj;\n    }\n    return shadow(this, \"openAction\", openAction);\n  }\n\n  get attachments() {\n    const obj = this.catDict.get(\"Names\");\n    let attachments = null;\n\n    if (obj && obj.has(\"EmbeddedFiles\")) {\n      const nameTree = new NameTree(obj.getRaw(\"EmbeddedFiles\"), this.xref);\n      const names = nameTree.getAll();\n      for (const name in names) {\n        const fs = new FileSpec(names[name], this.xref);\n        if (!attachments) {\n          attachments = Object.create(null);\n        }\n        attachments[stringToPDFString(name)] = fs.serializable;\n      }\n    }\n    return shadow(this, \"attachments\", attachments);\n  }\n\n  get javaScript() {\n    const obj = this.catDict.get(\"Names\");\n\n    let javaScript = null;\n    function appendIfJavaScriptDict(jsDict) {\n      const type = jsDict.get(\"S\");\n      if (!isName(type, \"JavaScript\")) {\n        return;\n      }\n\n      let js = jsDict.get(\"JS\");\n      if (isStream(js)) {\n        js = bytesToString(js.getBytes());\n      } else if (!isString(js)) {\n        return;\n      }\n\n      if (!javaScript) {\n        javaScript = [];\n      }\n      javaScript.push(stringToPDFString(js));\n    }\n\n    if (obj && obj.has(\"JavaScript\")) {\n      const nameTree = new NameTree(obj.getRaw(\"JavaScript\"), this.xref);\n      const names = nameTree.getAll();\n      for (const name in names) {\n        // We don't use most JavaScript in PDF documents. This code is\n        // defensive so we don't cause errors on document load.\n        const jsDict = names[name];\n        if (isDict(jsDict)) {\n          appendIfJavaScriptDict(jsDict);\n        }\n      }\n    }\n\n    // Append OpenAction \"JavaScript\" actions to the JavaScript array.\n    const openAction = this.catDict.get(\"OpenAction\");\n    if (isDict(openAction) && isName(openAction.get(\"S\"), \"JavaScript\")) {\n      appendIfJavaScriptDict(openAction);\n    }\n\n    return shadow(this, \"javaScript\", javaScript);\n  }\n\n  fontFallback(id, handler) {\n    const promises = [];\n    this.fontCache.forEach(function (promise) {\n      promises.push(promise);\n    });\n\n    return Promise.all(promises).then(translatedFonts => {\n      for (const translatedFont of translatedFonts) {\n        if (translatedFont.loadedName === id) {\n          translatedFont.fallback(handler);\n          return;\n        }\n      }\n    });\n  }\n\n  cleanup(manuallyTriggered = false) {\n    clearPrimitiveCaches();\n    this.globalImageCache.clear(/* onlyData = */ manuallyTriggered);\n    this.pageKidsCountCache.clear();\n\n    const promises = [];\n    this.fontCache.forEach(function (promise) {\n      promises.push(promise);\n    });\n\n    return Promise.all(promises).then(translatedFonts => {\n      for (const { dict } of translatedFonts) {\n        delete dict.translated;\n      }\n      this.fontCache.clear();\n      this.builtInCMapCache.clear();\n    });\n  }\n\n  getPageDict(pageIndex) {\n    const capability = createPromiseCapability();\n    const nodesToVisit = [this.catDict.getRaw(\"Pages\")];\n    const visitedNodes = new RefSet();\n    const xref = this.xref,\n      pageKidsCountCache = this.pageKidsCountCache;\n    let count,\n      currentPageIndex = 0;\n\n    function next() {\n      while (nodesToVisit.length) {\n        const currentNode = nodesToVisit.pop();\n\n        if (isRef(currentNode)) {\n          count = pageKidsCountCache.get(currentNode);\n          // Skip nodes where the page can't be.\n          if (count > 0 && currentPageIndex + count < pageIndex) {\n            currentPageIndex += count;\n            continue;\n          }\n          // Prevent circular references in the /Pages tree.\n          if (visitedNodes.has(currentNode)) {\n            capability.reject(\n              new FormatError(\"Pages tree contains circular reference.\")\n            );\n            return;\n          }\n          visitedNodes.put(currentNode);\n\n          xref.fetchAsync(currentNode).then(function (obj) {\n            if (isDict(obj, \"Page\") || (isDict(obj) && !obj.has(\"Kids\"))) {\n              if (pageIndex === currentPageIndex) {\n                // Cache the Page reference, since it can *greatly* improve\n                // performance by reducing redundant lookups in long documents\n                // where all nodes are found at *one* level of the tree.\n                if (currentNode && !pageKidsCountCache.has(currentNode)) {\n                  pageKidsCountCache.put(currentNode, 1);\n                }\n                capability.resolve([obj, currentNode]);\n              } else {\n                currentPageIndex++;\n                next();\n              }\n              return;\n            }\n            nodesToVisit.push(obj);\n            next();\n          }, capability.reject);\n          return;\n        }\n\n        // Must be a child page dictionary.\n        if (!isDict(currentNode)) {\n          capability.reject(\n            new FormatError(\n              \"Page dictionary kid reference points to wrong type of object.\"\n            )\n          );\n          return;\n        }\n\n        count = currentNode.get(\"Count\");\n        if (Number.isInteger(count) && count >= 0) {\n          // Cache the Kids count, since it can reduce redundant lookups in\n          // documents where all nodes are found at *one* level of the tree.\n          const objId = currentNode.objId;\n          if (objId && !pageKidsCountCache.has(objId)) {\n            pageKidsCountCache.put(objId, count);\n          }\n          // Skip nodes where the page can't be.\n          if (currentPageIndex + count <= pageIndex) {\n            currentPageIndex += count;\n            continue;\n          }\n        }\n\n        const kids = currentNode.get(\"Kids\");\n        if (!Array.isArray(kids)) {\n          // Prevent errors in corrupt PDF documents that violate the\n          // specification by *inlining* Page dicts directly in the Kids\n          // array, rather than using indirect objects (fixes issue9540.pdf).\n          if (\n            isName(currentNode.get(\"Type\"), \"Page\") ||\n            (!currentNode.has(\"Type\") && currentNode.has(\"Contents\"))\n          ) {\n            if (currentPageIndex === pageIndex) {\n              capability.resolve([currentNode, null]);\n              return;\n            }\n            currentPageIndex++;\n            continue;\n          }\n\n          capability.reject(\n            new FormatError(\"Page dictionary kids object is not an array.\")\n          );\n          return;\n        }\n\n        // Always check all `Kids` nodes, to avoid getting stuck in an empty\n        // node further down in the tree (see issue5644.pdf, issue8088.pdf),\n        // and to ensure that we actually find the correct `Page` dict.\n        for (let last = kids.length - 1; last >= 0; last--) {\n          nodesToVisit.push(kids[last]);\n        }\n      }\n      capability.reject(new Error(`Page index ${pageIndex} not found.`));\n    }\n    next();\n    return capability.promise;\n  }\n\n  getPageIndex(pageRef) {\n    // The page tree nodes have the count of all the leaves below them. To get\n    // how many pages are before we just have to walk up the tree and keep\n    // adding the count of siblings to the left of the node.\n    const xref = this.xref;\n\n    function pagesBeforeRef(kidRef) {\n      let total = 0,\n        parentRef;\n\n      return xref\n        .fetchAsync(kidRef)\n        .then(function (node) {\n          if (\n            isRefsEqual(kidRef, pageRef) &&\n            !isDict(node, \"Page\") &&\n            !(isDict(node) && !node.has(\"Type\") && node.has(\"Contents\"))\n          ) {\n            throw new FormatError(\n              \"The reference does not point to a /Page dictionary.\"\n            );\n          }\n          if (!node) {\n            return null;\n          }\n          if (!isDict(node)) {\n            throw new FormatError(\"Node must be a dictionary.\");\n          }\n          parentRef = node.getRaw(\"Parent\");\n          return node.getAsync(\"Parent\");\n        })\n        .then(function (parent) {\n          if (!parent) {\n            return null;\n          }\n          if (!isDict(parent)) {\n            throw new FormatError(\"Parent must be a dictionary.\");\n          }\n          return parent.getAsync(\"Kids\");\n        })\n        .then(function (kids) {\n          if (!kids) {\n            return null;\n          }\n\n          const kidPromises = [];\n          let found = false;\n          for (let i = 0, ii = kids.length; i < ii; i++) {\n            const kid = kids[i];\n            if (!isRef(kid)) {\n              throw new FormatError(\"Kid must be a reference.\");\n            }\n            if (isRefsEqual(kid, kidRef)) {\n              found = true;\n              break;\n            }\n            kidPromises.push(\n              xref.fetchAsync(kid).then(function (obj) {\n                if (!isDict(obj)) {\n                  throw new FormatError(\"Kid node must be a dictionary.\");\n                }\n                if (obj.has(\"Count\")) {\n                  total += obj.get(\"Count\");\n                } else {\n                  // Page leaf node.\n                  total++;\n                }\n              })\n            );\n          }\n          if (!found) {\n            throw new FormatError(\"Kid reference not found in parent's kids.\");\n          }\n          return Promise.all(kidPromises).then(function () {\n            return [total, parentRef];\n          });\n        });\n    }\n\n    let total = 0;\n    function next(ref) {\n      return pagesBeforeRef(ref).then(function (args) {\n        if (!args) {\n          return total;\n        }\n        const [count, parentRef] = args;\n        total += count;\n        return next(parentRef);\n      });\n    }\n\n    return next(pageRef);\n  }\n\n  /**\n   * @typedef ParseDestDictionaryParameters\n   * @property {Dict} destDict - The dictionary containing the destination.\n   * @property {Object} resultObj - The object where the parsed destination\n   *   properties will be placed.\n   * @property {string} [docBaseUrl] - The document base URL that is used when\n   *   attempting to recover valid absolute URLs from relative ones.\n   */\n\n  /**\n   * Helper function used to parse the contents of destination dictionaries.\n   * @param {ParseDestDictionaryParameters} params\n   */\n  static parseDestDictionary(params) {\n    // Lets URLs beginning with 'www.' default to using the 'http://' protocol.\n    function addDefaultProtocolToUrl(url) {\n      return url.startsWith(\"www.\") ? `http://${url}` : url;\n    }\n\n    // According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded\n    // in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see Bugzilla 1122280.\n    function tryConvertUrlEncoding(url) {\n      try {\n        return stringToUTF8String(url);\n      } catch (e) {\n        return url;\n      }\n    }\n\n    const destDict = params.destDict;\n    if (!isDict(destDict)) {\n      warn(\"parseDestDictionary: `destDict` must be a dictionary.\");\n      return;\n    }\n    const resultObj = params.resultObj;\n    if (typeof resultObj !== \"object\") {\n      warn(\"parseDestDictionary: `resultObj` must be an object.\");\n      return;\n    }\n    const docBaseUrl = params.docBaseUrl || null;\n\n    let action = destDict.get(\"A\"),\n      url,\n      dest;\n    if (!isDict(action) && destDict.has(\"Dest\")) {\n      // A /Dest entry should *only* contain a Name or an Array, but some bad\n      // PDF generators ignore that and treat it as an /A entry.\n      action = destDict.get(\"Dest\");\n    }\n\n    if (isDict(action)) {\n      const actionType = action.get(\"S\");\n      if (!isName(actionType)) {\n        warn(\"parseDestDictionary: Invalid type in Action dictionary.\");\n        return;\n      }\n      const actionName = actionType.name;\n\n      switch (actionName) {\n        case \"URI\":\n          url = action.get(\"URI\");\n          if (isName(url)) {\n            // Some bad PDFs do not put parentheses around relative URLs.\n            url = \"/\" + url.name;\n          } else if (isString(url)) {\n            url = addDefaultProtocolToUrl(url);\n          }\n          // TODO: pdf spec mentions urls can be relative to a Base\n          // entry in the dictionary.\n          break;\n\n        case \"GoTo\":\n          dest = action.get(\"D\");\n          break;\n\n        case \"Launch\":\n        // We neither want, nor can, support arbitrary 'Launch' actions.\n        // However, in practice they are mostly used for linking to other PDF\n        // files, which we thus attempt to support (utilizing `docBaseUrl`).\n        /* falls through */\n\n        case \"GoToR\":\n          const urlDict = action.get(\"F\");\n          if (isDict(urlDict)) {\n            // We assume that we found a FileSpec dictionary\n            // and fetch the URL without checking any further.\n            url = urlDict.get(\"F\") || null;\n          } else if (isString(urlDict)) {\n            url = urlDict;\n          }\n\n          // NOTE: the destination is relative to the *remote* document.\n          let remoteDest = action.get(\"D\");\n          if (remoteDest) {\n            if (isName(remoteDest)) {\n              remoteDest = remoteDest.name;\n            }\n            if (isString(url)) {\n              const baseUrl = url.split(\"#\")[0];\n              if (isString(remoteDest)) {\n                url = baseUrl + \"#\" + remoteDest;\n              } else if (Array.isArray(remoteDest)) {\n                url = baseUrl + \"#\" + JSON.stringify(remoteDest);\n              }\n            }\n          }\n          // The 'NewWindow' property, equal to `LinkTarget.BLANK`.\n          const newWindow = action.get(\"NewWindow\");\n          if (isBool(newWindow)) {\n            resultObj.newWindow = newWindow;\n          }\n          break;\n\n        case \"Named\":\n          const namedAction = action.get(\"N\");\n          if (isName(namedAction)) {\n            resultObj.action = namedAction.name;\n          }\n          break;\n\n        case \"JavaScript\":\n          const jsAction = action.get(\"JS\");\n          let js;\n\n          if (isStream(jsAction)) {\n            js = bytesToString(jsAction.getBytes());\n          } else if (isString(jsAction)) {\n            js = jsAction;\n          }\n\n          if (js) {\n            // Attempt to recover valid URLs from `JS` entries with certain\n            // white-listed formats:\n            //  - window.open('http://example.com')\n            //  - app.launchURL('http://example.com', true)\n            const URL_OPEN_METHODS = [\"app.launchURL\", \"window.open\"];\n            const regex = new RegExp(\n              \"^\\\\s*(\" +\n                URL_OPEN_METHODS.join(\"|\").split(\".\").join(\"\\\\.\") +\n                \")\\\\((?:'|\\\")([^'\\\"]*)(?:'|\\\")(?:,\\\\s*(\\\\w+)\\\\)|\\\\))\",\n              \"i\"\n            );\n\n            const jsUrl = regex.exec(stringToPDFString(js));\n            if (jsUrl && jsUrl[2]) {\n              url = jsUrl[2];\n\n              if (jsUrl[3] === \"true\" && jsUrl[1] === \"app.launchURL\") {\n                resultObj.newWindow = true;\n              }\n              break;\n            }\n          }\n        /* falls through */\n        default:\n          warn(`parseDestDictionary: unsupported action type \"${actionName}\".`);\n          break;\n      }\n    } else if (destDict.has(\"Dest\")) {\n      // Simple destination.\n      dest = destDict.get(\"Dest\");\n    }\n\n    if (isString(url)) {\n      url = tryConvertUrlEncoding(url);\n      const absoluteUrl = createValidAbsoluteUrl(url, docBaseUrl);\n      if (absoluteUrl) {\n        resultObj.url = absoluteUrl.href;\n      }\n      resultObj.unsafeUrl = url;\n    }\n    if (dest) {\n      if (isName(dest)) {\n        dest = dest.name;\n      }\n      if (isString(dest) || Array.isArray(dest)) {\n        resultObj.dest = dest;\n      }\n    }\n  }\n}\n\nvar XRef = (function XRefClosure() {\n  // eslint-disable-next-line no-shadow\n  function XRef(stream, pdfManager) {\n    this.stream = stream;\n    this.pdfManager = pdfManager;\n    this.entries = [];\n    this.xrefstms = Object.create(null);\n    this._cacheMap = new Map(); // Prepare the XRef cache.\n    this.stats = {\n      streamTypes: Object.create(null),\n      fontTypes: Object.create(null),\n    };\n  }\n\n  XRef.prototype = {\n    setStartXRef: function XRef_setStartXRef(startXRef) {\n      // Store the starting positions of xref tables as we process them\n      // so we can recover from missing data errors\n      this.startXRefQueue = [startXRef];\n    },\n\n    parse: function XRef_parse(recoveryMode) {\n      var trailerDict;\n      if (!recoveryMode) {\n        trailerDict = this.readXRef();\n      } else {\n        warn(\"Indexing all PDF objects\");\n        trailerDict = this.indexObjects();\n      }\n      trailerDict.assignXref(this);\n      this.trailer = trailerDict;\n\n      let encrypt;\n      try {\n        encrypt = trailerDict.get(\"Encrypt\");\n      } catch (ex) {\n        if (ex instanceof MissingDataException) {\n          throw ex;\n        }\n        warn(`XRef.parse - Invalid \"Encrypt\" reference: \"${ex}\".`);\n      }\n      if (isDict(encrypt)) {\n        var ids = trailerDict.get(\"ID\");\n        var fileId = ids && ids.length ? ids[0] : \"\";\n        // The 'Encrypt' dictionary itself should not be encrypted, and by\n        // setting `suppressEncryption` we can prevent an infinite loop inside\n        // of `XRef_fetchUncompressed` if the dictionary contains indirect\n        // objects (fixes issue7665.pdf).\n        encrypt.suppressEncryption = true;\n        this.encrypt = new CipherTransformFactory(\n          encrypt,\n          fileId,\n          this.pdfManager.password\n        );\n      }\n\n      // Get the root dictionary (catalog) object, and do some basic validation.\n      let root;\n      try {\n        root = trailerDict.get(\"Root\");\n      } catch (ex) {\n        if (ex instanceof MissingDataException) {\n          throw ex;\n        }\n        warn(`XRef.parse - Invalid \"Root\" reference: \"${ex}\".`);\n      }\n      if (isDict(root) && root.has(\"Pages\")) {\n        this.root = root;\n      } else {\n        if (!recoveryMode) {\n          throw new XRefParseException();\n        }\n        throw new FormatError(\"Invalid root reference\");\n      }\n    },\n\n    processXRefTable: function XRef_processXRefTable(parser) {\n      if (!(\"tableState\" in this)) {\n        // Stores state of the table as we process it so we can resume\n        // from middle of table in case of missing data error\n        this.tableState = {\n          entryNum: 0,\n          streamPos: parser.lexer.stream.pos,\n          parserBuf1: parser.buf1,\n          parserBuf2: parser.buf2,\n        };\n      }\n\n      var obj = this.readXRefTable(parser);\n\n      // Sanity check\n      if (!isCmd(obj, \"trailer\")) {\n        throw new FormatError(\n          \"Invalid XRef table: could not find trailer dictionary\"\n        );\n      }\n      // Read trailer dictionary, e.g.\n      // trailer\n      //    << /Size 22\n      //      /Root 20R\n      //      /Info 10R\n      //      /ID [ <81b14aafa313db63dbd6f981e49f94f4> ]\n      //    >>\n      // The parser goes through the entire stream << ... >> and provides\n      // a getter interface for the key-value table\n      var dict = parser.getObj();\n\n      // The pdflib PDF generator can generate a nested trailer dictionary\n      if (!isDict(dict) && dict.dict) {\n        dict = dict.dict;\n      }\n      if (!isDict(dict)) {\n        throw new FormatError(\n          \"Invalid XRef table: could not parse trailer dictionary\"\n        );\n      }\n      delete this.tableState;\n\n      return dict;\n    },\n\n    readXRefTable: function XRef_readXRefTable(parser) {\n      // Example of cross-reference table:\n      // xref\n      // 0 1                    <-- subsection header (first obj #, obj count)\n      // 0000000000 65535 f     <-- actual object (offset, generation #, f/n)\n      // 23 2                   <-- subsection header ... and so on ...\n      // 0000025518 00002 n\n      // 0000025635 00000 n\n      // trailer\n      // ...\n\n      var stream = parser.lexer.stream;\n      var tableState = this.tableState;\n      stream.pos = tableState.streamPos;\n      parser.buf1 = tableState.parserBuf1;\n      parser.buf2 = tableState.parserBuf2;\n\n      // Outer loop is over subsection headers\n      var obj;\n\n      while (true) {\n        if (!(\"firstEntryNum\" in tableState) || !(\"entryCount\" in tableState)) {\n          if (isCmd((obj = parser.getObj()), \"trailer\")) {\n            break;\n          }\n          tableState.firstEntryNum = obj;\n          tableState.entryCount = parser.getObj();\n        }\n\n        var first = tableState.firstEntryNum;\n        var count = tableState.entryCount;\n        if (!Number.isInteger(first) || !Number.isInteger(count)) {\n          throw new FormatError(\n            \"Invalid XRef table: wrong types in subsection header\"\n          );\n        }\n        // Inner loop is over objects themselves\n        for (var i = tableState.entryNum; i < count; i++) {\n          tableState.streamPos = stream.pos;\n          tableState.entryNum = i;\n          tableState.parserBuf1 = parser.buf1;\n          tableState.parserBuf2 = parser.buf2;\n\n          var entry = {};\n          entry.offset = parser.getObj();\n          entry.gen = parser.getObj();\n          var type = parser.getObj();\n\n          if (type instanceof Cmd) {\n            switch (type.cmd) {\n              case \"f\":\n                entry.free = true;\n                break;\n              case \"n\":\n                entry.uncompressed = true;\n                break;\n            }\n          }\n\n          // Validate entry obj\n          if (\n            !Number.isInteger(entry.offset) ||\n            !Number.isInteger(entry.gen) ||\n            !(entry.free || entry.uncompressed)\n          ) {\n            throw new FormatError(\n              `Invalid entry in XRef subsection: ${first}, ${count}`\n            );\n          }\n\n          // The first xref table entry, i.e. obj 0, should be free. Attempting\n          // to adjust an incorrect first obj # (fixes issue 3248 and 7229).\n          if (i === 0 && entry.free && first === 1) {\n            first = 0;\n          }\n\n          if (!this.entries[i + first]) {\n            this.entries[i + first] = entry;\n          }\n        }\n\n        tableState.entryNum = 0;\n        tableState.streamPos = stream.pos;\n        tableState.parserBuf1 = parser.buf1;\n        tableState.parserBuf2 = parser.buf2;\n        delete tableState.firstEntryNum;\n        delete tableState.entryCount;\n      }\n\n      // Sanity check: as per spec, first object must be free\n      if (this.entries[0] && !this.entries[0].free) {\n        throw new FormatError(\"Invalid XRef table: unexpected first object\");\n      }\n      return obj;\n    },\n\n    processXRefStream: function XRef_processXRefStream(stream) {\n      if (!(\"streamState\" in this)) {\n        // Stores state of the stream as we process it so we can resume\n        // from middle of stream in case of missing data error\n        var streamParameters = stream.dict;\n        var byteWidths = streamParameters.get(\"W\");\n        var range = streamParameters.get(\"Index\");\n        if (!range) {\n          range = [0, streamParameters.get(\"Size\")];\n        }\n\n        this.streamState = {\n          entryRanges: range,\n          byteWidths,\n          entryNum: 0,\n          streamPos: stream.pos,\n        };\n      }\n      this.readXRefStream(stream);\n      delete this.streamState;\n\n      return stream.dict;\n    },\n\n    readXRefStream: function XRef_readXRefStream(stream) {\n      var i, j;\n      var streamState = this.streamState;\n      stream.pos = streamState.streamPos;\n\n      var byteWidths = streamState.byteWidths;\n      var typeFieldWidth = byteWidths[0];\n      var offsetFieldWidth = byteWidths[1];\n      var generationFieldWidth = byteWidths[2];\n\n      var entryRanges = streamState.entryRanges;\n      while (entryRanges.length > 0) {\n        var first = entryRanges[0];\n        var n = entryRanges[1];\n\n        if (!Number.isInteger(first) || !Number.isInteger(n)) {\n          throw new FormatError(`Invalid XRef range fields: ${first}, ${n}`);\n        }\n        if (\n          !Number.isInteger(typeFieldWidth) ||\n          !Number.isInteger(offsetFieldWidth) ||\n          !Number.isInteger(generationFieldWidth)\n        ) {\n          throw new FormatError(\n            `Invalid XRef entry fields length: ${first}, ${n}`\n          );\n        }\n        for (i = streamState.entryNum; i < n; ++i) {\n          streamState.entryNum = i;\n          streamState.streamPos = stream.pos;\n\n          var type = 0,\n            offset = 0,\n            generation = 0;\n          for (j = 0; j < typeFieldWidth; ++j) {\n            type = (type << 8) | stream.getByte();\n          }\n          // if type field is absent, its default value is 1\n          if (typeFieldWidth === 0) {\n            type = 1;\n          }\n          for (j = 0; j < offsetFieldWidth; ++j) {\n            offset = (offset << 8) | stream.getByte();\n          }\n          for (j = 0; j < generationFieldWidth; ++j) {\n            generation = (generation << 8) | stream.getByte();\n          }\n          var entry = {};\n          entry.offset = offset;\n          entry.gen = generation;\n          switch (type) {\n            case 0:\n              entry.free = true;\n              break;\n            case 1:\n              entry.uncompressed = true;\n              break;\n            case 2:\n              break;\n            default:\n              throw new FormatError(`Invalid XRef entry type: ${type}`);\n          }\n          if (!this.entries[first + i]) {\n            this.entries[first + i] = entry;\n          }\n        }\n\n        streamState.entryNum = 0;\n        streamState.streamPos = stream.pos;\n        entryRanges.splice(0, 2);\n      }\n    },\n\n    indexObjects: function XRef_indexObjects() {\n      // Simple scan through the PDF content to find objects,\n      // trailers and XRef streams.\n      var TAB = 0x9,\n        LF = 0xa,\n        CR = 0xd,\n        SPACE = 0x20;\n      var PERCENT = 0x25,\n        LT = 0x3c;\n\n      function readToken(data, offset) {\n        var token = \"\",\n          ch = data[offset];\n        while (ch !== LF && ch !== CR && ch !== LT) {\n          if (++offset >= data.length) {\n            break;\n          }\n          token += String.fromCharCode(ch);\n          ch = data[offset];\n        }\n        return token;\n      }\n      function skipUntil(data, offset, what) {\n        var length = what.length,\n          dataLength = data.length;\n        var skipped = 0;\n        // finding byte sequence\n        while (offset < dataLength) {\n          var i = 0;\n          while (i < length && data[offset + i] === what[i]) {\n            ++i;\n          }\n          if (i >= length) {\n            break; // sequence found\n          }\n          offset++;\n          skipped++;\n        }\n        return skipped;\n      }\n      var objRegExp = /^(\\d+)\\s+(\\d+)\\s+obj\\b/;\n      const endobjRegExp = /\\bendobj[\\b\\s]$/;\n      const nestedObjRegExp = /\\s+(\\d+\\s+\\d+\\s+obj[\\b\\s<])$/;\n      const CHECK_CONTENT_LENGTH = 25;\n\n      var trailerBytes = new Uint8Array([116, 114, 97, 105, 108, 101, 114]);\n      // prettier-ignore\n      var startxrefBytes = new Uint8Array([115, 116, 97, 114, 116, 120, 114,\n                                           101, 102]);\n      const objBytes = new Uint8Array([111, 98, 106]);\n      var xrefBytes = new Uint8Array([47, 88, 82, 101, 102]);\n\n      // Clear out any existing entries, since they may be bogus.\n      this.entries.length = 0;\n\n      var stream = this.stream;\n      stream.pos = 0;\n      var buffer = stream.getBytes();\n      var position = stream.start,\n        length = buffer.length;\n      var trailers = [],\n        xrefStms = [];\n      while (position < length) {\n        var ch = buffer[position];\n        if (ch === TAB || ch === LF || ch === CR || ch === SPACE) {\n          ++position;\n          continue;\n        }\n        if (ch === PERCENT) {\n          // %-comment\n          do {\n            ++position;\n            if (position >= length) {\n              break;\n            }\n            ch = buffer[position];\n          } while (ch !== LF && ch !== CR);\n          continue;\n        }\n        var token = readToken(buffer, position);\n        var m;\n        if (\n          token.startsWith(\"xref\") &&\n          (token.length === 4 || /\\s/.test(token[4]))\n        ) {\n          position += skipUntil(buffer, position, trailerBytes);\n          trailers.push(position);\n          position += skipUntil(buffer, position, startxrefBytes);\n        } else if ((m = objRegExp.exec(token))) {\n          const num = m[1] | 0,\n            gen = m[2] | 0;\n          if (!this.entries[num] || this.entries[num].gen === gen) {\n            this.entries[num] = {\n              offset: position - stream.start,\n              gen,\n              uncompressed: true,\n            };\n          }\n          let contentLength,\n            startPos = position + token.length;\n\n          // Find the next \"obj\" string, rather than \"endobj\", to ensure that\n          // we won't skip over a new 'obj' operator in corrupt files where\n          // 'endobj' operators are missing (fixes issue9105_reduced.pdf).\n          while (startPos < buffer.length) {\n            const endPos = startPos + skipUntil(buffer, startPos, objBytes) + 4;\n            contentLength = endPos - position;\n\n            const checkPos = Math.max(endPos - CHECK_CONTENT_LENGTH, startPos);\n            const tokenStr = bytesToString(buffer.subarray(checkPos, endPos));\n\n            // Check if the current object ends with an 'endobj' operator.\n            if (endobjRegExp.test(tokenStr)) {\n              break;\n            } else {\n              // Check if an \"obj\" occurrence is actually a new object,\n              // i.e. the current object is missing the 'endobj' operator.\n              const objToken = nestedObjRegExp.exec(tokenStr);\n\n              if (objToken && objToken[1]) {\n                warn(\n                  'indexObjects: Found new \"obj\" inside of another \"obj\", ' +\n                    'caused by missing \"endobj\" -- trying to recover.'\n                );\n                contentLength -= objToken[1].length;\n                break;\n              }\n            }\n            startPos = endPos;\n          }\n          const content = buffer.subarray(position, position + contentLength);\n\n          // checking XRef stream suspect\n          // (it shall have '/XRef' and next char is not a letter)\n          var xrefTagOffset = skipUntil(content, 0, xrefBytes);\n          if (\n            xrefTagOffset < contentLength &&\n            content[xrefTagOffset + 5] < 64\n          ) {\n            xrefStms.push(position - stream.start);\n            this.xrefstms[position - stream.start] = 1; // Avoid recursion\n          }\n\n          position += contentLength;\n        } else if (\n          token.startsWith(\"trailer\") &&\n          (token.length === 7 || /\\s/.test(token[7]))\n        ) {\n          trailers.push(position);\n          position += skipUntil(buffer, position, startxrefBytes);\n        } else {\n          position += token.length + 1;\n        }\n      }\n      // reading XRef streams\n      var i, ii;\n      for (i = 0, ii = xrefStms.length; i < ii; ++i) {\n        this.startXRefQueue.push(xrefStms[i]);\n        this.readXRef(/* recoveryMode */ true);\n      }\n      // finding main trailer\n      let trailerDict;\n      for (i = 0, ii = trailers.length; i < ii; ++i) {\n        stream.pos = trailers[i];\n        const parser = new Parser({\n          lexer: new Lexer(stream),\n          xref: this,\n          allowStreams: true,\n          recoveryMode: true,\n        });\n        var obj = parser.getObj();\n        if (!isCmd(obj, \"trailer\")) {\n          continue;\n        }\n        // read the trailer dictionary\n        const dict = parser.getObj();\n        if (!isDict(dict)) {\n          continue;\n        }\n        // Do some basic validation of the trailer/root dictionary candidate.\n        let rootDict;\n        try {\n          rootDict = dict.get(\"Root\");\n        } catch (ex) {\n          if (ex instanceof MissingDataException) {\n            throw ex;\n          }\n          continue;\n        }\n        if (!isDict(rootDict) || !rootDict.has(\"Pages\")) {\n          continue;\n        }\n        // taking the first one with 'ID'\n        if (dict.has(\"ID\")) {\n          return dict;\n        }\n        // The current dictionary is a candidate, but continue searching.\n        trailerDict = dict;\n      }\n      // No trailer with 'ID', taking last one (if exists).\n      if (trailerDict) {\n        return trailerDict;\n      }\n      // nothing helps\n      throw new InvalidPDFException(\"Invalid PDF structure.\");\n    },\n\n    readXRef: function XRef_readXRef(recoveryMode) {\n      var stream = this.stream;\n      // Keep track of already parsed XRef tables, to prevent an infinite loop\n      // when parsing corrupt PDF files where e.g. the /Prev entries create a\n      // circular dependency between tables (fixes bug1393476.pdf).\n      const startXRefParsedCache = Object.create(null);\n\n      try {\n        while (this.startXRefQueue.length) {\n          var startXRef = this.startXRefQueue[0];\n\n          if (startXRefParsedCache[startXRef]) {\n            warn(\"readXRef - skipping XRef table since it was already parsed.\");\n            this.startXRefQueue.shift();\n            continue;\n          }\n          startXRefParsedCache[startXRef] = true;\n\n          stream.pos = startXRef + stream.start;\n\n          const parser = new Parser({\n            lexer: new Lexer(stream),\n            xref: this,\n            allowStreams: true,\n          });\n          var obj = parser.getObj();\n          var dict;\n\n          // Get dictionary\n          if (isCmd(obj, \"xref\")) {\n            // Parse end-of-file XRef\n            dict = this.processXRefTable(parser);\n            if (!this.topDict) {\n              this.topDict = dict;\n            }\n\n            // Recursively get other XRefs 'XRefStm', if any\n            obj = dict.get(\"XRefStm\");\n            if (Number.isInteger(obj)) {\n              var pos = obj;\n              // ignore previously loaded xref streams\n              // (possible infinite recursion)\n              if (!(pos in this.xrefstms)) {\n                this.xrefstms[pos] = 1;\n                this.startXRefQueue.push(pos);\n              }\n            }\n          } else if (Number.isInteger(obj)) {\n            // Parse in-stream XRef\n            if (\n              !Number.isInteger(parser.getObj()) ||\n              !isCmd(parser.getObj(), \"obj\") ||\n              !isStream((obj = parser.getObj()))\n            ) {\n              throw new FormatError(\"Invalid XRef stream\");\n            }\n            dict = this.processXRefStream(obj);\n            if (!this.topDict) {\n              this.topDict = dict;\n            }\n            if (!dict) {\n              throw new FormatError(\"Failed to read XRef stream\");\n            }\n          } else {\n            throw new FormatError(\"Invalid XRef stream header\");\n          }\n\n          // Recursively get previous dictionary, if any\n          obj = dict.get(\"Prev\");\n          if (Number.isInteger(obj)) {\n            this.startXRefQueue.push(obj);\n          } else if (isRef(obj)) {\n            // The spec says Prev must not be a reference, i.e. \"/Prev NNN\"\n            // This is a fallback for non-compliant PDFs, i.e. \"/Prev NNN 0 R\"\n            this.startXRefQueue.push(obj.num);\n          }\n\n          this.startXRefQueue.shift();\n        }\n\n        return this.topDict;\n      } catch (e) {\n        if (e instanceof MissingDataException) {\n          throw e;\n        }\n        info(\"(while reading XRef): \" + e);\n      }\n\n      if (recoveryMode) {\n        return undefined;\n      }\n      throw new XRefParseException();\n    },\n\n    getEntry: function XRef_getEntry(i) {\n      var xrefEntry = this.entries[i];\n      if (xrefEntry && !xrefEntry.free && xrefEntry.offset) {\n        return xrefEntry;\n      }\n      return null;\n    },\n\n    fetchIfRef: function XRef_fetchIfRef(obj, suppressEncryption) {\n      if (obj instanceof Ref) {\n        return this.fetch(obj, suppressEncryption);\n      }\n      return obj;\n    },\n\n    fetch: function XRef_fetch(ref, suppressEncryption) {\n      if (!(ref instanceof Ref)) {\n        throw new Error(\"ref object is not a reference\");\n      }\n      const num = ref.num;\n\n      // The XRef cache is populated with objects which are obtained through\n      // `Parser.getObj`, and indirectly via `Lexer.getObj`. Neither of these\n      // methods should ever return `undefined` (note the `assert` calls below).\n      const cacheEntry = this._cacheMap.get(num);\n      if (cacheEntry !== undefined) {\n        // In documents with Object Streams, it's possible that cached `Dict`s\n        // have not been assigned an `objId` yet (see e.g. issue3115r.pdf).\n        if (cacheEntry instanceof Dict && !cacheEntry.objId) {\n          cacheEntry.objId = ref.toString();\n        }\n        return cacheEntry;\n      }\n      let xrefEntry = this.getEntry(num);\n\n      if (xrefEntry === null) {\n        // The referenced entry can be free.\n        this._cacheMap.set(num, xrefEntry);\n        return xrefEntry;\n      }\n\n      if (xrefEntry.uncompressed) {\n        xrefEntry = this.fetchUncompressed(ref, xrefEntry, suppressEncryption);\n      } else {\n        xrefEntry = this.fetchCompressed(ref, xrefEntry, suppressEncryption);\n      }\n      if (isDict(xrefEntry)) {\n        xrefEntry.objId = ref.toString();\n      } else if (isStream(xrefEntry)) {\n        xrefEntry.dict.objId = ref.toString();\n      }\n      return xrefEntry;\n    },\n\n    fetchUncompressed(ref, xrefEntry, suppressEncryption = false) {\n      var gen = ref.gen;\n      var num = ref.num;\n      if (xrefEntry.gen !== gen) {\n        throw new XRefEntryException(`Inconsistent generation in XRef: ${ref}`);\n      }\n      var stream = this.stream.makeSubStream(\n        xrefEntry.offset + this.stream.start\n      );\n      const parser = new Parser({\n        lexer: new Lexer(stream),\n        xref: this,\n        allowStreams: true,\n      });\n      var obj1 = parser.getObj();\n      var obj2 = parser.getObj();\n      var obj3 = parser.getObj();\n\n      if (obj1 !== num || obj2 !== gen || !(obj3 instanceof Cmd)) {\n        throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`);\n      }\n      if (obj3.cmd !== \"obj\") {\n        // some bad PDFs use \"obj1234\" and really mean 1234\n        if (obj3.cmd.startsWith(\"obj\")) {\n          num = parseInt(obj3.cmd.substring(3), 10);\n          if (!Number.isNaN(num)) {\n            return num;\n          }\n        }\n        throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`);\n      }\n      if (this.encrypt && !suppressEncryption) {\n        xrefEntry = parser.getObj(this.encrypt.createCipherTransform(num, gen));\n      } else {\n        xrefEntry = parser.getObj();\n      }\n      if (!isStream(xrefEntry)) {\n        if (\n          typeof PDFJSDev === \"undefined\" ||\n          PDFJSDev.test(\"!PRODUCTION || TESTING\")\n        ) {\n          assert(\n            xrefEntry !== undefined,\n            'fetchUncompressed: The \"xrefEntry\" cannot be undefined.'\n          );\n        }\n        this._cacheMap.set(num, xrefEntry);\n      }\n      return xrefEntry;\n    },\n\n    fetchCompressed(ref, xrefEntry, suppressEncryption = false) {\n      const tableOffset = xrefEntry.offset;\n      const stream = this.fetch(Ref.get(tableOffset, 0));\n      if (!isStream(stream)) {\n        throw new FormatError(\"bad ObjStm stream\");\n      }\n      const first = stream.dict.get(\"First\");\n      const n = stream.dict.get(\"N\");\n      if (!Number.isInteger(first) || !Number.isInteger(n)) {\n        throw new FormatError(\n          \"invalid first and n parameters for ObjStm stream\"\n        );\n      }\n      const parser = new Parser({\n        lexer: new Lexer(stream),\n        xref: this,\n        allowStreams: true,\n      });\n      const nums = new Array(n);\n      // read the object numbers to populate cache\n      for (let i = 0; i < n; ++i) {\n        const num = parser.getObj();\n        if (!Number.isInteger(num)) {\n          throw new FormatError(\n            `invalid object number in the ObjStm stream: ${num}`\n          );\n        }\n        const offset = parser.getObj();\n        if (!Number.isInteger(offset)) {\n          throw new FormatError(\n            `invalid object offset in the ObjStm stream: ${offset}`\n          );\n        }\n        nums[i] = num;\n      }\n      const entries = new Array(n);\n      // read stream objects for cache\n      for (let i = 0; i < n; ++i) {\n        const obj = parser.getObj();\n        entries[i] = obj;\n        // The ObjStm should not contain 'endobj'. If it's present, skip over it\n        // to support corrupt PDFs (fixes issue 5241, bug 898610, bug 1037816).\n        if (parser.buf1 instanceof Cmd && parser.buf1.cmd === \"endobj\") {\n          parser.shift();\n        }\n        if (isStream(obj)) {\n          continue;\n        }\n        const num = nums[i],\n          entry = this.entries[num];\n        if (entry && entry.offset === tableOffset && entry.gen === i) {\n          if (\n            typeof PDFJSDev === \"undefined\" ||\n            PDFJSDev.test(\"!PRODUCTION || TESTING\")\n          ) {\n            assert(\n              obj !== undefined,\n              'fetchCompressed: The \"obj\" cannot be undefined.'\n            );\n          }\n          this._cacheMap.set(num, obj);\n        }\n      }\n      xrefEntry = entries[xrefEntry.gen];\n      if (xrefEntry === undefined) {\n        throw new XRefEntryException(`Bad (compressed) XRef entry: ${ref}`);\n      }\n      return xrefEntry;\n    },\n\n    async fetchIfRefAsync(obj, suppressEncryption) {\n      if (obj instanceof Ref) {\n        return this.fetchAsync(obj, suppressEncryption);\n      }\n      return obj;\n    },\n\n    async fetchAsync(ref, suppressEncryption) {\n      try {\n        return this.fetch(ref, suppressEncryption);\n      } catch (ex) {\n        if (!(ex instanceof MissingDataException)) {\n          throw ex;\n        }\n        await this.pdfManager.requestRange(ex.begin, ex.end);\n        return this.fetchAsync(ref, suppressEncryption);\n      }\n    },\n\n    getCatalogObj: function XRef_getCatalogObj() {\n      return this.root;\n    },\n  };\n\n  return XRef;\n})();\n\n/**\n * A NameTree/NumberTree is like a Dict but has some advantageous properties,\n * see the specification (7.9.6 and 7.9.7) for additional details.\n * TODO: implement all the Dict functions and make this more efficient.\n */\nclass NameOrNumberTree {\n  constructor(root, xref, type) {\n    if (this.constructor === NameOrNumberTree) {\n      unreachable(\"Cannot initialize NameOrNumberTree.\");\n    }\n    this.root = root;\n    this.xref = xref;\n    this._type = type;\n  }\n\n  getAll() {\n    const dict = Object.create(null);\n    if (!this.root) {\n      return dict;\n    }\n    const xref = this.xref;\n    // Reading Name/Number tree.\n    const processed = new RefSet();\n    processed.put(this.root);\n    const queue = [this.root];\n    while (queue.length > 0) {\n      const obj = xref.fetchIfRef(queue.shift());\n      if (!isDict(obj)) {\n        continue;\n      }\n      if (obj.has(\"Kids\")) {\n        const kids = obj.get(\"Kids\");\n        for (let i = 0, ii = kids.length; i < ii; i++) {\n          const kid = kids[i];\n          if (processed.has(kid)) {\n            throw new FormatError(`Duplicate entry in \"${this._type}\" tree.`);\n          }\n          queue.push(kid);\n          processed.put(kid);\n        }\n        continue;\n      }\n      const entries = obj.get(this._type);\n      if (Array.isArray(entries)) {\n        for (let i = 0, ii = entries.length; i < ii; i += 2) {\n          dict[xref.fetchIfRef(entries[i])] = xref.fetchIfRef(entries[i + 1]);\n        }\n      }\n    }\n    return dict;\n  }\n\n  get(key) {\n    if (!this.root) {\n      return null;\n    }\n    const xref = this.xref;\n    let kidsOrEntries = xref.fetchIfRef(this.root);\n    let loopCount = 0;\n    const MAX_LEVELS = 10;\n\n    // Perform a binary search to quickly find the entry that\n    // contains the key we are looking for.\n    while (kidsOrEntries.has(\"Kids\")) {\n      if (++loopCount > MAX_LEVELS) {\n        warn(`Search depth limit reached for \"${this._type}\" tree.`);\n        return null;\n      }\n\n      const kids = kidsOrEntries.get(\"Kids\");\n      if (!Array.isArray(kids)) {\n        return null;\n      }\n\n      let l = 0,\n        r = kids.length - 1;\n      while (l <= r) {\n        const m = (l + r) >> 1;\n        const kid = xref.fetchIfRef(kids[m]);\n        const limits = kid.get(\"Limits\");\n\n        if (key < xref.fetchIfRef(limits[0])) {\n          r = m - 1;\n        } else if (key > xref.fetchIfRef(limits[1])) {\n          l = m + 1;\n        } else {\n          kidsOrEntries = xref.fetchIfRef(kids[m]);\n          break;\n        }\n      }\n      if (l > r) {\n        return null;\n      }\n    }\n\n    // If we get here, then we have found the right entry. Now go through the\n    // entries in the dictionary until we find the key we're looking for.\n    const entries = kidsOrEntries.get(this._type);\n    if (Array.isArray(entries)) {\n      // Perform a binary search to reduce the lookup time.\n      let l = 0,\n        r = entries.length - 2;\n      while (l <= r) {\n        // Check only even indices (0, 2, 4, ...) because the\n        // odd indices contain the actual data.\n        const tmp = (l + r) >> 1,\n          m = tmp + (tmp & 1);\n        const currentKey = xref.fetchIfRef(entries[m]);\n        if (key < currentKey) {\n          r = m - 2;\n        } else if (key > currentKey) {\n          l = m + 2;\n        } else {\n          return xref.fetchIfRef(entries[m + 1]);\n        }\n      }\n\n      // Fallback to an exhaustive search, in an attempt to handle corrupt\n      // PDF files where keys are not correctly ordered (fixes issue 10272).\n      info(\n        `Falling back to an exhaustive search, for key \"${key}\", ` +\n          `in \"${this._type}\" tree.`\n      );\n      for (let m = 0, mm = entries.length; m < mm; m += 2) {\n        const currentKey = xref.fetchIfRef(entries[m]);\n        if (currentKey === key) {\n          warn(\n            `The \"${key}\" key was found at an incorrect, ` +\n              `i.e. out-of-order, position in \"${this._type}\" tree.`\n          );\n          return xref.fetchIfRef(entries[m + 1]);\n        }\n      }\n    }\n    return null;\n  }\n}\n\nclass NameTree extends NameOrNumberTree {\n  constructor(root, xref) {\n    super(root, xref, \"Names\");\n  }\n}\n\nclass NumberTree extends NameOrNumberTree {\n  constructor(root, xref) {\n    super(root, xref, \"Nums\");\n  }\n}\n\n/**\n * \"A PDF file can refer to the contents of another file by using a File\n * Specification (PDF 1.1)\", see the spec (7.11) for more details.\n * NOTE: Only embedded files are supported (as part of the attachments support)\n * TODO: support the 'URL' file system (with caching if !/V), portable\n * collections attributes and related files (/RF)\n */\nvar FileSpec = (function FileSpecClosure() {\n  // eslint-disable-next-line no-shadow\n  function FileSpec(root, xref) {\n    if (!root || !isDict(root)) {\n      return;\n    }\n    this.xref = xref;\n    this.root = root;\n    if (root.has(\"FS\")) {\n      this.fs = root.get(\"FS\");\n    }\n    this.description = root.has(\"Desc\")\n      ? stringToPDFString(root.get(\"Desc\"))\n      : \"\";\n    if (root.has(\"RF\")) {\n      warn(\"Related file specifications are not supported\");\n    }\n    this.contentAvailable = true;\n    if (!root.has(\"EF\")) {\n      this.contentAvailable = false;\n      warn(\"Non-embedded file specifications are not supported\");\n    }\n  }\n\n  function pickPlatformItem(dict) {\n    // Look for the filename in this order:\n    // UF, F, Unix, Mac, DOS\n    if (dict.has(\"UF\")) {\n      return dict.get(\"UF\");\n    } else if (dict.has(\"F\")) {\n      return dict.get(\"F\");\n    } else if (dict.has(\"Unix\")) {\n      return dict.get(\"Unix\");\n    } else if (dict.has(\"Mac\")) {\n      return dict.get(\"Mac\");\n    } else if (dict.has(\"DOS\")) {\n      return dict.get(\"DOS\");\n    }\n    return null;\n  }\n\n  FileSpec.prototype = {\n    get filename() {\n      if (!this._filename && this.root) {\n        var filename = pickPlatformItem(this.root) || \"unnamed\";\n        this._filename = stringToPDFString(filename)\n          .replace(/\\\\\\\\/g, \"\\\\\")\n          .replace(/\\\\\\//g, \"/\")\n          .replace(/\\\\/g, \"/\");\n      }\n      return this._filename;\n    },\n    get content() {\n      if (!this.contentAvailable) {\n        return null;\n      }\n      if (!this.contentRef && this.root) {\n        this.contentRef = pickPlatformItem(this.root.get(\"EF\"));\n      }\n      var content = null;\n      if (this.contentRef) {\n        var xref = this.xref;\n        var fileObj = xref.fetchIfRef(this.contentRef);\n        if (fileObj && isStream(fileObj)) {\n          content = fileObj.getBytes();\n        } else {\n          warn(\n            \"Embedded file specification points to non-existing/invalid \" +\n              \"content\"\n          );\n        }\n      } else {\n        warn(\"Embedded file specification does not have a content\");\n      }\n      return content;\n    },\n    get serializable() {\n      return {\n        filename: this.filename,\n        content: this.content,\n      };\n    },\n  };\n  return FileSpec;\n})();\n\n/**\n * A helper for loading missing data in `Dict` graphs. It traverses the graph\n * depth first and queues up any objects that have missing data. Once it has\n * has traversed as many objects that are available it attempts to bundle the\n * missing data requests and then resume from the nodes that weren't ready.\n *\n * NOTE: It provides protection from circular references by keeping track of\n * loaded references. However, you must be careful not to load any graphs\n * that have references to the catalog or other pages since that will cause the\n * entire PDF document object graph to be traversed.\n */\nconst ObjectLoader = (function () {\n  function mayHaveChildren(value) {\n    return (\n      value instanceof Ref ||\n      value instanceof Dict ||\n      Array.isArray(value) ||\n      isStream(value)\n    );\n  }\n\n  function addChildren(node, nodesToVisit) {\n    if (node instanceof Dict || isStream(node)) {\n      const dict = node instanceof Dict ? node : node.dict;\n      const dictKeys = dict.getKeys();\n      for (let i = 0, ii = dictKeys.length; i < ii; i++) {\n        const rawValue = dict.getRaw(dictKeys[i]);\n        if (mayHaveChildren(rawValue)) {\n          nodesToVisit.push(rawValue);\n        }\n      }\n    } else if (Array.isArray(node)) {\n      for (let i = 0, ii = node.length; i < ii; i++) {\n        const value = node[i];\n        if (mayHaveChildren(value)) {\n          nodesToVisit.push(value);\n        }\n      }\n    }\n  }\n\n  // eslint-disable-next-line no-shadow\n  function ObjectLoader(dict, keys, xref) {\n    this.dict = dict;\n    this.keys = keys;\n    this.xref = xref;\n    this.refSet = null;\n  }\n\n  ObjectLoader.prototype = {\n    async load() {\n      // Don't walk the graph if all the data is already loaded; note that only\n      // `ChunkedStream` instances have a `allChunksLoaded` method.\n      if (\n        !this.xref.stream.allChunksLoaded ||\n        this.xref.stream.allChunksLoaded()\n      ) {\n        return undefined;\n      }\n\n      const { keys, dict } = this;\n      this.refSet = new RefSet();\n      // Setup the initial nodes to visit.\n      const nodesToVisit = [];\n      for (let i = 0, ii = keys.length; i < ii; i++) {\n        const rawValue = dict.getRaw(keys[i]);\n        // Skip nodes that are guaranteed to be empty.\n        if (rawValue !== undefined) {\n          nodesToVisit.push(rawValue);\n        }\n      }\n      return this._walk(nodesToVisit);\n    },\n\n    async _walk(nodesToVisit) {\n      const nodesToRevisit = [];\n      const pendingRequests = [];\n      // DFS walk of the object graph.\n      while (nodesToVisit.length) {\n        let currentNode = nodesToVisit.pop();\n\n        // Only references or chunked streams can cause missing data exceptions.\n        if (currentNode instanceof Ref) {\n          // Skip nodes that have already been visited.\n          if (this.refSet.has(currentNode)) {\n            continue;\n          }\n          try {\n            this.refSet.put(currentNode);\n            currentNode = this.xref.fetch(currentNode);\n          } catch (ex) {\n            if (!(ex instanceof MissingDataException)) {\n              throw ex;\n            }\n            nodesToRevisit.push(currentNode);\n            pendingRequests.push({ begin: ex.begin, end: ex.end });\n          }\n        }\n        if (currentNode && currentNode.getBaseStreams) {\n          const baseStreams = currentNode.getBaseStreams();\n          let foundMissingData = false;\n          for (let i = 0, ii = baseStreams.length; i < ii; i++) {\n            const stream = baseStreams[i];\n            if (stream.allChunksLoaded && !stream.allChunksLoaded()) {\n              foundMissingData = true;\n              pendingRequests.push({ begin: stream.start, end: stream.end });\n            }\n          }\n          if (foundMissingData) {\n            nodesToRevisit.push(currentNode);\n          }\n        }\n\n        addChildren(currentNode, nodesToVisit);\n      }\n\n      if (pendingRequests.length) {\n        await this.xref.stream.manager.requestRanges(pendingRequests);\n\n        for (let i = 0, ii = nodesToRevisit.length; i < ii; i++) {\n          const node = nodesToRevisit[i];\n          // Remove any reference nodes from the current `RefSet` so they\n          // aren't skipped when we revist them.\n          if (node instanceof Ref) {\n            this.refSet.remove(node);\n          }\n        }\n        return this._walk(nodesToRevisit);\n      }\n      // Everything is loaded.\n      this.refSet = null;\n      return undefined;\n    },\n  };\n\n  return ObjectLoader;\n})();\n\nexport { Catalog, ObjectLoader, XRef, FileSpec };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\nimport {\n  Ascii85Stream,\n  AsciiHexStream,\n  FlateStream,\n  LZWStream,\n  NullStream,\n  PredictorStream,\n  RunLengthStream,\n} from \"./stream.js\";\nimport {\n  assert,\n  bytesToString,\n  FormatError,\n  info,\n  isNum,\n  StreamType,\n  warn,\n} from \"../shared/util.js\";\nimport {\n  Cmd,\n  Dict,\n  EOF,\n  isCmd,\n  isDict,\n  isEOF,\n  isName,\n  Name,\n  Ref,\n} from \"./primitives.js\";\nimport { isWhiteSpace, MissingDataException } from \"./core_utils.js\";\nimport { CCITTFaxStream } from \"./ccitt_stream.js\";\nimport { Jbig2Stream } from \"./jbig2_stream.js\";\nimport { JpegStream } from \"./jpeg_stream.js\";\nimport { JpxStream } from \"./jpx_stream.js\";\n\nconst MAX_LENGTH_TO_CACHE = 1000;\nconst MAX_ADLER32_LENGTH = 5552;\n\nfunction computeAdler32(bytes) {\n  const bytesLength = bytes.length;\n  if (\n    typeof PDFJSDev === \"undefined\" ||\n    PDFJSDev.test(\"!PRODUCTION || TESTING\")\n  ) {\n    assert(\n      bytesLength < MAX_ADLER32_LENGTH,\n      'computeAdler32: Unsupported \"bytes\" length.'\n    );\n  }\n  let a = 1,\n    b = 0;\n  for (let i = 0; i < bytesLength; ++i) {\n    // No modulo required in the loop if `bytesLength < 5552`.\n    a += bytes[i] & 0xff;\n    b += a;\n  }\n  return (b % 65521 << 16) | a % 65521;\n}\n\nclass Parser {\n  constructor({ lexer, xref, allowStreams = false, recoveryMode = false }) {\n    this.lexer = lexer;\n    this.xref = xref;\n    this.allowStreams = allowStreams;\n    this.recoveryMode = recoveryMode;\n\n    this.imageCache = Object.create(null);\n    this.refill();\n  }\n\n  refill() {\n    this.buf1 = this.lexer.getObj();\n    this.buf2 = this.lexer.getObj();\n  }\n\n  shift() {\n    if (this.buf2 instanceof Cmd && this.buf2.cmd === \"ID\") {\n      this.buf1 = this.buf2;\n      this.buf2 = null;\n    } else {\n      this.buf1 = this.buf2;\n      this.buf2 = this.lexer.getObj();\n    }\n  }\n\n  tryShift() {\n    try {\n      this.shift();\n      return true;\n    } catch (e) {\n      if (e instanceof MissingDataException) {\n        throw e;\n      }\n      // Upon failure, the caller should reset this.lexer.pos to a known good\n      // state and call this.shift() twice to reset the buffers.\n      return false;\n    }\n  }\n\n  getObj(cipherTransform = null) {\n    const buf1 = this.buf1;\n    this.shift();\n\n    if (buf1 instanceof Cmd) {\n      switch (buf1.cmd) {\n        case \"BI\": // inline image\n          return this.makeInlineImage(cipherTransform);\n        case \"[\": // array\n          const array = [];\n          while (!isCmd(this.buf1, \"]\") && !isEOF(this.buf1)) {\n            array.push(this.getObj(cipherTransform));\n          }\n          if (isEOF(this.buf1)) {\n            if (!this.recoveryMode) {\n              throw new FormatError(\"End of file inside array\");\n            }\n            return array;\n          }\n          this.shift();\n          return array;\n        case \"<<\": // dictionary or stream\n          const dict = new Dict(this.xref);\n          while (!isCmd(this.buf1, \">>\") && !isEOF(this.buf1)) {\n            if (!isName(this.buf1)) {\n              info(\"Malformed dictionary: key must be a name object\");\n              this.shift();\n              continue;\n            }\n\n            const key = this.buf1.name;\n            this.shift();\n            if (isEOF(this.buf1)) {\n              break;\n            }\n            dict.set(key, this.getObj(cipherTransform));\n          }\n          if (isEOF(this.buf1)) {\n            if (!this.recoveryMode) {\n              throw new FormatError(\"End of file inside dictionary\");\n            }\n            return dict;\n          }\n\n          // Stream objects are not allowed inside content streams or\n          // object streams.\n          if (isCmd(this.buf2, \"stream\")) {\n            return this.allowStreams\n              ? this.makeStream(dict, cipherTransform)\n              : dict;\n          }\n          this.shift();\n          return dict;\n        default:\n          // simple object\n          return buf1;\n      }\n    }\n\n    if (Number.isInteger(buf1)) {\n      // indirect reference or integer\n      if (Number.isInteger(this.buf1) && isCmd(this.buf2, \"R\")) {\n        const ref = Ref.get(buf1, this.buf1);\n        this.shift();\n        this.shift();\n        return ref;\n      }\n      return buf1;\n    }\n\n    if (typeof buf1 === \"string\") {\n      if (cipherTransform) {\n        return cipherTransform.decryptString(buf1);\n      }\n      return buf1;\n    }\n\n    // simple object\n    return buf1;\n  }\n\n  /**\n   * Find the end of the stream by searching for the /EI\\s/.\n   * @returns {number} The inline stream length.\n   */\n  findDefaultInlineStreamEnd(stream) {\n    const E = 0x45,\n      I = 0x49,\n      SPACE = 0x20,\n      LF = 0xa,\n      CR = 0xd;\n    const n = 10,\n      NUL = 0x0;\n    const startPos = stream.pos;\n    let state = 0,\n      ch,\n      maybeEIPos;\n    while ((ch = stream.getByte()) !== -1) {\n      if (state === 0) {\n        state = ch === E ? 1 : 0;\n      } else if (state === 1) {\n        state = ch === I ? 2 : 0;\n      } else {\n        assert(state === 2, \"findDefaultInlineStreamEnd - invalid state.\");\n        if (ch === SPACE || ch === LF || ch === CR) {\n          maybeEIPos = stream.pos;\n          // Let's check that the next `n` bytes are ASCII... just to be sure.\n          const followingBytes = stream.peekBytes(n);\n          for (let i = 0, ii = followingBytes.length; i < ii; i++) {\n            ch = followingBytes[i];\n            if (ch === NUL && followingBytes[i + 1] !== NUL) {\n              // NUL bytes are not supposed to occur *outside* of inline\n              // images, but some PDF generators violate that assumption,\n              // thus breaking the EI detection heuristics used below.\n              //\n              // However, we can't unconditionally treat NUL bytes as \"ASCII\",\n              // since that *could* result in inline images being truncated.\n              //\n              // To attempt to address this, we'll still treat any *sequence*\n              // of NUL bytes as non-ASCII, but for a *single* NUL byte we'll\n              // continue checking the `followingBytes` (fixes issue8823.pdf).\n              continue;\n            }\n            if (ch !== LF && ch !== CR && (ch < SPACE || ch > 0x7f)) {\n              // Not a LF, CR, SPACE or any visible ASCII character, i.e.\n              // it's binary stuff. Resetting the state.\n              state = 0;\n              break;\n            }\n          }\n          if (state === 2) {\n            break; // Finished!\n          }\n        } else {\n          state = 0;\n        }\n      }\n    }\n\n    if (ch === -1) {\n      warn(\n        \"findDefaultInlineStreamEnd: \" +\n          \"Reached the end of the stream without finding a valid EI marker\"\n      );\n      if (maybeEIPos) {\n        warn('... trying to recover by using the last \"EI\" occurrence.');\n        stream.skip(-(stream.pos - maybeEIPos)); // Reset the stream position.\n      }\n    }\n\n    let endOffset = 4;\n    stream.skip(-endOffset); // Set the stream position to just before \"EI\".\n    ch = stream.peekByte();\n    stream.skip(endOffset); // ... and remember to reset the stream position.\n\n    // Ensure that we don't accidentally truncate the inline image, when the\n    // data is immediately followed by the \"EI\" marker (fixes issue10388.pdf).\n    if (!isWhiteSpace(ch)) {\n      endOffset--;\n    }\n    return stream.pos - endOffset - startPos;\n  }\n\n  /**\n   * Find the EOI (end-of-image) marker 0xFFD9 of the stream.\n   * @returns {number} The inline stream length.\n   */\n  findDCTDecodeInlineStreamEnd(stream) {\n    const startPos = stream.pos;\n    let foundEOI = false,\n      b,\n      markerLength;\n    while ((b = stream.getByte()) !== -1) {\n      if (b !== 0xff) {\n        // Not a valid marker.\n        continue;\n      }\n      switch (stream.getByte()) {\n        case 0x00: // Byte stuffing.\n          // 0xFF00 appears to be a very common byte sequence in JPEG images.\n          break;\n\n        case 0xff: // Fill byte.\n          // Avoid skipping a valid marker, resetting the stream position.\n          stream.skip(-1);\n          break;\n\n        case 0xd9: // EOI\n          foundEOI = true;\n          break;\n\n        case 0xc0: // SOF0\n        case 0xc1: // SOF1\n        case 0xc2: // SOF2\n        case 0xc3: // SOF3\n        /* falls through */\n        case 0xc5: // SOF5\n        case 0xc6: // SOF6\n        case 0xc7: // SOF7\n        /* falls through */\n        case 0xc9: // SOF9\n        case 0xca: // SOF10\n        case 0xcb: // SOF11\n        /* falls through */\n        case 0xcd: // SOF13\n        case 0xce: // SOF14\n        case 0xcf: // SOF15\n        /* falls through */\n        case 0xc4: // DHT\n        case 0xcc: // DAC\n        /* falls through */\n        case 0xda: // SOS\n        case 0xdb: // DQT\n        case 0xdc: // DNL\n        case 0xdd: // DRI\n        case 0xde: // DHP\n        case 0xdf: // EXP\n        /* falls through */\n        case 0xe0: // APP0\n        case 0xe1: // APP1\n        case 0xe2: // APP2\n        case 0xe3: // APP3\n        case 0xe4: // APP4\n        case 0xe5: // APP5\n        case 0xe6: // APP6\n        case 0xe7: // APP7\n        case 0xe8: // APP8\n        case 0xe9: // APP9\n        case 0xea: // APP10\n        case 0xeb: // APP11\n        case 0xec: // APP12\n        case 0xed: // APP13\n        case 0xee: // APP14\n        case 0xef: // APP15\n        /* falls through */\n        case 0xfe: // COM\n          // The marker should be followed by the length of the segment.\n          markerLength = stream.getUint16();\n          if (markerLength > 2) {\n            // |markerLength| contains the byte length of the marker segment,\n            // including its own length (2 bytes) and excluding the marker.\n            stream.skip(markerLength - 2); // Jump to the next marker.\n          } else {\n            // The marker length is invalid, resetting the stream position.\n            stream.skip(-2);\n          }\n          break;\n      }\n      if (foundEOI) {\n        break;\n      }\n    }\n    const length = stream.pos - startPos;\n    if (b === -1) {\n      warn(\n        \"Inline DCTDecode image stream: \" +\n          \"EOI marker not found, searching for /EI/ instead.\"\n      );\n      stream.skip(-length); // Reset the stream position.\n      return this.findDefaultInlineStreamEnd(stream);\n    }\n    this.inlineStreamSkipEI(stream);\n    return length;\n  }\n\n  /**\n   * Find the EOD (end-of-data) marker '~>' (i.e. TILDE + GT) of the stream.\n   * @returns {number} The inline stream length.\n   */\n  findASCII85DecodeInlineStreamEnd(stream) {\n    const TILDE = 0x7e,\n      GT = 0x3e;\n    const startPos = stream.pos;\n    let ch;\n    while ((ch = stream.getByte()) !== -1) {\n      if (ch === TILDE) {\n        const tildePos = stream.pos;\n\n        ch = stream.peekByte();\n        // Handle corrupt PDF documents which contains whitespace \"inside\" of\n        // the EOD marker (fixes issue10614.pdf).\n        while (isWhiteSpace(ch)) {\n          stream.skip();\n          ch = stream.peekByte();\n        }\n        if (ch === GT) {\n          stream.skip();\n          break;\n        }\n        // Handle corrupt PDF documents which contains truncated EOD markers,\n        // where the '>' character is missing (fixes issue11385.pdf).\n        if (stream.pos > tildePos) {\n          const maybeEI = stream.peekBytes(2);\n          if (maybeEI[0] === /* E = */ 0x45 && maybeEI[1] === /* I = */ 0x49) {\n            break;\n          }\n        }\n      }\n    }\n    const length = stream.pos - startPos;\n    if (ch === -1) {\n      warn(\n        \"Inline ASCII85Decode image stream: \" +\n          \"EOD marker not found, searching for /EI/ instead.\"\n      );\n      stream.skip(-length); // Reset the stream position.\n      return this.findDefaultInlineStreamEnd(stream);\n    }\n    this.inlineStreamSkipEI(stream);\n    return length;\n  }\n\n  /**\n   * Find the EOD (end-of-data) marker '>' (i.e. GT) of the stream.\n   * @returns {number} The inline stream length.\n   */\n  findASCIIHexDecodeInlineStreamEnd(stream) {\n    const GT = 0x3e;\n    const startPos = stream.pos;\n    let ch;\n    while ((ch = stream.getByte()) !== -1) {\n      if (ch === GT) {\n        break;\n      }\n    }\n    const length = stream.pos - startPos;\n    if (ch === -1) {\n      warn(\n        \"Inline ASCIIHexDecode image stream: \" +\n          \"EOD marker not found, searching for /EI/ instead.\"\n      );\n      stream.skip(-length); // Reset the stream position.\n      return this.findDefaultInlineStreamEnd(stream);\n    }\n    this.inlineStreamSkipEI(stream);\n    return length;\n  }\n\n  /**\n   * Skip over the /EI/ for streams where we search for an EOD marker.\n   */\n  inlineStreamSkipEI(stream) {\n    const E = 0x45,\n      I = 0x49;\n    let state = 0,\n      ch;\n    while ((ch = stream.getByte()) !== -1) {\n      if (state === 0) {\n        state = ch === E ? 1 : 0;\n      } else if (state === 1) {\n        state = ch === I ? 2 : 0;\n      } else if (state === 2) {\n        break;\n      }\n    }\n  }\n\n  makeInlineImage(cipherTransform) {\n    const lexer = this.lexer;\n    const stream = lexer.stream;\n\n    // Parse dictionary.\n    const dict = new Dict(this.xref);\n    let dictLength;\n    while (!isCmd(this.buf1, \"ID\") && !isEOF(this.buf1)) {\n      if (!isName(this.buf1)) {\n        throw new FormatError(\"Dictionary key must be a name object\");\n      }\n      const key = this.buf1.name;\n      this.shift();\n      if (isEOF(this.buf1)) {\n        break;\n      }\n      dict.set(key, this.getObj(cipherTransform));\n    }\n    if (lexer.beginInlineImagePos !== -1) {\n      dictLength = stream.pos - lexer.beginInlineImagePos;\n    }\n\n    // Extract the name of the first (i.e. the current) image filter.\n    const filter = dict.get(\"Filter\", \"F\");\n    let filterName;\n    if (isName(filter)) {\n      filterName = filter.name;\n    } else if (Array.isArray(filter)) {\n      const filterZero = this.xref.fetchIfRef(filter[0]);\n      if (isName(filterZero)) {\n        filterName = filterZero.name;\n      }\n    }\n\n    // Parse image stream.\n    const startPos = stream.pos;\n    let length;\n    if (filterName === \"DCTDecode\" || filterName === \"DCT\") {\n      length = this.findDCTDecodeInlineStreamEnd(stream);\n    } else if (filterName === \"ASCII85Decode\" || filterName === \"A85\") {\n      length = this.findASCII85DecodeInlineStreamEnd(stream);\n    } else if (filterName === \"ASCIIHexDecode\" || filterName === \"AHx\") {\n      length = this.findASCIIHexDecodeInlineStreamEnd(stream);\n    } else {\n      length = this.findDefaultInlineStreamEnd(stream);\n    }\n    let imageStream = stream.makeSubStream(startPos, length, dict);\n\n    // Cache all images below the MAX_LENGTH_TO_CACHE threshold by their\n    // adler32 checksum.\n    let cacheKey;\n    if (length < MAX_LENGTH_TO_CACHE && dictLength < MAX_ADLER32_LENGTH) {\n      const imageBytes = imageStream.getBytes();\n      imageStream.reset();\n\n      const initialStreamPos = stream.pos;\n      // Set the stream position to the beginning of the dictionary data...\n      stream.pos = lexer.beginInlineImagePos;\n      // ... and fetch the bytes of the *entire* dictionary.\n      const dictBytes = stream.getBytes(dictLength);\n      // Finally, don't forget to reset the stream position.\n      stream.pos = initialStreamPos;\n\n      cacheKey = computeAdler32(imageBytes) + \"_\" + computeAdler32(dictBytes);\n\n      const cacheEntry = this.imageCache[cacheKey];\n      if (cacheEntry !== undefined) {\n        this.buf2 = Cmd.get(\"EI\");\n        this.shift();\n\n        cacheEntry.reset();\n        return cacheEntry;\n      }\n    }\n\n    if (cipherTransform) {\n      imageStream = cipherTransform.createStream(imageStream, length);\n    }\n\n    imageStream = this.filter(imageStream, dict, length);\n    imageStream.dict = dict;\n    if (cacheKey !== undefined) {\n      imageStream.cacheKey = `inline_${length}_${cacheKey}`;\n      this.imageCache[cacheKey] = imageStream;\n    }\n\n    this.buf2 = Cmd.get(\"EI\");\n    this.shift();\n\n    return imageStream;\n  }\n\n  _findStreamLength(startPos, signature) {\n    const { stream } = this.lexer;\n    stream.pos = startPos;\n\n    const SCAN_BLOCK_LENGTH = 2048;\n    const signatureLength = signature.length;\n\n    while (stream.pos < stream.end) {\n      const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\n      const scanLength = scanBytes.length - signatureLength;\n\n      if (scanLength <= 0) {\n        break;\n      }\n      let pos = 0;\n      while (pos < scanLength) {\n        let j = 0;\n        while (j < signatureLength && scanBytes[pos + j] === signature[j]) {\n          j++;\n        }\n        if (j >= signatureLength) {\n          // `signature` found.\n          stream.pos += pos;\n          return stream.pos - startPos;\n        }\n        pos++;\n      }\n      stream.pos += scanLength;\n    }\n    return -1;\n  }\n\n  makeStream(dict, cipherTransform) {\n    const lexer = this.lexer;\n    let stream = lexer.stream;\n\n    // Get the stream's start position.\n    lexer.skipToNextLine();\n    const startPos = stream.pos - 1;\n\n    // Get the length.\n    let length = dict.get(\"Length\");\n    if (!Number.isInteger(length)) {\n      info(`Bad length \"${length}\" in stream`);\n      length = 0;\n    }\n\n    // Skip over the stream data.\n    stream.pos = startPos + length;\n    lexer.nextChar();\n\n    // Shift '>>' and check whether the new object marks the end of the stream.\n    if (this.tryShift() && isCmd(this.buf2, \"endstream\")) {\n      this.shift(); // 'stream'\n    } else {\n      // Bad stream length, scanning for endstream command.\n      // prettier-ignore\n      const ENDSTREAM_SIGNATURE = new Uint8Array([\n        0x65, 0x6E, 0x64, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D]);\n      let actualLength = this._findStreamLength(startPos, ENDSTREAM_SIGNATURE);\n      if (actualLength < 0) {\n        // Only allow limited truncation of the endstream signature,\n        // to prevent false positives.\n        const MAX_TRUNCATION = 1;\n        // Check if the PDF generator included truncated endstream commands,\n        // such as e.g. \"endstrea\" (fixes issue10004.pdf).\n        for (let i = 1; i <= MAX_TRUNCATION; i++) {\n          const end = ENDSTREAM_SIGNATURE.length - i;\n          const TRUNCATED_SIGNATURE = ENDSTREAM_SIGNATURE.slice(0, end);\n\n          const maybeLength = this._findStreamLength(\n            startPos,\n            TRUNCATED_SIGNATURE\n          );\n          if (maybeLength >= 0) {\n            // Ensure that the byte immediately following the truncated\n            // endstream command is a space, to prevent false positives.\n            const lastByte = stream.peekBytes(end + 1)[end];\n            if (!isWhiteSpace(lastByte)) {\n              break;\n            }\n            info(\n              `Found \"${bytesToString(TRUNCATED_SIGNATURE)}\" when ` +\n                \"searching for endstream command.\"\n            );\n            actualLength = maybeLength;\n            break;\n          }\n        }\n\n        if (actualLength < 0) {\n          throw new FormatError(\"Missing endstream command.\");\n        }\n      }\n      length = actualLength;\n\n      lexer.nextChar();\n      this.shift();\n      this.shift();\n    }\n    this.shift(); // 'endstream'\n\n    stream = stream.makeSubStream(startPos, length, dict);\n    if (cipherTransform) {\n      stream = cipherTransform.createStream(stream, length);\n    }\n    stream = this.filter(stream, dict, length);\n    stream.dict = dict;\n    return stream;\n  }\n\n  filter(stream, dict, length) {\n    let filter = dict.get(\"Filter\", \"F\");\n    let params = dict.get(\"DecodeParms\", \"DP\");\n\n    if (isName(filter)) {\n      if (Array.isArray(params)) {\n        warn(\n          \"/DecodeParms should not contain an Array, \" +\n            \"when /Filter contains a Name.\"\n        );\n      }\n      return this.makeFilter(stream, filter.name, length, params);\n    }\n\n    let maybeLength = length;\n    if (Array.isArray(filter)) {\n      const filterArray = filter;\n      const paramsArray = params;\n      for (let i = 0, ii = filterArray.length; i < ii; ++i) {\n        filter = this.xref.fetchIfRef(filterArray[i]);\n        if (!isName(filter)) {\n          throw new FormatError(`Bad filter name \"${filter}\"`);\n        }\n\n        params = null;\n        if (Array.isArray(paramsArray) && i in paramsArray) {\n          params = this.xref.fetchIfRef(paramsArray[i]);\n        }\n        stream = this.makeFilter(stream, filter.name, maybeLength, params);\n        // After the first stream the `length` variable is invalid.\n        maybeLength = null;\n      }\n    }\n    return stream;\n  }\n\n  makeFilter(stream, name, maybeLength, params) {\n    // Since the 'Length' entry in the stream dictionary can be completely\n    // wrong, e.g. zero for non-empty streams, only skip parsing the stream\n    // when we can be absolutely certain that it actually is empty.\n    if (maybeLength === 0) {\n      warn(`Empty \"${name}\" stream.`);\n      return new NullStream();\n    }\n\n    try {\n      const xrefStreamStats = this.xref.stats.streamTypes;\n      if (name === \"FlateDecode\" || name === \"Fl\") {\n        xrefStreamStats[StreamType.FLATE] = true;\n        if (params) {\n          return new PredictorStream(\n            new FlateStream(stream, maybeLength),\n            maybeLength,\n            params\n          );\n        }\n        return new FlateStream(stream, maybeLength);\n      }\n      if (name === \"LZWDecode\" || name === \"LZW\") {\n        xrefStreamStats[StreamType.LZW] = true;\n        let earlyChange = 1;\n        if (params) {\n          if (params.has(\"EarlyChange\")) {\n            earlyChange = params.get(\"EarlyChange\");\n          }\n          return new PredictorStream(\n            new LZWStream(stream, maybeLength, earlyChange),\n            maybeLength,\n            params\n          );\n        }\n        return new LZWStream(stream, maybeLength, earlyChange);\n      }\n      if (name === \"DCTDecode\" || name === \"DCT\") {\n        xrefStreamStats[StreamType.DCT] = true;\n        return new JpegStream(stream, maybeLength, stream.dict, params);\n      }\n      if (name === \"JPXDecode\" || name === \"JPX\") {\n        xrefStreamStats[StreamType.JPX] = true;\n        return new JpxStream(stream, maybeLength, stream.dict, params);\n      }\n      if (name === \"ASCII85Decode\" || name === \"A85\") {\n        xrefStreamStats[StreamType.A85] = true;\n        return new Ascii85Stream(stream, maybeLength);\n      }\n      if (name === \"ASCIIHexDecode\" || name === \"AHx\") {\n        xrefStreamStats[StreamType.AHX] = true;\n        return new AsciiHexStream(stream, maybeLength);\n      }\n      if (name === \"CCITTFaxDecode\" || name === \"CCF\") {\n        xrefStreamStats[StreamType.CCF] = true;\n        return new CCITTFaxStream(stream, maybeLength, params);\n      }\n      if (name === \"RunLengthDecode\" || name === \"RL\") {\n        xrefStreamStats[StreamType.RLX] = true;\n        return new RunLengthStream(stream, maybeLength);\n      }\n      if (name === \"JBIG2Decode\") {\n        xrefStreamStats[StreamType.JBIG] = true;\n        return new Jbig2Stream(stream, maybeLength, stream.dict, params);\n      }\n      warn(`Filter \"${name}\" is not supported.`);\n      return stream;\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(`Invalid stream: \"${ex}\"`);\n      return new NullStream();\n    }\n  }\n}\n\n// A '1' in this array means the character is white space. A '1' or\n// '2' means the character ends a name or command.\n// prettier-ignore\nconst specialChars = [\n  1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, // 0x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 1x\n  1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, // 2x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, // 3x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 4x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, // 5x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 6x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, // 7x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 8x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 9x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // ax\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // bx\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // cx\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // dx\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // ex\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0  // fx\n];\n\nfunction toHexDigit(ch) {\n  if (ch >= /* '0' = */ 0x30 && ch /* '9' = */ <= 0x39) {\n    return ch & 0x0f;\n  }\n  if (\n    (ch >= /* 'A' = */ 0x41 && ch <= /* 'F' = */ 0x46) ||\n    (ch >= /* 'a' = */ 0x61 && ch <= /* 'f' = */ 0x66)\n  ) {\n    return (ch & 0x0f) + 9;\n  }\n  return -1;\n}\n\nclass Lexer {\n  constructor(stream, knownCommands = null) {\n    this.stream = stream;\n    this.nextChar();\n\n    // While lexing, we build up many strings one char at a time. Using += for\n    // this can result in lots of garbage strings. It's better to build an\n    // array of single-char strings and then join() them together at the end.\n    // And reusing a single array (i.e. |this.strBuf|) over and over for this\n    // purpose uses less memory than using a new array for each string.\n    this.strBuf = [];\n\n    // The PDFs might have \"glued\" commands with other commands, operands or\n    // literals, e.g. \"q1\". The knownCommands is a dictionary of the valid\n    // commands and their prefixes. The prefixes are built the following way:\n    // if there a command that is a prefix of the other valid command or\n    // literal (e.g. 'f' and 'false') the following prefixes must be included,\n    // 'fa', 'fal', 'fals'. The prefixes are not needed, if the command has no\n    // other commands or literals as a prefix. The knowCommands is optional.\n    this.knownCommands = knownCommands;\n\n    this._hexStringNumWarn = 0;\n    this.beginInlineImagePos = -1;\n  }\n\n  nextChar() {\n    return (this.currentChar = this.stream.getByte());\n  }\n\n  peekChar() {\n    return this.stream.peekByte();\n  }\n\n  getNumber() {\n    let ch = this.currentChar;\n    let eNotation = false;\n    let divideBy = 0; // Different from 0 if it's a floating point value.\n    let sign = 0;\n\n    if (ch === /* '-' = */ 0x2d) {\n      sign = -1;\n      ch = this.nextChar();\n\n      if (ch === /* '-' = */ 0x2d) {\n        // Ignore double negative (this is consistent with Adobe Reader).\n        ch = this.nextChar();\n      }\n    } else if (ch === /* '+' = */ 0x2b) {\n      sign = 1;\n      ch = this.nextChar();\n    }\n    if (ch === /* LF = */ 0x0a || ch === /* CR = */ 0x0d) {\n      // Ignore line-breaks (this is consistent with Adobe Reader).\n      do {\n        ch = this.nextChar();\n      } while (ch === 0x0a || ch === 0x0d);\n    }\n    if (ch === /* '.' = */ 0x2e) {\n      divideBy = 10;\n      ch = this.nextChar();\n    }\n    if (ch < /* '0' = */ 0x30 || ch > /* '9' = */ 0x39) {\n      if (\n        divideBy === 10 &&\n        sign === 0 &&\n        (isWhiteSpace(ch) || ch === /* EOF = */ -1)\n      ) {\n        // This is consistent with Adobe Reader (fixes issue9252.pdf).\n        warn(\"Lexer.getNumber - treating a single decimal point as zero.\");\n        return 0;\n      }\n      throw new FormatError(\n        `Invalid number: ${String.fromCharCode(ch)} (charCode ${ch})`\n      );\n    }\n\n    sign = sign || 1;\n    let baseValue = ch - 0x30; // '0'\n    let powerValue = 0;\n    let powerValueSign = 1;\n\n    while ((ch = this.nextChar()) >= 0) {\n      if (ch >= /* '0' = */ 0x30 && ch <= /* '9' = */ 0x39) {\n        const currentDigit = ch - 0x30; // '0'\n        if (eNotation) {\n          // We are after an 'e' or 'E'.\n          powerValue = powerValue * 10 + currentDigit;\n        } else {\n          if (divideBy !== 0) {\n            // We are after a point.\n            divideBy *= 10;\n          }\n          baseValue = baseValue * 10 + currentDigit;\n        }\n      } else if (ch === /* '.' = */ 0x2e) {\n        if (divideBy === 0) {\n          divideBy = 1;\n        } else {\n          // A number can have only one dot.\n          break;\n        }\n      } else if (ch === /* '-' = */ 0x2d) {\n        // Ignore minus signs in the middle of numbers to match\n        // Adobe's behavior.\n        warn(\"Badly formatted number: minus sign in the middle\");\n      } else if (ch === /* 'E' = */ 0x45 || ch === /* 'e' = */ 0x65) {\n        // 'E' can be either a scientific notation or the beginning of a new\n        // operator.\n        ch = this.peekChar();\n        if (ch === /* '+' = */ 0x2b || ch === /* '-' = */ 0x2d) {\n          powerValueSign = ch === 0x2d ? -1 : 1;\n          this.nextChar(); // Consume the sign character.\n        } else if (ch < /* '0' = */ 0x30 || ch > /* '9' = */ 0x39) {\n          // The 'E' must be the beginning of a new operator.\n          break;\n        }\n        eNotation = true;\n      } else {\n        // The last character doesn't belong to us.\n        break;\n      }\n    }\n\n    if (divideBy !== 0) {\n      baseValue /= divideBy;\n    }\n    if (eNotation) {\n      baseValue *= 10 ** (powerValueSign * powerValue);\n    }\n    return sign * baseValue;\n  }\n\n  getString() {\n    let numParen = 1;\n    let done = false;\n    const strBuf = this.strBuf;\n    strBuf.length = 0;\n\n    let ch = this.nextChar();\n    while (true) {\n      let charBuffered = false;\n      switch (ch | 0) {\n        case -1:\n          warn(\"Unterminated string\");\n          done = true;\n          break;\n        case 0x28: // '('\n          ++numParen;\n          strBuf.push(\"(\");\n          break;\n        case 0x29: // ')'\n          if (--numParen === 0) {\n            this.nextChar(); // consume strings ')'\n            done = true;\n          } else {\n            strBuf.push(\")\");\n          }\n          break;\n        case 0x5c: // '\\\\'\n          ch = this.nextChar();\n          switch (ch) {\n            case -1:\n              warn(\"Unterminated string\");\n              done = true;\n              break;\n            case 0x6e: // 'n'\n              strBuf.push(\"\\n\");\n              break;\n            case 0x72: // 'r'\n              strBuf.push(\"\\r\");\n              break;\n            case 0x74: // 't'\n              strBuf.push(\"\\t\");\n              break;\n            case 0x62: // 'b'\n              strBuf.push(\"\\b\");\n              break;\n            case 0x66: // 'f'\n              strBuf.push(\"\\f\");\n              break;\n            case 0x5c: // '\\'\n            case 0x28: // '('\n            case 0x29: // ')'\n              strBuf.push(String.fromCharCode(ch));\n              break;\n            case 0x30: // '0'\n            case 0x31: // '1'\n            case 0x32: // '2'\n            case 0x33: // '3'\n            case 0x34: // '4'\n            case 0x35: // '5'\n            case 0x36: // '6'\n            case 0x37: // '7'\n              let x = ch & 0x0f;\n              ch = this.nextChar();\n              charBuffered = true;\n              if (ch >= /* '0' = */ 0x30 && ch <= /* '7' = */ 0x37) {\n                x = (x << 3) + (ch & 0x0f);\n                ch = this.nextChar();\n                if (ch >= /* '0' = */ 0x30 && ch /* '7' = */ <= 0x37) {\n                  charBuffered = false;\n                  x = (x << 3) + (ch & 0x0f);\n                }\n              }\n              strBuf.push(String.fromCharCode(x));\n              break;\n            case 0x0d: // CR\n              if (this.peekChar() === /* LF = */ 0x0a) {\n                this.nextChar();\n              }\n              break;\n            case 0x0a: // LF\n              break;\n            default:\n              strBuf.push(String.fromCharCode(ch));\n              break;\n          }\n          break;\n        default:\n          strBuf.push(String.fromCharCode(ch));\n          break;\n      }\n      if (done) {\n        break;\n      }\n      if (!charBuffered) {\n        ch = this.nextChar();\n      }\n    }\n    return strBuf.join(\"\");\n  }\n\n  getName() {\n    let ch, previousCh;\n    const strBuf = this.strBuf;\n    strBuf.length = 0;\n\n    while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\n      if (ch === /* '#' = */ 0x23) {\n        ch = this.nextChar();\n        if (specialChars[ch]) {\n          warn(\n            \"Lexer_getName: \" +\n              \"NUMBER SIGN (#) should be followed by a hexadecimal number.\"\n          );\n          strBuf.push(\"#\");\n          break;\n        }\n        const x = toHexDigit(ch);\n        if (x !== -1) {\n          previousCh = ch;\n          ch = this.nextChar();\n          const x2 = toHexDigit(ch);\n          if (x2 === -1) {\n            warn(\n              `Lexer_getName: Illegal digit (${String.fromCharCode(ch)}) ` +\n                \"in hexadecimal number.\"\n            );\n            strBuf.push(\"#\", String.fromCharCode(previousCh));\n            if (specialChars[ch]) {\n              break;\n            }\n            strBuf.push(String.fromCharCode(ch));\n            continue;\n          }\n          strBuf.push(String.fromCharCode((x << 4) | x2));\n        } else {\n          strBuf.push(\"#\", String.fromCharCode(ch));\n        }\n      } else {\n        strBuf.push(String.fromCharCode(ch));\n      }\n    }\n    if (strBuf.length > 127) {\n      warn(`Name token is longer than allowed by the spec: ${strBuf.length}`);\n    }\n    return Name.get(strBuf.join(\"\"));\n  }\n\n  /**\n   * @private\n   */\n  _hexStringWarn(ch) {\n    const MAX_HEX_STRING_NUM_WARN = 5;\n\n    if (this._hexStringNumWarn++ === MAX_HEX_STRING_NUM_WARN) {\n      warn(\"getHexString - ignoring additional invalid characters.\");\n      return;\n    }\n    if (this._hexStringNumWarn > MAX_HEX_STRING_NUM_WARN) {\n      // Limit the number of warning messages printed for a `this.getHexString`\n      // invocation, since corrupt PDF documents may otherwise spam the console\n      // enough to affect general performance negatively.\n      return;\n    }\n    warn(`getHexString - ignoring invalid character: ${ch}`);\n  }\n\n  getHexString() {\n    const strBuf = this.strBuf;\n    strBuf.length = 0;\n    let ch = this.currentChar;\n    let isFirstHex = true;\n    let firstDigit, secondDigit;\n    this._hexStringNumWarn = 0;\n\n    while (true) {\n      if (ch < 0) {\n        warn(\"Unterminated hex string\");\n        break;\n      } else if (ch === /* '>' = */ 0x3e) {\n        this.nextChar();\n        break;\n      } else if (specialChars[ch] === 1) {\n        ch = this.nextChar();\n        continue;\n      } else {\n        if (isFirstHex) {\n          firstDigit = toHexDigit(ch);\n          if (firstDigit === -1) {\n            this._hexStringWarn(ch);\n            ch = this.nextChar();\n            continue;\n          }\n        } else {\n          secondDigit = toHexDigit(ch);\n          if (secondDigit === -1) {\n            this._hexStringWarn(ch);\n            ch = this.nextChar();\n            continue;\n          }\n          strBuf.push(String.fromCharCode((firstDigit << 4) | secondDigit));\n        }\n        isFirstHex = !isFirstHex;\n        ch = this.nextChar();\n      }\n    }\n    return strBuf.join(\"\");\n  }\n\n  getObj() {\n    // Skip whitespace and comments.\n    let comment = false;\n    let ch = this.currentChar;\n    while (true) {\n      if (ch < 0) {\n        return EOF;\n      }\n      if (comment) {\n        if (ch === /* LF = */ 0x0a || ch === /* CR = */ 0x0d) {\n          comment = false;\n        }\n      } else if (ch === /* '%' = */ 0x25) {\n        comment = true;\n      } else if (specialChars[ch] !== 1) {\n        break;\n      }\n      ch = this.nextChar();\n    }\n\n    // Start reading a token.\n    switch (ch | 0) {\n      case 0x30: // '0'\n      case 0x31: // '1'\n      case 0x32: // '2'\n      case 0x33: // '3'\n      case 0x34: // '4'\n      case 0x35: // '5'\n      case 0x36: // '6'\n      case 0x37: // '7'\n      case 0x38: // '8'\n      case 0x39: // '9'\n      case 0x2b: // '+'\n      case 0x2d: // '-'\n      case 0x2e: // '.'\n        return this.getNumber();\n      case 0x28: // '('\n        return this.getString();\n      case 0x2f: // '/'\n        return this.getName();\n      // array punctuation\n      case 0x5b: // '['\n        this.nextChar();\n        return Cmd.get(\"[\");\n      case 0x5d: // ']'\n        this.nextChar();\n        return Cmd.get(\"]\");\n      // hex string or dict punctuation\n      case 0x3c: // '<'\n        ch = this.nextChar();\n        if (ch === 0x3c) {\n          // dict punctuation\n          this.nextChar();\n          return Cmd.get(\"<<\");\n        }\n        return this.getHexString();\n      // dict punctuation\n      case 0x3e: // '>'\n        ch = this.nextChar();\n        if (ch === 0x3e) {\n          this.nextChar();\n          return Cmd.get(\">>\");\n        }\n        return Cmd.get(\">\");\n      case 0x7b: // '{'\n        this.nextChar();\n        return Cmd.get(\"{\");\n      case 0x7d: // '}'\n        this.nextChar();\n        return Cmd.get(\"}\");\n      case 0x29: // ')'\n        // Consume the current character in order to avoid permanently hanging\n        // the worker thread if `Lexer.getObject` is called from within a loop\n        // containing try-catch statements, since we would otherwise attempt\n        // to parse the *same* character over and over (fixes issue8061.pdf).\n        this.nextChar();\n        throw new FormatError(`Illegal character: ${ch}`);\n    }\n\n    // Start reading a command.\n    let str = String.fromCharCode(ch);\n    const knownCommands = this.knownCommands;\n    let knownCommandFound = knownCommands && knownCommands[str] !== undefined;\n    while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\n      // Stop if a known command is found and next character does not make\n      // the string a command.\n      const possibleCommand = str + String.fromCharCode(ch);\n      if (knownCommandFound && knownCommands[possibleCommand] === undefined) {\n        break;\n      }\n      if (str.length === 128) {\n        throw new FormatError(`Command token too long: ${str.length}`);\n      }\n      str = possibleCommand;\n      knownCommandFound = knownCommands && knownCommands[str] !== undefined;\n    }\n    if (str === \"true\") {\n      return true;\n    }\n    if (str === \"false\") {\n      return false;\n    }\n    if (str === \"null\") {\n      return null;\n    }\n\n    if (str === \"BI\") {\n      // Keep track of the current stream position, since it's needed in order\n      // to correctly cache inline images; see `Parser.makeInlineImage`.\n      this.beginInlineImagePos = this.stream.pos;\n    }\n\n    return Cmd.get(str);\n  }\n\n  skipToNextLine() {\n    let ch = this.currentChar;\n    while (ch >= 0) {\n      if (ch === /* CR = */ 0x0d) {\n        ch = this.nextChar();\n        if (ch === /* LF = */ 0x0a) {\n          this.nextChar();\n        }\n        break;\n      } else if (ch === /* LF = */ 0x0a) {\n        this.nextChar();\n        break;\n      }\n      ch = this.nextChar();\n    }\n  }\n}\n\nclass Linearization {\n  static create(stream) {\n    function getInt(linDict, name, allowZeroValue = false) {\n      const obj = linDict.get(name);\n      if (Number.isInteger(obj) && (allowZeroValue ? obj >= 0 : obj > 0)) {\n        return obj;\n      }\n      throw new Error(\n        `The \"${name}\" parameter in the linearization ` +\n          \"dictionary is invalid.\"\n      );\n    }\n\n    function getHints(linDict) {\n      const hints = linDict.get(\"H\");\n      let hintsLength;\n\n      if (\n        Array.isArray(hints) &&\n        ((hintsLength = hints.length) === 2 || hintsLength === 4)\n      ) {\n        for (let index = 0; index < hintsLength; index++) {\n          const hint = hints[index];\n          if (!(Number.isInteger(hint) && hint > 0)) {\n            throw new Error(\n              `Hint (${index}) in the linearization dictionary is invalid.`\n            );\n          }\n        }\n        return hints;\n      }\n      throw new Error(\"Hint array in the linearization dictionary is invalid.\");\n    }\n\n    const parser = new Parser({\n      lexer: new Lexer(stream),\n      xref: null,\n    });\n    const obj1 = parser.getObj();\n    const obj2 = parser.getObj();\n    const obj3 = parser.getObj();\n    const linDict = parser.getObj();\n    let obj, length;\n    if (\n      !(\n        Number.isInteger(obj1) &&\n        Number.isInteger(obj2) &&\n        isCmd(obj3, \"obj\") &&\n        isDict(linDict) &&\n        isNum((obj = linDict.get(\"Linearized\"))) &&\n        obj > 0\n      )\n    ) {\n      return null; // No valid linearization dictionary found.\n    } else if ((length = getInt(linDict, \"L\")) !== stream.length) {\n      throw new Error(\n        'The \"L\" parameter in the linearization dictionary ' +\n          \"does not equal the stream length.\"\n      );\n    }\n    return {\n      length,\n      hints: getHints(linDict),\n      objectNumberFirst: getInt(linDict, \"O\"),\n      endFirst: getInt(linDict, \"E\"),\n      numPages: getInt(linDict, \"N\"),\n      mainXRefEntriesOffset: getInt(linDict, \"T\"),\n      pageFirst: linDict.has(\"P\")\n        ? getInt(linDict, \"P\", /* allowZeroValue = */ true)\n        : 0,\n    };\n  }\n}\n\nexport { Lexer, Linearization, Parser };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* Copyright 1996-2003 Glyph & Cog, LLC\n *\n * The flate stream implementation contained in this file is a JavaScript port\n * of XPDF's implementation, made available under the Apache 2.0 open source\n * license.\n */\n\nimport { FormatError, stringToBytes, unreachable } from \"../shared/util.js\";\nimport { isDict } from \"./primitives.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\n\nvar Stream = (function StreamClosure() {\n  // eslint-disable-next-line no-shadow\n  function Stream(arrayBuffer, start, length, dict) {\n    this.bytes =\n      arrayBuffer instanceof Uint8Array\n        ? arrayBuffer\n        : new Uint8Array(arrayBuffer);\n    this.start = start || 0;\n    this.pos = this.start;\n    this.end = start + length || this.bytes.length;\n    this.dict = dict;\n  }\n\n  // required methods for a stream. if a particular stream does not\n  // implement these, an error should be thrown\n  Stream.prototype = {\n    get length() {\n      return this.end - this.start;\n    },\n    get isEmpty() {\n      return this.length === 0;\n    },\n    getByte: function Stream_getByte() {\n      if (this.pos >= this.end) {\n        return -1;\n      }\n      return this.bytes[this.pos++];\n    },\n    getUint16: function Stream_getUint16() {\n      var b0 = this.getByte();\n      var b1 = this.getByte();\n      if (b0 === -1 || b1 === -1) {\n        return -1;\n      }\n      return (b0 << 8) + b1;\n    },\n    getInt32: function Stream_getInt32() {\n      var b0 = this.getByte();\n      var b1 = this.getByte();\n      var b2 = this.getByte();\n      var b3 = this.getByte();\n      return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n    },\n    // Returns subarray of original buffer, should only be read.\n    getBytes(length, forceClamped = false) {\n      var bytes = this.bytes;\n      var pos = this.pos;\n      var strEnd = this.end;\n\n      if (!length) {\n        const subarray = bytes.subarray(pos, strEnd);\n        // `this.bytes` is always a `Uint8Array` here.\n        return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n      }\n      var end = pos + length;\n      if (end > strEnd) {\n        end = strEnd;\n      }\n      this.pos = end;\n      const subarray = bytes.subarray(pos, end);\n      // `this.bytes` is always a `Uint8Array` here.\n      return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n    },\n    peekByte: function Stream_peekByte() {\n      var peekedByte = this.getByte();\n      if (peekedByte !== -1) {\n        this.pos--;\n      }\n      return peekedByte;\n    },\n    peekBytes(length, forceClamped = false) {\n      var bytes = this.getBytes(length, forceClamped);\n      this.pos -= bytes.length;\n      return bytes;\n    },\n\n    getByteRange(begin, end) {\n      if (begin < 0) {\n        begin = 0;\n      }\n      if (end > this.end) {\n        end = this.end;\n      }\n      return this.bytes.subarray(begin, end);\n    },\n\n    skip: function Stream_skip(n) {\n      if (!n) {\n        n = 1;\n      }\n      this.pos += n;\n    },\n    reset: function Stream_reset() {\n      this.pos = this.start;\n    },\n    moveStart: function Stream_moveStart() {\n      this.start = this.pos;\n    },\n    makeSubStream: function Stream_makeSubStream(start, length, dict) {\n      return new Stream(this.bytes.buffer, start, length, dict);\n    },\n  };\n\n  return Stream;\n})();\n\nvar StringStream = (function StringStreamClosure() {\n  // eslint-disable-next-line no-shadow\n  function StringStream(str) {\n    const bytes = stringToBytes(str);\n    Stream.call(this, bytes);\n  }\n\n  StringStream.prototype = Stream.prototype;\n\n  return StringStream;\n})();\n\n// super class for the decoding streams\nvar DecodeStream = (function DecodeStreamClosure() {\n  // Lots of DecodeStreams are created whose buffers are never used.  For these\n  // we share a single empty buffer. This is (a) space-efficient and (b) avoids\n  // having special cases that would be required if we used |null| for an empty\n  // buffer.\n  var emptyBuffer = new Uint8Array(0);\n\n  // eslint-disable-next-line no-shadow\n  function DecodeStream(maybeMinBufferLength) {\n    this._rawMinBufferLength = maybeMinBufferLength || 0;\n\n    this.pos = 0;\n    this.bufferLength = 0;\n    this.eof = false;\n    this.buffer = emptyBuffer;\n    this.minBufferLength = 512;\n    if (maybeMinBufferLength) {\n      // Compute the first power of two that is as big as maybeMinBufferLength.\n      while (this.minBufferLength < maybeMinBufferLength) {\n        this.minBufferLength *= 2;\n      }\n    }\n  }\n\n  DecodeStream.prototype = {\n    get isEmpty() {\n      while (!this.eof && this.bufferLength === 0) {\n        this.readBlock();\n      }\n      return this.bufferLength === 0;\n    },\n    ensureBuffer: function DecodeStream_ensureBuffer(requested) {\n      var buffer = this.buffer;\n      if (requested <= buffer.byteLength) {\n        return buffer;\n      }\n      var size = this.minBufferLength;\n      while (size < requested) {\n        size *= 2;\n      }\n      var buffer2 = new Uint8Array(size);\n      buffer2.set(buffer);\n      return (this.buffer = buffer2);\n    },\n    getByte: function DecodeStream_getByte() {\n      var pos = this.pos;\n      while (this.bufferLength <= pos) {\n        if (this.eof) {\n          return -1;\n        }\n        this.readBlock();\n      }\n      return this.buffer[this.pos++];\n    },\n    getUint16: function DecodeStream_getUint16() {\n      var b0 = this.getByte();\n      var b1 = this.getByte();\n      if (b0 === -1 || b1 === -1) {\n        return -1;\n      }\n      return (b0 << 8) + b1;\n    },\n    getInt32: function DecodeStream_getInt32() {\n      var b0 = this.getByte();\n      var b1 = this.getByte();\n      var b2 = this.getByte();\n      var b3 = this.getByte();\n      return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n    },\n    getBytes(length, forceClamped = false) {\n      var end,\n        pos = this.pos;\n\n      if (length) {\n        this.ensureBuffer(pos + length);\n        end = pos + length;\n\n        while (!this.eof && this.bufferLength < end) {\n          this.readBlock();\n        }\n        var bufEnd = this.bufferLength;\n        if (end > bufEnd) {\n          end = bufEnd;\n        }\n      } else {\n        while (!this.eof) {\n          this.readBlock();\n        }\n        end = this.bufferLength;\n      }\n\n      this.pos = end;\n      const subarray = this.buffer.subarray(pos, end);\n      // `this.buffer` is either a `Uint8Array` or `Uint8ClampedArray` here.\n      return forceClamped && !(subarray instanceof Uint8ClampedArray)\n        ? new Uint8ClampedArray(subarray)\n        : subarray;\n    },\n    peekByte: function DecodeStream_peekByte() {\n      var peekedByte = this.getByte();\n      if (peekedByte !== -1) {\n        this.pos--;\n      }\n      return peekedByte;\n    },\n    peekBytes(length, forceClamped = false) {\n      var bytes = this.getBytes(length, forceClamped);\n      this.pos -= bytes.length;\n      return bytes;\n    },\n    makeSubStream: function DecodeStream_makeSubStream(start, length, dict) {\n      var end = start + length;\n      while (this.bufferLength <= end && !this.eof) {\n        this.readBlock();\n      }\n      return new Stream(this.buffer, start, length, dict);\n    },\n\n    getByteRange(begin, end) {\n      unreachable(\"Should not call DecodeStream.getByteRange\");\n    },\n\n    skip: function DecodeStream_skip(n) {\n      if (!n) {\n        n = 1;\n      }\n      this.pos += n;\n    },\n    reset: function DecodeStream_reset() {\n      this.pos = 0;\n    },\n    getBaseStreams: function DecodeStream_getBaseStreams() {\n      if (this.str && this.str.getBaseStreams) {\n        return this.str.getBaseStreams();\n      }\n      return [];\n    },\n  };\n\n  return DecodeStream;\n})();\n\nvar StreamsSequenceStream = (function StreamsSequenceStreamClosure() {\n  // eslint-disable-next-line no-shadow\n  function StreamsSequenceStream(streams) {\n    this.streams = streams;\n\n    let maybeLength = 0;\n    for (let i = 0, ii = streams.length; i < ii; i++) {\n      const stream = streams[i];\n      if (stream instanceof DecodeStream) {\n        maybeLength += stream._rawMinBufferLength;\n      } else {\n        maybeLength += stream.length;\n      }\n    }\n    DecodeStream.call(this, maybeLength);\n  }\n\n  StreamsSequenceStream.prototype = Object.create(DecodeStream.prototype);\n\n  StreamsSequenceStream.prototype.readBlock = function streamSequenceStreamReadBlock() {\n    var streams = this.streams;\n    if (streams.length === 0) {\n      this.eof = true;\n      return;\n    }\n    var stream = streams.shift();\n    var chunk = stream.getBytes();\n    var bufferLength = this.bufferLength;\n    var newLength = bufferLength + chunk.length;\n    var buffer = this.ensureBuffer(newLength);\n    buffer.set(chunk, bufferLength);\n    this.bufferLength = newLength;\n  };\n\n  StreamsSequenceStream.prototype.getBaseStreams = function StreamsSequenceStream_getBaseStreams() {\n    var baseStreams = [];\n    for (var i = 0, ii = this.streams.length; i < ii; i++) {\n      var stream = this.streams[i];\n      if (stream.getBaseStreams) {\n        baseStreams.push(...stream.getBaseStreams());\n      }\n    }\n    return baseStreams;\n  };\n\n  return StreamsSequenceStream;\n})();\n\nvar FlateStream = (function FlateStreamClosure() {\n  // prettier-ignore\n  var codeLenCodeMap = new Int32Array([\n    16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15\n  ]);\n\n  // prettier-ignore\n  var lengthDecode = new Int32Array([\n    0x00003, 0x00004, 0x00005, 0x00006, 0x00007, 0x00008, 0x00009, 0x0000a,\n    0x1000b, 0x1000d, 0x1000f, 0x10011, 0x20013, 0x20017, 0x2001b, 0x2001f,\n    0x30023, 0x3002b, 0x30033, 0x3003b, 0x40043, 0x40053, 0x40063, 0x40073,\n    0x50083, 0x500a3, 0x500c3, 0x500e3, 0x00102, 0x00102, 0x00102\n  ]);\n\n  // prettier-ignore\n  var distDecode = new Int32Array([\n    0x00001, 0x00002, 0x00003, 0x00004, 0x10005, 0x10007, 0x20009, 0x2000d,\n    0x30011, 0x30019, 0x40021, 0x40031, 0x50041, 0x50061, 0x60081, 0x600c1,\n    0x70101, 0x70181, 0x80201, 0x80301, 0x90401, 0x90601, 0xa0801, 0xa0c01,\n    0xb1001, 0xb1801, 0xc2001, 0xc3001, 0xd4001, 0xd6001\n  ]);\n\n  // prettier-ignore\n  var fixedLitCodeTab = [new Int32Array([\n    0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c0,\n    0x70108, 0x80060, 0x80020, 0x900a0, 0x80000, 0x80080, 0x80040, 0x900e0,\n    0x70104, 0x80058, 0x80018, 0x90090, 0x70114, 0x80078, 0x80038, 0x900d0,\n    0x7010c, 0x80068, 0x80028, 0x900b0, 0x80008, 0x80088, 0x80048, 0x900f0,\n    0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c8,\n    0x7010a, 0x80064, 0x80024, 0x900a8, 0x80004, 0x80084, 0x80044, 0x900e8,\n    0x70106, 0x8005c, 0x8001c, 0x90098, 0x70116, 0x8007c, 0x8003c, 0x900d8,\n    0x7010e, 0x8006c, 0x8002c, 0x900b8, 0x8000c, 0x8008c, 0x8004c, 0x900f8,\n    0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c4,\n    0x70109, 0x80062, 0x80022, 0x900a4, 0x80002, 0x80082, 0x80042, 0x900e4,\n    0x70105, 0x8005a, 0x8001a, 0x90094, 0x70115, 0x8007a, 0x8003a, 0x900d4,\n    0x7010d, 0x8006a, 0x8002a, 0x900b4, 0x8000a, 0x8008a, 0x8004a, 0x900f4,\n    0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cc,\n    0x7010b, 0x80066, 0x80026, 0x900ac, 0x80006, 0x80086, 0x80046, 0x900ec,\n    0x70107, 0x8005e, 0x8001e, 0x9009c, 0x70117, 0x8007e, 0x8003e, 0x900dc,\n    0x7010f, 0x8006e, 0x8002e, 0x900bc, 0x8000e, 0x8008e, 0x8004e, 0x900fc,\n    0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c2,\n    0x70108, 0x80061, 0x80021, 0x900a2, 0x80001, 0x80081, 0x80041, 0x900e2,\n    0x70104, 0x80059, 0x80019, 0x90092, 0x70114, 0x80079, 0x80039, 0x900d2,\n    0x7010c, 0x80069, 0x80029, 0x900b2, 0x80009, 0x80089, 0x80049, 0x900f2,\n    0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900ca,\n    0x7010a, 0x80065, 0x80025, 0x900aa, 0x80005, 0x80085, 0x80045, 0x900ea,\n    0x70106, 0x8005d, 0x8001d, 0x9009a, 0x70116, 0x8007d, 0x8003d, 0x900da,\n    0x7010e, 0x8006d, 0x8002d, 0x900ba, 0x8000d, 0x8008d, 0x8004d, 0x900fa,\n    0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c6,\n    0x70109, 0x80063, 0x80023, 0x900a6, 0x80003, 0x80083, 0x80043, 0x900e6,\n    0x70105, 0x8005b, 0x8001b, 0x90096, 0x70115, 0x8007b, 0x8003b, 0x900d6,\n    0x7010d, 0x8006b, 0x8002b, 0x900b6, 0x8000b, 0x8008b, 0x8004b, 0x900f6,\n    0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900ce,\n    0x7010b, 0x80067, 0x80027, 0x900ae, 0x80007, 0x80087, 0x80047, 0x900ee,\n    0x70107, 0x8005f, 0x8001f, 0x9009e, 0x70117, 0x8007f, 0x8003f, 0x900de,\n    0x7010f, 0x8006f, 0x8002f, 0x900be, 0x8000f, 0x8008f, 0x8004f, 0x900fe,\n    0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c1,\n    0x70108, 0x80060, 0x80020, 0x900a1, 0x80000, 0x80080, 0x80040, 0x900e1,\n    0x70104, 0x80058, 0x80018, 0x90091, 0x70114, 0x80078, 0x80038, 0x900d1,\n    0x7010c, 0x80068, 0x80028, 0x900b1, 0x80008, 0x80088, 0x80048, 0x900f1,\n    0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c9,\n    0x7010a, 0x80064, 0x80024, 0x900a9, 0x80004, 0x80084, 0x80044, 0x900e9,\n    0x70106, 0x8005c, 0x8001c, 0x90099, 0x70116, 0x8007c, 0x8003c, 0x900d9,\n    0x7010e, 0x8006c, 0x8002c, 0x900b9, 0x8000c, 0x8008c, 0x8004c, 0x900f9,\n    0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c5,\n    0x70109, 0x80062, 0x80022, 0x900a5, 0x80002, 0x80082, 0x80042, 0x900e5,\n    0x70105, 0x8005a, 0x8001a, 0x90095, 0x70115, 0x8007a, 0x8003a, 0x900d5,\n    0x7010d, 0x8006a, 0x8002a, 0x900b5, 0x8000a, 0x8008a, 0x8004a, 0x900f5,\n    0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cd,\n    0x7010b, 0x80066, 0x80026, 0x900ad, 0x80006, 0x80086, 0x80046, 0x900ed,\n    0x70107, 0x8005e, 0x8001e, 0x9009d, 0x70117, 0x8007e, 0x8003e, 0x900dd,\n    0x7010f, 0x8006e, 0x8002e, 0x900bd, 0x8000e, 0x8008e, 0x8004e, 0x900fd,\n    0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c3,\n    0x70108, 0x80061, 0x80021, 0x900a3, 0x80001, 0x80081, 0x80041, 0x900e3,\n    0x70104, 0x80059, 0x80019, 0x90093, 0x70114, 0x80079, 0x80039, 0x900d3,\n    0x7010c, 0x80069, 0x80029, 0x900b3, 0x80009, 0x80089, 0x80049, 0x900f3,\n    0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900cb,\n    0x7010a, 0x80065, 0x80025, 0x900ab, 0x80005, 0x80085, 0x80045, 0x900eb,\n    0x70106, 0x8005d, 0x8001d, 0x9009b, 0x70116, 0x8007d, 0x8003d, 0x900db,\n    0x7010e, 0x8006d, 0x8002d, 0x900bb, 0x8000d, 0x8008d, 0x8004d, 0x900fb,\n    0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c7,\n    0x70109, 0x80063, 0x80023, 0x900a7, 0x80003, 0x80083, 0x80043, 0x900e7,\n    0x70105, 0x8005b, 0x8001b, 0x90097, 0x70115, 0x8007b, 0x8003b, 0x900d7,\n    0x7010d, 0x8006b, 0x8002b, 0x900b7, 0x8000b, 0x8008b, 0x8004b, 0x900f7,\n    0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900cf,\n    0x7010b, 0x80067, 0x80027, 0x900af, 0x80007, 0x80087, 0x80047, 0x900ef,\n    0x70107, 0x8005f, 0x8001f, 0x9009f, 0x70117, 0x8007f, 0x8003f, 0x900df,\n    0x7010f, 0x8006f, 0x8002f, 0x900bf, 0x8000f, 0x8008f, 0x8004f, 0x900ff\n  ]), 9];\n\n  // prettier-ignore\n  var fixedDistCodeTab = [new Int32Array([\n    0x50000, 0x50010, 0x50008, 0x50018, 0x50004, 0x50014, 0x5000c, 0x5001c,\n    0x50002, 0x50012, 0x5000a, 0x5001a, 0x50006, 0x50016, 0x5000e, 0x00000,\n    0x50001, 0x50011, 0x50009, 0x50019, 0x50005, 0x50015, 0x5000d, 0x5001d,\n    0x50003, 0x50013, 0x5000b, 0x5001b, 0x50007, 0x50017, 0x5000f, 0x00000\n  ]), 5];\n\n  // eslint-disable-next-line no-shadow\n  function FlateStream(str, maybeLength) {\n    this.str = str;\n    this.dict = str.dict;\n\n    var cmf = str.getByte();\n    var flg = str.getByte();\n    if (cmf === -1 || flg === -1) {\n      throw new FormatError(`Invalid header in flate stream: ${cmf}, ${flg}`);\n    }\n    if ((cmf & 0x0f) !== 0x08) {\n      throw new FormatError(\n        `Unknown compression method in flate stream: ${cmf}, ${flg}`\n      );\n    }\n    if (((cmf << 8) + flg) % 31 !== 0) {\n      throw new FormatError(`Bad FCHECK in flate stream: ${cmf}, ${flg}`);\n    }\n    if (flg & 0x20) {\n      throw new FormatError(`FDICT bit set in flate stream: ${cmf}, ${flg}`);\n    }\n\n    this.codeSize = 0;\n    this.codeBuf = 0;\n\n    DecodeStream.call(this, maybeLength);\n  }\n\n  FlateStream.prototype = Object.create(DecodeStream.prototype);\n\n  FlateStream.prototype.getBits = function FlateStream_getBits(bits) {\n    var str = this.str;\n    var codeSize = this.codeSize;\n    var codeBuf = this.codeBuf;\n\n    var b;\n    while (codeSize < bits) {\n      if ((b = str.getByte()) === -1) {\n        throw new FormatError(\"Bad encoding in flate stream\");\n      }\n      codeBuf |= b << codeSize;\n      codeSize += 8;\n    }\n    b = codeBuf & ((1 << bits) - 1);\n    this.codeBuf = codeBuf >> bits;\n    this.codeSize = codeSize -= bits;\n\n    return b;\n  };\n\n  FlateStream.prototype.getCode = function FlateStream_getCode(table) {\n    var str = this.str;\n    var codes = table[0];\n    var maxLen = table[1];\n    var codeSize = this.codeSize;\n    var codeBuf = this.codeBuf;\n\n    var b;\n    while (codeSize < maxLen) {\n      if ((b = str.getByte()) === -1) {\n        // premature end of stream. code might however still be valid.\n        // codeSize < codeLen check below guards against incomplete codeVal.\n        break;\n      }\n      codeBuf |= b << codeSize;\n      codeSize += 8;\n    }\n    var code = codes[codeBuf & ((1 << maxLen) - 1)];\n    var codeLen = code >> 16;\n    var codeVal = code & 0xffff;\n    if (codeLen < 1 || codeSize < codeLen) {\n      throw new FormatError(\"Bad encoding in flate stream\");\n    }\n    this.codeBuf = codeBuf >> codeLen;\n    this.codeSize = codeSize - codeLen;\n    return codeVal;\n  };\n\n  FlateStream.prototype.generateHuffmanTable = function flateStreamGenerateHuffmanTable(\n    lengths\n  ) {\n    var n = lengths.length;\n\n    // find max code length\n    var maxLen = 0;\n    var i;\n    for (i = 0; i < n; ++i) {\n      if (lengths[i] > maxLen) {\n        maxLen = lengths[i];\n      }\n    }\n\n    // build the table\n    var size = 1 << maxLen;\n    var codes = new Int32Array(size);\n    for (\n      var len = 1, code = 0, skip = 2;\n      len <= maxLen;\n      ++len, code <<= 1, skip <<= 1\n    ) {\n      for (var val = 0; val < n; ++val) {\n        if (lengths[val] === len) {\n          // bit-reverse the code\n          var code2 = 0;\n          var t = code;\n          for (i = 0; i < len; ++i) {\n            code2 = (code2 << 1) | (t & 1);\n            t >>= 1;\n          }\n\n          // fill the table entries\n          for (i = code2; i < size; i += skip) {\n            codes[i] = (len << 16) | val;\n          }\n          ++code;\n        }\n      }\n    }\n\n    return [codes, maxLen];\n  };\n\n  FlateStream.prototype.readBlock = function FlateStream_readBlock() {\n    var buffer, len;\n    var str = this.str;\n    // read block header\n    var hdr = this.getBits(3);\n    if (hdr & 1) {\n      this.eof = true;\n    }\n    hdr >>= 1;\n\n    if (hdr === 0) {\n      // uncompressed block\n      var b;\n\n      if ((b = str.getByte()) === -1) {\n        throw new FormatError(\"Bad block header in flate stream\");\n      }\n      var blockLen = b;\n      if ((b = str.getByte()) === -1) {\n        throw new FormatError(\"Bad block header in flate stream\");\n      }\n      blockLen |= b << 8;\n      if ((b = str.getByte()) === -1) {\n        throw new FormatError(\"Bad block header in flate stream\");\n      }\n      var check = b;\n      if ((b = str.getByte()) === -1) {\n        throw new FormatError(\"Bad block header in flate stream\");\n      }\n      check |= b << 8;\n      if (check !== (~blockLen & 0xffff) && (blockLen !== 0 || check !== 0)) {\n        // Ignoring error for bad \"empty\" block (see issue 1277)\n        throw new FormatError(\"Bad uncompressed block length in flate stream\");\n      }\n\n      this.codeBuf = 0;\n      this.codeSize = 0;\n\n      const bufferLength = this.bufferLength,\n        end = bufferLength + blockLen;\n      buffer = this.ensureBuffer(end);\n      this.bufferLength = end;\n\n      if (blockLen === 0) {\n        if (str.peekByte() === -1) {\n          this.eof = true;\n        }\n      } else {\n        const block = str.getBytes(blockLen);\n        buffer.set(block, bufferLength);\n        if (block.length < blockLen) {\n          this.eof = true;\n        }\n      }\n      return;\n    }\n\n    var litCodeTable;\n    var distCodeTable;\n    if (hdr === 1) {\n      // compressed block, fixed codes\n      litCodeTable = fixedLitCodeTab;\n      distCodeTable = fixedDistCodeTab;\n    } else if (hdr === 2) {\n      // compressed block, dynamic codes\n      var numLitCodes = this.getBits(5) + 257;\n      var numDistCodes = this.getBits(5) + 1;\n      var numCodeLenCodes = this.getBits(4) + 4;\n\n      // build the code lengths code table\n      var codeLenCodeLengths = new Uint8Array(codeLenCodeMap.length);\n\n      var i;\n      for (i = 0; i < numCodeLenCodes; ++i) {\n        codeLenCodeLengths[codeLenCodeMap[i]] = this.getBits(3);\n      }\n      var codeLenCodeTab = this.generateHuffmanTable(codeLenCodeLengths);\n\n      // build the literal and distance code tables\n      len = 0;\n      i = 0;\n      var codes = numLitCodes + numDistCodes;\n      var codeLengths = new Uint8Array(codes);\n      var bitsLength, bitsOffset, what;\n      while (i < codes) {\n        var code = this.getCode(codeLenCodeTab);\n        if (code === 16) {\n          bitsLength = 2;\n          bitsOffset = 3;\n          what = len;\n        } else if (code === 17) {\n          bitsLength = 3;\n          bitsOffset = 3;\n          what = len = 0;\n        } else if (code === 18) {\n          bitsLength = 7;\n          bitsOffset = 11;\n          what = len = 0;\n        } else {\n          codeLengths[i++] = len = code;\n          continue;\n        }\n\n        var repeatLength = this.getBits(bitsLength) + bitsOffset;\n        while (repeatLength-- > 0) {\n          codeLengths[i++] = what;\n        }\n      }\n\n      litCodeTable = this.generateHuffmanTable(\n        codeLengths.subarray(0, numLitCodes)\n      );\n      distCodeTable = this.generateHuffmanTable(\n        codeLengths.subarray(numLitCodes, codes)\n      );\n    } else {\n      throw new FormatError(\"Unknown block type in flate stream\");\n    }\n\n    buffer = this.buffer;\n    var limit = buffer ? buffer.length : 0;\n    var pos = this.bufferLength;\n    while (true) {\n      var code1 = this.getCode(litCodeTable);\n      if (code1 < 256) {\n        if (pos + 1 >= limit) {\n          buffer = this.ensureBuffer(pos + 1);\n          limit = buffer.length;\n        }\n        buffer[pos++] = code1;\n        continue;\n      }\n      if (code1 === 256) {\n        this.bufferLength = pos;\n        return;\n      }\n      code1 -= 257;\n      code1 = lengthDecode[code1];\n      var code2 = code1 >> 16;\n      if (code2 > 0) {\n        code2 = this.getBits(code2);\n      }\n      len = (code1 & 0xffff) + code2;\n      code1 = this.getCode(distCodeTable);\n      code1 = distDecode[code1];\n      code2 = code1 >> 16;\n      if (code2 > 0) {\n        code2 = this.getBits(code2);\n      }\n      var dist = (code1 & 0xffff) + code2;\n      if (pos + len >= limit) {\n        buffer = this.ensureBuffer(pos + len);\n        limit = buffer.length;\n      }\n      for (var k = 0; k < len; ++k, ++pos) {\n        buffer[pos] = buffer[pos - dist];\n      }\n    }\n  };\n\n  return FlateStream;\n})();\n\nvar PredictorStream = (function PredictorStreamClosure() {\n  // eslint-disable-next-line no-shadow\n  function PredictorStream(str, maybeLength, params) {\n    if (!isDict(params)) {\n      return str; // no prediction\n    }\n    var predictor = (this.predictor = params.get(\"Predictor\") || 1);\n\n    if (predictor <= 1) {\n      return str; // no prediction\n    }\n    if (predictor !== 2 && (predictor < 10 || predictor > 15)) {\n      throw new FormatError(`Unsupported predictor: ${predictor}`);\n    }\n\n    if (predictor === 2) {\n      this.readBlock = this.readBlockTiff;\n    } else {\n      this.readBlock = this.readBlockPng;\n    }\n\n    this.str = str;\n    this.dict = str.dict;\n\n    var colors = (this.colors = params.get(\"Colors\") || 1);\n    var bits = (this.bits = params.get(\"BitsPerComponent\") || 8);\n    var columns = (this.columns = params.get(\"Columns\") || 1);\n\n    this.pixBytes = (colors * bits + 7) >> 3;\n    this.rowBytes = (columns * colors * bits + 7) >> 3;\n\n    DecodeStream.call(this, maybeLength);\n    return this;\n  }\n\n  PredictorStream.prototype = Object.create(DecodeStream.prototype);\n\n  PredictorStream.prototype.readBlockTiff = function predictorStreamReadBlockTiff() {\n    var rowBytes = this.rowBytes;\n\n    var bufferLength = this.bufferLength;\n    var buffer = this.ensureBuffer(bufferLength + rowBytes);\n\n    var bits = this.bits;\n    var colors = this.colors;\n\n    var rawBytes = this.str.getBytes(rowBytes);\n    this.eof = !rawBytes.length;\n    if (this.eof) {\n      return;\n    }\n\n    var inbuf = 0,\n      outbuf = 0;\n    var inbits = 0,\n      outbits = 0;\n    var pos = bufferLength;\n    var i;\n\n    if (bits === 1 && colors === 1) {\n      // Optimized version of the loop in the \"else\"-branch\n      // for 1 bit-per-component and 1 color TIFF images.\n      for (i = 0; i < rowBytes; ++i) {\n        var c = rawBytes[i] ^ inbuf;\n        c ^= c >> 1;\n        c ^= c >> 2;\n        c ^= c >> 4;\n        inbuf = (c & 1) << 7;\n        buffer[pos++] = c;\n      }\n    } else if (bits === 8) {\n      for (i = 0; i < colors; ++i) {\n        buffer[pos++] = rawBytes[i];\n      }\n      for (; i < rowBytes; ++i) {\n        buffer[pos] = buffer[pos - colors] + rawBytes[i];\n        pos++;\n      }\n    } else if (bits === 16) {\n      var bytesPerPixel = colors * 2;\n      for (i = 0; i < bytesPerPixel; ++i) {\n        buffer[pos++] = rawBytes[i];\n      }\n      for (; i < rowBytes; i += 2) {\n        var sum =\n          ((rawBytes[i] & 0xff) << 8) +\n          (rawBytes[i + 1] & 0xff) +\n          ((buffer[pos - bytesPerPixel] & 0xff) << 8) +\n          (buffer[pos - bytesPerPixel + 1] & 0xff);\n        buffer[pos++] = (sum >> 8) & 0xff;\n        buffer[pos++] = sum & 0xff;\n      }\n    } else {\n      var compArray = new Uint8Array(colors + 1);\n      var bitMask = (1 << bits) - 1;\n      var j = 0,\n        k = bufferLength;\n      var columns = this.columns;\n      for (i = 0; i < columns; ++i) {\n        for (var kk = 0; kk < colors; ++kk) {\n          if (inbits < bits) {\n            inbuf = (inbuf << 8) | (rawBytes[j++] & 0xff);\n            inbits += 8;\n          }\n          compArray[kk] =\n            (compArray[kk] + (inbuf >> (inbits - bits))) & bitMask;\n          inbits -= bits;\n          outbuf = (outbuf << bits) | compArray[kk];\n          outbits += bits;\n          if (outbits >= 8) {\n            buffer[k++] = (outbuf >> (outbits - 8)) & 0xff;\n            outbits -= 8;\n          }\n        }\n      }\n      if (outbits > 0) {\n        buffer[k++] =\n          (outbuf << (8 - outbits)) + (inbuf & ((1 << (8 - outbits)) - 1));\n      }\n    }\n    this.bufferLength += rowBytes;\n  };\n\n  PredictorStream.prototype.readBlockPng = function predictorStreamReadBlockPng() {\n    var rowBytes = this.rowBytes;\n    var pixBytes = this.pixBytes;\n\n    var predictor = this.str.getByte();\n    var rawBytes = this.str.getBytes(rowBytes);\n    this.eof = !rawBytes.length;\n    if (this.eof) {\n      return;\n    }\n\n    var bufferLength = this.bufferLength;\n    var buffer = this.ensureBuffer(bufferLength + rowBytes);\n\n    var prevRow = buffer.subarray(bufferLength - rowBytes, bufferLength);\n    if (prevRow.length === 0) {\n      prevRow = new Uint8Array(rowBytes);\n    }\n\n    var i,\n      j = bufferLength,\n      up,\n      c;\n    switch (predictor) {\n      case 0:\n        for (i = 0; i < rowBytes; ++i) {\n          buffer[j++] = rawBytes[i];\n        }\n        break;\n      case 1:\n        for (i = 0; i < pixBytes; ++i) {\n          buffer[j++] = rawBytes[i];\n        }\n        for (; i < rowBytes; ++i) {\n          buffer[j] = (buffer[j - pixBytes] + rawBytes[i]) & 0xff;\n          j++;\n        }\n        break;\n      case 2:\n        for (i = 0; i < rowBytes; ++i) {\n          buffer[j++] = (prevRow[i] + rawBytes[i]) & 0xff;\n        }\n        break;\n      case 3:\n        for (i = 0; i < pixBytes; ++i) {\n          buffer[j++] = (prevRow[i] >> 1) + rawBytes[i];\n        }\n        for (; i < rowBytes; ++i) {\n          buffer[j] =\n            (((prevRow[i] + buffer[j - pixBytes]) >> 1) + rawBytes[i]) & 0xff;\n          j++;\n        }\n        break;\n      case 4:\n        // we need to save the up left pixels values. the simplest way\n        // is to create a new buffer\n        for (i = 0; i < pixBytes; ++i) {\n          up = prevRow[i];\n          c = rawBytes[i];\n          buffer[j++] = up + c;\n        }\n        for (; i < rowBytes; ++i) {\n          up = prevRow[i];\n          var upLeft = prevRow[i - pixBytes];\n          var left = buffer[j - pixBytes];\n          var p = left + up - upLeft;\n\n          var pa = p - left;\n          if (pa < 0) {\n            pa = -pa;\n          }\n          var pb = p - up;\n          if (pb < 0) {\n            pb = -pb;\n          }\n          var pc = p - upLeft;\n          if (pc < 0) {\n            pc = -pc;\n          }\n\n          c = rawBytes[i];\n          if (pa <= pb && pa <= pc) {\n            buffer[j++] = left + c;\n          } else if (pb <= pc) {\n            buffer[j++] = up + c;\n          } else {\n            buffer[j++] = upLeft + c;\n          }\n        }\n        break;\n      default:\n        throw new FormatError(`Unsupported predictor: ${predictor}`);\n    }\n    this.bufferLength += rowBytes;\n  };\n\n  return PredictorStream;\n})();\n\nvar DecryptStream = (function DecryptStreamClosure() {\n  // eslint-disable-next-line no-shadow\n  function DecryptStream(str, maybeLength, decrypt) {\n    this.str = str;\n    this.dict = str.dict;\n    this.decrypt = decrypt;\n    this.nextChunk = null;\n    this.initialized = false;\n\n    DecodeStream.call(this, maybeLength);\n  }\n\n  var chunkSize = 512;\n\n  DecryptStream.prototype = Object.create(DecodeStream.prototype);\n\n  DecryptStream.prototype.readBlock = function DecryptStream_readBlock() {\n    var chunk;\n    if (this.initialized) {\n      chunk = this.nextChunk;\n    } else {\n      chunk = this.str.getBytes(chunkSize);\n      this.initialized = true;\n    }\n    if (!chunk || chunk.length === 0) {\n      this.eof = true;\n      return;\n    }\n    this.nextChunk = this.str.getBytes(chunkSize);\n    var hasMoreData = this.nextChunk && this.nextChunk.length > 0;\n\n    var decrypt = this.decrypt;\n    chunk = decrypt(chunk, !hasMoreData);\n\n    var bufferLength = this.bufferLength;\n    var i,\n      n = chunk.length;\n    var buffer = this.ensureBuffer(bufferLength + n);\n    for (i = 0; i < n; i++) {\n      buffer[bufferLength++] = chunk[i];\n    }\n    this.bufferLength = bufferLength;\n  };\n\n  return DecryptStream;\n})();\n\nvar Ascii85Stream = (function Ascii85StreamClosure() {\n  // eslint-disable-next-line no-shadow\n  function Ascii85Stream(str, maybeLength) {\n    this.str = str;\n    this.dict = str.dict;\n    this.input = new Uint8Array(5);\n\n    // Most streams increase in size when decoded, but Ascii85 streams\n    // typically shrink by ~20%.\n    if (maybeLength) {\n      maybeLength = 0.8 * maybeLength;\n    }\n    DecodeStream.call(this, maybeLength);\n  }\n\n  Ascii85Stream.prototype = Object.create(DecodeStream.prototype);\n\n  Ascii85Stream.prototype.readBlock = function Ascii85Stream_readBlock() {\n    var TILDA_CHAR = 0x7e; // '~'\n    var Z_LOWER_CHAR = 0x7a; // 'z'\n    var EOF = -1;\n\n    var str = this.str;\n\n    var c = str.getByte();\n    while (isWhiteSpace(c)) {\n      c = str.getByte();\n    }\n\n    if (c === EOF || c === TILDA_CHAR) {\n      this.eof = true;\n      return;\n    }\n\n    var bufferLength = this.bufferLength,\n      buffer;\n    var i;\n\n    // special code for z\n    if (c === Z_LOWER_CHAR) {\n      buffer = this.ensureBuffer(bufferLength + 4);\n      for (i = 0; i < 4; ++i) {\n        buffer[bufferLength + i] = 0;\n      }\n      this.bufferLength += 4;\n    } else {\n      var input = this.input;\n      input[0] = c;\n      for (i = 1; i < 5; ++i) {\n        c = str.getByte();\n        while (isWhiteSpace(c)) {\n          c = str.getByte();\n        }\n\n        input[i] = c;\n\n        if (c === EOF || c === TILDA_CHAR) {\n          break;\n        }\n      }\n      buffer = this.ensureBuffer(bufferLength + i - 1);\n      this.bufferLength += i - 1;\n\n      // partial ending;\n      if (i < 5) {\n        for (; i < 5; ++i) {\n          input[i] = 0x21 + 84;\n        }\n        this.eof = true;\n      }\n      var t = 0;\n      for (i = 0; i < 5; ++i) {\n        t = t * 85 + (input[i] - 0x21);\n      }\n\n      for (i = 3; i >= 0; --i) {\n        buffer[bufferLength + i] = t & 0xff;\n        t >>= 8;\n      }\n    }\n  };\n\n  return Ascii85Stream;\n})();\n\nvar AsciiHexStream = (function AsciiHexStreamClosure() {\n  // eslint-disable-next-line no-shadow\n  function AsciiHexStream(str, maybeLength) {\n    this.str = str;\n    this.dict = str.dict;\n\n    this.firstDigit = -1;\n\n    // Most streams increase in size when decoded, but AsciiHex streams shrink\n    // by 50%.\n    if (maybeLength) {\n      maybeLength = 0.5 * maybeLength;\n    }\n    DecodeStream.call(this, maybeLength);\n  }\n\n  AsciiHexStream.prototype = Object.create(DecodeStream.prototype);\n\n  AsciiHexStream.prototype.readBlock = function AsciiHexStream_readBlock() {\n    var UPSTREAM_BLOCK_SIZE = 8000;\n    var bytes = this.str.getBytes(UPSTREAM_BLOCK_SIZE);\n    if (!bytes.length) {\n      this.eof = true;\n      return;\n    }\n\n    var maxDecodeLength = (bytes.length + 1) >> 1;\n    var buffer = this.ensureBuffer(this.bufferLength + maxDecodeLength);\n    var bufferLength = this.bufferLength;\n\n    var firstDigit = this.firstDigit;\n    for (var i = 0, ii = bytes.length; i < ii; i++) {\n      var ch = bytes[i],\n        digit;\n      if (ch >= /* '0' = */ 0x30 && ch <= /* '9' = */ 0x39) {\n        digit = ch & 0x0f;\n      } else if (\n        (ch >= /* 'A' = */ 0x41 && ch <= /* 'Z' = */ 0x46) ||\n        (ch >= /* 'a' = */ 0x61 && ch <= /* 'z' = */ 0x66)\n      ) {\n        digit = (ch & 0x0f) + 9;\n      } else if (ch === /* '>' = */ 0x3e) {\n        this.eof = true;\n        break;\n      } else {\n        // Probably whitespace, ignoring.\n        continue;\n      }\n      if (firstDigit < 0) {\n        firstDigit = digit;\n      } else {\n        buffer[bufferLength++] = (firstDigit << 4) | digit;\n        firstDigit = -1;\n      }\n    }\n    if (firstDigit >= 0 && this.eof) {\n      // incomplete byte\n      buffer[bufferLength++] = firstDigit << 4;\n      firstDigit = -1;\n    }\n    this.firstDigit = firstDigit;\n    this.bufferLength = bufferLength;\n  };\n\n  return AsciiHexStream;\n})();\n\nvar RunLengthStream = (function RunLengthStreamClosure() {\n  // eslint-disable-next-line no-shadow\n  function RunLengthStream(str, maybeLength) {\n    this.str = str;\n    this.dict = str.dict;\n\n    DecodeStream.call(this, maybeLength);\n  }\n\n  RunLengthStream.prototype = Object.create(DecodeStream.prototype);\n\n  RunLengthStream.prototype.readBlock = function RunLengthStream_readBlock() {\n    // The repeatHeader has following format. The first byte defines type of run\n    // and amount of bytes to repeat/copy: n = 0 through 127 - copy next n bytes\n    // (in addition to the second byte from the header), n = 129 through 255 -\n    // duplicate the second byte from the header (257 - n) times, n = 128 - end.\n    var repeatHeader = this.str.getBytes(2);\n    if (!repeatHeader || repeatHeader.length < 2 || repeatHeader[0] === 128) {\n      this.eof = true;\n      return;\n    }\n\n    var buffer;\n    var bufferLength = this.bufferLength;\n    var n = repeatHeader[0];\n    if (n < 128) {\n      // copy n bytes\n      buffer = this.ensureBuffer(bufferLength + n + 1);\n      buffer[bufferLength++] = repeatHeader[1];\n      if (n > 0) {\n        var source = this.str.getBytes(n);\n        buffer.set(source, bufferLength);\n        bufferLength += n;\n      }\n    } else {\n      n = 257 - n;\n      var b = repeatHeader[1];\n      buffer = this.ensureBuffer(bufferLength + n + 1);\n      for (var i = 0; i < n; i++) {\n        buffer[bufferLength++] = b;\n      }\n    }\n    this.bufferLength = bufferLength;\n  };\n\n  return RunLengthStream;\n})();\n\nvar LZWStream = (function LZWStreamClosure() {\n  // eslint-disable-next-line no-shadow\n  function LZWStream(str, maybeLength, earlyChange) {\n    this.str = str;\n    this.dict = str.dict;\n    this.cachedData = 0;\n    this.bitsCached = 0;\n\n    var maxLzwDictionarySize = 4096;\n    var lzwState = {\n      earlyChange,\n      codeLength: 9,\n      nextCode: 258,\n      dictionaryValues: new Uint8Array(maxLzwDictionarySize),\n      dictionaryLengths: new Uint16Array(maxLzwDictionarySize),\n      dictionaryPrevCodes: new Uint16Array(maxLzwDictionarySize),\n      currentSequence: new Uint8Array(maxLzwDictionarySize),\n      currentSequenceLength: 0,\n    };\n    for (var i = 0; i < 256; ++i) {\n      lzwState.dictionaryValues[i] = i;\n      lzwState.dictionaryLengths[i] = 1;\n    }\n    this.lzwState = lzwState;\n\n    DecodeStream.call(this, maybeLength);\n  }\n\n  LZWStream.prototype = Object.create(DecodeStream.prototype);\n\n  LZWStream.prototype.readBits = function LZWStream_readBits(n) {\n    var bitsCached = this.bitsCached;\n    var cachedData = this.cachedData;\n    while (bitsCached < n) {\n      var c = this.str.getByte();\n      if (c === -1) {\n        this.eof = true;\n        return null;\n      }\n      cachedData = (cachedData << 8) | c;\n      bitsCached += 8;\n    }\n    this.bitsCached = bitsCached -= n;\n    this.cachedData = cachedData;\n    this.lastCode = null;\n    return (cachedData >>> bitsCached) & ((1 << n) - 1);\n  };\n\n  LZWStream.prototype.readBlock = function LZWStream_readBlock() {\n    var blockSize = 512;\n    var estimatedDecodedSize = blockSize * 2,\n      decodedSizeDelta = blockSize;\n    var i, j, q;\n\n    var lzwState = this.lzwState;\n    if (!lzwState) {\n      return; // eof was found\n    }\n\n    var earlyChange = lzwState.earlyChange;\n    var nextCode = lzwState.nextCode;\n    var dictionaryValues = lzwState.dictionaryValues;\n    var dictionaryLengths = lzwState.dictionaryLengths;\n    var dictionaryPrevCodes = lzwState.dictionaryPrevCodes;\n    var codeLength = lzwState.codeLength;\n    var prevCode = lzwState.prevCode;\n    var currentSequence = lzwState.currentSequence;\n    var currentSequenceLength = lzwState.currentSequenceLength;\n\n    var decodedLength = 0;\n    var currentBufferLength = this.bufferLength;\n    var buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n\n    for (i = 0; i < blockSize; i++) {\n      var code = this.readBits(codeLength);\n      var hasPrev = currentSequenceLength > 0;\n      if (code < 256) {\n        currentSequence[0] = code;\n        currentSequenceLength = 1;\n      } else if (code >= 258) {\n        if (code < nextCode) {\n          currentSequenceLength = dictionaryLengths[code];\n          for (j = currentSequenceLength - 1, q = code; j >= 0; j--) {\n            currentSequence[j] = dictionaryValues[q];\n            q = dictionaryPrevCodes[q];\n          }\n        } else {\n          currentSequence[currentSequenceLength++] = currentSequence[0];\n        }\n      } else if (code === 256) {\n        codeLength = 9;\n        nextCode = 258;\n        currentSequenceLength = 0;\n        continue;\n      } else {\n        this.eof = true;\n        delete this.lzwState;\n        break;\n      }\n\n      if (hasPrev) {\n        dictionaryPrevCodes[nextCode] = prevCode;\n        dictionaryLengths[nextCode] = dictionaryLengths[prevCode] + 1;\n        dictionaryValues[nextCode] = currentSequence[0];\n        nextCode++;\n        codeLength =\n          (nextCode + earlyChange) & (nextCode + earlyChange - 1)\n            ? codeLength\n            : Math.min(\n                Math.log(nextCode + earlyChange) / 0.6931471805599453 + 1,\n                12\n              ) | 0;\n      }\n      prevCode = code;\n\n      decodedLength += currentSequenceLength;\n      if (estimatedDecodedSize < decodedLength) {\n        do {\n          estimatedDecodedSize += decodedSizeDelta;\n        } while (estimatedDecodedSize < decodedLength);\n        buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n      }\n      for (j = 0; j < currentSequenceLength; j++) {\n        buffer[currentBufferLength++] = currentSequence[j];\n      }\n    }\n    lzwState.nextCode = nextCode;\n    lzwState.codeLength = codeLength;\n    lzwState.prevCode = prevCode;\n    lzwState.currentSequenceLength = currentSequenceLength;\n\n    this.bufferLength = currentBufferLength;\n  };\n\n  return LZWStream;\n})();\n\nvar NullStream = (function NullStreamClosure() {\n  // eslint-disable-next-line no-shadow\n  function NullStream() {\n    Stream.call(this, new Uint8Array(0));\n  }\n\n  NullStream.prototype = Stream.prototype;\n\n  return NullStream;\n})();\n\nexport {\n  Ascii85Stream,\n  AsciiHexStream,\n  DecryptStream,\n  DecodeStream,\n  FlateStream,\n  NullStream,\n  PredictorStream,\n  RunLengthStream,\n  Stream,\n  StreamsSequenceStream,\n  StringStream,\n  LZWStream,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Dict, isDict } from \"./primitives.js\";\nimport { CCITTFaxDecoder } from \"./ccitt.js\";\nimport { DecodeStream } from \"./stream.js\";\n\nvar CCITTFaxStream = (function CCITTFaxStreamClosure() {\n  // eslint-disable-next-line no-shadow\n  function CCITTFaxStream(str, maybeLength, params) {\n    this.str = str;\n    this.dict = str.dict;\n\n    if (!isDict(params)) {\n      params = Dict.empty;\n    }\n\n    const source = {\n      next() {\n        return str.getByte();\n      },\n    };\n    this.ccittFaxDecoder = new CCITTFaxDecoder(source, {\n      K: params.get(\"K\"),\n      EndOfLine: params.get(\"EndOfLine\"),\n      EncodedByteAlign: params.get(\"EncodedByteAlign\"),\n      Columns: params.get(\"Columns\"),\n      Rows: params.get(\"Rows\"),\n      EndOfBlock: params.get(\"EndOfBlock\"),\n      BlackIs1: params.get(\"BlackIs1\"),\n    });\n\n    DecodeStream.call(this, maybeLength);\n  }\n\n  CCITTFaxStream.prototype = Object.create(DecodeStream.prototype);\n\n  CCITTFaxStream.prototype.readBlock = function () {\n    while (!this.eof) {\n      const c = this.ccittFaxDecoder.readNextChar();\n      if (c === -1) {\n        this.eof = true;\n        return;\n      }\n      this.ensureBuffer(this.bufferLength + 1);\n      this.buffer[this.bufferLength++] = c;\n    }\n  };\n\n  return CCITTFaxStream;\n})();\n\nexport { CCITTFaxStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* Copyright 1996-2003 Glyph & Cog, LLC\n *\n * The CCITT stream implementation contained in this file is a JavaScript port\n * of XPDF's implementation, made available under the Apache 2.0 open source\n * license.\n */\n\n/**\n * @typedef {Object} CCITTFaxDecoderSource\n * @property {function} next - Method that return one byte of data for decoding,\n *   or -1 when EOF is reached.\n */\n\nimport { info } from \"../shared/util.js\";\n\nconst CCITTFaxDecoder = (function CCITTFaxDecoder() {\n  const ccittEOL = -2;\n  const ccittEOF = -1;\n  const twoDimPass = 0;\n  const twoDimHoriz = 1;\n  const twoDimVert0 = 2;\n  const twoDimVertR1 = 3;\n  const twoDimVertL1 = 4;\n  const twoDimVertR2 = 5;\n  const twoDimVertL2 = 6;\n  const twoDimVertR3 = 7;\n  const twoDimVertL3 = 8;\n\n  // prettier-ignore\n  const twoDimTable = [\n    [-1, -1], [-1, -1],                   // 000000x\n    [7, twoDimVertL3],                    // 0000010\n    [7, twoDimVertR3],                    // 0000011\n    [6, twoDimVertL2], [6, twoDimVertL2], // 000010x\n    [6, twoDimVertR2], [6, twoDimVertR2], // 000011x\n    [4, twoDimPass], [4, twoDimPass],     // 0001xxx\n    [4, twoDimPass], [4, twoDimPass],\n    [4, twoDimPass], [4, twoDimPass],\n    [4, twoDimPass], [4, twoDimPass],\n    [3, twoDimHoriz], [3, twoDimHoriz],   // 001xxxx\n    [3, twoDimHoriz], [3, twoDimHoriz],\n    [3, twoDimHoriz], [3, twoDimHoriz],\n    [3, twoDimHoriz], [3, twoDimHoriz],\n    [3, twoDimHoriz], [3, twoDimHoriz],\n    [3, twoDimHoriz], [3, twoDimHoriz],\n    [3, twoDimHoriz], [3, twoDimHoriz],\n    [3, twoDimHoriz], [3, twoDimHoriz],\n    [3, twoDimVertL1], [3, twoDimVertL1], // 010xxxx\n    [3, twoDimVertL1], [3, twoDimVertL1],\n    [3, twoDimVertL1], [3, twoDimVertL1],\n    [3, twoDimVertL1], [3, twoDimVertL1],\n    [3, twoDimVertL1], [3, twoDimVertL1],\n    [3, twoDimVertL1], [3, twoDimVertL1],\n    [3, twoDimVertL1], [3, twoDimVertL1],\n    [3, twoDimVertL1], [3, twoDimVertL1],\n    [3, twoDimVertR1], [3, twoDimVertR1], // 011xxxx\n    [3, twoDimVertR1], [3, twoDimVertR1],\n    [3, twoDimVertR1], [3, twoDimVertR1],\n    [3, twoDimVertR1], [3, twoDimVertR1],\n    [3, twoDimVertR1], [3, twoDimVertR1],\n    [3, twoDimVertR1], [3, twoDimVertR1],\n    [3, twoDimVertR1], [3, twoDimVertR1],\n    [3, twoDimVertR1], [3, twoDimVertR1],\n    [1, twoDimVert0], [1, twoDimVert0],   // 1xxxxxx\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0]\n  ];\n\n  // prettier-ignore\n  const whiteTable1 = [\n    [-1, -1],                               // 00000\n    [12, ccittEOL],                         // 00001\n    [-1, -1], [-1, -1],                     // 0001x\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 001xx\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 010xx\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 011xx\n    [11, 1792], [11, 1792],                 // 1000x\n    [12, 1984],                             // 10010\n    [12, 2048],                             // 10011\n    [12, 2112],                             // 10100\n    [12, 2176],                             // 10101\n    [12, 2240],                             // 10110\n    [12, 2304],                             // 10111\n    [11, 1856], [11, 1856],                 // 1100x\n    [11, 1920], [11, 1920],                 // 1101x\n    [12, 2368],                             // 11100\n    [12, 2432],                             // 11101\n    [12, 2496],                             // 11110\n    [12, 2560]                              // 11111\n  ];\n\n  // prettier-ignore\n  const whiteTable2 = [\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1],     // 0000000xx\n    [8, 29], [8, 29],                           // 00000010x\n    [8, 30], [8, 30],                           // 00000011x\n    [8, 45], [8, 45],                           // 00000100x\n    [8, 46], [8, 46],                           // 00000101x\n    [7, 22], [7, 22], [7, 22], [7, 22],         // 0000011xx\n    [7, 23], [7, 23], [7, 23], [7, 23],         // 0000100xx\n    [8, 47], [8, 47],                           // 00001010x\n    [8, 48], [8, 48],                           // 00001011x\n    [6, 13], [6, 13], [6, 13], [6, 13],         // 000011xxx\n    [6, 13], [6, 13], [6, 13], [6, 13],\n    [7, 20], [7, 20], [7, 20], [7, 20],         // 0001000xx\n    [8, 33], [8, 33],                           // 00010010x\n    [8, 34], [8, 34],                           // 00010011x\n    [8, 35], [8, 35],                           // 00010100x\n    [8, 36], [8, 36],                           // 00010101x\n    [8, 37], [8, 37],                           // 00010110x\n    [8, 38], [8, 38],                           // 00010111x\n    [7, 19], [7, 19], [7, 19], [7, 19],         // 0001100xx\n    [8, 31], [8, 31],                           // 00011010x\n    [8, 32], [8, 32],                           // 00011011x\n    [6, 1], [6, 1], [6, 1], [6, 1],             // 000111xxx\n    [6, 1], [6, 1], [6, 1], [6, 1],\n    [6, 12], [6, 12], [6, 12], [6, 12],         // 001000xxx\n    [6, 12], [6, 12], [6, 12], [6, 12],\n    [8, 53], [8, 53],                           // 00100100x\n    [8, 54], [8, 54],                           // 00100101x\n    [7, 26], [7, 26], [7, 26], [7, 26],         // 0010011xx\n    [8, 39], [8, 39],                           // 00101000x\n    [8, 40], [8, 40],                           // 00101001x\n    [8, 41], [8, 41],                           // 00101010x\n    [8, 42], [8, 42],                           // 00101011x\n    [8, 43], [8, 43],                           // 00101100x\n    [8, 44], [8, 44],                           // 00101101x\n    [7, 21], [7, 21], [7, 21], [7, 21],         // 0010111xx\n    [7, 28], [7, 28], [7, 28], [7, 28],         // 0011000xx\n    [8, 61], [8, 61],                           // 00110010x\n    [8, 62], [8, 62],                           // 00110011x\n    [8, 63], [8, 63],                           // 00110100x\n    [8, 0], [8, 0],                             // 00110101x\n    [8, 320], [8, 320],                         // 00110110x\n    [8, 384], [8, 384],                         // 00110111x\n    [5, 10], [5, 10], [5, 10], [5, 10],         // 00111xxxx\n    [5, 10], [5, 10], [5, 10], [5, 10],\n    [5, 10], [5, 10], [5, 10], [5, 10],\n    [5, 10], [5, 10], [5, 10], [5, 10],\n    [5, 11], [5, 11], [5, 11], [5, 11],         // 01000xxxx\n    [5, 11], [5, 11], [5, 11], [5, 11],\n    [5, 11], [5, 11], [5, 11], [5, 11],\n    [5, 11], [5, 11], [5, 11], [5, 11],\n    [7, 27], [7, 27], [7, 27], [7, 27],         // 0100100xx\n    [8, 59], [8, 59],                           // 01001010x\n    [8, 60], [8, 60],                           // 01001011x\n    [9, 1472],                                  // 010011000\n    [9, 1536],                                  // 010011001\n    [9, 1600],                                  // 010011010\n    [9, 1728],                                  // 010011011\n    [7, 18], [7, 18], [7, 18], [7, 18],         // 0100111xx\n    [7, 24], [7, 24], [7, 24], [7, 24],         // 0101000xx\n    [8, 49], [8, 49],                           // 01010010x\n    [8, 50], [8, 50],                           // 01010011x\n    [8, 51], [8, 51],                           // 01010100x\n    [8, 52], [8, 52],                           // 01010101x\n    [7, 25], [7, 25], [7, 25], [7, 25],         // 0101011xx\n    [8, 55], [8, 55],                           // 01011000x\n    [8, 56], [8, 56],                           // 01011001x\n    [8, 57], [8, 57],                           // 01011010x\n    [8, 58], [8, 58],                           // 01011011x\n    [6, 192], [6, 192], [6, 192], [6, 192],     // 010111xxx\n    [6, 192], [6, 192], [6, 192], [6, 192],\n    [6, 1664], [6, 1664], [6, 1664], [6, 1664], // 011000xxx\n    [6, 1664], [6, 1664], [6, 1664], [6, 1664],\n    [8, 448], [8, 448],                         // 01100100x\n    [8, 512], [8, 512],                         // 01100101x\n    [9, 704],                                   // 011001100\n    [9, 768],                                   // 011001101\n    [8, 640], [8, 640],                         // 01100111x\n    [8, 576], [8, 576],                         // 01101000x\n    [9, 832],                                   // 011010010\n    [9, 896],                                   // 011010011\n    [9, 960],                                   // 011010100\n    [9, 1024],                                  // 011010101\n    [9, 1088],                                  // 011010110\n    [9, 1152],                                  // 011010111\n    [9, 1216],                                  // 011011000\n    [9, 1280],                                  // 011011001\n    [9, 1344],                                  // 011011010\n    [9, 1408],                                  // 011011011\n    [7, 256], [7, 256], [7, 256], [7, 256],     // 0110111xx\n    [4, 2], [4, 2], [4, 2], [4, 2],             // 0111xxxxx\n    [4, 2], [4, 2], [4, 2], [4, 2],\n    [4, 2], [4, 2], [4, 2], [4, 2],\n    [4, 2], [4, 2], [4, 2], [4, 2],\n    [4, 2], [4, 2], [4, 2], [4, 2],\n    [4, 2], [4, 2], [4, 2], [4, 2],\n    [4, 2], [4, 2], [4, 2], [4, 2],\n    [4, 2], [4, 2], [4, 2], [4, 2],\n    [4, 3], [4, 3], [4, 3], [4, 3],             // 1000xxxxx\n    [4, 3], [4, 3], [4, 3], [4, 3],\n    [4, 3], [4, 3], [4, 3], [4, 3],\n    [4, 3], [4, 3], [4, 3], [4, 3],\n    [4, 3], [4, 3], [4, 3], [4, 3],\n    [4, 3], [4, 3], [4, 3], [4, 3],\n    [4, 3], [4, 3], [4, 3], [4, 3],\n    [4, 3], [4, 3], [4, 3], [4, 3],\n    [5, 128], [5, 128], [5, 128], [5, 128],     // 10010xxxx\n    [5, 128], [5, 128], [5, 128], [5, 128],\n    [5, 128], [5, 128], [5, 128], [5, 128],\n    [5, 128], [5, 128], [5, 128], [5, 128],\n    [5, 8], [5, 8], [5, 8], [5, 8],             // 10011xxxx\n    [5, 8], [5, 8], [5, 8], [5, 8],\n    [5, 8], [5, 8], [5, 8], [5, 8],\n    [5, 8], [5, 8], [5, 8], [5, 8],\n    [5, 9], [5, 9], [5, 9], [5, 9],             // 10100xxxx\n    [5, 9], [5, 9], [5, 9], [5, 9],\n    [5, 9], [5, 9], [5, 9], [5, 9],\n    [5, 9], [5, 9], [5, 9], [5, 9],\n    [6, 16], [6, 16], [6, 16], [6, 16],         // 101010xxx\n    [6, 16], [6, 16], [6, 16], [6, 16],\n    [6, 17], [6, 17], [6, 17], [6, 17],         // 101011xxx\n    [6, 17], [6, 17], [6, 17], [6, 17],\n    [4, 4], [4, 4], [4, 4], [4, 4],             // 1011xxxxx\n    [4, 4], [4, 4], [4, 4], [4, 4],\n    [4, 4], [4, 4], [4, 4], [4, 4],\n    [4, 4], [4, 4], [4, 4], [4, 4],\n    [4, 4], [4, 4], [4, 4], [4, 4],\n    [4, 4], [4, 4], [4, 4], [4, 4],\n    [4, 4], [4, 4], [4, 4], [4, 4],\n    [4, 4], [4, 4], [4, 4], [4, 4],\n    [4, 5], [4, 5], [4, 5], [4, 5],             // 1100xxxxx\n    [4, 5], [4, 5], [4, 5], [4, 5],\n    [4, 5], [4, 5], [4, 5], [4, 5],\n    [4, 5], [4, 5], [4, 5], [4, 5],\n    [4, 5], [4, 5], [4, 5], [4, 5],\n    [4, 5], [4, 5], [4, 5], [4, 5],\n    [4, 5], [4, 5], [4, 5], [4, 5],\n    [4, 5], [4, 5], [4, 5], [4, 5],\n    [6, 14], [6, 14], [6, 14], [6, 14],         // 110100xxx\n    [6, 14], [6, 14], [6, 14], [6, 14],\n    [6, 15], [6, 15], [6, 15], [6, 15],         // 110101xxx\n    [6, 15], [6, 15], [6, 15], [6, 15],\n    [5, 64], [5, 64], [5, 64], [5, 64],         // 11011xxxx\n    [5, 64], [5, 64], [5, 64], [5, 64],\n    [5, 64], [5, 64], [5, 64], [5, 64],\n    [5, 64], [5, 64], [5, 64], [5, 64],\n    [4, 6], [4, 6], [4, 6], [4, 6],             // 1110xxxxx\n    [4, 6], [4, 6], [4, 6], [4, 6],\n    [4, 6], [4, 6], [4, 6], [4, 6],\n    [4, 6], [4, 6], [4, 6], [4, 6],\n    [4, 6], [4, 6], [4, 6], [4, 6],\n    [4, 6], [4, 6], [4, 6], [4, 6],\n    [4, 6], [4, 6], [4, 6], [4, 6],\n    [4, 6], [4, 6], [4, 6], [4, 6],\n    [4, 7], [4, 7], [4, 7], [4, 7],             // 1111xxxxx\n    [4, 7], [4, 7], [4, 7], [4, 7],\n    [4, 7], [4, 7], [4, 7], [4, 7],\n    [4, 7], [4, 7], [4, 7], [4, 7],\n    [4, 7], [4, 7], [4, 7], [4, 7],\n    [4, 7], [4, 7], [4, 7], [4, 7],\n    [4, 7], [4, 7], [4, 7], [4, 7],\n    [4, 7], [4, 7], [4, 7], [4, 7]\n  ];\n\n  // prettier-ignore\n  const blackTable1 = [\n    [-1, -1], [-1, -1],                             // 000000000000x\n    [12, ccittEOL], [12, ccittEOL],                 // 000000000001x\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000001xx\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000010xx\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000011xx\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000100xx\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000101xx\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000110xx\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000111xx\n    [11, 1792], [11, 1792], [11, 1792], [11, 1792], // 00000001000xx\n    [12, 1984], [12, 1984],                         // 000000010010x\n    [12, 2048], [12, 2048],                         // 000000010011x\n    [12, 2112], [12, 2112],                         // 000000010100x\n    [12, 2176], [12, 2176],                         // 000000010101x\n    [12, 2240], [12, 2240],                         // 000000010110x\n    [12, 2304], [12, 2304],                         // 000000010111x\n    [11, 1856], [11, 1856], [11, 1856], [11, 1856], // 00000001100xx\n    [11, 1920], [11, 1920], [11, 1920], [11, 1920], // 00000001101xx\n    [12, 2368], [12, 2368],                         // 000000011100x\n    [12, 2432], [12, 2432],                         // 000000011101x\n    [12, 2496], [12, 2496],                         // 000000011110x\n    [12, 2560], [12, 2560],                         // 000000011111x\n    [10, 18], [10, 18], [10, 18], [10, 18],         // 0000001000xxx\n    [10, 18], [10, 18], [10, 18], [10, 18],\n    [12, 52], [12, 52],                             // 000000100100x\n    [13, 640],                                      // 0000001001010\n    [13, 704],                                      // 0000001001011\n    [13, 768],                                      // 0000001001100\n    [13, 832],                                      // 0000001001101\n    [12, 55], [12, 55],                             // 000000100111x\n    [12, 56], [12, 56],                             // 000000101000x\n    [13, 1280],                                     // 0000001010010\n    [13, 1344],                                     // 0000001010011\n    [13, 1408],                                     // 0000001010100\n    [13, 1472],                                     // 0000001010101\n    [12, 59], [12, 59],                             // 000000101011x\n    [12, 60], [12, 60],                             // 000000101100x\n    [13, 1536],                                     // 0000001011010\n    [13, 1600],                                     // 0000001011011\n    [11, 24], [11, 24], [11, 24], [11, 24],         // 00000010111xx\n    [11, 25], [11, 25], [11, 25], [11, 25],         // 00000011000xx\n    [13, 1664],                                     // 0000001100100\n    [13, 1728],                                     // 0000001100101\n    [12, 320], [12, 320],                           // 000000110011x\n    [12, 384], [12, 384],                           // 000000110100x\n    [12, 448], [12, 448],                           // 000000110101x\n    [13, 512],                                      // 0000001101100\n    [13, 576],                                      // 0000001101101\n    [12, 53], [12, 53],                             // 000000110111x\n    [12, 54], [12, 54],                             // 000000111000x\n    [13, 896],                                      // 0000001110010\n    [13, 960],                                      // 0000001110011\n    [13, 1024],                                     // 0000001110100\n    [13, 1088],                                     // 0000001110101\n    [13, 1152],                                     // 0000001110110\n    [13, 1216],                                     // 0000001110111\n    [10, 64], [10, 64], [10, 64], [10, 64],         // 0000001111xxx\n    [10, 64], [10, 64], [10, 64], [10, 64]\n  ];\n\n  // prettier-ignore\n  const blackTable2 = [\n    [8, 13], [8, 13], [8, 13], [8, 13],     // 00000100xxxx\n    [8, 13], [8, 13], [8, 13], [8, 13],\n    [8, 13], [8, 13], [8, 13], [8, 13],\n    [8, 13], [8, 13], [8, 13], [8, 13],\n    [11, 23], [11, 23],                     // 00000101000x\n    [12, 50],                               // 000001010010\n    [12, 51],                               // 000001010011\n    [12, 44],                               // 000001010100\n    [12, 45],                               // 000001010101\n    [12, 46],                               // 000001010110\n    [12, 47],                               // 000001010111\n    [12, 57],                               // 000001011000\n    [12, 58],                               // 000001011001\n    [12, 61],                               // 000001011010\n    [12, 256],                              // 000001011011\n    [10, 16], [10, 16], [10, 16], [10, 16], // 0000010111xx\n    [10, 17], [10, 17], [10, 17], [10, 17], // 0000011000xx\n    [12, 48],                               // 000001100100\n    [12, 49],                               // 000001100101\n    [12, 62],                               // 000001100110\n    [12, 63],                               // 000001100111\n    [12, 30],                               // 000001101000\n    [12, 31],                               // 000001101001\n    [12, 32],                               // 000001101010\n    [12, 33],                               // 000001101011\n    [12, 40],                               // 000001101100\n    [12, 41],                               // 000001101101\n    [11, 22], [11, 22],                     // 00000110111x\n    [8, 14], [8, 14], [8, 14], [8, 14],     // 00000111xxxx\n    [8, 14], [8, 14], [8, 14], [8, 14],\n    [8, 14], [8, 14], [8, 14], [8, 14],\n    [8, 14], [8, 14], [8, 14], [8, 14],\n    [7, 10], [7, 10], [7, 10], [7, 10],     // 0000100xxxxx\n    [7, 10], [7, 10], [7, 10], [7, 10],\n    [7, 10], [7, 10], [7, 10], [7, 10],\n    [7, 10], [7, 10], [7, 10], [7, 10],\n    [7, 10], [7, 10], [7, 10], [7, 10],\n    [7, 10], [7, 10], [7, 10], [7, 10],\n    [7, 10], [7, 10], [7, 10], [7, 10],\n    [7, 10], [7, 10], [7, 10], [7, 10],\n    [7, 11], [7, 11], [7, 11], [7, 11],     // 0000101xxxxx\n    [7, 11], [7, 11], [7, 11], [7, 11],\n    [7, 11], [7, 11], [7, 11], [7, 11],\n    [7, 11], [7, 11], [7, 11], [7, 11],\n    [7, 11], [7, 11], [7, 11], [7, 11],\n    [7, 11], [7, 11], [7, 11], [7, 11],\n    [7, 11], [7, 11], [7, 11], [7, 11],\n    [7, 11], [7, 11], [7, 11], [7, 11],\n    [9, 15], [9, 15], [9, 15], [9, 15],     // 000011000xxx\n    [9, 15], [9, 15], [9, 15], [9, 15],\n    [12, 128],                              // 000011001000\n    [12, 192],                              // 000011001001\n    [12, 26],                               // 000011001010\n    [12, 27],                               // 000011001011\n    [12, 28],                               // 000011001100\n    [12, 29],                               // 000011001101\n    [11, 19], [11, 19],                     // 00001100111x\n    [11, 20], [11, 20],                     // 00001101000x\n    [12, 34],                               // 000011010010\n    [12, 35],                               // 000011010011\n    [12, 36],                               // 000011010100\n    [12, 37],                               // 000011010101\n    [12, 38],                               // 000011010110\n    [12, 39],                               // 000011010111\n    [11, 21], [11, 21],                     // 00001101100x\n    [12, 42],                               // 000011011010\n    [12, 43],                               // 000011011011\n    [10, 0], [10, 0], [10, 0], [10, 0],     // 0000110111xx\n    [7, 12], [7, 12], [7, 12], [7, 12],     // 0000111xxxxx\n    [7, 12], [7, 12], [7, 12], [7, 12],\n    [7, 12], [7, 12], [7, 12], [7, 12],\n    [7, 12], [7, 12], [7, 12], [7, 12],\n    [7, 12], [7, 12], [7, 12], [7, 12],\n    [7, 12], [7, 12], [7, 12], [7, 12],\n    [7, 12], [7, 12], [7, 12], [7, 12],\n    [7, 12], [7, 12], [7, 12], [7, 12]\n  ];\n\n  // prettier-ignore\n  const blackTable3 = [\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 0000xx\n    [6, 9],                                 // 000100\n    [6, 8],                                 // 000101\n    [5, 7], [5, 7],                         // 00011x\n    [4, 6], [4, 6], [4, 6], [4, 6],         // 0010xx\n    [4, 5], [4, 5], [4, 5], [4, 5],         // 0011xx\n    [3, 1], [3, 1], [3, 1], [3, 1],         // 010xxx\n    [3, 1], [3, 1], [3, 1], [3, 1],\n    [3, 4], [3, 4], [3, 4], [3, 4],         // 011xxx\n    [3, 4], [3, 4], [3, 4], [3, 4],\n    [2, 3], [2, 3], [2, 3], [2, 3],         // 10xxxx\n    [2, 3], [2, 3], [2, 3], [2, 3],\n    [2, 3], [2, 3], [2, 3], [2, 3],\n    [2, 3], [2, 3], [2, 3], [2, 3],\n    [2, 2], [2, 2], [2, 2], [2, 2],         // 11xxxx\n    [2, 2], [2, 2], [2, 2], [2, 2],\n    [2, 2], [2, 2], [2, 2], [2, 2],\n    [2, 2], [2, 2], [2, 2], [2, 2]\n  ];\n\n  /**\n   * @param {CCITTFaxDecoderSource} source - The data which should be decoded.\n   * @param {Object} [options] - Decoding options.\n   */\n  // eslint-disable-next-line no-shadow\n  function CCITTFaxDecoder(source, options = {}) {\n    if (!source || typeof source.next !== \"function\") {\n      throw new Error('CCITTFaxDecoder - invalid \"source\" parameter.');\n    }\n    this.source = source;\n    this.eof = false;\n\n    this.encoding = options.K || 0;\n    this.eoline = options.EndOfLine || false;\n    this.byteAlign = options.EncodedByteAlign || false;\n    this.columns = options.Columns || 1728;\n    this.rows = options.Rows || 0;\n    let eoblock = options.EndOfBlock;\n    if (eoblock === null || eoblock === undefined) {\n      eoblock = true;\n    }\n    this.eoblock = eoblock;\n    this.black = options.BlackIs1 || false;\n\n    this.codingLine = new Uint32Array(this.columns + 1);\n    this.refLine = new Uint32Array(this.columns + 2);\n\n    this.codingLine[0] = this.columns;\n    this.codingPos = 0;\n\n    this.row = 0;\n    this.nextLine2D = this.encoding < 0;\n    this.inputBits = 0;\n    this.inputBuf = 0;\n    this.outputBits = 0;\n    this.rowsDone = false;\n\n    let code1;\n    while ((code1 = this._lookBits(12)) === 0) {\n      this._eatBits(1);\n    }\n    if (code1 === 1) {\n      this._eatBits(12);\n    }\n    if (this.encoding > 0) {\n      this.nextLine2D = !this._lookBits(1);\n      this._eatBits(1);\n    }\n  }\n\n  CCITTFaxDecoder.prototype = {\n    readNextChar() {\n      if (this.eof) {\n        return -1;\n      }\n      const refLine = this.refLine;\n      const codingLine = this.codingLine;\n      const columns = this.columns;\n\n      let refPos, blackPixels, bits, i;\n\n      if (this.outputBits === 0) {\n        if (this.rowsDone) {\n          this.eof = true;\n        }\n        if (this.eof) {\n          return -1;\n        }\n        this.err = false;\n\n        let code1, code2, code3;\n        if (this.nextLine2D) {\n          for (i = 0; codingLine[i] < columns; ++i) {\n            refLine[i] = codingLine[i];\n          }\n          refLine[i++] = columns;\n          refLine[i] = columns;\n          codingLine[0] = 0;\n          this.codingPos = 0;\n          refPos = 0;\n          blackPixels = 0;\n\n          while (codingLine[this.codingPos] < columns) {\n            code1 = this._getTwoDimCode();\n            switch (code1) {\n              case twoDimPass:\n                this._addPixels(refLine[refPos + 1], blackPixels);\n                if (refLine[refPos + 1] < columns) {\n                  refPos += 2;\n                }\n                break;\n              case twoDimHoriz:\n                code1 = code2 = 0;\n                if (blackPixels) {\n                  do {\n                    code1 += code3 = this._getBlackCode();\n                  } while (code3 >= 64);\n                  do {\n                    code2 += code3 = this._getWhiteCode();\n                  } while (code3 >= 64);\n                } else {\n                  do {\n                    code1 += code3 = this._getWhiteCode();\n                  } while (code3 >= 64);\n                  do {\n                    code2 += code3 = this._getBlackCode();\n                  } while (code3 >= 64);\n                }\n                this._addPixels(\n                  codingLine[this.codingPos] + code1,\n                  blackPixels\n                );\n                if (codingLine[this.codingPos] < columns) {\n                  this._addPixels(\n                    codingLine[this.codingPos] + code2,\n                    blackPixels ^ 1\n                  );\n                }\n                while (\n                  refLine[refPos] <= codingLine[this.codingPos] &&\n                  refLine[refPos] < columns\n                ) {\n                  refPos += 2;\n                }\n                break;\n              case twoDimVertR3:\n                this._addPixels(refLine[refPos] + 3, blackPixels);\n                blackPixels ^= 1;\n                if (codingLine[this.codingPos] < columns) {\n                  ++refPos;\n                  while (\n                    refLine[refPos] <= codingLine[this.codingPos] &&\n                    refLine[refPos] < columns\n                  ) {\n                    refPos += 2;\n                  }\n                }\n                break;\n              case twoDimVertR2:\n                this._addPixels(refLine[refPos] + 2, blackPixels);\n                blackPixels ^= 1;\n                if (codingLine[this.codingPos] < columns) {\n                  ++refPos;\n                  while (\n                    refLine[refPos] <= codingLine[this.codingPos] &&\n                    refLine[refPos] < columns\n                  ) {\n                    refPos += 2;\n                  }\n                }\n                break;\n              case twoDimVertR1:\n                this._addPixels(refLine[refPos] + 1, blackPixels);\n                blackPixels ^= 1;\n                if (codingLine[this.codingPos] < columns) {\n                  ++refPos;\n                  while (\n                    refLine[refPos] <= codingLine[this.codingPos] &&\n                    refLine[refPos] < columns\n                  ) {\n                    refPos += 2;\n                  }\n                }\n                break;\n              case twoDimVert0:\n                this._addPixels(refLine[refPos], blackPixels);\n                blackPixels ^= 1;\n                if (codingLine[this.codingPos] < columns) {\n                  ++refPos;\n                  while (\n                    refLine[refPos] <= codingLine[this.codingPos] &&\n                    refLine[refPos] < columns\n                  ) {\n                    refPos += 2;\n                  }\n                }\n                break;\n              case twoDimVertL3:\n                this._addPixelsNeg(refLine[refPos] - 3, blackPixels);\n                blackPixels ^= 1;\n                if (codingLine[this.codingPos] < columns) {\n                  if (refPos > 0) {\n                    --refPos;\n                  } else {\n                    ++refPos;\n                  }\n                  while (\n                    refLine[refPos] <= codingLine[this.codingPos] &&\n                    refLine[refPos] < columns\n                  ) {\n                    refPos += 2;\n                  }\n                }\n                break;\n              case twoDimVertL2:\n                this._addPixelsNeg(refLine[refPos] - 2, blackPixels);\n                blackPixels ^= 1;\n                if (codingLine[this.codingPos] < columns) {\n                  if (refPos > 0) {\n                    --refPos;\n                  } else {\n                    ++refPos;\n                  }\n                  while (\n                    refLine[refPos] <= codingLine[this.codingPos] &&\n                    refLine[refPos] < columns\n                  ) {\n                    refPos += 2;\n                  }\n                }\n                break;\n              case twoDimVertL1:\n                this._addPixelsNeg(refLine[refPos] - 1, blackPixels);\n                blackPixels ^= 1;\n                if (codingLine[this.codingPos] < columns) {\n                  if (refPos > 0) {\n                    --refPos;\n                  } else {\n                    ++refPos;\n                  }\n                  while (\n                    refLine[refPos] <= codingLine[this.codingPos] &&\n                    refLine[refPos] < columns\n                  ) {\n                    refPos += 2;\n                  }\n                }\n                break;\n              case ccittEOF:\n                this._addPixels(columns, 0);\n                this.eof = true;\n                break;\n              default:\n                info(\"bad 2d code\");\n                this._addPixels(columns, 0);\n                this.err = true;\n            }\n          }\n        } else {\n          codingLine[0] = 0;\n          this.codingPos = 0;\n          blackPixels = 0;\n          while (codingLine[this.codingPos] < columns) {\n            code1 = 0;\n            if (blackPixels) {\n              do {\n                code1 += code3 = this._getBlackCode();\n              } while (code3 >= 64);\n            } else {\n              do {\n                code1 += code3 = this._getWhiteCode();\n              } while (code3 >= 64);\n            }\n            this._addPixels(codingLine[this.codingPos] + code1, blackPixels);\n            blackPixels ^= 1;\n          }\n        }\n\n        let gotEOL = false;\n\n        if (this.byteAlign) {\n          this.inputBits &= ~7;\n        }\n\n        if (!this.eoblock && this.row === this.rows - 1) {\n          this.rowsDone = true;\n        } else {\n          code1 = this._lookBits(12);\n          if (this.eoline) {\n            while (code1 !== ccittEOF && code1 !== 1) {\n              this._eatBits(1);\n              code1 = this._lookBits(12);\n            }\n          } else {\n            while (code1 === 0) {\n              this._eatBits(1);\n              code1 = this._lookBits(12);\n            }\n          }\n          if (code1 === 1) {\n            this._eatBits(12);\n            gotEOL = true;\n          } else if (code1 === ccittEOF) {\n            this.eof = true;\n          }\n        }\n\n        if (!this.eof && this.encoding > 0 && !this.rowsDone) {\n          this.nextLine2D = !this._lookBits(1);\n          this._eatBits(1);\n        }\n\n        if (this.eoblock && gotEOL && this.byteAlign) {\n          code1 = this._lookBits(12);\n          if (code1 === 1) {\n            this._eatBits(12);\n            if (this.encoding > 0) {\n              this._lookBits(1);\n              this._eatBits(1);\n            }\n            if (this.encoding >= 0) {\n              for (i = 0; i < 4; ++i) {\n                code1 = this._lookBits(12);\n                if (code1 !== 1) {\n                  info(\"bad rtc code: \" + code1);\n                }\n                this._eatBits(12);\n                if (this.encoding > 0) {\n                  this._lookBits(1);\n                  this._eatBits(1);\n                }\n              }\n            }\n            this.eof = true;\n          }\n        } else if (this.err && this.eoline) {\n          while (true) {\n            code1 = this._lookBits(13);\n            if (code1 === ccittEOF) {\n              this.eof = true;\n              return -1;\n            }\n            if (code1 >> 1 === 1) {\n              break;\n            }\n            this._eatBits(1);\n          }\n          this._eatBits(12);\n          if (this.encoding > 0) {\n            this._eatBits(1);\n            this.nextLine2D = !(code1 & 1);\n          }\n        }\n\n        if (codingLine[0] > 0) {\n          this.outputBits = codingLine[(this.codingPos = 0)];\n        } else {\n          this.outputBits = codingLine[(this.codingPos = 1)];\n        }\n        this.row++;\n      }\n\n      let c;\n      if (this.outputBits >= 8) {\n        c = this.codingPos & 1 ? 0 : 0xff;\n        this.outputBits -= 8;\n        if (this.outputBits === 0 && codingLine[this.codingPos] < columns) {\n          this.codingPos++;\n          this.outputBits =\n            codingLine[this.codingPos] - codingLine[this.codingPos - 1];\n        }\n      } else {\n        bits = 8;\n        c = 0;\n        do {\n          if (this.outputBits > bits) {\n            c <<= bits;\n            if (!(this.codingPos & 1)) {\n              c |= 0xff >> (8 - bits);\n            }\n            this.outputBits -= bits;\n            bits = 0;\n          } else {\n            c <<= this.outputBits;\n            if (!(this.codingPos & 1)) {\n              c |= 0xff >> (8 - this.outputBits);\n            }\n            bits -= this.outputBits;\n            this.outputBits = 0;\n            if (codingLine[this.codingPos] < columns) {\n              this.codingPos++;\n              this.outputBits =\n                codingLine[this.codingPos] - codingLine[this.codingPos - 1];\n            } else if (bits > 0) {\n              c <<= bits;\n              bits = 0;\n            }\n          }\n        } while (bits);\n      }\n      if (this.black) {\n        c ^= 0xff;\n      }\n      return c;\n    },\n\n    /**\n     * @private\n     */\n    _addPixels(a1, blackPixels) {\n      const codingLine = this.codingLine;\n      let codingPos = this.codingPos;\n\n      if (a1 > codingLine[codingPos]) {\n        if (a1 > this.columns) {\n          info(\"row is wrong length\");\n          this.err = true;\n          a1 = this.columns;\n        }\n        if ((codingPos & 1) ^ blackPixels) {\n          ++codingPos;\n        }\n\n        codingLine[codingPos] = a1;\n      }\n      this.codingPos = codingPos;\n    },\n\n    /**\n     * @private\n     */\n    _addPixelsNeg(a1, blackPixels) {\n      const codingLine = this.codingLine;\n      let codingPos = this.codingPos;\n\n      if (a1 > codingLine[codingPos]) {\n        if (a1 > this.columns) {\n          info(\"row is wrong length\");\n          this.err = true;\n          a1 = this.columns;\n        }\n        if ((codingPos & 1) ^ blackPixels) {\n          ++codingPos;\n        }\n\n        codingLine[codingPos] = a1;\n      } else if (a1 < codingLine[codingPos]) {\n        if (a1 < 0) {\n          info(\"invalid code\");\n          this.err = true;\n          a1 = 0;\n        }\n        while (codingPos > 0 && a1 < codingLine[codingPos - 1]) {\n          --codingPos;\n        }\n        codingLine[codingPos] = a1;\n      }\n\n      this.codingPos = codingPos;\n    },\n\n    /**\n     * This function returns the code found from the table.\n     * The start and end parameters set the boundaries for searching the table.\n     * The limit parameter is optional. Function returns an array with three\n     * values. The first array element indicates whether a valid code is being\n     * returned. The second array element is the actual code. The third array\n     * element indicates whether EOF was reached.\n     * @private\n     */\n    _findTableCode(start, end, table, limit) {\n      const limitValue = limit || 0;\n      for (let i = start; i <= end; ++i) {\n        let code = this._lookBits(i);\n        if (code === ccittEOF) {\n          return [true, 1, false];\n        }\n        if (i < end) {\n          code <<= end - i;\n        }\n        if (!limitValue || code >= limitValue) {\n          const p = table[code - limitValue];\n          if (p[0] === i) {\n            this._eatBits(i);\n            return [true, p[1], true];\n          }\n        }\n      }\n      return [false, 0, false];\n    },\n\n    /**\n     * @private\n     */\n    _getTwoDimCode() {\n      let code = 0;\n      let p;\n      if (this.eoblock) {\n        code = this._lookBits(7);\n        p = twoDimTable[code];\n        if (p && p[0] > 0) {\n          this._eatBits(p[0]);\n          return p[1];\n        }\n      } else {\n        const result = this._findTableCode(1, 7, twoDimTable);\n        if (result[0] && result[2]) {\n          return result[1];\n        }\n      }\n      info(\"Bad two dim code\");\n      return ccittEOF;\n    },\n\n    /**\n     * @private\n     */\n    _getWhiteCode() {\n      let code = 0;\n      let p;\n      if (this.eoblock) {\n        code = this._lookBits(12);\n        if (code === ccittEOF) {\n          return 1;\n        }\n\n        if (code >> 5 === 0) {\n          p = whiteTable1[code];\n        } else {\n          p = whiteTable2[code >> 3];\n        }\n\n        if (p[0] > 0) {\n          this._eatBits(p[0]);\n          return p[1];\n        }\n      } else {\n        let result = this._findTableCode(1, 9, whiteTable2);\n        if (result[0]) {\n          return result[1];\n        }\n\n        result = this._findTableCode(11, 12, whiteTable1);\n        if (result[0]) {\n          return result[1];\n        }\n      }\n      info(\"bad white code\");\n      this._eatBits(1);\n      return 1;\n    },\n\n    /**\n     * @private\n     */\n    _getBlackCode() {\n      let code, p;\n      if (this.eoblock) {\n        code = this._lookBits(13);\n        if (code === ccittEOF) {\n          return 1;\n        }\n        if (code >> 7 === 0) {\n          p = blackTable1[code];\n        } else if (code >> 9 === 0 && code >> 7 !== 0) {\n          p = blackTable2[(code >> 1) - 64];\n        } else {\n          p = blackTable3[code >> 7];\n        }\n\n        if (p[0] > 0) {\n          this._eatBits(p[0]);\n          return p[1];\n        }\n      } else {\n        let result = this._findTableCode(2, 6, blackTable3);\n        if (result[0]) {\n          return result[1];\n        }\n\n        result = this._findTableCode(7, 12, blackTable2, 64);\n        if (result[0]) {\n          return result[1];\n        }\n\n        result = this._findTableCode(10, 13, blackTable1);\n        if (result[0]) {\n          return result[1];\n        }\n      }\n      info(\"bad black code\");\n      this._eatBits(1);\n      return 1;\n    },\n\n    /**\n     * @private\n     */\n    _lookBits(n) {\n      let c;\n      while (this.inputBits < n) {\n        if ((c = this.source.next()) === -1) {\n          if (this.inputBits === 0) {\n            return ccittEOF;\n          }\n          return (this.inputBuf << (n - this.inputBits)) & (0xffff >> (16 - n));\n        }\n        this.inputBuf = (this.inputBuf << 8) | c;\n        this.inputBits += 8;\n      }\n      return (this.inputBuf >> (this.inputBits - n)) & (0xffff >> (16 - n));\n    },\n\n    /**\n     * @private\n     */\n    _eatBits(n) {\n      if ((this.inputBits -= n) < 0) {\n        this.inputBits = 0;\n      }\n    },\n  };\n\n  return CCITTFaxDecoder;\n})();\n\nexport { CCITTFaxDecoder };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isDict, isStream } from \"./primitives.js\";\nimport { DecodeStream } from \"./stream.js\";\nimport { Jbig2Image } from \"./jbig2.js\";\nimport { shadow } from \"../shared/util.js\";\n\n/**\n * For JBIG2's we use a library to decode these images and\n * the stream behaves like all the other DecodeStreams.\n */\nconst Jbig2Stream = (function Jbig2StreamClosure() {\n  // eslint-disable-next-line no-shadow\n  function Jbig2Stream(stream, maybeLength, dict, params) {\n    this.stream = stream;\n    this.maybeLength = maybeLength;\n    this.dict = dict;\n    this.params = params;\n\n    DecodeStream.call(this, maybeLength);\n  }\n\n  Jbig2Stream.prototype = Object.create(DecodeStream.prototype);\n\n  Object.defineProperty(Jbig2Stream.prototype, \"bytes\", {\n    get() {\n      // If `this.maybeLength` is null, we'll get the entire stream.\n      return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n    },\n    configurable: true,\n  });\n\n  Jbig2Stream.prototype.ensureBuffer = function (requested) {\n    // No-op, since `this.readBlock` will always parse the entire image and\n    // directly insert all of its data into `this.buffer`.\n  };\n\n  Jbig2Stream.prototype.readBlock = function () {\n    if (this.eof) {\n      return;\n    }\n    const jbig2Image = new Jbig2Image();\n\n    const chunks = [];\n    if (isDict(this.params)) {\n      const globalsStream = this.params.get(\"JBIG2Globals\");\n      if (isStream(globalsStream)) {\n        const globals = globalsStream.getBytes();\n        chunks.push({ data: globals, start: 0, end: globals.length });\n      }\n    }\n    chunks.push({ data: this.bytes, start: 0, end: this.bytes.length });\n    const data = jbig2Image.parseChunks(chunks);\n    const dataLength = data.length;\n\n    // JBIG2 had black as 1 and white as 0, inverting the colors\n    for (let i = 0; i < dataLength; i++) {\n      data[i] ^= 0xff;\n    }\n    this.buffer = data;\n    this.bufferLength = dataLength;\n    this.eof = true;\n  };\n\n  return Jbig2Stream;\n})();\n\nexport { Jbig2Stream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseException, shadow } from \"../shared/util.js\";\nimport { log2, readInt8, readUint16, readUint32 } from \"./core_utils.js\";\nimport { ArithmeticDecoder } from \"./arithmetic_decoder.js\";\nimport { CCITTFaxDecoder } from \"./ccitt.js\";\n\nclass Jbig2Error extends BaseException {\n  constructor(msg) {\n    super(`JBIG2 error: ${msg}`);\n  }\n}\n\nvar Jbig2Image = (function Jbig2ImageClosure() {\n  // Utility data structures\n  function ContextCache() {}\n\n  ContextCache.prototype = {\n    getContexts(id) {\n      if (id in this) {\n        return this[id];\n      }\n      return (this[id] = new Int8Array(1 << 16));\n    },\n  };\n\n  function DecodingContext(data, start, end) {\n    this.data = data;\n    this.start = start;\n    this.end = end;\n  }\n\n  DecodingContext.prototype = {\n    get decoder() {\n      var decoder = new ArithmeticDecoder(this.data, this.start, this.end);\n      return shadow(this, \"decoder\", decoder);\n    },\n    get contextCache() {\n      var cache = new ContextCache();\n      return shadow(this, \"contextCache\", cache);\n    },\n  };\n\n  // Annex A. Arithmetic Integer Decoding Procedure\n  // A.2 Procedure for decoding values\n  function decodeInteger(contextCache, procedure, decoder) {\n    var contexts = contextCache.getContexts(procedure);\n    var prev = 1;\n\n    function readBits(length) {\n      var v = 0;\n      for (var i = 0; i < length; i++) {\n        var bit = decoder.readBit(contexts, prev);\n        prev =\n          prev < 256 ? (prev << 1) | bit : (((prev << 1) | bit) & 511) | 256;\n        v = (v << 1) | bit;\n      }\n      return v >>> 0;\n    }\n\n    var sign = readBits(1);\n    // prettier-ignore\n    /* eslint-disable no-nested-ternary */\n    var value = readBits(1) ?\n                  (readBits(1) ?\n                    (readBits(1) ?\n                      (readBits(1) ?\n                        (readBits(1) ?\n                          (readBits(32) + 4436) :\n                        readBits(12) + 340) :\n                      readBits(8) + 84) :\n                    readBits(6) + 20) :\n                  readBits(4) + 4) :\n                readBits(2);\n    /* eslint-enable no-nested-ternary */\n    if (sign === 0) {\n      return value;\n    } else if (value > 0) {\n      return -value;\n    }\n    return null;\n  }\n\n  // A.3 The IAID decoding procedure\n  function decodeIAID(contextCache, decoder, codeLength) {\n    var contexts = contextCache.getContexts(\"IAID\");\n\n    var prev = 1;\n    for (var i = 0; i < codeLength; i++) {\n      var bit = decoder.readBit(contexts, prev);\n      prev = (prev << 1) | bit;\n    }\n    if (codeLength < 31) {\n      return prev & ((1 << codeLength) - 1);\n    }\n    return prev & 0x7fffffff;\n  }\n\n  // 7.3 Segment types\n  var SegmentTypes = [\n    \"SymbolDictionary\",\n    null,\n    null,\n    null,\n    \"IntermediateTextRegion\",\n    null,\n    \"ImmediateTextRegion\",\n    \"ImmediateLosslessTextRegion\",\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    \"PatternDictionary\",\n    null,\n    null,\n    null,\n    \"IntermediateHalftoneRegion\",\n    null,\n    \"ImmediateHalftoneRegion\",\n    \"ImmediateLosslessHalftoneRegion\",\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    \"IntermediateGenericRegion\",\n    null,\n    \"ImmediateGenericRegion\",\n    \"ImmediateLosslessGenericRegion\",\n    \"IntermediateGenericRefinementRegion\",\n    null,\n    \"ImmediateGenericRefinementRegion\",\n    \"ImmediateLosslessGenericRefinementRegion\",\n    null,\n    null,\n    null,\n    null,\n    \"PageInformation\",\n    \"EndOfPage\",\n    \"EndOfStripe\",\n    \"EndOfFile\",\n    \"Profiles\",\n    \"Tables\",\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    \"Extension\",\n  ];\n\n  var CodingTemplates = [\n    [\n      { x: -1, y: -2 },\n      { x: 0, y: -2 },\n      { x: 1, y: -2 },\n      { x: -2, y: -1 },\n      { x: -1, y: -1 },\n      { x: 0, y: -1 },\n      { x: 1, y: -1 },\n      { x: 2, y: -1 },\n      { x: -4, y: 0 },\n      { x: -3, y: 0 },\n      { x: -2, y: 0 },\n      { x: -1, y: 0 },\n    ],\n    [\n      { x: -1, y: -2 },\n      { x: 0, y: -2 },\n      { x: 1, y: -2 },\n      { x: 2, y: -2 },\n      { x: -2, y: -1 },\n      { x: -1, y: -1 },\n      { x: 0, y: -1 },\n      { x: 1, y: -1 },\n      { x: 2, y: -1 },\n      { x: -3, y: 0 },\n      { x: -2, y: 0 },\n      { x: -1, y: 0 },\n    ],\n    [\n      { x: -1, y: -2 },\n      { x: 0, y: -2 },\n      { x: 1, y: -2 },\n      { x: -2, y: -1 },\n      { x: -1, y: -1 },\n      { x: 0, y: -1 },\n      { x: 1, y: -1 },\n      { x: -2, y: 0 },\n      { x: -1, y: 0 },\n    ],\n    [\n      { x: -3, y: -1 },\n      { x: -2, y: -1 },\n      { x: -1, y: -1 },\n      { x: 0, y: -1 },\n      { x: 1, y: -1 },\n      { x: -4, y: 0 },\n      { x: -3, y: 0 },\n      { x: -2, y: 0 },\n      { x: -1, y: 0 },\n    ],\n  ];\n\n  var RefinementTemplates = [\n    {\n      coding: [\n        { x: 0, y: -1 },\n        { x: 1, y: -1 },\n        { x: -1, y: 0 },\n      ],\n      reference: [\n        { x: 0, y: -1 },\n        { x: 1, y: -1 },\n        { x: -1, y: 0 },\n        { x: 0, y: 0 },\n        { x: 1, y: 0 },\n        { x: -1, y: 1 },\n        { x: 0, y: 1 },\n        { x: 1, y: 1 },\n      ],\n    },\n    {\n      coding: [\n        { x: -1, y: -1 },\n        { x: 0, y: -1 },\n        { x: 1, y: -1 },\n        { x: -1, y: 0 },\n      ],\n      reference: [\n        { x: 0, y: -1 },\n        { x: -1, y: 0 },\n        { x: 0, y: 0 },\n        { x: 1, y: 0 },\n        { x: 0, y: 1 },\n        { x: 1, y: 1 },\n      ],\n    },\n  ];\n\n  // See 6.2.5.7 Decoding the bitmap.\n  var ReusedContexts = [\n    0x9b25, // 10011 0110010 0101\n    0x0795, // 0011 110010 101\n    0x00e5, // 001 11001 01\n    0x0195, // 011001 0101\n  ];\n\n  var RefinementReusedContexts = [\n    0x0020, // '000' + '0' (coding) + '00010000' + '0' (reference)\n    0x0008, // '0000' + '001000'\n  ];\n\n  function decodeBitmapTemplate0(width, height, decodingContext) {\n    var decoder = decodingContext.decoder;\n    var contexts = decodingContext.contextCache.getContexts(\"GB\");\n    var contextLabel,\n      i,\n      j,\n      pixel,\n      row,\n      row1,\n      row2,\n      bitmap = [];\n\n    // ...ooooo....\n    // ..ooooooo... Context template for current pixel (X)\n    // .ooooX...... (concatenate values of 'o'-pixels to get contextLabel)\n    var OLD_PIXEL_MASK = 0x7bf7; // 01111 0111111 0111\n\n    for (i = 0; i < height; i++) {\n      row = bitmap[i] = new Uint8Array(width);\n      row1 = i < 1 ? row : bitmap[i - 1];\n      row2 = i < 2 ? row : bitmap[i - 2];\n\n      // At the beginning of each row:\n      // Fill contextLabel with pixels that are above/right of (X)\n      contextLabel =\n        (row2[0] << 13) |\n        (row2[1] << 12) |\n        (row2[2] << 11) |\n        (row1[0] << 7) |\n        (row1[1] << 6) |\n        (row1[2] << 5) |\n        (row1[3] << 4);\n\n      for (j = 0; j < width; j++) {\n        row[j] = pixel = decoder.readBit(contexts, contextLabel);\n\n        // At each pixel: Clear contextLabel pixels that are shifted\n        // out of the context, then add new ones.\n        contextLabel =\n          ((contextLabel & OLD_PIXEL_MASK) << 1) |\n          (j + 3 < width ? row2[j + 3] << 11 : 0) |\n          (j + 4 < width ? row1[j + 4] << 4 : 0) |\n          pixel;\n      }\n    }\n\n    return bitmap;\n  }\n\n  // 6.2 Generic Region Decoding Procedure\n  function decodeBitmap(\n    mmr,\n    width,\n    height,\n    templateIndex,\n    prediction,\n    skip,\n    at,\n    decodingContext\n  ) {\n    if (mmr) {\n      const input = new Reader(\n        decodingContext.data,\n        decodingContext.start,\n        decodingContext.end\n      );\n      return decodeMMRBitmap(input, width, height, false);\n    }\n\n    // Use optimized version for the most common case\n    if (\n      templateIndex === 0 &&\n      !skip &&\n      !prediction &&\n      at.length === 4 &&\n      at[0].x === 3 &&\n      at[0].y === -1 &&\n      at[1].x === -3 &&\n      at[1].y === -1 &&\n      at[2].x === 2 &&\n      at[2].y === -2 &&\n      at[3].x === -2 &&\n      at[3].y === -2\n    ) {\n      return decodeBitmapTemplate0(width, height, decodingContext);\n    }\n\n    var useskip = !!skip;\n    var template = CodingTemplates[templateIndex].concat(at);\n\n    // Sorting is non-standard, and it is not required. But sorting increases\n    // the number of template bits that can be reused from the previous\n    // contextLabel in the main loop.\n    template.sort(function (a, b) {\n      return a.y - b.y || a.x - b.x;\n    });\n\n    var templateLength = template.length;\n    var templateX = new Int8Array(templateLength);\n    var templateY = new Int8Array(templateLength);\n    var changingTemplateEntries = [];\n    var reuseMask = 0,\n      minX = 0,\n      maxX = 0,\n      minY = 0;\n    var c, k;\n\n    for (k = 0; k < templateLength; k++) {\n      templateX[k] = template[k].x;\n      templateY[k] = template[k].y;\n      minX = Math.min(minX, template[k].x);\n      maxX = Math.max(maxX, template[k].x);\n      minY = Math.min(minY, template[k].y);\n      // Check if the template pixel appears in two consecutive context labels,\n      // so it can be reused. Otherwise, we add it to the list of changing\n      // template entries.\n      if (\n        k < templateLength - 1 &&\n        template[k].y === template[k + 1].y &&\n        template[k].x === template[k + 1].x - 1\n      ) {\n        reuseMask |= 1 << (templateLength - 1 - k);\n      } else {\n        changingTemplateEntries.push(k);\n      }\n    }\n    var changingEntriesLength = changingTemplateEntries.length;\n\n    var changingTemplateX = new Int8Array(changingEntriesLength);\n    var changingTemplateY = new Int8Array(changingEntriesLength);\n    var changingTemplateBit = new Uint16Array(changingEntriesLength);\n    for (c = 0; c < changingEntriesLength; c++) {\n      k = changingTemplateEntries[c];\n      changingTemplateX[c] = template[k].x;\n      changingTemplateY[c] = template[k].y;\n      changingTemplateBit[c] = 1 << (templateLength - 1 - k);\n    }\n\n    // Get the safe bounding box edges from the width, height, minX, maxX, minY\n    var sbb_left = -minX;\n    var sbb_top = -minY;\n    var sbb_right = width - maxX;\n\n    var pseudoPixelContext = ReusedContexts[templateIndex];\n    var row = new Uint8Array(width);\n    var bitmap = [];\n\n    var decoder = decodingContext.decoder;\n    var contexts = decodingContext.contextCache.getContexts(\"GB\");\n\n    var ltp = 0,\n      j,\n      i0,\n      j0,\n      contextLabel = 0,\n      bit,\n      shift;\n    for (var i = 0; i < height; i++) {\n      if (prediction) {\n        var sltp = decoder.readBit(contexts, pseudoPixelContext);\n        ltp ^= sltp;\n        if (ltp) {\n          bitmap.push(row); // duplicate previous row\n          continue;\n        }\n      }\n      row = new Uint8Array(row);\n      bitmap.push(row);\n      for (j = 0; j < width; j++) {\n        if (useskip && skip[i][j]) {\n          row[j] = 0;\n          continue;\n        }\n        // Are we in the middle of a scanline, so we can reuse contextLabel\n        // bits?\n        if (j >= sbb_left && j < sbb_right && i >= sbb_top) {\n          // If yes, we can just shift the bits that are reusable and only\n          // fetch the remaining ones.\n          contextLabel = (contextLabel << 1) & reuseMask;\n          for (k = 0; k < changingEntriesLength; k++) {\n            i0 = i + changingTemplateY[k];\n            j0 = j + changingTemplateX[k];\n            bit = bitmap[i0][j0];\n            if (bit) {\n              bit = changingTemplateBit[k];\n              contextLabel |= bit;\n            }\n          }\n        } else {\n          // compute the contextLabel from scratch\n          contextLabel = 0;\n          shift = templateLength - 1;\n          for (k = 0; k < templateLength; k++, shift--) {\n            j0 = j + templateX[k];\n            if (j0 >= 0 && j0 < width) {\n              i0 = i + templateY[k];\n              if (i0 >= 0) {\n                bit = bitmap[i0][j0];\n                if (bit) {\n                  contextLabel |= bit << shift;\n                }\n              }\n            }\n          }\n        }\n        var pixel = decoder.readBit(contexts, contextLabel);\n        row[j] = pixel;\n      }\n    }\n    return bitmap;\n  }\n\n  // 6.3.2 Generic Refinement Region Decoding Procedure\n  function decodeRefinement(\n    width,\n    height,\n    templateIndex,\n    referenceBitmap,\n    offsetX,\n    offsetY,\n    prediction,\n    at,\n    decodingContext\n  ) {\n    var codingTemplate = RefinementTemplates[templateIndex].coding;\n    if (templateIndex === 0) {\n      codingTemplate = codingTemplate.concat([at[0]]);\n    }\n    var codingTemplateLength = codingTemplate.length;\n    var codingTemplateX = new Int32Array(codingTemplateLength);\n    var codingTemplateY = new Int32Array(codingTemplateLength);\n    var k;\n    for (k = 0; k < codingTemplateLength; k++) {\n      codingTemplateX[k] = codingTemplate[k].x;\n      codingTemplateY[k] = codingTemplate[k].y;\n    }\n\n    var referenceTemplate = RefinementTemplates[templateIndex].reference;\n    if (templateIndex === 0) {\n      referenceTemplate = referenceTemplate.concat([at[1]]);\n    }\n    var referenceTemplateLength = referenceTemplate.length;\n    var referenceTemplateX = new Int32Array(referenceTemplateLength);\n    var referenceTemplateY = new Int32Array(referenceTemplateLength);\n    for (k = 0; k < referenceTemplateLength; k++) {\n      referenceTemplateX[k] = referenceTemplate[k].x;\n      referenceTemplateY[k] = referenceTemplate[k].y;\n    }\n    var referenceWidth = referenceBitmap[0].length;\n    var referenceHeight = referenceBitmap.length;\n\n    var pseudoPixelContext = RefinementReusedContexts[templateIndex];\n    var bitmap = [];\n\n    var decoder = decodingContext.decoder;\n    var contexts = decodingContext.contextCache.getContexts(\"GR\");\n\n    var ltp = 0;\n    for (var i = 0; i < height; i++) {\n      if (prediction) {\n        var sltp = decoder.readBit(contexts, pseudoPixelContext);\n        ltp ^= sltp;\n        if (ltp) {\n          throw new Jbig2Error(\"prediction is not supported\");\n        }\n      }\n      var row = new Uint8Array(width);\n      bitmap.push(row);\n      for (var j = 0; j < width; j++) {\n        var i0, j0;\n        var contextLabel = 0;\n        for (k = 0; k < codingTemplateLength; k++) {\n          i0 = i + codingTemplateY[k];\n          j0 = j + codingTemplateX[k];\n          if (i0 < 0 || j0 < 0 || j0 >= width) {\n            contextLabel <<= 1; // out of bound pixel\n          } else {\n            contextLabel = (contextLabel << 1) | bitmap[i0][j0];\n          }\n        }\n        for (k = 0; k < referenceTemplateLength; k++) {\n          i0 = i + referenceTemplateY[k] - offsetY;\n          j0 = j + referenceTemplateX[k] - offsetX;\n          if (\n            i0 < 0 ||\n            i0 >= referenceHeight ||\n            j0 < 0 ||\n            j0 >= referenceWidth\n          ) {\n            contextLabel <<= 1; // out of bound pixel\n          } else {\n            contextLabel = (contextLabel << 1) | referenceBitmap[i0][j0];\n          }\n        }\n        var pixel = decoder.readBit(contexts, contextLabel);\n        row[j] = pixel;\n      }\n    }\n\n    return bitmap;\n  }\n\n  // 6.5.5 Decoding the symbol dictionary\n  function decodeSymbolDictionary(\n    huffman,\n    refinement,\n    symbols,\n    numberOfNewSymbols,\n    numberOfExportedSymbols,\n    huffmanTables,\n    templateIndex,\n    at,\n    refinementTemplateIndex,\n    refinementAt,\n    decodingContext,\n    huffmanInput\n  ) {\n    if (huffman && refinement) {\n      throw new Jbig2Error(\"symbol refinement with Huffman is not supported\");\n    }\n\n    var newSymbols = [];\n    var currentHeight = 0;\n    var symbolCodeLength = log2(symbols.length + numberOfNewSymbols);\n\n    var decoder = decodingContext.decoder;\n    var contextCache = decodingContext.contextCache;\n    let tableB1, symbolWidths;\n    if (huffman) {\n      tableB1 = getStandardTable(1); // standard table B.1\n      symbolWidths = [];\n      symbolCodeLength = Math.max(symbolCodeLength, 1); // 6.5.8.2.3\n    }\n\n    while (newSymbols.length < numberOfNewSymbols) {\n      var deltaHeight = huffman\n        ? huffmanTables.tableDeltaHeight.decode(huffmanInput)\n        : decodeInteger(contextCache, \"IADH\", decoder); // 6.5.6\n      currentHeight += deltaHeight;\n      let currentWidth = 0,\n        totalWidth = 0;\n      const firstSymbol = huffman ? symbolWidths.length : 0;\n      while (true) {\n        var deltaWidth = huffman\n          ? huffmanTables.tableDeltaWidth.decode(huffmanInput)\n          : decodeInteger(contextCache, \"IADW\", decoder); // 6.5.7\n        if (deltaWidth === null) {\n          break; // OOB\n        }\n        currentWidth += deltaWidth;\n        totalWidth += currentWidth;\n        var bitmap;\n        if (refinement) {\n          // 6.5.8.2 Refinement/aggregate-coded symbol bitmap\n          var numberOfInstances = decodeInteger(contextCache, \"IAAI\", decoder);\n          if (numberOfInstances > 1) {\n            bitmap = decodeTextRegion(\n              huffman,\n              refinement,\n              currentWidth,\n              currentHeight,\n              0,\n              numberOfInstances,\n              1, // strip size\n              symbols.concat(newSymbols),\n              symbolCodeLength,\n              0, // transposed\n              0, // ds offset\n              1, // top left 7.4.3.1.1\n              0, // OR operator\n              huffmanTables,\n              refinementTemplateIndex,\n              refinementAt,\n              decodingContext,\n              0,\n              huffmanInput\n            );\n          } else {\n            var symbolId = decodeIAID(contextCache, decoder, symbolCodeLength);\n            var rdx = decodeInteger(contextCache, \"IARDX\", decoder); // 6.4.11.3\n            var rdy = decodeInteger(contextCache, \"IARDY\", decoder); // 6.4.11.4\n            var symbol =\n              symbolId < symbols.length\n                ? symbols[symbolId]\n                : newSymbols[symbolId - symbols.length];\n            bitmap = decodeRefinement(\n              currentWidth,\n              currentHeight,\n              refinementTemplateIndex,\n              symbol,\n              rdx,\n              rdy,\n              false,\n              refinementAt,\n              decodingContext\n            );\n          }\n          newSymbols.push(bitmap);\n        } else if (huffman) {\n          // Store only symbol width and decode a collective bitmap when the\n          // height class is done.\n          symbolWidths.push(currentWidth);\n        } else {\n          // 6.5.8.1 Direct-coded symbol bitmap\n          bitmap = decodeBitmap(\n            false,\n            currentWidth,\n            currentHeight,\n            templateIndex,\n            false,\n            null,\n            at,\n            decodingContext\n          );\n          newSymbols.push(bitmap);\n        }\n      }\n      if (huffman && !refinement) {\n        // 6.5.9 Height class collective bitmap\n        const bitmapSize = huffmanTables.tableBitmapSize.decode(huffmanInput);\n        huffmanInput.byteAlign();\n        let collectiveBitmap;\n        if (bitmapSize === 0) {\n          // Uncompressed collective bitmap\n          collectiveBitmap = readUncompressedBitmap(\n            huffmanInput,\n            totalWidth,\n            currentHeight\n          );\n        } else {\n          // MMR collective bitmap\n          const originalEnd = huffmanInput.end;\n          const bitmapEnd = huffmanInput.position + bitmapSize;\n          huffmanInput.end = bitmapEnd;\n          collectiveBitmap = decodeMMRBitmap(\n            huffmanInput,\n            totalWidth,\n            currentHeight,\n            false\n          );\n          huffmanInput.end = originalEnd;\n          huffmanInput.position = bitmapEnd;\n        }\n        const numberOfSymbolsDecoded = symbolWidths.length;\n        if (firstSymbol === numberOfSymbolsDecoded - 1) {\n          // collectiveBitmap is a single symbol.\n          newSymbols.push(collectiveBitmap);\n        } else {\n          // Divide collectiveBitmap into symbols.\n          let i,\n            y,\n            xMin = 0,\n            xMax,\n            bitmapWidth,\n            symbolBitmap;\n          for (i = firstSymbol; i < numberOfSymbolsDecoded; i++) {\n            bitmapWidth = symbolWidths[i];\n            xMax = xMin + bitmapWidth;\n            symbolBitmap = [];\n            for (y = 0; y < currentHeight; y++) {\n              symbolBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));\n            }\n            newSymbols.push(symbolBitmap);\n            xMin = xMax;\n          }\n        }\n      }\n    }\n\n    // 6.5.10 Exported symbols\n    var exportedSymbols = [];\n    var flags = [],\n      currentFlag = false;\n    var totalSymbolsLength = symbols.length + numberOfNewSymbols;\n    while (flags.length < totalSymbolsLength) {\n      var runLength = huffman\n        ? tableB1.decode(huffmanInput)\n        : decodeInteger(contextCache, \"IAEX\", decoder);\n      while (runLength--) {\n        flags.push(currentFlag);\n      }\n      currentFlag = !currentFlag;\n    }\n    for (var i = 0, ii = symbols.length; i < ii; i++) {\n      if (flags[i]) {\n        exportedSymbols.push(symbols[i]);\n      }\n    }\n    for (var j = 0; j < numberOfNewSymbols; i++, j++) {\n      if (flags[i]) {\n        exportedSymbols.push(newSymbols[j]);\n      }\n    }\n    return exportedSymbols;\n  }\n\n  function decodeTextRegion(\n    huffman,\n    refinement,\n    width,\n    height,\n    defaultPixelValue,\n    numberOfSymbolInstances,\n    stripSize,\n    inputSymbols,\n    symbolCodeLength,\n    transposed,\n    dsOffset,\n    referenceCorner,\n    combinationOperator,\n    huffmanTables,\n    refinementTemplateIndex,\n    refinementAt,\n    decodingContext,\n    logStripSize,\n    huffmanInput\n  ) {\n    if (huffman && refinement) {\n      throw new Jbig2Error(\"refinement with Huffman is not supported\");\n    }\n\n    // Prepare bitmap\n    var bitmap = [];\n    var i, row;\n    for (i = 0; i < height; i++) {\n      row = new Uint8Array(width);\n      if (defaultPixelValue) {\n        for (var j = 0; j < width; j++) {\n          row[j] = defaultPixelValue;\n        }\n      }\n      bitmap.push(row);\n    }\n\n    var decoder = decodingContext.decoder;\n    var contextCache = decodingContext.contextCache;\n\n    var stripT = huffman\n      ? -huffmanTables.tableDeltaT.decode(huffmanInput)\n      : -decodeInteger(contextCache, \"IADT\", decoder); // 6.4.6\n    var firstS = 0;\n    i = 0;\n    while (i < numberOfSymbolInstances) {\n      var deltaT = huffman\n        ? huffmanTables.tableDeltaT.decode(huffmanInput)\n        : decodeInteger(contextCache, \"IADT\", decoder); // 6.4.6\n      stripT += deltaT;\n\n      var deltaFirstS = huffman\n        ? huffmanTables.tableFirstS.decode(huffmanInput)\n        : decodeInteger(contextCache, \"IAFS\", decoder); // 6.4.7\n      firstS += deltaFirstS;\n      var currentS = firstS;\n      do {\n        let currentT = 0; // 6.4.9\n        if (stripSize > 1) {\n          currentT = huffman\n            ? huffmanInput.readBits(logStripSize)\n            : decodeInteger(contextCache, \"IAIT\", decoder);\n        }\n        var t = stripSize * stripT + currentT;\n        var symbolId = huffman\n          ? huffmanTables.symbolIDTable.decode(huffmanInput)\n          : decodeIAID(contextCache, decoder, symbolCodeLength);\n        var applyRefinement =\n          refinement &&\n          (huffman\n            ? huffmanInput.readBit()\n            : decodeInteger(contextCache, \"IARI\", decoder));\n        var symbolBitmap = inputSymbols[symbolId];\n        var symbolWidth = symbolBitmap[0].length;\n        var symbolHeight = symbolBitmap.length;\n        if (applyRefinement) {\n          var rdw = decodeInteger(contextCache, \"IARDW\", decoder); // 6.4.11.1\n          var rdh = decodeInteger(contextCache, \"IARDH\", decoder); // 6.4.11.2\n          var rdx = decodeInteger(contextCache, \"IARDX\", decoder); // 6.4.11.3\n          var rdy = decodeInteger(contextCache, \"IARDY\", decoder); // 6.4.11.4\n          symbolWidth += rdw;\n          symbolHeight += rdh;\n          symbolBitmap = decodeRefinement(\n            symbolWidth,\n            symbolHeight,\n            refinementTemplateIndex,\n            symbolBitmap,\n            (rdw >> 1) + rdx,\n            (rdh >> 1) + rdy,\n            false,\n            refinementAt,\n            decodingContext\n          );\n        }\n        var offsetT = t - (referenceCorner & 1 ? 0 : symbolHeight - 1);\n        var offsetS = currentS - (referenceCorner & 2 ? symbolWidth - 1 : 0);\n        var s2, t2, symbolRow;\n        if (transposed) {\n          // Place Symbol Bitmap from T1,S1\n          for (s2 = 0; s2 < symbolHeight; s2++) {\n            row = bitmap[offsetS + s2];\n            if (!row) {\n              continue;\n            }\n            symbolRow = symbolBitmap[s2];\n            // To ignore Parts of Symbol bitmap which goes\n            // outside bitmap region\n            var maxWidth = Math.min(width - offsetT, symbolWidth);\n            switch (combinationOperator) {\n              case 0: // OR\n                for (t2 = 0; t2 < maxWidth; t2++) {\n                  row[offsetT + t2] |= symbolRow[t2];\n                }\n                break;\n              case 2: // XOR\n                for (t2 = 0; t2 < maxWidth; t2++) {\n                  row[offsetT + t2] ^= symbolRow[t2];\n                }\n                break;\n              default:\n                throw new Jbig2Error(\n                  `operator ${combinationOperator} is not supported`\n                );\n            }\n          }\n          currentS += symbolHeight - 1;\n        } else {\n          for (t2 = 0; t2 < symbolHeight; t2++) {\n            row = bitmap[offsetT + t2];\n            if (!row) {\n              continue;\n            }\n            symbolRow = symbolBitmap[t2];\n            switch (combinationOperator) {\n              case 0: // OR\n                for (s2 = 0; s2 < symbolWidth; s2++) {\n                  row[offsetS + s2] |= symbolRow[s2];\n                }\n                break;\n              case 2: // XOR\n                for (s2 = 0; s2 < symbolWidth; s2++) {\n                  row[offsetS + s2] ^= symbolRow[s2];\n                }\n                break;\n              default:\n                throw new Jbig2Error(\n                  `operator ${combinationOperator} is not supported`\n                );\n            }\n          }\n          currentS += symbolWidth - 1;\n        }\n        i++;\n        var deltaS = huffman\n          ? huffmanTables.tableDeltaS.decode(huffmanInput)\n          : decodeInteger(contextCache, \"IADS\", decoder); // 6.4.8\n        if (deltaS === null) {\n          break; // OOB\n        }\n        currentS += deltaS + dsOffset;\n      } while (true);\n    }\n    return bitmap;\n  }\n\n  function decodePatternDictionary(\n    mmr,\n    patternWidth,\n    patternHeight,\n    maxPatternIndex,\n    template,\n    decodingContext\n  ) {\n    const at = [];\n    if (!mmr) {\n      at.push({\n        x: -patternWidth,\n        y: 0,\n      });\n      if (template === 0) {\n        at.push({\n          x: -3,\n          y: -1,\n        });\n        at.push({\n          x: 2,\n          y: -2,\n        });\n        at.push({\n          x: -2,\n          y: -2,\n        });\n      }\n    }\n    const collectiveWidth = (maxPatternIndex + 1) * patternWidth;\n    const collectiveBitmap = decodeBitmap(\n      mmr,\n      collectiveWidth,\n      patternHeight,\n      template,\n      false,\n      null,\n      at,\n      decodingContext\n    );\n    // Divide collective bitmap into patterns.\n    const patterns = [];\n    for (let i = 0; i <= maxPatternIndex; i++) {\n      const patternBitmap = [];\n      const xMin = patternWidth * i;\n      const xMax = xMin + patternWidth;\n      for (let y = 0; y < patternHeight; y++) {\n        patternBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));\n      }\n      patterns.push(patternBitmap);\n    }\n    return patterns;\n  }\n\n  function decodeHalftoneRegion(\n    mmr,\n    patterns,\n    template,\n    regionWidth,\n    regionHeight,\n    defaultPixelValue,\n    enableSkip,\n    combinationOperator,\n    gridWidth,\n    gridHeight,\n    gridOffsetX,\n    gridOffsetY,\n    gridVectorX,\n    gridVectorY,\n    decodingContext\n  ) {\n    const skip = null;\n    if (enableSkip) {\n      throw new Jbig2Error(\"skip is not supported\");\n    }\n    if (combinationOperator !== 0) {\n      throw new Jbig2Error(\n        \"operator \" +\n          combinationOperator +\n          \" is not supported in halftone region\"\n      );\n    }\n\n    // Prepare bitmap.\n    const regionBitmap = [];\n    let i, j, row;\n    for (i = 0; i < regionHeight; i++) {\n      row = new Uint8Array(regionWidth);\n      if (defaultPixelValue) {\n        for (j = 0; j < regionWidth; j++) {\n          row[j] = defaultPixelValue;\n        }\n      }\n      regionBitmap.push(row);\n    }\n\n    const numberOfPatterns = patterns.length;\n    const pattern0 = patterns[0];\n    const patternWidth = pattern0[0].length,\n      patternHeight = pattern0.length;\n    const bitsPerValue = log2(numberOfPatterns);\n    const at = [];\n    if (!mmr) {\n      at.push({\n        x: template <= 1 ? 3 : 2,\n        y: -1,\n      });\n      if (template === 0) {\n        at.push({\n          x: -3,\n          y: -1,\n        });\n        at.push({\n          x: 2,\n          y: -2,\n        });\n        at.push({\n          x: -2,\n          y: -2,\n        });\n      }\n    }\n    // Annex C. Gray-scale Image Decoding Procedure.\n    const grayScaleBitPlanes = [];\n    let mmrInput, bitmap;\n    if (mmr) {\n      // MMR bit planes are in one continuous stream. Only EOFB codes indicate\n      // the end of each bitmap, so EOFBs must be decoded.\n      mmrInput = new Reader(\n        decodingContext.data,\n        decodingContext.start,\n        decodingContext.end\n      );\n    }\n    for (i = bitsPerValue - 1; i >= 0; i--) {\n      if (mmr) {\n        bitmap = decodeMMRBitmap(mmrInput, gridWidth, gridHeight, true);\n      } else {\n        bitmap = decodeBitmap(\n          false,\n          gridWidth,\n          gridHeight,\n          template,\n          false,\n          skip,\n          at,\n          decodingContext\n        );\n      }\n      grayScaleBitPlanes[i] = bitmap;\n    }\n    // 6.6.5.2 Rendering the patterns.\n    let mg, ng, bit, patternIndex, patternBitmap, x, y, patternRow, regionRow;\n    for (mg = 0; mg < gridHeight; mg++) {\n      for (ng = 0; ng < gridWidth; ng++) {\n        bit = 0;\n        patternIndex = 0;\n        for (j = bitsPerValue - 1; j >= 0; j--) {\n          bit = grayScaleBitPlanes[j][mg][ng] ^ bit; // Gray decoding\n          patternIndex |= bit << j;\n        }\n        patternBitmap = patterns[patternIndex];\n        x = (gridOffsetX + mg * gridVectorY + ng * gridVectorX) >> 8;\n        y = (gridOffsetY + mg * gridVectorX - ng * gridVectorY) >> 8;\n        // Draw patternBitmap at (x, y).\n        if (\n          x >= 0 &&\n          x + patternWidth <= regionWidth &&\n          y >= 0 &&\n          y + patternHeight <= regionHeight\n        ) {\n          for (i = 0; i < patternHeight; i++) {\n            regionRow = regionBitmap[y + i];\n            patternRow = patternBitmap[i];\n            for (j = 0; j < patternWidth; j++) {\n              regionRow[x + j] |= patternRow[j];\n            }\n          }\n        } else {\n          let regionX, regionY;\n          for (i = 0; i < patternHeight; i++) {\n            regionY = y + i;\n            if (regionY < 0 || regionY >= regionHeight) {\n              continue;\n            }\n            regionRow = regionBitmap[regionY];\n            patternRow = patternBitmap[i];\n            for (j = 0; j < patternWidth; j++) {\n              regionX = x + j;\n              if (regionX >= 0 && regionX < regionWidth) {\n                regionRow[regionX] |= patternRow[j];\n              }\n            }\n          }\n        }\n      }\n    }\n    return regionBitmap;\n  }\n\n  function readSegmentHeader(data, start) {\n    var segmentHeader = {};\n    segmentHeader.number = readUint32(data, start);\n    var flags = data[start + 4];\n    var segmentType = flags & 0x3f;\n    if (!SegmentTypes[segmentType]) {\n      throw new Jbig2Error(\"invalid segment type: \" + segmentType);\n    }\n    segmentHeader.type = segmentType;\n    segmentHeader.typeName = SegmentTypes[segmentType];\n    segmentHeader.deferredNonRetain = !!(flags & 0x80);\n\n    var pageAssociationFieldSize = !!(flags & 0x40);\n    var referredFlags = data[start + 5];\n    var referredToCount = (referredFlags >> 5) & 7;\n    var retainBits = [referredFlags & 31];\n    var position = start + 6;\n    if (referredFlags === 7) {\n      referredToCount = readUint32(data, position - 1) & 0x1fffffff;\n      position += 3;\n      var bytes = (referredToCount + 7) >> 3;\n      retainBits[0] = data[position++];\n      while (--bytes > 0) {\n        retainBits.push(data[position++]);\n      }\n    } else if (referredFlags === 5 || referredFlags === 6) {\n      throw new Jbig2Error(\"invalid referred-to flags\");\n    }\n\n    segmentHeader.retainBits = retainBits;\n\n    let referredToSegmentNumberSize = 4;\n    if (segmentHeader.number <= 256) {\n      referredToSegmentNumberSize = 1;\n    } else if (segmentHeader.number <= 65536) {\n      referredToSegmentNumberSize = 2;\n    }\n    var referredTo = [];\n    var i, ii;\n    for (i = 0; i < referredToCount; i++) {\n      let number;\n      if (referredToSegmentNumberSize === 1) {\n        number = data[position];\n      } else if (referredToSegmentNumberSize === 2) {\n        number = readUint16(data, position);\n      } else {\n        number = readUint32(data, position);\n      }\n      referredTo.push(number);\n      position += referredToSegmentNumberSize;\n    }\n    segmentHeader.referredTo = referredTo;\n    if (!pageAssociationFieldSize) {\n      segmentHeader.pageAssociation = data[position++];\n    } else {\n      segmentHeader.pageAssociation = readUint32(data, position);\n      position += 4;\n    }\n    segmentHeader.length = readUint32(data, position);\n    position += 4;\n\n    if (segmentHeader.length === 0xffffffff) {\n      // 7.2.7 Segment data length, unknown segment length\n      if (segmentType === 38) {\n        // ImmediateGenericRegion\n        var genericRegionInfo = readRegionSegmentInformation(data, position);\n        var genericRegionSegmentFlags =\n          data[position + RegionSegmentInformationFieldLength];\n        var genericRegionMmr = !!(genericRegionSegmentFlags & 1);\n        // searching for the segment end\n        var searchPatternLength = 6;\n        var searchPattern = new Uint8Array(searchPatternLength);\n        if (!genericRegionMmr) {\n          searchPattern[0] = 0xff;\n          searchPattern[1] = 0xac;\n        }\n        searchPattern[2] = (genericRegionInfo.height >>> 24) & 0xff;\n        searchPattern[3] = (genericRegionInfo.height >> 16) & 0xff;\n        searchPattern[4] = (genericRegionInfo.height >> 8) & 0xff;\n        searchPattern[5] = genericRegionInfo.height & 0xff;\n        for (i = position, ii = data.length; i < ii; i++) {\n          var j = 0;\n          while (j < searchPatternLength && searchPattern[j] === data[i + j]) {\n            j++;\n          }\n          if (j === searchPatternLength) {\n            segmentHeader.length = i + searchPatternLength;\n            break;\n          }\n        }\n        if (segmentHeader.length === 0xffffffff) {\n          throw new Jbig2Error(\"segment end was not found\");\n        }\n      } else {\n        throw new Jbig2Error(\"invalid unknown segment length\");\n      }\n    }\n    segmentHeader.headerEnd = position;\n    return segmentHeader;\n  }\n\n  function readSegments(header, data, start, end) {\n    var segments = [];\n    var position = start;\n    while (position < end) {\n      var segmentHeader = readSegmentHeader(data, position);\n      position = segmentHeader.headerEnd;\n      var segment = {\n        header: segmentHeader,\n        data,\n      };\n      if (!header.randomAccess) {\n        segment.start = position;\n        position += segmentHeader.length;\n        segment.end = position;\n      }\n      segments.push(segment);\n      if (segmentHeader.type === 51) {\n        break; // end of file is found\n      }\n    }\n    if (header.randomAccess) {\n      for (var i = 0, ii = segments.length; i < ii; i++) {\n        segments[i].start = position;\n        position += segments[i].header.length;\n        segments[i].end = position;\n      }\n    }\n    return segments;\n  }\n\n  // 7.4.1 Region segment information field\n  function readRegionSegmentInformation(data, start) {\n    return {\n      width: readUint32(data, start),\n      height: readUint32(data, start + 4),\n      x: readUint32(data, start + 8),\n      y: readUint32(data, start + 12),\n      combinationOperator: data[start + 16] & 7,\n    };\n  }\n  var RegionSegmentInformationFieldLength = 17;\n\n  function processSegment(segment, visitor) {\n    var header = segment.header;\n\n    var data = segment.data,\n      position = segment.start,\n      end = segment.end;\n    var args, at, i, atLength;\n    switch (header.type) {\n      case 0: // SymbolDictionary\n        // 7.4.2 Symbol dictionary segment syntax\n        var dictionary = {};\n        var dictionaryFlags = readUint16(data, position); // 7.4.2.1.1\n        dictionary.huffman = !!(dictionaryFlags & 1);\n        dictionary.refinement = !!(dictionaryFlags & 2);\n        dictionary.huffmanDHSelector = (dictionaryFlags >> 2) & 3;\n        dictionary.huffmanDWSelector = (dictionaryFlags >> 4) & 3;\n        dictionary.bitmapSizeSelector = (dictionaryFlags >> 6) & 1;\n        dictionary.aggregationInstancesSelector = (dictionaryFlags >> 7) & 1;\n        dictionary.bitmapCodingContextUsed = !!(dictionaryFlags & 256);\n        dictionary.bitmapCodingContextRetained = !!(dictionaryFlags & 512);\n        dictionary.template = (dictionaryFlags >> 10) & 3;\n        dictionary.refinementTemplate = (dictionaryFlags >> 12) & 1;\n        position += 2;\n        if (!dictionary.huffman) {\n          atLength = dictionary.template === 0 ? 4 : 1;\n          at = [];\n          for (i = 0; i < atLength; i++) {\n            at.push({\n              x: readInt8(data, position),\n              y: readInt8(data, position + 1),\n            });\n            position += 2;\n          }\n          dictionary.at = at;\n        }\n        if (dictionary.refinement && !dictionary.refinementTemplate) {\n          at = [];\n          for (i = 0; i < 2; i++) {\n            at.push({\n              x: readInt8(data, position),\n              y: readInt8(data, position + 1),\n            });\n            position += 2;\n          }\n          dictionary.refinementAt = at;\n        }\n        dictionary.numberOfExportedSymbols = readUint32(data, position);\n        position += 4;\n        dictionary.numberOfNewSymbols = readUint32(data, position);\n        position += 4;\n        args = [\n          dictionary,\n          header.number,\n          header.referredTo,\n          data,\n          position,\n          end,\n        ];\n        break;\n      case 6: // ImmediateTextRegion\n      case 7: // ImmediateLosslessTextRegion\n        var textRegion = {};\n        textRegion.info = readRegionSegmentInformation(data, position);\n        position += RegionSegmentInformationFieldLength;\n        var textRegionSegmentFlags = readUint16(data, position);\n        position += 2;\n        textRegion.huffman = !!(textRegionSegmentFlags & 1);\n        textRegion.refinement = !!(textRegionSegmentFlags & 2);\n        textRegion.logStripSize = (textRegionSegmentFlags >> 2) & 3;\n        textRegion.stripSize = 1 << textRegion.logStripSize;\n        textRegion.referenceCorner = (textRegionSegmentFlags >> 4) & 3;\n        textRegion.transposed = !!(textRegionSegmentFlags & 64);\n        textRegion.combinationOperator = (textRegionSegmentFlags >> 7) & 3;\n        textRegion.defaultPixelValue = (textRegionSegmentFlags >> 9) & 1;\n        textRegion.dsOffset = (textRegionSegmentFlags << 17) >> 27;\n        textRegion.refinementTemplate = (textRegionSegmentFlags >> 15) & 1;\n        if (textRegion.huffman) {\n          var textRegionHuffmanFlags = readUint16(data, position);\n          position += 2;\n          textRegion.huffmanFS = textRegionHuffmanFlags & 3;\n          textRegion.huffmanDS = (textRegionHuffmanFlags >> 2) & 3;\n          textRegion.huffmanDT = (textRegionHuffmanFlags >> 4) & 3;\n          textRegion.huffmanRefinementDW = (textRegionHuffmanFlags >> 6) & 3;\n          textRegion.huffmanRefinementDH = (textRegionHuffmanFlags >> 8) & 3;\n          textRegion.huffmanRefinementDX = (textRegionHuffmanFlags >> 10) & 3;\n          textRegion.huffmanRefinementDY = (textRegionHuffmanFlags >> 12) & 3;\n          textRegion.huffmanRefinementSizeSelector = !!(\n            textRegionHuffmanFlags & 0x4000\n          );\n        }\n        if (textRegion.refinement && !textRegion.refinementTemplate) {\n          at = [];\n          for (i = 0; i < 2; i++) {\n            at.push({\n              x: readInt8(data, position),\n              y: readInt8(data, position + 1),\n            });\n            position += 2;\n          }\n          textRegion.refinementAt = at;\n        }\n        textRegion.numberOfSymbolInstances = readUint32(data, position);\n        position += 4;\n        args = [textRegion, header.referredTo, data, position, end];\n        break;\n      case 16: // PatternDictionary\n        // 7.4.4. Pattern dictionary segment syntax\n        const patternDictionary = {};\n        const patternDictionaryFlags = data[position++];\n        patternDictionary.mmr = !!(patternDictionaryFlags & 1);\n        patternDictionary.template = (patternDictionaryFlags >> 1) & 3;\n        patternDictionary.patternWidth = data[position++];\n        patternDictionary.patternHeight = data[position++];\n        patternDictionary.maxPatternIndex = readUint32(data, position);\n        position += 4;\n        args = [patternDictionary, header.number, data, position, end];\n        break;\n      case 22: // ImmediateHalftoneRegion\n      case 23: // ImmediateLosslessHalftoneRegion\n        // 7.4.5 Halftone region segment syntax\n        const halftoneRegion = {};\n        halftoneRegion.info = readRegionSegmentInformation(data, position);\n        position += RegionSegmentInformationFieldLength;\n        const halftoneRegionFlags = data[position++];\n        halftoneRegion.mmr = !!(halftoneRegionFlags & 1);\n        halftoneRegion.template = (halftoneRegionFlags >> 1) & 3;\n        halftoneRegion.enableSkip = !!(halftoneRegionFlags & 8);\n        halftoneRegion.combinationOperator = (halftoneRegionFlags >> 4) & 7;\n        halftoneRegion.defaultPixelValue = (halftoneRegionFlags >> 7) & 1;\n        halftoneRegion.gridWidth = readUint32(data, position);\n        position += 4;\n        halftoneRegion.gridHeight = readUint32(data, position);\n        position += 4;\n        halftoneRegion.gridOffsetX = readUint32(data, position) & 0xffffffff;\n        position += 4;\n        halftoneRegion.gridOffsetY = readUint32(data, position) & 0xffffffff;\n        position += 4;\n        halftoneRegion.gridVectorX = readUint16(data, position);\n        position += 2;\n        halftoneRegion.gridVectorY = readUint16(data, position);\n        position += 2;\n        args = [halftoneRegion, header.referredTo, data, position, end];\n        break;\n      case 38: // ImmediateGenericRegion\n      case 39: // ImmediateLosslessGenericRegion\n        var genericRegion = {};\n        genericRegion.info = readRegionSegmentInformation(data, position);\n        position += RegionSegmentInformationFieldLength;\n        var genericRegionSegmentFlags = data[position++];\n        genericRegion.mmr = !!(genericRegionSegmentFlags & 1);\n        genericRegion.template = (genericRegionSegmentFlags >> 1) & 3;\n        genericRegion.prediction = !!(genericRegionSegmentFlags & 8);\n        if (!genericRegion.mmr) {\n          atLength = genericRegion.template === 0 ? 4 : 1;\n          at = [];\n          for (i = 0; i < atLength; i++) {\n            at.push({\n              x: readInt8(data, position),\n              y: readInt8(data, position + 1),\n            });\n            position += 2;\n          }\n          genericRegion.at = at;\n        }\n        args = [genericRegion, data, position, end];\n        break;\n      case 48: // PageInformation\n        var pageInfo = {\n          width: readUint32(data, position),\n          height: readUint32(data, position + 4),\n          resolutionX: readUint32(data, position + 8),\n          resolutionY: readUint32(data, position + 12),\n        };\n        if (pageInfo.height === 0xffffffff) {\n          delete pageInfo.height;\n        }\n        var pageSegmentFlags = data[position + 16];\n        readUint16(data, position + 17); // pageStripingInformation\n        pageInfo.lossless = !!(pageSegmentFlags & 1);\n        pageInfo.refinement = !!(pageSegmentFlags & 2);\n        pageInfo.defaultPixelValue = (pageSegmentFlags >> 2) & 1;\n        pageInfo.combinationOperator = (pageSegmentFlags >> 3) & 3;\n        pageInfo.requiresBuffer = !!(pageSegmentFlags & 32);\n        pageInfo.combinationOperatorOverride = !!(pageSegmentFlags & 64);\n        args = [pageInfo];\n        break;\n      case 49: // EndOfPage\n        break;\n      case 50: // EndOfStripe\n        break;\n      case 51: // EndOfFile\n        break;\n      case 53: // Tables\n        args = [header.number, data, position, end];\n        break;\n      case 62: // 7.4.15 defines 2 extension types which\n        // are comments and can be ignored.\n        break;\n      default:\n        throw new Jbig2Error(\n          `segment type ${header.typeName}(${header.type})` +\n            \" is not implemented\"\n        );\n    }\n    var callbackName = \"on\" + header.typeName;\n    if (callbackName in visitor) {\n      visitor[callbackName].apply(visitor, args);\n    }\n  }\n\n  function processSegments(segments, visitor) {\n    for (var i = 0, ii = segments.length; i < ii; i++) {\n      processSegment(segments[i], visitor);\n    }\n  }\n\n  function parseJbig2Chunks(chunks) {\n    var visitor = new SimpleSegmentVisitor();\n    for (var i = 0, ii = chunks.length; i < ii; i++) {\n      var chunk = chunks[i];\n      var segments = readSegments({}, chunk.data, chunk.start, chunk.end);\n      processSegments(segments, visitor);\n    }\n    return visitor.buffer;\n  }\n\n  function parseJbig2(data) {\n    const end = data.length;\n    let position = 0;\n\n    if (\n      data[position] !== 0x97 ||\n      data[position + 1] !== 0x4a ||\n      data[position + 2] !== 0x42 ||\n      data[position + 3] !== 0x32 ||\n      data[position + 4] !== 0x0d ||\n      data[position + 5] !== 0x0a ||\n      data[position + 6] !== 0x1a ||\n      data[position + 7] !== 0x0a\n    ) {\n      throw new Jbig2Error(\"parseJbig2 - invalid header.\");\n    }\n\n    const header = Object.create(null);\n    position += 8;\n    const flags = data[position++];\n    header.randomAccess = !(flags & 1);\n    if (!(flags & 2)) {\n      header.numberOfPages = readUint32(data, position);\n      position += 4;\n    }\n\n    const segments = readSegments(header, data, position, end);\n    const visitor = new SimpleSegmentVisitor();\n    processSegments(segments, visitor);\n\n    const { width, height } = visitor.currentPageInfo;\n    const bitPacked = visitor.buffer;\n    const imgData = new Uint8ClampedArray(width * height);\n    let q = 0,\n      k = 0;\n    for (let i = 0; i < height; i++) {\n      let mask = 0,\n        buffer;\n      for (let j = 0; j < width; j++) {\n        if (!mask) {\n          mask = 128;\n          buffer = bitPacked[k++];\n        }\n        imgData[q++] = buffer & mask ? 0 : 255;\n        mask >>= 1;\n      }\n    }\n\n    return { imgData, width, height };\n  }\n\n  function SimpleSegmentVisitor() {}\n\n  SimpleSegmentVisitor.prototype = {\n    onPageInformation: function SimpleSegmentVisitor_onPageInformation(info) {\n      this.currentPageInfo = info;\n      var rowSize = (info.width + 7) >> 3;\n      var buffer = new Uint8ClampedArray(rowSize * info.height);\n      // The contents of ArrayBuffers are initialized to 0.\n      // Fill the buffer with 0xFF only if info.defaultPixelValue is set\n      if (info.defaultPixelValue) {\n        for (var i = 0, ii = buffer.length; i < ii; i++) {\n          buffer[i] = 0xff;\n        }\n      }\n      this.buffer = buffer;\n    },\n    drawBitmap: function SimpleSegmentVisitor_drawBitmap(regionInfo, bitmap) {\n      var pageInfo = this.currentPageInfo;\n      var width = regionInfo.width,\n        height = regionInfo.height;\n      var rowSize = (pageInfo.width + 7) >> 3;\n      var combinationOperator = pageInfo.combinationOperatorOverride\n        ? regionInfo.combinationOperator\n        : pageInfo.combinationOperator;\n      var buffer = this.buffer;\n      var mask0 = 128 >> (regionInfo.x & 7);\n      var offset0 = regionInfo.y * rowSize + (regionInfo.x >> 3);\n      var i, j, mask, offset;\n      switch (combinationOperator) {\n        case 0: // OR\n          for (i = 0; i < height; i++) {\n            mask = mask0;\n            offset = offset0;\n            for (j = 0; j < width; j++) {\n              if (bitmap[i][j]) {\n                buffer[offset] |= mask;\n              }\n              mask >>= 1;\n              if (!mask) {\n                mask = 128;\n                offset++;\n              }\n            }\n            offset0 += rowSize;\n          }\n          break;\n        case 2: // XOR\n          for (i = 0; i < height; i++) {\n            mask = mask0;\n            offset = offset0;\n            for (j = 0; j < width; j++) {\n              if (bitmap[i][j]) {\n                buffer[offset] ^= mask;\n              }\n              mask >>= 1;\n              if (!mask) {\n                mask = 128;\n                offset++;\n              }\n            }\n            offset0 += rowSize;\n          }\n          break;\n        default:\n          throw new Jbig2Error(\n            `operator ${combinationOperator} is not supported`\n          );\n      }\n    },\n    onImmediateGenericRegion: function SimpleSegmentVisitor_onImmediateGenericRegion(\n      region,\n      data,\n      start,\n      end\n    ) {\n      var regionInfo = region.info;\n      var decodingContext = new DecodingContext(data, start, end);\n      var bitmap = decodeBitmap(\n        region.mmr,\n        regionInfo.width,\n        regionInfo.height,\n        region.template,\n        region.prediction,\n        null,\n        region.at,\n        decodingContext\n      );\n      this.drawBitmap(regionInfo, bitmap);\n    },\n    onImmediateLosslessGenericRegion: function SimpleSegmentVisitor_onImmediateLosslessGenericRegion() {\n      this.onImmediateGenericRegion.apply(this, arguments);\n    },\n    onSymbolDictionary: function SimpleSegmentVisitor_onSymbolDictionary(\n      dictionary,\n      currentSegment,\n      referredSegments,\n      data,\n      start,\n      end\n    ) {\n      let huffmanTables, huffmanInput;\n      if (dictionary.huffman) {\n        huffmanTables = getSymbolDictionaryHuffmanTables(\n          dictionary,\n          referredSegments,\n          this.customTables\n        );\n        huffmanInput = new Reader(data, start, end);\n      }\n\n      // Combines exported symbols from all referred segments\n      var symbols = this.symbols;\n      if (!symbols) {\n        this.symbols = symbols = {};\n      }\n\n      var inputSymbols = [];\n      for (var i = 0, ii = referredSegments.length; i < ii; i++) {\n        const referredSymbols = symbols[referredSegments[i]];\n        // referredSymbols is undefined when we have a reference to a Tables\n        // segment instead of a SymbolDictionary.\n        if (referredSymbols) {\n          inputSymbols = inputSymbols.concat(referredSymbols);\n        }\n      }\n\n      var decodingContext = new DecodingContext(data, start, end);\n      symbols[currentSegment] = decodeSymbolDictionary(\n        dictionary.huffman,\n        dictionary.refinement,\n        inputSymbols,\n        dictionary.numberOfNewSymbols,\n        dictionary.numberOfExportedSymbols,\n        huffmanTables,\n        dictionary.template,\n        dictionary.at,\n        dictionary.refinementTemplate,\n        dictionary.refinementAt,\n        decodingContext,\n        huffmanInput\n      );\n    },\n    onImmediateTextRegion: function SimpleSegmentVisitor_onImmediateTextRegion(\n      region,\n      referredSegments,\n      data,\n      start,\n      end\n    ) {\n      var regionInfo = region.info;\n      let huffmanTables, huffmanInput;\n\n      // Combines exported symbols from all referred segments\n      var symbols = this.symbols;\n      var inputSymbols = [];\n      for (var i = 0, ii = referredSegments.length; i < ii; i++) {\n        const referredSymbols = symbols[referredSegments[i]];\n        // referredSymbols is undefined when we have a reference to a Tables\n        // segment instead of a SymbolDictionary.\n        if (referredSymbols) {\n          inputSymbols = inputSymbols.concat(referredSymbols);\n        }\n      }\n      var symbolCodeLength = log2(inputSymbols.length);\n      if (region.huffman) {\n        huffmanInput = new Reader(data, start, end);\n        huffmanTables = getTextRegionHuffmanTables(\n          region,\n          referredSegments,\n          this.customTables,\n          inputSymbols.length,\n          huffmanInput\n        );\n      }\n\n      var decodingContext = new DecodingContext(data, start, end);\n      var bitmap = decodeTextRegion(\n        region.huffman,\n        region.refinement,\n        regionInfo.width,\n        regionInfo.height,\n        region.defaultPixelValue,\n        region.numberOfSymbolInstances,\n        region.stripSize,\n        inputSymbols,\n        symbolCodeLength,\n        region.transposed,\n        region.dsOffset,\n        region.referenceCorner,\n        region.combinationOperator,\n        huffmanTables,\n        region.refinementTemplate,\n        region.refinementAt,\n        decodingContext,\n        region.logStripSize,\n        huffmanInput\n      );\n      this.drawBitmap(regionInfo, bitmap);\n    },\n    onImmediateLosslessTextRegion: function SimpleSegmentVisitor_onImmediateLosslessTextRegion() {\n      this.onImmediateTextRegion.apply(this, arguments);\n    },\n    onPatternDictionary(dictionary, currentSegment, data, start, end) {\n      let patterns = this.patterns;\n      if (!patterns) {\n        this.patterns = patterns = {};\n      }\n      const decodingContext = new DecodingContext(data, start, end);\n      patterns[currentSegment] = decodePatternDictionary(\n        dictionary.mmr,\n        dictionary.patternWidth,\n        dictionary.patternHeight,\n        dictionary.maxPatternIndex,\n        dictionary.template,\n        decodingContext\n      );\n    },\n    onImmediateHalftoneRegion(region, referredSegments, data, start, end) {\n      // HalftoneRegion refers to exactly one PatternDictionary.\n      const patterns = this.patterns[referredSegments[0]];\n      const regionInfo = region.info;\n      const decodingContext = new DecodingContext(data, start, end);\n      const bitmap = decodeHalftoneRegion(\n        region.mmr,\n        patterns,\n        region.template,\n        regionInfo.width,\n        regionInfo.height,\n        region.defaultPixelValue,\n        region.enableSkip,\n        region.combinationOperator,\n        region.gridWidth,\n        region.gridHeight,\n        region.gridOffsetX,\n        region.gridOffsetY,\n        region.gridVectorX,\n        region.gridVectorY,\n        decodingContext\n      );\n      this.drawBitmap(regionInfo, bitmap);\n    },\n    onImmediateLosslessHalftoneRegion() {\n      this.onImmediateHalftoneRegion.apply(this, arguments);\n    },\n    onTables(currentSegment, data, start, end) {\n      let customTables = this.customTables;\n      if (!customTables) {\n        this.customTables = customTables = {};\n      }\n      customTables[currentSegment] = decodeTablesSegment(data, start, end);\n    },\n  };\n\n  function HuffmanLine(lineData) {\n    if (lineData.length === 2) {\n      // OOB line.\n      this.isOOB = true;\n      this.rangeLow = 0;\n      this.prefixLength = lineData[0];\n      this.rangeLength = 0;\n      this.prefixCode = lineData[1];\n      this.isLowerRange = false;\n    } else {\n      // Normal, upper range or lower range line.\n      // Upper range lines are processed like normal lines.\n      this.isOOB = false;\n      this.rangeLow = lineData[0];\n      this.prefixLength = lineData[1];\n      this.rangeLength = lineData[2];\n      this.prefixCode = lineData[3];\n      this.isLowerRange = lineData[4] === \"lower\";\n    }\n  }\n\n  function HuffmanTreeNode(line) {\n    this.children = [];\n    if (line) {\n      // Leaf node\n      this.isLeaf = true;\n      this.rangeLength = line.rangeLength;\n      this.rangeLow = line.rangeLow;\n      this.isLowerRange = line.isLowerRange;\n      this.isOOB = line.isOOB;\n    } else {\n      // Intermediate or root node\n      this.isLeaf = false;\n    }\n  }\n\n  HuffmanTreeNode.prototype = {\n    buildTree(line, shift) {\n      const bit = (line.prefixCode >> shift) & 1;\n      if (shift <= 0) {\n        // Create a leaf node.\n        this.children[bit] = new HuffmanTreeNode(line);\n      } else {\n        // Create an intermediate node and continue recursively.\n        let node = this.children[bit];\n        if (!node) {\n          this.children[bit] = node = new HuffmanTreeNode(null);\n        }\n        node.buildTree(line, shift - 1);\n      }\n    },\n    decodeNode(reader) {\n      if (this.isLeaf) {\n        if (this.isOOB) {\n          return null;\n        }\n        const htOffset = reader.readBits(this.rangeLength);\n        return this.rangeLow + (this.isLowerRange ? -htOffset : htOffset);\n      }\n      const node = this.children[reader.readBit()];\n      if (!node) {\n        throw new Jbig2Error(\"invalid Huffman data\");\n      }\n      return node.decodeNode(reader);\n    },\n  };\n\n  function HuffmanTable(lines, prefixCodesDone) {\n    if (!prefixCodesDone) {\n      this.assignPrefixCodes(lines);\n    }\n    // Create Huffman tree.\n    this.rootNode = new HuffmanTreeNode(null);\n    for (let i = 0, ii = lines.length; i < ii; i++) {\n      const line = lines[i];\n      if (line.prefixLength > 0) {\n        this.rootNode.buildTree(line, line.prefixLength - 1);\n      }\n    }\n  }\n\n  HuffmanTable.prototype = {\n    decode(reader) {\n      return this.rootNode.decodeNode(reader);\n    },\n    assignPrefixCodes(lines) {\n      // Annex B.3 Assigning the prefix codes.\n      const linesLength = lines.length;\n      let prefixLengthMax = 0;\n      for (let i = 0; i < linesLength; i++) {\n        prefixLengthMax = Math.max(prefixLengthMax, lines[i].prefixLength);\n      }\n\n      const histogram = new Uint32Array(prefixLengthMax + 1);\n      for (let i = 0; i < linesLength; i++) {\n        histogram[lines[i].prefixLength]++;\n      }\n      let currentLength = 1,\n        firstCode = 0,\n        currentCode,\n        currentTemp,\n        line;\n      histogram[0] = 0;\n\n      while (currentLength <= prefixLengthMax) {\n        firstCode = (firstCode + histogram[currentLength - 1]) << 1;\n        currentCode = firstCode;\n        currentTemp = 0;\n        while (currentTemp < linesLength) {\n          line = lines[currentTemp];\n          if (line.prefixLength === currentLength) {\n            line.prefixCode = currentCode;\n            currentCode++;\n          }\n          currentTemp++;\n        }\n        currentLength++;\n      }\n    },\n  };\n\n  function decodeTablesSegment(data, start, end) {\n    // Decodes a Tables segment, i.e., a custom Huffman table.\n    // Annex B.2 Code table structure.\n    const flags = data[start];\n    const lowestValue = readUint32(data, start + 1) & 0xffffffff;\n    const highestValue = readUint32(data, start + 5) & 0xffffffff;\n    const reader = new Reader(data, start + 9, end);\n\n    const prefixSizeBits = ((flags >> 1) & 7) + 1;\n    const rangeSizeBits = ((flags >> 4) & 7) + 1;\n    const lines = [];\n    let prefixLength,\n      rangeLength,\n      currentRangeLow = lowestValue;\n\n    // Normal table lines\n    do {\n      prefixLength = reader.readBits(prefixSizeBits);\n      rangeLength = reader.readBits(rangeSizeBits);\n      lines.push(\n        new HuffmanLine([currentRangeLow, prefixLength, rangeLength, 0])\n      );\n      currentRangeLow += 1 << rangeLength;\n    } while (currentRangeLow < highestValue);\n\n    // Lower range table line\n    prefixLength = reader.readBits(prefixSizeBits);\n    lines.push(\n      new HuffmanLine([lowestValue - 1, prefixLength, 32, 0, \"lower\"])\n    );\n\n    // Upper range table line\n    prefixLength = reader.readBits(prefixSizeBits);\n    lines.push(new HuffmanLine([highestValue, prefixLength, 32, 0]));\n\n    if (flags & 1) {\n      // Out-of-band table line\n      prefixLength = reader.readBits(prefixSizeBits);\n      lines.push(new HuffmanLine([prefixLength, 0]));\n    }\n\n    return new HuffmanTable(lines, false);\n  }\n\n  const standardTablesCache = {};\n\n  function getStandardTable(number) {\n    // Annex B.5 Standard Huffman tables.\n    let table = standardTablesCache[number];\n    if (table) {\n      return table;\n    }\n    let lines;\n    switch (number) {\n      case 1:\n        lines = [\n          [0, 1, 4, 0x0],\n          [16, 2, 8, 0x2],\n          [272, 3, 16, 0x6],\n          [65808, 3, 32, 0x7], // upper\n        ];\n        break;\n      case 2:\n        lines = [\n          [0, 1, 0, 0x0],\n          [1, 2, 0, 0x2],\n          [2, 3, 0, 0x6],\n          [3, 4, 3, 0xe],\n          [11, 5, 6, 0x1e],\n          [75, 6, 32, 0x3e], // upper\n          [6, 0x3f], // OOB\n        ];\n        break;\n      case 3:\n        lines = [\n          [-256, 8, 8, 0xfe],\n          [0, 1, 0, 0x0],\n          [1, 2, 0, 0x2],\n          [2, 3, 0, 0x6],\n          [3, 4, 3, 0xe],\n          [11, 5, 6, 0x1e],\n          [-257, 8, 32, 0xff, \"lower\"],\n          [75, 7, 32, 0x7e], // upper\n          [6, 0x3e], // OOB\n        ];\n        break;\n      case 4:\n        lines = [\n          [1, 1, 0, 0x0],\n          [2, 2, 0, 0x2],\n          [3, 3, 0, 0x6],\n          [4, 4, 3, 0xe],\n          [12, 5, 6, 0x1e],\n          [76, 5, 32, 0x1f], // upper\n        ];\n        break;\n      case 5:\n        lines = [\n          [-255, 7, 8, 0x7e],\n          [1, 1, 0, 0x0],\n          [2, 2, 0, 0x2],\n          [3, 3, 0, 0x6],\n          [4, 4, 3, 0xe],\n          [12, 5, 6, 0x1e],\n          [-256, 7, 32, 0x7f, \"lower\"],\n          [76, 6, 32, 0x3e], // upper\n        ];\n        break;\n      case 6:\n        lines = [\n          [-2048, 5, 10, 0x1c],\n          [-1024, 4, 9, 0x8],\n          [-512, 4, 8, 0x9],\n          [-256, 4, 7, 0xa],\n          [-128, 5, 6, 0x1d],\n          [-64, 5, 5, 0x1e],\n          [-32, 4, 5, 0xb],\n          [0, 2, 7, 0x0],\n          [128, 3, 7, 0x2],\n          [256, 3, 8, 0x3],\n          [512, 4, 9, 0xc],\n          [1024, 4, 10, 0xd],\n          [-2049, 6, 32, 0x3e, \"lower\"],\n          [2048, 6, 32, 0x3f], // upper\n        ];\n        break;\n      case 7:\n        lines = [\n          [-1024, 4, 9, 0x8],\n          [-512, 3, 8, 0x0],\n          [-256, 4, 7, 0x9],\n          [-128, 5, 6, 0x1a],\n          [-64, 5, 5, 0x1b],\n          [-32, 4, 5, 0xa],\n          [0, 4, 5, 0xb],\n          [32, 5, 5, 0x1c],\n          [64, 5, 6, 0x1d],\n          [128, 4, 7, 0xc],\n          [256, 3, 8, 0x1],\n          [512, 3, 9, 0x2],\n          [1024, 3, 10, 0x3],\n          [-1025, 5, 32, 0x1e, \"lower\"],\n          [2048, 5, 32, 0x1f], // upper\n        ];\n        break;\n      case 8:\n        lines = [\n          [-15, 8, 3, 0xfc],\n          [-7, 9, 1, 0x1fc],\n          [-5, 8, 1, 0xfd],\n          [-3, 9, 0, 0x1fd],\n          [-2, 7, 0, 0x7c],\n          [-1, 4, 0, 0xa],\n          [0, 2, 1, 0x0],\n          [2, 5, 0, 0x1a],\n          [3, 6, 0, 0x3a],\n          [4, 3, 4, 0x4],\n          [20, 6, 1, 0x3b],\n          [22, 4, 4, 0xb],\n          [38, 4, 5, 0xc],\n          [70, 5, 6, 0x1b],\n          [134, 5, 7, 0x1c],\n          [262, 6, 7, 0x3c],\n          [390, 7, 8, 0x7d],\n          [646, 6, 10, 0x3d],\n          [-16, 9, 32, 0x1fe, \"lower\"],\n          [1670, 9, 32, 0x1ff], // upper\n          [2, 0x1], // OOB\n        ];\n        break;\n      case 9:\n        lines = [\n          [-31, 8, 4, 0xfc],\n          [-15, 9, 2, 0x1fc],\n          [-11, 8, 2, 0xfd],\n          [-7, 9, 1, 0x1fd],\n          [-5, 7, 1, 0x7c],\n          [-3, 4, 1, 0xa],\n          [-1, 3, 1, 0x2],\n          [1, 3, 1, 0x3],\n          [3, 5, 1, 0x1a],\n          [5, 6, 1, 0x3a],\n          [7, 3, 5, 0x4],\n          [39, 6, 2, 0x3b],\n          [43, 4, 5, 0xb],\n          [75, 4, 6, 0xc],\n          [139, 5, 7, 0x1b],\n          [267, 5, 8, 0x1c],\n          [523, 6, 8, 0x3c],\n          [779, 7, 9, 0x7d],\n          [1291, 6, 11, 0x3d],\n          [-32, 9, 32, 0x1fe, \"lower\"],\n          [3339, 9, 32, 0x1ff], // upper\n          [2, 0x0], // OOB\n        ];\n        break;\n      case 10:\n        lines = [\n          [-21, 7, 4, 0x7a],\n          [-5, 8, 0, 0xfc],\n          [-4, 7, 0, 0x7b],\n          [-3, 5, 0, 0x18],\n          [-2, 2, 2, 0x0],\n          [2, 5, 0, 0x19],\n          [3, 6, 0, 0x36],\n          [4, 7, 0, 0x7c],\n          [5, 8, 0, 0xfd],\n          [6, 2, 6, 0x1],\n          [70, 5, 5, 0x1a],\n          [102, 6, 5, 0x37],\n          [134, 6, 6, 0x38],\n          [198, 6, 7, 0x39],\n          [326, 6, 8, 0x3a],\n          [582, 6, 9, 0x3b],\n          [1094, 6, 10, 0x3c],\n          [2118, 7, 11, 0x7d],\n          [-22, 8, 32, 0xfe, \"lower\"],\n          [4166, 8, 32, 0xff], // upper\n          [2, 0x2], // OOB\n        ];\n        break;\n      case 11:\n        lines = [\n          [1, 1, 0, 0x0],\n          [2, 2, 1, 0x2],\n          [4, 4, 0, 0xc],\n          [5, 4, 1, 0xd],\n          [7, 5, 1, 0x1c],\n          [9, 5, 2, 0x1d],\n          [13, 6, 2, 0x3c],\n          [17, 7, 2, 0x7a],\n          [21, 7, 3, 0x7b],\n          [29, 7, 4, 0x7c],\n          [45, 7, 5, 0x7d],\n          [77, 7, 6, 0x7e],\n          [141, 7, 32, 0x7f], // upper\n        ];\n        break;\n      case 12:\n        lines = [\n          [1, 1, 0, 0x0],\n          [2, 2, 0, 0x2],\n          [3, 3, 1, 0x6],\n          [5, 5, 0, 0x1c],\n          [6, 5, 1, 0x1d],\n          [8, 6, 1, 0x3c],\n          [10, 7, 0, 0x7a],\n          [11, 7, 1, 0x7b],\n          [13, 7, 2, 0x7c],\n          [17, 7, 3, 0x7d],\n          [25, 7, 4, 0x7e],\n          [41, 8, 5, 0xfe],\n          [73, 8, 32, 0xff], // upper\n        ];\n        break;\n      case 13:\n        lines = [\n          [1, 1, 0, 0x0],\n          [2, 3, 0, 0x4],\n          [3, 4, 0, 0xc],\n          [4, 5, 0, 0x1c],\n          [5, 4, 1, 0xd],\n          [7, 3, 3, 0x5],\n          [15, 6, 1, 0x3a],\n          [17, 6, 2, 0x3b],\n          [21, 6, 3, 0x3c],\n          [29, 6, 4, 0x3d],\n          [45, 6, 5, 0x3e],\n          [77, 7, 6, 0x7e],\n          [141, 7, 32, 0x7f], // upper\n        ];\n        break;\n      case 14:\n        lines = [\n          [-2, 3, 0, 0x4],\n          [-1, 3, 0, 0x5],\n          [0, 1, 0, 0x0],\n          [1, 3, 0, 0x6],\n          [2, 3, 0, 0x7],\n        ];\n        break;\n      case 15:\n        lines = [\n          [-24, 7, 4, 0x7c],\n          [-8, 6, 2, 0x3c],\n          [-4, 5, 1, 0x1c],\n          [-2, 4, 0, 0xc],\n          [-1, 3, 0, 0x4],\n          [0, 1, 0, 0x0],\n          [1, 3, 0, 0x5],\n          [2, 4, 0, 0xd],\n          [3, 5, 1, 0x1d],\n          [5, 6, 2, 0x3d],\n          [9, 7, 4, 0x7d],\n          [-25, 7, 32, 0x7e, \"lower\"],\n          [25, 7, 32, 0x7f], // upper\n        ];\n        break;\n      default:\n        throw new Jbig2Error(`standard table B.${number} does not exist`);\n    }\n\n    for (let i = 0, ii = lines.length; i < ii; i++) {\n      lines[i] = new HuffmanLine(lines[i]);\n    }\n    table = new HuffmanTable(lines, true);\n    standardTablesCache[number] = table;\n    return table;\n  }\n\n  function Reader(data, start, end) {\n    this.data = data;\n    this.start = start;\n    this.end = end;\n    this.position = start;\n    this.shift = -1;\n    this.currentByte = 0;\n  }\n\n  Reader.prototype = {\n    readBit() {\n      if (this.shift < 0) {\n        if (this.position >= this.end) {\n          throw new Jbig2Error(\"end of data while reading bit\");\n        }\n        this.currentByte = this.data[this.position++];\n        this.shift = 7;\n      }\n      const bit = (this.currentByte >> this.shift) & 1;\n      this.shift--;\n      return bit;\n    },\n\n    readBits(numBits) {\n      let result = 0,\n        i;\n      for (i = numBits - 1; i >= 0; i--) {\n        result |= this.readBit() << i;\n      }\n      return result;\n    },\n\n    byteAlign() {\n      this.shift = -1;\n    },\n\n    next() {\n      if (this.position >= this.end) {\n        return -1;\n      }\n      return this.data[this.position++];\n    },\n  };\n\n  function getCustomHuffmanTable(index, referredTo, customTables) {\n    // Returns a Tables segment that has been earlier decoded.\n    // See 7.4.2.1.6 (symbol dictionary) or 7.4.3.1.6 (text region).\n    let currentIndex = 0;\n    for (let i = 0, ii = referredTo.length; i < ii; i++) {\n      const table = customTables[referredTo[i]];\n      if (table) {\n        if (index === currentIndex) {\n          return table;\n        }\n        currentIndex++;\n      }\n    }\n    throw new Jbig2Error(\"can't find custom Huffman table\");\n  }\n\n  function getTextRegionHuffmanTables(\n    textRegion,\n    referredTo,\n    customTables,\n    numberOfSymbols,\n    reader\n  ) {\n    // 7.4.3.1.7 Symbol ID Huffman table decoding\n\n    // Read code lengths for RUNCODEs 0...34.\n    const codes = [];\n    for (let i = 0; i <= 34; i++) {\n      const codeLength = reader.readBits(4);\n      codes.push(new HuffmanLine([i, codeLength, 0, 0]));\n    }\n    // Assign Huffman codes for RUNCODEs.\n    const runCodesTable = new HuffmanTable(codes, false);\n\n    // Read a Huffman code using the assignment above.\n    // Interpret the RUNCODE codes and the additional bits (if any).\n    codes.length = 0;\n    for (let i = 0; i < numberOfSymbols; ) {\n      const codeLength = runCodesTable.decode(reader);\n      if (codeLength >= 32) {\n        let repeatedLength, numberOfRepeats, j;\n        switch (codeLength) {\n          case 32:\n            if (i === 0) {\n              throw new Jbig2Error(\"no previous value in symbol ID table\");\n            }\n            numberOfRepeats = reader.readBits(2) + 3;\n            repeatedLength = codes[i - 1].prefixLength;\n            break;\n          case 33:\n            numberOfRepeats = reader.readBits(3) + 3;\n            repeatedLength = 0;\n            break;\n          case 34:\n            numberOfRepeats = reader.readBits(7) + 11;\n            repeatedLength = 0;\n            break;\n          default:\n            throw new Jbig2Error(\"invalid code length in symbol ID table\");\n        }\n        for (j = 0; j < numberOfRepeats; j++) {\n          codes.push(new HuffmanLine([i, repeatedLength, 0, 0]));\n          i++;\n        }\n      } else {\n        codes.push(new HuffmanLine([i, codeLength, 0, 0]));\n        i++;\n      }\n    }\n    reader.byteAlign();\n    const symbolIDTable = new HuffmanTable(codes, false);\n\n    // 7.4.3.1.6 Text region segment Huffman table selection\n\n    let customIndex = 0,\n      tableFirstS,\n      tableDeltaS,\n      tableDeltaT;\n\n    switch (textRegion.huffmanFS) {\n      case 0:\n      case 1:\n        tableFirstS = getStandardTable(textRegion.huffmanFS + 6);\n        break;\n      case 3:\n        tableFirstS = getCustomHuffmanTable(\n          customIndex,\n          referredTo,\n          customTables\n        );\n        customIndex++;\n        break;\n      default:\n        throw new Jbig2Error(\"invalid Huffman FS selector\");\n    }\n\n    switch (textRegion.huffmanDS) {\n      case 0:\n      case 1:\n      case 2:\n        tableDeltaS = getStandardTable(textRegion.huffmanDS + 8);\n        break;\n      case 3:\n        tableDeltaS = getCustomHuffmanTable(\n          customIndex,\n          referredTo,\n          customTables\n        );\n        customIndex++;\n        break;\n      default:\n        throw new Jbig2Error(\"invalid Huffman DS selector\");\n    }\n\n    switch (textRegion.huffmanDT) {\n      case 0:\n      case 1:\n      case 2:\n        tableDeltaT = getStandardTable(textRegion.huffmanDT + 11);\n        break;\n      case 3:\n        tableDeltaT = getCustomHuffmanTable(\n          customIndex,\n          referredTo,\n          customTables\n        );\n        customIndex++;\n        break;\n      default:\n        throw new Jbig2Error(\"invalid Huffman DT selector\");\n    }\n\n    if (textRegion.refinement) {\n      // Load tables RDW, RDH, RDX and RDY.\n      throw new Jbig2Error(\"refinement with Huffman is not supported\");\n    }\n\n    return {\n      symbolIDTable,\n      tableFirstS,\n      tableDeltaS,\n      tableDeltaT,\n    };\n  }\n\n  function getSymbolDictionaryHuffmanTables(\n    dictionary,\n    referredTo,\n    customTables\n  ) {\n    // 7.4.2.1.6 Symbol dictionary segment Huffman table selection\n\n    let customIndex = 0,\n      tableDeltaHeight,\n      tableDeltaWidth;\n    switch (dictionary.huffmanDHSelector) {\n      case 0:\n      case 1:\n        tableDeltaHeight = getStandardTable(dictionary.huffmanDHSelector + 4);\n        break;\n      case 3:\n        tableDeltaHeight = getCustomHuffmanTable(\n          customIndex,\n          referredTo,\n          customTables\n        );\n        customIndex++;\n        break;\n      default:\n        throw new Jbig2Error(\"invalid Huffman DH selector\");\n    }\n\n    switch (dictionary.huffmanDWSelector) {\n      case 0:\n      case 1:\n        tableDeltaWidth = getStandardTable(dictionary.huffmanDWSelector + 2);\n        break;\n      case 3:\n        tableDeltaWidth = getCustomHuffmanTable(\n          customIndex,\n          referredTo,\n          customTables\n        );\n        customIndex++;\n        break;\n      default:\n        throw new Jbig2Error(\"invalid Huffman DW selector\");\n    }\n\n    let tableBitmapSize, tableAggregateInstances;\n    if (dictionary.bitmapSizeSelector) {\n      tableBitmapSize = getCustomHuffmanTable(\n        customIndex,\n        referredTo,\n        customTables\n      );\n      customIndex++;\n    } else {\n      tableBitmapSize = getStandardTable(1);\n    }\n\n    if (dictionary.aggregationInstancesSelector) {\n      tableAggregateInstances = getCustomHuffmanTable(\n        customIndex,\n        referredTo,\n        customTables\n      );\n    } else {\n      tableAggregateInstances = getStandardTable(1);\n    }\n\n    return {\n      tableDeltaHeight,\n      tableDeltaWidth,\n      tableBitmapSize,\n      tableAggregateInstances,\n    };\n  }\n\n  function readUncompressedBitmap(reader, width, height) {\n    const bitmap = [];\n    for (let y = 0; y < height; y++) {\n      const row = new Uint8Array(width);\n      bitmap.push(row);\n      for (let x = 0; x < width; x++) {\n        row[x] = reader.readBit();\n      }\n      reader.byteAlign();\n    }\n    return bitmap;\n  }\n\n  function decodeMMRBitmap(input, width, height, endOfBlock) {\n    // MMR is the same compression algorithm as the PDF filter\n    // CCITTFaxDecode with /K -1.\n    const params = {\n      K: -1,\n      Columns: width,\n      Rows: height,\n      BlackIs1: true,\n      EndOfBlock: endOfBlock,\n    };\n    const decoder = new CCITTFaxDecoder(input, params);\n    const bitmap = [];\n    let currentByte,\n      eof = false;\n\n    for (let y = 0; y < height; y++) {\n      const row = new Uint8Array(width);\n      bitmap.push(row);\n      let shift = -1;\n      for (let x = 0; x < width; x++) {\n        if (shift < 0) {\n          currentByte = decoder.readNextChar();\n          if (currentByte === -1) {\n            // Set the rest of the bits to zero.\n            currentByte = 0;\n            eof = true;\n          }\n          shift = 7;\n        }\n        row[x] = (currentByte >> shift) & 1;\n        shift--;\n      }\n    }\n\n    if (endOfBlock && !eof) {\n      // Read until EOFB has been consumed.\n      const lookForEOFLimit = 5;\n      for (let i = 0; i < lookForEOFLimit; i++) {\n        if (decoder.readNextChar() === -1) {\n          break;\n        }\n      }\n    }\n\n    return bitmap;\n  }\n\n  // eslint-disable-next-line no-shadow\n  function Jbig2Image() {}\n\n  Jbig2Image.prototype = {\n    parseChunks(chunks) {\n      return parseJbig2Chunks(chunks);\n    },\n\n    parse(data) {\n      const { imgData, width, height } = parseJbig2(data);\n      this.width = width;\n      this.height = height;\n      return imgData;\n    },\n  };\n\n  return Jbig2Image;\n})();\n\nexport { Jbig2Image };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\n// Table C-2\nconst QeTable = [\n  { qe: 0x5601, nmps: 1, nlps: 1, switchFlag: 1 },\n  { qe: 0x3401, nmps: 2, nlps: 6, switchFlag: 0 },\n  { qe: 0x1801, nmps: 3, nlps: 9, switchFlag: 0 },\n  { qe: 0x0ac1, nmps: 4, nlps: 12, switchFlag: 0 },\n  { qe: 0x0521, nmps: 5, nlps: 29, switchFlag: 0 },\n  { qe: 0x0221, nmps: 38, nlps: 33, switchFlag: 0 },\n  { qe: 0x5601, nmps: 7, nlps: 6, switchFlag: 1 },\n  { qe: 0x5401, nmps: 8, nlps: 14, switchFlag: 0 },\n  { qe: 0x4801, nmps: 9, nlps: 14, switchFlag: 0 },\n  { qe: 0x3801, nmps: 10, nlps: 14, switchFlag: 0 },\n  { qe: 0x3001, nmps: 11, nlps: 17, switchFlag: 0 },\n  { qe: 0x2401, nmps: 12, nlps: 18, switchFlag: 0 },\n  { qe: 0x1c01, nmps: 13, nlps: 20, switchFlag: 0 },\n  { qe: 0x1601, nmps: 29, nlps: 21, switchFlag: 0 },\n  { qe: 0x5601, nmps: 15, nlps: 14, switchFlag: 1 },\n  { qe: 0x5401, nmps: 16, nlps: 14, switchFlag: 0 },\n  { qe: 0x5101, nmps: 17, nlps: 15, switchFlag: 0 },\n  { qe: 0x4801, nmps: 18, nlps: 16, switchFlag: 0 },\n  { qe: 0x3801, nmps: 19, nlps: 17, switchFlag: 0 },\n  { qe: 0x3401, nmps: 20, nlps: 18, switchFlag: 0 },\n  { qe: 0x3001, nmps: 21, nlps: 19, switchFlag: 0 },\n  { qe: 0x2801, nmps: 22, nlps: 19, switchFlag: 0 },\n  { qe: 0x2401, nmps: 23, nlps: 20, switchFlag: 0 },\n  { qe: 0x2201, nmps: 24, nlps: 21, switchFlag: 0 },\n  { qe: 0x1c01, nmps: 25, nlps: 22, switchFlag: 0 },\n  { qe: 0x1801, nmps: 26, nlps: 23, switchFlag: 0 },\n  { qe: 0x1601, nmps: 27, nlps: 24, switchFlag: 0 },\n  { qe: 0x1401, nmps: 28, nlps: 25, switchFlag: 0 },\n  { qe: 0x1201, nmps: 29, nlps: 26, switchFlag: 0 },\n  { qe: 0x1101, nmps: 30, nlps: 27, switchFlag: 0 },\n  { qe: 0x0ac1, nmps: 31, nlps: 28, switchFlag: 0 },\n  { qe: 0x09c1, nmps: 32, nlps: 29, switchFlag: 0 },\n  { qe: 0x08a1, nmps: 33, nlps: 30, switchFlag: 0 },\n  { qe: 0x0521, nmps: 34, nlps: 31, switchFlag: 0 },\n  { qe: 0x0441, nmps: 35, nlps: 32, switchFlag: 0 },\n  { qe: 0x02a1, nmps: 36, nlps: 33, switchFlag: 0 },\n  { qe: 0x0221, nmps: 37, nlps: 34, switchFlag: 0 },\n  { qe: 0x0141, nmps: 38, nlps: 35, switchFlag: 0 },\n  { qe: 0x0111, nmps: 39, nlps: 36, switchFlag: 0 },\n  { qe: 0x0085, nmps: 40, nlps: 37, switchFlag: 0 },\n  { qe: 0x0049, nmps: 41, nlps: 38, switchFlag: 0 },\n  { qe: 0x0025, nmps: 42, nlps: 39, switchFlag: 0 },\n  { qe: 0x0015, nmps: 43, nlps: 40, switchFlag: 0 },\n  { qe: 0x0009, nmps: 44, nlps: 41, switchFlag: 0 },\n  { qe: 0x0005, nmps: 45, nlps: 42, switchFlag: 0 },\n  { qe: 0x0001, nmps: 45, nlps: 43, switchFlag: 0 },\n  { qe: 0x5601, nmps: 46, nlps: 46, switchFlag: 0 },\n];\n\n/**\n * This class implements the QM Coder decoding as defined in\n *   JPEG 2000 Part I Final Committee Draft Version 1.0\n *   Annex C.3 Arithmetic decoding procedure\n * available at http://www.jpeg.org/public/fcd15444-1.pdf\n *\n * The arithmetic decoder is used in conjunction with context models to decode\n * JPEG2000 and JBIG2 streams.\n */\nclass ArithmeticDecoder {\n  // C.3.5 Initialisation of the decoder (INITDEC)\n  constructor(data, start, end) {\n    this.data = data;\n    this.bp = start;\n    this.dataEnd = end;\n\n    this.chigh = data[start];\n    this.clow = 0;\n\n    this.byteIn();\n\n    this.chigh = ((this.chigh << 7) & 0xffff) | ((this.clow >> 9) & 0x7f);\n    this.clow = (this.clow << 7) & 0xffff;\n    this.ct -= 7;\n    this.a = 0x8000;\n  }\n\n  // C.3.4 Compressed data input (BYTEIN)\n  byteIn() {\n    const data = this.data;\n    let bp = this.bp;\n\n    if (data[bp] === 0xff) {\n      if (data[bp + 1] > 0x8f) {\n        this.clow += 0xff00;\n        this.ct = 8;\n      } else {\n        bp++;\n        this.clow += data[bp] << 9;\n        this.ct = 7;\n        this.bp = bp;\n      }\n    } else {\n      bp++;\n      this.clow += bp < this.dataEnd ? data[bp] << 8 : 0xff00;\n      this.ct = 8;\n      this.bp = bp;\n    }\n    if (this.clow > 0xffff) {\n      this.chigh += this.clow >> 16;\n      this.clow &= 0xffff;\n    }\n  }\n\n  // C.3.2 Decoding a decision (DECODE)\n  readBit(contexts, pos) {\n    // Contexts are packed into 1 byte:\n    // highest 7 bits carry cx.index, lowest bit carries cx.mps\n    let cx_index = contexts[pos] >> 1,\n      cx_mps = contexts[pos] & 1;\n    const qeTableIcx = QeTable[cx_index];\n    const qeIcx = qeTableIcx.qe;\n    let d;\n    let a = this.a - qeIcx;\n\n    if (this.chigh < qeIcx) {\n      // exchangeLps\n      if (a < qeIcx) {\n        a = qeIcx;\n        d = cx_mps;\n        cx_index = qeTableIcx.nmps;\n      } else {\n        a = qeIcx;\n        d = 1 ^ cx_mps;\n        if (qeTableIcx.switchFlag === 1) {\n          cx_mps = d;\n        }\n        cx_index = qeTableIcx.nlps;\n      }\n    } else {\n      this.chigh -= qeIcx;\n      if ((a & 0x8000) !== 0) {\n        this.a = a;\n        return cx_mps;\n      }\n      // exchangeMps\n      if (a < qeIcx) {\n        d = 1 ^ cx_mps;\n        if (qeTableIcx.switchFlag === 1) {\n          cx_mps = d;\n        }\n        cx_index = qeTableIcx.nlps;\n      } else {\n        d = cx_mps;\n        cx_index = qeTableIcx.nmps;\n      }\n    }\n    // C.3.3 renormD;\n    do {\n      if (this.ct === 0) {\n        this.byteIn();\n      }\n\n      a <<= 1;\n      this.chigh = ((this.chigh << 1) & 0xffff) | ((this.clow >> 15) & 1);\n      this.clow = (this.clow << 1) & 0xffff;\n      this.ct--;\n    } while ((a & 0x8000) === 0);\n    this.a = a;\n\n    contexts[pos] = (cx_index << 1) | cx_mps;\n    return d;\n  }\n}\n\nexport { ArithmeticDecoder };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./stream.js\";\nimport { isDict } from \"./primitives.js\";\nimport { JpegImage } from \"./jpg.js\";\nimport { shadow } from \"../shared/util.js\";\n\n/**\n * For JPEG's we use a library to decode these images and the stream behaves\n * like all the other DecodeStreams.\n */\nconst JpegStream = (function JpegStreamClosure() {\n  // eslint-disable-next-line no-shadow\n  function JpegStream(stream, maybeLength, dict, params) {\n    // Some images may contain 'junk' before the SOI (start-of-image) marker.\n    // Note: this seems to mainly affect inline images.\n    let ch;\n    while ((ch = stream.getByte()) !== -1) {\n      // Find the first byte of the SOI marker (0xFFD8).\n      if (ch === 0xff) {\n        stream.skip(-1); // Reset the stream position to the SOI.\n        break;\n      }\n    }\n    this.stream = stream;\n    this.maybeLength = maybeLength;\n    this.dict = dict;\n    this.params = params;\n\n    DecodeStream.call(this, maybeLength);\n  }\n\n  JpegStream.prototype = Object.create(DecodeStream.prototype);\n\n  Object.defineProperty(JpegStream.prototype, \"bytes\", {\n    get: function JpegStream_bytes() {\n      // If `this.maybeLength` is null, we'll get the entire stream.\n      return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n    },\n    configurable: true,\n  });\n\n  JpegStream.prototype.ensureBuffer = function (requested) {\n    // No-op, since `this.readBlock` will always parse the entire image and\n    // directly insert all of its data into `this.buffer`.\n  };\n\n  JpegStream.prototype.readBlock = function () {\n    if (this.eof) {\n      return;\n    }\n    const jpegOptions = {\n      decodeTransform: undefined,\n      colorTransform: undefined,\n    };\n\n    // Checking if values need to be transformed before conversion.\n    const decodeArr = this.dict.getArray(\"Decode\", \"D\");\n    if (this.forceRGB && Array.isArray(decodeArr)) {\n      const bitsPerComponent = this.dict.get(\"BitsPerComponent\") || 8;\n      const decodeArrLength = decodeArr.length;\n      const transform = new Int32Array(decodeArrLength);\n      let transformNeeded = false;\n      const maxValue = (1 << bitsPerComponent) - 1;\n      for (let i = 0; i < decodeArrLength; i += 2) {\n        transform[i] = ((decodeArr[i + 1] - decodeArr[i]) * 256) | 0;\n        transform[i + 1] = (decodeArr[i] * maxValue) | 0;\n        if (transform[i] !== 256 || transform[i + 1] !== 0) {\n          transformNeeded = true;\n        }\n      }\n      if (transformNeeded) {\n        jpegOptions.decodeTransform = transform;\n      }\n    }\n    // Fetching the 'ColorTransform' entry, if it exists.\n    if (isDict(this.params)) {\n      const colorTransform = this.params.get(\"ColorTransform\");\n      if (Number.isInteger(colorTransform)) {\n        jpegOptions.colorTransform = colorTransform;\n      }\n    }\n    const jpegImage = new JpegImage(jpegOptions);\n\n    jpegImage.parse(this.bytes);\n    const data = jpegImage.getData({\n      width: this.drawWidth,\n      height: this.drawHeight,\n      forceRGB: this.forceRGB,\n      isSourcePDF: true,\n    });\n    this.buffer = data;\n    this.bufferLength = data.length;\n    this.eof = true;\n  };\n\n  return JpegStream;\n})();\n\nexport { JpegStream };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, BaseException, warn } from \"../shared/util.js\";\nimport { readUint16 } from \"./core_utils.js\";\n\nclass JpegError extends BaseException {\n  constructor(msg) {\n    super(`JPEG error: ${msg}`);\n  }\n}\n\nclass DNLMarkerError extends BaseException {\n  constructor(message, scanLines) {\n    super(message);\n    this.scanLines = scanLines;\n  }\n}\n\nclass EOIMarkerError extends BaseException {}\n\n/**\n * This code was forked from https://github.com/notmasteryet/jpgjs.\n * The original version was created by GitHub user notmasteryet.\n *\n * - The JPEG specification can be found in the ITU CCITT Recommendation T.81\n *   (www.w3.org/Graphics/JPEG/itu-t81.pdf)\n * - The JFIF specification can be found in the JPEG File Interchange Format\n *   (www.w3.org/Graphics/JPEG/jfif3.pdf)\n * - The Adobe Application-Specific JPEG markers in the\n *   Supporting the DCT Filters in PostScript Level 2, Technical Note #5116\n *   (partners.adobe.com/public/developer/en/ps/sdk/5116.DCT_Filter.pdf)\n */\n\nvar JpegImage = (function JpegImageClosure() {\n  // prettier-ignore\n  var dctZigZag = new Uint8Array([\n     0,\n     1,  8,\n    16,  9,  2,\n     3, 10, 17, 24,\n    32, 25, 18, 11, 4,\n     5, 12, 19, 26, 33, 40,\n    48, 41, 34, 27, 20, 13,  6,\n     7, 14, 21, 28, 35, 42, 49, 56,\n    57, 50, 43, 36, 29, 22, 15,\n    23, 30, 37, 44, 51, 58,\n    59, 52, 45, 38, 31,\n    39, 46, 53, 60,\n    61, 54, 47,\n    55, 62,\n    63\n  ]);\n\n  var dctCos1 = 4017; // cos(pi/16)\n  var dctSin1 = 799; // sin(pi/16)\n  var dctCos3 = 3406; // cos(3*pi/16)\n  var dctSin3 = 2276; // sin(3*pi/16)\n  var dctCos6 = 1567; // cos(6*pi/16)\n  var dctSin6 = 3784; // sin(6*pi/16)\n  var dctSqrt2 = 5793; // sqrt(2)\n  var dctSqrt1d2 = 2896; // sqrt(2) / 2\n\n  // eslint-disable-next-line no-shadow\n  function JpegImage({ decodeTransform = null, colorTransform = -1 } = {}) {\n    this._decodeTransform = decodeTransform;\n    this._colorTransform = colorTransform;\n  }\n\n  function buildHuffmanTable(codeLengths, values) {\n    var k = 0,\n      code = [],\n      i,\n      j,\n      length = 16;\n    while (length > 0 && !codeLengths[length - 1]) {\n      length--;\n    }\n    code.push({ children: [], index: 0 });\n    var p = code[0],\n      q;\n    for (i = 0; i < length; i++) {\n      for (j = 0; j < codeLengths[i]; j++) {\n        p = code.pop();\n        p.children[p.index] = values[k];\n        while (p.index > 0) {\n          p = code.pop();\n        }\n        p.index++;\n        code.push(p);\n        while (code.length <= i) {\n          code.push((q = { children: [], index: 0 }));\n          p.children[p.index] = q.children;\n          p = q;\n        }\n        k++;\n      }\n      if (i + 1 < length) {\n        // p here points to last code\n        code.push((q = { children: [], index: 0 }));\n        p.children[p.index] = q.children;\n        p = q;\n      }\n    }\n    return code[0].children;\n  }\n\n  function getBlockBufferOffset(component, row, col) {\n    return 64 * ((component.blocksPerLine + 1) * row + col);\n  }\n\n  function decodeScan(\n    data,\n    offset,\n    frame,\n    components,\n    resetInterval,\n    spectralStart,\n    spectralEnd,\n    successivePrev,\n    successive,\n    parseDNLMarker = false\n  ) {\n    var mcusPerLine = frame.mcusPerLine;\n    var progressive = frame.progressive;\n\n    const startOffset = offset;\n    let bitsData = 0,\n      bitsCount = 0;\n\n    function readBit() {\n      if (bitsCount > 0) {\n        bitsCount--;\n        return (bitsData >> bitsCount) & 1;\n      }\n      bitsData = data[offset++];\n      if (bitsData === 0xff) {\n        var nextByte = data[offset++];\n        if (nextByte) {\n          if (nextByte === /* DNL = */ 0xdc && parseDNLMarker) {\n            offset += 2; // Skip marker length.\n\n            const scanLines = readUint16(data, offset);\n            offset += 2;\n            if (scanLines > 0 && scanLines !== frame.scanLines) {\n              throw new DNLMarkerError(\n                \"Found DNL marker (0xFFDC) while parsing scan data\",\n                scanLines\n              );\n            }\n          } else if (nextByte === /* EOI = */ 0xd9) {\n            if (parseDNLMarker) {\n              // NOTE: only 8-bit JPEG images are supported in this decoder.\n              const maybeScanLines = blockRow * 8;\n              // Heuristic to attempt to handle corrupt JPEG images with too\n              // large `scanLines` parameter, by falling back to the currently\n              // parsed number of scanLines when it's at least one order of\n              // magnitude smaller than expected (fixes issue10880.pdf).\n              if (maybeScanLines > 0 && maybeScanLines < frame.scanLines / 10) {\n                throw new DNLMarkerError(\n                  \"Found EOI marker (0xFFD9) while parsing scan data, \" +\n                    \"possibly caused by incorrect `scanLines` parameter\",\n                  maybeScanLines\n                );\n              }\n            }\n            throw new EOIMarkerError(\n              \"Found EOI marker (0xFFD9) while parsing scan data\"\n            );\n          }\n          throw new JpegError(\n            `unexpected marker ${((bitsData << 8) | nextByte).toString(16)}`\n          );\n        }\n        // unstuff 0\n      }\n      bitsCount = 7;\n      return bitsData >>> 7;\n    }\n\n    function decodeHuffman(tree) {\n      var node = tree;\n      while (true) {\n        node = node[readBit()];\n        switch (typeof node) {\n          case \"number\":\n            return node;\n          case \"object\":\n            continue;\n        }\n        throw new JpegError(\"invalid huffman sequence\");\n      }\n    }\n\n    function receive(length) {\n      var n = 0;\n      while (length > 0) {\n        n = (n << 1) | readBit();\n        length--;\n      }\n      return n;\n    }\n\n    function receiveAndExtend(length) {\n      if (length === 1) {\n        return readBit() === 1 ? 1 : -1;\n      }\n      var n = receive(length);\n      if (n >= 1 << (length - 1)) {\n        return n;\n      }\n      return n + (-1 << length) + 1;\n    }\n\n    function decodeBaseline(component, blockOffset) {\n      var t = decodeHuffman(component.huffmanTableDC);\n      var diff = t === 0 ? 0 : receiveAndExtend(t);\n      component.blockData[blockOffset] = component.pred += diff;\n      var k = 1;\n      while (k < 64) {\n        var rs = decodeHuffman(component.huffmanTableAC);\n        var s = rs & 15,\n          r = rs >> 4;\n        if (s === 0) {\n          if (r < 15) {\n            break;\n          }\n          k += 16;\n          continue;\n        }\n        k += r;\n        var z = dctZigZag[k];\n        component.blockData[blockOffset + z] = receiveAndExtend(s);\n        k++;\n      }\n    }\n\n    function decodeDCFirst(component, blockOffset) {\n      var t = decodeHuffman(component.huffmanTableDC);\n      var diff = t === 0 ? 0 : receiveAndExtend(t) << successive;\n      component.blockData[blockOffset] = component.pred += diff;\n    }\n\n    function decodeDCSuccessive(component, blockOffset) {\n      component.blockData[blockOffset] |= readBit() << successive;\n    }\n\n    var eobrun = 0;\n    function decodeACFirst(component, blockOffset) {\n      if (eobrun > 0) {\n        eobrun--;\n        return;\n      }\n      var k = spectralStart,\n        e = spectralEnd;\n      while (k <= e) {\n        var rs = decodeHuffman(component.huffmanTableAC);\n        var s = rs & 15,\n          r = rs >> 4;\n        if (s === 0) {\n          if (r < 15) {\n            eobrun = receive(r) + (1 << r) - 1;\n            break;\n          }\n          k += 16;\n          continue;\n        }\n        k += r;\n        var z = dctZigZag[k];\n        component.blockData[blockOffset + z] =\n          receiveAndExtend(s) * (1 << successive);\n        k++;\n      }\n    }\n\n    var successiveACState = 0,\n      successiveACNextValue;\n    function decodeACSuccessive(component, blockOffset) {\n      var k = spectralStart;\n      var e = spectralEnd;\n      var r = 0;\n      var s;\n      var rs;\n      while (k <= e) {\n        const offsetZ = blockOffset + dctZigZag[k];\n        const sign = component.blockData[offsetZ] < 0 ? -1 : 1;\n        switch (successiveACState) {\n          case 0: // initial state\n            rs = decodeHuffman(component.huffmanTableAC);\n            s = rs & 15;\n            r = rs >> 4;\n            if (s === 0) {\n              if (r < 15) {\n                eobrun = receive(r) + (1 << r);\n                successiveACState = 4;\n              } else {\n                r = 16;\n                successiveACState = 1;\n              }\n            } else {\n              if (s !== 1) {\n                throw new JpegError(\"invalid ACn encoding\");\n              }\n              successiveACNextValue = receiveAndExtend(s);\n              successiveACState = r ? 2 : 3;\n            }\n            continue;\n          case 1: // skipping r zero items\n          case 2:\n            if (component.blockData[offsetZ]) {\n              component.blockData[offsetZ] += sign * (readBit() << successive);\n            } else {\n              r--;\n              if (r === 0) {\n                successiveACState = successiveACState === 2 ? 3 : 0;\n              }\n            }\n            break;\n          case 3: // set value for a zero item\n            if (component.blockData[offsetZ]) {\n              component.blockData[offsetZ] += sign * (readBit() << successive);\n            } else {\n              component.blockData[offsetZ] =\n                successiveACNextValue << successive;\n              successiveACState = 0;\n            }\n            break;\n          case 4: // eob\n            if (component.blockData[offsetZ]) {\n              component.blockData[offsetZ] += sign * (readBit() << successive);\n            }\n            break;\n        }\n        k++;\n      }\n      if (successiveACState === 4) {\n        eobrun--;\n        if (eobrun === 0) {\n          successiveACState = 0;\n        }\n      }\n    }\n\n    let blockRow = 0;\n    function decodeMcu(component, decode, mcu, row, col) {\n      var mcuRow = (mcu / mcusPerLine) | 0;\n      var mcuCol = mcu % mcusPerLine;\n      blockRow = mcuRow * component.v + row;\n      var blockCol = mcuCol * component.h + col;\n      const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n      decode(component, blockOffset);\n    }\n\n    function decodeBlock(component, decode, mcu) {\n      blockRow = (mcu / component.blocksPerLine) | 0;\n      var blockCol = mcu % component.blocksPerLine;\n      const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n      decode(component, blockOffset);\n    }\n\n    var componentsLength = components.length;\n    var component, i, j, k, n;\n    var decodeFn;\n    if (progressive) {\n      if (spectralStart === 0) {\n        decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive;\n      } else {\n        decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive;\n      }\n    } else {\n      decodeFn = decodeBaseline;\n    }\n\n    var mcu = 0,\n      fileMarker;\n    var mcuExpected;\n    if (componentsLength === 1) {\n      mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn;\n    } else {\n      mcuExpected = mcusPerLine * frame.mcusPerColumn;\n    }\n\n    var h, v;\n    while (mcu <= mcuExpected) {\n      // reset interval stuff\n      var mcuToRead = resetInterval\n        ? Math.min(mcuExpected - mcu, resetInterval)\n        : mcuExpected;\n\n      // The `mcuToRead === 0` case should only occur when all of the expected\n      // MCU data has been already parsed, i.e. when `mcu === mcuExpected`, but\n      // some corrupt JPEG images contain more data than intended and we thus\n      // want to skip over any extra RSTx markers below (fixes issue11794.pdf).\n      if (mcuToRead > 0) {\n        for (i = 0; i < componentsLength; i++) {\n          components[i].pred = 0;\n        }\n        eobrun = 0;\n\n        if (componentsLength === 1) {\n          component = components[0];\n          for (n = 0; n < mcuToRead; n++) {\n            decodeBlock(component, decodeFn, mcu);\n            mcu++;\n          }\n        } else {\n          for (n = 0; n < mcuToRead; n++) {\n            for (i = 0; i < componentsLength; i++) {\n              component = components[i];\n              h = component.h;\n              v = component.v;\n              for (j = 0; j < v; j++) {\n                for (k = 0; k < h; k++) {\n                  decodeMcu(component, decodeFn, mcu, j, k);\n                }\n              }\n            }\n            mcu++;\n          }\n        }\n      }\n\n      // find marker\n      bitsCount = 0;\n      fileMarker = findNextFileMarker(data, offset);\n      if (!fileMarker) {\n        break; // Reached the end of the image data without finding any marker.\n      }\n      if (fileMarker.invalid) {\n        // Some bad images seem to pad Scan blocks with e.g. zero bytes, skip\n        // past those to attempt to find a valid marker (fixes issue4090.pdf).\n        const partialMsg = mcuToRead > 0 ? \"unexpected\" : \"excessive\";\n        warn(\n          `decodeScan - ${partialMsg} MCU data, current marker is: ${fileMarker.invalid}`\n        );\n        offset = fileMarker.offset;\n      }\n      if (fileMarker.marker >= 0xffd0 && fileMarker.marker <= 0xffd7) {\n        // RSTx\n        offset += 2;\n      } else {\n        break;\n      }\n    }\n\n    return offset - startOffset;\n  }\n\n  // A port of poppler's IDCT method which in turn is taken from:\n  //   Christoph Loeffler, Adriaan Ligtenberg, George S. Moschytz,\n  //   'Practical Fast 1-D DCT Algorithms with 11 Multiplications',\n  //   IEEE Intl. Conf. on Acoustics, Speech & Signal Processing, 1989,\n  //   988-991.\n  function quantizeAndInverse(component, blockBufferOffset, p) {\n    var qt = component.quantizationTable,\n      blockData = component.blockData;\n    var v0, v1, v2, v3, v4, v5, v6, v7;\n    var p0, p1, p2, p3, p4, p5, p6, p7;\n    var t;\n\n    if (!qt) {\n      throw new JpegError(\"missing required Quantization Table.\");\n    }\n\n    // inverse DCT on rows\n    for (var row = 0; row < 64; row += 8) {\n      // gather block data\n      p0 = blockData[blockBufferOffset + row];\n      p1 = blockData[blockBufferOffset + row + 1];\n      p2 = blockData[blockBufferOffset + row + 2];\n      p3 = blockData[blockBufferOffset + row + 3];\n      p4 = blockData[blockBufferOffset + row + 4];\n      p5 = blockData[blockBufferOffset + row + 5];\n      p6 = blockData[blockBufferOffset + row + 6];\n      p7 = blockData[blockBufferOffset + row + 7];\n\n      // dequant p0\n      p0 *= qt[row];\n\n      // check for all-zero AC coefficients\n      if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n        t = (dctSqrt2 * p0 + 512) >> 10;\n        p[row] = t;\n        p[row + 1] = t;\n        p[row + 2] = t;\n        p[row + 3] = t;\n        p[row + 4] = t;\n        p[row + 5] = t;\n        p[row + 6] = t;\n        p[row + 7] = t;\n        continue;\n      }\n      // dequant p1 ... p7\n      p1 *= qt[row + 1];\n      p2 *= qt[row + 2];\n      p3 *= qt[row + 3];\n      p4 *= qt[row + 4];\n      p5 *= qt[row + 5];\n      p6 *= qt[row + 6];\n      p7 *= qt[row + 7];\n\n      // stage 4\n      v0 = (dctSqrt2 * p0 + 128) >> 8;\n      v1 = (dctSqrt2 * p4 + 128) >> 8;\n      v2 = p2;\n      v3 = p6;\n      v4 = (dctSqrt1d2 * (p1 - p7) + 128) >> 8;\n      v7 = (dctSqrt1d2 * (p1 + p7) + 128) >> 8;\n      v5 = p3 << 4;\n      v6 = p5 << 4;\n\n      // stage 3\n      v0 = (v0 + v1 + 1) >> 1;\n      v1 = v0 - v1;\n      t = (v2 * dctSin6 + v3 * dctCos6 + 128) >> 8;\n      v2 = (v2 * dctCos6 - v3 * dctSin6 + 128) >> 8;\n      v3 = t;\n      v4 = (v4 + v6 + 1) >> 1;\n      v6 = v4 - v6;\n      v7 = (v7 + v5 + 1) >> 1;\n      v5 = v7 - v5;\n\n      // stage 2\n      v0 = (v0 + v3 + 1) >> 1;\n      v3 = v0 - v3;\n      v1 = (v1 + v2 + 1) >> 1;\n      v2 = v1 - v2;\n      t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n      v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n      v7 = t;\n      t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n      v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n      v6 = t;\n\n      // stage 1\n      p[row] = v0 + v7;\n      p[row + 7] = v0 - v7;\n      p[row + 1] = v1 + v6;\n      p[row + 6] = v1 - v6;\n      p[row + 2] = v2 + v5;\n      p[row + 5] = v2 - v5;\n      p[row + 3] = v3 + v4;\n      p[row + 4] = v3 - v4;\n    }\n\n    // inverse DCT on columns\n    for (var col = 0; col < 8; ++col) {\n      p0 = p[col];\n      p1 = p[col + 8];\n      p2 = p[col + 16];\n      p3 = p[col + 24];\n      p4 = p[col + 32];\n      p5 = p[col + 40];\n      p6 = p[col + 48];\n      p7 = p[col + 56];\n\n      // check for all-zero AC coefficients\n      if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n        t = (dctSqrt2 * p0 + 8192) >> 14;\n        // Convert to 8-bit.\n        if (t < -2040) {\n          t = 0;\n        } else if (t >= 2024) {\n          t = 255;\n        } else {\n          t = (t + 2056) >> 4;\n        }\n        blockData[blockBufferOffset + col] = t;\n        blockData[blockBufferOffset + col + 8] = t;\n        blockData[blockBufferOffset + col + 16] = t;\n        blockData[blockBufferOffset + col + 24] = t;\n        blockData[blockBufferOffset + col + 32] = t;\n        blockData[blockBufferOffset + col + 40] = t;\n        blockData[blockBufferOffset + col + 48] = t;\n        blockData[blockBufferOffset + col + 56] = t;\n        continue;\n      }\n\n      // stage 4\n      v0 = (dctSqrt2 * p0 + 2048) >> 12;\n      v1 = (dctSqrt2 * p4 + 2048) >> 12;\n      v2 = p2;\n      v3 = p6;\n      v4 = (dctSqrt1d2 * (p1 - p7) + 2048) >> 12;\n      v7 = (dctSqrt1d2 * (p1 + p7) + 2048) >> 12;\n      v5 = p3;\n      v6 = p5;\n\n      // stage 3\n      // Shift v0 by 128.5 << 5 here, so we don't need to shift p0...p7 when\n      // converting to UInt8 range later.\n      v0 = ((v0 + v1 + 1) >> 1) + 4112;\n      v1 = v0 - v1;\n      t = (v2 * dctSin6 + v3 * dctCos6 + 2048) >> 12;\n      v2 = (v2 * dctCos6 - v3 * dctSin6 + 2048) >> 12;\n      v3 = t;\n      v4 = (v4 + v6 + 1) >> 1;\n      v6 = v4 - v6;\n      v7 = (v7 + v5 + 1) >> 1;\n      v5 = v7 - v5;\n\n      // stage 2\n      v0 = (v0 + v3 + 1) >> 1;\n      v3 = v0 - v3;\n      v1 = (v1 + v2 + 1) >> 1;\n      v2 = v1 - v2;\n      t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n      v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n      v7 = t;\n      t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n      v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n      v6 = t;\n\n      // stage 1\n      p0 = v0 + v7;\n      p7 = v0 - v7;\n      p1 = v1 + v6;\n      p6 = v1 - v6;\n      p2 = v2 + v5;\n      p5 = v2 - v5;\n      p3 = v3 + v4;\n      p4 = v3 - v4;\n\n      // Convert to 8-bit integers.\n      if (p0 < 16) {\n        p0 = 0;\n      } else if (p0 >= 4080) {\n        p0 = 255;\n      } else {\n        p0 >>= 4;\n      }\n      if (p1 < 16) {\n        p1 = 0;\n      } else if (p1 >= 4080) {\n        p1 = 255;\n      } else {\n        p1 >>= 4;\n      }\n      if (p2 < 16) {\n        p2 = 0;\n      } else if (p2 >= 4080) {\n        p2 = 255;\n      } else {\n        p2 >>= 4;\n      }\n      if (p3 < 16) {\n        p3 = 0;\n      } else if (p3 >= 4080) {\n        p3 = 255;\n      } else {\n        p3 >>= 4;\n      }\n      if (p4 < 16) {\n        p4 = 0;\n      } else if (p4 >= 4080) {\n        p4 = 255;\n      } else {\n        p4 >>= 4;\n      }\n      if (p5 < 16) {\n        p5 = 0;\n      } else if (p5 >= 4080) {\n        p5 = 255;\n      } else {\n        p5 >>= 4;\n      }\n      if (p6 < 16) {\n        p6 = 0;\n      } else if (p6 >= 4080) {\n        p6 = 255;\n      } else {\n        p6 >>= 4;\n      }\n      if (p7 < 16) {\n        p7 = 0;\n      } else if (p7 >= 4080) {\n        p7 = 255;\n      } else {\n        p7 >>= 4;\n      }\n\n      // store block data\n      blockData[blockBufferOffset + col] = p0;\n      blockData[blockBufferOffset + col + 8] = p1;\n      blockData[blockBufferOffset + col + 16] = p2;\n      blockData[blockBufferOffset + col + 24] = p3;\n      blockData[blockBufferOffset + col + 32] = p4;\n      blockData[blockBufferOffset + col + 40] = p5;\n      blockData[blockBufferOffset + col + 48] = p6;\n      blockData[blockBufferOffset + col + 56] = p7;\n    }\n  }\n\n  function buildComponentData(frame, component) {\n    var blocksPerLine = component.blocksPerLine;\n    var blocksPerColumn = component.blocksPerColumn;\n    var computationBuffer = new Int16Array(64);\n\n    for (var blockRow = 0; blockRow < blocksPerColumn; blockRow++) {\n      for (var blockCol = 0; blockCol < blocksPerLine; blockCol++) {\n        var offset = getBlockBufferOffset(component, blockRow, blockCol);\n        quantizeAndInverse(component, offset, computationBuffer);\n      }\n    }\n    return component.blockData;\n  }\n\n  function findNextFileMarker(data, currentPos, startPos = currentPos) {\n    const maxPos = data.length - 1;\n    var newPos = startPos < currentPos ? startPos : currentPos;\n\n    if (currentPos >= maxPos) {\n      return null; // Don't attempt to read non-existent data and just return.\n    }\n    var currentMarker = readUint16(data, currentPos);\n    if (currentMarker >= 0xffc0 && currentMarker <= 0xfffe) {\n      return {\n        invalid: null,\n        marker: currentMarker,\n        offset: currentPos,\n      };\n    }\n    var newMarker = readUint16(data, newPos);\n    while (!(newMarker >= 0xffc0 && newMarker <= 0xfffe)) {\n      if (++newPos >= maxPos) {\n        return null; // Don't attempt to read non-existent data and just return.\n      }\n      newMarker = readUint16(data, newPos);\n    }\n    return {\n      invalid: currentMarker.toString(16),\n      marker: newMarker,\n      offset: newPos,\n    };\n  }\n\n  JpegImage.prototype = {\n    parse(data, { dnlScanLines = null } = {}) {\n      function readDataBlock() {\n        const length = readUint16(data, offset);\n        offset += 2;\n        let endOffset = offset + length - 2;\n\n        var fileMarker = findNextFileMarker(data, endOffset, offset);\n        if (fileMarker && fileMarker.invalid) {\n          warn(\n            \"readDataBlock - incorrect length, current marker is: \" +\n              fileMarker.invalid\n          );\n          endOffset = fileMarker.offset;\n        }\n\n        var array = data.subarray(offset, endOffset);\n        offset += array.length;\n        return array;\n      }\n\n      function prepareComponents(frame) {\n        var mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH);\n        var mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV);\n        for (var i = 0; i < frame.components.length; i++) {\n          component = frame.components[i];\n          var blocksPerLine = Math.ceil(\n            (Math.ceil(frame.samplesPerLine / 8) * component.h) / frame.maxH\n          );\n          var blocksPerColumn = Math.ceil(\n            (Math.ceil(frame.scanLines / 8) * component.v) / frame.maxV\n          );\n          var blocksPerLineForMcu = mcusPerLine * component.h;\n          var blocksPerColumnForMcu = mcusPerColumn * component.v;\n\n          var blocksBufferSize =\n            64 * blocksPerColumnForMcu * (blocksPerLineForMcu + 1);\n          component.blockData = new Int16Array(blocksBufferSize);\n          component.blocksPerLine = blocksPerLine;\n          component.blocksPerColumn = blocksPerColumn;\n        }\n        frame.mcusPerLine = mcusPerLine;\n        frame.mcusPerColumn = mcusPerColumn;\n      }\n\n      var offset = 0;\n      var jfif = null;\n      var adobe = null;\n      var frame, resetInterval;\n      let numSOSMarkers = 0;\n      var quantizationTables = [];\n      var huffmanTablesAC = [],\n        huffmanTablesDC = [];\n\n      let fileMarker = readUint16(data, offset);\n      offset += 2;\n      if (fileMarker !== /* SOI (Start of Image) = */ 0xffd8) {\n        throw new JpegError(\"SOI not found\");\n      }\n      fileMarker = readUint16(data, offset);\n      offset += 2;\n\n      markerLoop: while (fileMarker !== /* EOI (End of Image) = */ 0xffd9) {\n        var i, j, l;\n        switch (fileMarker) {\n          case 0xffe0: // APP0 (Application Specific)\n          case 0xffe1: // APP1\n          case 0xffe2: // APP2\n          case 0xffe3: // APP3\n          case 0xffe4: // APP4\n          case 0xffe5: // APP5\n          case 0xffe6: // APP6\n          case 0xffe7: // APP7\n          case 0xffe8: // APP8\n          case 0xffe9: // APP9\n          case 0xffea: // APP10\n          case 0xffeb: // APP11\n          case 0xffec: // APP12\n          case 0xffed: // APP13\n          case 0xffee: // APP14\n          case 0xffef: // APP15\n          case 0xfffe: // COM (Comment)\n            var appData = readDataBlock();\n\n            if (fileMarker === 0xffe0) {\n              // 'JFIF\\x00'\n              if (\n                appData[0] === 0x4a &&\n                appData[1] === 0x46 &&\n                appData[2] === 0x49 &&\n                appData[3] === 0x46 &&\n                appData[4] === 0\n              ) {\n                jfif = {\n                  version: { major: appData[5], minor: appData[6] },\n                  densityUnits: appData[7],\n                  xDensity: (appData[8] << 8) | appData[9],\n                  yDensity: (appData[10] << 8) | appData[11],\n                  thumbWidth: appData[12],\n                  thumbHeight: appData[13],\n                  thumbData: appData.subarray(\n                    14,\n                    14 + 3 * appData[12] * appData[13]\n                  ),\n                };\n              }\n            }\n            // TODO APP1 - Exif\n            if (fileMarker === 0xffee) {\n              // 'Adobe'\n              if (\n                appData[0] === 0x41 &&\n                appData[1] === 0x64 &&\n                appData[2] === 0x6f &&\n                appData[3] === 0x62 &&\n                appData[4] === 0x65\n              ) {\n                adobe = {\n                  version: (appData[5] << 8) | appData[6],\n                  flags0: (appData[7] << 8) | appData[8],\n                  flags1: (appData[9] << 8) | appData[10],\n                  transformCode: appData[11],\n                };\n              }\n            }\n            break;\n\n          case 0xffdb: // DQT (Define Quantization Tables)\n            const quantizationTablesLength = readUint16(data, offset);\n            offset += 2;\n            var quantizationTablesEnd = quantizationTablesLength + offset - 2;\n            var z;\n            while (offset < quantizationTablesEnd) {\n              var quantizationTableSpec = data[offset++];\n              var tableData = new Uint16Array(64);\n              if (quantizationTableSpec >> 4 === 0) {\n                // 8 bit values\n                for (j = 0; j < 64; j++) {\n                  z = dctZigZag[j];\n                  tableData[z] = data[offset++];\n                }\n              } else if (quantizationTableSpec >> 4 === 1) {\n                // 16 bit values\n                for (j = 0; j < 64; j++) {\n                  z = dctZigZag[j];\n                  tableData[z] = readUint16(data, offset);\n                  offset += 2;\n                }\n              } else {\n                throw new JpegError(\"DQT - invalid table spec\");\n              }\n              quantizationTables[quantizationTableSpec & 15] = tableData;\n            }\n            break;\n\n          case 0xffc0: // SOF0 (Start of Frame, Baseline DCT)\n          case 0xffc1: // SOF1 (Start of Frame, Extended DCT)\n          case 0xffc2: // SOF2 (Start of Frame, Progressive DCT)\n            if (frame) {\n              throw new JpegError(\"Only single frame JPEGs supported\");\n            }\n            offset += 2; // Skip marker length.\n\n            frame = {};\n            frame.extended = fileMarker === 0xffc1;\n            frame.progressive = fileMarker === 0xffc2;\n            frame.precision = data[offset++];\n            const sofScanLines = readUint16(data, offset);\n            offset += 2;\n            frame.scanLines = dnlScanLines || sofScanLines;\n            frame.samplesPerLine = readUint16(data, offset);\n            offset += 2;\n            frame.components = [];\n            frame.componentIds = {};\n            var componentsCount = data[offset++],\n              componentId;\n            var maxH = 0,\n              maxV = 0;\n            for (i = 0; i < componentsCount; i++) {\n              componentId = data[offset];\n              var h = data[offset + 1] >> 4;\n              var v = data[offset + 1] & 15;\n              if (maxH < h) {\n                maxH = h;\n              }\n              if (maxV < v) {\n                maxV = v;\n              }\n              var qId = data[offset + 2];\n              l = frame.components.push({\n                h,\n                v,\n                quantizationId: qId,\n                quantizationTable: null, // See comment below.\n              });\n              frame.componentIds[componentId] = l - 1;\n              offset += 3;\n            }\n            frame.maxH = maxH;\n            frame.maxV = maxV;\n            prepareComponents(frame);\n            break;\n\n          case 0xffc4: // DHT (Define Huffman Tables)\n            const huffmanLength = readUint16(data, offset);\n            offset += 2;\n            for (i = 2; i < huffmanLength; ) {\n              var huffmanTableSpec = data[offset++];\n              var codeLengths = new Uint8Array(16);\n              var codeLengthSum = 0;\n              for (j = 0; j < 16; j++, offset++) {\n                codeLengthSum += codeLengths[j] = data[offset];\n              }\n              var huffmanValues = new Uint8Array(codeLengthSum);\n              for (j = 0; j < codeLengthSum; j++, offset++) {\n                huffmanValues[j] = data[offset];\n              }\n              i += 17 + codeLengthSum;\n\n              (huffmanTableSpec >> 4 === 0 ? huffmanTablesDC : huffmanTablesAC)[\n                huffmanTableSpec & 15\n              ] = buildHuffmanTable(codeLengths, huffmanValues);\n            }\n            break;\n\n          case 0xffdd: // DRI (Define Restart Interval)\n            offset += 2; // Skip marker length.\n\n            resetInterval = readUint16(data, offset);\n            offset += 2;\n            break;\n\n          case 0xffda: // SOS (Start of Scan)\n            // A DNL marker (0xFFDC), if it exists, is only allowed at the end\n            // of the first scan segment and may only occur once in an image.\n            // Furthermore, to prevent an infinite loop, do *not* attempt to\n            // parse DNL markers during re-parsing of the JPEG scan data.\n            const parseDNLMarker = ++numSOSMarkers === 1 && !dnlScanLines;\n\n            offset += 2; // Skip marker length.\n\n            var selectorsCount = data[offset++];\n            var components = [],\n              component;\n            for (i = 0; i < selectorsCount; i++) {\n              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            var spectralStart = data[offset++];\n            var spectralEnd = data[offset++];\n            var successiveApproximation = data[offset++];\n            try {\n              var processed = decodeScan(\n                data,\n                offset,\n                frame,\n                components,\n                resetInterval,\n                spectralStart,\n                spectralEnd,\n                successiveApproximation >> 4,\n                successiveApproximation & 15,\n                parseDNLMarker\n              );\n              offset += processed;\n            } catch (ex) {\n              if (ex instanceof DNLMarkerError) {\n                warn(`${ex.message} -- attempting to re-parse the JPEG image.`);\n                return this.parse(data, { dnlScanLines: ex.scanLines });\n              } else if (ex instanceof EOIMarkerError) {\n                warn(`${ex.message} -- ignoring the rest of the image data.`);\n                break markerLoop;\n              }\n              throw ex;\n            }\n            break;\n\n          case 0xffdc: // DNL (Define Number of Lines)\n            // Ignore the marker, since it's being handled in `decodeScan`.\n            offset += 4;\n            break;\n\n          case 0xffff: // Fill bytes\n            if (data[offset] !== 0xff) {\n              // Avoid skipping a valid marker.\n              offset--;\n            }\n            break;\n\n          default:\n            // Could be incorrect encoding -- the last 0xFF byte of the previous\n            // block could have been eaten by the encoder, hence we fallback to\n            // `startPos = offset - 3` when looking for the next valid marker.\n            const nextFileMarker = findNextFileMarker(\n              data,\n              /* currentPos = */ offset - 2,\n              /* startPos = */ offset - 3\n            );\n            if (nextFileMarker && nextFileMarker.invalid) {\n              warn(\n                \"JpegImage.parse - unexpected data, current marker is: \" +\n                  nextFileMarker.invalid\n              );\n              offset = nextFileMarker.offset;\n              break;\n            }\n            if (offset >= data.length - 1) {\n              warn(\n                \"JpegImage.parse - reached the end of the image data \" +\n                  \"without finding an EOI marker (0xFFD9).\"\n              );\n              break markerLoop;\n            }\n            throw new JpegError(\n              \"JpegImage.parse - unknown marker: \" + fileMarker.toString(16)\n            );\n        }\n        fileMarker = readUint16(data, offset);\n        offset += 2;\n      }\n\n      this.width = frame.samplesPerLine;\n      this.height = frame.scanLines;\n      this.jfif = jfif;\n      this.adobe = adobe;\n      this.components = [];\n      for (i = 0; i < frame.components.length; i++) {\n        component = frame.components[i];\n\n        // Prevent errors when DQT markers are placed after SOF{n} markers,\n        // by assigning the `quantizationTable` entry after the entire image\n        // has been parsed (fixes issue7406.pdf).\n        var quantizationTable = quantizationTables[component.quantizationId];\n        if (quantizationTable) {\n          component.quantizationTable = quantizationTable;\n        }\n\n        this.components.push({\n          output: buildComponentData(frame, component),\n          scaleX: component.h / frame.maxH,\n          scaleY: component.v / frame.maxV,\n          blocksPerLine: component.blocksPerLine,\n          blocksPerColumn: component.blocksPerColumn,\n        });\n      }\n      this.numComponents = this.components.length;\n      return undefined;\n    },\n\n    _getLinearizedBlockData(width, height, isSourcePDF = false) {\n      var scaleX = this.width / width,\n        scaleY = this.height / height;\n\n      var component, componentScaleX, componentScaleY, blocksPerScanline;\n      var x, y, i, j, k;\n      var index;\n      var offset = 0;\n      var output;\n      var numComponents = this.components.length;\n      var dataLength = width * height * numComponents;\n      var data = new Uint8ClampedArray(dataLength);\n      var xScaleBlockOffset = new Uint32Array(width);\n      var mask3LSB = 0xfffffff8; // used to clear the 3 LSBs\n      let lastComponentScaleX;\n\n      for (i = 0; i < numComponents; i++) {\n        component = this.components[i];\n        componentScaleX = component.scaleX * scaleX;\n        componentScaleY = component.scaleY * scaleY;\n        offset = i;\n        output = component.output;\n        blocksPerScanline = (component.blocksPerLine + 1) << 3;\n        // Precalculate the `xScaleBlockOffset`. Since it doesn't depend on the\n        // component data, that's only necessary when `componentScaleX` changes.\n        if (componentScaleX !== lastComponentScaleX) {\n          for (x = 0; x < width; x++) {\n            j = 0 | (x * componentScaleX);\n            xScaleBlockOffset[x] = ((j & mask3LSB) << 3) | (j & 7);\n          }\n          lastComponentScaleX = componentScaleX;\n        }\n        // linearize the blocks of the component\n        for (y = 0; y < height; y++) {\n          j = 0 | (y * componentScaleY);\n          index = (blocksPerScanline * (j & mask3LSB)) | ((j & 7) << 3);\n          for (x = 0; x < width; x++) {\n            data[offset] = output[index + xScaleBlockOffset[x]];\n            offset += numComponents;\n          }\n        }\n      }\n\n      // decodeTransform contains pairs of multiplier (-256..256) and additive\n      let transform = this._decodeTransform;\n\n      // In PDF files, JPEG images with CMYK colour spaces are usually inverted\n      // (this can be observed by extracting the raw image data).\n      // Since the conversion algorithms (see below) were written primarily for\n      // the PDF use-cases, attempting to use `JpegImage` to parse standalone\n      // JPEG (CMYK) images may thus result in inverted images (see issue 9513).\n      //\n      // Unfortunately it's not (always) possible to tell, from the image data\n      // alone, if it needs to be inverted. Thus in an attempt to provide better\n      // out-of-box behaviour when `JpegImage` is used standalone, default to\n      // inverting JPEG (CMYK) images if and only if the image data does *not*\n      // come from a PDF file and no `decodeTransform` was passed by the user.\n      if (!isSourcePDF && numComponents === 4 && !transform) {\n        // prettier-ignore\n        transform = new Int32Array([\n          -256, 255, -256, 255, -256, 255, -256, 255]);\n      }\n\n      if (transform) {\n        for (i = 0; i < dataLength; ) {\n          for (j = 0, k = 0; j < numComponents; j++, i++, k += 2) {\n            data[i] = ((data[i] * transform[k]) >> 8) + transform[k + 1];\n          }\n        }\n      }\n      return data;\n    },\n\n    get _isColorConversionNeeded() {\n      if (this.adobe) {\n        // The adobe transform marker overrides any previous setting.\n        return !!this.adobe.transformCode;\n      }\n      if (this.numComponents === 3) {\n        if (this._colorTransform === 0) {\n          // If the Adobe transform marker is not present and the image\n          // dictionary has a 'ColorTransform' entry, explicitly set to `0`,\n          // then the colours should *not* be transformed.\n          return false;\n        }\n        return true;\n      }\n      // `this.numComponents !== 3`\n      if (this._colorTransform === 1) {\n        // If the Adobe transform marker is not present and the image\n        // dictionary has a 'ColorTransform' entry, explicitly set to `1`,\n        // then the colours should be transformed.\n        return true;\n      }\n      return false;\n    },\n\n    _convertYccToRgb: function convertYccToRgb(data) {\n      var Y, Cb, Cr;\n      for (var i = 0, length = data.length; i < length; i += 3) {\n        Y = data[i];\n        Cb = data[i + 1];\n        Cr = data[i + 2];\n        data[i] = Y - 179.456 + 1.402 * Cr;\n        data[i + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr;\n        data[i + 2] = Y - 226.816 + 1.772 * Cb;\n      }\n      return data;\n    },\n\n    _convertYcckToRgb: function convertYcckToRgb(data) {\n      var Y, Cb, Cr, k;\n      var offset = 0;\n      for (var i = 0, length = data.length; i < length; i += 4) {\n        Y = data[i];\n        Cb = data[i + 1];\n        Cr = data[i + 2];\n        k = data[i + 3];\n\n        data[offset++] =\n          -122.67195406894 +\n          Cb *\n            (-6.60635669420364e-5 * Cb +\n              0.000437130475926232 * Cr -\n              5.4080610064599e-5 * Y +\n              0.00048449797120281 * k -\n              0.154362151871126) +\n          Cr *\n            (-0.000957964378445773 * Cr +\n              0.000817076911346625 * Y -\n              0.00477271405408747 * k +\n              1.53380253221734) +\n          Y *\n            (0.000961250184130688 * Y -\n              0.00266257332283933 * k +\n              0.48357088451265) +\n          k * (-0.000336197177618394 * k + 0.484791561490776);\n\n        data[offset++] =\n          107.268039397724 +\n          Cb *\n            (2.19927104525741e-5 * Cb -\n              0.000640992018297945 * Cr +\n              0.000659397001245577 * Y +\n              0.000426105652938837 * k -\n              0.176491792462875) +\n          Cr *\n            (-0.000778269941513683 * Cr +\n              0.00130872261408275 * Y +\n              0.000770482631801132 * k -\n              0.151051492775562) +\n          Y *\n            (0.00126935368114843 * Y -\n              0.00265090189010898 * k +\n              0.25802910206845) +\n          k * (-0.000318913117588328 * k - 0.213742400323665);\n\n        data[offset++] =\n          -20.810012546947 +\n          Cb *\n            (-0.000570115196973677 * Cb -\n              2.63409051004589e-5 * Cr +\n              0.0020741088115012 * Y -\n              0.00288260236853442 * k +\n              0.814272968359295) +\n          Cr *\n            (-1.53496057440975e-5 * Cr -\n              0.000132689043961446 * Y +\n              0.000560833691242812 * k -\n              0.195152027534049) +\n          Y *\n            (0.00174418132927582 * Y -\n              0.00255243321439347 * k +\n              0.116935020465145) +\n          k * (-0.000343531996510555 * k + 0.24165260232407);\n      }\n      // Ensure that only the converted RGB data is returned.\n      return data.subarray(0, offset);\n    },\n\n    _convertYcckToCmyk: function convertYcckToCmyk(data) {\n      var Y, Cb, Cr;\n      for (var i = 0, length = data.length; i < length; i += 4) {\n        Y = data[i];\n        Cb = data[i + 1];\n        Cr = data[i + 2];\n        data[i] = 434.456 - Y - 1.402 * Cr;\n        data[i + 1] = 119.541 - Y + 0.344 * Cb + 0.714 * Cr;\n        data[i + 2] = 481.816 - Y - 1.772 * Cb;\n        // K in data[i + 3] is unchanged\n      }\n      return data;\n    },\n\n    _convertCmykToRgb: function convertCmykToRgb(data) {\n      var c, m, y, k;\n      var offset = 0;\n      for (var i = 0, length = data.length; i < length; i += 4) {\n        c = data[i];\n        m = data[i + 1];\n        y = data[i + 2];\n        k = data[i + 3];\n\n        data[offset++] =\n          255 +\n          c *\n            (-0.00006747147073602441 * c +\n              0.0008379262121013727 * m +\n              0.0002894718188643294 * y +\n              0.003264231057537806 * k -\n              1.1185611867203937) +\n          m *\n            (0.000026374107616089405 * m -\n              0.00008626949158638572 * y -\n              0.0002748769067499491 * k -\n              0.02155688794978967) +\n          y *\n            (-0.00003878099212869363 * y -\n              0.0003267808279485286 * k +\n              0.0686742238595345) -\n          k * (0.0003361971776183937 * k + 0.7430659151342254);\n\n        data[offset++] =\n          255 +\n          c *\n            (0.00013596372813588848 * c +\n              0.000924537132573585 * m +\n              0.00010567359618683593 * y +\n              0.0004791864687436512 * k -\n              0.3109689587515875) +\n          m *\n            (-0.00023545346108370344 * m +\n              0.0002702845253534714 * y +\n              0.0020200308977307156 * k -\n              0.7488052167015494) +\n          y *\n            (0.00006834815998235662 * y +\n              0.00015168452363460973 * k -\n              0.09751927774728933) -\n          k * (0.00031891311758832814 * k + 0.7364883807733168);\n\n        data[offset++] =\n          255 +\n          c *\n            (0.000013598650411385307 * c +\n              0.00012423956175490851 * m +\n              0.0004751985097583589 * y -\n              0.0000036729317476630422 * k -\n              0.05562186980264034) +\n          m *\n            (0.00016141380598724676 * m +\n              0.0009692239130725186 * y +\n              0.0007782692450036253 * k -\n              0.44015232367526463) +\n          y *\n            (5.068882914068769e-7 * y +\n              0.0017778369011375071 * k -\n              0.7591454649749609) -\n          k * (0.0003435319965105553 * k + 0.7063770186160144);\n      }\n      // Ensure that only the converted RGB data is returned.\n      return data.subarray(0, offset);\n    },\n\n    getData({ width, height, forceRGB = false, isSourcePDF = false }) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          isSourcePDF === true,\n          'JpegImage.getData: Unexpected \"isSourcePDF\" value for PDF files.'\n        );\n      }\n      if (this.numComponents > 4) {\n        throw new JpegError(\"Unsupported color mode\");\n      }\n      // Type of data: Uint8ClampedArray(width * height * numComponents)\n      var data = this._getLinearizedBlockData(width, height, isSourcePDF);\n\n      if (this.numComponents === 1 && forceRGB) {\n        var dataLength = data.length;\n        var rgbData = new Uint8ClampedArray(dataLength * 3);\n        var offset = 0;\n        for (var i = 0; i < dataLength; i++) {\n          var grayColor = data[i];\n          rgbData[offset++] = grayColor;\n          rgbData[offset++] = grayColor;\n          rgbData[offset++] = grayColor;\n        }\n        return rgbData;\n      } else if (this.numComponents === 3 && this._isColorConversionNeeded) {\n        return this._convertYccToRgb(data);\n      } else if (this.numComponents === 4) {\n        if (this._isColorConversionNeeded) {\n          if (forceRGB) {\n            return this._convertYcckToRgb(data);\n          }\n          return this._convertYcckToCmyk(data);\n        } else if (forceRGB) {\n          return this._convertCmykToRgb(data);\n        }\n      }\n      return data;\n    },\n  };\n\n  return JpegImage;\n})();\n\nexport { JpegImage };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./stream.js\";\nimport { JpxImage } from \"./jpx.js\";\nimport { shadow } from \"../shared/util.js\";\n\n/**\n * For JPEG 2000's we use a library to decode these images and\n * the stream behaves like all the other DecodeStreams.\n */\nconst JpxStream = (function JpxStreamClosure() {\n  // eslint-disable-next-line no-shadow\n  function JpxStream(stream, maybeLength, dict, params) {\n    this.stream = stream;\n    this.maybeLength = maybeLength;\n    this.dict = dict;\n    this.params = params;\n\n    DecodeStream.call(this, maybeLength);\n  }\n\n  JpxStream.prototype = Object.create(DecodeStream.prototype);\n\n  Object.defineProperty(JpxStream.prototype, \"bytes\", {\n    get: function JpxStream_bytes() {\n      // If `this.maybeLength` is null, we'll get the entire stream.\n      return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n    },\n    configurable: true,\n  });\n\n  JpxStream.prototype.ensureBuffer = function (requested) {\n    // No-op, since `this.readBlock` will always parse the entire image and\n    // directly insert all of its data into `this.buffer`.\n  };\n\n  JpxStream.prototype.readBlock = function () {\n    if (this.eof) {\n      return;\n    }\n    const jpxImage = new JpxImage();\n    jpxImage.parse(this.bytes);\n\n    const width = jpxImage.width;\n    const height = jpxImage.height;\n    const componentsCount = jpxImage.componentsCount;\n    const tileCount = jpxImage.tiles.length;\n    if (tileCount === 1) {\n      this.buffer = jpxImage.tiles[0].items;\n    } else {\n      const data = new Uint8ClampedArray(width * height * componentsCount);\n\n      for (let k = 0; k < tileCount; k++) {\n        const tileComponents = jpxImage.tiles[k];\n        const tileWidth = tileComponents.width;\n        const tileHeight = tileComponents.height;\n        const tileLeft = tileComponents.left;\n        const tileTop = tileComponents.top;\n\n        const src = tileComponents.items;\n        let srcPosition = 0;\n        let dataPosition = (width * tileTop + tileLeft) * componentsCount;\n        const imgRowSize = width * componentsCount;\n        const tileRowSize = tileWidth * componentsCount;\n\n        for (let j = 0; j < tileHeight; j++) {\n          const rowBytes = src.subarray(srcPosition, srcPosition + tileRowSize);\n          data.set(rowBytes, dataPosition);\n          srcPosition += tileRowSize;\n          dataPosition += imgRowSize;\n        }\n      }\n      this.buffer = data;\n    }\n    this.bufferLength = this.buffer.length;\n    this.eof = true;\n  };\n\n  return JpxStream;\n})();\n\nexport { JpxStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseException, info, warn } from \"../shared/util.js\";\nimport { log2, readUint16, readUint32 } from \"./core_utils.js\";\nimport { ArithmeticDecoder } from \"./arithmetic_decoder.js\";\n\nclass JpxError extends BaseException {\n  constructor(msg) {\n    super(`JPX error: ${msg}`);\n  }\n}\n\nvar JpxImage = (function JpxImageClosure() {\n  // Table E.1\n  var SubbandsGainLog2 = {\n    LL: 0,\n    LH: 1,\n    HL: 1,\n    HH: 2,\n  };\n\n  // eslint-disable-next-line no-shadow\n  function JpxImage() {\n    this.failOnCorruptedImage = false;\n  }\n  JpxImage.prototype = {\n    parse: function JpxImage_parse(data) {\n      var head = readUint16(data, 0);\n      // No box header, immediate start of codestream (SOC)\n      if (head === 0xff4f) {\n        this.parseCodestream(data, 0, data.length);\n        return;\n      }\n\n      var position = 0,\n        length = data.length;\n      while (position < length) {\n        var headerSize = 8;\n        var lbox = readUint32(data, position);\n        var tbox = readUint32(data, position + 4);\n        position += headerSize;\n        if (lbox === 1) {\n          // XLBox: read UInt64 according to spec.\n          // JavaScript's int precision of 53 bit should be sufficient here.\n          lbox =\n            readUint32(data, position) * 4294967296 +\n            readUint32(data, position + 4);\n          position += 8;\n          headerSize += 8;\n        }\n        if (lbox === 0) {\n          lbox = length - position + headerSize;\n        }\n        if (lbox < headerSize) {\n          throw new JpxError(\"Invalid box field size\");\n        }\n        var dataLength = lbox - headerSize;\n        var jumpDataLength = true;\n        switch (tbox) {\n          case 0x6a703268: // 'jp2h'\n            jumpDataLength = false; // parsing child boxes\n            break;\n          case 0x636f6c72: // 'colr'\n            // Colorspaces are not used, the CS from the PDF is used.\n            var method = data[position];\n            if (method === 1) {\n              // enumerated colorspace\n              var colorspace = readUint32(data, position + 3);\n              switch (colorspace) {\n                case 16: // this indicates a sRGB colorspace\n                case 17: // this indicates a grayscale colorspace\n                case 18: // this indicates a YUV colorspace\n                  break;\n                default:\n                  warn(\"Unknown colorspace \" + colorspace);\n                  break;\n              }\n            } else if (method === 2) {\n              info(\"ICC profile not supported\");\n            }\n            break;\n          case 0x6a703263: // 'jp2c'\n            this.parseCodestream(data, position, position + dataLength);\n            break;\n          case 0x6a502020: // 'jP\\024\\024'\n            if (readUint32(data, position) !== 0x0d0a870a) {\n              warn(\"Invalid JP2 signature\");\n            }\n            break;\n          // The following header types are valid but currently not used:\n          case 0x6a501a1a: // 'jP\\032\\032'\n          case 0x66747970: // 'ftyp'\n          case 0x72726571: // 'rreq'\n          case 0x72657320: // 'res '\n          case 0x69686472: // 'ihdr'\n            break;\n          default:\n            var headerType = String.fromCharCode(\n              (tbox >> 24) & 0xff,\n              (tbox >> 16) & 0xff,\n              (tbox >> 8) & 0xff,\n              tbox & 0xff\n            );\n            warn(\"Unsupported header type \" + tbox + \" (\" + headerType + \")\");\n            break;\n        }\n        if (jumpDataLength) {\n          position += dataLength;\n        }\n      }\n    },\n    parseImageProperties: function JpxImage_parseImageProperties(stream) {\n      var newByte = stream.getByte();\n      while (newByte >= 0) {\n        var oldByte = newByte;\n        newByte = stream.getByte();\n        var code = (oldByte << 8) | newByte;\n        // Image and tile size (SIZ)\n        if (code === 0xff51) {\n          stream.skip(4);\n          var Xsiz = stream.getInt32() >>> 0; // Byte 4\n          var Ysiz = stream.getInt32() >>> 0; // Byte 8\n          var XOsiz = stream.getInt32() >>> 0; // Byte 12\n          var YOsiz = stream.getInt32() >>> 0; // Byte 16\n          stream.skip(16);\n          var Csiz = stream.getUint16(); // Byte 36\n          this.width = Xsiz - XOsiz;\n          this.height = Ysiz - YOsiz;\n          this.componentsCount = Csiz;\n          // Results are always returned as `Uint8ClampedArray`s.\n          this.bitsPerComponent = 8;\n          return;\n        }\n      }\n      throw new JpxError(\"No size marker found in JPX stream\");\n    },\n    parseCodestream: function JpxImage_parseCodestream(data, start, end) {\n      var context = {};\n      var doNotRecover = false;\n      try {\n        var position = start;\n        while (position + 1 < end) {\n          var code = readUint16(data, position);\n          position += 2;\n\n          var length = 0,\n            j,\n            sqcd,\n            spqcds,\n            spqcdSize,\n            scalarExpounded,\n            tile;\n          switch (code) {\n            case 0xff4f: // Start of codestream (SOC)\n              context.mainHeader = true;\n              break;\n            case 0xffd9: // End of codestream (EOC)\n              break;\n            case 0xff51: // Image and tile size (SIZ)\n              length = readUint16(data, position);\n              var siz = {};\n              siz.Xsiz = readUint32(data, position + 4);\n              siz.Ysiz = readUint32(data, position + 8);\n              siz.XOsiz = readUint32(data, position + 12);\n              siz.YOsiz = readUint32(data, position + 16);\n              siz.XTsiz = readUint32(data, position + 20);\n              siz.YTsiz = readUint32(data, position + 24);\n              siz.XTOsiz = readUint32(data, position + 28);\n              siz.YTOsiz = readUint32(data, position + 32);\n              var componentsCount = readUint16(data, position + 36);\n              siz.Csiz = componentsCount;\n              var components = [];\n              j = position + 38;\n              for (var i = 0; i < componentsCount; i++) {\n                var component = {\n                  precision: (data[j] & 0x7f) + 1,\n                  isSigned: !!(data[j] & 0x80),\n                  XRsiz: data[j + 1],\n                  YRsiz: data[j + 2],\n                };\n                j += 3;\n                calculateComponentDimensions(component, siz);\n                components.push(component);\n              }\n              context.SIZ = siz;\n              context.components = components;\n              calculateTileGrids(context, components);\n              context.QCC = [];\n              context.COC = [];\n              break;\n            case 0xff5c: // Quantization default (QCD)\n              length = readUint16(data, position);\n              var qcd = {};\n              j = position + 2;\n              sqcd = data[j++];\n              switch (sqcd & 0x1f) {\n                case 0:\n                  spqcdSize = 8;\n                  scalarExpounded = true;\n                  break;\n                case 1:\n                  spqcdSize = 16;\n                  scalarExpounded = false;\n                  break;\n                case 2:\n                  spqcdSize = 16;\n                  scalarExpounded = true;\n                  break;\n                default:\n                  throw new Error(\"Invalid SQcd value \" + sqcd);\n              }\n              qcd.noQuantization = spqcdSize === 8;\n              qcd.scalarExpounded = scalarExpounded;\n              qcd.guardBits = sqcd >> 5;\n              spqcds = [];\n              while (j < length + position) {\n                var spqcd = {};\n                if (spqcdSize === 8) {\n                  spqcd.epsilon = data[j++] >> 3;\n                  spqcd.mu = 0;\n                } else {\n                  spqcd.epsilon = data[j] >> 3;\n                  spqcd.mu = ((data[j] & 0x7) << 8) | data[j + 1];\n                  j += 2;\n                }\n                spqcds.push(spqcd);\n              }\n              qcd.SPqcds = spqcds;\n              if (context.mainHeader) {\n                context.QCD = qcd;\n              } else {\n                context.currentTile.QCD = qcd;\n                context.currentTile.QCC = [];\n              }\n              break;\n            case 0xff5d: // Quantization component (QCC)\n              length = readUint16(data, position);\n              var qcc = {};\n              j = position + 2;\n              var cqcc;\n              if (context.SIZ.Csiz < 257) {\n                cqcc = data[j++];\n              } else {\n                cqcc = readUint16(data, j);\n                j += 2;\n              }\n              sqcd = data[j++];\n              switch (sqcd & 0x1f) {\n                case 0:\n                  spqcdSize = 8;\n                  scalarExpounded = true;\n                  break;\n                case 1:\n                  spqcdSize = 16;\n                  scalarExpounded = false;\n                  break;\n                case 2:\n                  spqcdSize = 16;\n                  scalarExpounded = true;\n                  break;\n                default:\n                  throw new Error(\"Invalid SQcd value \" + sqcd);\n              }\n              qcc.noQuantization = spqcdSize === 8;\n              qcc.scalarExpounded = scalarExpounded;\n              qcc.guardBits = sqcd >> 5;\n              spqcds = [];\n              while (j < length + position) {\n                spqcd = {};\n                if (spqcdSize === 8) {\n                  spqcd.epsilon = data[j++] >> 3;\n                  spqcd.mu = 0;\n                } else {\n                  spqcd.epsilon = data[j] >> 3;\n                  spqcd.mu = ((data[j] & 0x7) << 8) | data[j + 1];\n                  j += 2;\n                }\n                spqcds.push(spqcd);\n              }\n              qcc.SPqcds = spqcds;\n              if (context.mainHeader) {\n                context.QCC[cqcc] = qcc;\n              } else {\n                context.currentTile.QCC[cqcc] = qcc;\n              }\n              break;\n            case 0xff52: // Coding style default (COD)\n              length = readUint16(data, position);\n              var cod = {};\n              j = position + 2;\n              var scod = data[j++];\n              cod.entropyCoderWithCustomPrecincts = !!(scod & 1);\n              cod.sopMarkerUsed = !!(scod & 2);\n              cod.ephMarkerUsed = !!(scod & 4);\n              cod.progressionOrder = data[j++];\n              cod.layersCount = readUint16(data, j);\n              j += 2;\n              cod.multipleComponentTransform = data[j++];\n\n              cod.decompositionLevelsCount = data[j++];\n              cod.xcb = (data[j++] & 0xf) + 2;\n              cod.ycb = (data[j++] & 0xf) + 2;\n              var blockStyle = data[j++];\n              cod.selectiveArithmeticCodingBypass = !!(blockStyle & 1);\n              cod.resetContextProbabilities = !!(blockStyle & 2);\n              cod.terminationOnEachCodingPass = !!(blockStyle & 4);\n              cod.verticallyStripe = !!(blockStyle & 8);\n              cod.predictableTermination = !!(blockStyle & 16);\n              cod.segmentationSymbolUsed = !!(blockStyle & 32);\n              cod.reversibleTransformation = data[j++];\n              if (cod.entropyCoderWithCustomPrecincts) {\n                var precinctsSizes = [];\n                while (j < length + position) {\n                  var precinctsSize = data[j++];\n                  precinctsSizes.push({\n                    PPx: precinctsSize & 0xf,\n                    PPy: precinctsSize >> 4,\n                  });\n                }\n                cod.precinctsSizes = precinctsSizes;\n              }\n              var unsupported = [];\n              if (cod.selectiveArithmeticCodingBypass) {\n                unsupported.push(\"selectiveArithmeticCodingBypass\");\n              }\n              if (cod.resetContextProbabilities) {\n                unsupported.push(\"resetContextProbabilities\");\n              }\n              if (cod.terminationOnEachCodingPass) {\n                unsupported.push(\"terminationOnEachCodingPass\");\n              }\n              if (cod.verticallyStripe) {\n                unsupported.push(\"verticallyStripe\");\n              }\n              if (cod.predictableTermination) {\n                unsupported.push(\"predictableTermination\");\n              }\n              if (unsupported.length > 0) {\n                doNotRecover = true;\n                throw new Error(\n                  \"Unsupported COD options (\" + unsupported.join(\", \") + \")\"\n                );\n              }\n              if (context.mainHeader) {\n                context.COD = cod;\n              } else {\n                context.currentTile.COD = cod;\n                context.currentTile.COC = [];\n              }\n              break;\n            case 0xff90: // Start of tile-part (SOT)\n              length = readUint16(data, position);\n              tile = {};\n              tile.index = readUint16(data, position + 2);\n              tile.length = readUint32(data, position + 4);\n              tile.dataEnd = tile.length + position - 2;\n              tile.partIndex = data[position + 8];\n              tile.partsCount = data[position + 9];\n\n              context.mainHeader = false;\n              if (tile.partIndex === 0) {\n                // reset component specific settings\n                tile.COD = context.COD;\n                tile.COC = context.COC.slice(0); // clone of the global COC\n                tile.QCD = context.QCD;\n                tile.QCC = context.QCC.slice(0); // clone of the global COC\n              }\n              context.currentTile = tile;\n              break;\n            case 0xff93: // Start of data (SOD)\n              tile = context.currentTile;\n              if (tile.partIndex === 0) {\n                initializeTile(context, tile.index);\n                buildPackets(context);\n              }\n\n              // moving to the end of the data\n              length = tile.dataEnd - position;\n              parseTilePackets(context, data, position, length);\n              break;\n            case 0xff55: // Tile-part lengths, main header (TLM)\n            case 0xff57: // Packet length, main header (PLM)\n            case 0xff58: // Packet length, tile-part header (PLT)\n            case 0xff64: // Comment (COM)\n              length = readUint16(data, position);\n              // skipping content\n              break;\n            case 0xff53: // Coding style component (COC)\n              throw new Error(\n                \"Codestream code 0xFF53 (COC) is not implemented\"\n              );\n            default:\n              throw new Error(\"Unknown codestream code: \" + code.toString(16));\n          }\n          position += length;\n        }\n      } catch (e) {\n        if (doNotRecover || this.failOnCorruptedImage) {\n          throw new JpxError(e.message);\n        } else {\n          warn(\"JPX: Trying to recover from: \" + e.message);\n        }\n      }\n      this.tiles = transformComponents(context);\n      this.width = context.SIZ.Xsiz - context.SIZ.XOsiz;\n      this.height = context.SIZ.Ysiz - context.SIZ.YOsiz;\n      this.componentsCount = context.SIZ.Csiz;\n    },\n  };\n  function calculateComponentDimensions(component, siz) {\n    // Section B.2 Component mapping\n    component.x0 = Math.ceil(siz.XOsiz / component.XRsiz);\n    component.x1 = Math.ceil(siz.Xsiz / component.XRsiz);\n    component.y0 = Math.ceil(siz.YOsiz / component.YRsiz);\n    component.y1 = Math.ceil(siz.Ysiz / component.YRsiz);\n    component.width = component.x1 - component.x0;\n    component.height = component.y1 - component.y0;\n  }\n  function calculateTileGrids(context, components) {\n    var siz = context.SIZ;\n    // Section B.3 Division into tile and tile-components\n    var tile,\n      tiles = [];\n    var numXtiles = Math.ceil((siz.Xsiz - siz.XTOsiz) / siz.XTsiz);\n    var numYtiles = Math.ceil((siz.Ysiz - siz.YTOsiz) / siz.YTsiz);\n    for (var q = 0; q < numYtiles; q++) {\n      for (var p = 0; p < numXtiles; p++) {\n        tile = {};\n        tile.tx0 = Math.max(siz.XTOsiz + p * siz.XTsiz, siz.XOsiz);\n        tile.ty0 = Math.max(siz.YTOsiz + q * siz.YTsiz, siz.YOsiz);\n        tile.tx1 = Math.min(siz.XTOsiz + (p + 1) * siz.XTsiz, siz.Xsiz);\n        tile.ty1 = Math.min(siz.YTOsiz + (q + 1) * siz.YTsiz, siz.Ysiz);\n        tile.width = tile.tx1 - tile.tx0;\n        tile.height = tile.ty1 - tile.ty0;\n        tile.components = [];\n        tiles.push(tile);\n      }\n    }\n    context.tiles = tiles;\n\n    var componentsCount = siz.Csiz;\n    for (var i = 0, ii = componentsCount; i < ii; i++) {\n      var component = components[i];\n      for (var j = 0, jj = tiles.length; j < jj; j++) {\n        var tileComponent = {};\n        tile = tiles[j];\n        tileComponent.tcx0 = Math.ceil(tile.tx0 / component.XRsiz);\n        tileComponent.tcy0 = Math.ceil(tile.ty0 / component.YRsiz);\n        tileComponent.tcx1 = Math.ceil(tile.tx1 / component.XRsiz);\n        tileComponent.tcy1 = Math.ceil(tile.ty1 / component.YRsiz);\n        tileComponent.width = tileComponent.tcx1 - tileComponent.tcx0;\n        tileComponent.height = tileComponent.tcy1 - tileComponent.tcy0;\n        tile.components[i] = tileComponent;\n      }\n    }\n  }\n  function getBlocksDimensions(context, component, r) {\n    var codOrCoc = component.codingStyleParameters;\n    var result = {};\n    if (!codOrCoc.entropyCoderWithCustomPrecincts) {\n      result.PPx = 15;\n      result.PPy = 15;\n    } else {\n      result.PPx = codOrCoc.precinctsSizes[r].PPx;\n      result.PPy = codOrCoc.precinctsSizes[r].PPy;\n    }\n    // calculate codeblock size as described in section B.7\n    result.xcb_ =\n      r > 0\n        ? Math.min(codOrCoc.xcb, result.PPx - 1)\n        : Math.min(codOrCoc.xcb, result.PPx);\n    result.ycb_ =\n      r > 0\n        ? Math.min(codOrCoc.ycb, result.PPy - 1)\n        : Math.min(codOrCoc.ycb, result.PPy);\n    return result;\n  }\n  function buildPrecincts(context, resolution, dimensions) {\n    // Section B.6 Division resolution to precincts\n    var precinctWidth = 1 << dimensions.PPx;\n    var precinctHeight = 1 << dimensions.PPy;\n    // Jasper introduces codeblock groups for mapping each subband codeblocks\n    // to precincts. Precinct partition divides a resolution according to width\n    // and height parameters. The subband that belongs to the resolution level\n    // has a different size than the level, unless it is the zero resolution.\n\n    // From Jasper documentation: jpeg2000.pdf, section K: Tier-2 coding:\n    // The precinct partitioning for a particular subband is derived from a\n    // partitioning of its parent LL band (i.e., the LL band at the next higher\n    // resolution level)... The LL band associated with each resolution level is\n    // divided into precincts... Each of the resulting precinct regions is then\n    // mapped into its child subbands (if any) at the next lower resolution\n    // level. This is accomplished by using the coordinate transformation\n    // (u, v) = (ceil(x/2), ceil(y/2)) where (x, y) and (u, v) are the\n    // coordinates of a point in the LL band and child subband, respectively.\n    var isZeroRes = resolution.resLevel === 0;\n    var precinctWidthInSubband = 1 << (dimensions.PPx + (isZeroRes ? 0 : -1));\n    var precinctHeightInSubband = 1 << (dimensions.PPy + (isZeroRes ? 0 : -1));\n    var numprecinctswide =\n      resolution.trx1 > resolution.trx0\n        ? Math.ceil(resolution.trx1 / precinctWidth) -\n          Math.floor(resolution.trx0 / precinctWidth)\n        : 0;\n    var numprecinctshigh =\n      resolution.try1 > resolution.try0\n        ? Math.ceil(resolution.try1 / precinctHeight) -\n          Math.floor(resolution.try0 / precinctHeight)\n        : 0;\n    var numprecincts = numprecinctswide * numprecinctshigh;\n\n    resolution.precinctParameters = {\n      precinctWidth,\n      precinctHeight,\n      numprecinctswide,\n      numprecinctshigh,\n      numprecincts,\n      precinctWidthInSubband,\n      precinctHeightInSubband,\n    };\n  }\n  function buildCodeblocks(context, subband, dimensions) {\n    // Section B.7 Division sub-band into code-blocks\n    var xcb_ = dimensions.xcb_;\n    var ycb_ = dimensions.ycb_;\n    var codeblockWidth = 1 << xcb_;\n    var codeblockHeight = 1 << ycb_;\n    var cbx0 = subband.tbx0 >> xcb_;\n    var cby0 = subband.tby0 >> ycb_;\n    var cbx1 = (subband.tbx1 + codeblockWidth - 1) >> xcb_;\n    var cby1 = (subband.tby1 + codeblockHeight - 1) >> ycb_;\n    var precinctParameters = subband.resolution.precinctParameters;\n    var codeblocks = [];\n    var precincts = [];\n    var i, j, codeblock, precinctNumber;\n    for (j = cby0; j < cby1; j++) {\n      for (i = cbx0; i < cbx1; i++) {\n        codeblock = {\n          cbx: i,\n          cby: j,\n          tbx0: codeblockWidth * i,\n          tby0: codeblockHeight * j,\n          tbx1: codeblockWidth * (i + 1),\n          tby1: codeblockHeight * (j + 1),\n        };\n\n        codeblock.tbx0_ = Math.max(subband.tbx0, codeblock.tbx0);\n        codeblock.tby0_ = Math.max(subband.tby0, codeblock.tby0);\n        codeblock.tbx1_ = Math.min(subband.tbx1, codeblock.tbx1);\n        codeblock.tby1_ = Math.min(subband.tby1, codeblock.tby1);\n\n        // Calculate precinct number for this codeblock, codeblock position\n        // should be relative to its subband, use actual dimension and position\n        // See comment about codeblock group width and height\n        var pi = Math.floor(\n          (codeblock.tbx0_ - subband.tbx0) /\n            precinctParameters.precinctWidthInSubband\n        );\n        var pj = Math.floor(\n          (codeblock.tby0_ - subband.tby0) /\n            precinctParameters.precinctHeightInSubband\n        );\n        precinctNumber = pi + pj * precinctParameters.numprecinctswide;\n\n        codeblock.precinctNumber = precinctNumber;\n        codeblock.subbandType = subband.type;\n        codeblock.Lblock = 3;\n\n        if (\n          codeblock.tbx1_ <= codeblock.tbx0_ ||\n          codeblock.tby1_ <= codeblock.tby0_\n        ) {\n          continue;\n        }\n        codeblocks.push(codeblock);\n        // building precinct for the sub-band\n        var precinct = precincts[precinctNumber];\n        if (precinct !== undefined) {\n          if (i < precinct.cbxMin) {\n            precinct.cbxMin = i;\n          } else if (i > precinct.cbxMax) {\n            precinct.cbxMax = i;\n          }\n          if (j < precinct.cbyMin) {\n            precinct.cbxMin = j;\n          } else if (j > precinct.cbyMax) {\n            precinct.cbyMax = j;\n          }\n        } else {\n          precincts[precinctNumber] = precinct = {\n            cbxMin: i,\n            cbyMin: j,\n            cbxMax: i,\n            cbyMax: j,\n          };\n        }\n        codeblock.precinct = precinct;\n      }\n    }\n    subband.codeblockParameters = {\n      codeblockWidth: xcb_,\n      codeblockHeight: ycb_,\n      numcodeblockwide: cbx1 - cbx0 + 1,\n      numcodeblockhigh: cby1 - cby0 + 1,\n    };\n    subband.codeblocks = codeblocks;\n    subband.precincts = precincts;\n  }\n  function createPacket(resolution, precinctNumber, layerNumber) {\n    var precinctCodeblocks = [];\n    // Section B.10.8 Order of info in packet\n    var subbands = resolution.subbands;\n    // sub-bands already ordered in 'LL', 'HL', 'LH', and 'HH' sequence\n    for (var i = 0, ii = subbands.length; i < ii; i++) {\n      var subband = subbands[i];\n      var codeblocks = subband.codeblocks;\n      for (var j = 0, jj = codeblocks.length; j < jj; j++) {\n        var codeblock = codeblocks[j];\n        if (codeblock.precinctNumber !== precinctNumber) {\n          continue;\n        }\n        precinctCodeblocks.push(codeblock);\n      }\n    }\n    return {\n      layerNumber,\n      codeblocks: precinctCodeblocks,\n    };\n  }\n  function LayerResolutionComponentPositionIterator(context) {\n    var siz = context.SIZ;\n    var tileIndex = context.currentTile.index;\n    var tile = context.tiles[tileIndex];\n    var layersCount = tile.codingStyleDefaultParameters.layersCount;\n    var componentsCount = siz.Csiz;\n    var maxDecompositionLevelsCount = 0;\n    for (var q = 0; q < componentsCount; q++) {\n      maxDecompositionLevelsCount = Math.max(\n        maxDecompositionLevelsCount,\n        tile.components[q].codingStyleParameters.decompositionLevelsCount\n      );\n    }\n\n    var l = 0,\n      r = 0,\n      i = 0,\n      k = 0;\n\n    this.nextPacket = function JpxImage_nextPacket() {\n      // Section B.12.1.1 Layer-resolution-component-position\n      for (; l < layersCount; l++) {\n        for (; r <= maxDecompositionLevelsCount; r++) {\n          for (; i < componentsCount; i++) {\n            var component = tile.components[i];\n            if (r > component.codingStyleParameters.decompositionLevelsCount) {\n              continue;\n            }\n\n            var resolution = component.resolutions[r];\n            var numprecincts = resolution.precinctParameters.numprecincts;\n            for (; k < numprecincts; ) {\n              var packet = createPacket(resolution, k, l);\n              k++;\n              return packet;\n            }\n            k = 0;\n          }\n          i = 0;\n        }\n        r = 0;\n      }\n      throw new JpxError(\"Out of packets\");\n    };\n  }\n  function ResolutionLayerComponentPositionIterator(context) {\n    var siz = context.SIZ;\n    var tileIndex = context.currentTile.index;\n    var tile = context.tiles[tileIndex];\n    var layersCount = tile.codingStyleDefaultParameters.layersCount;\n    var componentsCount = siz.Csiz;\n    var maxDecompositionLevelsCount = 0;\n    for (var q = 0; q < componentsCount; q++) {\n      maxDecompositionLevelsCount = Math.max(\n        maxDecompositionLevelsCount,\n        tile.components[q].codingStyleParameters.decompositionLevelsCount\n      );\n    }\n\n    var r = 0,\n      l = 0,\n      i = 0,\n      k = 0;\n\n    this.nextPacket = function JpxImage_nextPacket() {\n      // Section B.12.1.2 Resolution-layer-component-position\n      for (; r <= maxDecompositionLevelsCount; r++) {\n        for (; l < layersCount; l++) {\n          for (; i < componentsCount; i++) {\n            var component = tile.components[i];\n            if (r > component.codingStyleParameters.decompositionLevelsCount) {\n              continue;\n            }\n\n            var resolution = component.resolutions[r];\n            var numprecincts = resolution.precinctParameters.numprecincts;\n            for (; k < numprecincts; ) {\n              var packet = createPacket(resolution, k, l);\n              k++;\n              return packet;\n            }\n            k = 0;\n          }\n          i = 0;\n        }\n        l = 0;\n      }\n      throw new JpxError(\"Out of packets\");\n    };\n  }\n  function ResolutionPositionComponentLayerIterator(context) {\n    var siz = context.SIZ;\n    var tileIndex = context.currentTile.index;\n    var tile = context.tiles[tileIndex];\n    var layersCount = tile.codingStyleDefaultParameters.layersCount;\n    var componentsCount = siz.Csiz;\n    var l, r, c, p;\n    var maxDecompositionLevelsCount = 0;\n    for (c = 0; c < componentsCount; c++) {\n      const component = tile.components[c];\n      maxDecompositionLevelsCount = Math.max(\n        maxDecompositionLevelsCount,\n        component.codingStyleParameters.decompositionLevelsCount\n      );\n    }\n    var maxNumPrecinctsInLevel = new Int32Array(\n      maxDecompositionLevelsCount + 1\n    );\n    for (r = 0; r <= maxDecompositionLevelsCount; ++r) {\n      var maxNumPrecincts = 0;\n      for (c = 0; c < componentsCount; ++c) {\n        var resolutions = tile.components[c].resolutions;\n        if (r < resolutions.length) {\n          maxNumPrecincts = Math.max(\n            maxNumPrecincts,\n            resolutions[r].precinctParameters.numprecincts\n          );\n        }\n      }\n      maxNumPrecinctsInLevel[r] = maxNumPrecincts;\n    }\n    l = 0;\n    r = 0;\n    c = 0;\n    p = 0;\n\n    this.nextPacket = function JpxImage_nextPacket() {\n      // Section B.12.1.3 Resolution-position-component-layer\n      for (; r <= maxDecompositionLevelsCount; r++) {\n        for (; p < maxNumPrecinctsInLevel[r]; p++) {\n          for (; c < componentsCount; c++) {\n            const component = tile.components[c];\n            if (r > component.codingStyleParameters.decompositionLevelsCount) {\n              continue;\n            }\n            var resolution = component.resolutions[r];\n            var numprecincts = resolution.precinctParameters.numprecincts;\n            if (p >= numprecincts) {\n              continue;\n            }\n            for (; l < layersCount; ) {\n              var packet = createPacket(resolution, p, l);\n              l++;\n              return packet;\n            }\n            l = 0;\n          }\n          c = 0;\n        }\n        p = 0;\n      }\n      throw new JpxError(\"Out of packets\");\n    };\n  }\n  function PositionComponentResolutionLayerIterator(context) {\n    var siz = context.SIZ;\n    var tileIndex = context.currentTile.index;\n    var tile = context.tiles[tileIndex];\n    var layersCount = tile.codingStyleDefaultParameters.layersCount;\n    var componentsCount = siz.Csiz;\n    var precinctsSizes = getPrecinctSizesInImageScale(tile);\n    var precinctsIterationSizes = precinctsSizes;\n    var l = 0,\n      r = 0,\n      c = 0,\n      px = 0,\n      py = 0;\n\n    this.nextPacket = function JpxImage_nextPacket() {\n      // Section B.12.1.4 Position-component-resolution-layer\n      for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n        for (; px < precinctsIterationSizes.maxNumWide; px++) {\n          for (; c < componentsCount; c++) {\n            var component = tile.components[c];\n            var decompositionLevelsCount =\n              component.codingStyleParameters.decompositionLevelsCount;\n            for (; r <= decompositionLevelsCount; r++) {\n              var resolution = component.resolutions[r];\n              var sizeInImageScale =\n                precinctsSizes.components[c].resolutions[r];\n              var k = getPrecinctIndexIfExist(\n                px,\n                py,\n                sizeInImageScale,\n                precinctsIterationSizes,\n                resolution\n              );\n              if (k === null) {\n                continue;\n              }\n              for (; l < layersCount; ) {\n                var packet = createPacket(resolution, k, l);\n                l++;\n                return packet;\n              }\n              l = 0;\n            }\n            r = 0;\n          }\n          c = 0;\n        }\n        px = 0;\n      }\n      throw new JpxError(\"Out of packets\");\n    };\n  }\n  function ComponentPositionResolutionLayerIterator(context) {\n    var siz = context.SIZ;\n    var tileIndex = context.currentTile.index;\n    var tile = context.tiles[tileIndex];\n    var layersCount = tile.codingStyleDefaultParameters.layersCount;\n    var componentsCount = siz.Csiz;\n    var precinctsSizes = getPrecinctSizesInImageScale(tile);\n    var l = 0,\n      r = 0,\n      c = 0,\n      px = 0,\n      py = 0;\n\n    this.nextPacket = function JpxImage_nextPacket() {\n      // Section B.12.1.5 Component-position-resolution-layer\n      for (; c < componentsCount; ++c) {\n        var component = tile.components[c];\n        var precinctsIterationSizes = precinctsSizes.components[c];\n        var decompositionLevelsCount =\n          component.codingStyleParameters.decompositionLevelsCount;\n        for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n          for (; px < precinctsIterationSizes.maxNumWide; px++) {\n            for (; r <= decompositionLevelsCount; r++) {\n              var resolution = component.resolutions[r];\n              var sizeInImageScale = precinctsIterationSizes.resolutions[r];\n              var k = getPrecinctIndexIfExist(\n                px,\n                py,\n                sizeInImageScale,\n                precinctsIterationSizes,\n                resolution\n              );\n              if (k === null) {\n                continue;\n              }\n              for (; l < layersCount; ) {\n                var packet = createPacket(resolution, k, l);\n                l++;\n                return packet;\n              }\n              l = 0;\n            }\n            r = 0;\n          }\n          px = 0;\n        }\n        py = 0;\n      }\n      throw new JpxError(\"Out of packets\");\n    };\n  }\n  function getPrecinctIndexIfExist(\n    pxIndex,\n    pyIndex,\n    sizeInImageScale,\n    precinctIterationSizes,\n    resolution\n  ) {\n    var posX = pxIndex * precinctIterationSizes.minWidth;\n    var posY = pyIndex * precinctIterationSizes.minHeight;\n    if (\n      posX % sizeInImageScale.width !== 0 ||\n      posY % sizeInImageScale.height !== 0\n    ) {\n      return null;\n    }\n    var startPrecinctRowIndex =\n      (posY / sizeInImageScale.width) *\n      resolution.precinctParameters.numprecinctswide;\n    return posX / sizeInImageScale.height + startPrecinctRowIndex;\n  }\n  function getPrecinctSizesInImageScale(tile) {\n    var componentsCount = tile.components.length;\n    var minWidth = Number.MAX_VALUE;\n    var minHeight = Number.MAX_VALUE;\n    var maxNumWide = 0;\n    var maxNumHigh = 0;\n    var sizePerComponent = new Array(componentsCount);\n    for (var c = 0; c < componentsCount; c++) {\n      var component = tile.components[c];\n      var decompositionLevelsCount =\n        component.codingStyleParameters.decompositionLevelsCount;\n      var sizePerResolution = new Array(decompositionLevelsCount + 1);\n      var minWidthCurrentComponent = Number.MAX_VALUE;\n      var minHeightCurrentComponent = Number.MAX_VALUE;\n      var maxNumWideCurrentComponent = 0;\n      var maxNumHighCurrentComponent = 0;\n      var scale = 1;\n      for (var r = decompositionLevelsCount; r >= 0; --r) {\n        var resolution = component.resolutions[r];\n        var widthCurrentResolution =\n          scale * resolution.precinctParameters.precinctWidth;\n        var heightCurrentResolution =\n          scale * resolution.precinctParameters.precinctHeight;\n        minWidthCurrentComponent = Math.min(\n          minWidthCurrentComponent,\n          widthCurrentResolution\n        );\n        minHeightCurrentComponent = Math.min(\n          minHeightCurrentComponent,\n          heightCurrentResolution\n        );\n        maxNumWideCurrentComponent = Math.max(\n          maxNumWideCurrentComponent,\n          resolution.precinctParameters.numprecinctswide\n        );\n        maxNumHighCurrentComponent = Math.max(\n          maxNumHighCurrentComponent,\n          resolution.precinctParameters.numprecinctshigh\n        );\n        sizePerResolution[r] = {\n          width: widthCurrentResolution,\n          height: heightCurrentResolution,\n        };\n        scale <<= 1;\n      }\n      minWidth = Math.min(minWidth, minWidthCurrentComponent);\n      minHeight = Math.min(minHeight, minHeightCurrentComponent);\n      maxNumWide = Math.max(maxNumWide, maxNumWideCurrentComponent);\n      maxNumHigh = Math.max(maxNumHigh, maxNumHighCurrentComponent);\n      sizePerComponent[c] = {\n        resolutions: sizePerResolution,\n        minWidth: minWidthCurrentComponent,\n        minHeight: minHeightCurrentComponent,\n        maxNumWide: maxNumWideCurrentComponent,\n        maxNumHigh: maxNumHighCurrentComponent,\n      };\n    }\n    return {\n      components: sizePerComponent,\n      minWidth,\n      minHeight,\n      maxNumWide,\n      maxNumHigh,\n    };\n  }\n  function buildPackets(context) {\n    var siz = context.SIZ;\n    var tileIndex = context.currentTile.index;\n    var tile = context.tiles[tileIndex];\n    var componentsCount = siz.Csiz;\n    // Creating resolutions and sub-bands for each component\n    for (var c = 0; c < componentsCount; c++) {\n      var component = tile.components[c];\n      var decompositionLevelsCount =\n        component.codingStyleParameters.decompositionLevelsCount;\n      // Section B.5 Resolution levels and sub-bands\n      var resolutions = [];\n      var subbands = [];\n      for (var r = 0; r <= decompositionLevelsCount; r++) {\n        var blocksDimensions = getBlocksDimensions(context, component, r);\n        var resolution = {};\n        var scale = 1 << (decompositionLevelsCount - r);\n        resolution.trx0 = Math.ceil(component.tcx0 / scale);\n        resolution.try0 = Math.ceil(component.tcy0 / scale);\n        resolution.trx1 = Math.ceil(component.tcx1 / scale);\n        resolution.try1 = Math.ceil(component.tcy1 / scale);\n        resolution.resLevel = r;\n        buildPrecincts(context, resolution, blocksDimensions);\n        resolutions.push(resolution);\n\n        var subband;\n        if (r === 0) {\n          // one sub-band (LL) with last decomposition\n          subband = {};\n          subband.type = \"LL\";\n          subband.tbx0 = Math.ceil(component.tcx0 / scale);\n          subband.tby0 = Math.ceil(component.tcy0 / scale);\n          subband.tbx1 = Math.ceil(component.tcx1 / scale);\n          subband.tby1 = Math.ceil(component.tcy1 / scale);\n          subband.resolution = resolution;\n          buildCodeblocks(context, subband, blocksDimensions);\n          subbands.push(subband);\n          resolution.subbands = [subband];\n        } else {\n          var bscale = 1 << (decompositionLevelsCount - r + 1);\n          var resolutionSubbands = [];\n          // three sub-bands (HL, LH and HH) with rest of decompositions\n          subband = {};\n          subband.type = \"HL\";\n          subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);\n          subband.tby0 = Math.ceil(component.tcy0 / bscale);\n          subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);\n          subband.tby1 = Math.ceil(component.tcy1 / bscale);\n          subband.resolution = resolution;\n          buildCodeblocks(context, subband, blocksDimensions);\n          subbands.push(subband);\n          resolutionSubbands.push(subband);\n\n          subband = {};\n          subband.type = \"LH\";\n          subband.tbx0 = Math.ceil(component.tcx0 / bscale);\n          subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);\n          subband.tbx1 = Math.ceil(component.tcx1 / bscale);\n          subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);\n          subband.resolution = resolution;\n          buildCodeblocks(context, subband, blocksDimensions);\n          subbands.push(subband);\n          resolutionSubbands.push(subband);\n\n          subband = {};\n          subband.type = \"HH\";\n          subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);\n          subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);\n          subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);\n          subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);\n          subband.resolution = resolution;\n          buildCodeblocks(context, subband, blocksDimensions);\n          subbands.push(subband);\n          resolutionSubbands.push(subband);\n\n          resolution.subbands = resolutionSubbands;\n        }\n      }\n      component.resolutions = resolutions;\n      component.subbands = subbands;\n    }\n    // Generate the packets sequence\n    var progressionOrder = tile.codingStyleDefaultParameters.progressionOrder;\n    switch (progressionOrder) {\n      case 0:\n        tile.packetsIterator = new LayerResolutionComponentPositionIterator(\n          context\n        );\n        break;\n      case 1:\n        tile.packetsIterator = new ResolutionLayerComponentPositionIterator(\n          context\n        );\n        break;\n      case 2:\n        tile.packetsIterator = new ResolutionPositionComponentLayerIterator(\n          context\n        );\n        break;\n      case 3:\n        tile.packetsIterator = new PositionComponentResolutionLayerIterator(\n          context\n        );\n        break;\n      case 4:\n        tile.packetsIterator = new ComponentPositionResolutionLayerIterator(\n          context\n        );\n        break;\n      default:\n        throw new JpxError(`Unsupported progression order ${progressionOrder}`);\n    }\n  }\n  function parseTilePackets(context, data, offset, dataLength) {\n    var position = 0;\n    var buffer,\n      bufferSize = 0,\n      skipNextBit = false;\n    function readBits(count) {\n      while (bufferSize < count) {\n        var b = data[offset + position];\n        position++;\n        if (skipNextBit) {\n          buffer = (buffer << 7) | b;\n          bufferSize += 7;\n          skipNextBit = false;\n        } else {\n          buffer = (buffer << 8) | b;\n          bufferSize += 8;\n        }\n        if (b === 0xff) {\n          skipNextBit = true;\n        }\n      }\n      bufferSize -= count;\n      return (buffer >>> bufferSize) & ((1 << count) - 1);\n    }\n    function skipMarkerIfEqual(value) {\n      if (\n        data[offset + position - 1] === 0xff &&\n        data[offset + position] === value\n      ) {\n        skipBytes(1);\n        return true;\n      } else if (\n        data[offset + position] === 0xff &&\n        data[offset + position + 1] === value\n      ) {\n        skipBytes(2);\n        return true;\n      }\n      return false;\n    }\n    function skipBytes(count) {\n      position += count;\n    }\n    function alignToByte() {\n      bufferSize = 0;\n      if (skipNextBit) {\n        position++;\n        skipNextBit = false;\n      }\n    }\n    function readCodingpasses() {\n      if (readBits(1) === 0) {\n        return 1;\n      }\n      if (readBits(1) === 0) {\n        return 2;\n      }\n      var value = readBits(2);\n      if (value < 3) {\n        return value + 3;\n      }\n      value = readBits(5);\n      if (value < 31) {\n        return value + 6;\n      }\n      value = readBits(7);\n      return value + 37;\n    }\n    var tileIndex = context.currentTile.index;\n    var tile = context.tiles[tileIndex];\n    var sopMarkerUsed = context.COD.sopMarkerUsed;\n    var ephMarkerUsed = context.COD.ephMarkerUsed;\n    var packetsIterator = tile.packetsIterator;\n    while (position < dataLength) {\n      alignToByte();\n      if (sopMarkerUsed && skipMarkerIfEqual(0x91)) {\n        // Skip also marker segment length and packet sequence ID\n        skipBytes(4);\n      }\n      var packet = packetsIterator.nextPacket();\n      if (!readBits(1)) {\n        continue;\n      }\n      var layerNumber = packet.layerNumber;\n      var queue = [],\n        codeblock;\n      for (var i = 0, ii = packet.codeblocks.length; i < ii; i++) {\n        codeblock = packet.codeblocks[i];\n        var precinct = codeblock.precinct;\n        var codeblockColumn = codeblock.cbx - precinct.cbxMin;\n        var codeblockRow = codeblock.cby - precinct.cbyMin;\n        var codeblockIncluded = false;\n        var firstTimeInclusion = false;\n        var valueReady;\n        if (codeblock.included !== undefined) {\n          codeblockIncluded = !!readBits(1);\n        } else {\n          // reading inclusion tree\n          precinct = codeblock.precinct;\n          var inclusionTree, zeroBitPlanesTree;\n          if (precinct.inclusionTree !== undefined) {\n            inclusionTree = precinct.inclusionTree;\n          } else {\n            // building inclusion and zero bit-planes trees\n            var width = precinct.cbxMax - precinct.cbxMin + 1;\n            var height = precinct.cbyMax - precinct.cbyMin + 1;\n            inclusionTree = new InclusionTree(width, height, layerNumber);\n            zeroBitPlanesTree = new TagTree(width, height);\n            precinct.inclusionTree = inclusionTree;\n            precinct.zeroBitPlanesTree = zeroBitPlanesTree;\n          }\n\n          if (inclusionTree.reset(codeblockColumn, codeblockRow, layerNumber)) {\n            while (true) {\n              if (readBits(1)) {\n                valueReady = !inclusionTree.nextLevel();\n                if (valueReady) {\n                  codeblock.included = true;\n                  codeblockIncluded = firstTimeInclusion = true;\n                  break;\n                }\n              } else {\n                inclusionTree.incrementValue(layerNumber);\n                break;\n              }\n            }\n          }\n        }\n        if (!codeblockIncluded) {\n          continue;\n        }\n        if (firstTimeInclusion) {\n          zeroBitPlanesTree = precinct.zeroBitPlanesTree;\n          zeroBitPlanesTree.reset(codeblockColumn, codeblockRow);\n          while (true) {\n            if (readBits(1)) {\n              valueReady = !zeroBitPlanesTree.nextLevel();\n              if (valueReady) {\n                break;\n              }\n            } else {\n              zeroBitPlanesTree.incrementValue();\n            }\n          }\n          codeblock.zeroBitPlanes = zeroBitPlanesTree.value;\n        }\n        var codingpasses = readCodingpasses();\n        while (readBits(1)) {\n          codeblock.Lblock++;\n        }\n        var codingpassesLog2 = log2(codingpasses);\n        // rounding down log2\n        var bits =\n          (codingpasses < 1 << codingpassesLog2\n            ? codingpassesLog2 - 1\n            : codingpassesLog2) + codeblock.Lblock;\n        var codedDataLength = readBits(bits);\n        queue.push({\n          codeblock,\n          codingpasses,\n          dataLength: codedDataLength,\n        });\n      }\n      alignToByte();\n      if (ephMarkerUsed) {\n        skipMarkerIfEqual(0x92);\n      }\n      while (queue.length > 0) {\n        var packetItem = queue.shift();\n        codeblock = packetItem.codeblock;\n        if (codeblock.data === undefined) {\n          codeblock.data = [];\n        }\n        codeblock.data.push({\n          data,\n          start: offset + position,\n          end: offset + position + packetItem.dataLength,\n          codingpasses: packetItem.codingpasses,\n        });\n        position += packetItem.dataLength;\n      }\n    }\n    return position;\n  }\n  function copyCoefficients(\n    coefficients,\n    levelWidth,\n    levelHeight,\n    subband,\n    delta,\n    mb,\n    reversible,\n    segmentationSymbolUsed\n  ) {\n    var x0 = subband.tbx0;\n    var y0 = subband.tby0;\n    var width = subband.tbx1 - subband.tbx0;\n    var codeblocks = subband.codeblocks;\n    var right = subband.type.charAt(0) === \"H\" ? 1 : 0;\n    var bottom = subband.type.charAt(1) === \"H\" ? levelWidth : 0;\n\n    for (var i = 0, ii = codeblocks.length; i < ii; ++i) {\n      var codeblock = codeblocks[i];\n      var blockWidth = codeblock.tbx1_ - codeblock.tbx0_;\n      var blockHeight = codeblock.tby1_ - codeblock.tby0_;\n      if (blockWidth === 0 || blockHeight === 0) {\n        continue;\n      }\n      if (codeblock.data === undefined) {\n        continue;\n      }\n\n      var bitModel, currentCodingpassType;\n      bitModel = new BitModel(\n        blockWidth,\n        blockHeight,\n        codeblock.subbandType,\n        codeblock.zeroBitPlanes,\n        mb\n      );\n      currentCodingpassType = 2; // first bit plane starts from cleanup\n\n      // collect data\n      var data = codeblock.data,\n        totalLength = 0,\n        codingpasses = 0;\n      var j, jj, dataItem;\n      for (j = 0, jj = data.length; j < jj; j++) {\n        dataItem = data[j];\n        totalLength += dataItem.end - dataItem.start;\n        codingpasses += dataItem.codingpasses;\n      }\n      var encodedData = new Uint8Array(totalLength);\n      var position = 0;\n      for (j = 0, jj = data.length; j < jj; j++) {\n        dataItem = data[j];\n        var chunk = dataItem.data.subarray(dataItem.start, dataItem.end);\n        encodedData.set(chunk, position);\n        position += chunk.length;\n      }\n      // decoding the item\n      var decoder = new ArithmeticDecoder(encodedData, 0, totalLength);\n      bitModel.setDecoder(decoder);\n\n      for (j = 0; j < codingpasses; j++) {\n        switch (currentCodingpassType) {\n          case 0:\n            bitModel.runSignificancePropagationPass();\n            break;\n          case 1:\n            bitModel.runMagnitudeRefinementPass();\n            break;\n          case 2:\n            bitModel.runCleanupPass();\n            if (segmentationSymbolUsed) {\n              bitModel.checkSegmentationSymbol();\n            }\n            break;\n        }\n        currentCodingpassType = (currentCodingpassType + 1) % 3;\n      }\n\n      var offset = codeblock.tbx0_ - x0 + (codeblock.tby0_ - y0) * width;\n      var sign = bitModel.coefficentsSign;\n      var magnitude = bitModel.coefficentsMagnitude;\n      var bitsDecoded = bitModel.bitsDecoded;\n      var magnitudeCorrection = reversible ? 0 : 0.5;\n      var k, n, nb;\n      position = 0;\n      // Do the interleaving of Section F.3.3 here, so we do not need\n      // to copy later. LL level is not interleaved, just copied.\n      var interleave = subband.type !== \"LL\";\n      for (j = 0; j < blockHeight; j++) {\n        var row = (offset / width) | 0; // row in the non-interleaved subband\n        var levelOffset = 2 * row * (levelWidth - width) + right + bottom;\n        for (k = 0; k < blockWidth; k++) {\n          n = magnitude[position];\n          if (n !== 0) {\n            n = (n + magnitudeCorrection) * delta;\n            if (sign[position] !== 0) {\n              n = -n;\n            }\n            nb = bitsDecoded[position];\n            var pos = interleave ? levelOffset + (offset << 1) : offset;\n            if (reversible && nb >= mb) {\n              coefficients[pos] = n;\n            } else {\n              coefficients[pos] = n * (1 << (mb - nb));\n            }\n          }\n          offset++;\n          position++;\n        }\n        offset += width - blockWidth;\n      }\n    }\n  }\n  function transformTile(context, tile, c) {\n    var component = tile.components[c];\n    var codingStyleParameters = component.codingStyleParameters;\n    var quantizationParameters = component.quantizationParameters;\n    var decompositionLevelsCount =\n      codingStyleParameters.decompositionLevelsCount;\n    var spqcds = quantizationParameters.SPqcds;\n    var scalarExpounded = quantizationParameters.scalarExpounded;\n    var guardBits = quantizationParameters.guardBits;\n    var segmentationSymbolUsed = codingStyleParameters.segmentationSymbolUsed;\n    var precision = context.components[c].precision;\n\n    var reversible = codingStyleParameters.reversibleTransformation;\n    var transform = reversible\n      ? new ReversibleTransform()\n      : new IrreversibleTransform();\n\n    var subbandCoefficients = [];\n    var b = 0;\n    for (var i = 0; i <= decompositionLevelsCount; i++) {\n      var resolution = component.resolutions[i];\n\n      var width = resolution.trx1 - resolution.trx0;\n      var height = resolution.try1 - resolution.try0;\n      // Allocate space for the whole sublevel.\n      var coefficients = new Float32Array(width * height);\n\n      for (var j = 0, jj = resolution.subbands.length; j < jj; j++) {\n        var mu, epsilon;\n        if (!scalarExpounded) {\n          // formula E-5\n          mu = spqcds[0].mu;\n          epsilon = spqcds[0].epsilon + (i > 0 ? 1 - i : 0);\n        } else {\n          mu = spqcds[b].mu;\n          epsilon = spqcds[b].epsilon;\n          b++;\n        }\n\n        var subband = resolution.subbands[j];\n        var gainLog2 = SubbandsGainLog2[subband.type];\n\n        // calculate quantization coefficient (Section E.1.1.1)\n        var delta = reversible\n          ? 1\n          : 2 ** (precision + gainLog2 - epsilon) * (1 + mu / 2048);\n        var mb = guardBits + epsilon - 1;\n\n        // In the first resolution level, copyCoefficients will fill the\n        // whole array with coefficients. In the succeeding passes,\n        // copyCoefficients will consecutively fill in the values that belong\n        // to the interleaved positions of the HL, LH, and HH coefficients.\n        // The LL coefficients will then be interleaved in Transform.iterate().\n        copyCoefficients(\n          coefficients,\n          width,\n          height,\n          subband,\n          delta,\n          mb,\n          reversible,\n          segmentationSymbolUsed\n        );\n      }\n      subbandCoefficients.push({\n        width,\n        height,\n        items: coefficients,\n      });\n    }\n\n    var result = transform.calculate(\n      subbandCoefficients,\n      component.tcx0,\n      component.tcy0\n    );\n    return {\n      left: component.tcx0,\n      top: component.tcy0,\n      width: result.width,\n      height: result.height,\n      items: result.items,\n    };\n  }\n  function transformComponents(context) {\n    var siz = context.SIZ;\n    var components = context.components;\n    var componentsCount = siz.Csiz;\n    var resultImages = [];\n    for (var i = 0, ii = context.tiles.length; i < ii; i++) {\n      var tile = context.tiles[i];\n      var transformedTiles = [];\n      var c;\n      for (c = 0; c < componentsCount; c++) {\n        transformedTiles[c] = transformTile(context, tile, c);\n      }\n      var tile0 = transformedTiles[0];\n      var out = new Uint8ClampedArray(tile0.items.length * componentsCount);\n      var result = {\n        left: tile0.left,\n        top: tile0.top,\n        width: tile0.width,\n        height: tile0.height,\n        items: out,\n      };\n\n      // Section G.2.2 Inverse multi component transform\n      var shift, offset;\n      var pos = 0,\n        j,\n        jj,\n        y0,\n        y1,\n        y2;\n      if (tile.codingStyleDefaultParameters.multipleComponentTransform) {\n        var fourComponents = componentsCount === 4;\n        var y0items = transformedTiles[0].items;\n        var y1items = transformedTiles[1].items;\n        var y2items = transformedTiles[2].items;\n        var y3items = fourComponents ? transformedTiles[3].items : null;\n\n        // HACK: The multiple component transform formulas below assume that\n        // all components have the same precision. With this in mind, we\n        // compute shift and offset only once.\n        shift = components[0].precision - 8;\n        offset = (128 << shift) + 0.5;\n\n        var component0 = tile.components[0];\n        var alpha01 = componentsCount - 3;\n        jj = y0items.length;\n        if (!component0.codingStyleParameters.reversibleTransformation) {\n          // inverse irreversible multiple component transform\n          for (j = 0; j < jj; j++, pos += alpha01) {\n            y0 = y0items[j] + offset;\n            y1 = y1items[j];\n            y2 = y2items[j];\n            out[pos++] = (y0 + 1.402 * y2) >> shift;\n            out[pos++] = (y0 - 0.34413 * y1 - 0.71414 * y2) >> shift;\n            out[pos++] = (y0 + 1.772 * y1) >> shift;\n          }\n        } else {\n          // inverse reversible multiple component transform\n          for (j = 0; j < jj; j++, pos += alpha01) {\n            y0 = y0items[j] + offset;\n            y1 = y1items[j];\n            y2 = y2items[j];\n            const g = y0 - ((y2 + y1) >> 2);\n\n            out[pos++] = (g + y2) >> shift;\n            out[pos++] = g >> shift;\n            out[pos++] = (g + y1) >> shift;\n          }\n        }\n        if (fourComponents) {\n          for (j = 0, pos = 3; j < jj; j++, pos += 4) {\n            out[pos] = (y3items[j] + offset) >> shift;\n          }\n        }\n      } else {\n        // no multi-component transform\n        for (c = 0; c < componentsCount; c++) {\n          var items = transformedTiles[c].items;\n          shift = components[c].precision - 8;\n          offset = (128 << shift) + 0.5;\n          for (pos = c, j = 0, jj = items.length; j < jj; j++) {\n            out[pos] = (items[j] + offset) >> shift;\n            pos += componentsCount;\n          }\n        }\n      }\n      resultImages.push(result);\n    }\n    return resultImages;\n  }\n  function initializeTile(context, tileIndex) {\n    var siz = context.SIZ;\n    var componentsCount = siz.Csiz;\n    var tile = context.tiles[tileIndex];\n    for (var c = 0; c < componentsCount; c++) {\n      var component = tile.components[c];\n      var qcdOrQcc =\n        context.currentTile.QCC[c] !== undefined\n          ? context.currentTile.QCC[c]\n          : context.currentTile.QCD;\n      component.quantizationParameters = qcdOrQcc;\n      var codOrCoc =\n        context.currentTile.COC[c] !== undefined\n          ? context.currentTile.COC[c]\n          : context.currentTile.COD;\n      component.codingStyleParameters = codOrCoc;\n    }\n    tile.codingStyleDefaultParameters = context.currentTile.COD;\n  }\n\n  // Section B.10.2 Tag trees\n  var TagTree = (function TagTreeClosure() {\n    // eslint-disable-next-line no-shadow\n    function TagTree(width, height) {\n      var levelsLength = log2(Math.max(width, height)) + 1;\n      this.levels = [];\n      for (var i = 0; i < levelsLength; i++) {\n        var level = {\n          width,\n          height,\n          items: [],\n        };\n        this.levels.push(level);\n        width = Math.ceil(width / 2);\n        height = Math.ceil(height / 2);\n      }\n    }\n    TagTree.prototype = {\n      reset: function TagTree_reset(i, j) {\n        var currentLevel = 0,\n          value = 0,\n          level;\n        while (currentLevel < this.levels.length) {\n          level = this.levels[currentLevel];\n          var index = i + j * level.width;\n          if (level.items[index] !== undefined) {\n            value = level.items[index];\n            break;\n          }\n          level.index = index;\n          i >>= 1;\n          j >>= 1;\n          currentLevel++;\n        }\n        currentLevel--;\n        level = this.levels[currentLevel];\n        level.items[level.index] = value;\n        this.currentLevel = currentLevel;\n        delete this.value;\n      },\n      incrementValue: function TagTree_incrementValue() {\n        var level = this.levels[this.currentLevel];\n        level.items[level.index]++;\n      },\n      nextLevel: function TagTree_nextLevel() {\n        var currentLevel = this.currentLevel;\n        var level = this.levels[currentLevel];\n        var value = level.items[level.index];\n        currentLevel--;\n        if (currentLevel < 0) {\n          this.value = value;\n          return false;\n        }\n\n        this.currentLevel = currentLevel;\n        level = this.levels[currentLevel];\n        level.items[level.index] = value;\n        return true;\n      },\n    };\n    return TagTree;\n  })();\n\n  var InclusionTree = (function InclusionTreeClosure() {\n    // eslint-disable-next-line no-shadow\n    function InclusionTree(width, height, defaultValue) {\n      var levelsLength = log2(Math.max(width, height)) + 1;\n      this.levels = [];\n      for (var i = 0; i < levelsLength; i++) {\n        var items = new Uint8Array(width * height);\n        for (var j = 0, jj = items.length; j < jj; j++) {\n          items[j] = defaultValue;\n        }\n\n        var level = {\n          width,\n          height,\n          items,\n        };\n        this.levels.push(level);\n\n        width = Math.ceil(width / 2);\n        height = Math.ceil(height / 2);\n      }\n    }\n    InclusionTree.prototype = {\n      reset: function InclusionTree_reset(i, j, stopValue) {\n        var currentLevel = 0;\n        while (currentLevel < this.levels.length) {\n          var level = this.levels[currentLevel];\n          var index = i + j * level.width;\n          level.index = index;\n          var value = level.items[index];\n\n          if (value === 0xff) {\n            break;\n          }\n\n          if (value > stopValue) {\n            this.currentLevel = currentLevel;\n            // already know about this one, propagating the value to top levels\n            this.propagateValues();\n            return false;\n          }\n\n          i >>= 1;\n          j >>= 1;\n          currentLevel++;\n        }\n        this.currentLevel = currentLevel - 1;\n        return true;\n      },\n      incrementValue: function InclusionTree_incrementValue(stopValue) {\n        var level = this.levels[this.currentLevel];\n        level.items[level.index] = stopValue + 1;\n        this.propagateValues();\n      },\n      propagateValues: function InclusionTree_propagateValues() {\n        var levelIndex = this.currentLevel;\n        var level = this.levels[levelIndex];\n        var currentValue = level.items[level.index];\n        while (--levelIndex >= 0) {\n          level = this.levels[levelIndex];\n          level.items[level.index] = currentValue;\n        }\n      },\n      nextLevel: function InclusionTree_nextLevel() {\n        var currentLevel = this.currentLevel;\n        var level = this.levels[currentLevel];\n        var value = level.items[level.index];\n        level.items[level.index] = 0xff;\n        currentLevel--;\n        if (currentLevel < 0) {\n          return false;\n        }\n\n        this.currentLevel = currentLevel;\n        level = this.levels[currentLevel];\n        level.items[level.index] = value;\n        return true;\n      },\n    };\n    return InclusionTree;\n  })();\n\n  // Section D. Coefficient bit modeling\n  var BitModel = (function BitModelClosure() {\n    var UNIFORM_CONTEXT = 17;\n    var RUNLENGTH_CONTEXT = 18;\n    // Table D-1\n    // The index is binary presentation: 0dddvvhh, ddd - sum of Di (0..4),\n    // vv - sum of Vi (0..2), and hh - sum of Hi (0..2)\n    // prettier-ignore\n    var LLAndLHContextsLabel = new Uint8Array([\n      0, 5, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 1, 6, 8, 0, 3, 7, 8, 0, 4,\n      7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6,\n      8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8\n    ]);\n    // prettier-ignore\n    var HLContextLabel = new Uint8Array([\n      0, 3, 4, 0, 5, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 1, 3, 4, 0, 6, 7, 7, 0, 8,\n      8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3,\n      4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8\n    ]);\n    // prettier-ignore\n    var HHContextLabel = new Uint8Array([\n      0, 1, 2, 0, 1, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 3, 4, 5, 0, 4, 5, 5, 0, 5,\n      5, 5, 0, 0, 0, 0, 0, 6, 7, 7, 0, 7, 7, 7, 0, 7, 7, 7, 0, 0, 0, 0, 0, 8, 8,\n      8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 0, 0, 0, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8\n    ]);\n\n    // eslint-disable-next-line no-shadow\n    function BitModel(width, height, subband, zeroBitPlanes, mb) {\n      this.width = width;\n      this.height = height;\n\n      let contextLabelTable;\n      if (subband === \"HH\") {\n        contextLabelTable = HHContextLabel;\n      } else if (subband === \"HL\") {\n        contextLabelTable = HLContextLabel;\n      } else {\n        contextLabelTable = LLAndLHContextsLabel;\n      }\n      this.contextLabelTable = contextLabelTable;\n\n      var coefficientCount = width * height;\n\n      // coefficients outside the encoding region treated as insignificant\n      // add border state cells for significanceState\n      this.neighborsSignificance = new Uint8Array(coefficientCount);\n      this.coefficentsSign = new Uint8Array(coefficientCount);\n      let coefficentsMagnitude;\n      if (mb > 14) {\n        coefficentsMagnitude = new Uint32Array(coefficientCount);\n      } else if (mb > 6) {\n        coefficentsMagnitude = new Uint16Array(coefficientCount);\n      } else {\n        coefficentsMagnitude = new Uint8Array(coefficientCount);\n      }\n      this.coefficentsMagnitude = coefficentsMagnitude;\n      this.processingFlags = new Uint8Array(coefficientCount);\n\n      var bitsDecoded = new Uint8Array(coefficientCount);\n      if (zeroBitPlanes !== 0) {\n        for (var i = 0; i < coefficientCount; i++) {\n          bitsDecoded[i] = zeroBitPlanes;\n        }\n      }\n      this.bitsDecoded = bitsDecoded;\n\n      this.reset();\n    }\n\n    BitModel.prototype = {\n      setDecoder: function BitModel_setDecoder(decoder) {\n        this.decoder = decoder;\n      },\n      reset: function BitModel_reset() {\n        // We have 17 contexts that are accessed via context labels,\n        // plus the uniform and runlength context.\n        this.contexts = new Int8Array(19);\n\n        // Contexts are packed into 1 byte:\n        // highest 7 bits carry the index, lowest bit carries mps\n        this.contexts[0] = (4 << 1) | 0;\n        this.contexts[UNIFORM_CONTEXT] = (46 << 1) | 0;\n        this.contexts[RUNLENGTH_CONTEXT] = (3 << 1) | 0;\n      },\n      setNeighborsSignificance: function BitModel_setNeighborsSignificance(\n        row,\n        column,\n        index\n      ) {\n        var neighborsSignificance = this.neighborsSignificance;\n        var width = this.width,\n          height = this.height;\n        var left = column > 0;\n        var right = column + 1 < width;\n        var i;\n\n        if (row > 0) {\n          i = index - width;\n          if (left) {\n            neighborsSignificance[i - 1] += 0x10;\n          }\n          if (right) {\n            neighborsSignificance[i + 1] += 0x10;\n          }\n          neighborsSignificance[i] += 0x04;\n        }\n\n        if (row + 1 < height) {\n          i = index + width;\n          if (left) {\n            neighborsSignificance[i - 1] += 0x10;\n          }\n          if (right) {\n            neighborsSignificance[i + 1] += 0x10;\n          }\n          neighborsSignificance[i] += 0x04;\n        }\n\n        if (left) {\n          neighborsSignificance[index - 1] += 0x01;\n        }\n        if (right) {\n          neighborsSignificance[index + 1] += 0x01;\n        }\n        neighborsSignificance[index] |= 0x80;\n      },\n      runSignificancePropagationPass: function BitModel_runSignificancePropagationPass() {\n        var decoder = this.decoder;\n        var width = this.width,\n          height = this.height;\n        var coefficentsMagnitude = this.coefficentsMagnitude;\n        var coefficentsSign = this.coefficentsSign;\n        var neighborsSignificance = this.neighborsSignificance;\n        var processingFlags = this.processingFlags;\n        var contexts = this.contexts;\n        var labels = this.contextLabelTable;\n        var bitsDecoded = this.bitsDecoded;\n        var processedInverseMask = ~1;\n        var processedMask = 1;\n        var firstMagnitudeBitMask = 2;\n\n        for (var i0 = 0; i0 < height; i0 += 4) {\n          for (var j = 0; j < width; j++) {\n            var index = i0 * width + j;\n            for (var i1 = 0; i1 < 4; i1++, index += width) {\n              var i = i0 + i1;\n              if (i >= height) {\n                break;\n              }\n              // clear processed flag first\n              processingFlags[index] &= processedInverseMask;\n\n              if (\n                coefficentsMagnitude[index] ||\n                !neighborsSignificance[index]\n              ) {\n                continue;\n              }\n\n              var contextLabel = labels[neighborsSignificance[index]];\n              var decision = decoder.readBit(contexts, contextLabel);\n              if (decision) {\n                var sign = this.decodeSignBit(i, j, index);\n                coefficentsSign[index] = sign;\n                coefficentsMagnitude[index] = 1;\n                this.setNeighborsSignificance(i, j, index);\n                processingFlags[index] |= firstMagnitudeBitMask;\n              }\n              bitsDecoded[index]++;\n              processingFlags[index] |= processedMask;\n            }\n          }\n        }\n      },\n      decodeSignBit: function BitModel_decodeSignBit(row, column, index) {\n        var width = this.width,\n          height = this.height;\n        var coefficentsMagnitude = this.coefficentsMagnitude;\n        var coefficentsSign = this.coefficentsSign;\n        var contribution, sign0, sign1, significance1;\n        var contextLabel, decoded;\n\n        // calculate horizontal contribution\n        significance1 = column > 0 && coefficentsMagnitude[index - 1] !== 0;\n        if (column + 1 < width && coefficentsMagnitude[index + 1] !== 0) {\n          sign1 = coefficentsSign[index + 1];\n          if (significance1) {\n            sign0 = coefficentsSign[index - 1];\n            contribution = 1 - sign1 - sign0;\n          } else {\n            contribution = 1 - sign1 - sign1;\n          }\n        } else if (significance1) {\n          sign0 = coefficentsSign[index - 1];\n          contribution = 1 - sign0 - sign0;\n        } else {\n          contribution = 0;\n        }\n        var horizontalContribution = 3 * contribution;\n\n        // calculate vertical contribution and combine with the horizontal\n        significance1 = row > 0 && coefficentsMagnitude[index - width] !== 0;\n        if (row + 1 < height && coefficentsMagnitude[index + width] !== 0) {\n          sign1 = coefficentsSign[index + width];\n          if (significance1) {\n            sign0 = coefficentsSign[index - width];\n            contribution = 1 - sign1 - sign0 + horizontalContribution;\n          } else {\n            contribution = 1 - sign1 - sign1 + horizontalContribution;\n          }\n        } else if (significance1) {\n          sign0 = coefficentsSign[index - width];\n          contribution = 1 - sign0 - sign0 + horizontalContribution;\n        } else {\n          contribution = horizontalContribution;\n        }\n\n        if (contribution >= 0) {\n          contextLabel = 9 + contribution;\n          decoded = this.decoder.readBit(this.contexts, contextLabel);\n        } else {\n          contextLabel = 9 - contribution;\n          decoded = this.decoder.readBit(this.contexts, contextLabel) ^ 1;\n        }\n        return decoded;\n      },\n      runMagnitudeRefinementPass: function BitModel_runMagnitudeRefinementPass() {\n        var decoder = this.decoder;\n        var width = this.width,\n          height = this.height;\n        var coefficentsMagnitude = this.coefficentsMagnitude;\n        var neighborsSignificance = this.neighborsSignificance;\n        var contexts = this.contexts;\n        var bitsDecoded = this.bitsDecoded;\n        var processingFlags = this.processingFlags;\n        var processedMask = 1;\n        var firstMagnitudeBitMask = 2;\n        var length = width * height;\n        var width4 = width * 4;\n\n        for (var index0 = 0, indexNext; index0 < length; index0 = indexNext) {\n          indexNext = Math.min(length, index0 + width4);\n          for (var j = 0; j < width; j++) {\n            for (var index = index0 + j; index < indexNext; index += width) {\n              // significant but not those that have just become\n              if (\n                !coefficentsMagnitude[index] ||\n                (processingFlags[index] & processedMask) !== 0\n              ) {\n                continue;\n              }\n\n              var contextLabel = 16;\n              if ((processingFlags[index] & firstMagnitudeBitMask) !== 0) {\n                processingFlags[index] ^= firstMagnitudeBitMask;\n                // first refinement\n                var significance = neighborsSignificance[index] & 127;\n                contextLabel = significance === 0 ? 15 : 14;\n              }\n\n              var bit = decoder.readBit(contexts, contextLabel);\n              coefficentsMagnitude[index] =\n                (coefficentsMagnitude[index] << 1) | bit;\n              bitsDecoded[index]++;\n              processingFlags[index] |= processedMask;\n            }\n          }\n        }\n      },\n      runCleanupPass: function BitModel_runCleanupPass() {\n        var decoder = this.decoder;\n        var width = this.width,\n          height = this.height;\n        var neighborsSignificance = this.neighborsSignificance;\n        var coefficentsMagnitude = this.coefficentsMagnitude;\n        var coefficentsSign = this.coefficentsSign;\n        var contexts = this.contexts;\n        var labels = this.contextLabelTable;\n        var bitsDecoded = this.bitsDecoded;\n        var processingFlags = this.processingFlags;\n        var processedMask = 1;\n        var firstMagnitudeBitMask = 2;\n        var oneRowDown = width;\n        var twoRowsDown = width * 2;\n        var threeRowsDown = width * 3;\n        var iNext;\n        for (var i0 = 0; i0 < height; i0 = iNext) {\n          iNext = Math.min(i0 + 4, height);\n          var indexBase = i0 * width;\n          var checkAllEmpty = i0 + 3 < height;\n          for (var j = 0; j < width; j++) {\n            var index0 = indexBase + j;\n            // using the property: labels[neighborsSignificance[index]] === 0\n            // when neighborsSignificance[index] === 0\n            var allEmpty =\n              checkAllEmpty &&\n              processingFlags[index0] === 0 &&\n              processingFlags[index0 + oneRowDown] === 0 &&\n              processingFlags[index0 + twoRowsDown] === 0 &&\n              processingFlags[index0 + threeRowsDown] === 0 &&\n              neighborsSignificance[index0] === 0 &&\n              neighborsSignificance[index0 + oneRowDown] === 0 &&\n              neighborsSignificance[index0 + twoRowsDown] === 0 &&\n              neighborsSignificance[index0 + threeRowsDown] === 0;\n            var i1 = 0,\n              index = index0;\n            var i = i0,\n              sign;\n            if (allEmpty) {\n              var hasSignificantCoefficent = decoder.readBit(\n                contexts,\n                RUNLENGTH_CONTEXT\n              );\n              if (!hasSignificantCoefficent) {\n                bitsDecoded[index0]++;\n                bitsDecoded[index0 + oneRowDown]++;\n                bitsDecoded[index0 + twoRowsDown]++;\n                bitsDecoded[index0 + threeRowsDown]++;\n                continue; // next column\n              }\n              i1 =\n                (decoder.readBit(contexts, UNIFORM_CONTEXT) << 1) |\n                decoder.readBit(contexts, UNIFORM_CONTEXT);\n              if (i1 !== 0) {\n                i = i0 + i1;\n                index += i1 * width;\n              }\n\n              sign = this.decodeSignBit(i, j, index);\n              coefficentsSign[index] = sign;\n              coefficentsMagnitude[index] = 1;\n              this.setNeighborsSignificance(i, j, index);\n              processingFlags[index] |= firstMagnitudeBitMask;\n\n              index = index0;\n              for (var i2 = i0; i2 <= i; i2++, index += width) {\n                bitsDecoded[index]++;\n              }\n\n              i1++;\n            }\n            for (i = i0 + i1; i < iNext; i++, index += width) {\n              if (\n                coefficentsMagnitude[index] ||\n                (processingFlags[index] & processedMask) !== 0\n              ) {\n                continue;\n              }\n\n              var contextLabel = labels[neighborsSignificance[index]];\n              var decision = decoder.readBit(contexts, contextLabel);\n              if (decision === 1) {\n                sign = this.decodeSignBit(i, j, index);\n                coefficentsSign[index] = sign;\n                coefficentsMagnitude[index] = 1;\n                this.setNeighborsSignificance(i, j, index);\n                processingFlags[index] |= firstMagnitudeBitMask;\n              }\n              bitsDecoded[index]++;\n            }\n          }\n        }\n      },\n      checkSegmentationSymbol: function BitModel_checkSegmentationSymbol() {\n        var decoder = this.decoder;\n        var contexts = this.contexts;\n        var symbol =\n          (decoder.readBit(contexts, UNIFORM_CONTEXT) << 3) |\n          (decoder.readBit(contexts, UNIFORM_CONTEXT) << 2) |\n          (decoder.readBit(contexts, UNIFORM_CONTEXT) << 1) |\n          decoder.readBit(contexts, UNIFORM_CONTEXT);\n        if (symbol !== 0xa) {\n          throw new JpxError(\"Invalid segmentation symbol\");\n        }\n      },\n    };\n\n    return BitModel;\n  })();\n\n  // Section F, Discrete wavelet transformation\n  var Transform = (function TransformClosure() {\n    // eslint-disable-next-line no-shadow\n    function Transform() {}\n\n    Transform.prototype.calculate = function transformCalculate(\n      subbands,\n      u0,\n      v0\n    ) {\n      var ll = subbands[0];\n      for (var i = 1, ii = subbands.length; i < ii; i++) {\n        ll = this.iterate(ll, subbands[i], u0, v0);\n      }\n      return ll;\n    };\n    Transform.prototype.extend = function extend(buffer, offset, size) {\n      // Section F.3.7 extending... using max extension of 4\n      var i1 = offset - 1,\n        j1 = offset + 1;\n      var i2 = offset + size - 2,\n        j2 = offset + size;\n      buffer[i1--] = buffer[j1++];\n      buffer[j2++] = buffer[i2--];\n      buffer[i1--] = buffer[j1++];\n      buffer[j2++] = buffer[i2--];\n      buffer[i1--] = buffer[j1++];\n      buffer[j2++] = buffer[i2--];\n      buffer[i1] = buffer[j1];\n      buffer[j2] = buffer[i2];\n    };\n    Transform.prototype.iterate = function Transform_iterate(\n      ll,\n      hl_lh_hh,\n      u0,\n      v0\n    ) {\n      var llWidth = ll.width,\n        llHeight = ll.height,\n        llItems = ll.items;\n      var width = hl_lh_hh.width;\n      var height = hl_lh_hh.height;\n      var items = hl_lh_hh.items;\n      var i, j, k, l, u, v;\n\n      // Interleave LL according to Section F.3.3\n      for (k = 0, i = 0; i < llHeight; i++) {\n        l = i * 2 * width;\n        for (j = 0; j < llWidth; j++, k++, l += 2) {\n          items[l] = llItems[k];\n        }\n      }\n      // The LL band is not needed anymore.\n      llItems = ll.items = null;\n\n      var bufferPadding = 4;\n      var rowBuffer = new Float32Array(width + 2 * bufferPadding);\n\n      // Section F.3.4 HOR_SR\n      if (width === 1) {\n        // if width = 1, when u0 even keep items as is, when odd divide by 2\n        if ((u0 & 1) !== 0) {\n          for (v = 0, k = 0; v < height; v++, k += width) {\n            items[k] *= 0.5;\n          }\n        }\n      } else {\n        for (v = 0, k = 0; v < height; v++, k += width) {\n          rowBuffer.set(items.subarray(k, k + width), bufferPadding);\n\n          this.extend(rowBuffer, bufferPadding, width);\n          this.filter(rowBuffer, bufferPadding, width);\n\n          items.set(\n            rowBuffer.subarray(bufferPadding, bufferPadding + width),\n            k\n          );\n        }\n      }\n\n      // Accesses to the items array can take long, because it may not fit into\n      // CPU cache and has to be fetched from main memory. Since subsequent\n      // accesses to the items array are not local when reading columns, we\n      // have a cache miss every time. To reduce cache misses, get up to\n      // 'numBuffers' items at a time and store them into the individual\n      // buffers. The colBuffers should be small enough to fit into CPU cache.\n      var numBuffers = 16;\n      var colBuffers = [];\n      for (i = 0; i < numBuffers; i++) {\n        colBuffers.push(new Float32Array(height + 2 * bufferPadding));\n      }\n      var b,\n        currentBuffer = 0;\n      ll = bufferPadding + height;\n\n      // Section F.3.5 VER_SR\n      if (height === 1) {\n        // if height = 1, when v0 even keep items as is, when odd divide by 2\n        if ((v0 & 1) !== 0) {\n          for (u = 0; u < width; u++) {\n            items[u] *= 0.5;\n          }\n        }\n      } else {\n        for (u = 0; u < width; u++) {\n          // if we ran out of buffers, copy several image columns at once\n          if (currentBuffer === 0) {\n            numBuffers = Math.min(width - u, numBuffers);\n            for (k = u, l = bufferPadding; l < ll; k += width, l++) {\n              for (b = 0; b < numBuffers; b++) {\n                colBuffers[b][l] = items[k + b];\n              }\n            }\n            currentBuffer = numBuffers;\n          }\n\n          currentBuffer--;\n          var buffer = colBuffers[currentBuffer];\n          this.extend(buffer, bufferPadding, height);\n          this.filter(buffer, bufferPadding, height);\n\n          // If this is last buffer in this group of buffers, flush all buffers.\n          if (currentBuffer === 0) {\n            k = u - numBuffers + 1;\n            for (l = bufferPadding; l < ll; k += width, l++) {\n              for (b = 0; b < numBuffers; b++) {\n                items[k + b] = colBuffers[b][l];\n              }\n            }\n          }\n        }\n      }\n\n      return {\n        width,\n        height,\n        items,\n      };\n    };\n    return Transform;\n  })();\n\n  // Section 3.8.2 Irreversible 9-7 filter\n  var IrreversibleTransform = (function IrreversibleTransformClosure() {\n    // eslint-disable-next-line no-shadow\n    function IrreversibleTransform() {\n      Transform.call(this);\n    }\n\n    IrreversibleTransform.prototype = Object.create(Transform.prototype);\n    IrreversibleTransform.prototype.filter = function irreversibleTransformFilter(\n      x,\n      offset,\n      length\n    ) {\n      var len = length >> 1;\n      offset = offset | 0;\n      var j, n, current, next;\n\n      var alpha = -1.586134342059924;\n      var beta = -0.052980118572961;\n      var gamma = 0.882911075530934;\n      var delta = 0.443506852043971;\n      var K = 1.230174104914001;\n      var K_ = 1 / K;\n\n      // step 1 is combined with step 3\n\n      // step 2\n      j = offset - 3;\n      for (n = len + 4; n--; j += 2) {\n        x[j] *= K_;\n      }\n\n      // step 1 & 3\n      j = offset - 2;\n      current = delta * x[j - 1];\n      for (n = len + 3; n--; j += 2) {\n        next = delta * x[j + 1];\n        x[j] = K * x[j] - current - next;\n        if (n--) {\n          j += 2;\n          current = delta * x[j + 1];\n          x[j] = K * x[j] - current - next;\n        } else {\n          break;\n        }\n      }\n\n      // step 4\n      j = offset - 1;\n      current = gamma * x[j - 1];\n      for (n = len + 2; n--; j += 2) {\n        next = gamma * x[j + 1];\n        x[j] -= current + next;\n        if (n--) {\n          j += 2;\n          current = gamma * x[j + 1];\n          x[j] -= current + next;\n        } else {\n          break;\n        }\n      }\n\n      // step 5\n      j = offset;\n      current = beta * x[j - 1];\n      for (n = len + 1; n--; j += 2) {\n        next = beta * x[j + 1];\n        x[j] -= current + next;\n        if (n--) {\n          j += 2;\n          current = beta * x[j + 1];\n          x[j] -= current + next;\n        } else {\n          break;\n        }\n      }\n\n      // step 6\n      if (len !== 0) {\n        j = offset + 1;\n        current = alpha * x[j - 1];\n        for (n = len; n--; j += 2) {\n          next = alpha * x[j + 1];\n          x[j] -= current + next;\n          if (n--) {\n            j += 2;\n            current = alpha * x[j + 1];\n            x[j] -= current + next;\n          } else {\n            break;\n          }\n        }\n      }\n    };\n\n    return IrreversibleTransform;\n  })();\n\n  // Section 3.8.1 Reversible 5-3 filter\n  var ReversibleTransform = (function ReversibleTransformClosure() {\n    // eslint-disable-next-line no-shadow\n    function ReversibleTransform() {\n      Transform.call(this);\n    }\n\n    ReversibleTransform.prototype = Object.create(Transform.prototype);\n    ReversibleTransform.prototype.filter = function reversibleTransformFilter(\n      x,\n      offset,\n      length\n    ) {\n      var len = length >> 1;\n      offset = offset | 0;\n      var j, n;\n\n      for (j = offset, n = len + 1; n--; j += 2) {\n        x[j] -= (x[j - 1] + x[j + 1] + 2) >> 2;\n      }\n\n      for (j = offset + 1, n = len; n--; j += 2) {\n        x[j] += (x[j - 1] + x[j + 1]) >> 1;\n      }\n    };\n\n    return ReversibleTransform;\n  })();\n\n  return JpxImage;\n})();\n\nexport { JpxImage };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  bytesToString,\n  FormatError,\n  PasswordException,\n  PasswordResponses,\n  stringToBytes,\n  unreachable,\n  utf8StringToString,\n  warn,\n} from \"../shared/util.js\";\nimport { isDict, isName, Name } from \"./primitives.js\";\nimport { DecryptStream } from \"./stream.js\";\n\nvar ARCFourCipher = (function ARCFourCipherClosure() {\n  // eslint-disable-next-line no-shadow\n  function ARCFourCipher(key) {\n    this.a = 0;\n    this.b = 0;\n    var s = new Uint8Array(256);\n    var i,\n      j = 0,\n      tmp,\n      keyLength = key.length;\n    for (i = 0; i < 256; ++i) {\n      s[i] = i;\n    }\n    for (i = 0; i < 256; ++i) {\n      tmp = s[i];\n      j = (j + tmp + key[i % keyLength]) & 0xff;\n      s[i] = s[j];\n      s[j] = tmp;\n    }\n    this.s = s;\n  }\n\n  ARCFourCipher.prototype = {\n    encryptBlock: function ARCFourCipher_encryptBlock(data) {\n      var i,\n        n = data.length,\n        tmp,\n        tmp2;\n      var a = this.a,\n        b = this.b,\n        s = this.s;\n      var output = new Uint8Array(n);\n      for (i = 0; i < n; ++i) {\n        a = (a + 1) & 0xff;\n        tmp = s[a];\n        b = (b + tmp) & 0xff;\n        tmp2 = s[b];\n        s[a] = tmp2;\n        s[b] = tmp;\n        output[i] = data[i] ^ s[(tmp + tmp2) & 0xff];\n      }\n      this.a = a;\n      this.b = b;\n      return output;\n    },\n  };\n  ARCFourCipher.prototype.decryptBlock = ARCFourCipher.prototype.encryptBlock;\n\n  return ARCFourCipher;\n})();\n\nvar calculateMD5 = (function calculateMD5Closure() {\n  // prettier-ignore\n  var r = new Uint8Array([\n    7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22,\n    5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20,\n    4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23,\n    6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21]);\n\n  // prettier-ignore\n  var k = new Int32Array([\n    -680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426,\n    -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162,\n    1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632,\n    643717713, -373897302, -701558691, 38016083, -660478335, -405537848,\n    568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784,\n    1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556,\n    -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222,\n    -722521979, 76029189, -640364487, -421815835, 530742520, -995338651,\n    -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606,\n    -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649,\n    -145523070, -1120210379, 718787259, -343485551]);\n\n  function hash(data, offset, length) {\n    var h0 = 1732584193,\n      h1 = -271733879,\n      h2 = -1732584194,\n      h3 = 271733878;\n    // pre-processing\n    var paddedLength = (length + 72) & ~63; // data + 9 extra bytes\n    var padded = new Uint8Array(paddedLength);\n    var i, j, n;\n    for (i = 0; i < length; ++i) {\n      padded[i] = data[offset++];\n    }\n    padded[i++] = 0x80;\n    n = paddedLength - 8;\n    while (i < n) {\n      padded[i++] = 0;\n    }\n    padded[i++] = (length << 3) & 0xff;\n    padded[i++] = (length >> 5) & 0xff;\n    padded[i++] = (length >> 13) & 0xff;\n    padded[i++] = (length >> 21) & 0xff;\n    padded[i++] = (length >>> 29) & 0xff;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    var w = new Int32Array(16);\n    for (i = 0; i < paddedLength; ) {\n      for (j = 0; j < 16; ++j, i += 4) {\n        w[j] =\n          padded[i] |\n          (padded[i + 1] << 8) |\n          (padded[i + 2] << 16) |\n          (padded[i + 3] << 24);\n      }\n      var a = h0,\n        b = h1,\n        c = h2,\n        d = h3,\n        f,\n        g;\n      for (j = 0; j < 64; ++j) {\n        if (j < 16) {\n          f = (b & c) | (~b & d);\n          g = j;\n        } else if (j < 32) {\n          f = (d & b) | (~d & c);\n          g = (5 * j + 1) & 15;\n        } else if (j < 48) {\n          f = b ^ c ^ d;\n          g = (3 * j + 5) & 15;\n        } else {\n          f = c ^ (b | ~d);\n          g = (7 * j) & 15;\n        }\n        var tmp = d,\n          rotateArg = (a + f + k[j] + w[g]) | 0,\n          rotate = r[j];\n        d = c;\n        c = b;\n        b = (b + ((rotateArg << rotate) | (rotateArg >>> (32 - rotate)))) | 0;\n        a = tmp;\n      }\n      h0 = (h0 + a) | 0;\n      h1 = (h1 + b) | 0;\n      h2 = (h2 + c) | 0;\n      h3 = (h3 + d) | 0;\n    }\n    // prettier-ignore\n    return new Uint8Array([\n      h0 & 0xFF, (h0 >> 8) & 0xFF, (h0 >> 16) & 0xFF, (h0 >>> 24) & 0xFF,\n      h1 & 0xFF, (h1 >> 8) & 0xFF, (h1 >> 16) & 0xFF, (h1 >>> 24) & 0xFF,\n      h2 & 0xFF, (h2 >> 8) & 0xFF, (h2 >> 16) & 0xFF, (h2 >>> 24) & 0xFF,\n      h3 & 0xFF, (h3 >> 8) & 0xFF, (h3 >> 16) & 0xFF, (h3 >>> 24) & 0xFF\n    ]);\n  }\n\n  return hash;\n})();\nvar Word64 = (function Word64Closure() {\n  // eslint-disable-next-line no-shadow\n  function Word64(highInteger, lowInteger) {\n    this.high = highInteger | 0;\n    this.low = lowInteger | 0;\n  }\n  Word64.prototype = {\n    and: function Word64_and(word) {\n      this.high &= word.high;\n      this.low &= word.low;\n    },\n    xor: function Word64_xor(word) {\n      this.high ^= word.high;\n      this.low ^= word.low;\n    },\n\n    or: function Word64_or(word) {\n      this.high |= word.high;\n      this.low |= word.low;\n    },\n\n    shiftRight: function Word64_shiftRight(places) {\n      if (places >= 32) {\n        this.low = (this.high >>> (places - 32)) | 0;\n        this.high = 0;\n      } else {\n        this.low = (this.low >>> places) | (this.high << (32 - places));\n        this.high = (this.high >>> places) | 0;\n      }\n    },\n\n    shiftLeft: function Word64_shiftLeft(places) {\n      if (places >= 32) {\n        this.high = this.low << (places - 32);\n        this.low = 0;\n      } else {\n        this.high = (this.high << places) | (this.low >>> (32 - places));\n        this.low = this.low << places;\n      }\n    },\n\n    rotateRight: function Word64_rotateRight(places) {\n      var low, high;\n      if (places & 32) {\n        high = this.low;\n        low = this.high;\n      } else {\n        low = this.low;\n        high = this.high;\n      }\n      places &= 31;\n      this.low = (low >>> places) | (high << (32 - places));\n      this.high = (high >>> places) | (low << (32 - places));\n    },\n\n    not: function Word64_not() {\n      this.high = ~this.high;\n      this.low = ~this.low;\n    },\n\n    add: function Word64_add(word) {\n      var lowAdd = (this.low >>> 0) + (word.low >>> 0);\n      var highAdd = (this.high >>> 0) + (word.high >>> 0);\n      if (lowAdd > 0xffffffff) {\n        highAdd += 1;\n      }\n      this.low = lowAdd | 0;\n      this.high = highAdd | 0;\n    },\n\n    copyTo: function Word64_copyTo(bytes, offset) {\n      bytes[offset] = (this.high >>> 24) & 0xff;\n      bytes[offset + 1] = (this.high >> 16) & 0xff;\n      bytes[offset + 2] = (this.high >> 8) & 0xff;\n      bytes[offset + 3] = this.high & 0xff;\n      bytes[offset + 4] = (this.low >>> 24) & 0xff;\n      bytes[offset + 5] = (this.low >> 16) & 0xff;\n      bytes[offset + 6] = (this.low >> 8) & 0xff;\n      bytes[offset + 7] = this.low & 0xff;\n    },\n\n    assign: function Word64_assign(word) {\n      this.high = word.high;\n      this.low = word.low;\n    },\n  };\n  return Word64;\n})();\n\nvar calculateSHA256 = (function calculateSHA256Closure() {\n  function rotr(x, n) {\n    return (x >>> n) | (x << (32 - n));\n  }\n\n  function ch(x, y, z) {\n    return (x & y) ^ (~x & z);\n  }\n\n  function maj(x, y, z) {\n    return (x & y) ^ (x & z) ^ (y & z);\n  }\n\n  function sigma(x) {\n    return rotr(x, 2) ^ rotr(x, 13) ^ rotr(x, 22);\n  }\n\n  function sigmaPrime(x) {\n    return rotr(x, 6) ^ rotr(x, 11) ^ rotr(x, 25);\n  }\n\n  function littleSigma(x) {\n    return rotr(x, 7) ^ rotr(x, 18) ^ (x >>> 3);\n  }\n\n  function littleSigmaPrime(x) {\n    return rotr(x, 17) ^ rotr(x, 19) ^ (x >>> 10);\n  }\n\n  // prettier-ignore\n  var k = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n           0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n           0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n           0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n           0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n           0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n           0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n           0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n           0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n           0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n           0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n           0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n           0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n           0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n           0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n           0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2];\n\n  function hash(data, offset, length) {\n    // initial hash values\n    var h0 = 0x6a09e667,\n      h1 = 0xbb67ae85,\n      h2 = 0x3c6ef372,\n      h3 = 0xa54ff53a,\n      h4 = 0x510e527f,\n      h5 = 0x9b05688c,\n      h6 = 0x1f83d9ab,\n      h7 = 0x5be0cd19;\n    // pre-processing\n    var paddedLength = Math.ceil((length + 9) / 64) * 64;\n    var padded = new Uint8Array(paddedLength);\n    var i, j, n;\n    for (i = 0; i < length; ++i) {\n      padded[i] = data[offset++];\n    }\n    padded[i++] = 0x80;\n    n = paddedLength - 8;\n    while (i < n) {\n      padded[i++] = 0;\n    }\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = (length >>> 29) & 0xff;\n    padded[i++] = (length >> 21) & 0xff;\n    padded[i++] = (length >> 13) & 0xff;\n    padded[i++] = (length >> 5) & 0xff;\n    padded[i++] = (length << 3) & 0xff;\n    var w = new Uint32Array(64);\n    // for each 512 bit block\n    for (i = 0; i < paddedLength; ) {\n      for (j = 0; j < 16; ++j) {\n        w[j] =\n          (padded[i] << 24) |\n          (padded[i + 1] << 16) |\n          (padded[i + 2] << 8) |\n          padded[i + 3];\n        i += 4;\n      }\n\n      for (j = 16; j < 64; ++j) {\n        w[j] =\n          (littleSigmaPrime(w[j - 2]) +\n            w[j - 7] +\n            littleSigma(w[j - 15]) +\n            w[j - 16]) |\n          0;\n      }\n      var a = h0,\n        b = h1,\n        c = h2,\n        d = h3,\n        e = h4,\n        f = h5,\n        g = h6,\n        h = h7,\n        t1,\n        t2;\n      for (j = 0; j < 64; ++j) {\n        t1 = h + sigmaPrime(e) + ch(e, f, g) + k[j] + w[j];\n        t2 = sigma(a) + maj(a, b, c);\n        h = g;\n        g = f;\n        f = e;\n        e = (d + t1) | 0;\n        d = c;\n        c = b;\n        b = a;\n        a = (t1 + t2) | 0;\n      }\n      h0 = (h0 + a) | 0;\n      h1 = (h1 + b) | 0;\n      h2 = (h2 + c) | 0;\n      h3 = (h3 + d) | 0;\n      h4 = (h4 + e) | 0;\n      h5 = (h5 + f) | 0;\n      h6 = (h6 + g) | 0;\n      h7 = (h7 + h) | 0;\n    }\n    // prettier-ignore\n    return new Uint8Array([\n      (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, (h0) & 0xFF,\n      (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, (h1) & 0xFF,\n      (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, (h2) & 0xFF,\n      (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, (h3) & 0xFF,\n      (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, (h4) & 0xFF,\n      (h5 >> 24) & 0xFF, (h5 >> 16) & 0xFF, (h5 >> 8) & 0xFF, (h5) & 0xFF,\n      (h6 >> 24) & 0xFF, (h6 >> 16) & 0xFF, (h6 >> 8) & 0xFF, (h6) & 0xFF,\n      (h7 >> 24) & 0xFF, (h7 >> 16) & 0xFF, (h7 >> 8) & 0xFF, (h7) & 0xFF\n    ]);\n  }\n\n  return hash;\n})();\n\nvar calculateSHA512 = (function calculateSHA512Closure() {\n  function ch(result, x, y, z, tmp) {\n    result.assign(x);\n    result.and(y);\n    tmp.assign(x);\n    tmp.not();\n    tmp.and(z);\n    result.xor(tmp);\n  }\n\n  function maj(result, x, y, z, tmp) {\n    result.assign(x);\n    result.and(y);\n    tmp.assign(x);\n    tmp.and(z);\n    result.xor(tmp);\n    tmp.assign(y);\n    tmp.and(z);\n    result.xor(tmp);\n  }\n\n  function sigma(result, x, tmp) {\n    result.assign(x);\n    result.rotateRight(28);\n    tmp.assign(x);\n    tmp.rotateRight(34);\n    result.xor(tmp);\n    tmp.assign(x);\n    tmp.rotateRight(39);\n    result.xor(tmp);\n  }\n\n  function sigmaPrime(result, x, tmp) {\n    result.assign(x);\n    result.rotateRight(14);\n    tmp.assign(x);\n    tmp.rotateRight(18);\n    result.xor(tmp);\n    tmp.assign(x);\n    tmp.rotateRight(41);\n    result.xor(tmp);\n  }\n\n  function littleSigma(result, x, tmp) {\n    result.assign(x);\n    result.rotateRight(1);\n    tmp.assign(x);\n    tmp.rotateRight(8);\n    result.xor(tmp);\n    tmp.assign(x);\n    tmp.shiftRight(7);\n    result.xor(tmp);\n  }\n\n  function littleSigmaPrime(result, x, tmp) {\n    result.assign(x);\n    result.rotateRight(19);\n    tmp.assign(x);\n    tmp.rotateRight(61);\n    result.xor(tmp);\n    tmp.assign(x);\n    tmp.shiftRight(6);\n    result.xor(tmp);\n  }\n\n  // prettier-ignore\n  var k = [\n    new Word64(0x428a2f98, 0xd728ae22), new Word64(0x71374491, 0x23ef65cd),\n    new Word64(0xb5c0fbcf, 0xec4d3b2f), new Word64(0xe9b5dba5, 0x8189dbbc),\n    new Word64(0x3956c25b, 0xf348b538), new Word64(0x59f111f1, 0xb605d019),\n    new Word64(0x923f82a4, 0xaf194f9b), new Word64(0xab1c5ed5, 0xda6d8118),\n    new Word64(0xd807aa98, 0xa3030242), new Word64(0x12835b01, 0x45706fbe),\n    new Word64(0x243185be, 0x4ee4b28c), new Word64(0x550c7dc3, 0xd5ffb4e2),\n    new Word64(0x72be5d74, 0xf27b896f), new Word64(0x80deb1fe, 0x3b1696b1),\n    new Word64(0x9bdc06a7, 0x25c71235), new Word64(0xc19bf174, 0xcf692694),\n    new Word64(0xe49b69c1, 0x9ef14ad2), new Word64(0xefbe4786, 0x384f25e3),\n    new Word64(0x0fc19dc6, 0x8b8cd5b5), new Word64(0x240ca1cc, 0x77ac9c65),\n    new Word64(0x2de92c6f, 0x592b0275), new Word64(0x4a7484aa, 0x6ea6e483),\n    new Word64(0x5cb0a9dc, 0xbd41fbd4), new Word64(0x76f988da, 0x831153b5),\n    new Word64(0x983e5152, 0xee66dfab), new Word64(0xa831c66d, 0x2db43210),\n    new Word64(0xb00327c8, 0x98fb213f), new Word64(0xbf597fc7, 0xbeef0ee4),\n    new Word64(0xc6e00bf3, 0x3da88fc2), new Word64(0xd5a79147, 0x930aa725),\n    new Word64(0x06ca6351, 0xe003826f), new Word64(0x14292967, 0x0a0e6e70),\n    new Word64(0x27b70a85, 0x46d22ffc), new Word64(0x2e1b2138, 0x5c26c926),\n    new Word64(0x4d2c6dfc, 0x5ac42aed), new Word64(0x53380d13, 0x9d95b3df),\n    new Word64(0x650a7354, 0x8baf63de), new Word64(0x766a0abb, 0x3c77b2a8),\n    new Word64(0x81c2c92e, 0x47edaee6), new Word64(0x92722c85, 0x1482353b),\n    new Word64(0xa2bfe8a1, 0x4cf10364), new Word64(0xa81a664b, 0xbc423001),\n    new Word64(0xc24b8b70, 0xd0f89791), new Word64(0xc76c51a3, 0x0654be30),\n    new Word64(0xd192e819, 0xd6ef5218), new Word64(0xd6990624, 0x5565a910),\n    new Word64(0xf40e3585, 0x5771202a), new Word64(0x106aa070, 0x32bbd1b8),\n    new Word64(0x19a4c116, 0xb8d2d0c8), new Word64(0x1e376c08, 0x5141ab53),\n    new Word64(0x2748774c, 0xdf8eeb99), new Word64(0x34b0bcb5, 0xe19b48a8),\n    new Word64(0x391c0cb3, 0xc5c95a63), new Word64(0x4ed8aa4a, 0xe3418acb),\n    new Word64(0x5b9cca4f, 0x7763e373), new Word64(0x682e6ff3, 0xd6b2b8a3),\n    new Word64(0x748f82ee, 0x5defb2fc), new Word64(0x78a5636f, 0x43172f60),\n    new Word64(0x84c87814, 0xa1f0ab72), new Word64(0x8cc70208, 0x1a6439ec),\n    new Word64(0x90befffa, 0x23631e28), new Word64(0xa4506ceb, 0xde82bde9),\n    new Word64(0xbef9a3f7, 0xb2c67915), new Word64(0xc67178f2, 0xe372532b),\n    new Word64(0xca273ece, 0xea26619c), new Word64(0xd186b8c7, 0x21c0c207),\n    new Word64(0xeada7dd6, 0xcde0eb1e), new Word64(0xf57d4f7f, 0xee6ed178),\n    new Word64(0x06f067aa, 0x72176fba), new Word64(0x0a637dc5, 0xa2c898a6),\n    new Word64(0x113f9804, 0xbef90dae), new Word64(0x1b710b35, 0x131c471b),\n    new Word64(0x28db77f5, 0x23047d84), new Word64(0x32caab7b, 0x40c72493),\n    new Word64(0x3c9ebe0a, 0x15c9bebc), new Word64(0x431d67c4, 0x9c100d4c),\n    new Word64(0x4cc5d4be, 0xcb3e42b6), new Word64(0x597f299c, 0xfc657e2a),\n    new Word64(0x5fcb6fab, 0x3ad6faec), new Word64(0x6c44198c, 0x4a475817)];\n\n  function hash(data, offset, length, mode384) {\n    mode384 = !!mode384;\n    // initial hash values\n    var h0, h1, h2, h3, h4, h5, h6, h7;\n    if (!mode384) {\n      h0 = new Word64(0x6a09e667, 0xf3bcc908);\n      h1 = new Word64(0xbb67ae85, 0x84caa73b);\n      h2 = new Word64(0x3c6ef372, 0xfe94f82b);\n      h3 = new Word64(0xa54ff53a, 0x5f1d36f1);\n      h4 = new Word64(0x510e527f, 0xade682d1);\n      h5 = new Word64(0x9b05688c, 0x2b3e6c1f);\n      h6 = new Word64(0x1f83d9ab, 0xfb41bd6b);\n      h7 = new Word64(0x5be0cd19, 0x137e2179);\n    } else {\n      // SHA384 is exactly the same\n      // except with different starting values and a trimmed result\n      h0 = new Word64(0xcbbb9d5d, 0xc1059ed8);\n      h1 = new Word64(0x629a292a, 0x367cd507);\n      h2 = new Word64(0x9159015a, 0x3070dd17);\n      h3 = new Word64(0x152fecd8, 0xf70e5939);\n      h4 = new Word64(0x67332667, 0xffc00b31);\n      h5 = new Word64(0x8eb44a87, 0x68581511);\n      h6 = new Word64(0xdb0c2e0d, 0x64f98fa7);\n      h7 = new Word64(0x47b5481d, 0xbefa4fa4);\n    }\n\n    // pre-processing\n    var paddedLength = Math.ceil((length + 17) / 128) * 128;\n    var padded = new Uint8Array(paddedLength);\n    var i, j, n;\n    for (i = 0; i < length; ++i) {\n      padded[i] = data[offset++];\n    }\n    padded[i++] = 0x80;\n    n = paddedLength - 16;\n    while (i < n) {\n      padded[i++] = 0;\n    }\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = (length >>> 29) & 0xff;\n    padded[i++] = (length >> 21) & 0xff;\n    padded[i++] = (length >> 13) & 0xff;\n    padded[i++] = (length >> 5) & 0xff;\n    padded[i++] = (length << 3) & 0xff;\n\n    var w = new Array(80);\n    for (i = 0; i < 80; i++) {\n      w[i] = new Word64(0, 0);\n    }\n    var a = new Word64(0, 0),\n      b = new Word64(0, 0),\n      c = new Word64(0, 0);\n    var d = new Word64(0, 0),\n      e = new Word64(0, 0),\n      f = new Word64(0, 0);\n    var g = new Word64(0, 0),\n      h = new Word64(0, 0);\n    var t1 = new Word64(0, 0),\n      t2 = new Word64(0, 0);\n    var tmp1 = new Word64(0, 0),\n      tmp2 = new Word64(0, 0),\n      tmp3;\n\n    // for each 1024 bit block\n    for (i = 0; i < paddedLength; ) {\n      for (j = 0; j < 16; ++j) {\n        w[j].high =\n          (padded[i] << 24) |\n          (padded[i + 1] << 16) |\n          (padded[i + 2] << 8) |\n          padded[i + 3];\n        w[j].low =\n          (padded[i + 4] << 24) |\n          (padded[i + 5] << 16) |\n          (padded[i + 6] << 8) |\n          padded[i + 7];\n        i += 8;\n      }\n      for (j = 16; j < 80; ++j) {\n        tmp3 = w[j];\n        littleSigmaPrime(tmp3, w[j - 2], tmp2);\n        tmp3.add(w[j - 7]);\n        littleSigma(tmp1, w[j - 15], tmp2);\n        tmp3.add(tmp1);\n        tmp3.add(w[j - 16]);\n      }\n\n      a.assign(h0);\n      b.assign(h1);\n      c.assign(h2);\n      d.assign(h3);\n      e.assign(h4);\n      f.assign(h5);\n      g.assign(h6);\n      h.assign(h7);\n      for (j = 0; j < 80; ++j) {\n        t1.assign(h);\n        sigmaPrime(tmp1, e, tmp2);\n        t1.add(tmp1);\n        ch(tmp1, e, f, g, tmp2);\n        t1.add(tmp1);\n        t1.add(k[j]);\n        t1.add(w[j]);\n\n        sigma(t2, a, tmp2);\n        maj(tmp1, a, b, c, tmp2);\n        t2.add(tmp1);\n\n        tmp3 = h;\n        h = g;\n        g = f;\n        f = e;\n        d.add(t1);\n        e = d;\n        d = c;\n        c = b;\n        b = a;\n        tmp3.assign(t1);\n        tmp3.add(t2);\n        a = tmp3;\n      }\n      h0.add(a);\n      h1.add(b);\n      h2.add(c);\n      h3.add(d);\n      h4.add(e);\n      h5.add(f);\n      h6.add(g);\n      h7.add(h);\n    }\n\n    var result;\n    if (!mode384) {\n      result = new Uint8Array(64);\n      h0.copyTo(result, 0);\n      h1.copyTo(result, 8);\n      h2.copyTo(result, 16);\n      h3.copyTo(result, 24);\n      h4.copyTo(result, 32);\n      h5.copyTo(result, 40);\n      h6.copyTo(result, 48);\n      h7.copyTo(result, 56);\n    } else {\n      result = new Uint8Array(48);\n      h0.copyTo(result, 0);\n      h1.copyTo(result, 8);\n      h2.copyTo(result, 16);\n      h3.copyTo(result, 24);\n      h4.copyTo(result, 32);\n      h5.copyTo(result, 40);\n    }\n    return result;\n  }\n\n  return hash;\n})();\nvar calculateSHA384 = (function calculateSHA384Closure() {\n  function hash(data, offset, length) {\n    return calculateSHA512(data, offset, length, true);\n  }\n\n  return hash;\n})();\nvar NullCipher = (function NullCipherClosure() {\n  // eslint-disable-next-line no-shadow\n  function NullCipher() {}\n\n  NullCipher.prototype = {\n    decryptBlock: function NullCipher_decryptBlock(data) {\n      return data;\n    },\n  };\n\n  return NullCipher;\n})();\n\nclass AESBaseCipher {\n  constructor() {\n    if (this.constructor === AESBaseCipher) {\n      unreachable(\"Cannot initialize AESBaseCipher.\");\n    }\n\n    // prettier-ignore\n    this._s = new Uint8Array([\n      0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b,\n      0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0,\n      0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26,\n      0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15,\n      0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2,\n      0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0,\n      0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed,\n      0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf,\n      0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f,\n      0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5,\n      0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec,\n      0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73,\n      0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14,\n      0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c,\n      0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d,\n      0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08,\n      0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f,\n      0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e,\n      0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11,\n      0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf,\n      0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f,\n      0xb0, 0x54, 0xbb, 0x16,\n    ]);\n\n    // prettier-ignore\n    this._inv_s = new Uint8Array([\n      0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e,\n      0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87,\n      0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32,\n      0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e,\n      0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49,\n      0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16,\n      0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50,\n      0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84,\n      0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05,\n      0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02,\n      0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41,\n      0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73,\n      0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8,\n      0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89,\n      0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b,\n      0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4,\n      0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59,\n      0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d,\n      0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d,\n      0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61,\n      0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63,\n      0x55, 0x21, 0x0c, 0x7d,\n    ]);\n\n    // prettier-ignore\n    this._mix = new Uint32Array([\n      0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927,\n      0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45,\n      0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb,\n      0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381,\n      0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf,\n      0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66,\n      0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28,\n      0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012,\n      0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec,\n      0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e,\n      0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd,\n      0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7,\n      0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89,\n      0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b,\n      0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815,\n      0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f,\n      0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa,\n      0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8,\n      0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36,\n      0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c,\n      0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742,\n      0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea,\n      0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4,\n      0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e,\n      0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360,\n      0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502,\n      0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87,\n      0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd,\n      0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3,\n      0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621,\n      0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f,\n      0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55,\n      0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26,\n      0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844,\n      0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba,\n      0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480,\n      0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce,\n      0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67,\n      0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929,\n      0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713,\n      0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed,\n      0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f,\n      0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3,\n    ]);\n\n    this._mixCol = new Uint8Array(256);\n    for (let i = 0; i < 256; i++) {\n      if (i < 128) {\n        this._mixCol[i] = i << 1;\n      } else {\n        this._mixCol[i] = (i << 1) ^ 0x1b;\n      }\n    }\n\n    this.buffer = new Uint8Array(16);\n    this.bufferPosition = 0;\n  }\n\n  _expandKey(cipherKey) {\n    unreachable(\"Cannot call `_expandKey` on the base class\");\n  }\n\n  _decrypt(input, key) {\n    let t, u, v;\n    const state = new Uint8Array(16);\n    state.set(input);\n\n    // AddRoundKey\n    for (let j = 0, k = this._keySize; j < 16; ++j, ++k) {\n      state[j] ^= key[k];\n    }\n    for (let i = this._cyclesOfRepetition - 1; i >= 1; --i) {\n      // InvShiftRows\n      t = state[13];\n      state[13] = state[9];\n      state[9] = state[5];\n      state[5] = state[1];\n      state[1] = t;\n      t = state[14];\n      u = state[10];\n      state[14] = state[6];\n      state[10] = state[2];\n      state[6] = t;\n      state[2] = u;\n      t = state[15];\n      u = state[11];\n      v = state[7];\n      state[15] = state[3];\n      state[11] = t;\n      state[7] = u;\n      state[3] = v;\n      // InvSubBytes\n      for (let j = 0; j < 16; ++j) {\n        state[j] = this._inv_s[state[j]];\n      }\n      // AddRoundKey\n      for (let j = 0, k = i * 16; j < 16; ++j, ++k) {\n        state[j] ^= key[k];\n      }\n      // InvMixColumns\n      for (let j = 0; j < 16; j += 4) {\n        const s0 = this._mix[state[j]];\n        const s1 = this._mix[state[j + 1]];\n        const s2 = this._mix[state[j + 2]];\n        const s3 = this._mix[state[j + 3]];\n        t =\n          s0 ^\n          (s1 >>> 8) ^\n          (s1 << 24) ^\n          (s2 >>> 16) ^\n          (s2 << 16) ^\n          (s3 >>> 24) ^\n          (s3 << 8);\n        state[j] = (t >>> 24) & 0xff;\n        state[j + 1] = (t >> 16) & 0xff;\n        state[j + 2] = (t >> 8) & 0xff;\n        state[j + 3] = t & 0xff;\n      }\n    }\n    // InvShiftRows\n    t = state[13];\n    state[13] = state[9];\n    state[9] = state[5];\n    state[5] = state[1];\n    state[1] = t;\n    t = state[14];\n    u = state[10];\n    state[14] = state[6];\n    state[10] = state[2];\n    state[6] = t;\n    state[2] = u;\n    t = state[15];\n    u = state[11];\n    v = state[7];\n    state[15] = state[3];\n    state[11] = t;\n    state[7] = u;\n    state[3] = v;\n    for (let j = 0; j < 16; ++j) {\n      // InvSubBytes\n      state[j] = this._inv_s[state[j]];\n      // AddRoundKey\n      state[j] ^= key[j];\n    }\n    return state;\n  }\n\n  _encrypt(input, key) {\n    const s = this._s;\n\n    let t, u, v;\n    const state = new Uint8Array(16);\n    state.set(input);\n\n    for (let j = 0; j < 16; ++j) {\n      // AddRoundKey\n      state[j] ^= key[j];\n    }\n\n    for (let i = 1; i < this._cyclesOfRepetition; i++) {\n      // SubBytes\n      for (let j = 0; j < 16; ++j) {\n        state[j] = s[state[j]];\n      }\n      // ShiftRows\n      v = state[1];\n      state[1] = state[5];\n      state[5] = state[9];\n      state[9] = state[13];\n      state[13] = v;\n      v = state[2];\n      u = state[6];\n      state[2] = state[10];\n      state[6] = state[14];\n      state[10] = v;\n      state[14] = u;\n      v = state[3];\n      u = state[7];\n      t = state[11];\n      state[3] = state[15];\n      state[7] = v;\n      state[11] = u;\n      state[15] = t;\n      // MixColumns\n      for (let j = 0; j < 16; j += 4) {\n        const s0 = state[j + 0];\n        const s1 = state[j + 1];\n        const s2 = state[j + 2];\n        const s3 = state[j + 3];\n        t = s0 ^ s1 ^ s2 ^ s3;\n        state[j + 0] ^= t ^ this._mixCol[s0 ^ s1];\n        state[j + 1] ^= t ^ this._mixCol[s1 ^ s2];\n        state[j + 2] ^= t ^ this._mixCol[s2 ^ s3];\n        state[j + 3] ^= t ^ this._mixCol[s3 ^ s0];\n      }\n      // AddRoundKey\n      for (let j = 0, k = i * 16; j < 16; ++j, ++k) {\n        state[j] ^= key[k];\n      }\n    }\n\n    // SubBytes\n    for (let j = 0; j < 16; ++j) {\n      state[j] = s[state[j]];\n    }\n    // ShiftRows\n    v = state[1];\n    state[1] = state[5];\n    state[5] = state[9];\n    state[9] = state[13];\n    state[13] = v;\n    v = state[2];\n    u = state[6];\n    state[2] = state[10];\n    state[6] = state[14];\n    state[10] = v;\n    state[14] = u;\n    v = state[3];\n    u = state[7];\n    t = state[11];\n    state[3] = state[15];\n    state[7] = v;\n    state[11] = u;\n    state[15] = t;\n    // AddRoundKey\n    for (let j = 0, k = this._keySize; j < 16; ++j, ++k) {\n      state[j] ^= key[k];\n    }\n    return state;\n  }\n\n  _decryptBlock2(data, finalize) {\n    const sourceLength = data.length;\n    let buffer = this.buffer,\n      bufferLength = this.bufferPosition;\n    const result = [];\n    let iv = this.iv;\n\n    for (let i = 0; i < sourceLength; ++i) {\n      buffer[bufferLength] = data[i];\n      ++bufferLength;\n      if (bufferLength < 16) {\n        continue;\n      }\n      // buffer is full, decrypting\n      const plain = this._decrypt(buffer, this._key);\n      // xor-ing the IV vector to get plain text\n      for (let j = 0; j < 16; ++j) {\n        plain[j] ^= iv[j];\n      }\n      iv = buffer;\n      result.push(plain);\n      buffer = new Uint8Array(16);\n      bufferLength = 0;\n    }\n    // saving incomplete buffer\n    this.buffer = buffer;\n    this.bufferLength = bufferLength;\n    this.iv = iv;\n    if (result.length === 0) {\n      return new Uint8Array(0);\n    }\n    // combining plain text blocks into one\n    let outputLength = 16 * result.length;\n    if (finalize) {\n      // undo a padding that is described in RFC 2898\n      const lastBlock = result[result.length - 1];\n      let psLen = lastBlock[15];\n      if (psLen <= 16) {\n        for (let i = 15, ii = 16 - psLen; i >= ii; --i) {\n          if (lastBlock[i] !== psLen) {\n            // Invalid padding, assume that the block has no padding.\n            psLen = 0;\n            break;\n          }\n        }\n        outputLength -= psLen;\n        result[result.length - 1] = lastBlock.subarray(0, 16 - psLen);\n      }\n    }\n    const output = new Uint8Array(outputLength);\n    for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {\n      output.set(result[i], j);\n    }\n    return output;\n  }\n\n  decryptBlock(data, finalize, iv = null) {\n    const sourceLength = data.length;\n    const buffer = this.buffer;\n    let bufferLength = this.bufferPosition;\n    // If an IV is not supplied, wait for IV values. They are at the start\n    // of the stream.\n    if (iv) {\n      this.iv = iv;\n    } else {\n      for (\n        let i = 0;\n        bufferLength < 16 && i < sourceLength;\n        ++i, ++bufferLength\n      ) {\n        buffer[bufferLength] = data[i];\n      }\n      if (bufferLength < 16) {\n        // Need more data.\n        this.bufferLength = bufferLength;\n        return new Uint8Array(0);\n      }\n      this.iv = buffer;\n      data = data.subarray(16);\n    }\n    this.buffer = new Uint8Array(16);\n    this.bufferLength = 0;\n    // starting decryption\n    this.decryptBlock = this._decryptBlock2;\n    return this.decryptBlock(data, finalize);\n  }\n\n  encrypt(data, iv) {\n    const sourceLength = data.length;\n    let buffer = this.buffer,\n      bufferLength = this.bufferPosition;\n    const result = [];\n\n    if (!iv) {\n      iv = new Uint8Array(16);\n    }\n    for (let i = 0; i < sourceLength; ++i) {\n      buffer[bufferLength] = data[i];\n      ++bufferLength;\n      if (bufferLength < 16) {\n        continue;\n      }\n      for (let j = 0; j < 16; ++j) {\n        buffer[j] ^= iv[j];\n      }\n\n      // buffer is full, encrypting\n      const cipher = this._encrypt(buffer, this._key);\n      iv = cipher;\n      result.push(cipher);\n      buffer = new Uint8Array(16);\n      bufferLength = 0;\n    }\n    // saving incomplete buffer\n    this.buffer = buffer;\n    this.bufferLength = bufferLength;\n    this.iv = iv;\n    if (result.length === 0) {\n      return new Uint8Array(0);\n    }\n    // combining plain text blocks into one\n    const outputLength = 16 * result.length;\n    const output = new Uint8Array(outputLength);\n    for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {\n      output.set(result[i], j);\n    }\n    return output;\n  }\n}\n\nclass AES128Cipher extends AESBaseCipher {\n  constructor(key) {\n    super();\n\n    this._cyclesOfRepetition = 10;\n    this._keySize = 160; // bits\n\n    // prettier-ignore\n    this._rcon = new Uint8Array([\n      0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c,\n      0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a,\n      0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd,\n      0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a,\n      0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,\n      0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6,\n      0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72,\n      0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc,\n      0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10,\n      0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e,\n      0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5,\n      0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94,\n      0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02,\n      0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d,\n      0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d,\n      0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f,\n      0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb,\n      0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c,\n      0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a,\n      0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd,\n      0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a,\n      0x74, 0xe8, 0xcb, 0x8d,\n    ]);\n\n    this._key = this._expandKey(key);\n  }\n\n  _expandKey(cipherKey) {\n    const b = 176;\n    const s = this._s;\n    const rcon = this._rcon;\n\n    const result = new Uint8Array(b);\n    result.set(cipherKey);\n\n    for (let j = 16, i = 1; j < b; ++i) {\n      // RotWord\n      let t1 = result[j - 3];\n      let t2 = result[j - 2];\n      let t3 = result[j - 1];\n      let t4 = result[j - 4];\n      // SubWord\n      t1 = s[t1];\n      t2 = s[t2];\n      t3 = s[t3];\n      t4 = s[t4];\n      // Rcon\n      t1 = t1 ^ rcon[i];\n      for (let n = 0; n < 4; ++n) {\n        result[j] = t1 ^= result[j - 16];\n        j++;\n        result[j] = t2 ^= result[j - 16];\n        j++;\n        result[j] = t3 ^= result[j - 16];\n        j++;\n        result[j] = t4 ^= result[j - 16];\n        j++;\n      }\n    }\n    return result;\n  }\n}\n\nclass AES256Cipher extends AESBaseCipher {\n  constructor(key) {\n    super();\n\n    this._cyclesOfRepetition = 14;\n    this._keySize = 224; // bits\n\n    this._key = this._expandKey(key);\n  }\n\n  _expandKey(cipherKey) {\n    const b = 240;\n    const s = this._s;\n\n    const result = new Uint8Array(b);\n    result.set(cipherKey);\n\n    let r = 1;\n    let t1, t2, t3, t4;\n    for (let j = 32, i = 1; j < b; ++i) {\n      if (j % 32 === 16) {\n        t1 = s[t1];\n        t2 = s[t2];\n        t3 = s[t3];\n        t4 = s[t4];\n      } else if (j % 32 === 0) {\n        // RotWord\n        t1 = result[j - 3];\n        t2 = result[j - 2];\n        t3 = result[j - 1];\n        t4 = result[j - 4];\n        // SubWord\n        t1 = s[t1];\n        t2 = s[t2];\n        t3 = s[t3];\n        t4 = s[t4];\n        // Rcon\n        t1 = t1 ^ r;\n        if ((r <<= 1) >= 256) {\n          r = (r ^ 0x1b) & 0xff;\n        }\n      }\n\n      for (let n = 0; n < 4; ++n) {\n        result[j] = t1 ^= result[j - 32];\n        j++;\n        result[j] = t2 ^= result[j - 32];\n        j++;\n        result[j] = t3 ^= result[j - 32];\n        j++;\n        result[j] = t4 ^= result[j - 32];\n        j++;\n      }\n    }\n    return result;\n  }\n}\n\nvar PDF17 = (function PDF17Closure() {\n  function compareByteArrays(array1, array2) {\n    if (array1.length !== array2.length) {\n      return false;\n    }\n    for (var i = 0; i < array1.length; i++) {\n      if (array1[i] !== array2[i]) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  // eslint-disable-next-line no-shadow\n  function PDF17() {}\n\n  PDF17.prototype = {\n    checkOwnerPassword: function PDF17_checkOwnerPassword(\n      password,\n      ownerValidationSalt,\n      userBytes,\n      ownerPassword\n    ) {\n      var hashData = new Uint8Array(password.length + 56);\n      hashData.set(password, 0);\n      hashData.set(ownerValidationSalt, password.length);\n      hashData.set(userBytes, password.length + ownerValidationSalt.length);\n      var result = calculateSHA256(hashData, 0, hashData.length);\n      return compareByteArrays(result, ownerPassword);\n    },\n    checkUserPassword: function PDF17_checkUserPassword(\n      password,\n      userValidationSalt,\n      userPassword\n    ) {\n      var hashData = new Uint8Array(password.length + 8);\n      hashData.set(password, 0);\n      hashData.set(userValidationSalt, password.length);\n      var result = calculateSHA256(hashData, 0, hashData.length);\n      return compareByteArrays(result, userPassword);\n    },\n    getOwnerKey: function PDF17_getOwnerKey(\n      password,\n      ownerKeySalt,\n      userBytes,\n      ownerEncryption\n    ) {\n      var hashData = new Uint8Array(password.length + 56);\n      hashData.set(password, 0);\n      hashData.set(ownerKeySalt, password.length);\n      hashData.set(userBytes, password.length + ownerKeySalt.length);\n      var key = calculateSHA256(hashData, 0, hashData.length);\n      var cipher = new AES256Cipher(key);\n      return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\n    },\n    getUserKey: function PDF17_getUserKey(\n      password,\n      userKeySalt,\n      userEncryption\n    ) {\n      var hashData = new Uint8Array(password.length + 8);\n      hashData.set(password, 0);\n      hashData.set(userKeySalt, password.length);\n      // `key` is the decryption key for the UE string.\n      var key = calculateSHA256(hashData, 0, hashData.length);\n      var cipher = new AES256Cipher(key);\n      return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\n    },\n  };\n  return PDF17;\n})();\n\nvar PDF20 = (function PDF20Closure() {\n  function concatArrays(array1, array2) {\n    var t = new Uint8Array(array1.length + array2.length);\n    t.set(array1, 0);\n    t.set(array2, array1.length);\n    return t;\n  }\n\n  function calculatePDF20Hash(password, input, userBytes) {\n    // This refers to Algorithm 2.B as defined in ISO 32000-2.\n    var k = calculateSHA256(input, 0, input.length).subarray(0, 32);\n    var e = [0];\n    var i = 0;\n    while (i < 64 || e[e.length - 1] > i - 32) {\n      var arrayLength = password.length + k.length + userBytes.length;\n\n      var k1 = new Uint8Array(arrayLength * 64);\n      var array = concatArrays(password, k);\n      array = concatArrays(array, userBytes);\n      for (var j = 0, pos = 0; j < 64; j++, pos += arrayLength) {\n        k1.set(array, pos);\n      }\n      // AES128 CBC NO PADDING with first 16 bytes of k as the key\n      // and the second 16 as the iv.\n      var cipher = new AES128Cipher(k.subarray(0, 16));\n      e = cipher.encrypt(k1, k.subarray(16, 32));\n      // Now we have to take the first 16 bytes of an unsigned big endian\n      // integer and compute the remainder modulo 3. That is a fairly large\n      // number and JavaScript isn't going to handle that well, so we're using\n      // a trick that allows us to perform modulo math byte by byte.\n      var remainder = 0;\n      for (var z = 0; z < 16; z++) {\n        remainder *= 256 % 3;\n        remainder %= 3;\n        remainder += (e[z] >>> 0) % 3;\n        remainder %= 3;\n      }\n      if (remainder === 0) {\n        k = calculateSHA256(e, 0, e.length);\n      } else if (remainder === 1) {\n        k = calculateSHA384(e, 0, e.length);\n      } else if (remainder === 2) {\n        k = calculateSHA512(e, 0, e.length);\n      }\n      i++;\n    }\n    return k.subarray(0, 32);\n  }\n\n  // eslint-disable-next-line no-shadow\n  function PDF20() {}\n\n  function compareByteArrays(array1, array2) {\n    if (array1.length !== array2.length) {\n      return false;\n    }\n    for (var i = 0; i < array1.length; i++) {\n      if (array1[i] !== array2[i]) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  PDF20.prototype = {\n    hash: function PDF20_hash(password, concatBytes, userBytes) {\n      return calculatePDF20Hash(password, concatBytes, userBytes);\n    },\n    checkOwnerPassword: function PDF20_checkOwnerPassword(\n      password,\n      ownerValidationSalt,\n      userBytes,\n      ownerPassword\n    ) {\n      var hashData = new Uint8Array(password.length + 56);\n      hashData.set(password, 0);\n      hashData.set(ownerValidationSalt, password.length);\n      hashData.set(userBytes, password.length + ownerValidationSalt.length);\n      var result = calculatePDF20Hash(password, hashData, userBytes);\n      return compareByteArrays(result, ownerPassword);\n    },\n    checkUserPassword: function PDF20_checkUserPassword(\n      password,\n      userValidationSalt,\n      userPassword\n    ) {\n      var hashData = new Uint8Array(password.length + 8);\n      hashData.set(password, 0);\n      hashData.set(userValidationSalt, password.length);\n      var result = calculatePDF20Hash(password, hashData, []);\n      return compareByteArrays(result, userPassword);\n    },\n    getOwnerKey: function PDF20_getOwnerKey(\n      password,\n      ownerKeySalt,\n      userBytes,\n      ownerEncryption\n    ) {\n      var hashData = new Uint8Array(password.length + 56);\n      hashData.set(password, 0);\n      hashData.set(ownerKeySalt, password.length);\n      hashData.set(userBytes, password.length + ownerKeySalt.length);\n      var key = calculatePDF20Hash(password, hashData, userBytes);\n      var cipher = new AES256Cipher(key);\n      return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\n    },\n    getUserKey: function PDF20_getUserKey(\n      password,\n      userKeySalt,\n      userEncryption\n    ) {\n      var hashData = new Uint8Array(password.length + 8);\n      hashData.set(password, 0);\n      hashData.set(userKeySalt, password.length);\n      // `key` is the decryption key for the UE string.\n      var key = calculatePDF20Hash(password, hashData, []);\n      var cipher = new AES256Cipher(key);\n      return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\n    },\n  };\n  return PDF20;\n})();\n\nvar CipherTransform = (function CipherTransformClosure() {\n  // eslint-disable-next-line no-shadow\n  function CipherTransform(stringCipherConstructor, streamCipherConstructor) {\n    this.StringCipherConstructor = stringCipherConstructor;\n    this.StreamCipherConstructor = streamCipherConstructor;\n  }\n\n  CipherTransform.prototype = {\n    createStream: function CipherTransform_createStream(stream, length) {\n      var cipher = new this.StreamCipherConstructor();\n      return new DecryptStream(\n        stream,\n        length,\n        function cipherTransformDecryptStream(data, finalize) {\n          return cipher.decryptBlock(data, finalize);\n        }\n      );\n    },\n    decryptString: function CipherTransform_decryptString(s) {\n      var cipher = new this.StringCipherConstructor();\n      var data = stringToBytes(s);\n      data = cipher.decryptBlock(data, true);\n      return bytesToString(data);\n    },\n  };\n  return CipherTransform;\n})();\n\nvar CipherTransformFactory = (function CipherTransformFactoryClosure() {\n  // prettier-ignore\n  var defaultPasswordBytes = new Uint8Array([\n    0x28, 0xBF, 0x4E, 0x5E, 0x4E, 0x75, 0x8A, 0x41,\n    0x64, 0x00, 0x4E, 0x56, 0xFF, 0xFA, 0x01, 0x08,\n    0x2E, 0x2E, 0x00, 0xB6, 0xD0, 0x68, 0x3E, 0x80,\n    0x2F, 0x0C, 0xA9, 0xFE, 0x64, 0x53, 0x69, 0x7A]);\n\n  function createEncryptionKey20(\n    revision,\n    password,\n    ownerPassword,\n    ownerValidationSalt,\n    ownerKeySalt,\n    uBytes,\n    userPassword,\n    userValidationSalt,\n    userKeySalt,\n    ownerEncryption,\n    userEncryption,\n    perms\n  ) {\n    if (password) {\n      var passwordLength = Math.min(127, password.length);\n      password = password.subarray(0, passwordLength);\n    } else {\n      password = [];\n    }\n    var pdfAlgorithm;\n    if (revision === 6) {\n      pdfAlgorithm = new PDF20();\n    } else {\n      pdfAlgorithm = new PDF17();\n    }\n\n    if (\n      pdfAlgorithm.checkUserPassword(password, userValidationSalt, userPassword)\n    ) {\n      return pdfAlgorithm.getUserKey(password, userKeySalt, userEncryption);\n    } else if (\n      password.length &&\n      pdfAlgorithm.checkOwnerPassword(\n        password,\n        ownerValidationSalt,\n        uBytes,\n        ownerPassword\n      )\n    ) {\n      return pdfAlgorithm.getOwnerKey(\n        password,\n        ownerKeySalt,\n        uBytes,\n        ownerEncryption\n      );\n    }\n\n    return null;\n  }\n\n  function prepareKeyData(\n    fileId,\n    password,\n    ownerPassword,\n    userPassword,\n    flags,\n    revision,\n    keyLength,\n    encryptMetadata\n  ) {\n    var hashDataSize = 40 + ownerPassword.length + fileId.length;\n    var hashData = new Uint8Array(hashDataSize),\n      i = 0,\n      j,\n      n;\n    if (password) {\n      n = Math.min(32, password.length);\n      for (; i < n; ++i) {\n        hashData[i] = password[i];\n      }\n    }\n    j = 0;\n    while (i < 32) {\n      hashData[i++] = defaultPasswordBytes[j++];\n    }\n    // as now the padded password in the hashData[0..i]\n    for (j = 0, n = ownerPassword.length; j < n; ++j) {\n      hashData[i++] = ownerPassword[j];\n    }\n    hashData[i++] = flags & 0xff;\n    hashData[i++] = (flags >> 8) & 0xff;\n    hashData[i++] = (flags >> 16) & 0xff;\n    hashData[i++] = (flags >>> 24) & 0xff;\n    for (j = 0, n = fileId.length; j < n; ++j) {\n      hashData[i++] = fileId[j];\n    }\n    if (revision >= 4 && !encryptMetadata) {\n      hashData[i++] = 0xff;\n      hashData[i++] = 0xff;\n      hashData[i++] = 0xff;\n      hashData[i++] = 0xff;\n    }\n    var hash = calculateMD5(hashData, 0, i);\n    var keyLengthInBytes = keyLength >> 3;\n    if (revision >= 3) {\n      for (j = 0; j < 50; ++j) {\n        hash = calculateMD5(hash, 0, keyLengthInBytes);\n      }\n    }\n    var encryptionKey = hash.subarray(0, keyLengthInBytes);\n    var cipher, checkData;\n\n    if (revision >= 3) {\n      for (i = 0; i < 32; ++i) {\n        hashData[i] = defaultPasswordBytes[i];\n      }\n      for (j = 0, n = fileId.length; j < n; ++j) {\n        hashData[i++] = fileId[j];\n      }\n      cipher = new ARCFourCipher(encryptionKey);\n      checkData = cipher.encryptBlock(calculateMD5(hashData, 0, i));\n      n = encryptionKey.length;\n      var derivedKey = new Uint8Array(n),\n        k;\n      for (j = 1; j <= 19; ++j) {\n        for (k = 0; k < n; ++k) {\n          derivedKey[k] = encryptionKey[k] ^ j;\n        }\n        cipher = new ARCFourCipher(derivedKey);\n        checkData = cipher.encryptBlock(checkData);\n      }\n      for (j = 0, n = checkData.length; j < n; ++j) {\n        if (userPassword[j] !== checkData[j]) {\n          return null;\n        }\n      }\n    } else {\n      cipher = new ARCFourCipher(encryptionKey);\n      checkData = cipher.encryptBlock(defaultPasswordBytes);\n      for (j = 0, n = checkData.length; j < n; ++j) {\n        if (userPassword[j] !== checkData[j]) {\n          return null;\n        }\n      }\n    }\n    return encryptionKey;\n  }\n\n  function decodeUserPassword(password, ownerPassword, revision, keyLength) {\n    var hashData = new Uint8Array(32),\n      i = 0,\n      j,\n      n;\n    n = Math.min(32, password.length);\n    for (; i < n; ++i) {\n      hashData[i] = password[i];\n    }\n    j = 0;\n    while (i < 32) {\n      hashData[i++] = defaultPasswordBytes[j++];\n    }\n    var hash = calculateMD5(hashData, 0, i);\n    var keyLengthInBytes = keyLength >> 3;\n    if (revision >= 3) {\n      for (j = 0; j < 50; ++j) {\n        hash = calculateMD5(hash, 0, hash.length);\n      }\n    }\n\n    var cipher, userPassword;\n    if (revision >= 3) {\n      userPassword = ownerPassword;\n      var derivedKey = new Uint8Array(keyLengthInBytes),\n        k;\n      for (j = 19; j >= 0; j--) {\n        for (k = 0; k < keyLengthInBytes; ++k) {\n          derivedKey[k] = hash[k] ^ j;\n        }\n        cipher = new ARCFourCipher(derivedKey);\n        userPassword = cipher.encryptBlock(userPassword);\n      }\n    } else {\n      cipher = new ARCFourCipher(hash.subarray(0, keyLengthInBytes));\n      userPassword = cipher.encryptBlock(ownerPassword);\n    }\n    return userPassword;\n  }\n\n  var identityName = Name.get(\"Identity\");\n\n  // eslint-disable-next-line no-shadow\n  function CipherTransformFactory(dict, fileId, password) {\n    var filter = dict.get(\"Filter\");\n    if (!isName(filter, \"Standard\")) {\n      throw new FormatError(\"unknown encryption method\");\n    }\n    this.dict = dict;\n    var algorithm = dict.get(\"V\");\n    if (\n      !Number.isInteger(algorithm) ||\n      (algorithm !== 1 && algorithm !== 2 && algorithm !== 4 && algorithm !== 5)\n    ) {\n      throw new FormatError(\"unsupported encryption algorithm\");\n    }\n    this.algorithm = algorithm;\n    var keyLength = dict.get(\"Length\");\n    if (!keyLength) {\n      // Spec asks to rely on encryption dictionary's Length entry, however\n      // some PDFs don't have it. Trying to recover.\n      if (algorithm <= 3) {\n        // For 1 and 2 it's fixed to 40-bit, for 3 40-bit is a minimal value.\n        keyLength = 40;\n      } else {\n        // Trying to find default handler -- it usually has Length.\n        var cfDict = dict.get(\"CF\");\n        var streamCryptoName = dict.get(\"StmF\");\n        if (isDict(cfDict) && isName(streamCryptoName)) {\n          cfDict.suppressEncryption = true; // See comment below.\n          var handlerDict = cfDict.get(streamCryptoName.name);\n          keyLength = (handlerDict && handlerDict.get(\"Length\")) || 128;\n          if (keyLength < 40) {\n            // Sometimes it's incorrect value of bits, generators specify bytes.\n            keyLength <<= 3;\n          }\n        }\n      }\n    }\n    if (!Number.isInteger(keyLength) || keyLength < 40 || keyLength % 8 !== 0) {\n      throw new FormatError(\"invalid key length\");\n    }\n\n    // prepare keys\n    var ownerPassword = stringToBytes(dict.get(\"O\")).subarray(0, 32);\n    var userPassword = stringToBytes(dict.get(\"U\")).subarray(0, 32);\n    var flags = dict.get(\"P\");\n    var revision = dict.get(\"R\");\n    // meaningful when V is 4 or 5\n    var encryptMetadata =\n      (algorithm === 4 || algorithm === 5) &&\n      dict.get(\"EncryptMetadata\") !== false;\n    this.encryptMetadata = encryptMetadata;\n\n    var fileIdBytes = stringToBytes(fileId);\n    var passwordBytes;\n    if (password) {\n      if (revision === 6) {\n        try {\n          password = utf8StringToString(password);\n        } catch (ex) {\n          warn(\n            \"CipherTransformFactory: \" +\n              \"Unable to convert UTF8 encoded password.\"\n          );\n        }\n      }\n      passwordBytes = stringToBytes(password);\n    }\n\n    var encryptionKey;\n    if (algorithm !== 5) {\n      encryptionKey = prepareKeyData(\n        fileIdBytes,\n        passwordBytes,\n        ownerPassword,\n        userPassword,\n        flags,\n        revision,\n        keyLength,\n        encryptMetadata\n      );\n    } else {\n      var ownerValidationSalt = stringToBytes(dict.get(\"O\")).subarray(32, 40);\n      var ownerKeySalt = stringToBytes(dict.get(\"O\")).subarray(40, 48);\n      var uBytes = stringToBytes(dict.get(\"U\")).subarray(0, 48);\n      var userValidationSalt = stringToBytes(dict.get(\"U\")).subarray(32, 40);\n      var userKeySalt = stringToBytes(dict.get(\"U\")).subarray(40, 48);\n      var ownerEncryption = stringToBytes(dict.get(\"OE\"));\n      var userEncryption = stringToBytes(dict.get(\"UE\"));\n      var perms = stringToBytes(dict.get(\"Perms\"));\n      encryptionKey = createEncryptionKey20(\n        revision,\n        passwordBytes,\n        ownerPassword,\n        ownerValidationSalt,\n        ownerKeySalt,\n        uBytes,\n        userPassword,\n        userValidationSalt,\n        userKeySalt,\n        ownerEncryption,\n        userEncryption,\n        perms\n      );\n    }\n    if (!encryptionKey && !password) {\n      throw new PasswordException(\n        \"No password given\",\n        PasswordResponses.NEED_PASSWORD\n      );\n    } else if (!encryptionKey && password) {\n      // Attempting use the password as an owner password\n      var decodedPassword = decodeUserPassword(\n        passwordBytes,\n        ownerPassword,\n        revision,\n        keyLength\n      );\n      encryptionKey = prepareKeyData(\n        fileIdBytes,\n        decodedPassword,\n        ownerPassword,\n        userPassword,\n        flags,\n        revision,\n        keyLength,\n        encryptMetadata\n      );\n    }\n\n    if (!encryptionKey) {\n      throw new PasswordException(\n        \"Incorrect Password\",\n        PasswordResponses.INCORRECT_PASSWORD\n      );\n    }\n\n    this.encryptionKey = encryptionKey;\n\n    if (algorithm >= 4) {\n      var cf = dict.get(\"CF\");\n      if (isDict(cf)) {\n        // The 'CF' dictionary itself should not be encrypted, and by setting\n        // `suppressEncryption` we can prevent an infinite loop inside of\n        // `XRef_fetchUncompressed` if the dictionary contains indirect objects\n        // (fixes issue7665.pdf).\n        cf.suppressEncryption = true;\n      }\n      this.cf = cf;\n      this.stmf = dict.get(\"StmF\") || identityName;\n      this.strf = dict.get(\"StrF\") || identityName;\n      this.eff = dict.get(\"EFF\") || this.stmf;\n    }\n  }\n\n  function buildObjectKey(num, gen, encryptionKey, isAes) {\n    var key = new Uint8Array(encryptionKey.length + 9),\n      i,\n      n;\n    for (i = 0, n = encryptionKey.length; i < n; ++i) {\n      key[i] = encryptionKey[i];\n    }\n    key[i++] = num & 0xff;\n    key[i++] = (num >> 8) & 0xff;\n    key[i++] = (num >> 16) & 0xff;\n    key[i++] = gen & 0xff;\n    key[i++] = (gen >> 8) & 0xff;\n    if (isAes) {\n      key[i++] = 0x73;\n      key[i++] = 0x41;\n      key[i++] = 0x6c;\n      key[i++] = 0x54;\n    }\n    var hash = calculateMD5(key, 0, i);\n    return hash.subarray(0, Math.min(encryptionKey.length + 5, 16));\n  }\n\n  function buildCipherConstructor(cf, name, num, gen, key) {\n    if (!isName(name)) {\n      throw new FormatError(\"Invalid crypt filter name.\");\n    }\n    var cryptFilter = cf.get(name.name);\n    var cfm;\n    if (cryptFilter !== null && cryptFilter !== undefined) {\n      cfm = cryptFilter.get(\"CFM\");\n    }\n    if (!cfm || cfm.name === \"None\") {\n      return function cipherTransformFactoryBuildCipherConstructorNone() {\n        return new NullCipher();\n      };\n    }\n    if (cfm.name === \"V2\") {\n      return function cipherTransformFactoryBuildCipherConstructorV2() {\n        return new ARCFourCipher(buildObjectKey(num, gen, key, false));\n      };\n    }\n    if (cfm.name === \"AESV2\") {\n      return function cipherTransformFactoryBuildCipherConstructorAESV2() {\n        return new AES128Cipher(buildObjectKey(num, gen, key, true));\n      };\n    }\n    if (cfm.name === \"AESV3\") {\n      return function cipherTransformFactoryBuildCipherConstructorAESV3() {\n        return new AES256Cipher(key);\n      };\n    }\n    throw new FormatError(\"Unknown crypto method\");\n  }\n\n  CipherTransformFactory.prototype = {\n    createCipherTransform: function CipherTransformFactory_createCipherTransform(\n      num,\n      gen\n    ) {\n      if (this.algorithm === 4 || this.algorithm === 5) {\n        return new CipherTransform(\n          buildCipherConstructor(\n            this.cf,\n            this.stmf,\n            num,\n            gen,\n            this.encryptionKey\n          ),\n          buildCipherConstructor(\n            this.cf,\n            this.strf,\n            num,\n            gen,\n            this.encryptionKey\n          )\n        );\n      }\n      // algorithms 1 and 2\n      var key = buildObjectKey(num, gen, this.encryptionKey, false);\n      var cipherConstructor = function buildCipherCipherConstructor() {\n        return new ARCFourCipher(key);\n      };\n      return new CipherTransform(cipherConstructor, cipherConstructor);\n    },\n  };\n\n  return CipherTransformFactory;\n})();\n\nexport {\n  AES128Cipher,\n  AES256Cipher,\n  ARCFourCipher,\n  CipherTransformFactory,\n  PDF17,\n  PDF20,\n  calculateMD5,\n  calculateSHA256,\n  calculateSHA384,\n  calculateSHA512,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  assert,\n  FormatError,\n  info,\n  isString,\n  shadow,\n  unreachable,\n  warn,\n} from \"../shared/util.js\";\nimport { isDict, isName, isStream } from \"./primitives.js\";\n\n/**\n * Resizes an RGB image with 3 components.\n * @param {TypedArray} src - The source buffer.\n * @param {TypedArray} dest - The destination buffer.\n * @param {number} w1 - Original width.\n * @param {number} h1 - Original height.\n * @param {number} w2 - New width.\n * @param {number} h2 - New height.\n * @param {number} alpha01 - Size reserved for the alpha channel.\n */\nfunction resizeRgbImage(src, dest, w1, h1, w2, h2, alpha01) {\n  const COMPONENTS = 3;\n  alpha01 = alpha01 !== 1 ? 0 : alpha01;\n  const xRatio = w1 / w2;\n  const yRatio = h1 / h2;\n  let newIndex = 0,\n    oldIndex;\n  const xScaled = new Uint16Array(w2);\n  const w1Scanline = w1 * COMPONENTS;\n\n  for (let i = 0; i < w2; i++) {\n    xScaled[i] = Math.floor(i * xRatio) * COMPONENTS;\n  }\n  for (let i = 0; i < h2; i++) {\n    const py = Math.floor(i * yRatio) * w1Scanline;\n    for (let j = 0; j < w2; j++) {\n      oldIndex = py + xScaled[j];\n      dest[newIndex++] = src[oldIndex++];\n      dest[newIndex++] = src[oldIndex++];\n      dest[newIndex++] = src[oldIndex++];\n      newIndex += alpha01;\n    }\n  }\n}\n\nclass ColorSpace {\n  constructor(name, numComps) {\n    if (this.constructor === ColorSpace) {\n      unreachable(\"Cannot initialize ColorSpace.\");\n    }\n    this.name = name;\n    this.numComps = numComps;\n  }\n\n  /**\n   * Converts the color value to the RGB color. The color components are\n   * located in the src array starting from the srcOffset. Returns the array\n   * of the rgb components, each value ranging from [0,255].\n   */\n  getRgb(src, srcOffset) {\n    const rgb = new Uint8ClampedArray(3);\n    this.getRgbItem(src, srcOffset, rgb, 0);\n    return rgb;\n  }\n\n  /**\n   * Converts the color value to the RGB color, similar to the getRgb method.\n   * The result placed into the dest array starting from the destOffset.\n   */\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    unreachable(\"Should not call ColorSpace.getRgbItem\");\n  }\n\n  /**\n   * Converts the specified number of the color values to the RGB colors.\n   * The colors are located in the src array starting from the srcOffset.\n   * The result is placed into the dest array starting from the destOffset.\n   * The src array items shall be in [0,2^bits) range, the dest array items\n   * will be in [0,255] range. alpha01 indicates how many alpha components\n   * there are in the dest array; it will be either 0 (RGB array) or 1 (RGBA\n   * array).\n   */\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    unreachable(\"Should not call ColorSpace.getRgbBuffer\");\n  }\n\n  /**\n   * Determines the number of bytes required to store the result of the\n   * conversion done by the getRgbBuffer method. As in getRgbBuffer,\n   * |alpha01| is either 0 (RGB output) or 1 (RGBA output).\n   */\n  getOutputLength(inputLength, alpha01) {\n    unreachable(\"Should not call ColorSpace.getOutputLength\");\n  }\n\n  /**\n   * Returns true if source data will be equal the result/output data.\n   */\n  isPassthrough(bits) {\n    return false;\n  }\n\n  /**\n   * Refer to the static `ColorSpace.isDefaultDecode` method below.\n   */\n  isDefaultDecode(decodeMap, bpc) {\n    return ColorSpace.isDefaultDecode(decodeMap, this.numComps);\n  }\n\n  /**\n   * Fills in the RGB colors in the destination buffer.  alpha01 indicates\n   * how many alpha components there are in the dest array; it will be either\n   * 0 (RGB array) or 1 (RGBA array).\n   */\n  fillRgb(\n    dest,\n    originalWidth,\n    originalHeight,\n    width,\n    height,\n    actualHeight,\n    bpc,\n    comps,\n    alpha01\n  ) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'ColorSpace.fillRgb: Unsupported \"dest\" type.'\n      );\n    }\n    const count = originalWidth * originalHeight;\n    let rgbBuf = null;\n    const numComponentColors = 1 << bpc;\n    const needsResizing = originalHeight !== height || originalWidth !== width;\n\n    if (this.isPassthrough(bpc)) {\n      rgbBuf = comps;\n    } else if (\n      this.numComps === 1 &&\n      count > numComponentColors &&\n      this.name !== \"DeviceGray\" &&\n      this.name !== \"DeviceRGB\"\n    ) {\n      // Optimization: create a color map when there is just one component and\n      // we are converting more colors than the size of the color map. We\n      // don't build the map if the colorspace is gray or rgb since those\n      // methods are faster than building a map. This mainly offers big speed\n      // ups for indexed and alternate colorspaces.\n      //\n      // TODO it may be worth while to cache the color map. While running\n      // testing I never hit a cache so I will leave that out for now (perhaps\n      // we are reparsing colorspaces too much?).\n      const allColors =\n        bpc <= 8\n          ? new Uint8Array(numComponentColors)\n          : new Uint16Array(numComponentColors);\n      for (let i = 0; i < numComponentColors; i++) {\n        allColors[i] = i;\n      }\n      const colorMap = new Uint8ClampedArray(numComponentColors * 3);\n      this.getRgbBuffer(\n        allColors,\n        0,\n        numComponentColors,\n        colorMap,\n        0,\n        bpc,\n        /* alpha01 = */ 0\n      );\n\n      if (!needsResizing) {\n        // Fill in the RGB values directly into |dest|.\n        let destPos = 0;\n        for (let i = 0; i < count; ++i) {\n          const key = comps[i] * 3;\n          dest[destPos++] = colorMap[key];\n          dest[destPos++] = colorMap[key + 1];\n          dest[destPos++] = colorMap[key + 2];\n          destPos += alpha01;\n        }\n      } else {\n        rgbBuf = new Uint8Array(count * 3);\n        let rgbPos = 0;\n        for (let i = 0; i < count; ++i) {\n          const key = comps[i] * 3;\n          rgbBuf[rgbPos++] = colorMap[key];\n          rgbBuf[rgbPos++] = colorMap[key + 1];\n          rgbBuf[rgbPos++] = colorMap[key + 2];\n        }\n      }\n    } else {\n      if (!needsResizing) {\n        // Fill in the RGB values directly into |dest|.\n        this.getRgbBuffer(\n          comps,\n          0,\n          width * actualHeight,\n          dest,\n          0,\n          bpc,\n          alpha01\n        );\n      } else {\n        rgbBuf = new Uint8ClampedArray(count * 3);\n        this.getRgbBuffer(comps, 0, count, rgbBuf, 0, bpc, /* alpha01 = */ 0);\n      }\n    }\n\n    if (rgbBuf) {\n      if (needsResizing) {\n        resizeRgbImage(\n          rgbBuf,\n          dest,\n          originalWidth,\n          originalHeight,\n          width,\n          height,\n          alpha01\n        );\n      } else {\n        let destPos = 0,\n          rgbPos = 0;\n        for (let i = 0, ii = width * actualHeight; i < ii; i++) {\n          dest[destPos++] = rgbBuf[rgbPos++];\n          dest[destPos++] = rgbBuf[rgbPos++];\n          dest[destPos++] = rgbBuf[rgbPos++];\n          destPos += alpha01;\n        }\n      }\n    }\n  }\n\n  /**\n   * True if the colorspace has components in the default range of [0, 1].\n   * This should be true for all colorspaces except for lab color spaces\n   * which are [0,100], [-128, 127], [-128, 127].\n   */\n  get usesZeroToOneRange() {\n    return shadow(this, \"usesZeroToOneRange\", true);\n  }\n\n  static parse(cs, xref, res, pdfFunctionFactory) {\n    const IR = this.parseToIR(cs, xref, res, pdfFunctionFactory);\n    return this.fromIR(IR);\n  }\n\n  static fromIR(IR) {\n    const name = Array.isArray(IR) ? IR[0] : IR;\n    let whitePoint, blackPoint, gamma;\n\n    switch (name) {\n      case \"DeviceGrayCS\":\n        return this.singletons.gray;\n      case \"DeviceRgbCS\":\n        return this.singletons.rgb;\n      case \"DeviceCmykCS\":\n        return this.singletons.cmyk;\n      case \"CalGrayCS\":\n        whitePoint = IR[1];\n        blackPoint = IR[2];\n        gamma = IR[3];\n        return new CalGrayCS(whitePoint, blackPoint, gamma);\n      case \"CalRGBCS\":\n        whitePoint = IR[1];\n        blackPoint = IR[2];\n        gamma = IR[3];\n        const matrix = IR[4];\n        return new CalRGBCS(whitePoint, blackPoint, gamma, matrix);\n      case \"PatternCS\":\n        let basePatternCS = IR[1];\n        if (basePatternCS) {\n          basePatternCS = this.fromIR(basePatternCS);\n        }\n        return new PatternCS(basePatternCS);\n      case \"IndexedCS\":\n        const baseIndexedCS = IR[1];\n        const hiVal = IR[2];\n        const lookup = IR[3];\n        return new IndexedCS(this.fromIR(baseIndexedCS), hiVal, lookup);\n      case \"AlternateCS\":\n        const numComps = IR[1];\n        const alt = IR[2];\n        const tintFn = IR[3];\n        return new AlternateCS(numComps, this.fromIR(alt), tintFn);\n      case \"LabCS\":\n        whitePoint = IR[1];\n        blackPoint = IR[2];\n        const range = IR[3];\n        return new LabCS(whitePoint, blackPoint, range);\n      default:\n        throw new FormatError(`Unknown colorspace name: ${name}`);\n    }\n  }\n\n  static parseToIR(cs, xref, res = null, pdfFunctionFactory) {\n    cs = xref.fetchIfRef(cs);\n    if (isName(cs)) {\n      switch (cs.name) {\n        case \"DeviceGray\":\n        case \"G\":\n          return \"DeviceGrayCS\";\n        case \"DeviceRGB\":\n        case \"RGB\":\n          return \"DeviceRgbCS\";\n        case \"DeviceCMYK\":\n        case \"CMYK\":\n          return \"DeviceCmykCS\";\n        case \"Pattern\":\n          return [\"PatternCS\", null];\n        default:\n          if (isDict(res)) {\n            const colorSpaces = res.get(\"ColorSpace\");\n            if (isDict(colorSpaces)) {\n              const resCS = colorSpaces.get(cs.name);\n              if (resCS) {\n                if (isName(resCS)) {\n                  return this.parseToIR(resCS, xref, res, pdfFunctionFactory);\n                }\n                cs = resCS;\n                break;\n              }\n            }\n          }\n          throw new FormatError(`unrecognized colorspace ${cs.name}`);\n      }\n    }\n    if (Array.isArray(cs)) {\n      const mode = xref.fetchIfRef(cs[0]).name;\n      let numComps, params, alt, whitePoint, blackPoint, gamma;\n\n      switch (mode) {\n        case \"DeviceGray\":\n        case \"G\":\n          return \"DeviceGrayCS\";\n        case \"DeviceRGB\":\n        case \"RGB\":\n          return \"DeviceRgbCS\";\n        case \"DeviceCMYK\":\n        case \"CMYK\":\n          return \"DeviceCmykCS\";\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        case \"CalRGB\":\n          params = xref.fetchIfRef(cs[1]);\n          whitePoint = params.getArray(\"WhitePoint\");\n          blackPoint = params.getArray(\"BlackPoint\");\n          gamma = params.getArray(\"Gamma\");\n          const matrix = params.getArray(\"Matrix\");\n          return [\"CalRGBCS\", whitePoint, blackPoint, gamma, matrix];\n        case \"ICCBased\":\n          const stream = xref.fetchIfRef(cs[1]);\n          const dict = stream.dict;\n          numComps = dict.get(\"N\");\n          alt = dict.get(\"Alternate\");\n          if (alt) {\n            const altIR = this.parseToIR(alt, xref, res, pdfFunctionFactory);\n            // Parse the /Alternate CS to ensure that the number of components\n            // are correct, and also (indirectly) that it is not a PatternCS.\n            const altCS = this.fromIR(altIR, pdfFunctionFactory);\n            if (altCS.numComps === numComps) {\n              return altIR;\n            }\n            warn(\"ICCBased color space: Ignoring incorrect /Alternate entry.\");\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          break;\n        case \"Pattern\":\n          let basePatternCS = cs[1] || null;\n          if (basePatternCS) {\n            basePatternCS = this.parseToIR(\n              basePatternCS,\n              xref,\n              res,\n              pdfFunctionFactory\n            );\n          }\n          return [\"PatternCS\", basePatternCS];\n        case \"Indexed\":\n        case \"I\":\n          const baseIndexedCS = this.parseToIR(\n            cs[1],\n            xref,\n            res,\n            pdfFunctionFactory\n          );\n          const hiVal = xref.fetchIfRef(cs[2]) + 1;\n          let lookup = xref.fetchIfRef(cs[3]);\n          if (isStream(lookup)) {\n            lookup = lookup.getBytes();\n          }\n          return [\"IndexedCS\", baseIndexedCS, hiVal, lookup];\n        case \"Separation\":\n        case \"DeviceN\":\n          const name = xref.fetchIfRef(cs[1]);\n          numComps = Array.isArray(name) ? name.length : 1;\n          alt = this.parseToIR(cs[2], xref, res, pdfFunctionFactory);\n          const tintFn = pdfFunctionFactory.create(xref.fetchIfRef(cs[3]));\n          return [\"AlternateCS\", numComps, alt, tintFn];\n        case \"Lab\":\n          params = xref.fetchIfRef(cs[1]);\n          whitePoint = params.getArray(\"WhitePoint\");\n          blackPoint = params.getArray(\"BlackPoint\");\n          const range = params.getArray(\"Range\");\n          return [\"LabCS\", whitePoint, blackPoint, range];\n        default:\n          throw new FormatError(`unimplemented color space object \"${mode}\"`);\n      }\n    }\n    throw new FormatError(`unrecognized color space object: \"${cs}\"`);\n  }\n\n  /**\n   * Checks if a decode map matches the default decode map for a color space.\n   * This handles the general decode maps where there are two values per\n   * component, e.g. [0, 1, 0, 1, 0, 1] for a RGB color.\n   * This does not handle Lab, Indexed, or Pattern decode maps since they are\n   * slightly different.\n   * @param {Array} decode - Decode map (usually from an image).\n   * @param {number} numComps - Number of components the color space has.\n   */\n  static isDefaultDecode(decode, numComps) {\n    if (!Array.isArray(decode)) {\n      return true;\n    }\n    if (numComps * 2 !== decode.length) {\n      warn(\"The decode map is not the correct length\");\n      return true;\n    }\n    for (let i = 0, ii = decode.length; i < ii; i += 2) {\n      if (decode[i] !== 0 || decode[i + 1] !== 1) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  static get singletons() {\n    return shadow(this, \"singletons\", {\n      get gray() {\n        return shadow(this, \"gray\", new DeviceGrayCS());\n      },\n      get rgb() {\n        return shadow(this, \"rgb\", new DeviceRgbCS());\n      },\n      get cmyk() {\n        return shadow(this, \"cmyk\", new DeviceCmykCS());\n      },\n    });\n  }\n}\n\n/**\n * Alternate color space handles both Separation and DeviceN color spaces.  A\n * Separation color space is actually just a DeviceN with one color component.\n * Both color spaces use a tinting function to convert colors to a base color\n * space.\n *\n * The default color is `new Float32Array(new Array(numComps).fill(1))`.\n */\nclass AlternateCS extends ColorSpace {\n  constructor(numComps, base, tintFn) {\n    super(\"Alternate\", numComps);\n    this.base = base;\n    this.tintFn = tintFn;\n    this.tmpBuf = new Float32Array(base.numComps);\n  }\n\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'AlternateCS.getRgbItem: Unsupported \"dest\" type.'\n      );\n    }\n    const tmpBuf = this.tmpBuf;\n    this.tintFn(src, srcOffset, tmpBuf, 0);\n    this.base.getRgbItem(tmpBuf, 0, dest, destOffset);\n  }\n\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'AlternateCS.getRgbBuffer: Unsupported \"dest\" type.'\n      );\n    }\n    const tintFn = this.tintFn;\n    const base = this.base;\n    const scale = 1 / ((1 << bits) - 1);\n    const baseNumComps = base.numComps;\n    const usesZeroToOneRange = base.usesZeroToOneRange;\n    const isPassthrough =\n      (base.isPassthrough(8) || !usesZeroToOneRange) && alpha01 === 0;\n    let pos = isPassthrough ? destOffset : 0;\n    const baseBuf = isPassthrough\n      ? dest\n      : new Uint8ClampedArray(baseNumComps * count);\n    const numComps = this.numComps;\n\n    const scaled = new Float32Array(numComps);\n    const tinted = new Float32Array(baseNumComps);\n    let i, j;\n\n    for (i = 0; i < count; i++) {\n      for (j = 0; j < numComps; j++) {\n        scaled[j] = src[srcOffset++] * scale;\n      }\n      tintFn(scaled, 0, tinted, 0);\n      if (usesZeroToOneRange) {\n        for (j = 0; j < baseNumComps; j++) {\n          baseBuf[pos++] = tinted[j] * 255;\n        }\n      } else {\n        base.getRgbItem(tinted, 0, baseBuf, pos);\n        pos += baseNumComps;\n      }\n    }\n\n    if (!isPassthrough) {\n      base.getRgbBuffer(baseBuf, 0, count, dest, destOffset, 8, alpha01);\n    }\n  }\n\n  getOutputLength(inputLength, alpha01) {\n    return this.base.getOutputLength(\n      (inputLength * this.base.numComps) / this.numComps,\n      alpha01\n    );\n  }\n}\n\nclass PatternCS extends ColorSpace {\n  constructor(baseCS) {\n    super(\"Pattern\", null);\n    this.base = baseCS;\n  }\n\n  isDefaultDecode(decodeMap, bpc) {\n    unreachable(\"Should not call PatternCS.isDefaultDecode\");\n  }\n}\n\n/**\n * The default color is `new Uint8Array([0])`.\n */\nclass IndexedCS extends ColorSpace {\n  constructor(base, highVal, lookup) {\n    super(\"Indexed\", 1);\n    this.base = base;\n    this.highVal = highVal;\n\n    const baseNumComps = base.numComps;\n    const length = baseNumComps * highVal;\n\n    if (isStream(lookup)) {\n      this.lookup = new Uint8Array(length);\n      const bytes = lookup.getBytes(length);\n      this.lookup.set(bytes);\n    } else if (isString(lookup)) {\n      this.lookup = new Uint8Array(length);\n      for (let i = 0; i < length; ++i) {\n        this.lookup[i] = lookup.charCodeAt(i);\n      }\n    } else if (lookup instanceof Uint8Array) {\n      this.lookup = lookup;\n    } else {\n      throw new FormatError(`Unrecognized lookup table: ${lookup}`);\n    }\n  }\n\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'IndexedCS.getRgbItem: Unsupported \"dest\" type.'\n      );\n    }\n    const numComps = this.base.numComps;\n    const start = src[srcOffset] * numComps;\n    this.base.getRgbBuffer(this.lookup, start, 1, dest, destOffset, 8, 0);\n  }\n\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'IndexedCS.getRgbBuffer: Unsupported \"dest\" type.'\n      );\n    }\n    const base = this.base;\n    const numComps = base.numComps;\n    const outputDelta = base.getOutputLength(numComps, alpha01);\n    const lookup = this.lookup;\n\n    for (let i = 0; i < count; ++i) {\n      const lookupPos = src[srcOffset++] * numComps;\n      base.getRgbBuffer(lookup, lookupPos, 1, dest, destOffset, 8, alpha01);\n      destOffset += outputDelta;\n    }\n  }\n\n  getOutputLength(inputLength, alpha01) {\n    return this.base.getOutputLength(inputLength * this.base.numComps, alpha01);\n  }\n\n  isDefaultDecode(decodeMap, bpc) {\n    if (!Array.isArray(decodeMap)) {\n      return true;\n    }\n    if (decodeMap.length !== 2) {\n      warn(\"Decode map length is not correct\");\n      return true;\n    }\n    if (!Number.isInteger(bpc) || bpc < 1) {\n      warn(\"Bits per component is not correct\");\n      return true;\n    }\n    return decodeMap[0] === 0 && decodeMap[1] === (1 << bpc) - 1;\n  }\n}\n\n/**\n * The default color is `new Float32Array([0])`.\n */\nclass DeviceGrayCS extends ColorSpace {\n  constructor() {\n    super(\"DeviceGray\", 1);\n  }\n\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'DeviceGrayCS.getRgbItem: Unsupported \"dest\" type.'\n      );\n    }\n    const c = src[srcOffset] * 255;\n    dest[destOffset] = dest[destOffset + 1] = dest[destOffset + 2] = c;\n  }\n\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'DeviceGrayCS.getRgbBuffer: Unsupported \"dest\" type.'\n      );\n    }\n    const scale = 255 / ((1 << bits) - 1);\n    let j = srcOffset,\n      q = destOffset;\n    for (let i = 0; i < count; ++i) {\n      const c = scale * src[j++];\n      dest[q++] = c;\n      dest[q++] = c;\n      dest[q++] = c;\n      q += alpha01;\n    }\n  }\n\n  getOutputLength(inputLength, alpha01) {\n    return inputLength * (3 + alpha01);\n  }\n}\n\n/**\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nclass DeviceRgbCS extends ColorSpace {\n  constructor() {\n    super(\"DeviceRGB\", 3);\n  }\n\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'DeviceRgbCS.getRgbItem: Unsupported \"dest\" type.'\n      );\n    }\n    dest[destOffset] = src[srcOffset] * 255;\n    dest[destOffset + 1] = src[srcOffset + 1] * 255;\n    dest[destOffset + 2] = src[srcOffset + 2] * 255;\n  }\n\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'DeviceRgbCS.getRgbBuffer: Unsupported \"dest\" type.'\n      );\n    }\n    if (bits === 8 && alpha01 === 0) {\n      dest.set(src.subarray(srcOffset, srcOffset + count * 3), destOffset);\n      return;\n    }\n    const scale = 255 / ((1 << bits) - 1);\n    let j = srcOffset,\n      q = destOffset;\n    for (let i = 0; i < count; ++i) {\n      dest[q++] = scale * src[j++];\n      dest[q++] = scale * src[j++];\n      dest[q++] = scale * src[j++];\n      q += alpha01;\n    }\n  }\n\n  getOutputLength(inputLength, alpha01) {\n    return ((inputLength * (3 + alpha01)) / 3) | 0;\n  }\n\n  isPassthrough(bits) {\n    return bits === 8;\n  }\n}\n\n/**\n * The default color is `new Float32Array([0, 0, 0, 1])`.\n */\nconst DeviceCmykCS = (function DeviceCmykCSClosure() {\n  // The coefficients below was found using numerical analysis: the method of\n  // steepest descent for the sum((f_i - color_value_i)^2) for r/g/b colors,\n  // where color_value is the tabular value from the table of sampled RGB colors\n  // from CMYK US Web Coated (SWOP) colorspace, and f_i is the corresponding\n  // CMYK color conversion using the estimation below:\n  //   f(A, B,.. N) = Acc+Bcm+Ccy+Dck+c+Fmm+Gmy+Hmk+Im+Jyy+Kyk+Ly+Mkk+Nk+255\n  function convertToRgb(src, srcOffset, srcScale, dest, destOffset) {\n    const c = src[srcOffset] * srcScale;\n    const m = src[srcOffset + 1] * srcScale;\n    const y = src[srcOffset + 2] * srcScale;\n    const k = src[srcOffset + 3] * srcScale;\n\n    dest[destOffset] =\n      255 +\n      c *\n        (-4.387332384609988 * c +\n          54.48615194189176 * m +\n          18.82290502165302 * y +\n          212.25662451639585 * k +\n          -285.2331026137004) +\n      m *\n        (1.7149763477362134 * m -\n          5.6096736904047315 * y +\n          -17.873870861415444 * k -\n          5.497006427196366) +\n      y *\n        (-2.5217340131683033 * y - 21.248923337353073 * k + 17.5119270841813) +\n      k * (-21.86122147463605 * k - 189.48180835922747);\n\n    dest[destOffset + 1] =\n      255 +\n      c *\n        (8.841041422036149 * c +\n          60.118027045597366 * m +\n          6.871425592049007 * y +\n          31.159100130055922 * k +\n          -79.2970844816548) +\n      m *\n        (-15.310361306967817 * m +\n          17.575251261109482 * y +\n          131.35250912493976 * k -\n          190.9453302588951) +\n      y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) +\n      k * (-20.737325471181034 * k - 187.80453709719578);\n\n    dest[destOffset + 2] =\n      255 +\n      c *\n        (0.8842522430003296 * c +\n          8.078677503112928 * m +\n          30.89978309703729 * y -\n          0.23883238689178934 * k +\n          -14.183576799673286) +\n      m *\n        (10.49593273432072 * m +\n          63.02378494754052 * y +\n          50.606957656360734 * k -\n          112.23884253719248) +\n      y *\n        (0.03296041114873217 * y +\n          115.60384449646641 * k +\n          -193.58209356861505) +\n      k * (-22.33816807309886 * k - 180.12613974708367);\n  }\n\n  // eslint-disable-next-line no-shadow\n  class DeviceCmykCS extends ColorSpace {\n    constructor() {\n      super(\"DeviceCMYK\", 4);\n    }\n\n    getRgbItem(src, srcOffset, dest, destOffset) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'DeviceCmykCS.getRgbItem: Unsupported \"dest\" type.'\n        );\n      }\n      convertToRgb(src, srcOffset, 1, dest, destOffset);\n    }\n\n    getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'DeviceCmykCS.getRgbBuffer: Unsupported \"dest\" type.'\n        );\n      }\n      const scale = 1 / ((1 << bits) - 1);\n      for (let i = 0; i < count; i++) {\n        convertToRgb(src, srcOffset, scale, dest, destOffset);\n        srcOffset += 4;\n        destOffset += 3 + alpha01;\n      }\n    }\n\n    getOutputLength(inputLength, alpha01) {\n      return ((inputLength / 4) * (3 + alpha01)) | 0;\n    }\n  }\n  return DeviceCmykCS;\n})();\n\n/**\n * CalGrayCS: Based on \"PDF Reference, Sixth Ed\", p.245\n *\n * The default color is `new Float32Array([0])`.\n */\nconst CalGrayCS = (function CalGrayCSClosure() {\n  function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {\n    // A represents a gray component of a calibrated gray space.\n    // A <---> AG in the spec\n    const A = src[srcOffset] * scale;\n    const AG = A ** cs.G;\n\n    // Computes L as per spec. ( = cs.YW * AG )\n    // Except if other than default BlackPoint values are used.\n    const L = cs.YW * AG;\n    // http://www.poynton.com/notes/colour_and_gamma/ColorFAQ.html, Ch 4.\n    // Convert values to rgb range [0, 255].\n    const val = Math.max(295.8 * L ** 0.333333333333333333 - 40.8, 0);\n    dest[destOffset] = val;\n    dest[destOffset + 1] = val;\n    dest[destOffset + 2] = val;\n  }\n\n  // eslint-disable-next-line no-shadow\n  class CalGrayCS extends ColorSpace {\n    constructor(whitePoint, blackPoint, gamma) {\n      super(\"CalGray\", 1);\n\n      if (!whitePoint) {\n        throw new FormatError(\n          \"WhitePoint missing - required for color space CalGray\"\n        );\n      }\n      blackPoint = blackPoint || [0, 0, 0];\n      gamma = gamma || 1;\n\n      // Translate arguments to spec variables.\n      this.XW = whitePoint[0];\n      this.YW = whitePoint[1];\n      this.ZW = whitePoint[2];\n\n      this.XB = blackPoint[0];\n      this.YB = blackPoint[1];\n      this.ZB = blackPoint[2];\n\n      this.G = gamma;\n\n      // Validate variables as per spec.\n      if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n        throw new FormatError(\n          `Invalid WhitePoint components for ${this.name}` +\n            \", no fallback available\"\n        );\n      }\n\n      if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {\n        info(`Invalid BlackPoint for ${this.name}, falling back to default.`);\n        this.XB = this.YB = this.ZB = 0;\n      }\n\n      if (this.XB !== 0 || this.YB !== 0 || this.ZB !== 0) {\n        warn(\n          `${this.name}, BlackPoint: XB: ${this.XB}, YB: ${this.YB}, ` +\n            `ZB: ${this.ZB}, only default values are supported.`\n        );\n      }\n\n      if (this.G < 1) {\n        info(\n          `Invalid Gamma: ${this.G} for ${this.name}, ` +\n            \"falling back to default.\"\n        );\n        this.G = 1;\n      }\n    }\n\n    getRgbItem(src, srcOffset, dest, destOffset) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'CalGrayCS.getRgbItem: Unsupported \"dest\" type.'\n        );\n      }\n      convertToRgb(this, src, srcOffset, dest, destOffset, 1);\n    }\n\n    getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'CalGrayCS.getRgbBuffer: Unsupported \"dest\" type.'\n        );\n      }\n      const scale = 1 / ((1 << bits) - 1);\n\n      for (let i = 0; i < count; ++i) {\n        convertToRgb(this, src, srcOffset, dest, destOffset, scale);\n        srcOffset += 1;\n        destOffset += 3 + alpha01;\n      }\n    }\n\n    getOutputLength(inputLength, alpha01) {\n      return inputLength * (3 + alpha01);\n    }\n  }\n  return CalGrayCS;\n})();\n\n/**\n * CalRGBCS: Based on \"PDF Reference, Sixth Ed\", p.247\n *\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nconst CalRGBCS = (function CalRGBCSClosure() {\n  // See http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html for these\n  // matrices.\n  // prettier-ignore\n  const BRADFORD_SCALE_MATRIX = new Float32Array([\n    0.8951, 0.2664, -0.1614,\n    -0.7502, 1.7135, 0.0367,\n    0.0389, -0.0685, 1.0296]);\n\n  // prettier-ignore\n  const BRADFORD_SCALE_INVERSE_MATRIX = new Float32Array([\n    0.9869929, -0.1470543, 0.1599627,\n    0.4323053, 0.5183603, 0.0492912,\n    -0.0085287, 0.0400428, 0.9684867]);\n\n  // See http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html.\n  // prettier-ignore\n  const SRGB_D65_XYZ_TO_RGB_MATRIX = new Float32Array([\n    3.2404542, -1.5371385, -0.4985314,\n    -0.9692660, 1.8760108, 0.0415560,\n    0.0556434, -0.2040259, 1.0572252]);\n\n  const FLAT_WHITEPOINT_MATRIX = new Float32Array([1, 1, 1]);\n\n  const tempNormalizeMatrix = new Float32Array(3);\n  const tempConvertMatrix1 = new Float32Array(3);\n  const tempConvertMatrix2 = new Float32Array(3);\n\n  const DECODE_L_CONSTANT = ((8 + 16) / 116) ** 3 / 8.0;\n\n  function matrixProduct(a, b, result) {\n    result[0] = a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n    result[1] = a[3] * b[0] + a[4] * b[1] + a[5] * b[2];\n    result[2] = a[6] * b[0] + a[7] * b[1] + a[8] * b[2];\n  }\n\n  function convertToFlat(sourceWhitePoint, LMS, result) {\n    result[0] = (LMS[0] * 1) / sourceWhitePoint[0];\n    result[1] = (LMS[1] * 1) / sourceWhitePoint[1];\n    result[2] = (LMS[2] * 1) / sourceWhitePoint[2];\n  }\n\n  function convertToD65(sourceWhitePoint, LMS, result) {\n    const D65X = 0.95047;\n    const D65Y = 1;\n    const D65Z = 1.08883;\n\n    result[0] = (LMS[0] * D65X) / sourceWhitePoint[0];\n    result[1] = (LMS[1] * D65Y) / sourceWhitePoint[1];\n    result[2] = (LMS[2] * D65Z) / sourceWhitePoint[2];\n  }\n\n  function sRGBTransferFunction(color) {\n    // See http://en.wikipedia.org/wiki/SRGB.\n    if (color <= 0.0031308) {\n      return adjustToRange(0, 1, 12.92 * color);\n    }\n    return adjustToRange(0, 1, (1 + 0.055) * color ** (1 / 2.4) - 0.055);\n  }\n\n  function adjustToRange(min, max, value) {\n    return Math.max(min, Math.min(max, value));\n  }\n\n  function decodeL(L) {\n    if (L < 0) {\n      return -decodeL(-L);\n    }\n    if (L > 8.0) {\n      return ((L + 16) / 116) ** 3;\n    }\n    return L * DECODE_L_CONSTANT;\n  }\n\n  function compensateBlackPoint(sourceBlackPoint, XYZ_Flat, result) {\n    // In case the blackPoint is already the default blackPoint then there is\n    // no need to do compensation.\n    if (\n      sourceBlackPoint[0] === 0 &&\n      sourceBlackPoint[1] === 0 &&\n      sourceBlackPoint[2] === 0\n    ) {\n      result[0] = XYZ_Flat[0];\n      result[1] = XYZ_Flat[1];\n      result[2] = XYZ_Flat[2];\n      return;\n    }\n\n    // For the blackPoint calculation details, please see\n    // http://www.adobe.com/content/dam/Adobe/en/devnet/photoshop/sdk/\n    // AdobeBPC.pdf.\n    // The destination blackPoint is the default blackPoint [0, 0, 0].\n    const zeroDecodeL = decodeL(0);\n\n    const X_DST = zeroDecodeL;\n    const X_SRC = decodeL(sourceBlackPoint[0]);\n\n    const Y_DST = zeroDecodeL;\n    const Y_SRC = decodeL(sourceBlackPoint[1]);\n\n    const Z_DST = zeroDecodeL;\n    const Z_SRC = decodeL(sourceBlackPoint[2]);\n\n    const X_Scale = (1 - X_DST) / (1 - X_SRC);\n    const X_Offset = 1 - X_Scale;\n\n    const Y_Scale = (1 - Y_DST) / (1 - Y_SRC);\n    const Y_Offset = 1 - Y_Scale;\n\n    const Z_Scale = (1 - Z_DST) / (1 - Z_SRC);\n    const Z_Offset = 1 - Z_Scale;\n\n    result[0] = XYZ_Flat[0] * X_Scale + X_Offset;\n    result[1] = XYZ_Flat[1] * Y_Scale + Y_Offset;\n    result[2] = XYZ_Flat[2] * Z_Scale + Z_Offset;\n  }\n\n  function normalizeWhitePointToFlat(sourceWhitePoint, XYZ_In, result) {\n    // In case the whitePoint is already flat then there is no need to do\n    // normalization.\n    if (sourceWhitePoint[0] === 1 && sourceWhitePoint[2] === 1) {\n      result[0] = XYZ_In[0];\n      result[1] = XYZ_In[1];\n      result[2] = XYZ_In[2];\n      return;\n    }\n\n    const LMS = result;\n    matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n\n    const LMS_Flat = tempNormalizeMatrix;\n    convertToFlat(sourceWhitePoint, LMS, LMS_Flat);\n\n    matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_Flat, result);\n  }\n\n  function normalizeWhitePointToD65(sourceWhitePoint, XYZ_In, result) {\n    const LMS = result;\n    matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n\n    const LMS_D65 = tempNormalizeMatrix;\n    convertToD65(sourceWhitePoint, LMS, LMS_D65);\n\n    matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_D65, result);\n  }\n\n  function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {\n    // A, B and C represent a red, green and blue components of a calibrated\n    // rgb space.\n    const A = adjustToRange(0, 1, src[srcOffset] * scale);\n    const B = adjustToRange(0, 1, src[srcOffset + 1] * scale);\n    const C = adjustToRange(0, 1, src[srcOffset + 2] * scale);\n\n    // A <---> AGR in the spec\n    // B <---> BGG in the spec\n    // C <---> CGB in the spec\n    const AGR = A ** cs.GR;\n    const BGG = B ** cs.GG;\n    const CGB = C ** cs.GB;\n\n    // Computes intermediate variables L, M, N as per spec.\n    // To decode X, Y, Z values map L, M, N directly to them.\n    const X = cs.MXA * AGR + cs.MXB * BGG + cs.MXC * CGB;\n    const Y = cs.MYA * AGR + cs.MYB * BGG + cs.MYC * CGB;\n    const Z = cs.MZA * AGR + cs.MZB * BGG + cs.MZC * CGB;\n\n    // The following calculations are based on this document:\n    // http://www.adobe.com/content/dam/Adobe/en/devnet/photoshop/sdk/\n    // AdobeBPC.pdf.\n    const XYZ = tempConvertMatrix1;\n    XYZ[0] = X;\n    XYZ[1] = Y;\n    XYZ[2] = Z;\n    const XYZ_Flat = tempConvertMatrix2;\n\n    normalizeWhitePointToFlat(cs.whitePoint, XYZ, XYZ_Flat);\n\n    const XYZ_Black = tempConvertMatrix1;\n    compensateBlackPoint(cs.blackPoint, XYZ_Flat, XYZ_Black);\n\n    const XYZ_D65 = tempConvertMatrix2;\n    normalizeWhitePointToD65(FLAT_WHITEPOINT_MATRIX, XYZ_Black, XYZ_D65);\n\n    const SRGB = tempConvertMatrix1;\n    matrixProduct(SRGB_D65_XYZ_TO_RGB_MATRIX, XYZ_D65, SRGB);\n\n    // Convert the values to rgb range [0, 255].\n    dest[destOffset] = sRGBTransferFunction(SRGB[0]) * 255;\n    dest[destOffset + 1] = sRGBTransferFunction(SRGB[1]) * 255;\n    dest[destOffset + 2] = sRGBTransferFunction(SRGB[2]) * 255;\n  }\n\n  // eslint-disable-next-line no-shadow\n  class CalRGBCS extends ColorSpace {\n    constructor(whitePoint, blackPoint, gamma, matrix) {\n      super(\"CalRGB\", 3);\n\n      if (!whitePoint) {\n        throw new FormatError(\n          \"WhitePoint missing - required for color space CalRGB\"\n        );\n      }\n      blackPoint = blackPoint || new Float32Array(3);\n      gamma = gamma || new Float32Array([1, 1, 1]);\n      matrix = matrix || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);\n\n      // Translate arguments to spec variables.\n      const XW = whitePoint[0];\n      const YW = whitePoint[1];\n      const ZW = whitePoint[2];\n      this.whitePoint = whitePoint;\n\n      const XB = blackPoint[0];\n      const YB = blackPoint[1];\n      const ZB = blackPoint[2];\n      this.blackPoint = blackPoint;\n\n      this.GR = gamma[0];\n      this.GG = gamma[1];\n      this.GB = gamma[2];\n\n      this.MXA = matrix[0];\n      this.MYA = matrix[1];\n      this.MZA = matrix[2];\n      this.MXB = matrix[3];\n      this.MYB = matrix[4];\n      this.MZB = matrix[5];\n      this.MXC = matrix[6];\n      this.MYC = matrix[7];\n      this.MZC = matrix[8];\n\n      // Validate variables as per spec.\n      if (XW < 0 || ZW < 0 || YW !== 1) {\n        throw new FormatError(\n          `Invalid WhitePoint components for ${this.name}` +\n            \", no fallback available\"\n        );\n      }\n\n      if (XB < 0 || YB < 0 || ZB < 0) {\n        info(\n          `Invalid BlackPoint for ${this.name} [${XB}, ${YB}, ${ZB}], ` +\n            \"falling back to default.\"\n        );\n        this.blackPoint = new Float32Array(3);\n      }\n\n      if (this.GR < 0 || this.GG < 0 || this.GB < 0) {\n        info(\n          `Invalid Gamma [${this.GR}, ${this.GG}, ${this.GB}] for ` +\n            `${this.name}, falling back to default.`\n        );\n        this.GR = this.GG = this.GB = 1;\n      }\n    }\n\n    getRgbItem(src, srcOffset, dest, destOffset) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'CalRGBCS.getRgbItem: Unsupported \"dest\" type.'\n        );\n      }\n      convertToRgb(this, src, srcOffset, dest, destOffset, 1);\n    }\n\n    getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'CalRGBCS.getRgbBuffer: Unsupported \"dest\" type.'\n        );\n      }\n      const scale = 1 / ((1 << bits) - 1);\n\n      for (let i = 0; i < count; ++i) {\n        convertToRgb(this, src, srcOffset, dest, destOffset, scale);\n        srcOffset += 3;\n        destOffset += 3 + alpha01;\n      }\n    }\n\n    getOutputLength(inputLength, alpha01) {\n      return ((inputLength * (3 + alpha01)) / 3) | 0;\n    }\n  }\n  return CalRGBCS;\n})();\n\n/**\n * LabCS: Based on \"PDF Reference, Sixth Ed\", p.250\n *\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nconst LabCS = (function LabCSClosure() {\n  // Function g(x) from spec\n  function fn_g(x) {\n    let result;\n    if (x >= 6 / 29) {\n      result = x * x * x;\n    } else {\n      result = (108 / 841) * (x - 4 / 29);\n    }\n    return result;\n  }\n\n  function decode(value, high1, low2, high2) {\n    return low2 + (value * (high2 - low2)) / high1;\n  }\n\n  // If decoding is needed maxVal should be 2^bits per component - 1.\n  function convertToRgb(cs, src, srcOffset, maxVal, dest, destOffset) {\n    // XXX: Lab input is in the range of [0, 100], [amin, amax], [bmin, bmax]\n    // not the usual [0, 1]. If a command like setFillColor is used the src\n    // values will already be within the correct range. However, if we are\n    // converting an image we have to map the values to the correct range given\n    // above.\n    // Ls,as,bs <---> L*,a*,b* in the spec\n    let Ls = src[srcOffset];\n    let as = src[srcOffset + 1];\n    let bs = src[srcOffset + 2];\n    if (maxVal !== false) {\n      Ls = decode(Ls, maxVal, 0, 100);\n      as = decode(as, maxVal, cs.amin, cs.amax);\n      bs = decode(bs, maxVal, cs.bmin, cs.bmax);\n    }\n\n    // Adjust limits of 'as' and 'bs'\n    if (as > cs.amax) {\n      as = cs.amax;\n    } else if (as < cs.amin) {\n      as = cs.amin;\n    }\n    if (bs > cs.bmax) {\n      bs = cs.bmax;\n    } else if (bs < cs.bmin) {\n      bs = cs.bmin;\n    }\n\n    // Computes intermediate variables X,Y,Z as per spec\n    const M = (Ls + 16) / 116;\n    const L = M + as / 500;\n    const N = M - bs / 200;\n\n    const X = cs.XW * fn_g(L);\n    const Y = cs.YW * fn_g(M);\n    const Z = cs.ZW * fn_g(N);\n\n    let r, g, b;\n    // Using different conversions for D50 and D65 white points,\n    // per http://www.color.org/srgb.pdf\n    if (cs.ZW < 1) {\n      // Assuming D50 (X=0.9642, Y=1.00, Z=0.8249)\n      r = X * 3.1339 + Y * -1.617 + Z * -0.4906;\n      g = X * -0.9785 + Y * 1.916 + Z * 0.0333;\n      b = X * 0.072 + Y * -0.229 + Z * 1.4057;\n    } else {\n      // Assuming D65 (X=0.9505, Y=1.00, Z=1.0888)\n      r = X * 3.2406 + Y * -1.5372 + Z * -0.4986;\n      g = X * -0.9689 + Y * 1.8758 + Z * 0.0415;\n      b = X * 0.0557 + Y * -0.204 + Z * 1.057;\n    }\n    // Convert the color values to the [0,255] range (clamping is automatic).\n    dest[destOffset] = Math.sqrt(r) * 255;\n    dest[destOffset + 1] = Math.sqrt(g) * 255;\n    dest[destOffset + 2] = Math.sqrt(b) * 255;\n  }\n\n  // eslint-disable-next-line no-shadow\n  class LabCS extends ColorSpace {\n    constructor(whitePoint, blackPoint, range) {\n      super(\"Lab\", 3);\n\n      if (!whitePoint) {\n        throw new FormatError(\n          \"WhitePoint missing - required for color space Lab\"\n        );\n      }\n      blackPoint = blackPoint || [0, 0, 0];\n      range = range || [-100, 100, -100, 100];\n\n      // Translate args to spec variables\n      this.XW = whitePoint[0];\n      this.YW = whitePoint[1];\n      this.ZW = whitePoint[2];\n      this.amin = range[0];\n      this.amax = range[1];\n      this.bmin = range[2];\n      this.bmax = range[3];\n\n      // These are here just for completeness - the spec doesn't offer any\n      // formulas that use BlackPoint in Lab\n      this.XB = blackPoint[0];\n      this.YB = blackPoint[1];\n      this.ZB = blackPoint[2];\n\n      // Validate vars as per spec\n      if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n        throw new FormatError(\n          \"Invalid WhitePoint components, no fallback available\"\n        );\n      }\n\n      if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {\n        info(\"Invalid BlackPoint, falling back to default\");\n        this.XB = this.YB = this.ZB = 0;\n      }\n\n      if (this.amin > this.amax || this.bmin > this.bmax) {\n        info(\"Invalid Range, falling back to defaults\");\n        this.amin = -100;\n        this.amax = 100;\n        this.bmin = -100;\n        this.bmax = 100;\n      }\n    }\n\n    getRgbItem(src, srcOffset, dest, destOffset) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'LabCS.getRgbItem: Unsupported \"dest\" type.'\n        );\n      }\n      convertToRgb(this, src, srcOffset, false, dest, destOffset);\n    }\n\n    getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'LabCS.getRgbBuffer: Unsupported \"dest\" type.'\n        );\n      }\n      const maxVal = (1 << bits) - 1;\n      for (let i = 0; i < count; i++) {\n        convertToRgb(this, src, srcOffset, maxVal, dest, destOffset);\n        srcOffset += 3;\n        destOffset += 3 + alpha01;\n      }\n    }\n\n    getOutputLength(inputLength, alpha01) {\n      return ((inputLength * (3 + alpha01)) / 3) | 0;\n    }\n\n    isDefaultDecode(decodeMap, bpc) {\n      // XXX: Decoding is handled with the lab conversion because of the strange\n      // ranges that are used.\n      return true;\n    }\n\n    get usesZeroToOneRange() {\n      return shadow(this, \"usesZeroToOneRange\", false);\n    }\n  }\n  return LabCS;\n})();\n\nexport { ColorSpace };\n","/* Copyright 2019 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\nimport { assert, info, shadow } from \"../shared/util.js\";\nimport { RefSetCache } from \"./primitives.js\";\n\nclass LocalImageCache {\n  constructor() {\n    this._nameRefMap = new Map();\n    this._imageMap = new Map();\n    this._imageCache = new RefSetCache();\n  }\n\n  getByName(name) {\n    const ref = this._nameRefMap.get(name);\n    if (ref) {\n      return this.getByRef(ref);\n    }\n    return this._imageMap.get(name) || null;\n  }\n\n  getByRef(ref) {\n    return this._imageCache.get(ref) || null;\n  }\n\n  set(name, ref = null, data) {\n    if (!name) {\n      throw new Error('LocalImageCache.set - expected \"name\" argument.');\n    }\n    if (ref) {\n      if (this._imageCache.has(ref)) {\n        return;\n      }\n      this._nameRefMap.set(name, ref);\n      this._imageCache.put(ref, data);\n      return;\n    }\n    // name\n    if (this._imageMap.has(name)) {\n      return;\n    }\n    this._imageMap.set(name, data);\n  }\n}\n\nclass GlobalImageCache {\n  static get NUM_PAGES_THRESHOLD() {\n    return shadow(this, \"NUM_PAGES_THRESHOLD\", 2);\n  }\n\n  static get MAX_IMAGES_TO_CACHE() {\n    return shadow(this, \"MAX_IMAGES_TO_CACHE\", 10);\n  }\n\n  constructor() {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        GlobalImageCache.NUM_PAGES_THRESHOLD > 1,\n        \"GlobalImageCache - invalid NUM_PAGES_THRESHOLD constant.\"\n      );\n    }\n    this._refCache = new RefSetCache();\n    this._imageCache = new RefSetCache();\n  }\n\n  shouldCache(ref, pageIndex) {\n    const pageIndexSet = this._refCache.get(ref);\n    const numPages = pageIndexSet\n      ? pageIndexSet.size + (pageIndexSet.has(pageIndex) ? 0 : 1)\n      : 1;\n\n    if (numPages < GlobalImageCache.NUM_PAGES_THRESHOLD) {\n      return false;\n    }\n    if (\n      !this._imageCache.has(ref) &&\n      this._imageCache.size >= GlobalImageCache.MAX_IMAGES_TO_CACHE\n    ) {\n      return false;\n    }\n    return true;\n  }\n\n  addPageIndex(ref, pageIndex) {\n    let pageIndexSet = this._refCache.get(ref);\n    if (!pageIndexSet) {\n      pageIndexSet = new Set();\n      this._refCache.put(ref, pageIndexSet);\n    }\n    pageIndexSet.add(pageIndex);\n  }\n\n  getData(ref, pageIndex) {\n    if (!this._refCache.has(ref)) {\n      return null;\n    }\n    const pageIndexSet = this._refCache.get(ref);\n\n    if (pageIndexSet.size < GlobalImageCache.NUM_PAGES_THRESHOLD) {\n      return null;\n    }\n    if (!this._imageCache.has(ref)) {\n      return null;\n    }\n    // Ensure that we keep track of all pages containing the image reference.\n    pageIndexSet.add(pageIndex);\n\n    return this._imageCache.get(ref);\n  }\n\n  setData(ref, data) {\n    if (!this._refCache.has(ref)) {\n      throw new Error(\n        'GlobalImageCache.setData - expected \"addPageIndex\" to have been called.'\n      );\n    }\n    if (this._imageCache.has(ref)) {\n      return;\n    }\n    if (this._imageCache.size >= GlobalImageCache.MAX_IMAGES_TO_CACHE) {\n      info(\n        \"GlobalImageCache.setData - ignoring image above MAX_IMAGES_TO_CACHE.\"\n      );\n      return;\n    }\n    this._imageCache.put(ref, data);\n  }\n\n  clear(onlyData = false) {\n    if (!onlyData) {\n      this._refCache.clear();\n    }\n    this._imageCache.clear();\n  }\n}\n\nexport { LocalImageCache, GlobalImageCache };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\nimport {\n  AnnotationBorderStyleType,\n  AnnotationFieldFlag,\n  AnnotationFlag,\n  AnnotationReplyType,\n  AnnotationType,\n  assert,\n  isString,\n  OPS,\n  stringToBytes,\n  stringToPDFString,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport { Catalog, FileSpec, ObjectLoader } from \"./obj.js\";\nimport { Dict, isDict, isName, isRef, isStream } from \"./primitives.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { getInheritableProperty } from \"./core_utils.js\";\nimport { OperatorList } from \"./operator_list.js\";\nimport { Stream } from \"./stream.js\";\n\nclass AnnotationFactory {\n  /**\n   * Create an `Annotation` object of the correct type for the given reference\n   * to an annotation dictionary. This yields a promise that is resolved when\n   * the `Annotation` object is constructed.\n   *\n   * @param {XRef} xref\n   * @param {Object} ref\n   * @param {PDFManager} pdfManager\n   * @param {Object} idFactory\n   * @returns {Promise} A promise that is resolved with an {Annotation}\n   *   instance.\n   */\n  static create(xref, ref, pdfManager, idFactory) {\n    return pdfManager.ensure(this, \"_create\", [\n      xref,\n      ref,\n      pdfManager,\n      idFactory,\n    ]);\n  }\n\n  /**\n   * @private\n   */\n  static _create(xref, ref, pdfManager, idFactory) {\n    const dict = xref.fetchIfRef(ref);\n    if (!isDict(dict)) {\n      return undefined;\n    }\n    const id = isRef(ref) ? ref.toString() : `annot_${idFactory.createObjId()}`;\n\n    // Determine the annotation's subtype.\n    let subtype = dict.get(\"Subtype\");\n    subtype = isName(subtype) ? subtype.name : null;\n\n    // Return the right annotation object based on the subtype and field type.\n    const parameters = {\n      xref,\n      dict,\n      subtype,\n      id,\n      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        let fieldType = getInheritableProperty({ dict, key: \"FT\" });\n        fieldType = isName(fieldType) ? fieldType.name : null;\n\n        switch (fieldType) {\n          case \"Tx\":\n            return new TextWidgetAnnotation(parameters);\n          case \"Btn\":\n            return new ButtonWidgetAnnotation(parameters);\n          case \"Ch\":\n            return new ChoiceWidgetAnnotation(parameters);\n        }\n        warn(\n          'Unimplemented widget field type \"' +\n            fieldType +\n            '\", ' +\n            \"falling back to base field type.\"\n        );\n        return new WidgetAnnotation(parameters);\n\n      case \"Popup\":\n        return new PopupAnnotation(parameters);\n\n      case \"FreeText\":\n        return new FreeTextAnnotation(parameters);\n\n      case \"Line\":\n        return new LineAnnotation(parameters);\n\n      case \"Square\":\n        return new SquareAnnotation(parameters);\n\n      case \"Circle\":\n        return new CircleAnnotation(parameters);\n\n      case \"PolyLine\":\n        return new PolylineAnnotation(parameters);\n\n      case \"Polygon\":\n        return new PolygonAnnotation(parameters);\n\n      case \"Caret\":\n        return new CaretAnnotation(parameters);\n\n      case \"Ink\":\n        return new InkAnnotation(parameters);\n\n      case \"Highlight\":\n        return new HighlightAnnotation(parameters);\n\n      case \"Underline\":\n        return new UnderlineAnnotation(parameters);\n\n      case \"Squiggly\":\n        return new SquigglyAnnotation(parameters);\n\n      case \"StrikeOut\":\n        return new StrikeOutAnnotation(parameters);\n\n      case \"Stamp\":\n        return new StampAnnotation(parameters);\n\n      case \"FileAttachment\":\n        return new FileAttachmentAnnotation(parameters);\n\n      default:\n        if (!subtype) {\n          warn(\"Annotation is missing the required /Subtype.\");\n        } else {\n          warn(\n            'Unimplemented annotation type \"' +\n              subtype +\n              '\", ' +\n              \"falling back to base annotation.\"\n          );\n        }\n        return new Annotation(parameters);\n    }\n  }\n}\n\nfunction getQuadPoints(dict, rect) {\n  if (!dict.has(\"QuadPoints\")) {\n    return null;\n  }\n\n  // The region is described as a number of quadrilaterals.\n  // Each quadrilateral must consist of eight coordinates.\n  const quadPoints = dict.getArray(\"QuadPoints\");\n  if (!Array.isArray(quadPoints) || quadPoints.length % 8 > 0) {\n    return null;\n  }\n\n  const quadPointsLists = [];\n  for (let i = 0, ii = quadPoints.length / 8; i < ii; i++) {\n    // Each series of eight numbers represents the coordinates for one\n    // quadrilateral in the order [x1, y1, x2, y2, x3, y3, x4, y4].\n    // Convert this to an array of objects with x and y coordinates.\n    quadPointsLists.push([]);\n    for (let j = i * 8, jj = i * 8 + 8; j < jj; j += 2) {\n      const x = quadPoints[j];\n      const y = quadPoints[j + 1];\n\n      // The quadpoints should be ignored if any coordinate in the array\n      // lies outside the region specified by the rectangle.\n      if (x < rect[0] || x > rect[2] || y < rect[1] || y > rect[3]) {\n        return null;\n      }\n      quadPointsLists[i].push({ x, y });\n    }\n  }\n  return quadPointsLists;\n}\n\nfunction getTransformMatrix(rect, bbox, matrix) {\n  // 12.5.5: Algorithm: Appearance streams\n  const [minX, minY, maxX, maxY] = Util.getAxialAlignedBoundingBox(\n    bbox,\n    matrix\n  );\n  if (minX === maxX || minY === maxY) {\n    // From real-life file, bbox was [0, 0, 0, 0]. In this case,\n    // just apply the transform for rect\n    return [1, 0, 0, 1, rect[0], rect[1]];\n  }\n\n  const xRatio = (rect[2] - rect[0]) / (maxX - minX);\n  const yRatio = (rect[3] - rect[1]) / (maxY - minY);\n  return [\n    xRatio,\n    0,\n    0,\n    yRatio,\n    rect[0] - minX * xRatio,\n    rect[1] - minY * yRatio,\n  ];\n}\n\nclass Annotation {\n  constructor(params) {\n    const dict = params.dict;\n\n    this.setContents(dict.get(\"Contents\"));\n    this.setModificationDate(dict.get(\"M\"));\n    this.setFlags(dict.get(\"F\"));\n    this.setRectangle(dict.getArray(\"Rect\"));\n    this.setColor(dict.getArray(\"C\"));\n    this.setBorderStyle(dict);\n    this.setAppearance(dict);\n\n    // Expose public properties using a data object.\n    this.data = {\n      annotationFlags: this.flags,\n      borderStyle: this.borderStyle,\n      color: this.color,\n      contents: this.contents,\n      hasAppearance: !!this.appearance,\n      id: params.id,\n      modificationDate: this.modificationDate,\n      rect: this.rectangle,\n      subtype: params.subtype,\n    };\n  }\n\n  /**\n   * @private\n   */\n  _hasFlag(flags, flag) {\n    return !!(flags & flag);\n  }\n\n  /**\n   * @private\n   */\n  _isViewable(flags) {\n    return (\n      !this._hasFlag(flags, AnnotationFlag.INVISIBLE) &&\n      !this._hasFlag(flags, AnnotationFlag.HIDDEN) &&\n      !this._hasFlag(flags, AnnotationFlag.NOVIEW)\n    );\n  }\n\n  /**\n   * @private\n   */\n  _isPrintable(flags) {\n    return (\n      this._hasFlag(flags, AnnotationFlag.PRINT) &&\n      !this._hasFlag(flags, AnnotationFlag.INVISIBLE) &&\n      !this._hasFlag(flags, AnnotationFlag.HIDDEN)\n    );\n  }\n\n  /**\n   * @type {boolean}\n   */\n  get viewable() {\n    if (this.flags === 0) {\n      return true;\n    }\n    return this._isViewable(this.flags);\n  }\n\n  /**\n   * @type {boolean}\n   */\n  get printable() {\n    if (this.flags === 0) {\n      return false;\n    }\n    return this._isPrintable(this.flags);\n  }\n\n  /**\n   * Set the contents.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {string} contents - Text to display for the annotation or, if the\n   *                            type of annotation does not display text, a\n   *                            description of the annotation's contents\n   */\n  setContents(contents) {\n    this.contents = stringToPDFString(contents || \"\");\n  }\n\n  /**\n   * Set the modification date.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {string} modificationDate - PDF date string that indicates when the\n   *                                    annotation was last modified\n   */\n  setModificationDate(modificationDate) {\n    this.modificationDate = isString(modificationDate)\n      ? modificationDate\n      : null;\n  }\n\n  /**\n   * Set the flags.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {number} flags - Unsigned 32-bit integer specifying annotation\n   *                         characteristics\n   * @see {@link shared/util.js}\n   */\n  setFlags(flags) {\n    this.flags = Number.isInteger(flags) && flags > 0 ? flags : 0;\n  }\n\n  /**\n   * Check if a provided flag is set.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {number} flag - Hexadecimal representation for an annotation\n   *                        characteristic\n   * @returns {boolean}\n   * @see {@link shared/util.js}\n   */\n  hasFlag(flag) {\n    return this._hasFlag(this.flags, flag);\n  }\n\n  /**\n   * Set the rectangle.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {Array} rectangle - The rectangle array with exactly four entries\n   */\n  setRectangle(rectangle) {\n    if (Array.isArray(rectangle) && rectangle.length === 4) {\n      this.rectangle = Util.normalizeRect(rectangle);\n    } else {\n      this.rectangle = [0, 0, 0, 0];\n    }\n  }\n\n  /**\n   * Set the color and take care of color space conversion.\n   * The default value is black, in RGB color space.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {Array} color - The color array containing either 0\n   *                        (transparent), 1 (grayscale), 3 (RGB) or\n   *                        4 (CMYK) elements\n   */\n  setColor(color) {\n    const rgbColor = new Uint8ClampedArray(3);\n    if (!Array.isArray(color)) {\n      this.color = rgbColor;\n      return;\n    }\n\n    switch (color.length) {\n      case 0: // Transparent, which we indicate with a null value\n        this.color = null;\n        break;\n\n      case 1: // Convert grayscale to RGB\n        ColorSpace.singletons.gray.getRgbItem(color, 0, rgbColor, 0);\n        this.color = rgbColor;\n        break;\n\n      case 3: // Convert RGB percentages to RGB\n        ColorSpace.singletons.rgb.getRgbItem(color, 0, rgbColor, 0);\n        this.color = rgbColor;\n        break;\n\n      case 4: // Convert CMYK to RGB\n        ColorSpace.singletons.cmyk.getRgbItem(color, 0, rgbColor, 0);\n        this.color = rgbColor;\n        break;\n\n      default:\n        this.color = rgbColor;\n        break;\n    }\n  }\n\n  /**\n   * Set the border style (as AnnotationBorderStyle object).\n   *\n   * @public\n   * @memberof Annotation\n   * @param {Dict} borderStyle - The border style dictionary\n   */\n  setBorderStyle(borderStyle) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(this.rectangle, \"setRectangle must have been called previously.\");\n    }\n\n    this.borderStyle = new AnnotationBorderStyle();\n    if (!isDict(borderStyle)) {\n      return;\n    }\n    if (borderStyle.has(\"BS\")) {\n      const dict = borderStyle.get(\"BS\");\n      const dictType = dict.get(\"Type\");\n\n      if (!dictType || isName(dictType, \"Border\")) {\n        this.borderStyle.setWidth(dict.get(\"W\"), this.rectangle);\n        this.borderStyle.setStyle(dict.get(\"S\"));\n        this.borderStyle.setDashArray(dict.getArray(\"D\"));\n      }\n    } else if (borderStyle.has(\"Border\")) {\n      const array = borderStyle.getArray(\"Border\");\n      if (Array.isArray(array) && array.length >= 3) {\n        this.borderStyle.setHorizontalCornerRadius(array[0]);\n        this.borderStyle.setVerticalCornerRadius(array[1]);\n        this.borderStyle.setWidth(array[2], this.rectangle);\n\n        if (array.length === 4) {\n          // Dash array available\n          this.borderStyle.setDashArray(array[3]);\n        }\n      }\n    } else {\n      // There are no border entries in the dictionary. According to the\n      // specification, we should draw a solid border of width 1 in that\n      // case, but Adobe Reader did not implement that part of the\n      // specification and instead draws no border at all, so we do the same.\n      // See also https://github.com/mozilla/pdf.js/issues/6179.\n      this.borderStyle.setWidth(0);\n    }\n  }\n\n  /**\n   * Set the (normal) appearance.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {Dict} dict - The annotation's data dictionary\n   */\n  setAppearance(dict) {\n    this.appearance = null;\n\n    const appearanceStates = dict.get(\"AP\");\n    if (!isDict(appearanceStates)) {\n      return;\n    }\n\n    // In case the normal appearance is a stream, then it is used directly.\n    const normalAppearanceState = appearanceStates.get(\"N\");\n    if (isStream(normalAppearanceState)) {\n      this.appearance = normalAppearanceState;\n      return;\n    }\n    if (!isDict(normalAppearanceState)) {\n      return;\n    }\n\n    // In case the normal appearance is a dictionary, the `AS` entry provides\n    // the key of the stream in this dictionary.\n    const as = dict.get(\"AS\");\n    if (!isName(as) || !normalAppearanceState.has(as.name)) {\n      return;\n    }\n    this.appearance = normalAppearanceState.get(as.name);\n  }\n\n  loadResources(keys) {\n    return this.appearance.dict.getAsync(\"Resources\").then(resources => {\n      if (!resources) {\n        return undefined;\n      }\n\n      const objectLoader = new ObjectLoader(resources, keys, resources.xref);\n      return objectLoader.load().then(function () {\n        return resources;\n      });\n    });\n  }\n\n  getOperatorList(evaluator, task, renderForms) {\n    if (!this.appearance) {\n      return Promise.resolve(new OperatorList());\n    }\n\n    const data = this.data;\n    const appearanceDict = this.appearance.dict;\n    const resourcesPromise = this.loadResources([\n      \"ExtGState\",\n      \"ColorSpace\",\n      \"Pattern\",\n      \"Shading\",\n      \"XObject\",\n      \"Font\",\n    ]);\n    const bbox = appearanceDict.getArray(\"BBox\") || [0, 0, 1, 1];\n    const matrix = appearanceDict.getArray(\"Matrix\") || [1, 0, 0, 1, 0, 0];\n    const transform = getTransformMatrix(data.rect, bbox, matrix);\n\n    return resourcesPromise.then(resources => {\n      const opList = new OperatorList();\n      opList.addOp(OPS.beginAnnotation, [data.rect, transform, matrix]);\n      return evaluator\n        .getOperatorList({\n          stream: this.appearance,\n          task,\n          resources,\n          operatorList: opList,\n        })\n        .then(() => {\n          opList.addOp(OPS.endAnnotation, []);\n          this.appearance.reset();\n          return opList;\n        });\n    });\n  }\n}\n\n/**\n * Contains all data regarding an annotation's border style.\n */\nclass AnnotationBorderStyle {\n  constructor() {\n    this.width = 1;\n    this.style = AnnotationBorderStyleType.SOLID;\n    this.dashArray = [3];\n    this.horizontalCornerRadius = 0;\n    this.verticalCornerRadius = 0;\n  }\n\n  /**\n   * Set the width.\n   *\n   * @public\n   * @memberof AnnotationBorderStyle\n   * @param {number} width - The width.\n   * @param {Array} rect - The annotation `Rect` entry.\n   */\n  setWidth(width, rect = [0, 0, 0, 0]) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        Array.isArray(rect) && rect.length === 4,\n        \"A valid `rect` parameter must be provided.\"\n      );\n    }\n\n    // Some corrupt PDF generators may provide the width as a `Name`,\n    // rather than as a number (fixes issue 10385).\n    if (isName(width)) {\n      this.width = 0; // This is consistent with the behaviour in Adobe Reader.\n      return;\n    }\n    if (Number.isInteger(width)) {\n      if (width > 0) {\n        const maxWidth = (rect[2] - rect[0]) / 2;\n        const maxHeight = (rect[3] - rect[1]) / 2;\n\n        // Ignore large `width`s, since they lead to the Annotation overflowing\n        // the size set by the `Rect` entry thus causing the `annotationLayer`\n        // to render it over the surrounding document (fixes bug1552113.pdf).\n        if (\n          maxWidth > 0 &&\n          maxHeight > 0 &&\n          (width > maxWidth || width > maxHeight)\n        ) {\n          warn(`AnnotationBorderStyle.setWidth - ignoring width: ${width}`);\n          width = 1;\n        }\n      }\n      this.width = width;\n    }\n  }\n\n  /**\n   * Set the style.\n   *\n   * @public\n   * @memberof AnnotationBorderStyle\n   * @param {Name} style - The annotation style.\n   * @see {@link shared/util.js}\n   */\n  setStyle(style) {\n    if (!isName(style)) {\n      return;\n    }\n    switch (style.name) {\n      case \"S\":\n        this.style = AnnotationBorderStyleType.SOLID;\n        break;\n\n      case \"D\":\n        this.style = AnnotationBorderStyleType.DASHED;\n        break;\n\n      case \"B\":\n        this.style = AnnotationBorderStyleType.BEVELED;\n        break;\n\n      case \"I\":\n        this.style = AnnotationBorderStyleType.INSET;\n        break;\n\n      case \"U\":\n        this.style = AnnotationBorderStyleType.UNDERLINE;\n        break;\n\n      default:\n        break;\n    }\n  }\n\n  /**\n   * Set the dash array.\n   *\n   * @public\n   * @memberof AnnotationBorderStyle\n   * @param {Array} dashArray - The dash array with at least one element\n   */\n  setDashArray(dashArray) {\n    // We validate the dash array, but we do not use it because CSS does not\n    // allow us to change spacing of dashes. For more information, visit\n    // http://www.w3.org/TR/css3-background/#the-border-style.\n    if (Array.isArray(dashArray) && dashArray.length > 0) {\n      // According to the PDF specification: the elements in `dashArray`\n      // shall be numbers that are nonnegative and not all equal to zero.\n      let isValid = true;\n      let allZeros = true;\n      for (const element of dashArray) {\n        const validNumber = +element >= 0;\n        if (!validNumber) {\n          isValid = false;\n          break;\n        } else if (element > 0) {\n          allZeros = false;\n        }\n      }\n      if (isValid && !allZeros) {\n        this.dashArray = dashArray;\n      } else {\n        this.width = 0; // Adobe behavior when the array is invalid.\n      }\n    } else if (dashArray) {\n      this.width = 0; // Adobe behavior when the array is invalid.\n    }\n  }\n\n  /**\n   * Set the horizontal corner radius (from a Border dictionary).\n   *\n   * @public\n   * @memberof AnnotationBorderStyle\n   * @param {number} radius - The horizontal corner radius.\n   */\n  setHorizontalCornerRadius(radius) {\n    if (Number.isInteger(radius)) {\n      this.horizontalCornerRadius = radius;\n    }\n  }\n\n  /**\n   * Set the vertical corner radius (from a Border dictionary).\n   *\n   * @public\n   * @memberof AnnotationBorderStyle\n   * @param {number} radius - The vertical corner radius.\n   */\n  setVerticalCornerRadius(radius) {\n    if (Number.isInteger(radius)) {\n      this.verticalCornerRadius = radius;\n    }\n  }\n}\n\nclass MarkupAnnotation extends Annotation {\n  constructor(parameters) {\n    super(parameters);\n\n    const dict = parameters.dict;\n\n    if (dict.has(\"IRT\")) {\n      const rawIRT = dict.getRaw(\"IRT\");\n      this.data.inReplyTo = isRef(rawIRT) ? rawIRT.toString() : null;\n\n      const rt = dict.get(\"RT\");\n      this.data.replyType = isName(rt) ? rt.name : AnnotationReplyType.REPLY;\n    }\n\n    if (this.data.replyType === AnnotationReplyType.GROUP) {\n      // Subordinate annotations in a group should inherit\n      // the group attributes from the primary annotation.\n      const parent = dict.get(\"IRT\");\n\n      this.data.title = stringToPDFString(parent.get(\"T\") || \"\");\n\n      this.setContents(parent.get(\"Contents\"));\n      this.data.contents = this.contents;\n\n      if (!parent.has(\"CreationDate\")) {\n        this.data.creationDate = null;\n      } else {\n        this.setCreationDate(parent.get(\"CreationDate\"));\n        this.data.creationDate = this.creationDate;\n      }\n\n      if (!parent.has(\"M\")) {\n        this.data.modificationDate = null;\n      } else {\n        this.setModificationDate(parent.get(\"M\"));\n        this.data.modificationDate = this.modificationDate;\n      }\n\n      this.data.hasPopup = parent.has(\"Popup\");\n\n      if (!parent.has(\"C\")) {\n        // Fall back to the default background color.\n        this.data.color = null;\n      } else {\n        this.setColor(parent.getArray(\"C\"));\n        this.data.color = this.color;\n      }\n    } else {\n      this.data.title = stringToPDFString(dict.get(\"T\") || \"\");\n\n      this.setCreationDate(dict.get(\"CreationDate\"));\n      this.data.creationDate = this.creationDate;\n\n      this.data.hasPopup = dict.has(\"Popup\");\n\n      if (!dict.has(\"C\")) {\n        // Fall back to the default background color.\n        this.data.color = null;\n      }\n    }\n  }\n\n  /**\n   * Set the creation date.\n   *\n   * @public\n   * @memberof MarkupAnnotation\n   * @param {string} creationDate - PDF date string that indicates when the\n   *                                annotation was originally created\n   */\n  setCreationDate(creationDate) {\n    this.creationDate = isString(creationDate) ? creationDate : null;\n  }\n}\n\nclass WidgetAnnotation extends Annotation {\n  constructor(params) {\n    super(params);\n\n    const dict = params.dict;\n    const data = this.data;\n\n    data.annotationType = AnnotationType.WIDGET;\n    data.fieldName = this._constructFieldName(dict);\n    data.fieldValue = getInheritableProperty({\n      dict,\n      key: \"V\",\n      getArray: true,\n    });\n    data.alternativeText = stringToPDFString(dict.get(\"TU\") || \"\");\n    data.defaultAppearance = getInheritableProperty({ dict, key: \"DA\" }) || \"\";\n    const fieldType = getInheritableProperty({ dict, key: \"FT\" });\n    data.fieldType = isName(fieldType) ? fieldType.name : null;\n    this.fieldResources =\n      getInheritableProperty({ dict, key: \"DR\" }) || Dict.empty;\n\n    data.fieldFlags = getInheritableProperty({ dict, key: \"Ff\" });\n    if (!Number.isInteger(data.fieldFlags) || data.fieldFlags < 0) {\n      data.fieldFlags = 0;\n    }\n\n    data.readOnly = this.hasFieldFlag(AnnotationFieldFlag.READONLY);\n\n    // Hide signatures because we cannot validate them, and unset the fieldValue\n    // since it's (most likely) a `Dict` which is non-serializable and will thus\n    // cause errors when sending annotations to the main-thread (issue 10347).\n    if (data.fieldType === \"Sig\") {\n      data.fieldValue = null;\n      this.setFlags(AnnotationFlag.HIDDEN);\n    }\n  }\n\n  /**\n   * Construct the (fully qualified) field name from the (partial) field\n   * names of the field and its ancestors.\n   *\n   * @private\n   * @memberof WidgetAnnotation\n   * @param {Dict} dict - Complete widget annotation dictionary\n   * @returns {string}\n   */\n  _constructFieldName(dict) {\n    // Both the `Parent` and `T` fields are optional. While at least one of\n    // them should be provided, bad PDF generators may fail to do so.\n    if (!dict.has(\"T\") && !dict.has(\"Parent\")) {\n      warn(\"Unknown field name, falling back to empty field name.\");\n      return \"\";\n    }\n\n    // If no parent exists, the partial and fully qualified names are equal.\n    if (!dict.has(\"Parent\")) {\n      return stringToPDFString(dict.get(\"T\"));\n    }\n\n    // Form the fully qualified field name by appending the partial name to\n    // the parent's fully qualified name, separated by a period.\n    const fieldName = [];\n    if (dict.has(\"T\")) {\n      fieldName.unshift(stringToPDFString(dict.get(\"T\")));\n    }\n\n    let loopDict = dict;\n    while (loopDict.has(\"Parent\")) {\n      loopDict = loopDict.get(\"Parent\");\n      if (!isDict(loopDict)) {\n        // Even though it is not allowed according to the PDF specification,\n        // bad PDF generators may provide a `Parent` entry that is not a\n        // dictionary, but `null` for example (issue 8143).\n        break;\n      }\n\n      if (loopDict.has(\"T\")) {\n        fieldName.unshift(stringToPDFString(loopDict.get(\"T\")));\n      }\n    }\n    return fieldName.join(\".\");\n  }\n\n  /**\n   * Check if a provided field flag is set.\n   *\n   * @public\n   * @memberof WidgetAnnotation\n   * @param {number} flag - Hexadecimal representation for an annotation\n   *                        field characteristic\n   * @returns {boolean}\n   * @see {@link shared/util.js}\n   */\n  hasFieldFlag(flag) {\n    return !!(this.data.fieldFlags & flag);\n  }\n\n  getOperatorList(evaluator, task, renderForms) {\n    // Do not render form elements on the canvas when interactive forms are\n    // enabled. The display layer is responsible for rendering them instead.\n    if (renderForms) {\n      return Promise.resolve(new OperatorList());\n    }\n    return super.getOperatorList(evaluator, task, renderForms);\n  }\n}\n\nclass TextWidgetAnnotation extends WidgetAnnotation {\n  constructor(params) {\n    super(params);\n\n    const dict = params.dict;\n\n    // The field value is always a string.\n    this.data.fieldValue = stringToPDFString(this.data.fieldValue || \"\");\n\n    // Determine the alignment of text in the field.\n    let alignment = getInheritableProperty({ dict, key: \"Q\" });\n    if (!Number.isInteger(alignment) || alignment < 0 || alignment > 2) {\n      alignment = null;\n    }\n    this.data.textAlignment = alignment;\n\n    // Determine the maximum length of text in the field.\n    let maximumLength = getInheritableProperty({ dict, key: \"MaxLen\" });\n    if (!Number.isInteger(maximumLength) || maximumLength < 0) {\n      maximumLength = null;\n    }\n    this.data.maxLen = maximumLength;\n\n    // Process field flags for the display layer.\n    this.data.multiLine = this.hasFieldFlag(AnnotationFieldFlag.MULTILINE);\n    this.data.comb =\n      this.hasFieldFlag(AnnotationFieldFlag.COMB) &&\n      !this.hasFieldFlag(AnnotationFieldFlag.MULTILINE) &&\n      !this.hasFieldFlag(AnnotationFieldFlag.PASSWORD) &&\n      !this.hasFieldFlag(AnnotationFieldFlag.FILESELECT) &&\n      this.data.maxLen !== null;\n  }\n\n  getOperatorList(evaluator, task, renderForms) {\n    if (renderForms || this.appearance) {\n      return super.getOperatorList(evaluator, task, renderForms);\n    }\n\n    const operatorList = new OperatorList();\n\n    // Even if there is an appearance stream, ignore it. This is the\n    // behaviour used by Adobe Reader.\n    if (!this.data.defaultAppearance) {\n      return Promise.resolve(operatorList);\n    }\n\n    const stream = new Stream(stringToBytes(this.data.defaultAppearance));\n    return evaluator\n      .getOperatorList({\n        stream,\n        task,\n        resources: this.fieldResources,\n        operatorList,\n      })\n      .then(function () {\n        return operatorList;\n      });\n  }\n}\n\nclass ButtonWidgetAnnotation extends WidgetAnnotation {\n  constructor(params) {\n    super(params);\n\n    this.data.checkBox =\n      !this.hasFieldFlag(AnnotationFieldFlag.RADIO) &&\n      !this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n    this.data.radioButton =\n      this.hasFieldFlag(AnnotationFieldFlag.RADIO) &&\n      !this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n    this.data.pushButton = this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n\n    if (this.data.checkBox) {\n      this._processCheckBox(params);\n    } else if (this.data.radioButton) {\n      this._processRadioButton(params);\n    } else if (this.data.pushButton) {\n      this._processPushButton(params);\n    } else {\n      warn(\"Invalid field flags for button widget annotation\");\n    }\n  }\n\n  _processCheckBox(params) {\n    if (isName(this.data.fieldValue)) {\n      this.data.fieldValue = this.data.fieldValue.name;\n    }\n\n    const customAppearance = params.dict.get(\"AP\");\n    if (!isDict(customAppearance)) {\n      return;\n    }\n\n    const exportValueOptionsDict = customAppearance.get(\"D\");\n    if (!isDict(exportValueOptionsDict)) {\n      return;\n    }\n\n    const exportValues = exportValueOptionsDict.getKeys();\n    const hasCorrectOptionCount = exportValues.length === 2;\n    if (!hasCorrectOptionCount) {\n      return;\n    }\n\n    this.data.exportValue =\n      exportValues[0] === \"Off\" ? exportValues[1] : exportValues[0];\n  }\n\n  _processRadioButton(params) {\n    this.data.fieldValue = this.data.buttonValue = null;\n\n    // The parent field's `V` entry holds a `Name` object with the appearance\n    // state of whichever child field is currently in the \"on\" state.\n    const fieldParent = params.dict.get(\"Parent\");\n    if (isDict(fieldParent) && fieldParent.has(\"V\")) {\n      const fieldParentValue = fieldParent.get(\"V\");\n      if (isName(fieldParentValue)) {\n        this.data.fieldValue = fieldParentValue.name;\n      }\n    }\n\n    // The button's value corresponds to its appearance state.\n    const appearanceStates = params.dict.get(\"AP\");\n    if (!isDict(appearanceStates)) {\n      return;\n    }\n    const normalAppearanceState = appearanceStates.get(\"N\");\n    if (!isDict(normalAppearanceState)) {\n      return;\n    }\n    for (const key of normalAppearanceState.getKeys()) {\n      if (key !== \"Off\") {\n        this.data.buttonValue = key;\n        break;\n      }\n    }\n  }\n\n  _processPushButton(params) {\n    if (!params.dict.has(\"A\")) {\n      warn(\"Push buttons without action dictionaries are not supported\");\n      return;\n    }\n\n    Catalog.parseDestDictionary({\n      destDict: params.dict,\n      resultObj: this.data,\n      docBaseUrl: params.pdfManager.docBaseUrl,\n    });\n  }\n}\n\nclass ChoiceWidgetAnnotation extends WidgetAnnotation {\n  constructor(params) {\n    super(params);\n\n    // Determine the options. The options array may consist of strings or\n    // arrays. If the array consists of arrays, then the first element of\n    // each array is the export value and the second element of each array is\n    // the display value. If the array consists of strings, then these\n    // represent both the export and display value. In this case, we convert\n    // it to an array of arrays as well for convenience in the display layer.\n    // Note that the specification does not state that the `Opt` field is\n    // inheritable, but in practice PDF generators do make annotations\n    // inherit the options from a parent annotation (issue 8094).\n    this.data.options = [];\n\n    const options = getInheritableProperty({ dict: params.dict, key: \"Opt\" });\n    if (Array.isArray(options)) {\n      const xref = params.xref;\n      for (let i = 0, ii = options.length; i < ii; i++) {\n        const option = xref.fetchIfRef(options[i]);\n        const isOptionArray = Array.isArray(option);\n\n        this.data.options[i] = {\n          exportValue: isOptionArray ? xref.fetchIfRef(option[0]) : option,\n          displayValue: stringToPDFString(\n            isOptionArray ? xref.fetchIfRef(option[1]) : option\n          ),\n        };\n      }\n    }\n\n    // Determine the field value. In this case, it may be a string or an\n    // array of strings. For convenience in the display layer, convert the\n    // string to an array of one string as well.\n    if (!Array.isArray(this.data.fieldValue)) {\n      this.data.fieldValue = [this.data.fieldValue];\n    }\n\n    // Process field flags for the display layer.\n    this.data.combo = this.hasFieldFlag(AnnotationFieldFlag.COMBO);\n    this.data.multiSelect = this.hasFieldFlag(AnnotationFieldFlag.MULTISELECT);\n  }\n}\n\nclass TextAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    const DEFAULT_ICON_SIZE = 22; // px\n\n    super(parameters);\n\n    const dict = parameters.dict;\n    this.data.annotationType = AnnotationType.TEXT;\n\n    if (this.data.hasAppearance) {\n      this.data.name = \"NoIcon\";\n    } else {\n      this.data.rect[1] = this.data.rect[3] - DEFAULT_ICON_SIZE;\n      this.data.rect[2] = this.data.rect[0] + DEFAULT_ICON_SIZE;\n      this.data.name = dict.has(\"Name\") ? dict.get(\"Name\").name : \"Note\";\n    }\n\n    if (dict.has(\"State\")) {\n      this.data.state = dict.get(\"State\") || null;\n      this.data.stateModel = dict.get(\"StateModel\") || null;\n    } else {\n      this.data.state = null;\n      this.data.stateModel = null;\n    }\n  }\n}\n\nclass LinkAnnotation extends Annotation {\n  constructor(params) {\n    super(params);\n\n    this.data.annotationType = AnnotationType.LINK;\n\n    const quadPoints = getQuadPoints(params.dict, this.rectangle);\n    if (quadPoints) {\n      this.data.quadPoints = quadPoints;\n    }\n\n    Catalog.parseDestDictionary({\n      destDict: params.dict,\n      resultObj: this.data,\n      docBaseUrl: params.pdfManager.docBaseUrl,\n    });\n  }\n}\n\nclass PopupAnnotation extends Annotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.POPUP;\n\n    let parentItem = parameters.dict.get(\"Parent\");\n    if (!parentItem) {\n      warn(\"Popup annotation has a missing or invalid parent annotation.\");\n      return;\n    }\n\n    const parentSubtype = parentItem.get(\"Subtype\");\n    this.data.parentType = isName(parentSubtype) ? parentSubtype.name : null;\n    const rawParent = parameters.dict.getRaw(\"Parent\");\n    this.data.parentId = isRef(rawParent) ? rawParent.toString() : null;\n\n    const rt = parentItem.get(\"RT\");\n    if (isName(rt, AnnotationReplyType.GROUP)) {\n      // Subordinate annotations in a group should inherit\n      // the group attributes from the primary annotation.\n      parentItem = parentItem.get(\"IRT\");\n    }\n\n    if (!parentItem.has(\"M\")) {\n      this.data.modificationDate = null;\n    } else {\n      this.setModificationDate(parentItem.get(\"M\"));\n      this.data.modificationDate = this.modificationDate;\n    }\n\n    if (!parentItem.has(\"C\")) {\n      // Fall back to the default background color.\n      this.data.color = null;\n    } else {\n      this.setColor(parentItem.getArray(\"C\"));\n      this.data.color = this.color;\n    }\n\n    // If the Popup annotation is not viewable, but the parent annotation is,\n    // that is most likely a bug. Fallback to inherit the flags from the parent\n    // annotation (this is consistent with the behaviour in Adobe Reader).\n    if (!this.viewable) {\n      const parentFlags = parentItem.get(\"F\");\n      if (this._isViewable(parentFlags)) {\n        this.setFlags(parentFlags);\n      }\n    }\n\n    this.data.title = stringToPDFString(parentItem.get(\"T\") || \"\");\n    this.data.contents = stringToPDFString(parentItem.get(\"Contents\") || \"\");\n  }\n}\n\nclass FreeTextAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.FREETEXT;\n  }\n}\n\nclass LineAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.LINE;\n\n    this.data.lineCoordinates = Util.normalizeRect(\n      parameters.dict.getArray(\"L\")\n    );\n  }\n}\n\nclass SquareAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.SQUARE;\n  }\n}\n\nclass CircleAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.CIRCLE;\n  }\n}\n\nclass PolylineAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.POLYLINE;\n\n    // The vertices array is an array of numbers representing the alternating\n    // horizontal and vertical coordinates, respectively, of each vertex.\n    // Convert this to an array of objects with x and y coordinates.\n    const rawVertices = parameters.dict.getArray(\"Vertices\");\n    this.data.vertices = [];\n    for (let i = 0, ii = rawVertices.length; i < ii; i += 2) {\n      this.data.vertices.push({\n        x: rawVertices[i],\n        y: rawVertices[i + 1],\n      });\n    }\n  }\n}\n\nclass PolygonAnnotation extends PolylineAnnotation {\n  constructor(parameters) {\n    // Polygons are specific forms of polylines, so reuse their logic.\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.POLYGON;\n  }\n}\n\nclass CaretAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.CARET;\n  }\n}\n\nclass InkAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.INK;\n\n    const xref = parameters.xref;\n    const originalInkLists = parameters.dict.getArray(\"InkList\");\n    this.data.inkLists = [];\n    for (let i = 0, ii = originalInkLists.length; i < ii; ++i) {\n      // The raw ink lists array contains arrays of numbers representing\n      // the alternating horizontal and vertical coordinates, respectively,\n      // of each vertex. Convert this to an array of objects with x and y\n      // coordinates.\n      this.data.inkLists.push([]);\n      for (let j = 0, jj = originalInkLists[i].length; j < jj; j += 2) {\n        this.data.inkLists[i].push({\n          x: xref.fetchIfRef(originalInkLists[i][j]),\n          y: xref.fetchIfRef(originalInkLists[i][j + 1]),\n        });\n      }\n    }\n  }\n}\n\nclass HighlightAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.HIGHLIGHT;\n\n    const quadPoints = getQuadPoints(parameters.dict, this.rectangle);\n    if (quadPoints) {\n      this.data.quadPoints = quadPoints;\n    }\n  }\n}\n\nclass UnderlineAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.UNDERLINE;\n\n    const quadPoints = getQuadPoints(parameters.dict, this.rectangle);\n    if (quadPoints) {\n      this.data.quadPoints = quadPoints;\n    }\n  }\n}\n\nclass SquigglyAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.SQUIGGLY;\n\n    const quadPoints = getQuadPoints(parameters.dict, this.rectangle);\n    if (quadPoints) {\n      this.data.quadPoints = quadPoints;\n    }\n  }\n}\n\nclass StrikeOutAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.STRIKEOUT;\n\n    const quadPoints = getQuadPoints(parameters.dict, this.rectangle);\n    if (quadPoints) {\n      this.data.quadPoints = quadPoints;\n    }\n  }\n}\n\nclass StampAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.STAMP;\n  }\n}\n\nclass FileAttachmentAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    const file = new FileSpec(parameters.dict.get(\"FS\"), parameters.xref);\n\n    this.data.annotationType = AnnotationType.FILEATTACHMENT;\n    this.data.file = file.serializable;\n  }\n}\n\nexport {\n  Annotation,\n  AnnotationBorderStyle,\n  AnnotationFactory,\n  MarkupAnnotation,\n  getQuadPoints,\n};\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, ImageKind, OPS, warn } from \"../shared/util.js\";\n\nvar QueueOptimizer = (function QueueOptimizerClosure() {\n  function addState(parentState, pattern, checkFn, iterateFn, processFn) {\n    var state = parentState;\n    for (var i = 0, ii = pattern.length - 1; i < ii; i++) {\n      var item = pattern[i];\n      state = state[item] || (state[item] = []);\n    }\n    state[pattern[pattern.length - 1]] = {\n      checkFn,\n      iterateFn,\n      processFn,\n    };\n  }\n\n  function handlePaintSolidColorImageMask(\n    iFirstSave,\n    count,\n    fnArray,\n    argsArray\n  ) {\n    // Handles special case of mainly LaTeX documents which use image masks to\n    // draw lines with the current fill style.\n    // 'count' groups of (save, transform, paintImageMaskXObject, restore)+\n    // have been found at iFirstSave.\n    var iFirstPIMXO = iFirstSave + 2;\n    for (var i = 0; i < count; i++) {\n      var arg = argsArray[iFirstPIMXO + 4 * i];\n      var imageMask = arg.length === 1 && arg[0];\n      if (\n        imageMask &&\n        imageMask.width === 1 &&\n        imageMask.height === 1 &&\n        (!imageMask.data.length ||\n          (imageMask.data.length === 1 && imageMask.data[0] === 0))\n      ) {\n        fnArray[iFirstPIMXO + 4 * i] = OPS.paintSolidColorImageMask;\n        continue;\n      }\n      break;\n    }\n    return count - i;\n  }\n\n  var InitialState = [];\n\n  // This replaces (save, transform, paintInlineImageXObject, restore)+\n  // sequences with one |paintInlineImageXObjectGroup| operation.\n  addState(\n    InitialState,\n    [OPS.save, OPS.transform, OPS.paintInlineImageXObject, OPS.restore],\n    null,\n    function iterateInlineImageGroup(context, i) {\n      var fnArray = context.fnArray;\n      var iFirstSave = context.iCurr - 3;\n      var pos = (i - iFirstSave) % 4;\n      switch (pos) {\n        case 0:\n          return fnArray[i] === OPS.save;\n        case 1:\n          return fnArray[i] === OPS.transform;\n        case 2:\n          return fnArray[i] === OPS.paintInlineImageXObject;\n        case 3:\n          return fnArray[i] === OPS.restore;\n      }\n      throw new Error(`iterateInlineImageGroup - invalid pos: ${pos}`);\n    },\n    function foundInlineImageGroup(context, i) {\n      var MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10;\n      var MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200;\n      var MAX_WIDTH = 1000;\n      var IMAGE_PADDING = 1;\n\n      var fnArray = context.fnArray,\n        argsArray = context.argsArray;\n      var curr = context.iCurr;\n      var iFirstSave = curr - 3;\n      var iFirstTransform = curr - 2;\n      var iFirstPIIXO = curr - 1;\n\n      var count = Math.min(\n        Math.floor((i - iFirstSave) / 4),\n        MAX_IMAGES_IN_INLINE_IMAGES_BLOCK\n      );\n      if (count < MIN_IMAGES_IN_INLINE_IMAGES_BLOCK) {\n        return i - ((i - iFirstSave) % 4);\n      }\n\n      // assuming that heights of those image is too small (~1 pixel)\n      // packing as much as possible by lines\n      var maxX = 0;\n      var map = [],\n        maxLineHeight = 0;\n      var currentX = IMAGE_PADDING,\n        currentY = IMAGE_PADDING;\n      var q;\n      for (q = 0; q < count; q++) {\n        var transform = argsArray[iFirstTransform + (q << 2)];\n        var img = argsArray[iFirstPIIXO + (q << 2)][0];\n        if (currentX + img.width > MAX_WIDTH) {\n          // starting new line\n          maxX = Math.max(maxX, currentX);\n          currentY += maxLineHeight + 2 * IMAGE_PADDING;\n          currentX = 0;\n          maxLineHeight = 0;\n        }\n        map.push({\n          transform,\n          x: currentX,\n          y: currentY,\n          w: img.width,\n          h: img.height,\n        });\n        currentX += img.width + 2 * IMAGE_PADDING;\n        maxLineHeight = Math.max(maxLineHeight, img.height);\n      }\n      var imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING;\n      var imgHeight = currentY + maxLineHeight + IMAGE_PADDING;\n      var imgData = new Uint8ClampedArray(imgWidth * imgHeight * 4);\n      var imgRowSize = imgWidth << 2;\n      for (q = 0; q < count; q++) {\n        var data = argsArray[iFirstPIIXO + (q << 2)][0].data;\n        // Copy image by lines and extends pixels into padding.\n        var rowSize = map[q].w << 2;\n        var dataOffset = 0;\n        var offset = (map[q].x + map[q].y * imgWidth) << 2;\n        imgData.set(data.subarray(0, rowSize), offset - imgRowSize);\n        for (var k = 0, kk = map[q].h; k < kk; k++) {\n          imgData.set(data.subarray(dataOffset, dataOffset + rowSize), offset);\n          dataOffset += rowSize;\n          offset += imgRowSize;\n        }\n        imgData.set(data.subarray(dataOffset - rowSize, dataOffset), offset);\n        while (offset >= 0) {\n          data[offset - 4] = data[offset];\n          data[offset - 3] = data[offset + 1];\n          data[offset - 2] = data[offset + 2];\n          data[offset - 1] = data[offset + 3];\n          data[offset + rowSize] = data[offset + rowSize - 4];\n          data[offset + rowSize + 1] = data[offset + rowSize - 3];\n          data[offset + rowSize + 2] = data[offset + rowSize - 2];\n          data[offset + rowSize + 3] = data[offset + rowSize - 1];\n          offset -= imgRowSize;\n        }\n      }\n\n      // Replace queue items.\n      fnArray.splice(iFirstSave, count * 4, OPS.paintInlineImageXObjectGroup);\n      argsArray.splice(iFirstSave, count * 4, [\n        {\n          width: imgWidth,\n          height: imgHeight,\n          kind: ImageKind.RGBA_32BPP,\n          data: imgData,\n        },\n        map,\n      ]);\n\n      return iFirstSave + 1;\n    }\n  );\n\n  // This replaces (save, transform, paintImageMaskXObject, restore)+\n  // sequences with one |paintImageMaskXObjectGroup| or one\n  // |paintImageMaskXObjectRepeat| operation.\n  addState(\n    InitialState,\n    [OPS.save, OPS.transform, OPS.paintImageMaskXObject, OPS.restore],\n    null,\n    function iterateImageMaskGroup(context, i) {\n      var fnArray = context.fnArray;\n      var iFirstSave = context.iCurr - 3;\n      var pos = (i - iFirstSave) % 4;\n      switch (pos) {\n        case 0:\n          return fnArray[i] === OPS.save;\n        case 1:\n          return fnArray[i] === OPS.transform;\n        case 2:\n          return fnArray[i] === OPS.paintImageMaskXObject;\n        case 3:\n          return fnArray[i] === OPS.restore;\n      }\n      throw new Error(`iterateImageMaskGroup - invalid pos: ${pos}`);\n    },\n    function foundImageMaskGroup(context, i) {\n      var MIN_IMAGES_IN_MASKS_BLOCK = 10;\n      var MAX_IMAGES_IN_MASKS_BLOCK = 100;\n      var MAX_SAME_IMAGES_IN_MASKS_BLOCK = 1000;\n\n      var fnArray = context.fnArray,\n        argsArray = context.argsArray;\n      var curr = context.iCurr;\n      var iFirstSave = curr - 3;\n      var iFirstTransform = curr - 2;\n      var iFirstPIMXO = curr - 1;\n\n      // At this point, i is the index of the first op past the last valid\n      // quartet.\n      var count = Math.floor((i - iFirstSave) / 4);\n      count = handlePaintSolidColorImageMask(\n        iFirstSave,\n        count,\n        fnArray,\n        argsArray\n      );\n      if (count < MIN_IMAGES_IN_MASKS_BLOCK) {\n        return i - ((i - iFirstSave) % 4);\n      }\n\n      var q;\n      var isSameImage = false;\n      var iTransform, transformArgs;\n      var firstPIMXOArg0 = argsArray[iFirstPIMXO][0];\n      if (\n        argsArray[iFirstTransform][1] === 0 &&\n        argsArray[iFirstTransform][2] === 0\n      ) {\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        for (q = 1; q < count; q++, iTransform += 4, iPIMXO += 4) {\n          transformArgs = argsArray[iTransform];\n          if (\n            argsArray[iPIMXO][0] !== firstPIMXOArg0 ||\n            transformArgs[0] !== firstTransformArg0 ||\n            transformArgs[1] !== 0 ||\n            transformArgs[2] !== 0 ||\n            transformArgs[3] !== firstTransformArg3\n          ) {\n            if (q < MIN_IMAGES_IN_MASKS_BLOCK) {\n              isSameImage = false;\n            } else {\n              count = q;\n            }\n            break; // different image or transform\n          }\n        }\n      }\n\n      if (isSameImage) {\n        count = Math.min(count, MAX_SAME_IMAGES_IN_MASKS_BLOCK);\n        var positions = new Float32Array(count * 2);\n        iTransform = iFirstTransform;\n        for (q = 0; q < count; q++, iTransform += 4) {\n          transformArgs = argsArray[iTransform];\n          positions[q << 1] = transformArgs[4];\n          positions[(q << 1) + 1] = transformArgs[5];\n        }\n\n        // Replace queue items.\n        fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectRepeat);\n        argsArray.splice(iFirstSave, count * 4, [\n          firstPIMXOArg0,\n          firstTransformArg0,\n          firstTransformArg3,\n          positions,\n        ]);\n      } else {\n        count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK);\n        var images = [];\n        for (q = 0; q < count; q++) {\n          transformArgs = argsArray[iFirstTransform + (q << 2)];\n          var maskParams = argsArray[iFirstPIMXO + (q << 2)][0];\n          images.push({\n            data: maskParams.data,\n            width: maskParams.width,\n            height: maskParams.height,\n            transform: transformArgs,\n          });\n        }\n\n        // Replace queue items.\n        fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectGroup);\n        argsArray.splice(iFirstSave, count * 4, [images]);\n      }\n\n      return iFirstSave + 1;\n    }\n  );\n\n  // This replaces (save, transform, paintImageXObject, restore)+ sequences\n  // with one paintImageXObjectRepeat operation, if the |transform| and\n  // |paintImageXObjectRepeat| ops are appropriate.\n  addState(\n    InitialState,\n    [OPS.save, OPS.transform, OPS.paintImageXObject, OPS.restore],\n    function (context) {\n      var argsArray = context.argsArray;\n      var iFirstTransform = context.iCurr - 2;\n      return (\n        argsArray[iFirstTransform][1] === 0 &&\n        argsArray[iFirstTransform][2] === 0\n      );\n    },\n    function iterateImageGroup(context, i) {\n      var fnArray = context.fnArray,\n        argsArray = context.argsArray;\n      var iFirstSave = context.iCurr - 3;\n      var pos = (i - iFirstSave) % 4;\n      switch (pos) {\n        case 0:\n          return fnArray[i] === OPS.save;\n        case 1:\n          if (fnArray[i] !== OPS.transform) {\n            return false;\n          }\n          var iFirstTransform = context.iCurr - 2;\n          var firstTransformArg0 = argsArray[iFirstTransform][0];\n          var firstTransformArg3 = argsArray[iFirstTransform][3];\n          if (\n            argsArray[i][0] !== firstTransformArg0 ||\n            argsArray[i][1] !== 0 ||\n            argsArray[i][2] !== 0 ||\n            argsArray[i][3] !== firstTransformArg3\n          ) {\n            return false; // transforms don't match\n          }\n          return true;\n        case 2:\n          if (fnArray[i] !== OPS.paintImageXObject) {\n            return false;\n          }\n          var iFirstPIXO = context.iCurr - 1;\n          var firstPIXOArg0 = argsArray[iFirstPIXO][0];\n          if (argsArray[i][0] !== firstPIXOArg0) {\n            return false; // images don't match\n          }\n          return true;\n        case 3:\n          return fnArray[i] === OPS.restore;\n      }\n      throw new Error(`iterateImageGroup - invalid pos: ${pos}`);\n    },\n    function (context, i) {\n      var MIN_IMAGES_IN_BLOCK = 3;\n      var MAX_IMAGES_IN_BLOCK = 1000;\n\n      var fnArray = context.fnArray,\n        argsArray = context.argsArray;\n      var curr = context.iCurr;\n      var iFirstSave = curr - 3;\n      var iFirstTransform = curr - 2;\n      var iFirstPIXO = curr - 1;\n      var firstPIXOArg0 = argsArray[iFirstPIXO][0];\n      var firstTransformArg0 = argsArray[iFirstTransform][0];\n      var firstTransformArg3 = argsArray[iFirstTransform][3];\n\n      // At this point, i is the index of the first op past the last valid\n      // quartet.\n      var count = Math.min(\n        Math.floor((i - iFirstSave) / 4),\n        MAX_IMAGES_IN_BLOCK\n      );\n      if (count < MIN_IMAGES_IN_BLOCK) {\n        return i - ((i - iFirstSave) % 4);\n      }\n\n      // Extract the (x,y) positions from all of the matching transforms.\n      var positions = new Float32Array(count * 2);\n      var iTransform = iFirstTransform;\n      for (var q = 0; q < count; q++, iTransform += 4) {\n        var transformArgs = argsArray[iTransform];\n        positions[q << 1] = transformArgs[4];\n        positions[(q << 1) + 1] = transformArgs[5];\n      }\n\n      // Replace queue items.\n      var args = [\n        firstPIXOArg0,\n        firstTransformArg0,\n        firstTransformArg3,\n        positions,\n      ];\n      fnArray.splice(iFirstSave, count * 4, OPS.paintImageXObjectRepeat);\n      argsArray.splice(iFirstSave, count * 4, args);\n\n      return iFirstSave + 1;\n    }\n  );\n\n  // This replaces (beginText, setFont, setTextMatrix, showText, endText)+\n  // sequences with (beginText, setFont, (setTextMatrix, showText)+, endText)+\n  // sequences, if the font for each one is the same.\n  addState(\n    InitialState,\n    [OPS.beginText, OPS.setFont, OPS.setTextMatrix, OPS.showText, OPS.endText],\n    null,\n    function iterateShowTextGroup(context, i) {\n      var fnArray = context.fnArray,\n        argsArray = context.argsArray;\n      var iFirstSave = context.iCurr - 4;\n      var pos = (i - iFirstSave) % 5;\n      switch (pos) {\n        case 0:\n          return fnArray[i] === OPS.beginText;\n        case 1:\n          return fnArray[i] === OPS.setFont;\n        case 2:\n          return fnArray[i] === OPS.setTextMatrix;\n        case 3:\n          if (fnArray[i] !== OPS.showText) {\n            return false;\n          }\n          var iFirstSetFont = context.iCurr - 3;\n          var firstSetFontArg0 = argsArray[iFirstSetFont][0];\n          var firstSetFontArg1 = argsArray[iFirstSetFont][1];\n          if (\n            argsArray[i][0] !== firstSetFontArg0 ||\n            argsArray[i][1] !== firstSetFontArg1\n          ) {\n            return false; // fonts don't match\n          }\n          return true;\n        case 4:\n          return fnArray[i] === OPS.endText;\n      }\n      throw new Error(`iterateShowTextGroup - invalid pos: ${pos}`);\n    },\n    function (context, i) {\n      var MIN_CHARS_IN_BLOCK = 3;\n      var MAX_CHARS_IN_BLOCK = 1000;\n\n      var fnArray = context.fnArray,\n        argsArray = context.argsArray;\n      var curr = context.iCurr;\n      var iFirstBeginText = curr - 4;\n      var iFirstSetFont = curr - 3;\n      var iFirstSetTextMatrix = curr - 2;\n      var iFirstShowText = curr - 1;\n      var iFirstEndText = curr;\n      var firstSetFontArg0 = argsArray[iFirstSetFont][0];\n      var firstSetFontArg1 = argsArray[iFirstSetFont][1];\n\n      // At this point, i is the index of the first op past the last valid\n      // quintet.\n      var count = Math.min(\n        Math.floor((i - iFirstBeginText) / 5),\n        MAX_CHARS_IN_BLOCK\n      );\n      if (count < MIN_CHARS_IN_BLOCK) {\n        return i - ((i - iFirstBeginText) % 5);\n      }\n\n      // If the preceding quintet is (<something>, setFont, setTextMatrix,\n      // showText, endText), include that as well. (E.g. <something> might be\n      // |dependency|.)\n      var iFirst = iFirstBeginText;\n      if (\n        iFirstBeginText >= 4 &&\n        fnArray[iFirstBeginText - 4] === fnArray[iFirstSetFont] &&\n        fnArray[iFirstBeginText - 3] === fnArray[iFirstSetTextMatrix] &&\n        fnArray[iFirstBeginText - 2] === fnArray[iFirstShowText] &&\n        fnArray[iFirstBeginText - 1] === fnArray[iFirstEndText] &&\n        argsArray[iFirstBeginText - 4][0] === firstSetFontArg0 &&\n        argsArray[iFirstBeginText - 4][1] === firstSetFontArg1\n      ) {\n        count++;\n        iFirst -= 5;\n      }\n\n      // Remove (endText, beginText, setFont) trios.\n      var iEndText = iFirst + 4;\n      for (var q = 1; q < count; q++) {\n        fnArray.splice(iEndText, 3);\n        argsArray.splice(iEndText, 3);\n        iEndText += 2;\n      }\n\n      return iEndText + 1;\n    }\n  );\n\n  // eslint-disable-next-line no-shadow\n  function QueueOptimizer(queue) {\n    this.queue = queue;\n    this.state = null;\n    this.context = {\n      iCurr: 0,\n      fnArray: queue.fnArray,\n      argsArray: queue.argsArray,\n    };\n    this.match = null;\n    this.lastProcessed = 0;\n  }\n\n  QueueOptimizer.prototype = {\n    _optimize() {\n      // Process new fnArray item(s) chunk.\n      const fnArray = this.queue.fnArray;\n      let i = this.lastProcessed,\n        ii = fnArray.length;\n      let state = this.state;\n      let match = this.match;\n      if (!state && !match && i + 1 === ii && !InitialState[fnArray[i]]) {\n        // Micro-optimization for the common case: last item is not\n        // optimizable, just skipping it.\n        this.lastProcessed = ii;\n        return;\n      }\n\n      const context = this.context;\n      while (i < ii) {\n        if (match) {\n          // Already find a block of potentially optimizable items, iterating...\n          const iterate = (0, match.iterateFn)(context, i);\n          if (iterate) {\n            i++;\n            continue;\n          }\n          // Found last items for the block, processing...\n          i = (0, match.processFn)(context, i + 1);\n          ii = fnArray.length;\n          match = null;\n          state = null;\n          if (i >= ii) {\n            break;\n          }\n        }\n        // Find the potentially optimizable items.\n        state = (state || InitialState)[fnArray[i]];\n        if (!state || Array.isArray(state)) {\n          i++;\n          continue;\n        }\n        // Found a start of the block based on addState rules.\n        context.iCurr = i;\n        i++;\n        if (state.checkFn && !(0, state.checkFn)(context)) {\n          // Check failed, continue search...\n          state = null;\n          continue;\n        }\n        match = state;\n        state = null;\n      }\n      this.state = state;\n      this.match = match;\n      this.lastProcessed = i;\n    },\n\n    push(fn, args) {\n      this.queue.fnArray.push(fn);\n      this.queue.argsArray.push(args);\n      this._optimize();\n    },\n\n    flush() {\n      while (this.match) {\n        const length = this.queue.fnArray.length;\n        this.lastProcessed = (0, this.match.processFn)(this.context, length);\n        this.match = null;\n        this.state = null;\n        // Repeat optimization until all chunks are exhausted.\n        this._optimize();\n      }\n    },\n\n    reset() {\n      this.state = null;\n      this.match = null;\n      this.lastProcessed = 0;\n    },\n  };\n  return QueueOptimizer;\n})();\n\nvar NullOptimizer = (function NullOptimizerClosure() {\n  // eslint-disable-next-line no-shadow\n  function NullOptimizer(queue) {\n    this.queue = queue;\n  }\n\n  NullOptimizer.prototype = {\n    push(fn, args) {\n      this.queue.fnArray.push(fn);\n      this.queue.argsArray.push(args);\n    },\n\n    flush() {},\n\n    reset() {},\n  };\n\n  return NullOptimizer;\n})();\n\nvar OperatorList = (function OperatorListClosure() {\n  var CHUNK_SIZE = 1000;\n  var CHUNK_SIZE_ABOUT = CHUNK_SIZE - 5; // close to chunk size\n\n  // eslint-disable-next-line no-shadow\n  function OperatorList(intent, streamSink, pageIndex) {\n    this._streamSink = streamSink;\n    this.fnArray = [];\n    this.argsArray = [];\n    if (streamSink && intent !== \"oplist\") {\n      this.optimizer = new QueueOptimizer(this);\n    } else {\n      this.optimizer = new NullOptimizer(this);\n    }\n    this.dependencies = 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    /**\n     * @type {number} The total length of the entire operator list, since\n     *                `this.length === 0` after flushing.\n     */\n    get totalLength() {\n      return this._totalLength + this.length;\n    },\n\n    addOp(fn, args) {\n      this.optimizer.push(fn, args);\n      this.weight++;\n      if (this._streamSink) {\n        if (this.weight >= CHUNK_SIZE) {\n          this.flush();\n        } else if (\n          this.weight >= CHUNK_SIZE_ABOUT &&\n          (fn === OPS.restore || fn === OPS.endText)\n        ) {\n          // heuristic to flush on boundary of restore or endText\n          this.flush();\n        }\n      }\n    },\n\n    addDependency(dependency) {\n      if (dependency in this.dependencies) {\n        return;\n      }\n      this.dependencies[dependency] = true;\n      this.addOp(OPS.dependency, [dependency]);\n    },\n\n    addDependencies(dependencies) {\n      for (var key in dependencies) {\n        this.addDependency(key);\n      }\n    },\n\n    addOpList(opList) {\n      if (!(opList instanceof OperatorList)) {\n        warn('addOpList - ignoring invalid \"opList\" parameter.');\n        return;\n      }\n      Object.assign(this.dependencies, opList.dependencies);\n      for (var i = 0, ii = opList.length; i < ii; i++) {\n        this.addOp(opList.fnArray[i], opList.argsArray[i]);\n      }\n    },\n\n    getIR() {\n      return {\n        fnArray: this.fnArray,\n        argsArray: this.argsArray,\n        length: this.length,\n      };\n    },\n\n    get _transfers() {\n      const transfers = [];\n      const { fnArray, argsArray, length } = this;\n      for (let i = 0; i < length; i++) {\n        switch (fnArray[i]) {\n          case OPS.paintInlineImageXObject:\n          case OPS.paintInlineImageXObjectGroup:\n          case OPS.paintImageMaskXObject:\n            const arg = argsArray[i][0]; // first param in imgData\n\n            if (\n              typeof PDFJSDev === \"undefined\" ||\n              PDFJSDev.test(\"!PRODUCTION || TESTING\")\n            ) {\n              assert(\n                arg.data instanceof Uint8ClampedArray,\n                'OperatorList._transfers: Unsupported \"arg.data\" type.'\n              );\n            }\n            if (!arg.cached) {\n              transfers.push(arg.data.buffer);\n            }\n            break;\n        }\n      }\n      return transfers;\n    },\n\n    flush(lastChunk = false) {\n      this.optimizer.flush();\n      const length = this.length;\n      this._totalLength += length;\n\n      this._streamSink.enqueue(\n        {\n          fnArray: this.fnArray,\n          argsArray: this.argsArray,\n          lastChunk,\n          length,\n        },\n        1,\n        this._transfers\n      );\n\n      this.dependencies = Object.create(null);\n      this.fnArray.length = 0;\n      this.argsArray.length = 0;\n      this.weight = 0;\n      this.optimizer.reset();\n    },\n  };\n\n  return OperatorList;\n})();\n\nexport { OperatorList };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  AbortException,\n  assert,\n  CMapCompressionType,\n  createPromiseCapability,\n  FONT_IDENTITY_MATRIX,\n  FormatError,\n  IDENTITY_MATRIX,\n  info,\n  isArrayEqual,\n  isNum,\n  isString,\n  OPS,\n  stringToPDFString,\n  TextRenderingMode,\n  UNSUPPORTED_FEATURES,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport { CMapFactory, IdentityCMap } from \"./cmap.js\";\nimport {\n  Cmd,\n  Dict,\n  EOF,\n  isDict,\n  isName,\n  isRef,\n  isStream,\n  Name,\n  Ref,\n} from \"./primitives.js\";\nimport {\n  ErrorFont,\n  Font,\n  FontFlags,\n  getFontType,\n  IdentityToUnicodeMap,\n  ToUnicodeMap,\n} from \"./fonts.js\";\nimport {\n  getEncoding,\n  MacRomanEncoding,\n  StandardEncoding,\n  SymbolSetEncoding,\n  WinAnsiEncoding,\n  ZapfDingbatsEncoding,\n} from \"./encodings.js\";\nimport { getLookupTableFactory, MissingDataException } from \"./core_utils.js\";\nimport {\n  getNormalizedUnicodes,\n  getUnicodeForGlyph,\n  reverseIfRtl,\n} from \"./unicode.js\";\nimport {\n  getSerifFonts,\n  getStdFontMap,\n  getSymbolsFonts,\n} from \"./standard_fonts.js\";\nimport { getTilingPatternIR, Pattern } from \"./pattern.js\";\nimport { Lexer, Parser } from \"./parser.js\";\nimport { bidi } from \"./bidi.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { DecodeStream } from \"./stream.js\";\nimport { getGlyphsUnicode } from \"./glyphlist.js\";\nimport { getMetrics } from \"./metrics.js\";\nimport { isPDFFunction } from \"./function.js\";\nimport { LocalImageCache } from \"./image_utils.js\";\nimport { MurmurHash3_64 } from \"./murmurhash3.js\";\nimport { OperatorList } from \"./operator_list.js\";\nimport { PDFImage } from \"./image.js\";\n\nvar PartialEvaluator = (function PartialEvaluatorClosure() {\n  const DefaultPartialEvaluatorOptions = {\n    maxImageSize: -1,\n    disableFontFace: false,\n    ignoreErrors: false,\n    isEvalSupported: true,\n    fontExtraProperties: false,\n  };\n\n  // eslint-disable-next-line no-shadow\n  function PartialEvaluator({\n    xref,\n    handler,\n    pageIndex,\n    idFactory,\n    fontCache,\n    builtInCMapCache,\n    globalImageCache,\n    options = null,\n    pdfFunctionFactory,\n  }) {\n    this.xref = xref;\n    this.handler = handler;\n    this.pageIndex = pageIndex;\n    this.idFactory = idFactory;\n    this.fontCache = fontCache;\n    this.builtInCMapCache = builtInCMapCache;\n    this.globalImageCache = globalImageCache;\n    this.options = options || DefaultPartialEvaluatorOptions;\n    this.pdfFunctionFactory = pdfFunctionFactory;\n    this.parsingType3Font = false;\n\n    this.fetchBuiltInCMap = async name => {\n      if (this.builtInCMapCache.has(name)) {\n        return this.builtInCMapCache.get(name);\n      }\n      const readableStream = this.handler.sendWithStream(\"FetchBuiltInCMap\", {\n        name,\n      });\n      const reader = readableStream.getReader();\n\n      const data = await new Promise(function (resolve, reject) {\n        function pump() {\n          reader.read().then(function ({ value, done }) {\n            if (done) {\n              return;\n            }\n            resolve(value);\n            pump();\n          }, reject);\n        }\n        pump();\n      });\n\n      if (data.compressionType !== CMapCompressionType.NONE) {\n        // Given the size of uncompressed CMaps, only cache compressed ones.\n        this.builtInCMapCache.set(name, data);\n      }\n      return data;\n    };\n  }\n\n  // Trying to minimize Date.now() usage and check every 100 time\n  var TIME_SLOT_DURATION_MS = 20;\n  var CHECK_TIME_EVERY = 100;\n  function TimeSlotManager() {\n    this.reset();\n  }\n  TimeSlotManager.prototype = {\n    check: function TimeSlotManager_check() {\n      if (++this.checked < CHECK_TIME_EVERY) {\n        return false;\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  // Convert PDF blend mode names to HTML5 blend mode names.\n  function normalizeBlendMode(value, parsingArray = false) {\n    if (Array.isArray(value)) {\n      // Use the first *supported* BM value in the Array (fixes issue11279.pdf).\n      for (let i = 0, ii = value.length; i < ii; i++) {\n        const maybeBM = normalizeBlendMode(value[i], /* parsingArray = */ true);\n        if (maybeBM) {\n          return maybeBM;\n        }\n      }\n      warn(`Unsupported blend mode Array: ${value}`);\n      return \"source-over\";\n    }\n\n    if (!isName(value)) {\n      if (parsingArray) {\n        return null;\n      }\n      return \"source-over\";\n    }\n    switch (value.name) {\n      case \"Normal\":\n      case \"Compatible\":\n        return \"source-over\";\n      case \"Multiply\":\n        return \"multiply\";\n      case \"Screen\":\n        return \"screen\";\n      case \"Overlay\":\n        return \"overlay\";\n      case \"Darken\":\n        return \"darken\";\n      case \"Lighten\":\n        return \"lighten\";\n      case \"ColorDodge\":\n        return \"color-dodge\";\n      case \"ColorBurn\":\n        return \"color-burn\";\n      case \"HardLight\":\n        return \"hard-light\";\n      case \"SoftLight\":\n        return \"soft-light\";\n      case \"Difference\":\n        return \"difference\";\n      case \"Exclusion\":\n        return \"exclusion\";\n      case \"Hue\":\n        return \"hue\";\n      case \"Saturation\":\n        return \"saturation\";\n      case \"Color\":\n        return \"color\";\n      case \"Luminosity\":\n        return \"luminosity\";\n    }\n    if (parsingArray) {\n      return null;\n    }\n    warn(`Unsupported blend mode: ${value.name}`);\n    return \"source-over\";\n  }\n\n  var deferred = Promise.resolve();\n\n  var TILING_PATTERN = 1,\n    SHADING_PATTERN = 2;\n\n  PartialEvaluator.prototype = {\n    clone(newOptions = DefaultPartialEvaluatorOptions) {\n      var newEvaluator = Object.create(this);\n      newEvaluator.options = newOptions;\n      return newEvaluator;\n    },\n\n    hasBlendModes: function PartialEvaluator_hasBlendModes(resources) {\n      if (!(resources instanceof Dict)) {\n        return false;\n      }\n\n      var processed = Object.create(null);\n      if (resources.objId) {\n        processed[resources.objId] = true;\n      }\n\n      var nodes = [resources],\n        xref = this.xref;\n      while (nodes.length) {\n        var node = nodes.shift();\n        // First check the current resources for blend modes.\n        var graphicStates = node.get(\"ExtGState\");\n        if (graphicStates instanceof Dict) {\n          var graphicStatesKeys = graphicStates.getKeys();\n          for (let i = 0, ii = graphicStatesKeys.length; i < ii; i++) {\n            const key = graphicStatesKeys[i];\n\n            let graphicState = graphicStates.getRaw(key);\n            if (graphicState instanceof Ref) {\n              if (processed[graphicState.toString()]) {\n                continue; // The ExtGState has already been processed.\n              }\n              try {\n                graphicState = xref.fetch(graphicState);\n              } catch (ex) {\n                if (ex instanceof MissingDataException) {\n                  throw ex;\n                }\n                if (this.options.ignoreErrors) {\n                  if (graphicState instanceof Ref) {\n                    // Avoid parsing a corrupt ExtGState more than once.\n                    processed[graphicState.toString()] = true;\n                  }\n                  // Error(s) in the ExtGState -- sending unsupported feature\n                  // notification and allow parsing/rendering to continue.\n                  this.handler.send(\"UnsupportedFeature\", {\n                    featureId: UNSUPPORTED_FEATURES.errorExtGState,\n                  });\n                  warn(`hasBlendModes - ignoring ExtGState: \"${ex}\".`);\n                  continue;\n                }\n                throw ex;\n              }\n            }\n            if (!(graphicState instanceof Dict)) {\n              continue;\n            }\n            if (graphicState.objId) {\n              processed[graphicState.objId] = true;\n            }\n\n            const bm = graphicState.get(\"BM\");\n            if (bm instanceof Name) {\n              if (bm.name !== \"Normal\") {\n                return true;\n              }\n              continue;\n            }\n            if (bm !== undefined && Array.isArray(bm)) {\n              for (let j = 0, jj = bm.length; j < jj; j++) {\n                if (bm[j] instanceof Name && bm[j].name !== \"Normal\") {\n                  return true;\n                }\n              }\n            }\n          }\n        }\n        // Descend into the XObjects to look for more resources and blend modes.\n        var xObjects = node.get(\"XObject\");\n        if (!(xObjects instanceof Dict)) {\n          continue;\n        }\n        var xObjectsKeys = xObjects.getKeys();\n        for (let i = 0, ii = xObjectsKeys.length; i < ii; i++) {\n          const key = xObjectsKeys[i];\n\n          var xObject = xObjects.getRaw(key);\n          if (xObject instanceof Ref) {\n            if (processed[xObject.toString()]) {\n              // The XObject has already been processed, and by avoiding a\n              // redundant `xref.fetch` we can *significantly* reduce the load\n              // time for badly generated PDF files (fixes issue6961.pdf).\n              continue;\n            }\n            try {\n              xObject = xref.fetch(xObject);\n            } catch (ex) {\n              if (ex instanceof MissingDataException) {\n                throw ex;\n              }\n              if (this.options.ignoreErrors) {\n                if (xObject instanceof Ref) {\n                  // Avoid parsing a corrupt XObject more than once.\n                  processed[xObject.toString()] = true;\n                }\n                // Error(s) in the XObject -- sending unsupported feature\n                // notification and allow parsing/rendering to continue.\n                this.handler.send(\"UnsupportedFeature\", {\n                  featureId: UNSUPPORTED_FEATURES.errorXObject,\n                });\n                warn(`hasBlendModes - ignoring XObject: \"${ex}\".`);\n                continue;\n              }\n              throw ex;\n            }\n          }\n          if (!isStream(xObject)) {\n            continue;\n          }\n          if (xObject.dict.objId) {\n            if (processed[xObject.dict.objId]) {\n              continue; // Stream has objId and was processed already.\n            }\n            processed[xObject.dict.objId] = true;\n          }\n          var xResources = xObject.dict.get(\"Resources\");\n          // Checking objId to detect an infinite loop.\n          if (\n            xResources instanceof Dict &&\n            (!xResources.objId || !processed[xResources.objId])\n          ) {\n            nodes.push(xResources);\n            if (xResources.objId) {\n              processed[xResources.objId] = true;\n            }\n          }\n        }\n      }\n      return false;\n    },\n\n    async buildFormXObject(\n      resources,\n      xobj,\n      smask,\n      operatorList,\n      task,\n      initialState\n    ) {\n      var dict = xobj.dict;\n      var matrix = dict.getArray(\"Matrix\");\n      var bbox = dict.getArray(\"BBox\");\n      if (Array.isArray(bbox) && bbox.length === 4) {\n        bbox = Util.normalizeRect(bbox);\n      } else {\n        bbox = null;\n      }\n      var group = dict.get(\"Group\");\n      if (group) {\n        var groupOptions = {\n          matrix,\n          bbox,\n          smask,\n          isolated: false,\n          knockout: false,\n        };\n\n        var groupSubtype = group.get(\"S\");\n        var colorSpace = null;\n        if (isName(groupSubtype, \"Transparency\")) {\n          groupOptions.isolated = group.get(\"I\") || false;\n          groupOptions.knockout = group.get(\"K\") || false;\n          if (group.has(\"CS\")) {\n            colorSpace = await this.parseColorSpace({\n              cs: group.get(\"CS\"),\n              resources,\n            });\n          }\n        }\n\n        if (smask && smask.backdrop) {\n          colorSpace = colorSpace || ColorSpace.singletons.rgb;\n          smask.backdrop = colorSpace.getRgb(smask.backdrop, 0);\n        }\n\n        operatorList.addOp(OPS.beginGroup, [groupOptions]);\n      }\n\n      operatorList.addOp(OPS.paintFormXObjectBegin, [matrix, bbox]);\n\n      return this.getOperatorList({\n        stream: xobj,\n        task,\n        resources: dict.get(\"Resources\") || resources,\n        operatorList,\n        initialState,\n      }).then(function () {\n        operatorList.addOp(OPS.paintFormXObjectEnd, []);\n\n        if (group) {\n          operatorList.addOp(OPS.endGroup, [groupOptions]);\n        }\n      });\n    },\n\n    async buildPaintImageXObject({\n      resources,\n      image,\n      isInline = false,\n      operatorList,\n      cacheKey,\n      localImageCache,\n    }) {\n      var dict = image.dict;\n      const imageRef = dict.objId;\n      var w = dict.get(\"Width\", \"W\");\n      var h = dict.get(\"Height\", \"H\");\n\n      if (!(w && isNum(w)) || !(h && isNum(h))) {\n        warn(\"Image dimensions are missing, or not numbers.\");\n        return undefined;\n      }\n      var maxImageSize = this.options.maxImageSize;\n      if (maxImageSize !== -1 && w * h > maxImageSize) {\n        warn(\"Image exceeded maximum allowed size and was removed.\");\n        return undefined;\n      }\n\n      var imageMask = dict.get(\"ImageMask\", \"IM\") || false;\n      var imgData, args;\n      if (imageMask) {\n        // This depends on a tmpCanvas being filled with the\n        // current fillStyle, such that processing the pixel\n        // data can't be done here. Instead of creating a\n        // complete PDFImage, only read the information needed\n        // for later.\n\n        var width = dict.get(\"Width\", \"W\");\n        var height = dict.get(\"Height\", \"H\");\n        var bitStrideLength = (width + 7) >> 3;\n        var imgArray = image.getBytes(\n          bitStrideLength * height,\n          /* forceClamped = */ true\n        );\n        var decode = dict.getArray(\"Decode\", \"D\");\n\n        imgData = PDFImage.createMask({\n          imgArray,\n          width,\n          height,\n          imageIsFromDecodeStream: image instanceof DecodeStream,\n          inverseDecode: !!decode && decode[0] > 0,\n        });\n        imgData.cached = !!cacheKey;\n        args = [imgData];\n\n        operatorList.addOp(OPS.paintImageMaskXObject, args);\n        if (cacheKey) {\n          localImageCache.set(cacheKey, imageRef, {\n            fn: OPS.paintImageMaskXObject,\n            args,\n          });\n        }\n        return undefined;\n      }\n\n      var softMask = dict.get(\"SMask\", \"SM\") || false;\n      var mask = dict.get(\"Mask\") || false;\n\n      var SMALL_IMAGE_DIMENSIONS = 200;\n      // Inlining small images into the queue as RGB data\n      if (isInline && !softMask && !mask && w + h < SMALL_IMAGE_DIMENSIONS) {\n        const imageObj = new PDFImage({\n          xref: this.xref,\n          res: resources,\n          image,\n          isInline,\n          pdfFunctionFactory: this.pdfFunctionFactory,\n        });\n        // We force the use of RGBA_32BPP images here, because we can't handle\n        // any other kind.\n        imgData = imageObj.createImageData(/* forceRGBA = */ true);\n        operatorList.addOp(OPS.paintInlineImageXObject, [imgData]);\n        return undefined;\n      }\n\n      // If there is no imageMask, create the PDFImage and a lot\n      // of image processing can be done here.\n      let objId = `img_${this.idFactory.createObjId()}`,\n        cacheGlobally = false;\n\n      if (this.parsingType3Font) {\n        objId = `${this.idFactory.getDocId()}_type3res_${objId}`;\n      } else if (imageRef) {\n        cacheGlobally = this.globalImageCache.shouldCache(\n          imageRef,\n          this.pageIndex\n        );\n\n        if (cacheGlobally) {\n          objId = `${this.idFactory.getDocId()}_${objId}`;\n        }\n      }\n\n      // Ensure that the dependency is added before the image is decoded.\n      operatorList.addDependency(objId);\n      args = [objId, w, h];\n\n      const imgPromise = PDFImage.buildImage({\n        xref: this.xref,\n        res: resources,\n        image,\n        isInline,\n        pdfFunctionFactory: this.pdfFunctionFactory,\n      })\n        .then(imageObj => {\n          imgData = imageObj.createImageData(/* forceRGBA = */ false);\n\n          if (this.parsingType3Font) {\n            return this.handler.sendWithPromise(\n              \"commonobj\",\n              [objId, \"FontType3Res\", imgData],\n              [imgData.data.buffer]\n            );\n          } else if (cacheGlobally) {\n            this.handler.send(\n              \"commonobj\",\n              [objId, \"Image\", imgData],\n              [imgData.data.buffer]\n            );\n            return undefined;\n          }\n          this.handler.send(\n            \"obj\",\n            [objId, this.pageIndex, \"Image\", imgData],\n            [imgData.data.buffer]\n          );\n          return undefined;\n        })\n        .catch(reason => {\n          warn(\"Unable to decode image: \" + reason);\n\n          if (this.parsingType3Font) {\n            return this.handler.sendWithPromise(\"commonobj\", [\n              objId,\n              \"FontType3Res\",\n              null,\n            ]);\n          } else if (cacheGlobally) {\n            this.handler.send(\"commonobj\", [objId, \"Image\", null]);\n            return undefined;\n          }\n          this.handler.send(\"obj\", [objId, this.pageIndex, \"Image\", null]);\n          return undefined;\n        });\n\n      if (this.parsingType3Font) {\n        // In the very rare case where a Type3 image resource is being parsed,\n        // wait for the image to be both decoded *and* sent to simplify the\n        // rendering code on the main-thread (see issue10717.pdf).\n        await imgPromise;\n      }\n\n      operatorList.addOp(OPS.paintImageXObject, args);\n      if (cacheKey) {\n        localImageCache.set(cacheKey, imageRef, {\n          fn: OPS.paintImageXObject,\n          args,\n        });\n\n        if (imageRef) {\n          assert(!isInline, \"Cannot cache an inline image globally.\");\n          this.globalImageCache.addPageIndex(imageRef, this.pageIndex);\n\n          if (cacheGlobally) {\n            this.globalImageCache.setData(imageRef, {\n              objId,\n              fn: OPS.paintImageXObject,\n              args,\n            });\n          }\n        }\n      }\n      return undefined;\n    },\n\n    handleSMask: function PartialEvaluator_handleSmask(\n      smask,\n      resources,\n      operatorList,\n      task,\n      stateManager\n    ) {\n      var smaskContent = smask.get(\"G\");\n      var smaskOptions = {\n        subtype: smask.get(\"S\").name,\n        backdrop: smask.get(\"BC\"),\n      };\n\n      // The SMask might have a alpha/luminosity value transfer function --\n      // we will build a map of integer values in range 0..255 to be fast.\n      var transferObj = smask.get(\"TR\");\n      if (isPDFFunction(transferObj)) {\n        const transferFn = this.pdfFunctionFactory.create(transferObj);\n        var transferMap = new Uint8Array(256);\n        var tmp = new Float32Array(1);\n        for (var i = 0; i < 256; i++) {\n          tmp[0] = i / 255;\n          transferFn(tmp, 0, tmp, 0);\n          transferMap[i] = (tmp[0] * 255) | 0;\n        }\n        smaskOptions.transferMap = transferMap;\n      }\n\n      return this.buildFormXObject(\n        resources,\n        smaskContent,\n        smaskOptions,\n        operatorList,\n        task,\n        stateManager.state.clone()\n      );\n    },\n\n    handleTilingType(\n      fn,\n      args,\n      resources,\n      pattern,\n      patternDict,\n      operatorList,\n      task\n    ) {\n      // Create an IR of the pattern code.\n      const tilingOpList = new OperatorList();\n      // Merge the available resources, to prevent issues when the patternDict\n      // is missing some /Resources entries (fixes issue6541.pdf).\n      const resourcesArray = [patternDict.get(\"Resources\"), resources];\n      const patternResources = Dict.merge(this.xref, resourcesArray);\n\n      return this.getOperatorList({\n        stream: pattern,\n        task,\n        resources: patternResources,\n        operatorList: tilingOpList,\n      })\n        .then(function () {\n          return getTilingPatternIR(\n            {\n              fnArray: tilingOpList.fnArray,\n              argsArray: tilingOpList.argsArray,\n            },\n            patternDict,\n            args\n          );\n        })\n        .then(\n          function (tilingPatternIR) {\n            // Add the dependencies to the parent operator list so they are\n            // resolved before the sub operator list is executed synchronously.\n            operatorList.addDependencies(tilingOpList.dependencies);\n            operatorList.addOp(fn, tilingPatternIR);\n          },\n          reason => {\n            if (reason instanceof AbortException) {\n              return;\n            }\n            if (this.options.ignoreErrors) {\n              // Error(s) in the TilingPattern -- sending unsupported feature\n              // notification and allow rendering to continue.\n              this.handler.send(\"UnsupportedFeature\", {\n                featureId: UNSUPPORTED_FEATURES.errorTilingPattern,\n              });\n              warn(`handleTilingType - ignoring pattern: \"${reason}\".`);\n              return;\n            }\n            throw reason;\n          }\n        );\n    },\n\n    handleSetFont: function PartialEvaluator_handleSetFont(\n      resources,\n      fontArgs,\n      fontRef,\n      operatorList,\n      task,\n      state\n    ) {\n      // TODO(mack): Not needed?\n      var fontName;\n      if (fontArgs) {\n        fontArgs = fontArgs.slice();\n        fontName = fontArgs[0].name;\n      }\n\n      return this.loadFont(fontName, fontRef, resources)\n        .then(translated => {\n          if (!translated.font.isType3Font) {\n            return translated;\n          }\n          return translated\n            .loadType3Data(this, resources, operatorList, task)\n            .then(function () {\n              return translated;\n            })\n            .catch(reason => {\n              // Error in the font data -- sending unsupported feature\n              // notification.\n              this.handler.send(\"UnsupportedFeature\", {\n                featureId: UNSUPPORTED_FEATURES.errorFontLoadType3,\n              });\n              return new TranslatedFont({\n                loadedName: \"g_font_error\",\n                font: new ErrorFont(`Type3 font load error: ${reason}`),\n                dict: translated.font,\n                extraProperties: this.options.fontExtraProperties,\n              });\n            });\n        })\n        .then(translated => {\n          state.font = translated.font;\n          translated.send(this.handler);\n          return translated.loadedName;\n        });\n    },\n\n    handleText(chars, state) {\n      const font = state.font;\n      const glyphs = font.charsToGlyphs(chars);\n\n      if (font.data) {\n        const isAddToPathSet = !!(\n          state.textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG\n        );\n        if (\n          isAddToPathSet ||\n          state.fillColorSpace.name === \"Pattern\" ||\n          font.disableFontFace ||\n          this.options.disableFontFace\n        ) {\n          PartialEvaluator.buildFontPaths(font, glyphs, this.handler);\n        }\n      }\n      return glyphs;\n    },\n\n    ensureStateFont(state) {\n      if (state.font) {\n        return;\n      }\n      const reason = new FormatError(\n        \"Missing setFont (Tf) operator before text rendering operator.\"\n      );\n\n      if (this.options.ignoreErrors) {\n        // Missing setFont operator before text rendering operator -- sending\n        // unsupported feature notification and allow rendering to continue.\n        this.handler.send(\"UnsupportedFeature\", {\n          featureId: UNSUPPORTED_FEATURES.errorFontState,\n        });\n        warn(`ensureStateFont: \"${reason}\".`);\n        return;\n      }\n      throw reason;\n    },\n\n    setGState: function PartialEvaluator_setGState(\n      resources,\n      gState,\n      operatorList,\n      task,\n      stateManager\n    ) {\n      // This array holds the converted/processed state data.\n      var gStateObj = [];\n      var gStateKeys = gState.getKeys();\n      var promise = Promise.resolve();\n      for (var i = 0, ii = gStateKeys.length; i < ii; i++) {\n        const key = gStateKeys[i];\n        const value = gState.get(key);\n        switch (key) {\n          case \"Type\":\n            break;\n          case \"LW\":\n          case \"LC\":\n          case \"LJ\":\n          case \"ML\":\n          case \"D\":\n          case \"RI\":\n          case \"FL\":\n          case \"CA\":\n          case \"ca\":\n            gStateObj.push([key, value]);\n            break;\n          case \"Font\":\n            promise = promise.then(() => {\n              return this.handleSetFont(\n                resources,\n                null,\n                value[0],\n                operatorList,\n                task,\n                stateManager.state\n              ).then(function (loadedName) {\n                operatorList.addDependency(loadedName);\n                gStateObj.push([key, [loadedName, value[1]]]);\n              });\n            });\n            break;\n          case \"BM\":\n            gStateObj.push([key, normalizeBlendMode(value)]);\n            break;\n          case \"SMask\":\n            if (isName(value, \"None\")) {\n              gStateObj.push([key, false]);\n              break;\n            }\n            if (isDict(value)) {\n              promise = promise.then(() => {\n                return this.handleSMask(\n                  value,\n                  resources,\n                  operatorList,\n                  task,\n                  stateManager\n                );\n              });\n              gStateObj.push([key, true]);\n            } else {\n              warn(\"Unsupported SMask type\");\n            }\n\n            break;\n          // Only generate info log messages for the following since\n          // they are unlikely to have a big impact on the rendering.\n          case \"OP\":\n          case \"op\":\n          case \"OPM\":\n          case \"BG\":\n          case \"BG2\":\n          case \"UCR\":\n          case \"UCR2\":\n          case \"TR\":\n          case \"TR2\":\n          case \"HT\":\n          case \"SM\":\n          case \"SA\":\n          case \"AIS\":\n          case \"TK\":\n            // TODO implement these operators.\n            info(\"graphic state operator \" + key);\n            break;\n          default:\n            info(\"Unknown graphic state operator \" + key);\n            break;\n        }\n      }\n      return promise.then(function () {\n        if (gStateObj.length > 0) {\n          operatorList.addOp(OPS.setGState, [gStateObj]);\n        }\n      });\n    },\n\n    loadFont: function PartialEvaluator_loadFont(fontName, font, resources) {\n      const errorFont = () => {\n        return Promise.resolve(\n          new TranslatedFont({\n            loadedName: \"g_font_error\",\n            font: new ErrorFont(`Font \"${fontName}\" is not available.`),\n            dict: font,\n            extraProperties: this.options.fontExtraProperties,\n          })\n        );\n      };\n\n      var fontRef,\n        xref = this.xref;\n      if (font) {\n        // Loading by ref.\n        if (!isRef(font)) {\n          throw new FormatError('The \"font\" object should be a reference.');\n        }\n        fontRef = font;\n      } else {\n        // Loading by name.\n        var fontRes = resources.get(\"Font\");\n        if (fontRes) {\n          fontRef = fontRes.getRaw(fontName);\n        }\n      }\n      if (!fontRef) {\n        const partialMsg = `Font \"${\n          fontName || (font && font.toString())\n        }\" is not available`;\n\n        if (!this.options.ignoreErrors && !this.parsingType3Font) {\n          warn(`${partialMsg}.`);\n          return errorFont();\n        }\n        // Font not found -- sending unsupported feature notification.\n        this.handler.send(\"UnsupportedFeature\", {\n          featureId: UNSUPPORTED_FEATURES.errorFontMissing,\n        });\n        warn(`${partialMsg} -- attempting to fallback to a default font.`);\n\n        // Falling back to a default font to avoid completely broken rendering,\n        // but note that there're no guarantees that things will look \"correct\".\n        fontRef = PartialEvaluator.getFallbackFontDict();\n      }\n\n      if (this.fontCache.has(fontRef)) {\n        return this.fontCache.get(fontRef);\n      }\n\n      font = xref.fetchIfRef(fontRef);\n      if (!isDict(font)) {\n        return errorFont();\n      }\n\n      // We are holding `font.translated` references just for `fontRef`s that\n      // are not actually `Ref`s, but rather `Dict`s. See explanation below.\n      if (font.translated) {\n        return font.translated;\n      }\n\n      var fontCapability = createPromiseCapability();\n\n      var preEvaluatedFont = this.preEvaluateFont(font);\n      const { descriptor, hash } = preEvaluatedFont;\n\n      var fontRefIsRef = isRef(fontRef),\n        fontID;\n      if (fontRefIsRef) {\n        fontID = fontRef.toString();\n      }\n\n      if (hash && isDict(descriptor)) {\n        if (!descriptor.fontAliases) {\n          descriptor.fontAliases = Object.create(null);\n        }\n        var fontAliases = descriptor.fontAliases;\n\n        if (fontAliases[hash]) {\n          var aliasFontRef = fontAliases[hash].aliasRef;\n          if (\n            fontRefIsRef &&\n            aliasFontRef &&\n            this.fontCache.has(aliasFontRef)\n          ) {\n            this.fontCache.putAlias(fontRef, aliasFontRef);\n            return this.fontCache.get(fontRef);\n          }\n        } else {\n          fontAliases[hash] = {\n            fontID: Font.getFontID(),\n          };\n        }\n\n        if (fontRefIsRef) {\n          fontAliases[hash].aliasRef = fontRef;\n        }\n        fontID = fontAliases[hash].fontID;\n      }\n\n      // Workaround for bad PDF generators that reference fonts incorrectly,\n      // where `fontRef` is a `Dict` rather than a `Ref` (fixes bug946506.pdf).\n      // In this case we should not put the font into `this.fontCache` (which is\n      // a `RefSetCache`), since it's not meaningful to use a `Dict` as a key.\n      //\n      // However, if we don't cache the font it's not possible to remove it\n      // when `cleanup` is triggered from the API, which causes issues on\n      // subsequent rendering operations (see issue7403.pdf).\n      // A simple workaround would be to just not hold `font.translated`\n      // references in this case, but this would force us to unnecessarily load\n      // the same fonts over and over.\n      //\n      // Instead, we cheat a bit by attempting to use a modified `fontID` as a\n      // key in `this.fontCache`, to allow the font to be cached.\n      // NOTE: This works because `RefSetCache` calls `toString()` on provided\n      //       keys. Also, since `fontRef` is used when getting cached fonts,\n      //       we'll not accidentally match fonts cached with the `fontID`.\n      if (fontRefIsRef) {\n        this.fontCache.put(fontRef, fontCapability.promise);\n      } else {\n        if (!fontID) {\n          fontID = this.idFactory.createObjId();\n        }\n        this.fontCache.put(`id_${fontID}`, fontCapability.promise);\n      }\n      assert(fontID, 'The \"fontID\" must be defined.');\n\n      // Keep track of each font we translated so the caller can\n      // load them asynchronously before calling display on a page.\n      font.loadedName = `${this.idFactory.getDocId()}_f${fontID}`;\n\n      font.translated = fontCapability.promise;\n\n      // TODO move promises into translate font\n      var translatedPromise;\n      try {\n        translatedPromise = this.translateFont(preEvaluatedFont);\n      } catch (e) {\n        translatedPromise = Promise.reject(e);\n      }\n\n      translatedPromise\n        .then(translatedFont => {\n          if (translatedFont.fontType !== undefined) {\n            var xrefFontStats = xref.stats.fontTypes;\n            xrefFontStats[translatedFont.fontType] = true;\n          }\n\n          fontCapability.resolve(\n            new TranslatedFont({\n              loadedName: font.loadedName,\n              font: translatedFont,\n              dict: font,\n              extraProperties: this.options.fontExtraProperties,\n            })\n          );\n        })\n        .catch(reason => {\n          // TODO fontCapability.reject?\n          // Error in the font data -- sending unsupported feature notification.\n          this.handler.send(\"UnsupportedFeature\", {\n            featureId: UNSUPPORTED_FEATURES.errorFontTranslate,\n          });\n\n          try {\n            // error, but it's still nice to have font type reported\n            var fontFile3 = descriptor && descriptor.get(\"FontFile3\");\n            var subtype = fontFile3 && fontFile3.get(\"Subtype\");\n            var fontType = getFontType(\n              preEvaluatedFont.type,\n              subtype && subtype.name\n            );\n            var xrefFontStats = xref.stats.fontTypes;\n            xrefFontStats[fontType] = true;\n          } catch (ex) {}\n\n          fontCapability.resolve(\n            new TranslatedFont({\n              loadedName: font.loadedName,\n              font: new ErrorFont(\n                reason instanceof Error ? reason.message : reason\n              ),\n              dict: font,\n              extraProperties: this.options.fontExtraProperties,\n            })\n          );\n        });\n      return fontCapability.promise;\n    },\n\n    buildPath(operatorList, fn, args, parsingText = false) {\n      var lastIndex = operatorList.length - 1;\n      if (!args) {\n        args = [];\n      }\n      if (\n        lastIndex < 0 ||\n        operatorList.fnArray[lastIndex] !== OPS.constructPath\n      ) {\n        // Handle corrupt PDF documents that contains path operators inside of\n        // text objects, which may shift subsequent text, by enclosing the path\n        // operator in save/restore operators (fixes issue10542_reduced.pdf).\n        //\n        // Note that this will effectively disable the optimization in the\n        // `else` branch below, but given that this type of corruption is\n        // *extremely* rare that shouldn't really matter much in practice.\n        if (parsingText) {\n          warn(`Encountered path operator \"${fn}\" inside of a text object.`);\n          operatorList.addOp(OPS.save, null);\n        }\n\n        operatorList.addOp(OPS.constructPath, [[fn], args]);\n\n        if (parsingText) {\n          operatorList.addOp(OPS.restore, null);\n        }\n      } else {\n        var opArgs = operatorList.argsArray[lastIndex];\n        opArgs[0].push(fn);\n        Array.prototype.push.apply(opArgs[1], args);\n      }\n    },\n\n    parseColorSpace({ cs, resources }) {\n      return new Promise(resolve => {\n        resolve(\n          ColorSpace.parse(cs, this.xref, resources, this.pdfFunctionFactory)\n        );\n      }).catch(reason => {\n        if (reason instanceof AbortException) {\n          return null;\n        }\n        if (this.options.ignoreErrors) {\n          // Error(s) in the ColorSpace -- sending unsupported feature\n          // notification and allow rendering to continue.\n          this.handler.send(\"UnsupportedFeature\", {\n            featureId: UNSUPPORTED_FEATURES.errorColorSpace,\n          });\n          warn(`parseColorSpace - ignoring ColorSpace: \"${reason}\".`);\n          return null;\n        }\n        throw reason;\n      });\n    },\n\n    async handleColorN(operatorList, fn, args, cs, patterns, resources, task) {\n      // compile tiling patterns\n      var patternName = args[args.length - 1];\n      // SCN/scn applies patterns along with normal colors\n      var pattern;\n      if (isName(patternName) && (pattern = patterns.get(patternName.name))) {\n        var dict = isStream(pattern) ? pattern.dict : pattern;\n        var typeNum = dict.get(\"PatternType\");\n\n        if (typeNum === TILING_PATTERN) {\n          var color = cs.base ? cs.base.getRgb(args, 0) : null;\n          return this.handleTilingType(\n            fn,\n            color,\n            resources,\n            pattern,\n            dict,\n            operatorList,\n            task\n          );\n        } else if (typeNum === SHADING_PATTERN) {\n          var shading = dict.get(\"Shading\");\n          var matrix = dict.getArray(\"Matrix\");\n          pattern = Pattern.parseShading(\n            shading,\n            matrix,\n            this.xref,\n            resources,\n            this.handler,\n            this.pdfFunctionFactory\n          );\n          operatorList.addOp(fn, pattern.getIR());\n          return undefined;\n        }\n        throw new FormatError(`Unknown PatternType: ${typeNum}`);\n      }\n      throw new FormatError(`Unknown PatternName: ${patternName}`);\n    },\n\n    getOperatorList({\n      stream,\n      task,\n      resources,\n      operatorList,\n      initialState = null,\n    }) {\n      // Ensure that `resources`/`initialState` is correctly initialized,\n      // even if the provided parameter is e.g. `null`.\n      resources = resources || Dict.empty;\n      initialState = initialState || new EvalState();\n\n      if (!operatorList) {\n        throw new Error('getOperatorList: missing \"operatorList\" parameter');\n      }\n\n      var self = this;\n      var xref = this.xref;\n      let parsingText = false;\n      const localImageCache = new LocalImageCache();\n\n      var xobjs = resources.get(\"XObject\") || Dict.empty;\n      var patterns = resources.get(\"Pattern\") || Dict.empty;\n      var stateManager = new StateManager(initialState);\n      var preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n      var timeSlotManager = new TimeSlotManager();\n\n      function closePendingRestoreOPS(argument) {\n        for (var i = 0, ii = preprocessor.savedStatesDepth; i < ii; i++) {\n          operatorList.addOp(OPS.restore, []);\n        }\n      }\n\n      return new Promise(function promiseBody(resolve, reject) {\n        const next = function (promise) {\n          Promise.all([promise, operatorList.ready]).then(function () {\n            try {\n              promiseBody(resolve, reject);\n            } catch (ex) {\n              reject(ex);\n            }\n          }, reject);\n        };\n        task.ensureNotTerminated();\n        timeSlotManager.reset();\n        var stop,\n          operation = {},\n          i,\n          ii,\n          cs;\n        while (!(stop = timeSlotManager.check())) {\n          // The arguments parsed by read() are used beyond this loop, so we\n          // cannot reuse the same array on each iteration. Therefore we pass\n          // in |null| as the initial value (see the comment on\n          // EvaluatorPreprocessor_read() for why).\n          operation.args = null;\n          if (!preprocessor.read(operation)) {\n            break;\n          }\n          var args = operation.args;\n          var fn = operation.fn;\n\n          switch (fn | 0) {\n            case OPS.paintXObject:\n              // eagerly compile XForm objects\n              var name = args[0].name;\n              if (name) {\n                const localImage = localImageCache.getByName(name);\n                if (localImage) {\n                  operatorList.addOp(localImage.fn, localImage.args);\n                  args = null;\n                  continue;\n                }\n              }\n\n              next(\n                new Promise(function (resolveXObject, rejectXObject) {\n                  if (!name) {\n                    throw new FormatError(\n                      \"XObject must be referred to by name.\"\n                    );\n                  }\n\n                  let xobj = xobjs.getRaw(name);\n                  if (xobj instanceof Ref) {\n                    const localImage = localImageCache.getByRef(xobj);\n                    if (localImage) {\n                      operatorList.addOp(localImage.fn, localImage.args);\n\n                      resolveXObject();\n                      return;\n                    }\n\n                    const globalImage = self.globalImageCache.getData(\n                      xobj,\n                      self.pageIndex\n                    );\n                    if (globalImage) {\n                      operatorList.addDependency(globalImage.objId);\n                      operatorList.addOp(globalImage.fn, globalImage.args);\n\n                      resolveXObject();\n                      return;\n                    }\n\n                    xobj = xref.fetch(xobj);\n                  }\n\n                  if (!xobj) {\n                    operatorList.addOp(fn, args);\n                    resolveXObject();\n                    return;\n                  }\n                  if (!isStream(xobj)) {\n                    throw new FormatError(\"XObject should be a stream\");\n                  }\n\n                  const type = xobj.dict.get(\"Subtype\");\n                  if (!isName(type)) {\n                    throw new FormatError(\"XObject should have a Name subtype\");\n                  }\n\n                  if (type.name === \"Form\") {\n                    stateManager.save();\n                    self\n                      .buildFormXObject(\n                        resources,\n                        xobj,\n                        null,\n                        operatorList,\n                        task,\n                        stateManager.state.clone()\n                      )\n                      .then(function () {\n                        stateManager.restore();\n                        resolveXObject();\n                      }, rejectXObject);\n                    return;\n                  } else if (type.name === \"Image\") {\n                    self\n                      .buildPaintImageXObject({\n                        resources,\n                        image: xobj,\n                        operatorList,\n                        cacheKey: name,\n                        localImageCache,\n                      })\n                      .then(resolveXObject, rejectXObject);\n                    return;\n                  } else if (type.name === \"PS\") {\n                    // PostScript XObjects are unused when viewing documents.\n                    // See section 4.7.1 of Adobe's PDF reference.\n                    info(\"Ignored XObject subtype PS\");\n                  } else {\n                    throw new FormatError(\n                      `Unhandled XObject subtype ${type.name}`\n                    );\n                  }\n                  resolveXObject();\n                }).catch(function (reason) {\n                  if (reason instanceof AbortException) {\n                    return;\n                  }\n                  if (self.options.ignoreErrors) {\n                    // Error(s) in the XObject -- sending unsupported feature\n                    // notification and allow rendering to continue.\n                    self.handler.send(\"UnsupportedFeature\", {\n                      featureId: UNSUPPORTED_FEATURES.errorXObject,\n                    });\n                    warn(`getOperatorList - ignoring XObject: \"${reason}\".`);\n                    return;\n                  }\n                  throw reason;\n                })\n              );\n              return;\n            case OPS.setFont:\n              var fontSize = args[1];\n              // eagerly collect all fonts\n              next(\n                self\n                  .handleSetFont(\n                    resources,\n                    args,\n                    null,\n                    operatorList,\n                    task,\n                    stateManager.state\n                  )\n                  .then(function (loadedName) {\n                    operatorList.addDependency(loadedName);\n                    operatorList.addOp(OPS.setFont, [loadedName, fontSize]);\n                  })\n              );\n              return;\n            case OPS.beginText:\n              parsingText = true;\n              break;\n            case OPS.endText:\n              parsingText = false;\n              break;\n            case OPS.endInlineImage:\n              var cacheKey = args[0].cacheKey;\n              if (cacheKey) {\n                const localImage = localImageCache.getByName(cacheKey);\n                if (localImage) {\n                  operatorList.addOp(localImage.fn, localImage.args);\n                  args = null;\n                  continue;\n                }\n              }\n              next(\n                self.buildPaintImageXObject({\n                  resources,\n                  image: args[0],\n                  isInline: true,\n                  operatorList,\n                  cacheKey,\n                  localImageCache,\n                })\n              );\n              return;\n            case OPS.showText:\n              if (!stateManager.state.font) {\n                self.ensureStateFont(stateManager.state);\n                continue;\n              }\n              args[0] = self.handleText(args[0], stateManager.state);\n              break;\n            case OPS.showSpacedText:\n              if (!stateManager.state.font) {\n                self.ensureStateFont(stateManager.state);\n                continue;\n              }\n              var arr = args[0];\n              var combinedGlyphs = [];\n              var arrLength = arr.length;\n              var state = stateManager.state;\n              for (i = 0; i < arrLength; ++i) {\n                var arrItem = arr[i];\n                if (isString(arrItem)) {\n                  Array.prototype.push.apply(\n                    combinedGlyphs,\n                    self.handleText(arrItem, state)\n                  );\n                } else if (isNum(arrItem)) {\n                  combinedGlyphs.push(arrItem);\n                }\n              }\n              args[0] = combinedGlyphs;\n              fn = OPS.showText;\n              break;\n            case OPS.nextLineShowText:\n              if (!stateManager.state.font) {\n                self.ensureStateFont(stateManager.state);\n                continue;\n              }\n              operatorList.addOp(OPS.nextLine);\n              args[0] = self.handleText(args[0], stateManager.state);\n              fn = OPS.showText;\n              break;\n            case OPS.nextLineSetSpacingShowText:\n              if (!stateManager.state.font) {\n                self.ensureStateFont(stateManager.state);\n                continue;\n              }\n              operatorList.addOp(OPS.nextLine);\n              operatorList.addOp(OPS.setWordSpacing, [args.shift()]);\n              operatorList.addOp(OPS.setCharSpacing, [args.shift()]);\n              args[0] = self.handleText(args[0], stateManager.state);\n              fn = OPS.showText;\n              break;\n            case OPS.setTextRenderingMode:\n              stateManager.state.textRenderingMode = args[0];\n              break;\n\n            case OPS.setFillColorSpace:\n              next(\n                self\n                  .parseColorSpace({\n                    cs: args[0],\n                    resources,\n                  })\n                  .then(function (colorSpace) {\n                    if (colorSpace) {\n                      stateManager.state.fillColorSpace = colorSpace;\n                    }\n                  })\n              );\n              return;\n            case OPS.setStrokeColorSpace:\n              next(\n                self\n                  .parseColorSpace({\n                    cs: args[0],\n                    resources,\n                  })\n                  .then(function (colorSpace) {\n                    if (colorSpace) {\n                      stateManager.state.strokeColorSpace = colorSpace;\n                    }\n                  })\n              );\n              return;\n            case OPS.setFillColor:\n              cs = stateManager.state.fillColorSpace;\n              args = cs.getRgb(args, 0);\n              fn = OPS.setFillRGBColor;\n              break;\n            case OPS.setStrokeColor:\n              cs = stateManager.state.strokeColorSpace;\n              args = cs.getRgb(args, 0);\n              fn = OPS.setStrokeRGBColor;\n              break;\n            case OPS.setFillGray:\n              stateManager.state.fillColorSpace = ColorSpace.singletons.gray;\n              args = ColorSpace.singletons.gray.getRgb(args, 0);\n              fn = OPS.setFillRGBColor;\n              break;\n            case OPS.setStrokeGray:\n              stateManager.state.strokeColorSpace = ColorSpace.singletons.gray;\n              args = ColorSpace.singletons.gray.getRgb(args, 0);\n              fn = OPS.setStrokeRGBColor;\n              break;\n            case OPS.setFillCMYKColor:\n              stateManager.state.fillColorSpace = ColorSpace.singletons.cmyk;\n              args = ColorSpace.singletons.cmyk.getRgb(args, 0);\n              fn = OPS.setFillRGBColor;\n              break;\n            case OPS.setStrokeCMYKColor:\n              stateManager.state.strokeColorSpace = ColorSpace.singletons.cmyk;\n              args = ColorSpace.singletons.cmyk.getRgb(args, 0);\n              fn = OPS.setStrokeRGBColor;\n              break;\n            case OPS.setFillRGBColor:\n              stateManager.state.fillColorSpace = ColorSpace.singletons.rgb;\n              args = ColorSpace.singletons.rgb.getRgb(args, 0);\n              break;\n            case OPS.setStrokeRGBColor:\n              stateManager.state.strokeColorSpace = ColorSpace.singletons.rgb;\n              args = ColorSpace.singletons.rgb.getRgb(args, 0);\n              break;\n            case OPS.setFillColorN:\n              cs = stateManager.state.fillColorSpace;\n              if (cs.name === \"Pattern\") {\n                next(\n                  self.handleColorN(\n                    operatorList,\n                    OPS.setFillColorN,\n                    args,\n                    cs,\n                    patterns,\n                    resources,\n                    task\n                  )\n                );\n                return;\n              }\n              args = cs.getRgb(args, 0);\n              fn = OPS.setFillRGBColor;\n              break;\n            case OPS.setStrokeColorN:\n              cs = stateManager.state.strokeColorSpace;\n              if (cs.name === \"Pattern\") {\n                next(\n                  self.handleColorN(\n                    operatorList,\n                    OPS.setStrokeColorN,\n                    args,\n                    cs,\n                    patterns,\n                    resources,\n                    task\n                  )\n                );\n                return;\n              }\n              args = cs.getRgb(args, 0);\n              fn = OPS.setStrokeRGBColor;\n              break;\n\n            case OPS.shadingFill:\n              var shadingRes = resources.get(\"Shading\");\n              if (!shadingRes) {\n                throw new FormatError(\"No shading resource found\");\n              }\n\n              var shading = shadingRes.get(args[0].name);\n              if (!shading) {\n                throw new FormatError(\"No shading object found\");\n              }\n\n              var shadingFill = Pattern.parseShading(\n                shading,\n                null,\n                xref,\n                resources,\n                self.handler,\n                self.pdfFunctionFactory\n              );\n              var patternIR = shadingFill.getIR();\n              args = [patternIR];\n              fn = OPS.shadingFill;\n              break;\n            case OPS.setGState:\n              var dictName = args[0];\n              var extGState = resources.get(\"ExtGState\");\n\n              if (!isDict(extGState) || !extGState.has(dictName.name)) {\n                break;\n              }\n\n              var gState = extGState.get(dictName.name);\n              next(\n                self.setGState(\n                  resources,\n                  gState,\n                  operatorList,\n                  task,\n                  stateManager\n                )\n              );\n              return;\n            case OPS.moveTo:\n            case OPS.lineTo:\n            case OPS.curveTo:\n            case OPS.curveTo2:\n            case OPS.curveTo3:\n            case OPS.closePath:\n            case OPS.rectangle:\n              self.buildPath(operatorList, fn, args, parsingText);\n              continue;\n            case OPS.markPoint:\n            case OPS.markPointProps:\n            case OPS.beginMarkedContent:\n            case OPS.beginMarkedContentProps:\n            case OPS.endMarkedContent:\n            case OPS.beginCompat:\n            case OPS.endCompat:\n              // Ignore operators where the corresponding handlers are known to\n              // be no-op in CanvasGraphics (display/canvas.js). This prevents\n              // serialization errors and is also a bit more efficient.\n              // We could also try to serialize all objects in a general way,\n              // e.g. as done in https://github.com/mozilla/pdf.js/pull/6266,\n              // but doing so is meaningless without knowing the semantics.\n              continue;\n            default:\n              // Note: Ignore the operator if it has `Dict` arguments, since\n              // those are non-serializable, otherwise postMessage will throw\n              // \"An object could not be cloned.\".\n              if (args !== null) {\n                for (i = 0, ii = args.length; i < ii; i++) {\n                  if (args[i] instanceof Dict) {\n                    break;\n                  }\n                }\n                if (i < ii) {\n                  warn(\"getOperatorList - ignoring operator: \" + fn);\n                  continue;\n                }\n              }\n          }\n          operatorList.addOp(fn, args);\n        }\n        if (stop) {\n          next(deferred);\n          return;\n        }\n        // Some PDFs don't close all restores inside object/form.\n        // Closing those for them.\n        closePendingRestoreOPS();\n        resolve();\n      }).catch(reason => {\n        if (reason instanceof AbortException) {\n          return;\n        }\n        if (this.options.ignoreErrors) {\n          // Error(s) in the OperatorList -- sending unsupported feature\n          // notification and allow rendering to continue.\n          this.handler.send(\"UnsupportedFeature\", {\n            featureId: UNSUPPORTED_FEATURES.errorOperatorList,\n          });\n          warn(\n            `getOperatorList - ignoring errors during \"${task.name}\" ` +\n              `task: \"${reason}\".`\n          );\n\n          closePendingRestoreOPS();\n          return;\n        }\n        throw reason;\n      });\n    },\n\n    getTextContent({\n      stream,\n      task,\n      resources,\n      stateManager = null,\n      normalizeWhitespace = false,\n      combineTextItems = false,\n      sink,\n      seenStyles = Object.create(null),\n    }) {\n      // Ensure that `resources`/`stateManager` is correctly initialized,\n      // even if the provided parameter is e.g. `null`.\n      resources = resources || Dict.empty;\n      stateManager = stateManager || new StateManager(new TextState());\n\n      var WhitespaceRegexp = /\\s/g;\n\n      var textContent = {\n        items: [],\n        styles: Object.create(null),\n      };\n      var textContentItem = {\n        initialized: false,\n        str: [],\n        width: 0,\n        height: 0,\n        vertical: false,\n        lastAdvanceWidth: 0,\n        lastAdvanceHeight: 0,\n        textAdvanceScale: 0,\n        spaceWidth: 0,\n        fakeSpaceMin: Infinity,\n        fakeMultiSpaceMin: Infinity,\n        fakeMultiSpaceMax: -0,\n        textRunBreakAllowed: false,\n        transform: null,\n        fontName: null,\n      };\n      var SPACE_FACTOR = 0.3;\n      var MULTI_SPACE_FACTOR = 1.5;\n      var MULTI_SPACE_FACTOR_MAX = 4;\n\n      var self = this;\n      var xref = this.xref;\n\n      // The xobj is parsed iff it's needed, e.g. if there is a `DO` cmd.\n      var xobjs = null;\n      const emptyXObjectCache = new LocalImageCache();\n\n      var preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n\n      var textState;\n\n      function ensureTextContentItem() {\n        if (textContentItem.initialized) {\n          return textContentItem;\n        }\n        var font = textState.font;\n        if (!(font.loadedName in seenStyles)) {\n          seenStyles[font.loadedName] = true;\n          textContent.styles[font.loadedName] = {\n            fontFamily: font.fallbackName,\n            ascent: font.ascent,\n            descent: font.descent,\n            vertical: font.vertical,\n          };\n        }\n        textContentItem.fontName = font.loadedName;\n\n        // 9.4.4 Text Space Details\n        var tsm = [\n          textState.fontSize * textState.textHScale,\n          0,\n          0,\n          textState.fontSize,\n          0,\n          textState.textRise,\n        ];\n\n        if (\n          font.isType3Font &&\n          textState.fontSize <= 1 &&\n          !isArrayEqual(textState.fontMatrix, FONT_IDENTITY_MATRIX)\n        ) {\n          const glyphHeight = font.bbox[3] - font.bbox[1];\n          if (glyphHeight > 0) {\n            tsm[3] *= glyphHeight * textState.fontMatrix[3];\n          }\n        }\n\n        var trm = Util.transform(\n          textState.ctm,\n          Util.transform(textState.textMatrix, tsm)\n        );\n        textContentItem.transform = trm;\n        if (!font.vertical) {\n          textContentItem.width = 0;\n          textContentItem.height = Math.sqrt(trm[2] * trm[2] + trm[3] * trm[3]);\n          textContentItem.vertical = false;\n        } else {\n          textContentItem.width = Math.sqrt(trm[0] * trm[0] + trm[1] * trm[1]);\n          textContentItem.height = 0;\n          textContentItem.vertical = true;\n        }\n\n        var a = textState.textLineMatrix[0];\n        var b = textState.textLineMatrix[1];\n        var scaleLineX = Math.sqrt(a * a + b * b);\n        a = textState.ctm[0];\n        b = textState.ctm[1];\n        var scaleCtmX = Math.sqrt(a * a + b * b);\n        textContentItem.textAdvanceScale = scaleCtmX * scaleLineX;\n        textContentItem.lastAdvanceWidth = 0;\n        textContentItem.lastAdvanceHeight = 0;\n\n        var spaceWidth = (font.spaceWidth / 1000) * textState.fontSize;\n        if (spaceWidth) {\n          textContentItem.spaceWidth = spaceWidth;\n          textContentItem.fakeSpaceMin = spaceWidth * SPACE_FACTOR;\n          textContentItem.fakeMultiSpaceMin = spaceWidth * MULTI_SPACE_FACTOR;\n          textContentItem.fakeMultiSpaceMax =\n            spaceWidth * MULTI_SPACE_FACTOR_MAX;\n          // It's okay for monospace fonts to fake as much space as needed.\n          textContentItem.textRunBreakAllowed = !font.isMonospace;\n        } else {\n          textContentItem.spaceWidth = 0;\n          textContentItem.fakeSpaceMin = Infinity;\n          textContentItem.fakeMultiSpaceMin = Infinity;\n          textContentItem.fakeMultiSpaceMax = 0;\n          textContentItem.textRunBreakAllowed = false;\n        }\n\n        textContentItem.initialized = true;\n        return textContentItem;\n      }\n\n      function replaceWhitespace(str) {\n        // Replaces all whitespaces with standard spaces (0x20), to avoid\n        // alignment issues between the textLayer and the canvas if the text\n        // contains e.g. tabs (fixes issue6612.pdf).\n        var i = 0,\n          ii = str.length,\n          code;\n        while (i < ii && (code = str.charCodeAt(i)) >= 0x20 && code <= 0x7f) {\n          i++;\n        }\n        return i < ii ? str.replace(WhitespaceRegexp, \" \") : str;\n      }\n\n      function runBidiTransform(textChunk) {\n        var str = textChunk.str.join(\"\");\n        var bidiResult = bidi(str, -1, textChunk.vertical);\n        return {\n          str: normalizeWhitespace\n            ? replaceWhitespace(bidiResult.str)\n            : bidiResult.str,\n          dir: bidiResult.dir,\n          width: textChunk.width,\n          height: textChunk.height,\n          transform: textChunk.transform,\n          fontName: textChunk.fontName,\n        };\n      }\n\n      function handleSetFont(fontName, fontRef) {\n        return self\n          .loadFont(fontName, fontRef, resources)\n          .then(function (translated) {\n            textState.font = translated.font;\n            textState.fontMatrix =\n              translated.font.fontMatrix || FONT_IDENTITY_MATRIX;\n          });\n      }\n\n      function buildTextContentItem(chars) {\n        var font = textState.font;\n        var textChunk = ensureTextContentItem();\n        var width = 0;\n        var height = 0;\n        var glyphs = font.charsToGlyphs(chars);\n        for (var i = 0; i < glyphs.length; i++) {\n          var glyph = glyphs[i];\n          var glyphWidth = null;\n          if (font.vertical && glyph.vmetric) {\n            glyphWidth = glyph.vmetric[0];\n          } else {\n            glyphWidth = glyph.width;\n          }\n\n          var glyphUnicode = glyph.unicode;\n          var NormalizedUnicodes = getNormalizedUnicodes();\n          if (NormalizedUnicodes[glyphUnicode] !== undefined) {\n            glyphUnicode = NormalizedUnicodes[glyphUnicode];\n          }\n          glyphUnicode = reverseIfRtl(glyphUnicode);\n\n          var charSpacing = textState.charSpacing;\n          if (glyph.isSpace) {\n            var wordSpacing = textState.wordSpacing;\n            charSpacing += wordSpacing;\n            if (wordSpacing > 0) {\n              addFakeSpaces(wordSpacing, textChunk.str);\n            }\n          }\n\n          var tx = 0;\n          var ty = 0;\n          if (!font.vertical) {\n            var w0 = glyphWidth * textState.fontMatrix[0];\n            tx = (w0 * textState.fontSize + charSpacing) * textState.textHScale;\n            width += tx;\n          } else {\n            var w1 = glyphWidth * textState.fontMatrix[0];\n            ty = w1 * textState.fontSize + charSpacing;\n            height += ty;\n          }\n          textState.translateTextMatrix(tx, ty);\n\n          textChunk.str.push(glyphUnicode);\n        }\n\n        if (!font.vertical) {\n          textChunk.lastAdvanceWidth = width;\n          textChunk.width += width;\n        } else {\n          textChunk.lastAdvanceHeight = height;\n          textChunk.height += Math.abs(height);\n        }\n\n        return textChunk;\n      }\n\n      function addFakeSpaces(width, strBuf) {\n        if (width < textContentItem.fakeSpaceMin) {\n          return;\n        }\n        if (width < textContentItem.fakeMultiSpaceMin) {\n          strBuf.push(\" \");\n          return;\n        }\n        var fakeSpaces = Math.round(width / textContentItem.spaceWidth);\n        while (fakeSpaces-- > 0) {\n          strBuf.push(\" \");\n        }\n      }\n\n      function flushTextContentItem() {\n        if (!textContentItem.initialized) {\n          return;\n        }\n\n        // Do final text scaling.\n        if (!textContentItem.vertical) {\n          textContentItem.width *= textContentItem.textAdvanceScale;\n        } else {\n          textContentItem.height *= textContentItem.textAdvanceScale;\n        }\n        textContent.items.push(runBidiTransform(textContentItem));\n\n        textContentItem.initialized = false;\n        textContentItem.str.length = 0;\n      }\n\n      function enqueueChunk() {\n        const length = textContent.items.length;\n        if (length > 0) {\n          sink.enqueue(textContent, length);\n          textContent.items = [];\n          textContent.styles = Object.create(null);\n        }\n      }\n\n      var timeSlotManager = new TimeSlotManager();\n\n      return new Promise(function promiseBody(resolve, reject) {\n        const next = function (promise) {\n          enqueueChunk();\n          Promise.all([promise, sink.ready]).then(function () {\n            try {\n              promiseBody(resolve, reject);\n            } catch (ex) {\n              reject(ex);\n            }\n          }, reject);\n        };\n        task.ensureNotTerminated();\n        timeSlotManager.reset();\n        var stop,\n          operation = {},\n          args = [];\n        while (!(stop = timeSlotManager.check())) {\n          // The arguments parsed by read() are not used beyond this loop, so\n          // we can reuse the same array on every iteration, thus avoiding\n          // unnecessary allocations.\n          args.length = 0;\n          operation.args = args;\n          if (!preprocessor.read(operation)) {\n            break;\n          }\n          textState = stateManager.state;\n          var fn = operation.fn;\n          args = operation.args;\n          var advance, diff;\n\n          switch (fn | 0) {\n            case OPS.setFont:\n              // Optimization to ignore multiple identical Tf commands.\n              var fontNameArg = args[0].name,\n                fontSizeArg = args[1];\n              if (\n                textState.font &&\n                fontNameArg === textState.fontName &&\n                fontSizeArg === textState.fontSize\n              ) {\n                break;\n              }\n\n              flushTextContentItem();\n              textState.fontName = fontNameArg;\n              textState.fontSize = fontSizeArg;\n              next(handleSetFont(fontNameArg, null));\n              return;\n            case OPS.setTextRise:\n              flushTextContentItem();\n              textState.textRise = args[0];\n              break;\n            case OPS.setHScale:\n              flushTextContentItem();\n              textState.textHScale = args[0] / 100;\n              break;\n            case OPS.setLeading:\n              flushTextContentItem();\n              textState.leading = args[0];\n              break;\n            case OPS.moveText:\n              // Optimization to treat same line movement as advance\n              var isSameTextLine = !textState.font\n                ? false\n                : (textState.font.vertical ? args[0] : args[1]) === 0;\n              advance = args[0] - args[1];\n              if (\n                combineTextItems &&\n                isSameTextLine &&\n                textContentItem.initialized &&\n                advance > 0 &&\n                advance <= textContentItem.fakeMultiSpaceMax\n              ) {\n                textState.translateTextLineMatrix(args[0], args[1]);\n                textContentItem.width +=\n                  args[0] - textContentItem.lastAdvanceWidth;\n                textContentItem.height +=\n                  args[1] - textContentItem.lastAdvanceHeight;\n                diff =\n                  args[0] -\n                  textContentItem.lastAdvanceWidth -\n                  (args[1] - textContentItem.lastAdvanceHeight);\n                addFakeSpaces(diff, textContentItem.str);\n                break;\n              }\n\n              flushTextContentItem();\n              textState.translateTextLineMatrix(args[0], args[1]);\n              textState.textMatrix = textState.textLineMatrix.slice();\n              break;\n            case OPS.setLeadingMoveText:\n              flushTextContentItem();\n              textState.leading = -args[1];\n              textState.translateTextLineMatrix(args[0], args[1]);\n              textState.textMatrix = textState.textLineMatrix.slice();\n              break;\n            case OPS.nextLine:\n              flushTextContentItem();\n              textState.carriageReturn();\n              break;\n            case OPS.setTextMatrix:\n              // Optimization to treat same line movement as advance.\n              advance = textState.calcTextLineMatrixAdvance(\n                args[0],\n                args[1],\n                args[2],\n                args[3],\n                args[4],\n                args[5]\n              );\n              if (\n                combineTextItems &&\n                advance !== null &&\n                textContentItem.initialized &&\n                advance.value > 0 &&\n                advance.value <= textContentItem.fakeMultiSpaceMax\n              ) {\n                textState.translateTextLineMatrix(\n                  advance.width,\n                  advance.height\n                );\n                textContentItem.width +=\n                  advance.width - textContentItem.lastAdvanceWidth;\n                textContentItem.height +=\n                  advance.height - textContentItem.lastAdvanceHeight;\n                diff =\n                  advance.width -\n                  textContentItem.lastAdvanceWidth -\n                  (advance.height - textContentItem.lastAdvanceHeight);\n                addFakeSpaces(diff, textContentItem.str);\n                break;\n              }\n\n              flushTextContentItem();\n              textState.setTextMatrix(\n                args[0],\n                args[1],\n                args[2],\n                args[3],\n                args[4],\n                args[5]\n              );\n              textState.setTextLineMatrix(\n                args[0],\n                args[1],\n                args[2],\n                args[3],\n                args[4],\n                args[5]\n              );\n              break;\n            case OPS.setCharSpacing:\n              textState.charSpacing = args[0];\n              break;\n            case OPS.setWordSpacing:\n              textState.wordSpacing = args[0];\n              break;\n            case OPS.beginText:\n              flushTextContentItem();\n              textState.textMatrix = IDENTITY_MATRIX.slice();\n              textState.textLineMatrix = IDENTITY_MATRIX.slice();\n              break;\n            case OPS.showSpacedText:\n              if (!stateManager.state.font) {\n                self.ensureStateFont(stateManager.state);\n                continue;\n              }\n              var items = args[0];\n              var offset;\n              for (var j = 0, jj = items.length; j < jj; j++) {\n                if (typeof items[j] === \"string\") {\n                  buildTextContentItem(items[j]);\n                } else if (isNum(items[j])) {\n                  ensureTextContentItem();\n\n                  // PDF Specification 5.3.2 states:\n                  // The number is expressed in thousandths of a unit of text\n                  // space.\n                  // This amount is subtracted from the current horizontal or\n                  // vertical coordinate, depending on the writing mode.\n                  // In the default coordinate system, a positive adjustment\n                  // has the effect of moving the next glyph painted either to\n                  // the left or down by the given amount.\n                  advance = (items[j] * textState.fontSize) / 1000;\n                  var breakTextRun = false;\n                  if (textState.font.vertical) {\n                    offset = advance;\n                    textState.translateTextMatrix(0, offset);\n                    breakTextRun =\n                      textContentItem.textRunBreakAllowed &&\n                      advance > textContentItem.fakeMultiSpaceMax;\n                    if (!breakTextRun) {\n                      // Value needs to be added to height to paint down.\n                      textContentItem.height += offset;\n                    }\n                  } else {\n                    advance = -advance;\n                    offset = advance * textState.textHScale;\n                    textState.translateTextMatrix(offset, 0);\n                    breakTextRun =\n                      textContentItem.textRunBreakAllowed &&\n                      advance > textContentItem.fakeMultiSpaceMax;\n                    if (!breakTextRun) {\n                      // Value needs to be subtracted from width to paint left.\n                      textContentItem.width += offset;\n                    }\n                  }\n                  if (breakTextRun) {\n                    flushTextContentItem();\n                  } else if (advance > 0) {\n                    addFakeSpaces(advance, textContentItem.str);\n                  }\n                }\n              }\n              break;\n            case OPS.showText:\n              if (!stateManager.state.font) {\n                self.ensureStateFont(stateManager.state);\n                continue;\n              }\n              buildTextContentItem(args[0]);\n              break;\n            case OPS.nextLineShowText:\n              if (!stateManager.state.font) {\n                self.ensureStateFont(stateManager.state);\n                continue;\n              }\n              flushTextContentItem();\n              textState.carriageReturn();\n              buildTextContentItem(args[0]);\n              break;\n            case OPS.nextLineSetSpacingShowText:\n              if (!stateManager.state.font) {\n                self.ensureStateFont(stateManager.state);\n                continue;\n              }\n              flushTextContentItem();\n              textState.wordSpacing = args[0];\n              textState.charSpacing = args[1];\n              textState.carriageReturn();\n              buildTextContentItem(args[2]);\n              break;\n            case OPS.paintXObject:\n              flushTextContentItem();\n              if (!xobjs) {\n                xobjs = resources.get(\"XObject\") || Dict.empty;\n              }\n\n              var name = args[0].name;\n              if (name && emptyXObjectCache.getByName(name)) {\n                break;\n              }\n\n              next(\n                new Promise(function (resolveXObject, rejectXObject) {\n                  if (!name) {\n                    throw new FormatError(\n                      \"XObject must be referred to by name.\"\n                    );\n                  }\n\n                  let xobj = xobjs.getRaw(name);\n                  if (xobj instanceof Ref) {\n                    if (emptyXObjectCache.getByRef(xobj)) {\n                      resolveXObject();\n                      return;\n                    }\n\n                    xobj = xref.fetch(xobj);\n                  }\n\n                  if (!xobj) {\n                    resolveXObject();\n                    return;\n                  }\n                  if (!isStream(xobj)) {\n                    throw new FormatError(\"XObject should be a stream\");\n                  }\n\n                  const type = xobj.dict.get(\"Subtype\");\n                  if (!isName(type)) {\n                    throw new FormatError(\"XObject should have a Name subtype\");\n                  }\n\n                  if (type.name !== \"Form\") {\n                    emptyXObjectCache.set(name, xobj.dict.objId, true);\n\n                    resolveXObject();\n                    return;\n                  }\n\n                  // Use a new `StateManager` to prevent incorrect positioning\n                  // of textItems *after* the Form XObject, since errors in the\n                  // data can otherwise prevent `restore` operators from\n                  // executing.\n                  // NOTE: Only an issue when `options.ignoreErrors === true`.\n                  const currentState = stateManager.state.clone();\n                  const xObjStateManager = new StateManager(currentState);\n\n                  const matrix = xobj.dict.getArray(\"Matrix\");\n                  if (Array.isArray(matrix) && matrix.length === 6) {\n                    xObjStateManager.transform(matrix);\n                  }\n\n                  // Enqueue the `textContent` chunk before parsing the /Form\n                  // XObject.\n                  enqueueChunk();\n                  const sinkWrapper = {\n                    enqueueInvoked: false,\n\n                    enqueue(chunk, size) {\n                      this.enqueueInvoked = true;\n                      sink.enqueue(chunk, size);\n                    },\n\n                    get desiredSize() {\n                      return sink.desiredSize;\n                    },\n\n                    get ready() {\n                      return sink.ready;\n                    },\n                  };\n\n                  self\n                    .getTextContent({\n                      stream: xobj,\n                      task,\n                      resources: xobj.dict.get(\"Resources\") || resources,\n                      stateManager: xObjStateManager,\n                      normalizeWhitespace,\n                      combineTextItems,\n                      sink: sinkWrapper,\n                      seenStyles,\n                    })\n                    .then(function () {\n                      if (!sinkWrapper.enqueueInvoked) {\n                        emptyXObjectCache.set(name, xobj.dict.objId, true);\n                      }\n                      resolveXObject();\n                    }, rejectXObject);\n                }).catch(function (reason) {\n                  if (reason instanceof AbortException) {\n                    return;\n                  }\n                  if (self.options.ignoreErrors) {\n                    // Error(s) in the XObject -- allow text-extraction to\n                    // continue.\n                    warn(`getTextContent - ignoring XObject: \"${reason}\".`);\n                    return;\n                  }\n                  throw reason;\n                })\n              );\n              return;\n            case OPS.setGState:\n              flushTextContentItem();\n              var dictName = args[0];\n              var extGState = resources.get(\"ExtGState\");\n\n              if (!isDict(extGState) || !isName(dictName)) {\n                break;\n              }\n              var gState = extGState.get(dictName.name);\n              if (!isDict(gState)) {\n                break;\n              }\n              var gStateFont = gState.get(\"Font\");\n              if (gStateFont) {\n                textState.fontName = null;\n                textState.fontSize = gStateFont[1];\n                next(handleSetFont(null, gStateFont[0]));\n                return;\n              }\n              break;\n          } // switch\n          if (textContent.items.length >= sink.desiredSize) {\n            // Wait for ready, if we reach highWaterMark.\n            stop = true;\n            break;\n          }\n        } // while\n        if (stop) {\n          next(deferred);\n          return;\n        }\n        flushTextContentItem();\n        enqueueChunk();\n        resolve();\n      }).catch(reason => {\n        if (reason instanceof AbortException) {\n          return;\n        }\n        if (this.options.ignoreErrors) {\n          // Error(s) in the TextContent -- allow text-extraction to continue.\n          warn(\n            `getTextContent - ignoring errors during \"${task.name}\" ` +\n              `task: \"${reason}\".`\n          );\n\n          flushTextContentItem();\n          enqueueChunk();\n          return;\n        }\n        throw reason;\n      });\n    },\n\n    extractDataStructures: function PartialEvaluator_extractDataStructures(\n      dict,\n      baseDict,\n      properties\n    ) {\n      const xref = this.xref;\n      let cidToGidBytes;\n      // 9.10.2\n      var toUnicode = dict.get(\"ToUnicode\") || baseDict.get(\"ToUnicode\");\n      var toUnicodePromise = toUnicode\n        ? this.readToUnicode(toUnicode)\n        : Promise.resolve(undefined);\n\n      if (properties.composite) {\n        // CIDSystemInfo helps to match CID to glyphs\n        var cidSystemInfo = dict.get(\"CIDSystemInfo\");\n        if (isDict(cidSystemInfo)) {\n          properties.cidSystemInfo = {\n            registry: stringToPDFString(cidSystemInfo.get(\"Registry\")),\n            ordering: stringToPDFString(cidSystemInfo.get(\"Ordering\")),\n            supplement: cidSystemInfo.get(\"Supplement\"),\n          };\n        }\n\n        var cidToGidMap = dict.get(\"CIDToGIDMap\");\n        if (isStream(cidToGidMap)) {\n          cidToGidBytes = cidToGidMap.getBytes();\n        }\n      }\n\n      // Based on 9.6.6 of the spec the encoding can come from multiple places\n      // and depends on the font type. The base encoding and differences are\n      // read here, but the encoding that is actually used is chosen during\n      // glyph mapping in the font.\n      // TODO: Loading the built in encoding in the font would allow the\n      // differences to be merged in here not require us to hold on to it.\n      var differences = [];\n      var baseEncodingName = null;\n      var encoding;\n      if (dict.has(\"Encoding\")) {\n        encoding = dict.get(\"Encoding\");\n        if (isDict(encoding)) {\n          baseEncodingName = encoding.get(\"BaseEncoding\");\n          baseEncodingName = isName(baseEncodingName)\n            ? baseEncodingName.name\n            : null;\n          // Load the differences between the base and original\n          if (encoding.has(\"Differences\")) {\n            var diffEncoding = encoding.get(\"Differences\");\n            var index = 0;\n            for (var j = 0, jj = diffEncoding.length; j < jj; j++) {\n              var data = xref.fetchIfRef(diffEncoding[j]);\n              if (isNum(data)) {\n                index = data;\n              } else if (isName(data)) {\n                differences[index++] = data.name;\n              } else {\n                throw new FormatError(\n                  `Invalid entry in 'Differences' array: ${data}`\n                );\n              }\n            }\n          }\n        } else if (isName(encoding)) {\n          baseEncodingName = encoding.name;\n        } else {\n          throw new FormatError(\"Encoding is not a Name nor a Dict\");\n        }\n        // According to table 114 if the encoding is a named encoding it must be\n        // one of these predefined encodings.\n        if (\n          baseEncodingName !== \"MacRomanEncoding\" &&\n          baseEncodingName !== \"MacExpertEncoding\" &&\n          baseEncodingName !== \"WinAnsiEncoding\"\n        ) {\n          baseEncodingName = null;\n        }\n      }\n\n      if (baseEncodingName) {\n        properties.defaultEncoding = getEncoding(baseEncodingName).slice();\n      } else {\n        var isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n        var isNonsymbolicFont = !!(properties.flags & FontFlags.Nonsymbolic);\n        // According to \"Table 114\" in section \"9.6.6.1 General\" (under\n        // \"9.6.6 Character Encoding\") of the PDF specification, a Nonsymbolic\n        // font should use the `StandardEncoding` if no encoding is specified.\n        encoding = StandardEncoding;\n        if (properties.type === \"TrueType\" && !isNonsymbolicFont) {\n          encoding = WinAnsiEncoding;\n        }\n        // The Symbolic attribute can be misused for regular fonts\n        // Heuristic: we have to check if the font is a standard one also\n        if (isSymbolicFont) {\n          encoding = MacRomanEncoding;\n          if (!properties.file) {\n            if (/Symbol/i.test(properties.name)) {\n              encoding = SymbolSetEncoding;\n            } else if (/Dingbats|Wingdings/i.test(properties.name)) {\n              encoding = ZapfDingbatsEncoding;\n            }\n          }\n        }\n        properties.defaultEncoding = encoding;\n      }\n\n      properties.differences = differences;\n      properties.baseEncodingName = baseEncodingName;\n      properties.hasEncoding = !!baseEncodingName || differences.length > 0;\n      properties.dict = dict;\n      return toUnicodePromise\n        .then(readToUnicode => {\n          properties.toUnicode = readToUnicode;\n          return this.buildToUnicode(properties);\n        })\n        .then(builtToUnicode => {\n          properties.toUnicode = builtToUnicode;\n          if (cidToGidBytes) {\n            properties.cidToGidMap = this.readCidToGidMap(\n              cidToGidBytes,\n              builtToUnicode\n            );\n          }\n          return properties;\n        });\n    },\n\n    /**\n     * @returns {ToUnicodeMap}\n     * @private\n     */\n    _buildSimpleFontToUnicode(properties, forceGlyphs = false) {\n      assert(!properties.composite, \"Must be a simple font.\");\n\n      const toUnicode = [];\n      const encoding = properties.defaultEncoding.slice();\n      const baseEncodingName = properties.baseEncodingName;\n      // Merge in the differences array.\n      const differences = properties.differences;\n      for (const charcode in differences) {\n        const glyphName = differences[charcode];\n        if (glyphName === \".notdef\") {\n          // Skip .notdef to prevent rendering errors, e.g. boxes appearing\n          // where there should be spaces (fixes issue5256.pdf).\n          continue;\n        }\n        encoding[charcode] = glyphName;\n      }\n      const glyphsUnicodeMap = getGlyphsUnicode();\n      for (const charcode in encoding) {\n        // a) Map the character code to a character name.\n        let glyphName = encoding[charcode];\n        // b) Look up the character name in the Adobe Glyph List (see the\n        //    Bibliography) to obtain the corresponding Unicode value.\n        if (glyphName === \"\") {\n          continue;\n        } else if (glyphsUnicodeMap[glyphName] === undefined) {\n          // (undocumented) c) Few heuristics to recognize unknown glyphs\n          // NOTE: Adobe Reader does not do this step, but OSX Preview does\n          let code = 0;\n          switch (glyphName[0]) {\n            case \"G\": // Gxx glyph\n              if (glyphName.length === 3) {\n                code = parseInt(glyphName.substring(1), 16);\n              }\n              break;\n            case \"g\": // g00xx glyph\n              if (glyphName.length === 5) {\n                code = parseInt(glyphName.substring(1), 16);\n              }\n              break;\n            case \"C\": // Cdd{d} glyph\n            case \"c\": // cdd{d} glyph\n              if (glyphName.length >= 3 && glyphName.length <= 4) {\n                const codeStr = glyphName.substring(1);\n\n                if (forceGlyphs) {\n                  code = parseInt(codeStr, 16);\n                  break;\n                }\n                // Normally the Cdd{d}/cdd{d} glyphName format will contain\n                // regular, i.e. base 10, charCodes (see issue4550.pdf)...\n                code = +codeStr;\n\n                // ... however some PDF generators violate that assumption by\n                // containing glyph, i.e. base 16, codes instead.\n                // In that case we need to re-parse the *entire* encoding to\n                // prevent broken text-selection (fixes issue9655_reduced.pdf).\n                if (\n                  Number.isNaN(code) &&\n                  Number.isInteger(parseInt(codeStr, 16))\n                ) {\n                  return this._buildSimpleFontToUnicode(\n                    properties,\n                    /* forceGlyphs */ true\n                  );\n                }\n              }\n              break;\n            default:\n              // 'uniXXXX'/'uXXXX{XX}' glyphs\n              const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n              if (unicode !== -1) {\n                code = unicode;\n              }\n          }\n          if (code > 0 && code <= 0x10ffff && Number.isInteger(code)) {\n            // If `baseEncodingName` is one the predefined encodings, and `code`\n            // equals `charcode`, using the glyph defined in the baseEncoding\n            // seems to yield a better `toUnicode` mapping (fixes issue 5070).\n            if (baseEncodingName && code === +charcode) {\n              const baseEncoding = getEncoding(baseEncodingName);\n              if (baseEncoding && (glyphName = baseEncoding[charcode])) {\n                toUnicode[charcode] = String.fromCharCode(\n                  glyphsUnicodeMap[glyphName]\n                );\n                continue;\n              }\n            }\n            toUnicode[charcode] = String.fromCodePoint(code);\n          }\n          continue;\n        }\n        toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]);\n      }\n      return new ToUnicodeMap(toUnicode);\n    },\n\n    /**\n     * Builds a char code to unicode map based on section 9.10 of the spec.\n     * @param {Object} properties Font properties object.\n     * @returns {Promise} A Promise that is resolved with a\n     *   {ToUnicodeMap|IdentityToUnicodeMap} object.\n     */\n    buildToUnicode(properties) {\n      properties.hasIncludedToUnicodeMap =\n        !!properties.toUnicode && properties.toUnicode.length > 0;\n\n      // Section 9.10.2 Mapping Character Codes to Unicode Values\n      if (properties.hasIncludedToUnicodeMap) {\n        // Some fonts contain incomplete ToUnicode data, causing issues with\n        // text-extraction. For simple fonts, containing encoding information,\n        // use a fallback ToUnicode map to improve this (fixes issue8229.pdf).\n        if (!properties.composite && properties.hasEncoding) {\n          properties.fallbackToUnicode = this._buildSimpleFontToUnicode(\n            properties\n          );\n        }\n\n        return Promise.resolve(properties.toUnicode);\n      }\n\n      // According to the spec if the font is a simple font we should only map\n      // to unicode if the base encoding is MacRoman, MacExpert, or WinAnsi or\n      // the differences array only contains adobe standard or symbol set names,\n      // in pratice it seems better to always try to create a toUnicode map\n      // based of the default encoding.\n      if (!properties.composite /* is simple font */) {\n        return Promise.resolve(this._buildSimpleFontToUnicode(properties));\n      }\n\n      // If the font is a composite font that uses one of the predefined CMaps\n      // listed in Table 118 (except Identity–H and Identity–V) or whose\n      // descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1, or\n      // Adobe-Korea1 character collection:\n      if (\n        properties.composite &&\n        ((properties.cMap.builtInCMap &&\n          !(properties.cMap instanceof IdentityCMap)) ||\n          (properties.cidSystemInfo.registry === \"Adobe\" &&\n            (properties.cidSystemInfo.ordering === \"GB1\" ||\n              properties.cidSystemInfo.ordering === \"CNS1\" ||\n              properties.cidSystemInfo.ordering === \"Japan1\" ||\n              properties.cidSystemInfo.ordering === \"Korea1\")))\n      ) {\n        // Then:\n        // a) Map the character code to a character identifier (CID) according\n        // to the font’s CMap.\n        // b) Obtain the registry and ordering of the character collection used\n        // by the font’s CMap (for example, Adobe and Japan1) from its\n        // CIDSystemInfo dictionary.\n        const registry = properties.cidSystemInfo.registry;\n        const ordering = properties.cidSystemInfo.ordering;\n        // c) Construct a second CMap name by concatenating the registry and\n        // ordering obtained in step (b) in the format registry–ordering–UCS2\n        // (for example, Adobe–Japan1–UCS2).\n        const ucs2CMapName = Name.get(registry + \"-\" + ordering + \"-UCS2\");\n        // d) Obtain the CMap with the name constructed in step (c) (available\n        // from the ASN Web site; see the Bibliography).\n        return CMapFactory.create({\n          encoding: ucs2CMapName,\n          fetchBuiltInCMap: this.fetchBuiltInCMap,\n          useCMap: null,\n        }).then(function (ucs2CMap) {\n          const cMap = properties.cMap;\n          const toUnicode = [];\n          cMap.forEach(function (charcode, cid) {\n            if (cid > 0xffff) {\n              throw new FormatError(\"Max size of CID is 65,535\");\n            }\n            // e) Map the CID obtained in step (a) according to the CMap\n            // obtained in step (d), producing a Unicode value.\n            const ucs2 = ucs2CMap.lookup(cid);\n            if (ucs2) {\n              toUnicode[charcode] = String.fromCharCode(\n                (ucs2.charCodeAt(0) << 8) + ucs2.charCodeAt(1)\n              );\n            }\n          });\n          return new ToUnicodeMap(toUnicode);\n        });\n      }\n\n      // The viewer's choice, just use an identity map.\n      return Promise.resolve(\n        new IdentityToUnicodeMap(properties.firstChar, properties.lastChar)\n      );\n    },\n\n    readToUnicode: function PartialEvaluator_readToUnicode(toUnicode) {\n      var cmapObj = toUnicode;\n      if (isName(cmapObj)) {\n        return CMapFactory.create({\n          encoding: cmapObj,\n          fetchBuiltInCMap: this.fetchBuiltInCMap,\n          useCMap: null,\n        }).then(function (cmap) {\n          if (cmap instanceof IdentityCMap) {\n            return new IdentityToUnicodeMap(0, 0xffff);\n          }\n          return new ToUnicodeMap(cmap.getMap());\n        });\n      } else if (isStream(cmapObj)) {\n        return CMapFactory.create({\n          encoding: cmapObj,\n          fetchBuiltInCMap: this.fetchBuiltInCMap,\n          useCMap: null,\n        }).then(\n          function (cmap) {\n            if (cmap instanceof IdentityCMap) {\n              return new IdentityToUnicodeMap(0, 0xffff);\n            }\n            var map = new Array(cmap.length);\n            // Convert UTF-16BE\n            // NOTE: cmap can be a sparse array, so use forEach instead of\n            // `for(;;)` to iterate over all keys.\n            cmap.forEach(function (charCode, token) {\n              var str = [];\n              for (var k = 0; k < token.length; k += 2) {\n                var w1 = (token.charCodeAt(k) << 8) | token.charCodeAt(k + 1);\n                if ((w1 & 0xf800) !== 0xd800) {\n                  // w1 < 0xD800 || w1 > 0xDFFF\n                  str.push(w1);\n                  continue;\n                }\n                k += 2;\n                var w2 = (token.charCodeAt(k) << 8) | token.charCodeAt(k + 1);\n                str.push(((w1 & 0x3ff) << 10) + (w2 & 0x3ff) + 0x10000);\n              }\n              map[charCode] = String.fromCodePoint.apply(String, str);\n            });\n            return new ToUnicodeMap(map);\n          },\n          reason => {\n            if (reason instanceof AbortException) {\n              return null;\n            }\n            if (this.options.ignoreErrors) {\n              // Error in the ToUnicode data -- sending unsupported feature\n              // notification and allow font parsing to continue.\n              this.handler.send(\"UnsupportedFeature\", {\n                featureId: UNSUPPORTED_FEATURES.errorFontToUnicode,\n              });\n              warn(`readToUnicode - ignoring ToUnicode data: \"${reason}\".`);\n              return null;\n            }\n            throw reason;\n          }\n        );\n      }\n      return Promise.resolve(null);\n    },\n\n    readCidToGidMap(glyphsData, toUnicode) {\n      // Extract the encoding from the CIDToGIDMap\n\n      // Set encoding 0 to later verify the font has an encoding\n      var result = [];\n      for (var j = 0, jj = glyphsData.length; j < jj; j++) {\n        var glyphID = (glyphsData[j++] << 8) | glyphsData[j];\n        const code = j >> 1;\n        if (glyphID === 0 && !toUnicode.has(code)) {\n          continue;\n        }\n        result[code] = glyphID;\n      }\n      return result;\n    },\n\n    extractWidths: function PartialEvaluator_extractWidths(\n      dict,\n      descriptor,\n      properties\n    ) {\n      var xref = this.xref;\n      var glyphsWidths = [];\n      var defaultWidth = 0;\n      var glyphsVMetrics = [];\n      var defaultVMetrics;\n      var i, ii, j, jj, start, code, widths;\n      if (properties.composite) {\n        defaultWidth = dict.has(\"DW\") ? dict.get(\"DW\") : 1000;\n\n        widths = dict.get(\"W\");\n        if (widths) {\n          for (i = 0, ii = widths.length; i < ii; i++) {\n            start = xref.fetchIfRef(widths[i++]);\n            code = xref.fetchIfRef(widths[i]);\n            if (Array.isArray(code)) {\n              for (j = 0, jj = code.length; j < jj; j++) {\n                glyphsWidths[start++] = xref.fetchIfRef(code[j]);\n              }\n            } else {\n              var width = xref.fetchIfRef(widths[++i]);\n              for (j = start; j <= code; j++) {\n                glyphsWidths[j] = width;\n              }\n            }\n          }\n        }\n\n        if (properties.vertical) {\n          var vmetrics = dict.getArray(\"DW2\") || [880, -1000];\n          defaultVMetrics = [vmetrics[1], defaultWidth * 0.5, vmetrics[0]];\n          vmetrics = dict.get(\"W2\");\n          if (vmetrics) {\n            for (i = 0, ii = vmetrics.length; i < ii; i++) {\n              start = xref.fetchIfRef(vmetrics[i++]);\n              code = xref.fetchIfRef(vmetrics[i]);\n              if (Array.isArray(code)) {\n                for (j = 0, jj = code.length; j < jj; j++) {\n                  glyphsVMetrics[start++] = [\n                    xref.fetchIfRef(code[j++]),\n                    xref.fetchIfRef(code[j++]),\n                    xref.fetchIfRef(code[j]),\n                  ];\n                }\n              } else {\n                var vmetric = [\n                  xref.fetchIfRef(vmetrics[++i]),\n                  xref.fetchIfRef(vmetrics[++i]),\n                  xref.fetchIfRef(vmetrics[++i]),\n                ];\n                for (j = start; j <= code; j++) {\n                  glyphsVMetrics[j] = vmetric;\n                }\n              }\n            }\n          }\n        }\n      } else {\n        var firstChar = properties.firstChar;\n        widths = dict.get(\"Widths\");\n        if (widths) {\n          j = firstChar;\n          for (i = 0, ii = widths.length; i < ii; i++) {\n            glyphsWidths[j++] = xref.fetchIfRef(widths[i]);\n          }\n          defaultWidth = parseFloat(descriptor.get(\"MissingWidth\")) || 0;\n        } else {\n          // Trying get the BaseFont metrics (see comment above).\n          var baseFontName = dict.get(\"BaseFont\");\n          if (isName(baseFontName)) {\n            var metrics = this.getBaseFontMetrics(baseFontName.name);\n\n            glyphsWidths = this.buildCharCodeToWidth(\n              metrics.widths,\n              properties\n            );\n            defaultWidth = metrics.defaultWidth;\n          }\n        }\n      }\n\n      // Heuristic: detection of monospace font by checking all non-zero widths\n      var isMonospace = true;\n      var firstWidth = defaultWidth;\n      for (var glyph in glyphsWidths) {\n        var glyphWidth = glyphsWidths[glyph];\n        if (!glyphWidth) {\n          continue;\n        }\n        if (!firstWidth) {\n          firstWidth = glyphWidth;\n          continue;\n        }\n        if (firstWidth !== glyphWidth) {\n          isMonospace = false;\n          break;\n        }\n      }\n      if (isMonospace) {\n        properties.flags |= FontFlags.FixedPitch;\n      }\n\n      properties.defaultWidth = defaultWidth;\n      properties.widths = glyphsWidths;\n      properties.defaultVMetrics = defaultVMetrics;\n      properties.vmetrics = glyphsVMetrics;\n    },\n\n    isSerifFont: function PartialEvaluator_isSerifFont(baseFontName) {\n      // Simulating descriptor flags attribute\n      var fontNameWoStyle = baseFontName.split(\"-\")[0];\n      return (\n        fontNameWoStyle in getSerifFonts() ||\n        fontNameWoStyle.search(/serif/gi) !== -1\n      );\n    },\n\n    getBaseFontMetrics: function PartialEvaluator_getBaseFontMetrics(name) {\n      var defaultWidth = 0;\n      var widths = [];\n      var monospace = false;\n      var stdFontMap = getStdFontMap();\n      var lookupName = stdFontMap[name] || name;\n      var Metrics = getMetrics();\n\n      if (!(lookupName in Metrics)) {\n        // Use default fonts for looking up font metrics if the passed\n        // font is not a base font\n        if (this.isSerifFont(name)) {\n          lookupName = \"Times-Roman\";\n        } else {\n          lookupName = \"Helvetica\";\n        }\n      }\n      var glyphWidths = Metrics[lookupName];\n\n      if (isNum(glyphWidths)) {\n        defaultWidth = glyphWidths;\n        monospace = true;\n      } else {\n        widths = glyphWidths(); // expand lazy widths array\n      }\n\n      return {\n        defaultWidth,\n        monospace,\n        widths,\n      };\n    },\n\n    buildCharCodeToWidth: function PartialEvaluator_bulildCharCodeToWidth(\n      widthsByGlyphName,\n      properties\n    ) {\n      var widths = Object.create(null);\n      var differences = properties.differences;\n      var encoding = properties.defaultEncoding;\n      for (var charCode = 0; charCode < 256; charCode++) {\n        if (\n          charCode in differences &&\n          widthsByGlyphName[differences[charCode]]\n        ) {\n          widths[charCode] = widthsByGlyphName[differences[charCode]];\n          continue;\n        }\n        if (charCode in encoding && widthsByGlyphName[encoding[charCode]]) {\n          widths[charCode] = widthsByGlyphName[encoding[charCode]];\n          continue;\n        }\n      }\n      return widths;\n    },\n\n    preEvaluateFont: function PartialEvaluator_preEvaluateFont(dict) {\n      var baseDict = dict;\n      var type = dict.get(\"Subtype\");\n      if (!isName(type)) {\n        throw new FormatError(\"invalid font Subtype\");\n      }\n\n      var composite = false;\n      var uint8array;\n      if (type.name === \"Type0\") {\n        // If font is a composite\n        //  - get the descendant font\n        //  - set the type according to the descendant font\n        //  - get the FontDescriptor from the descendant font\n        var df = dict.get(\"DescendantFonts\");\n        if (!df) {\n          throw new FormatError(\"Descendant fonts are not specified\");\n        }\n        dict = Array.isArray(df) ? this.xref.fetchIfRef(df[0]) : df;\n\n        type = dict.get(\"Subtype\");\n        if (!isName(type)) {\n          throw new FormatError(\"invalid font Subtype\");\n        }\n        composite = true;\n      }\n\n      var descriptor = dict.get(\"FontDescriptor\");\n      if (descriptor) {\n        var hash = new MurmurHash3_64();\n        var encoding = baseDict.getRaw(\"Encoding\");\n        if (isName(encoding)) {\n          hash.update(encoding.name);\n        } else if (isRef(encoding)) {\n          hash.update(encoding.toString());\n        } else if (isDict(encoding)) {\n          var keys = encoding.getKeys();\n          for (var i = 0, ii = keys.length; i < ii; i++) {\n            var entry = encoding.getRaw(keys[i]);\n            if (isName(entry)) {\n              hash.update(entry.name);\n            } else if (isRef(entry)) {\n              hash.update(entry.toString());\n            } else if (Array.isArray(entry)) {\n              // 'Differences' array (fixes bug1157493.pdf).\n              var diffLength = entry.length,\n                diffBuf = new Array(diffLength);\n\n              for (var j = 0; j < diffLength; j++) {\n                var diffEntry = entry[j];\n                if (isName(diffEntry)) {\n                  diffBuf[j] = diffEntry.name;\n                } else if (isNum(diffEntry) || isRef(diffEntry)) {\n                  diffBuf[j] = diffEntry.toString();\n                }\n              }\n              hash.update(diffBuf.join());\n            }\n          }\n        }\n\n        const firstChar = dict.get(\"FirstChar\") || 0;\n        const lastChar = dict.get(\"LastChar\") || (composite ? 0xffff : 0xff);\n        hash.update(`${firstChar}-${lastChar}`);\n\n        var toUnicode = dict.get(\"ToUnicode\") || baseDict.get(\"ToUnicode\");\n        if (isStream(toUnicode)) {\n          var stream = toUnicode.str || toUnicode;\n          uint8array = stream.buffer\n            ? new Uint8Array(stream.buffer.buffer, 0, stream.bufferLength)\n            : new Uint8Array(\n                stream.bytes.buffer,\n                stream.start,\n                stream.end - stream.start\n              );\n          hash.update(uint8array);\n        } else if (isName(toUnicode)) {\n          hash.update(toUnicode.name);\n        }\n\n        var widths = dict.get(\"Widths\") || baseDict.get(\"Widths\");\n        if (widths) {\n          uint8array = new Uint8Array(new Uint32Array(widths).buffer);\n          hash.update(uint8array);\n        }\n      }\n\n      return {\n        descriptor,\n        dict,\n        baseDict,\n        composite,\n        type: type.name,\n        hash: hash ? hash.hexdigest() : \"\",\n      };\n    },\n\n    translateFont: function PartialEvaluator_translateFont(preEvaluatedFont) {\n      var baseDict = preEvaluatedFont.baseDict;\n      var dict = preEvaluatedFont.dict;\n      var composite = preEvaluatedFont.composite;\n      var descriptor = preEvaluatedFont.descriptor;\n      var type = preEvaluatedFont.type;\n      var maxCharIndex = composite ? 0xffff : 0xff;\n      var properties;\n      const firstChar = dict.get(\"FirstChar\") || 0;\n      const lastChar = dict.get(\"LastChar\") || maxCharIndex;\n\n      if (!descriptor) {\n        if (type === \"Type3\") {\n          // FontDescriptor is only required for Type3 fonts when the document\n          // is a tagged pdf. Create a barbebones one to get by.\n          descriptor = new Dict(null);\n          descriptor.set(\"FontName\", Name.get(type));\n          descriptor.set(\"FontBBox\", dict.getArray(\"FontBBox\") || [0, 0, 0, 0]);\n        } else {\n          // Before PDF 1.5 if the font was one of the base 14 fonts, having a\n          // FontDescriptor was not required.\n          // This case is here for compatibility.\n          var baseFontName = dict.get(\"BaseFont\");\n          if (!isName(baseFontName)) {\n            throw new FormatError(\"Base font is not specified\");\n          }\n\n          // Using base font name as a font name.\n          baseFontName = baseFontName.name.replace(/[,_]/g, \"-\");\n          var metrics = this.getBaseFontMetrics(baseFontName);\n\n          // Simulating descriptor flags attribute\n          var fontNameWoStyle = baseFontName.split(\"-\")[0];\n          var flags =\n            (this.isSerifFont(fontNameWoStyle) ? FontFlags.Serif : 0) |\n            (metrics.monospace ? FontFlags.FixedPitch : 0) |\n            (getSymbolsFonts()[fontNameWoStyle]\n              ? FontFlags.Symbolic\n              : FontFlags.Nonsymbolic);\n\n          properties = {\n            type,\n            name: baseFontName,\n            widths: metrics.widths,\n            defaultWidth: metrics.defaultWidth,\n            flags,\n            firstChar,\n            lastChar,\n          };\n          const widths = dict.get(\"Widths\");\n          return this.extractDataStructures(dict, dict, properties).then(\n            newProperties => {\n              if (widths) {\n                const glyphWidths = [];\n                let j = firstChar;\n                for (let i = 0, ii = widths.length; i < ii; i++) {\n                  glyphWidths[j++] = this.xref.fetchIfRef(widths[i]);\n                }\n                newProperties.widths = glyphWidths;\n              } else {\n                newProperties.widths = this.buildCharCodeToWidth(\n                  metrics.widths,\n                  newProperties\n                );\n              }\n              return new Font(baseFontName, null, newProperties);\n            }\n          );\n        }\n      }\n\n      // According to the spec if 'FontDescriptor' is declared, 'FirstChar',\n      // 'LastChar' and 'Widths' should exist too, but some PDF encoders seem\n      // to ignore this rule when a variant of a standard font is used.\n      // TODO Fill the width array depending on which of the base font this is\n      // a variant.\n\n      var fontName = descriptor.get(\"FontName\");\n      var baseFont = dict.get(\"BaseFont\");\n      // Some bad PDFs have a string as the font name.\n      if (isString(fontName)) {\n        fontName = Name.get(fontName);\n      }\n      if (isString(baseFont)) {\n        baseFont = Name.get(baseFont);\n      }\n\n      if (type !== \"Type3\") {\n        var fontNameStr = fontName && fontName.name;\n        var baseFontStr = baseFont && baseFont.name;\n        if (fontNameStr !== baseFontStr) {\n          info(\n            `The FontDescriptor\\'s FontName is \"${fontNameStr}\" but ` +\n              `should be the same as the Font\\'s BaseFont \"${baseFontStr}\".`\n          );\n          // Workaround for cases where e.g. fontNameStr = 'Arial' and\n          // baseFontStr = 'Arial,Bold' (needed when no font file is embedded).\n          if (\n            fontNameStr &&\n            baseFontStr &&\n            baseFontStr.startsWith(fontNameStr)\n          ) {\n            fontName = baseFont;\n          }\n        }\n      }\n      fontName = fontName || baseFont;\n\n      if (!isName(fontName)) {\n        throw new FormatError(\"invalid font name\");\n      }\n\n      var fontFile = descriptor.get(\"FontFile\", \"FontFile2\", \"FontFile3\");\n      if (fontFile) {\n        if (fontFile.dict) {\n          var subtype = fontFile.dict.get(\"Subtype\");\n          if (subtype) {\n            subtype = subtype.name;\n          }\n          var length1 = fontFile.dict.get(\"Length1\");\n          var length2 = fontFile.dict.get(\"Length2\");\n          var length3 = fontFile.dict.get(\"Length3\");\n        }\n      }\n\n      properties = {\n        type,\n        name: fontName.name,\n        subtype,\n        file: fontFile,\n        length1,\n        length2,\n        length3,\n        loadedName: baseDict.loadedName,\n        composite,\n        fixedPitch: false,\n        fontMatrix: dict.getArray(\"FontMatrix\") || FONT_IDENTITY_MATRIX,\n        firstChar: firstChar || 0,\n        lastChar: lastChar || maxCharIndex,\n        bbox: descriptor.getArray(\"FontBBox\"),\n        ascent: descriptor.get(\"Ascent\"),\n        descent: descriptor.get(\"Descent\"),\n        xHeight: descriptor.get(\"XHeight\"),\n        capHeight: descriptor.get(\"CapHeight\"),\n        flags: descriptor.get(\"Flags\"),\n        italicAngle: descriptor.get(\"ItalicAngle\"),\n        isType3Font: false,\n      };\n\n      var cMapPromise;\n      if (composite) {\n        var cidEncoding = baseDict.get(\"Encoding\");\n        if (isName(cidEncoding)) {\n          properties.cidEncoding = cidEncoding.name;\n        }\n        cMapPromise = CMapFactory.create({\n          encoding: cidEncoding,\n          fetchBuiltInCMap: this.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\n        .then(() => {\n          return this.extractDataStructures(dict, baseDict, properties);\n        })\n        .then(newProperties => {\n          this.extractWidths(dict, descriptor, newProperties);\n\n          if (type === \"Type3\") {\n            newProperties.isType3Font = true;\n          }\n          return new Font(fontName.name, fontFile, newProperties);\n        });\n    },\n  };\n\n  PartialEvaluator.buildFontPaths = function (font, glyphs, handler) {\n    function buildPath(fontChar) {\n      if (font.renderer.hasBuiltPath(fontChar)) {\n        return;\n      }\n      handler.send(\"commonobj\", [\n        `${font.loadedName}_path_${fontChar}`,\n        \"FontPath\",\n        font.renderer.getPathJs(fontChar),\n      ]);\n    }\n\n    for (const glyph of glyphs) {\n      buildPath(glyph.fontChar);\n\n      // If the glyph has an accent we need to build a path for its\n      // fontChar too, otherwise CanvasGraphics_paintChar will fail.\n      const accent = glyph.accent;\n      if (accent && accent.fontChar) {\n        buildPath(accent.fontChar);\n      }\n    }\n  };\n\n  // TODO: Change this to a `static` getter, using shadowing, once\n  //       `PartialEvaluator` is converted to a proper class.\n  PartialEvaluator.getFallbackFontDict = function () {\n    if (this._fallbackFontDict) {\n      return this._fallbackFontDict;\n    }\n    const dict = new Dict();\n    dict.set(\"BaseFont\", Name.get(\"PDFJS-FallbackFont\"));\n    dict.set(\"Type\", Name.get(\"FallbackType\"));\n    dict.set(\"Subtype\", Name.get(\"FallbackType\"));\n    dict.set(\"Encoding\", Name.get(\"WinAnsiEncoding\"));\n\n    return (this._fallbackFontDict = dict);\n  };\n\n  return PartialEvaluator;\n})();\n\nclass TranslatedFont {\n  constructor({ loadedName, font, dict, extraProperties = false }) {\n    this.loadedName = loadedName;\n    this.font = font;\n    this.dict = dict;\n    this._extraProperties = extraProperties;\n    this.type3Loaded = null;\n    this.sent = false;\n  }\n\n  send(handler) {\n    if (this.sent) {\n      return;\n    }\n    this.sent = true;\n\n    handler.send(\"commonobj\", [\n      this.loadedName,\n      \"Font\",\n      this.font.exportData(this._extraProperties),\n    ]);\n  }\n\n  fallback(handler) {\n    if (!this.font.data) {\n      return;\n    }\n    // When font loading failed, fall back to the built-in font renderer.\n    this.font.disableFontFace = true;\n    // An arbitrary number of text rendering operators could have been\n    // encountered between the point in time when the 'Font' message was sent\n    // to the main-thread, and the point in time when the 'FontFallback'\n    // message was received on the worker-thread.\n    // To ensure that all 'FontPath's are available on the main-thread, when\n    // font loading failed, attempt to resend *all* previously parsed glyphs.\n    const glyphs = this.font.glyphCacheValues;\n    PartialEvaluator.buildFontPaths(this.font, glyphs, handler);\n  }\n\n  loadType3Data(evaluator, resources, 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    // When parsing Type3 glyphs, always ignore them if there are errors.\n    // Compared to the parsing of e.g. an entire page, it doesn't really\n    // make sense to only be able to render a Type3 glyph partially.\n    //\n    // Also, ensure that any Type3 image resources (which should be very rare\n    // in practice) are completely decoded on the worker-thread, to simplify\n    // the rendering code on the main-thread (see issue10717.pdf).\n    var type3Options = Object.create(evaluator.options);\n    type3Options.ignoreErrors = false;\n    var type3Evaluator = evaluator.clone(type3Options);\n    type3Evaluator.parsingType3Font = true;\n\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    for (var i = 0, n = charProcKeys.length; i < n; ++i) {\n      const key = charProcKeys[i];\n      loadCharProcsPromise = loadCharProcsPromise.then(function () {\n        var glyphStream = charProcs.get(key);\n        var operatorList = new OperatorList();\n        return type3Evaluator\n          .getOperatorList({\n            stream: glyphStream,\n            task,\n            resources: fontResources,\n            operatorList,\n          })\n          .then(function () {\n            charProcOperatorList[key] = operatorList.getIR();\n\n            // Add the dependencies to the parent operator list so they are\n            // resolved before sub operator list is executed synchronously.\n            parentOperatorList.addDependencies(operatorList.dependencies);\n          })\n          .catch(function (reason) {\n            warn(`Type3 font resource \"${key}\" is not available.`);\n            const dummyOperatorList = new OperatorList();\n            charProcOperatorList[key] = dummyOperatorList.getIR();\n          });\n      });\n    }\n    this.type3Loaded = loadCharProcsPromise.then(function () {\n      translatedFont.charProcOperatorList = charProcOperatorList;\n    });\n    return this.type3Loaded;\n  }\n}\n\nvar StateManager = (function StateManagerClosure() {\n  // eslint-disable-next-line no-shadow\n  function StateManager(initialState) {\n    this.state = initialState;\n    this.stateStack = [];\n  }\n  StateManager.prototype = {\n    save() {\n      var old = this.state;\n      this.stateStack.push(this.state);\n      this.state = old.clone();\n    },\n    restore() {\n      var prev = this.stateStack.pop();\n      if (prev) {\n        this.state = prev;\n      }\n    },\n    transform(args) {\n      this.state.ctm = Util.transform(this.state.ctm, args);\n    },\n  };\n  return StateManager;\n})();\n\nvar TextState = (function TextStateClosure() {\n  // eslint-disable-next-line no-shadow\n  function TextState() {\n    this.ctm = new Float32Array(IDENTITY_MATRIX);\n    this.fontName = null;\n    this.fontSize = 0;\n    this.font = null;\n    this.fontMatrix = FONT_IDENTITY_MATRIX;\n    this.textMatrix = IDENTITY_MATRIX.slice();\n    this.textLineMatrix = IDENTITY_MATRIX.slice();\n    this.charSpacing = 0;\n    this.wordSpacing = 0;\n    this.leading = 0;\n    this.textHScale = 1;\n    this.textRise = 0;\n  }\n\n  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(\n      a,\n      b,\n      c,\n      d,\n      e,\n      f\n    ) {\n      var font = this.font;\n      if (!font) {\n        return null;\n      }\n      var m = this.textLineMatrix;\n      if (!(a === m[0] && b === m[1] && c === m[2] && d === m[3])) {\n        return null;\n      }\n      var txDiff = e - m[4],\n        tyDiff = f - m[5];\n      if ((font.vertical && txDiff !== 0) || (!font.vertical && tyDiff !== 0)) {\n        return null;\n      }\n      var tx,\n        ty,\n        denominator = a * d - b * c;\n      if (font.vertical) {\n        tx = (-tyDiff * c) / denominator;\n        ty = (tyDiff * a) / denominator;\n      } else {\n        tx = (txDiff * d) / denominator;\n        ty = (-txDiff * b) / denominator;\n      }\n      return { width: tx, height: ty, value: font.vertical ? ty : tx };\n    },\n    calcRenderMatrix: function TextState_calcRendeMatrix(ctm) {\n      // 9.4.4 Text Space Details\n      var tsm = [\n        this.fontSize * this.textHScale,\n        0,\n        0,\n        this.fontSize,\n        0,\n        this.textRise,\n      ];\n      return Util.transform(ctm, Util.transform(this.textMatrix, tsm));\n    },\n    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  // eslint-disable-next-line no-shadow\n  function EvalState() {\n    this.ctm = new Float32Array(IDENTITY_MATRIX);\n    this.font = null;\n    this.textRenderingMode = TextRenderingMode.FILL;\n    this.fillColorSpace = ColorSpace.singletons.gray;\n    this.strokeColorSpace = ColorSpace.singletons.gray;\n  }\n  EvalState.prototype = {\n    clone: function CanvasExtraState_clone() {\n      return Object.create(this);\n    },\n  };\n  return EvalState;\n})();\n\nvar EvaluatorPreprocessor = (function EvaluatorPreprocessorClosure() {\n  // Specifies properties for each command\n  //\n  // If variableArgs === true: [0, `numArgs`] expected\n  // If variableArgs === false: exactly `numArgs` expected\n  var getOPMap = getLookupTableFactory(function (t) {\n    // Graphic state\n    t.w = { id: OPS.setLineWidth, numArgs: 1, variableArgs: false };\n    t.J = { id: OPS.setLineCap, numArgs: 1, variableArgs: false };\n    t.j = { id: OPS.setLineJoin, numArgs: 1, variableArgs: false };\n    t.M = { id: OPS.setMiterLimit, numArgs: 1, variableArgs: false };\n    t.d = { id: OPS.setDash, numArgs: 2, variableArgs: false };\n    t.ri = { id: OPS.setRenderingIntent, numArgs: 1, variableArgs: false };\n    t.i = { id: OPS.setFlatness, numArgs: 1, variableArgs: false };\n    t.gs = { id: OPS.setGState, numArgs: 1, variableArgs: false };\n    t.q = { id: OPS.save, numArgs: 0, variableArgs: false };\n    t.Q = { id: OPS.restore, numArgs: 0, variableArgs: false };\n    t.cm = { id: OPS.transform, numArgs: 6, variableArgs: false };\n\n    // Path\n    t.m = { id: OPS.moveTo, numArgs: 2, variableArgs: false };\n    t.l = { id: OPS.lineTo, numArgs: 2, variableArgs: false };\n    t.c = { id: OPS.curveTo, numArgs: 6, variableArgs: false };\n    t.v = { id: OPS.curveTo2, numArgs: 4, variableArgs: false };\n    t.y = { id: OPS.curveTo3, numArgs: 4, variableArgs: false };\n    t.h = { id: OPS.closePath, numArgs: 0, variableArgs: false };\n    t.re = { id: OPS.rectangle, numArgs: 4, variableArgs: false };\n    t.S = { id: OPS.stroke, numArgs: 0, variableArgs: false };\n    t.s = { id: OPS.closeStroke, numArgs: 0, variableArgs: false };\n    t.f = { id: OPS.fill, numArgs: 0, variableArgs: false };\n    t.F = { id: OPS.fill, numArgs: 0, variableArgs: false };\n    t[\"f*\"] = { id: OPS.eoFill, numArgs: 0, variableArgs: false };\n    t.B = { id: OPS.fillStroke, numArgs: 0, variableArgs: false };\n    t[\"B*\"] = { id: OPS.eoFillStroke, numArgs: 0, variableArgs: false };\n    t.b = { id: OPS.closeFillStroke, numArgs: 0, variableArgs: false };\n    t[\"b*\"] = { id: OPS.closeEOFillStroke, numArgs: 0, variableArgs: false };\n    t.n = { id: OPS.endPath, numArgs: 0, variableArgs: false };\n\n    // Clipping\n    t.W = { id: OPS.clip, numArgs: 0, variableArgs: false };\n    t[\"W*\"] = { id: OPS.eoClip, numArgs: 0, variableArgs: false };\n\n    // Text\n    t.BT = { id: OPS.beginText, numArgs: 0, variableArgs: false };\n    t.ET = { id: OPS.endText, numArgs: 0, variableArgs: false };\n    t.Tc = { id: OPS.setCharSpacing, numArgs: 1, variableArgs: false };\n    t.Tw = { id: OPS.setWordSpacing, numArgs: 1, variableArgs: false };\n    t.Tz = { id: OPS.setHScale, numArgs: 1, variableArgs: false };\n    t.TL = { id: OPS.setLeading, numArgs: 1, variableArgs: false };\n    t.Tf = { id: OPS.setFont, numArgs: 2, variableArgs: false };\n    t.Tr = { id: OPS.setTextRenderingMode, numArgs: 1, variableArgs: false };\n    t.Ts = { id: OPS.setTextRise, numArgs: 1, variableArgs: false };\n    t.Td = { id: OPS.moveText, numArgs: 2, variableArgs: false };\n    t.TD = { id: OPS.setLeadingMoveText, numArgs: 2, variableArgs: false };\n    t.Tm = { id: OPS.setTextMatrix, numArgs: 6, variableArgs: false };\n    t[\"T*\"] = { id: OPS.nextLine, numArgs: 0, variableArgs: false };\n    t.Tj = { id: OPS.showText, numArgs: 1, variableArgs: false };\n    t.TJ = { id: OPS.showSpacedText, numArgs: 1, variableArgs: false };\n    t[\"'\"] = { id: OPS.nextLineShowText, numArgs: 1, variableArgs: false };\n    t['\"'] = {\n      id: OPS.nextLineSetSpacingShowText,\n      numArgs: 3,\n      variableArgs: false,\n    };\n\n    // Type3 fonts\n    t.d0 = { id: OPS.setCharWidth, numArgs: 2, variableArgs: false };\n    t.d1 = {\n      id: OPS.setCharWidthAndBounds,\n      numArgs: 6,\n      variableArgs: false,\n    };\n\n    // Color\n    t.CS = { id: OPS.setStrokeColorSpace, numArgs: 1, variableArgs: false };\n    t.cs = { id: OPS.setFillColorSpace, numArgs: 1, variableArgs: false };\n    t.SC = { id: OPS.setStrokeColor, numArgs: 4, variableArgs: true };\n    t.SCN = { id: OPS.setStrokeColorN, numArgs: 33, variableArgs: true };\n    t.sc = { id: OPS.setFillColor, numArgs: 4, variableArgs: true };\n    t.scn = { id: OPS.setFillColorN, numArgs: 33, variableArgs: true };\n    t.G = { id: OPS.setStrokeGray, numArgs: 1, variableArgs: false };\n    t.g = { id: OPS.setFillGray, numArgs: 1, variableArgs: false };\n    t.RG = { id: OPS.setStrokeRGBColor, numArgs: 3, variableArgs: false };\n    t.rg = { id: OPS.setFillRGBColor, numArgs: 3, variableArgs: false };\n    t.K = { id: OPS.setStrokeCMYKColor, numArgs: 4, variableArgs: false };\n    t.k = { id: OPS.setFillCMYKColor, numArgs: 4, variableArgs: false };\n\n    // Shading\n    t.sh = { id: OPS.shadingFill, numArgs: 1, variableArgs: false };\n\n    // Images\n    t.BI = { id: OPS.beginInlineImage, numArgs: 0, variableArgs: false };\n    t.ID = { id: OPS.beginImageData, numArgs: 0, variableArgs: false };\n    t.EI = { id: OPS.endInlineImage, numArgs: 1, variableArgs: false };\n\n    // XObjects\n    t.Do = { id: OPS.paintXObject, numArgs: 1, variableArgs: false };\n    t.MP = { id: OPS.markPoint, numArgs: 1, variableArgs: false };\n    t.DP = { id: OPS.markPointProps, numArgs: 2, variableArgs: false };\n    t.BMC = { id: OPS.beginMarkedContent, numArgs: 1, variableArgs: false };\n    t.BDC = {\n      id: OPS.beginMarkedContentProps,\n      numArgs: 2,\n      variableArgs: false,\n    };\n    t.EMC = { id: OPS.endMarkedContent, numArgs: 0, variableArgs: false };\n\n    // Compatibility\n    t.BX = { id: OPS.beginCompat, numArgs: 0, variableArgs: false };\n    t.EX = { id: OPS.endCompat, numArgs: 0, variableArgs: false };\n\n    // (reserved partial commands for the lexer)\n    t.BM = null;\n    t.BD = null;\n    t.true = null;\n    t.fa = null;\n    t.fal = null;\n    t.fals = null;\n    t.false = null;\n    t.nu = null;\n    t.nul = null;\n    t.null = null;\n  });\n\n  const MAX_INVALID_PATH_OPS = 20;\n\n  // eslint-disable-next-line no-shadow\n  function EvaluatorPreprocessor(stream, xref, stateManager) {\n    this.opMap = getOPMap();\n    // TODO(mduan): pass array of knownCommands rather than this.opMap\n    // dictionary\n    this.parser = new Parser({\n      lexer: new Lexer(stream, this.opMap),\n      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    // |operation| is an object with two fields:\n    //\n    // - |fn| is an out param.\n    //\n    // - |args| is an inout param. On entry, it should have one of two values.\n    //\n    //   - An empty array. This indicates that the caller is providing the\n    //     array in which the args will be stored in. The caller should use\n    //     this value if it can reuse a single array for each call to read().\n    //\n    //   - |null|. This indicates that the caller needs this function to create\n    //     the array in which any args are stored in. If there are zero args,\n    //     this function will leave |operation.args| as |null| (thus avoiding\n    //     allocations that would occur if we used an empty array to represent\n    //     zero arguments). Otherwise, it will replace |null| with a new array\n    //     containing the arguments. The caller should use this value if it\n    //     cannot reuse an array for each call to read().\n    //\n    // These two modes are present because this function is very hot and so\n    // avoiding allocations where possible is worthwhile.\n    //\n    read: function EvaluatorPreprocessor_read(operation) {\n      var args = operation.args;\n      while (true) {\n        var obj = this.parser.getObj();\n        if (obj instanceof Cmd) {\n          var cmd = obj.cmd;\n          // Check that the command is valid\n          var opSpec = this.opMap[cmd];\n          if (!opSpec) {\n            warn(`Unknown command \"${cmd}\".`);\n            continue;\n          }\n\n          var fn = opSpec.id;\n          var numArgs = opSpec.numArgs;\n          var argsLength = args !== null ? args.length : 0;\n\n          if (!opSpec.variableArgs) {\n            // Postscript commands can be nested, e.g. /F2 /GS2 gs 5.711 Tf\n            if (argsLength !== numArgs) {\n              var nonProcessedArgs = this.nonProcessedArgs;\n              while (argsLength > numArgs) {\n                nonProcessedArgs.push(args.shift());\n                argsLength--;\n              }\n              while (argsLength < numArgs && nonProcessedArgs.length !== 0) {\n                if (args === null) {\n                  args = [];\n                }\n                args.unshift(nonProcessedArgs.pop());\n                argsLength++;\n              }\n            }\n\n            if (argsLength < numArgs) {\n              const partialMsg =\n                `command ${cmd}: expected ${numArgs} args, ` +\n                `but received ${argsLength} args.`;\n\n              // Incomplete path operators, in particular, can result in fairly\n              // chaotic rendering artifacts. Hence the following heuristics is\n              // used to error, rather than just warn, once a number of invalid\n              // path operators have been encountered (fixes bug1443140.pdf).\n              if (\n                fn >= OPS.moveTo &&\n                fn <= OPS.endPath && // Path operator\n                ++this._numInvalidPathOPS > MAX_INVALID_PATH_OPS\n              ) {\n                throw new FormatError(`Invalid ${partialMsg}`);\n              }\n              // If we receive too few arguments, it's not possible to execute\n              // the command, hence we skip the command.\n              warn(`Skipping ${partialMsg}`);\n              if (args !== null) {\n                args.length = 0;\n              }\n              continue;\n            }\n          } else if (argsLength > numArgs) {\n            info(\n              `Command ${cmd}: expected [0, ${numArgs}] args, ` +\n                `but received ${argsLength} args.`\n            );\n          }\n\n          // TODO figure out how to type-check vararg functions\n          this.preprocessCommand(fn, args);\n\n          operation.fn = fn;\n          operation.args = args;\n          return true;\n        }\n        if (obj === EOF) {\n          return false; // no more commands\n        }\n        // argument\n        if (obj !== null) {\n          if (args === null) {\n            args = [];\n          }\n          args.push(obj);\n          if (args.length > 33) {\n            throw new FormatError(\"Too many arguments\");\n          }\n        }\n      }\n    },\n\n    preprocessCommand: function EvaluatorPreprocessor_preprocessCommand(\n      fn,\n      args\n    ) {\n      switch (fn | 0) {\n        case OPS.save:\n          this.stateManager.save();\n          break;\n        case OPS.restore:\n          this.stateManager.restore();\n          break;\n        case OPS.transform:\n          this.stateManager.transform(args);\n          break;\n      }\n    },\n  };\n  return EvaluatorPreprocessor;\n})();\n\nexport { PartialEvaluator };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  CMapCompressionType,\n  FormatError,\n  isString,\n  unreachable,\n  warn,\n} from \"../shared/util.js\";\nimport { isCmd, isEOF, isName, isStream } from \"./primitives.js\";\nimport { Lexer } from \"./parser.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\n\nvar BUILT_IN_CMAPS = [\n  // << Start unicode maps.\n  \"Adobe-GB1-UCS2\",\n  \"Adobe-CNS1-UCS2\",\n  \"Adobe-Japan1-UCS2\",\n  \"Adobe-Korea1-UCS2\",\n  // >> End unicode maps.\n  \"78-EUC-H\",\n  \"78-EUC-V\",\n  \"78-H\",\n  \"78-RKSJ-H\",\n  \"78-RKSJ-V\",\n  \"78-V\",\n  \"78ms-RKSJ-H\",\n  \"78ms-RKSJ-V\",\n  \"83pv-RKSJ-H\",\n  \"90ms-RKSJ-H\",\n  \"90ms-RKSJ-V\",\n  \"90msp-RKSJ-H\",\n  \"90msp-RKSJ-V\",\n  \"90pv-RKSJ-H\",\n  \"90pv-RKSJ-V\",\n  \"Add-H\",\n  \"Add-RKSJ-H\",\n  \"Add-RKSJ-V\",\n  \"Add-V\",\n  \"Adobe-CNS1-0\",\n  \"Adobe-CNS1-1\",\n  \"Adobe-CNS1-2\",\n  \"Adobe-CNS1-3\",\n  \"Adobe-CNS1-4\",\n  \"Adobe-CNS1-5\",\n  \"Adobe-CNS1-6\",\n  \"Adobe-GB1-0\",\n  \"Adobe-GB1-1\",\n  \"Adobe-GB1-2\",\n  \"Adobe-GB1-3\",\n  \"Adobe-GB1-4\",\n  \"Adobe-GB1-5\",\n  \"Adobe-Japan1-0\",\n  \"Adobe-Japan1-1\",\n  \"Adobe-Japan1-2\",\n  \"Adobe-Japan1-3\",\n  \"Adobe-Japan1-4\",\n  \"Adobe-Japan1-5\",\n  \"Adobe-Japan1-6\",\n  \"Adobe-Korea1-0\",\n  \"Adobe-Korea1-1\",\n  \"Adobe-Korea1-2\",\n  \"B5-H\",\n  \"B5-V\",\n  \"B5pc-H\",\n  \"B5pc-V\",\n  \"CNS-EUC-H\",\n  \"CNS-EUC-V\",\n  \"CNS1-H\",\n  \"CNS1-V\",\n  \"CNS2-H\",\n  \"CNS2-V\",\n  \"ETHK-B5-H\",\n  \"ETHK-B5-V\",\n  \"ETen-B5-H\",\n  \"ETen-B5-V\",\n  \"ETenms-B5-H\",\n  \"ETenms-B5-V\",\n  \"EUC-H\",\n  \"EUC-V\",\n  \"Ext-H\",\n  \"Ext-RKSJ-H\",\n  \"Ext-RKSJ-V\",\n  \"Ext-V\",\n  \"GB-EUC-H\",\n  \"GB-EUC-V\",\n  \"GB-H\",\n  \"GB-V\",\n  \"GBK-EUC-H\",\n  \"GBK-EUC-V\",\n  \"GBK2K-H\",\n  \"GBK2K-V\",\n  \"GBKp-EUC-H\",\n  \"GBKp-EUC-V\",\n  \"GBT-EUC-H\",\n  \"GBT-EUC-V\",\n  \"GBT-H\",\n  \"GBT-V\",\n  \"GBTpc-EUC-H\",\n  \"GBTpc-EUC-V\",\n  \"GBpc-EUC-H\",\n  \"GBpc-EUC-V\",\n  \"H\",\n  \"HKdla-B5-H\",\n  \"HKdla-B5-V\",\n  \"HKdlb-B5-H\",\n  \"HKdlb-B5-V\",\n  \"HKgccs-B5-H\",\n  \"HKgccs-B5-V\",\n  \"HKm314-B5-H\",\n  \"HKm314-B5-V\",\n  \"HKm471-B5-H\",\n  \"HKm471-B5-V\",\n  \"HKscs-B5-H\",\n  \"HKscs-B5-V\",\n  \"Hankaku\",\n  \"Hiragana\",\n  \"KSC-EUC-H\",\n  \"KSC-EUC-V\",\n  \"KSC-H\",\n  \"KSC-Johab-H\",\n  \"KSC-Johab-V\",\n  \"KSC-V\",\n  \"KSCms-UHC-H\",\n  \"KSCms-UHC-HW-H\",\n  \"KSCms-UHC-HW-V\",\n  \"KSCms-UHC-V\",\n  \"KSCpc-EUC-H\",\n  \"KSCpc-EUC-V\",\n  \"Katakana\",\n  \"NWP-H\",\n  \"NWP-V\",\n  \"RKSJ-H\",\n  \"RKSJ-V\",\n  \"Roman\",\n  \"UniCNS-UCS2-H\",\n  \"UniCNS-UCS2-V\",\n  \"UniCNS-UTF16-H\",\n  \"UniCNS-UTF16-V\",\n  \"UniCNS-UTF32-H\",\n  \"UniCNS-UTF32-V\",\n  \"UniCNS-UTF8-H\",\n  \"UniCNS-UTF8-V\",\n  \"UniGB-UCS2-H\",\n  \"UniGB-UCS2-V\",\n  \"UniGB-UTF16-H\",\n  \"UniGB-UTF16-V\",\n  \"UniGB-UTF32-H\",\n  \"UniGB-UTF32-V\",\n  \"UniGB-UTF8-H\",\n  \"UniGB-UTF8-V\",\n  \"UniJIS-UCS2-H\",\n  \"UniJIS-UCS2-HW-H\",\n  \"UniJIS-UCS2-HW-V\",\n  \"UniJIS-UCS2-V\",\n  \"UniJIS-UTF16-H\",\n  \"UniJIS-UTF16-V\",\n  \"UniJIS-UTF32-H\",\n  \"UniJIS-UTF32-V\",\n  \"UniJIS-UTF8-H\",\n  \"UniJIS-UTF8-V\",\n  \"UniJIS2004-UTF16-H\",\n  \"UniJIS2004-UTF16-V\",\n  \"UniJIS2004-UTF32-H\",\n  \"UniJIS2004-UTF32-V\",\n  \"UniJIS2004-UTF8-H\",\n  \"UniJIS2004-UTF8-V\",\n  \"UniJISPro-UCS2-HW-V\",\n  \"UniJISPro-UCS2-V\",\n  \"UniJISPro-UTF8-V\",\n  \"UniJISX0213-UTF32-H\",\n  \"UniJISX0213-UTF32-V\",\n  \"UniJISX02132004-UTF32-H\",\n  \"UniJISX02132004-UTF32-V\",\n  \"UniKS-UCS2-H\",\n  \"UniKS-UCS2-V\",\n  \"UniKS-UTF16-H\",\n  \"UniKS-UTF16-V\",\n  \"UniKS-UTF32-H\",\n  \"UniKS-UTF32-V\",\n  \"UniKS-UTF8-H\",\n  \"UniKS-UTF8-V\",\n  \"V\",\n  \"WP-Symbol\",\n];\n\n// Heuristic to avoid hanging the worker-thread for CMap data with ridiculously\n// large ranges, such as e.g. 0xFFFFFFFF (fixes issue11922_reduced.pdf).\nconst MAX_MAP_RANGE = 2 ** 24 - 1; // = 0xFFFFFF\n\n// CMap, not to be confused with TrueType's cmap.\nclass CMap {\n  constructor(builtInCMap = false) {\n    // Codespace ranges are stored as follows:\n    // [[1BytePairs], [2BytePairs], [3BytePairs], [4BytePairs]]\n    // where nBytePairs are ranges e.g. [low1, high1, low2, high2, ...]\n    this.codespaceRanges = [[], [], [], []];\n    this.numCodespaceRanges = 0;\n    // Map entries have one of two forms.\n    // - cid chars are 16-bit unsigned integers, stored as integers.\n    // - bf chars are variable-length byte sequences, stored as strings, with\n    //   one byte per character.\n    this._map = [];\n    this.name = \"\";\n    this.vertical = false;\n    this.useCMap = null;\n    this.builtInCMap = builtInCMap;\n  }\n\n  addCodespaceRange(n, low, high) {\n    this.codespaceRanges[n - 1].push(low, high);\n    this.numCodespaceRanges++;\n  }\n\n  mapCidRange(low, high, dstLow) {\n    if (high - low > MAX_MAP_RANGE) {\n      throw new Error(\"mapCidRange - ignoring data above MAX_MAP_RANGE.\");\n    }\n    while (low <= high) {\n      this._map[low++] = dstLow++;\n    }\n  }\n\n  mapBfRange(low, high, dstLow) {\n    if (high - low > MAX_MAP_RANGE) {\n      throw new Error(\"mapBfRange - ignoring data above MAX_MAP_RANGE.\");\n    }\n    var lastByte = dstLow.length - 1;\n    while (low <= high) {\n      this._map[low++] = dstLow;\n      // Only the last byte has to be incremented.\n      dstLow =\n        dstLow.substring(0, lastByte) +\n        String.fromCharCode(dstLow.charCodeAt(lastByte) + 1);\n    }\n  }\n\n  mapBfRangeToArray(low, high, array) {\n    if (high - low > MAX_MAP_RANGE) {\n      throw new Error(\"mapBfRangeToArray - ignoring data above MAX_MAP_RANGE.\");\n    }\n    const ii = array.length;\n    let i = 0;\n    while (low <= high && i < ii) {\n      this._map[low] = array[i++];\n      ++low;\n    }\n  }\n\n  // This is used for both bf and cid chars.\n  mapOne(src, dst) {\n    this._map[src] = dst;\n  }\n\n  lookup(code) {\n    return this._map[code];\n  }\n\n  contains(code) {\n    return this._map[code] !== undefined;\n  }\n\n  forEach(callback) {\n    // Most maps have fewer than 65536 entries, and for those we use normal\n    // array iteration. But really sparse tables are possible -- e.g. with\n    // indices in the *billions*. For such tables we use for..in, which isn't\n    // ideal because it stringifies the indices for all present elements, but\n    // it does avoid iterating over every undefined entry.\n    const map = this._map;\n    const length = map.length;\n    if (length <= 0x10000) {\n      for (let i = 0; i < length; i++) {\n        if (map[i] !== undefined) {\n          callback(i, map[i]);\n        }\n      }\n    } else {\n      for (const i in map) {\n        callback(i, map[i]);\n      }\n    }\n  }\n\n  charCodeOf(value) {\n    // `Array.prototype.indexOf` is *extremely* inefficient for arrays which\n    // are both very sparse and very large (see issue8372.pdf).\n    const map = this._map;\n    if (map.length <= 0x10000) {\n      return map.indexOf(value);\n    }\n    for (const charCode in map) {\n      if (map[charCode] === value) {\n        return charCode | 0;\n      }\n    }\n    return -1;\n  }\n\n  getMap() {\n    return this._map;\n  }\n\n  readCharCode(str, offset, out) {\n    let c = 0;\n    const codespaceRanges = this.codespaceRanges;\n    // 9.7.6.2 CMap Mapping\n    // The code length is at most 4.\n    for (let n = 0, nn = codespaceRanges.length; n < nn; n++) {\n      c = ((c << 8) | str.charCodeAt(offset + n)) >>> 0;\n      // Check each codespace range to see if it falls within.\n      const codespaceRange = codespaceRanges[n];\n      for (let k = 0, kk = codespaceRange.length; k < kk; ) {\n        const low = codespaceRange[k++];\n        const high = codespaceRange[k++];\n        if (c >= low && c <= high) {\n          out.charcode = c;\n          out.length = n + 1;\n          return;\n        }\n      }\n    }\n    out.charcode = 0;\n    out.length = 1;\n  }\n\n  get length() {\n    return this._map.length;\n  }\n\n  get isIdentityCMap() {\n    if (!(this.name === \"Identity-H\" || this.name === \"Identity-V\")) {\n      return false;\n    }\n    if (this._map.length !== 0x10000) {\n      return false;\n    }\n    for (let i = 0; i < 0x10000; i++) {\n      if (this._map[i] !== i) {\n        return false;\n      }\n    }\n    return true;\n  }\n}\n\n// A special case of CMap, where the _map array implicitly has a length of\n// 65536 and each element is equal to its index.\nclass IdentityCMap extends CMap {\n  constructor(vertical, n) {\n    super();\n\n    this.vertical = vertical;\n    this.addCodespaceRange(n, 0, 0xffff);\n  }\n\n  mapCidRange(low, high, dstLow) {\n    unreachable(\"should not call mapCidRange\");\n  }\n\n  mapBfRange(low, high, dstLow) {\n    unreachable(\"should not call mapBfRange\");\n  }\n\n  mapBfRangeToArray(low, high, array) {\n    unreachable(\"should not call mapBfRangeToArray\");\n  }\n\n  mapOne(src, dst) {\n    unreachable(\"should not call mapCidOne\");\n  }\n\n  lookup(code) {\n    return Number.isInteger(code) && code <= 0xffff ? code : undefined;\n  }\n\n  contains(code) {\n    return Number.isInteger(code) && code <= 0xffff;\n  }\n\n  forEach(callback) {\n    for (let i = 0; i <= 0xffff; i++) {\n      callback(i, i);\n    }\n  }\n\n  charCodeOf(value) {\n    return Number.isInteger(value) && value <= 0xffff ? value : -1;\n  }\n\n  getMap() {\n    // Sometimes identity maps must be instantiated, but it's rare.\n    const map = new Array(0x10000);\n    for (let i = 0; i <= 0xffff; i++) {\n      map[i] = i;\n    }\n    return map;\n  }\n\n  get length() {\n    return 0x10000;\n  }\n\n  // eslint-disable-next-line getter-return\n  get isIdentityCMap() {\n    unreachable(\"should not access .isIdentityCMap\");\n  }\n}\n\nvar BinaryCMapReader = (function BinaryCMapReaderClosure() {\n  function hexToInt(a, size) {\n    var n = 0;\n    for (var i = 0; i <= size; i++) {\n      n = (n << 8) | a[i];\n    }\n    return n >>> 0;\n  }\n\n  function hexToStr(a, size) {\n    // This code is hot. Special-case some common values to avoid creating an\n    // object with subarray().\n    if (size === 1) {\n      return String.fromCharCode(a[0], a[1]);\n    }\n    if (size === 3) {\n      return String.fromCharCode(a[0], a[1], a[2], a[3]);\n    }\n    return String.fromCharCode.apply(null, a.subarray(0, size + 1));\n  }\n\n  function addHex(a, b, size) {\n    var c = 0;\n    for (var i = size; i >= 0; i--) {\n      c += a[i] + b[i];\n      a[i] = c & 255;\n      c >>= 8;\n    }\n  }\n\n  function incHex(a, size) {\n    var c = 1;\n    for (var i = size; i >= 0 && c > 0; i--) {\n      c += a[i];\n      a[i] = c & 255;\n      c >>= 8;\n    }\n  }\n\n  var MAX_NUM_SIZE = 16;\n  var MAX_ENCODED_NUM_SIZE = 19; // ceil(MAX_NUM_SIZE * 7 / 8)\n\n  function BinaryCMapStream(data) {\n    this.buffer = data;\n    this.pos = 0;\n    this.end = data.length;\n    this.tmpBuf = new Uint8Array(MAX_ENCODED_NUM_SIZE);\n  }\n\n  BinaryCMapStream.prototype = {\n    readByte() {\n      if (this.pos >= this.end) {\n        return -1;\n      }\n      return this.buffer[this.pos++];\n    },\n    readNumber() {\n      var n = 0;\n      var last;\n      do {\n        var b = this.readByte();\n        if (b < 0) {\n          throw new FormatError(\"unexpected EOF in bcmap\");\n        }\n        last = !(b & 0x80);\n        n = (n << 7) | (b & 0x7f);\n      } while (!last);\n      return n;\n    },\n    readSigned() {\n      var n = this.readNumber();\n      return n & 1 ? ~(n >>> 1) : n >>> 1;\n    },\n    readHex(num, size) {\n      num.set(this.buffer.subarray(this.pos, this.pos + size + 1));\n      this.pos += size + 1;\n    },\n    readHexNumber(num, size) {\n      var last;\n      var stack = this.tmpBuf,\n        sp = 0;\n      do {\n        var b = this.readByte();\n        if (b < 0) {\n          throw new FormatError(\"unexpected EOF in bcmap\");\n        }\n        last = !(b & 0x80);\n        stack[sp++] = b & 0x7f;\n      } while (!last);\n      var i = size,\n        buffer = 0,\n        bufferSize = 0;\n      while (i >= 0) {\n        while (bufferSize < 8 && stack.length > 0) {\n          buffer = (stack[--sp] << bufferSize) | buffer;\n          bufferSize += 7;\n        }\n        num[i] = buffer & 255;\n        i--;\n        buffer >>= 8;\n        bufferSize -= 8;\n      }\n    },\n    readHexSigned(num, size) {\n      this.readHexNumber(num, size);\n      var sign = num[size] & 1 ? 255 : 0;\n      var c = 0;\n      for (var i = 0; i <= size; i++) {\n        c = ((c & 1) << 8) | num[i];\n        num[i] = (c >> 1) ^ sign;\n      }\n    },\n    readString() {\n      var len = this.readNumber();\n      var s = \"\";\n      for (var i = 0; i < len; i++) {\n        s += String.fromCharCode(this.readNumber());\n      }\n      return s;\n    },\n  };\n\n  function processBinaryCMap(data, cMap, extend) {\n    return new Promise(function (resolve, reject) {\n      var stream = new BinaryCMapStream(data);\n      var header = stream.readByte();\n      cMap.vertical = !!(header & 1);\n\n      var useCMap = null;\n      var start = new Uint8Array(MAX_NUM_SIZE);\n      var end = new Uint8Array(MAX_NUM_SIZE);\n      var char = new Uint8Array(MAX_NUM_SIZE);\n      var charCode = new Uint8Array(MAX_NUM_SIZE);\n      var tmp = new Uint8Array(MAX_NUM_SIZE);\n      var code;\n\n      var b;\n      while ((b = stream.readByte()) >= 0) {\n        var type = b >> 5;\n        if (type === 7) {\n          // metadata, e.g. comment or usecmap\n          switch (b & 0x1f) {\n            case 0:\n              stream.readString(); // skipping comment\n              break;\n            case 1:\n              useCMap = stream.readString();\n              break;\n          }\n          continue;\n        }\n        var sequence = !!(b & 0x10);\n        var dataSize = b & 15;\n\n        if (dataSize + 1 > MAX_NUM_SIZE) {\n          throw new Error(\"processBinaryCMap: Invalid dataSize.\");\n        }\n\n        var ucs2DataSize = 1;\n        var subitemsCount = stream.readNumber();\n        var i;\n        switch (type) {\n          case 0: // codespacerange\n            stream.readHex(start, dataSize);\n            stream.readHexNumber(end, dataSize);\n            addHex(end, start, dataSize);\n            cMap.addCodespaceRange(\n              dataSize + 1,\n              hexToInt(start, dataSize),\n              hexToInt(end, dataSize)\n            );\n            for (i = 1; i < subitemsCount; i++) {\n              incHex(end, dataSize);\n              stream.readHexNumber(start, dataSize);\n              addHex(start, end, dataSize);\n              stream.readHexNumber(end, dataSize);\n              addHex(end, start, dataSize);\n              cMap.addCodespaceRange(\n                dataSize + 1,\n                hexToInt(start, dataSize),\n                hexToInt(end, dataSize)\n              );\n            }\n            break;\n          case 1: // notdefrange\n            stream.readHex(start, dataSize);\n            stream.readHexNumber(end, dataSize);\n            addHex(end, start, dataSize);\n            stream.readNumber(); // code\n            // undefined range, skipping\n            for (i = 1; i < subitemsCount; i++) {\n              incHex(end, dataSize);\n              stream.readHexNumber(start, dataSize);\n              addHex(start, end, dataSize);\n              stream.readHexNumber(end, dataSize);\n              addHex(end, start, dataSize);\n              stream.readNumber(); // code\n              // nop\n            }\n            break;\n          case 2: // cidchar\n            stream.readHex(char, dataSize);\n            code = stream.readNumber();\n            cMap.mapOne(hexToInt(char, dataSize), code);\n            for (i = 1; i < subitemsCount; i++) {\n              incHex(char, dataSize);\n              if (!sequence) {\n                stream.readHexNumber(tmp, dataSize);\n                addHex(char, tmp, dataSize);\n              }\n              code = stream.readSigned() + (code + 1);\n              cMap.mapOne(hexToInt(char, dataSize), code);\n            }\n            break;\n          case 3: // cidrange\n            stream.readHex(start, dataSize);\n            stream.readHexNumber(end, dataSize);\n            addHex(end, start, dataSize);\n            code = stream.readNumber();\n            cMap.mapCidRange(\n              hexToInt(start, dataSize),\n              hexToInt(end, dataSize),\n              code\n            );\n            for (i = 1; i < subitemsCount; i++) {\n              incHex(end, dataSize);\n              if (!sequence) {\n                stream.readHexNumber(start, dataSize);\n                addHex(start, end, dataSize);\n              } else {\n                start.set(end);\n              }\n              stream.readHexNumber(end, dataSize);\n              addHex(end, start, dataSize);\n              code = stream.readNumber();\n              cMap.mapCidRange(\n                hexToInt(start, dataSize),\n                hexToInt(end, dataSize),\n                code\n              );\n            }\n            break;\n          case 4: // bfchar\n            stream.readHex(char, ucs2DataSize);\n            stream.readHex(charCode, dataSize);\n            cMap.mapOne(\n              hexToInt(char, ucs2DataSize),\n              hexToStr(charCode, dataSize)\n            );\n            for (i = 1; i < subitemsCount; i++) {\n              incHex(char, ucs2DataSize);\n              if (!sequence) {\n                stream.readHexNumber(tmp, ucs2DataSize);\n                addHex(char, tmp, ucs2DataSize);\n              }\n              incHex(charCode, dataSize);\n              stream.readHexSigned(tmp, dataSize);\n              addHex(charCode, tmp, dataSize);\n              cMap.mapOne(\n                hexToInt(char, ucs2DataSize),\n                hexToStr(charCode, dataSize)\n              );\n            }\n            break;\n          case 5: // bfrange\n            stream.readHex(start, ucs2DataSize);\n            stream.readHexNumber(end, ucs2DataSize);\n            addHex(end, start, ucs2DataSize);\n            stream.readHex(charCode, dataSize);\n            cMap.mapBfRange(\n              hexToInt(start, ucs2DataSize),\n              hexToInt(end, ucs2DataSize),\n              hexToStr(charCode, dataSize)\n            );\n            for (i = 1; i < subitemsCount; i++) {\n              incHex(end, ucs2DataSize);\n              if (!sequence) {\n                stream.readHexNumber(start, ucs2DataSize);\n                addHex(start, end, ucs2DataSize);\n              } else {\n                start.set(end);\n              }\n              stream.readHexNumber(end, ucs2DataSize);\n              addHex(end, start, ucs2DataSize);\n              stream.readHex(charCode, dataSize);\n              cMap.mapBfRange(\n                hexToInt(start, ucs2DataSize),\n                hexToInt(end, ucs2DataSize),\n                hexToStr(charCode, dataSize)\n              );\n            }\n            break;\n          default:\n            reject(new Error(\"processBinaryCMap: Unknown type: \" + type));\n            return;\n        }\n      }\n\n      if (useCMap) {\n        resolve(extend(useCMap));\n        return;\n      }\n      resolve(cMap);\n    });\n  }\n\n  // eslint-disable-next-line no-shadow\n  function BinaryCMapReader() {}\n\n  BinaryCMapReader.prototype = {\n    process: processBinaryCMap,\n  };\n\n  return BinaryCMapReader;\n})();\n\nvar CMapFactory = (function CMapFactoryClosure() {\n  function strToInt(str) {\n    var a = 0;\n    for (var i = 0; i < str.length; i++) {\n      a = (a << 8) | str.charCodeAt(i);\n    }\n    return a >>> 0;\n  }\n\n  function expectString(obj) {\n    if (!isString(obj)) {\n      throw new FormatError(\"Malformed CMap: expected string.\");\n    }\n  }\n\n  function expectInt(obj) {\n    if (!Number.isInteger(obj)) {\n      throw new FormatError(\"Malformed CMap: expected int.\");\n    }\n  }\n\n  function parseBfChar(cMap, lexer) {\n    while (true) {\n      var obj = lexer.getObj();\n      if (isEOF(obj)) {\n        break;\n      }\n      if (isCmd(obj, \"endbfchar\")) {\n        return;\n      }\n      expectString(obj);\n      var src = strToInt(obj);\n      obj = lexer.getObj();\n      // TODO are /dstName used?\n      expectString(obj);\n      var dst = obj;\n      cMap.mapOne(src, dst);\n    }\n  }\n\n  function parseBfRange(cMap, lexer) {\n    while (true) {\n      var obj = lexer.getObj();\n      if (isEOF(obj)) {\n        break;\n      }\n      if (isCmd(obj, \"endbfrange\")) {\n        return;\n      }\n      expectString(obj);\n      var low = strToInt(obj);\n      obj = lexer.getObj();\n      expectString(obj);\n      var high = strToInt(obj);\n      obj = lexer.getObj();\n      if (Number.isInteger(obj) || isString(obj)) {\n        var dstLow = Number.isInteger(obj) ? String.fromCharCode(obj) : obj;\n        cMap.mapBfRange(low, high, dstLow);\n      } else if (isCmd(obj, \"[\")) {\n        obj = lexer.getObj();\n        var array = [];\n        while (!isCmd(obj, \"]\") && !isEOF(obj)) {\n          array.push(obj);\n          obj = lexer.getObj();\n        }\n        cMap.mapBfRangeToArray(low, high, array);\n      } else {\n        break;\n      }\n    }\n    throw new FormatError(\"Invalid bf range.\");\n  }\n\n  function parseCidChar(cMap, lexer) {\n    while (true) {\n      var obj = lexer.getObj();\n      if (isEOF(obj)) {\n        break;\n      }\n      if (isCmd(obj, \"endcidchar\")) {\n        return;\n      }\n      expectString(obj);\n      var src = strToInt(obj);\n      obj = lexer.getObj();\n      expectInt(obj);\n      var dst = obj;\n      cMap.mapOne(src, dst);\n    }\n  }\n\n  function parseCidRange(cMap, lexer) {\n    while (true) {\n      var obj = lexer.getObj();\n      if (isEOF(obj)) {\n        break;\n      }\n      if (isCmd(obj, \"endcidrange\")) {\n        return;\n      }\n      expectString(obj);\n      var low = strToInt(obj);\n      obj = lexer.getObj();\n      expectString(obj);\n      var high = strToInt(obj);\n      obj = lexer.getObj();\n      expectInt(obj);\n      var dstLow = obj;\n      cMap.mapCidRange(low, high, dstLow);\n    }\n  }\n\n  function parseCodespaceRange(cMap, lexer) {\n    while (true) {\n      var obj = lexer.getObj();\n      if (isEOF(obj)) {\n        break;\n      }\n      if (isCmd(obj, \"endcodespacerange\")) {\n        return;\n      }\n      if (!isString(obj)) {\n        break;\n      }\n      var low = strToInt(obj);\n      obj = lexer.getObj();\n      if (!isString(obj)) {\n        break;\n      }\n      var high = strToInt(obj);\n      cMap.addCodespaceRange(obj.length, low, high);\n    }\n    throw new FormatError(\"Invalid codespace range.\");\n  }\n\n  function parseWMode(cMap, lexer) {\n    var obj = lexer.getObj();\n    if (Number.isInteger(obj)) {\n      cMap.vertical = !!obj;\n    }\n  }\n\n  function parseCMapName(cMap, lexer) {\n    var obj = lexer.getObj();\n    if (isName(obj) && isString(obj.name)) {\n      cMap.name = obj.name;\n    }\n  }\n\n  function parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap) {\n    var previous;\n    var embeddedUseCMap;\n    objLoop: while (true) {\n      try {\n        var obj = lexer.getObj();\n        if (isEOF(obj)) {\n          break;\n        } else if (isName(obj)) {\n          if (obj.name === \"WMode\") {\n            parseWMode(cMap, lexer);\n          } else if (obj.name === \"CMapName\") {\n            parseCMapName(cMap, lexer);\n          }\n          previous = obj;\n        } else if (isCmd(obj)) {\n          switch (obj.cmd) {\n            case \"endcmap\":\n              break objLoop;\n            case \"usecmap\":\n              if (isName(previous)) {\n                embeddedUseCMap = previous.name;\n              }\n              break;\n            case \"begincodespacerange\":\n              parseCodespaceRange(cMap, lexer);\n              break;\n            case \"beginbfchar\":\n              parseBfChar(cMap, lexer);\n              break;\n            case \"begincidchar\":\n              parseCidChar(cMap, lexer);\n              break;\n            case \"beginbfrange\":\n              parseBfRange(cMap, lexer);\n              break;\n            case \"begincidrange\":\n              parseCidRange(cMap, lexer);\n              break;\n          }\n        }\n      } catch (ex) {\n        if (ex instanceof MissingDataException) {\n          throw ex;\n        }\n        warn(\"Invalid cMap data: \" + ex);\n        continue;\n      }\n    }\n\n    if (!useCMap && embeddedUseCMap) {\n      // Load the useCMap definition from the file only if there wasn't one\n      // specified.\n      useCMap = embeddedUseCMap;\n    }\n    if (useCMap) {\n      return extendCMap(cMap, fetchBuiltInCMap, useCMap);\n    }\n    return Promise.resolve(cMap);\n  }\n\n  function extendCMap(cMap, fetchBuiltInCMap, useCMap) {\n    return createBuiltInCMap(useCMap, fetchBuiltInCMap).then(function (\n      newCMap\n    ) {\n      cMap.useCMap = newCMap;\n      // If there aren't any code space ranges defined clone all the parent ones\n      // into this cMap.\n      if (cMap.numCodespaceRanges === 0) {\n        var useCodespaceRanges = cMap.useCMap.codespaceRanges;\n        for (var i = 0; i < useCodespaceRanges.length; i++) {\n          cMap.codespaceRanges[i] = useCodespaceRanges[i].slice();\n        }\n        cMap.numCodespaceRanges = cMap.useCMap.numCodespaceRanges;\n      }\n      // Merge the map into the current one, making sure not to override\n      // any previously defined entries.\n      cMap.useCMap.forEach(function (key, value) {\n        if (!cMap.contains(key)) {\n          cMap.mapOne(key, cMap.useCMap.lookup(key));\n        }\n      });\n\n      return cMap;\n    });\n  }\n\n  function createBuiltInCMap(name, fetchBuiltInCMap) {\n    if (name === \"Identity-H\") {\n      return Promise.resolve(new IdentityCMap(false, 2));\n    } else if (name === \"Identity-V\") {\n      return Promise.resolve(new IdentityCMap(true, 2));\n    }\n    if (!BUILT_IN_CMAPS.includes(name)) {\n      return Promise.reject(new Error(\"Unknown CMap name: \" + name));\n    }\n    if (!fetchBuiltInCMap) {\n      return Promise.reject(\n        new Error(\"Built-in CMap parameters are not provided.\")\n      );\n    }\n\n    return fetchBuiltInCMap(name).then(function (data) {\n      var cMapData = data.cMapData,\n        compressionType = data.compressionType;\n      var cMap = new CMap(true);\n\n      if (compressionType === CMapCompressionType.BINARY) {\n        return new BinaryCMapReader().process(cMapData, cMap, function (\n          useCMap\n        ) {\n          return extendCMap(cMap, fetchBuiltInCMap, useCMap);\n        });\n      }\n      if (compressionType === CMapCompressionType.NONE) {\n        var lexer = new Lexer(new Stream(cMapData));\n        return parseCMap(cMap, lexer, fetchBuiltInCMap, null);\n      }\n      return Promise.reject(\n        new Error(\n          \"TODO: Only BINARY/NONE CMap compression is currently supported.\"\n        )\n      );\n    });\n  }\n\n  return {\n    async create(params) {\n      var encoding = params.encoding;\n      var fetchBuiltInCMap = params.fetchBuiltInCMap;\n      var useCMap = params.useCMap;\n\n      if (isName(encoding)) {\n        return createBuiltInCMap(encoding.name, fetchBuiltInCMap);\n      } else if (isStream(encoding)) {\n        var cMap = new CMap();\n        var lexer = new Lexer(encoding);\n        return parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap).then(function (\n          parsedCMap\n        ) {\n          if (parsedCMap.isIdentityCMap) {\n            return createBuiltInCMap(parsedCMap.name, fetchBuiltInCMap);\n          }\n          return parsedCMap;\n        });\n      }\n      throw new Error(\"Encoding required.\");\n    },\n  };\n})();\n\nexport { CMap, IdentityCMap, CMapFactory };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  assert,\n  bytesToString,\n  FONT_IDENTITY_MATRIX,\n  FontType,\n  FormatError,\n  info,\n  isNum,\n  shadow,\n  string32,\n  unreachable,\n  warn,\n} from \"../shared/util.js\";\nimport {\n  CFF,\n  CFFCharset,\n  CFFCompiler,\n  CFFHeader,\n  CFFIndex,\n  CFFParser,\n  CFFPrivateDict,\n  CFFStandardStrings,\n  CFFStrings,\n  CFFTopDict,\n} from \"./cff_parser.js\";\nimport { getDingbatsGlyphsUnicode, getGlyphsUnicode } from \"./glyphlist.js\";\nimport {\n  getEncoding,\n  MacRomanEncoding,\n  StandardEncoding,\n  SymbolSetEncoding,\n  ZapfDingbatsEncoding,\n} from \"./encodings.js\";\nimport {\n  getGlyphMapForStandardFonts,\n  getNonStdFontMap,\n  getStdFontMap,\n  getSupplementalGlyphMapForArialBlack,\n  getSupplementalGlyphMapForCalibri,\n} from \"./standard_fonts.js\";\nimport {\n  getUnicodeForGlyph,\n  getUnicodeRangeFor,\n  mapSpecialUnicodeValues,\n} from \"./unicode.js\";\nimport {\n  isWhiteSpace,\n  MissingDataException,\n  readUint32,\n} from \"./core_utils.js\";\nimport { FontRendererFactory } from \"./font_renderer.js\";\nimport { IdentityCMap } from \"./cmap.js\";\nimport { Stream } from \"./stream.js\";\nimport { Type1Parser } from \"./type1_parser.js\";\n\n// Unicode Private Use Areas:\nconst PRIVATE_USE_AREAS = [\n  [0xe000, 0xf8ff], // BMP (0)\n  [0x100000, 0x10fffd], // PUP (16)\n];\n\n// PDF Glyph Space Units are one Thousandth of a TextSpace Unit\n// except for Type 3 fonts\nvar PDF_GLYPH_SPACE_UNITS = 1000;\n\n// Accented characters have issues on Windows and Linux. When this flag is\n// enabled glyphs that use seac and seac style endchar operators are truncated\n// and we instead just store the glyph id's of the base glyph and its accent to\n// be drawn individually.\n// Linux (freetype) requires that when a seac style endchar is used\n// that the charset must be a predefined one, however we build a\n// custom one. Windows just refuses to draw glyphs with seac operators.\nvar SEAC_ANALYSIS_ENABLED = true;\n\nconst EXPORT_DATA_PROPERTIES = [\n  \"ascent\",\n  \"bbox\",\n  \"black\",\n  \"bold\",\n  \"charProcOperatorList\",\n  \"composite\",\n  \"data\",\n  \"defaultVMetrics\",\n  \"defaultWidth\",\n  \"descent\",\n  \"fallbackName\",\n  \"fontMatrix\",\n  \"fontType\",\n  \"isMonospace\",\n  \"isSerifFont\",\n  \"isType3Font\",\n  \"italic\",\n  \"loadedName\",\n  \"mimetype\",\n  \"missingFile\",\n  \"name\",\n  \"remeasure\",\n  \"subtype\",\n  \"type\",\n  \"vertical\",\n];\n\nconst EXPORT_DATA_EXTRA_PROPERTIES = [\n  \"cMap\",\n  \"defaultEncoding\",\n  \"differences\",\n  \"isSymbolicFont\",\n  \"seacMap\",\n  \"toFontChar\",\n  \"toUnicode\",\n  \"vmetrics\",\n  \"widths\",\n];\n\nvar FontFlags = {\n  FixedPitch: 1,\n  Serif: 2,\n  Symbolic: 4,\n  Script: 8,\n  Nonsymbolic: 32,\n  Italic: 64,\n  AllCap: 65536,\n  SmallCap: 131072,\n  ForceBold: 262144,\n};\n\n// prettier-ignore\nvar MacStandardGlyphOrdering = [\n  \".notdef\", \".null\", \"nonmarkingreturn\", \"space\", \"exclam\", \"quotedbl\",\n  \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quotesingle\", \"parenleft\",\n  \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\",\n  \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\",\n  \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\",\n  \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\",\n  \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\",\n  \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\",\n  \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\",\n  \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\",\n  \"asciitilde\", \"Adieresis\", \"Aring\", \"Ccedilla\", \"Eacute\", \"Ntilde\",\n  \"Odieresis\", \"Udieresis\", \"aacute\", \"agrave\", \"acircumflex\", \"adieresis\",\n  \"atilde\", \"aring\", \"ccedilla\", \"eacute\", \"egrave\", \"ecircumflex\", \"edieresis\",\n  \"iacute\", \"igrave\", \"icircumflex\", \"idieresis\", \"ntilde\", \"oacute\", \"ograve\",\n  \"ocircumflex\", \"odieresis\", \"otilde\", \"uacute\", \"ugrave\", \"ucircumflex\",\n  \"udieresis\", \"dagger\", \"degree\", \"cent\", \"sterling\", \"section\", \"bullet\",\n  \"paragraph\", \"germandbls\", \"registered\", \"copyright\", \"trademark\", \"acute\",\n  \"dieresis\", \"notequal\", \"AE\", \"Oslash\", \"infinity\", \"plusminus\", \"lessequal\",\n  \"greaterequal\", \"yen\", \"mu\", \"partialdiff\", \"summation\", \"product\", \"pi\",\n  \"integral\", \"ordfeminine\", \"ordmasculine\", \"Omega\", \"ae\", \"oslash\",\n  \"questiondown\", \"exclamdown\", \"logicalnot\", \"radical\", \"florin\",\n  \"approxequal\", \"Delta\", \"guillemotleft\", \"guillemotright\", \"ellipsis\",\n  \"nonbreakingspace\", \"Agrave\", \"Atilde\", \"Otilde\", \"OE\", \"oe\", \"endash\",\n  \"emdash\", \"quotedblleft\", \"quotedblright\", \"quoteleft\", \"quoteright\",\n  \"divide\", \"lozenge\", \"ydieresis\", \"Ydieresis\", \"fraction\", \"currency\",\n  \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"daggerdbl\", \"periodcentered\",\n  \"quotesinglbase\", \"quotedblbase\", \"perthousand\", \"Acircumflex\",\n  \"Ecircumflex\", \"Aacute\", \"Edieresis\", \"Egrave\", \"Iacute\", \"Icircumflex\",\n  \"Idieresis\", \"Igrave\", \"Oacute\", \"Ocircumflex\", \"apple\", \"Ograve\", \"Uacute\",\n  \"Ucircumflex\", \"Ugrave\", \"dotlessi\", \"circumflex\", \"tilde\", \"macron\",\n  \"breve\", \"dotaccent\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\",\n  \"Lslash\", \"lslash\", \"Scaron\", \"scaron\", \"Zcaron\", \"zcaron\", \"brokenbar\",\n  \"Eth\", \"eth\", \"Yacute\", \"yacute\", \"Thorn\", \"thorn\", \"minus\", \"multiply\",\n  \"onesuperior\", \"twosuperior\", \"threesuperior\", \"onehalf\", \"onequarter\",\n  \"threequarters\", \"franc\", \"Gbreve\", \"gbreve\", \"Idotaccent\", \"Scedilla\",\n  \"scedilla\", \"Cacute\", \"cacute\", \"Ccaron\", \"ccaron\", \"dcroat\"];\n\nfunction adjustWidths(properties) {\n  if (!properties.fontMatrix) {\n    return;\n  }\n  if (properties.fontMatrix[0] === FONT_IDENTITY_MATRIX[0]) {\n    return;\n  }\n  // adjusting width to fontMatrix scale\n  var scale = 0.001 / properties.fontMatrix[0];\n  var glyphsWidths = properties.widths;\n  for (var glyph in glyphsWidths) {\n    glyphsWidths[glyph] *= scale;\n  }\n  properties.defaultWidth *= scale;\n}\n\nfunction adjustToUnicode(properties, builtInEncoding) {\n  if (properties.hasIncludedToUnicodeMap) {\n    return; // The font dictionary has a `ToUnicode` entry.\n  }\n  if (properties.hasEncoding) {\n    return; // The font dictionary has an `Encoding` entry.\n  }\n  if (builtInEncoding === properties.defaultEncoding) {\n    return; // No point in trying to adjust `toUnicode` if the encodings match.\n  }\n  if (properties.toUnicode instanceof IdentityToUnicodeMap) {\n    return;\n  }\n  var toUnicode = [],\n    glyphsUnicodeMap = getGlyphsUnicode();\n  for (var charCode in builtInEncoding) {\n    var glyphName = builtInEncoding[charCode];\n    var unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n    if (unicode !== -1) {\n      toUnicode[charCode] = String.fromCharCode(unicode);\n    }\n  }\n  properties.toUnicode.amend(toUnicode);\n}\n\nfunction getFontType(type, subtype) {\n  switch (type) {\n    case \"Type1\":\n      return subtype === \"Type1C\" ? FontType.TYPE1C : FontType.TYPE1;\n    case \"CIDFontType0\":\n      return subtype === \"CIDFontType0C\"\n        ? FontType.CIDFONTTYPE0C\n        : FontType.CIDFONTTYPE0;\n    case \"OpenType\":\n      return FontType.OPENTYPE;\n    case \"TrueType\":\n      return FontType.TRUETYPE;\n    case \"CIDFontType2\":\n      return FontType.CIDFONTTYPE2;\n    case \"MMType1\":\n      return FontType.MMTYPE1;\n    case \"Type0\":\n      return FontType.TYPE0;\n    default:\n      return FontType.UNKNOWN;\n  }\n}\n\n// Some bad PDF generators, e.g. Scribus PDF, include glyph names\n// in a 'uniXXXX' format -- attempting to recover proper ones.\nfunction recoverGlyphName(name, glyphsUnicodeMap) {\n  if (glyphsUnicodeMap[name] !== undefined) {\n    return name;\n  }\n  // The glyph name is non-standard, trying to recover.\n  var unicode = getUnicodeForGlyph(name, glyphsUnicodeMap);\n  if (unicode !== -1) {\n    for (var key in glyphsUnicodeMap) {\n      if (glyphsUnicodeMap[key] === unicode) {\n        return key;\n      }\n    }\n  }\n  info(\"Unable to recover a standard glyph name for: \" + name);\n  return name;\n}\n\nvar Glyph = (function GlyphClosure() {\n  // eslint-disable-next-line no-shadow\n  function Glyph(\n    fontChar,\n    unicode,\n    accent,\n    width,\n    vmetric,\n    operatorListId,\n    isSpace,\n    isInFont\n  ) {\n    this.fontChar = fontChar;\n    this.unicode = unicode;\n    this.accent = accent;\n    this.width = width;\n    this.vmetric = vmetric;\n    this.operatorListId = operatorListId;\n    this.isSpace = isSpace;\n    this.isInFont = isInFont;\n  }\n\n  Glyph.prototype.matchesForCache = function (\n    fontChar,\n    unicode,\n    accent,\n    width,\n    vmetric,\n    operatorListId,\n    isSpace,\n    isInFont\n  ) {\n    return (\n      this.fontChar === fontChar &&\n      this.unicode === unicode &&\n      this.accent === accent &&\n      this.width === width &&\n      this.vmetric === vmetric &&\n      this.operatorListId === operatorListId &&\n      this.isSpace === isSpace &&\n      this.isInFont === isInFont\n    );\n  };\n\n  return Glyph;\n})();\n\nvar ToUnicodeMap = (function ToUnicodeMapClosure() {\n  // eslint-disable-next-line no-shadow\n  function ToUnicodeMap(cmap = []) {\n    // The elements of this._map can be integers or strings, depending on how\n    // `cmap` was created.\n    this._map = cmap;\n  }\n\n  ToUnicodeMap.prototype = {\n    get length() {\n      return this._map.length;\n    },\n\n    forEach(callback) {\n      for (var charCode in this._map) {\n        callback(charCode, this._map[charCode].charCodeAt(0));\n      }\n    },\n\n    has(i) {\n      return this._map[i] !== undefined;\n    },\n\n    get(i) {\n      return this._map[i];\n    },\n\n    charCodeOf(value) {\n      // `Array.prototype.indexOf` is *extremely* inefficient for arrays which\n      // are both very sparse and very large (see issue8372.pdf).\n      const map = this._map;\n      if (map.length <= 0x10000) {\n        return map.indexOf(value);\n      }\n      for (const charCode in map) {\n        if (map[charCode] === value) {\n          return charCode | 0;\n        }\n      }\n      return -1;\n    },\n\n    amend(map) {\n      for (var charCode in map) {\n        this._map[charCode] = map[charCode];\n      }\n    },\n  };\n\n  return ToUnicodeMap;\n})();\n\nvar IdentityToUnicodeMap = (function IdentityToUnicodeMapClosure() {\n  // eslint-disable-next-line no-shadow\n  function IdentityToUnicodeMap(firstChar, lastChar) {\n    this.firstChar = firstChar;\n    this.lastChar = lastChar;\n  }\n\n  IdentityToUnicodeMap.prototype = {\n    get length() {\n      return this.lastChar + 1 - this.firstChar;\n    },\n\n    forEach(callback) {\n      for (var i = this.firstChar, ii = this.lastChar; i <= ii; i++) {\n        callback(i, i);\n      }\n    },\n\n    has(i) {\n      return this.firstChar <= i && i <= this.lastChar;\n    },\n\n    get(i) {\n      if (this.firstChar <= i && i <= this.lastChar) {\n        return String.fromCharCode(i);\n      }\n      return undefined;\n    },\n\n    charCodeOf(v) {\n      return Number.isInteger(v) && v >= this.firstChar && v <= this.lastChar\n        ? v\n        : -1;\n    },\n\n    amend(map) {\n      unreachable(\"Should not call amend()\");\n    },\n  };\n\n  return IdentityToUnicodeMap;\n})();\n\nvar OpenTypeFileBuilder = (function OpenTypeFileBuilderClosure() {\n  function writeInt16(dest, offset, num) {\n    dest[offset] = (num >> 8) & 0xff;\n    dest[offset + 1] = num & 0xff;\n  }\n\n  function writeInt32(dest, offset, num) {\n    dest[offset] = (num >> 24) & 0xff;\n    dest[offset + 1] = (num >> 16) & 0xff;\n    dest[offset + 2] = (num >> 8) & 0xff;\n    dest[offset + 3] = num & 0xff;\n  }\n\n  function writeData(dest, offset, data) {\n    var i, ii;\n    if (data instanceof Uint8Array) {\n      dest.set(data, offset);\n    } else if (typeof data === \"string\") {\n      for (i = 0, ii = data.length; i < ii; i++) {\n        dest[offset++] = data.charCodeAt(i) & 0xff;\n      }\n    } else {\n      // treating everything else as array\n      for (i = 0, ii = data.length; i < ii; i++) {\n        dest[offset++] = data[i] & 0xff;\n      }\n    }\n  }\n\n  // eslint-disable-next-line no-shadow\n  function OpenTypeFileBuilder(sfnt) {\n    this.sfnt = sfnt;\n    this.tables = Object.create(null);\n  }\n\n  OpenTypeFileBuilder.getSearchParams = function OpenTypeFileBuilder_getSearchParams(\n    entriesCount,\n    entrySize\n  ) {\n    var maxPower2 = 1,\n      log2 = 0;\n    while ((maxPower2 ^ entriesCount) > maxPower2) {\n      maxPower2 <<= 1;\n      log2++;\n    }\n    var searchRange = maxPower2 * entrySize;\n    return {\n      range: searchRange,\n      entry: log2,\n      rangeShift: entrySize * entriesCount - searchRange,\n    };\n  };\n\n  var OTF_HEADER_SIZE = 12;\n  var OTF_TABLE_ENTRY_SIZE = 16;\n\n  OpenTypeFileBuilder.prototype = {\n    toArray: function OpenTypeFileBuilder_toArray() {\n      var sfnt = this.sfnt;\n\n      // Tables needs to be written by ascendant alphabetic order\n      var tables = this.tables;\n      var tablesNames = Object.keys(tables);\n      tablesNames.sort();\n      var numTables = tablesNames.length;\n\n      var i, j, jj, table, tableName;\n      // layout the tables data\n      var offset = OTF_HEADER_SIZE + numTables * OTF_TABLE_ENTRY_SIZE;\n      var tableOffsets = [offset];\n      for (i = 0; i < numTables; i++) {\n        table = tables[tablesNames[i]];\n        var paddedLength = ((table.length + 3) & ~3) >>> 0;\n        offset += paddedLength;\n        tableOffsets.push(offset);\n      }\n\n      var file = new Uint8Array(offset);\n      // write the table data first (mostly for checksum)\n      for (i = 0; i < numTables; i++) {\n        table = tables[tablesNames[i]];\n        writeData(file, tableOffsets[i], table);\n      }\n\n      // sfnt version (4 bytes)\n      if (sfnt === \"true\") {\n        // Windows hates the Mac TrueType sfnt version number\n        sfnt = string32(0x00010000);\n      }\n      file[0] = sfnt.charCodeAt(0) & 0xff;\n      file[1] = sfnt.charCodeAt(1) & 0xff;\n      file[2] = sfnt.charCodeAt(2) & 0xff;\n      file[3] = sfnt.charCodeAt(3) & 0xff;\n\n      // numTables (2 bytes)\n      writeInt16(file, 4, numTables);\n\n      var searchParams = OpenTypeFileBuilder.getSearchParams(numTables, 16);\n\n      // searchRange (2 bytes)\n      writeInt16(file, 6, searchParams.range);\n      // entrySelector (2 bytes)\n      writeInt16(file, 8, searchParams.entry);\n      // rangeShift (2 bytes)\n      writeInt16(file, 10, searchParams.rangeShift);\n\n      offset = OTF_HEADER_SIZE;\n      // writing table entries\n      for (i = 0; i < numTables; i++) {\n        tableName = tablesNames[i];\n        file[offset] = tableName.charCodeAt(0) & 0xff;\n        file[offset + 1] = tableName.charCodeAt(1) & 0xff;\n        file[offset + 2] = tableName.charCodeAt(2) & 0xff;\n        file[offset + 3] = tableName.charCodeAt(3) & 0xff;\n\n        // checksum\n        var checksum = 0;\n        for (j = tableOffsets[i], jj = tableOffsets[i + 1]; j < jj; j += 4) {\n          var quad = readUint32(file, j);\n          checksum = (checksum + quad) >>> 0;\n        }\n        writeInt32(file, offset + 4, checksum);\n\n        // offset\n        writeInt32(file, offset + 8, tableOffsets[i]);\n        // length\n        writeInt32(file, offset + 12, tables[tableName].length);\n\n        offset += OTF_TABLE_ENTRY_SIZE;\n      }\n      return file;\n    },\n\n    addTable: function OpenTypeFileBuilder_addTable(tag, data) {\n      if (tag in this.tables) {\n        throw new Error(\"Table \" + tag + \" already exists\");\n      }\n      this.tables[tag] = data;\n    },\n  };\n\n  return OpenTypeFileBuilder;\n})();\n\n/**\n * 'Font' is the class the outside world should use, it encapsulate all the font\n * decoding logics whatever type it is (assuming the font type is supported).\n *\n * For example to read a Type1 font and to attach it to the document:\n *   var type1Font = new Font(\"MyFontName\", binaryFile, propertiesObject);\n *   type1Font.bind();\n */\nvar Font = (function FontClosure() {\n  // eslint-disable-next-line no-shadow\n  function Font(name, file, properties) {\n    var charCode;\n\n    this.name = name;\n    this.loadedName = properties.loadedName;\n    this.isType3Font = properties.isType3Font;\n    this.missingFile = false;\n\n    this.glyphCache = Object.create(null);\n\n    this.isSerifFont = !!(properties.flags & FontFlags.Serif);\n    this.isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n    this.isMonospace = !!(properties.flags & FontFlags.FixedPitch);\n\n    var type = properties.type;\n    var subtype = properties.subtype;\n    this.type = type;\n    this.subtype = subtype;\n\n    let fallbackName = \"sans-serif\";\n    if (this.isMonospace) {\n      fallbackName = \"monospace\";\n    } else if (this.isSerifFont) {\n      fallbackName = \"serif\";\n    }\n    this.fallbackName = fallbackName;\n\n    this.differences = properties.differences;\n    this.widths = properties.widths;\n    this.defaultWidth = properties.defaultWidth;\n    this.composite = properties.composite;\n    this.cMap = properties.cMap;\n    this.ascent = properties.ascent / PDF_GLYPH_SPACE_UNITS;\n    this.descent = properties.descent / PDF_GLYPH_SPACE_UNITS;\n    this.fontMatrix = properties.fontMatrix;\n    this.bbox = properties.bbox;\n    this.defaultEncoding = properties.defaultEncoding;\n\n    this.toUnicode = properties.toUnicode;\n    this.fallbackToUnicode = properties.fallbackToUnicode || new ToUnicodeMap();\n\n    this.toFontChar = [];\n\n    if (properties.type === \"Type3\") {\n      for (charCode = 0; charCode < 256; charCode++) {\n        this.toFontChar[charCode] =\n          this.differences[charCode] || properties.defaultEncoding[charCode];\n      }\n      this.fontType = FontType.TYPE3;\n      return;\n    }\n\n    this.cidEncoding = properties.cidEncoding;\n    this.vertical = !!properties.vertical;\n    if (this.vertical) {\n      this.vmetrics = properties.vmetrics;\n      this.defaultVMetrics = properties.defaultVMetrics;\n    }\n\n    if (!file || file.isEmpty) {\n      if (file) {\n        // Some bad PDF generators will include empty font files,\n        // attempting to recover by assuming that no file exists.\n        warn('Font file is empty in \"' + name + '\" (' + this.loadedName + \")\");\n      }\n      this.fallbackToSystemFont();\n      return;\n    }\n\n    // Parse the font file to determine the correct type/subtype, rather than\n    // relying on the (often incorrect) data in the font dictionary; (see e.g.\n    //  issue6782.pdf, issue7598.pdf, and issue9949.pdf).\n    [type, subtype] = getFontFileType(file, properties);\n\n    if (type !== this.type || subtype !== this.subtype) {\n      info(\n        \"Inconsistent font file Type/SubType, expected: \" +\n          `${this.type}/${this.subtype} but found: ${type}/${subtype}.`\n      );\n    }\n\n    try {\n      var data;\n      switch (type) {\n        case \"MMType1\":\n          info(\"MMType1 font (\" + name + \"), falling back to Type1.\");\n        /* falls through */\n        case \"Type1\":\n        case \"CIDFontType0\":\n          this.mimetype = \"font/opentype\";\n\n          var cff =\n            subtype === \"Type1C\" || subtype === \"CIDFontType0C\"\n              ? new CFFFont(file, properties)\n              : new Type1Font(name, file, properties);\n\n          adjustWidths(properties);\n\n          // Wrap the CFF data inside an OTF font file\n          data = this.convert(name, cff, properties);\n          break;\n\n        case \"OpenType\":\n        case \"TrueType\":\n        case \"CIDFontType2\":\n          this.mimetype = \"font/opentype\";\n\n          // Repair the TrueType file. It is can be damaged in the point of\n          // view of the sanitizer\n          data = this.checkAndRepair(name, file, properties);\n          if (this.isOpenType) {\n            adjustWidths(properties);\n\n            type = \"OpenType\";\n          }\n          break;\n\n        default:\n          throw new FormatError(`Font ${type} is not supported`);\n      }\n    } catch (e) {\n      warn(e);\n      this.fallbackToSystemFont();\n      return;\n    }\n\n    this.data = data;\n    this.fontType = getFontType(type, subtype);\n\n    // Transfer some properties again that could change during font conversion\n    this.fontMatrix = properties.fontMatrix;\n    this.widths = properties.widths;\n    this.defaultWidth = properties.defaultWidth;\n    this.toUnicode = properties.toUnicode;\n    this.seacMap = properties.seacMap;\n  }\n\n  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    // clamp value to the 16-bit int range\n    if (value > 0x7fff) {\n      value = 0x7fff;\n    } else if (value < -0x8000) {\n      value = -0x8000;\n    }\n    return String.fromCharCode((value >> 8) & 0xff, value & 0xff);\n  }\n\n  function isTrueTypeFile(file) {\n    var header = file.peekBytes(4);\n    return (\n      readUint32(header, 0) === 0x00010000 || bytesToString(header) === \"true\"\n    );\n  }\n\n  function isTrueTypeCollectionFile(file) {\n    const header = file.peekBytes(4);\n    return bytesToString(header) === \"ttcf\";\n  }\n\n  function isOpenTypeFile(file) {\n    var header = file.peekBytes(4);\n    return bytesToString(header) === \"OTTO\";\n  }\n\n  function isType1File(file) {\n    var header = file.peekBytes(2);\n    // All Type1 font programs must begin with the comment '%!' (0x25 + 0x21).\n    if (header[0] === 0x25 && header[1] === 0x21) {\n      return true;\n    }\n    // ... obviously some fonts violate that part of the specification,\n    // please refer to the comment in |Type1Font| below (pfb file header).\n    if (header[0] === 0x80 && header[1] === 0x01) {\n      return true;\n    }\n    return false;\n  }\n\n  /**\n   * Compared to other font formats, the header in CFF files is not constant\n   * but contains version numbers. To reduce the possibility of misclassifying\n   * font files as CFF, it's recommended to check for other font formats first.\n   */\n  function isCFFFile(file) {\n    const header = file.peekBytes(4);\n    if (\n      /* major version, [1, 255] */ header[0] >= 1 &&\n      /* minor version, [0, 255]; header[1] */\n      /* header size, [0, 255]; header[2] */\n      /* offset(0) size, [1, 4] */ header[3] >= 1 &&\n      header[3] <= 4\n    ) {\n      return true;\n    }\n    return false;\n  }\n\n  function getFontFileType(file, { type, subtype, composite }) {\n    let fileType, fileSubtype;\n\n    if (isTrueTypeFile(file) || isTrueTypeCollectionFile(file)) {\n      if (composite) {\n        fileType = \"CIDFontType2\";\n      } else {\n        fileType = \"TrueType\";\n      }\n    } else if (isOpenTypeFile(file)) {\n      if (composite) {\n        fileType = \"CIDFontType2\";\n      } else {\n        fileType = \"OpenType\";\n      }\n    } else if (isType1File(file)) {\n      if (composite) {\n        fileType = \"CIDFontType0\";\n      } else {\n        fileType = type === \"MMType1\" ? \"MMType1\" : \"Type1\";\n      }\n    } else if (isCFFFile(file)) {\n      if (composite) {\n        fileType = \"CIDFontType0\";\n        fileSubtype = \"CIDFontType0C\";\n      } else {\n        fileType = type === \"MMType1\" ? \"MMType1\" : \"Type1\";\n        fileSubtype = \"Type1C\";\n      }\n    } else {\n      warn(\"getFontFileType: Unable to detect correct font file Type/Subtype.\");\n      fileType = type;\n      fileSubtype = subtype;\n    }\n\n    return [fileType, fileSubtype];\n  }\n\n  function buildToFontChar(encoding, glyphsUnicodeMap, differences) {\n    var toFontChar = [],\n      unicode;\n    for (var i = 0, ii = encoding.length; i < ii; i++) {\n      unicode = getUnicodeForGlyph(encoding[i], glyphsUnicodeMap);\n      if (unicode !== -1) {\n        toFontChar[i] = unicode;\n      }\n    }\n    for (var charCode in differences) {\n      unicode = getUnicodeForGlyph(differences[charCode], glyphsUnicodeMap);\n      if (unicode !== -1) {\n        toFontChar[+charCode] = unicode;\n      }\n    }\n    return toFontChar;\n  }\n\n  /**\n   * Rebuilds the char code to glyph ID map by moving all char codes to the\n   * private use area. This is done to avoid issues with various problematic\n   * unicode areas where either a glyph won't be drawn or is deformed by a\n   * shaper.\n   * @returns {Object} Two properties:\n   * 'toFontChar' - maps original char codes(the value that will be read\n   * from commands such as show text) to the char codes that will be used in the\n   * font that we build\n   * 'charCodeToGlyphId' - maps the new font char codes to glyph ids\n   */\n  function adjustMapping(charCodeToGlyphId, hasGlyph, newGlyphZeroId) {\n    var newMap = Object.create(null);\n    var toFontChar = [];\n    var privateUseAreaIndex = 0;\n    var nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\n    var privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n    for (var originalCharCode in charCodeToGlyphId) {\n      originalCharCode |= 0;\n      var glyphId = charCodeToGlyphId[originalCharCode];\n      // For missing glyphs don't create the mappings so the glyph isn't\n      // drawn.\n      if (!hasGlyph(glyphId)) {\n        continue;\n      }\n      if (nextAvailableFontCharCode > privateUseOffetEnd) {\n        privateUseAreaIndex++;\n        if (privateUseAreaIndex >= PRIVATE_USE_AREAS.length) {\n          warn(\"Ran out of space in font private use area.\");\n          break;\n        }\n        nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\n        privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n      }\n      var fontCharCode = nextAvailableFontCharCode++;\n      if (glyphId === 0) {\n        glyphId = newGlyphZeroId;\n      }\n\n      newMap[fontCharCode] = glyphId;\n      toFontChar[originalCharCode] = fontCharCode;\n    }\n    return {\n      toFontChar,\n      charCodeToGlyphId: newMap,\n      nextAvailableFontCharCode,\n    };\n  }\n\n  function getRanges(glyphs, numGlyphs) {\n    // Array.sort() sorts by characters, not numerically, so convert to an\n    // array of characters.\n    var codes = [];\n    for (var charCode in glyphs) {\n      // Remove an invalid glyph ID mappings to make OTS happy.\n      if (glyphs[charCode] >= numGlyphs) {\n        continue;\n      }\n      codes.push({ fontCharCode: charCode | 0, glyphId: glyphs[charCode] });\n    }\n    // Some fonts have zero glyphs and are used only for text selection, but\n    // there needs to be at least one to build a valid cmap table.\n    if (codes.length === 0) {\n      codes.push({ fontCharCode: 0, glyphId: 0 });\n    }\n    codes.sort(function fontGetRangesSort(a, b) {\n      return a.fontCharCode - b.fontCharCode;\n    });\n\n    // Split the sorted codes into ranges.\n    var ranges = [];\n    var length = codes.length;\n    for (var n = 0; n < length; ) {\n      var start = codes[n].fontCharCode;\n      var codeIndices = [codes[n].glyphId];\n      ++n;\n      var end = start;\n      while (n < length && end + 1 === codes[n].fontCharCode) {\n        codeIndices.push(codes[n].glyphId);\n        ++end;\n        ++n;\n        if (end === 0xffff) {\n          break;\n        }\n      }\n      ranges.push([start, end, codeIndices]);\n    }\n\n    return ranges;\n  }\n\n  function createCmapTable(glyphs, numGlyphs) {\n    var ranges = getRanges(glyphs, numGlyphs);\n    var numTables = ranges[ranges.length - 1][1] > 0xffff ? 2 : 1;\n    var cmap =\n      \"\\x00\\x00\" + // version\n      string16(numTables) + // numTables\n      \"\\x00\\x03\" + // platformID\n      \"\\x00\\x01\" + // encodingID\n      string32(4 + numTables * 8); // start of the table record\n\n    var i, ii, j, jj;\n    for (i = ranges.length - 1; i >= 0; --i) {\n      if (ranges[i][0] <= 0xffff) {\n        break;\n      }\n    }\n    var bmpLength = i + 1;\n\n    if (ranges[i][0] < 0xffff && ranges[i][1] === 0xffff) {\n      ranges[i][1] = 0xfffe;\n    }\n    var trailingRangesCount = ranges[i][1] < 0xffff ? 1 : 0;\n    var segCount = bmpLength + trailingRangesCount;\n    var searchParams = OpenTypeFileBuilder.getSearchParams(segCount, 2);\n\n    // Fill up the 4 parallel arrays describing the segments.\n    var startCount = \"\";\n    var endCount = \"\";\n    var idDeltas = \"\";\n    var idRangeOffsets = \"\";\n    var glyphsIds = \"\";\n    var bias = 0;\n\n    var range, start, end, codes;\n    for (i = 0, ii = bmpLength; i < ii; i++) {\n      range = ranges[i];\n      start = range[0];\n      end = range[1];\n      startCount += string16(start);\n      endCount += string16(end);\n      codes = range[2];\n      var contiguous = true;\n      for (j = 1, jj = codes.length; j < jj; ++j) {\n        if (codes[j] !== codes[j - 1] + 1) {\n          contiguous = false;\n          break;\n        }\n      }\n      if (!contiguous) {\n        var offset = (segCount - i) * 2 + bias * 2;\n        bias += end - start + 1;\n\n        idDeltas += string16(0);\n        idRangeOffsets += string16(offset);\n\n        for (j = 0, jj = codes.length; j < jj; ++j) {\n          glyphsIds += string16(codes[j]);\n        }\n      } else {\n        var startCode = codes[0];\n\n        idDeltas += string16((startCode - start) & 0xffff);\n        idRangeOffsets += string16(0);\n      }\n    }\n\n    if (trailingRangesCount > 0) {\n      endCount += \"\\xFF\\xFF\";\n      startCount += \"\\xFF\\xFF\";\n      idDeltas += \"\\x00\\x01\";\n      idRangeOffsets += \"\\x00\\x00\";\n    }\n\n    var format314 =\n      \"\\x00\\x00\" + // language\n      string16(2 * segCount) +\n      string16(searchParams.range) +\n      string16(searchParams.entry) +\n      string16(searchParams.rangeShift) +\n      endCount +\n      \"\\x00\\x00\" +\n      startCount +\n      idDeltas +\n      idRangeOffsets +\n      glyphsIds;\n\n    var format31012 = \"\";\n    var header31012 = \"\";\n    if (numTables > 1) {\n      cmap +=\n        \"\\x00\\x03\" + // platformID\n        \"\\x00\\x0A\" + // encodingID\n        string32(4 + numTables * 8 + 4 + format314.length); // start of the table record\n      format31012 = \"\";\n      for (i = 0, ii = ranges.length; i < ii; i++) {\n        range = ranges[i];\n        start = range[0];\n        codes = range[2];\n        var code = codes[0];\n        for (j = 1, jj = codes.length; j < jj; ++j) {\n          if (codes[j] !== codes[j - 1] + 1) {\n            end = range[0] + j - 1;\n            format31012 +=\n              string32(start) + // startCharCode\n              string32(end) + // endCharCode\n              string32(code); // startGlyphID\n            start = end + 1;\n            code = codes[j];\n          }\n        }\n        format31012 +=\n          string32(start) + // startCharCode\n          string32(range[1]) + // endCharCode\n          string32(code); // startGlyphID\n      }\n      header31012 =\n        \"\\x00\\x0C\" + // format\n        \"\\x00\\x00\" + // reserved\n        string32(format31012.length + 16) + // length\n        \"\\x00\\x00\\x00\\x00\" + // language\n        string32(format31012.length / 12); // nGroups\n    }\n\n    return (\n      cmap +\n      \"\\x00\\x04\" + // format\n      string16(format314.length + 4) + // length\n      format314 +\n      header31012 +\n      format31012\n    );\n  }\n\n  function validateOS2Table(os2, file) {\n    file.pos = (file.start || 0) + os2.offset;\n    var version = file.getUint16();\n    // TODO verify all OS/2 tables fields, but currently we validate only those\n    // that give us issues\n    file.skip(60); // skipping type, misc sizes, panose, unicode ranges\n    var selection = file.getUint16();\n    if (version < 4 && selection & 0x0300) {\n      return false;\n    }\n    var firstChar = file.getUint16();\n    var lastChar = file.getUint16();\n    if (firstChar > lastChar) {\n      return false;\n    }\n    file.skip(6); // skipping sTypoAscender/Descender/LineGap\n    var usWinAscent = file.getUint16();\n    if (usWinAscent === 0) {\n      // makes font unreadable by windows\n      return false;\n    }\n\n    // OS/2 appears to be valid, resetting some fields\n    os2.data[8] = os2.data[9] = 0; // IE rejects fonts if fsType != 0\n    return true;\n  }\n\n  function createOS2Table(properties, charstrings, override) {\n    override = override || {\n      unitsPerEm: 0,\n      yMax: 0,\n      yMin: 0,\n      ascent: 0,\n      descent: 0,\n    };\n\n    var ulUnicodeRange1 = 0;\n    var ulUnicodeRange2 = 0;\n    var ulUnicodeRange3 = 0;\n    var ulUnicodeRange4 = 0;\n\n    var firstCharIndex = null;\n    var lastCharIndex = 0;\n\n    if (charstrings) {\n      for (var code in charstrings) {\n        code |= 0;\n        if (firstCharIndex > code || !firstCharIndex) {\n          firstCharIndex = code;\n        }\n        if (lastCharIndex < code) {\n          lastCharIndex = code;\n        }\n\n        var position = getUnicodeRangeFor(code);\n        if (position < 32) {\n          ulUnicodeRange1 |= 1 << position;\n        } else if (position < 64) {\n          ulUnicodeRange2 |= 1 << (position - 32);\n        } else if (position < 96) {\n          ulUnicodeRange3 |= 1 << (position - 64);\n        } else if (position < 123) {\n          ulUnicodeRange4 |= 1 << (position - 96);\n        } else {\n          throw new FormatError(\n            \"Unicode ranges Bits > 123 are reserved for internal usage\"\n          );\n        }\n      }\n      if (lastCharIndex > 0xffff) {\n        // OS2 only supports a 16 bit int. The spec says if supplementary\n        // characters are used the field should just be set to 0xFFFF.\n        lastCharIndex = 0xffff;\n      }\n    } else {\n      // TODO\n      firstCharIndex = 0;\n      lastCharIndex = 255;\n    }\n\n    var bbox = properties.bbox || [0, 0, 0, 0];\n    var unitsPerEm =\n      override.unitsPerEm ||\n      1 / (properties.fontMatrix || FONT_IDENTITY_MATRIX)[0];\n\n    // if the font units differ to the PDF glyph space units\n    // then scale up the values\n    var scale = properties.ascentScaled\n      ? 1.0\n      : unitsPerEm / PDF_GLYPH_SPACE_UNITS;\n\n    var typoAscent =\n      override.ascent || Math.round(scale * (properties.ascent || bbox[3]));\n    var typoDescent =\n      override.descent || Math.round(scale * (properties.descent || bbox[1]));\n    if (typoDescent > 0 && properties.descent > 0 && bbox[1] < 0) {\n      typoDescent = -typoDescent; // fixing incorrect descent\n    }\n    var winAscent = override.yMax || typoAscent;\n    var winDescent = -override.yMin || -typoDescent;\n\n    return (\n      \"\\x00\\x03\" + // version\n      \"\\x02\\x24\" + // xAvgCharWidth\n      \"\\x01\\xF4\" + // usWeightClass\n      \"\\x00\\x05\" + // usWidthClass\n      \"\\x00\\x00\" + // fstype (0 to let the font loads via font-face on IE)\n      \"\\x02\\x8A\" + // ySubscriptXSize\n      \"\\x02\\xBB\" + // ySubscriptYSize\n      \"\\x00\\x00\" + // ySubscriptXOffset\n      \"\\x00\\x8C\" + // ySubscriptYOffset\n      \"\\x02\\x8A\" + // ySuperScriptXSize\n      \"\\x02\\xBB\" + // ySuperScriptYSize\n      \"\\x00\\x00\" + // ySuperScriptXOffset\n      \"\\x01\\xDF\" + // ySuperScriptYOffset\n      \"\\x00\\x31\" + // yStrikeOutSize\n      \"\\x01\\x02\" + // yStrikeOutPosition\n      \"\\x00\\x00\" + // sFamilyClass\n      \"\\x00\\x00\\x06\" +\n      String.fromCharCode(properties.fixedPitch ? 0x09 : 0x00) +\n      \"\\x00\\x00\\x00\\x00\\x00\\x00\" + // Panose\n      string32(ulUnicodeRange1) + // ulUnicodeRange1 (Bits 0-31)\n      string32(ulUnicodeRange2) + // ulUnicodeRange2 (Bits 32-63)\n      string32(ulUnicodeRange3) + // ulUnicodeRange3 (Bits 64-95)\n      string32(ulUnicodeRange4) + // ulUnicodeRange4 (Bits 96-127)\n      \"\\x2A\\x32\\x31\\x2A\" + // achVendID\n      string16(properties.italicAngle ? 1 : 0) + // fsSelection\n      string16(firstCharIndex || properties.firstChar) + // usFirstCharIndex\n      string16(lastCharIndex || properties.lastChar) + // usLastCharIndex\n      string16(typoAscent) + // sTypoAscender\n      string16(typoDescent) + // sTypoDescender\n      \"\\x00\\x64\" + // sTypoLineGap (7%-10% of the unitsPerEM value)\n      string16(winAscent) + // usWinAscent\n      string16(winDescent) + // usWinDescent\n      \"\\x00\\x00\\x00\\x00\" + // ulCodePageRange1 (Bits 0-31)\n      \"\\x00\\x00\\x00\\x00\" + // ulCodePageRange2 (Bits 32-63)\n      string16(properties.xHeight) + // sxHeight\n      string16(properties.capHeight) + // sCapHeight\n      string16(0) + // usDefaultChar\n      string16(firstCharIndex || properties.firstChar) + // usBreakChar\n      \"\\x00\\x03\"\n    ); // usMaxContext\n  }\n\n  function createPostTable(properties) {\n    var angle = Math.floor(properties.italicAngle * 2 ** 16);\n    return (\n      \"\\x00\\x03\\x00\\x00\" + // Version number\n      string32(angle) + // italicAngle\n      \"\\x00\\x00\" + // underlinePosition\n      \"\\x00\\x00\" + // underlineThickness\n      string32(properties.fixedPitch) + // isFixedPitch\n      \"\\x00\\x00\\x00\\x00\" + // minMemType42\n      \"\\x00\\x00\\x00\\x00\" + // maxMemType42\n      \"\\x00\\x00\\x00\\x00\" + // minMemType1\n      \"\\x00\\x00\\x00\\x00\"\n    ); // maxMemType1\n  }\n\n  function createNameTable(name, proto) {\n    if (!proto) {\n      proto = [[], []]; // no strings and unicode strings\n    }\n\n    var strings = [\n      proto[0][0] || \"Original licence\", // 0.Copyright\n      proto[0][1] || name, // 1.Font family\n      proto[0][2] || \"Unknown\", // 2.Font subfamily (font weight)\n      proto[0][3] || \"uniqueID\", // 3.Unique ID\n      proto[0][4] || name, // 4.Full font name\n      proto[0][5] || \"Version 0.11\", // 5.Version\n      proto[0][6] || \"\", // 6.Postscript name\n      proto[0][7] || \"Unknown\", // 7.Trademark\n      proto[0][8] || \"Unknown\", // 8.Manufacturer\n      proto[0][9] || \"Unknown\", // 9.Designer\n    ];\n\n    // Mac want 1-byte per character strings while Windows want\n    // 2-bytes per character, so duplicate the names table\n    var stringsUnicode = [];\n    var i, ii, j, jj, str;\n    for (i = 0, ii = strings.length; i < ii; i++) {\n      str = proto[1][i] || strings[i];\n\n      var strBufUnicode = [];\n      for (j = 0, jj = str.length; j < jj; j++) {\n        strBufUnicode.push(string16(str.charCodeAt(j)));\n      }\n      stringsUnicode.push(strBufUnicode.join(\"\"));\n    }\n\n    var names = [strings, stringsUnicode];\n    var platforms = [\"\\x00\\x01\", \"\\x00\\x03\"];\n    var encodings = [\"\\x00\\x00\", \"\\x00\\x01\"];\n    var languages = [\"\\x00\\x00\", \"\\x04\\x09\"];\n\n    var namesRecordCount = strings.length * platforms.length;\n    var nameTable =\n      \"\\x00\\x00\" + // format\n      string16(namesRecordCount) + // Number of names Record\n      string16(namesRecordCount * 12 + 6); // Storage\n\n    // Build the name records field\n    var strOffset = 0;\n    for (i = 0, ii = platforms.length; i < ii; i++) {\n      var strs = names[i];\n      for (j = 0, jj = strs.length; j < jj; j++) {\n        str = strs[j];\n        var nameRecord =\n          platforms[i] + // platform ID\n          encodings[i] + // encoding ID\n          languages[i] + // language ID\n          string16(j) + // name ID\n          string16(str.length) +\n          string16(strOffset);\n        nameTable += nameRecord;\n        strOffset += str.length;\n      }\n    }\n\n    nameTable += strings.join(\"\") + stringsUnicode.join(\"\");\n    return nameTable;\n  }\n\n  Font.prototype = {\n    name: null,\n    font: null,\n    mimetype: null,\n    disableFontFace: false,\n\n    get renderer() {\n      var renderer = FontRendererFactory.create(this, SEAC_ANALYSIS_ENABLED);\n      return shadow(this, \"renderer\", renderer);\n    },\n\n    exportData(extraProperties = false) {\n      const exportDataProperties = extraProperties\n        ? [...EXPORT_DATA_PROPERTIES, ...EXPORT_DATA_EXTRA_PROPERTIES]\n        : EXPORT_DATA_PROPERTIES;\n\n      const data = Object.create(null);\n      let property, value;\n      for (property of exportDataProperties) {\n        value = this[property];\n        // Ignore properties that haven't been explicitly set.\n        if (value !== undefined) {\n          data[property] = value;\n        }\n      }\n      return data;\n    },\n\n    fallbackToSystemFont: function Font_fallbackToSystemFont() {\n      this.missingFile = true;\n      // The file data is not specified. Trying to fix the font name\n      // to be used with the canvas.font.\n      var name = this.name;\n      var type = this.type;\n      var subtype = this.subtype;\n      let fontName = name.replace(/[,_]/g, \"-\").replace(/\\s/g, \"\");\n      var stdFontMap = getStdFontMap(),\n        nonStdFontMap = getNonStdFontMap();\n      var isStandardFont =\n        !!stdFontMap[fontName] ||\n        !!(nonStdFontMap[fontName] && stdFontMap[nonStdFontMap[fontName]]);\n      fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName;\n\n      this.bold = fontName.search(/bold/gi) !== -1;\n      this.italic =\n        fontName.search(/oblique/gi) !== -1 ||\n        fontName.search(/italic/gi) !== -1;\n\n      // Use 'name' instead of 'fontName' here because the original\n      // name ArialBlack for example will be replaced by Helvetica.\n      this.black = name.search(/Black/g) !== -1;\n\n      // if at least one width is present, remeasure all chars when exists\n      this.remeasure = Object.keys(this.widths).length > 0;\n      if (\n        isStandardFont &&\n        type === \"CIDFontType2\" &&\n        this.cidEncoding.startsWith(\"Identity-\")\n      ) {\n        const GlyphMapForStandardFonts = getGlyphMapForStandardFonts();\n        // Standard fonts might be embedded as CID font without glyph mapping.\n        // Building one based on GlyphMapForStandardFonts.\n        const map = [];\n        for (const charCode in GlyphMapForStandardFonts) {\n          map[+charCode] = GlyphMapForStandardFonts[charCode];\n        }\n        if (/Arial-?Black/i.test(name)) {\n          var SupplementalGlyphMapForArialBlack = getSupplementalGlyphMapForArialBlack();\n          for (const charCode in SupplementalGlyphMapForArialBlack) {\n            map[+charCode] = SupplementalGlyphMapForArialBlack[charCode];\n          }\n        } else if (/Calibri/i.test(name)) {\n          const SupplementalGlyphMapForCalibri = getSupplementalGlyphMapForCalibri();\n          for (const charCode in SupplementalGlyphMapForCalibri) {\n            map[+charCode] = SupplementalGlyphMapForCalibri[charCode];\n          }\n        }\n\n        var isIdentityUnicode = this.toUnicode instanceof IdentityToUnicodeMap;\n        if (!isIdentityUnicode) {\n          this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n            map[+charCode] = unicodeCharCode;\n          });\n        }\n        this.toFontChar = map;\n        this.toUnicode = new ToUnicodeMap(map);\n      } else if (/Symbol/i.test(fontName)) {\n        this.toFontChar = buildToFontChar(\n          SymbolSetEncoding,\n          getGlyphsUnicode(),\n          this.differences\n        );\n      } else if (/Dingbats/i.test(fontName)) {\n        if (/Wingdings/i.test(name)) {\n          warn(\"Non-embedded Wingdings font, falling back to ZapfDingbats.\");\n        }\n        this.toFontChar = buildToFontChar(\n          ZapfDingbatsEncoding,\n          getDingbatsGlyphsUnicode(),\n          this.differences\n        );\n      } else if (isStandardFont) {\n        this.toFontChar = buildToFontChar(\n          this.defaultEncoding,\n          getGlyphsUnicode(),\n          this.differences\n        );\n      } else {\n        const glyphsUnicodeMap = getGlyphsUnicode();\n        const map = [];\n        this.toUnicode.forEach((charCode, unicodeCharCode) => {\n          if (!this.composite) {\n            var glyphName =\n              this.differences[charCode] || this.defaultEncoding[charCode];\n            const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n            if (unicode !== -1) {\n              unicodeCharCode = unicode;\n            }\n          }\n          map[+charCode] = unicodeCharCode;\n        });\n\n        // Attempt to improve the glyph mapping for (some) composite fonts that\n        // appear to lack meaningful ToUnicode data.\n        if (this.composite && this.toUnicode instanceof IdentityToUnicodeMap) {\n          if (/Verdana/i.test(name)) {\n            // Fixes issue11242_reduced.pdf\n            const GlyphMapForStandardFonts = getGlyphMapForStandardFonts();\n            for (const charCode in GlyphMapForStandardFonts) {\n              map[+charCode] = GlyphMapForStandardFonts[charCode];\n            }\n          }\n        }\n        this.toFontChar = map;\n      }\n      this.loadedName = fontName.split(\"-\")[0];\n      this.fontType = getFontType(type, subtype);\n    },\n\n    checkAndRepair: function Font_checkAndRepair(name, font, properties) {\n      const VALID_TABLES = [\n        \"OS/2\",\n        \"cmap\",\n        \"head\",\n        \"hhea\",\n        \"hmtx\",\n        \"maxp\",\n        \"name\",\n        \"post\",\n        \"loca\",\n        \"glyf\",\n        \"fpgm\",\n        \"prep\",\n        \"cvt \",\n        \"CFF \",\n      ];\n\n      function readTables(file, numTables) {\n        const tables = Object.create(null);\n        tables[\"OS/2\"] = null;\n        tables.cmap = null;\n        tables.head = null;\n        tables.hhea = null;\n        tables.hmtx = null;\n        tables.maxp = null;\n        tables.name = null;\n        tables.post = null;\n\n        for (let i = 0; i < numTables; i++) {\n          const table = readTableEntry(file);\n          if (!VALID_TABLES.includes(table.tag)) {\n            continue; // skipping table if it's not a required or optional table\n          }\n          if (table.length === 0) {\n            continue; // skipping empty tables\n          }\n          tables[table.tag] = table;\n        }\n        return tables;\n      }\n\n      function readTableEntry(file) {\n        var tag = bytesToString(file.getBytes(4));\n\n        var checksum = file.getInt32() >>> 0;\n        var offset = file.getInt32() >>> 0;\n        var length = file.getInt32() >>> 0;\n\n        // Read the table associated data\n        var previousPosition = file.pos;\n        file.pos = file.start ? file.start : 0;\n        file.skip(offset);\n        var data = file.getBytes(length);\n        file.pos = previousPosition;\n\n        if (tag === \"head\") {\n          // clearing checksum adjustment\n          data[8] = data[9] = data[10] = data[11] = 0;\n          data[17] |= 0x20; // Set font optimized for cleartype flag.\n        }\n\n        return {\n          tag,\n          checksum,\n          length,\n          offset,\n          data,\n        };\n      }\n\n      function readOpenTypeHeader(ttf) {\n        return {\n          version: bytesToString(ttf.getBytes(4)),\n          numTables: ttf.getUint16(),\n          searchRange: ttf.getUint16(),\n          entrySelector: ttf.getUint16(),\n          rangeShift: ttf.getUint16(),\n        };\n      }\n\n      function readTrueTypeCollectionHeader(ttc) {\n        const ttcTag = bytesToString(ttc.getBytes(4));\n        assert(ttcTag === \"ttcf\", \"Must be a TrueType Collection font.\");\n\n        const majorVersion = ttc.getUint16();\n        const minorVersion = ttc.getUint16();\n        const numFonts = ttc.getInt32() >>> 0;\n        const offsetTable = [];\n        for (let i = 0; i < numFonts; i++) {\n          offsetTable.push(ttc.getInt32() >>> 0);\n        }\n\n        const header = {\n          ttcTag,\n          majorVersion,\n          minorVersion,\n          numFonts,\n          offsetTable,\n        };\n        switch (majorVersion) {\n          case 1:\n            return header;\n          case 2:\n            header.dsigTag = ttc.getInt32() >>> 0;\n            header.dsigLength = ttc.getInt32() >>> 0;\n            header.dsigOffset = ttc.getInt32() >>> 0;\n            return header;\n        }\n        throw new FormatError(\n          `Invalid TrueType Collection majorVersion: ${majorVersion}.`\n        );\n      }\n\n      function readTrueTypeCollectionData(ttc, fontName) {\n        const { numFonts, offsetTable } = readTrueTypeCollectionHeader(ttc);\n\n        for (let i = 0; i < numFonts; i++) {\n          ttc.pos = (ttc.start || 0) + offsetTable[i];\n          const potentialHeader = readOpenTypeHeader(ttc);\n          const potentialTables = readTables(ttc, potentialHeader.numTables);\n\n          if (!potentialTables.name) {\n            throw new FormatError(\n              'TrueType Collection font must contain a \"name\" table.'\n            );\n          }\n          const nameTable = readNameTable(potentialTables.name);\n\n          for (let j = 0, jj = nameTable.length; j < jj; j++) {\n            for (let k = 0, kk = nameTable[j].length; k < kk; k++) {\n              const nameEntry = nameTable[j][k];\n              if (nameEntry && nameEntry.replace(/\\s/g, \"\") === fontName) {\n                return {\n                  header: potentialHeader,\n                  tables: potentialTables,\n                };\n              }\n            }\n          }\n        }\n        throw new FormatError(\n          `TrueType Collection does not contain \"${fontName}\" font.`\n        );\n      }\n\n      /**\n       * Read the appropriate subtable from the cmap according to 9.6.6.4 from\n       * PDF spec\n       */\n      function readCmapTable(cmap, file, isSymbolicFont, hasEncoding) {\n        if (!cmap) {\n          warn(\"No cmap table available.\");\n          return {\n            platformId: -1,\n            encodingId: -1,\n            mappings: [],\n            hasShortCmap: false,\n          };\n        }\n        var segment;\n        var start = (file.start ? file.start : 0) + cmap.offset;\n        file.pos = start;\n\n        file.skip(2); // version\n        var numTables = file.getUint16();\n\n        var potentialTable;\n        var canBreak = false;\n        // There's an order of preference in terms of which cmap subtable to\n        // use:\n        // - non-symbolic fonts the preference is a 3,1 table then a 1,0 table\n        // - symbolic fonts the preference is a 3,0 table then a 1,0 table\n        // The following takes advantage of the fact that the tables are sorted\n        // to work.\n        for (var i = 0; i < numTables; i++) {\n          var platformId = file.getUint16();\n          var encodingId = file.getUint16();\n          var offset = file.getInt32() >>> 0;\n          var useTable = false;\n\n          // Sometimes there are multiple of the same type of table. Default\n          // to choosing the first table and skip the rest.\n          if (\n            potentialTable &&\n            potentialTable.platformId === platformId &&\n            potentialTable.encodingId === encodingId\n          ) {\n            continue;\n          }\n\n          if (platformId === 0 && encodingId === 0) {\n            useTable = true;\n            // Continue the loop since there still may be a higher priority\n            // table.\n          } else if (platformId === 1 && encodingId === 0) {\n            useTable = true;\n            // Continue the loop since there still may be a higher priority\n            // table.\n          } else if (\n            platformId === 3 &&\n            encodingId === 1 &&\n            (hasEncoding || !potentialTable)\n          ) {\n            useTable = true;\n            if (!isSymbolicFont) {\n              canBreak = true;\n            }\n          } else if (isSymbolicFont && platformId === 3 && encodingId === 0) {\n            useTable = true;\n            canBreak = true;\n          }\n\n          if (useTable) {\n            potentialTable = {\n              platformId,\n              encodingId,\n              offset,\n            };\n          }\n          if (canBreak) {\n            break;\n          }\n        }\n\n        if (potentialTable) {\n          file.pos = start + potentialTable.offset;\n        }\n        if (!potentialTable || file.peekByte() === -1) {\n          warn(\"Could not find a preferred cmap table.\");\n          return {\n            platformId: -1,\n            encodingId: -1,\n            mappings: [],\n            hasShortCmap: false,\n          };\n        }\n\n        var format = file.getUint16();\n        file.skip(2 + 2); // length + language\n\n        var hasShortCmap = false;\n        var mappings = [];\n        var j, glyphId;\n\n        // TODO(mack): refactor this cmap subtable reading logic out\n        if (format === 0) {\n          for (j = 0; j < 256; j++) {\n            var index = file.getByte();\n            if (!index) {\n              continue;\n            }\n            mappings.push({\n              charCode: j,\n              glyphId: index,\n            });\n          }\n          hasShortCmap = true;\n        } else if (format === 4) {\n          // re-creating the table in format 4 since the encoding\n          // might be changed\n          var segCount = file.getUint16() >> 1;\n          file.skip(6); // skipping range fields\n          var segIndex,\n            segments = [];\n          for (segIndex = 0; segIndex < segCount; segIndex++) {\n            segments.push({ end: file.getUint16() });\n          }\n          file.skip(2);\n          for (segIndex = 0; segIndex < segCount; segIndex++) {\n            segments[segIndex].start = file.getUint16();\n          }\n\n          for (segIndex = 0; segIndex < segCount; segIndex++) {\n            segments[segIndex].delta = file.getUint16();\n          }\n\n          var offsetsCount = 0;\n          for (segIndex = 0; segIndex < segCount; segIndex++) {\n            segment = segments[segIndex];\n            var rangeOffset = file.getUint16();\n            if (!rangeOffset) {\n              segment.offsetIndex = -1;\n              continue;\n            }\n\n            var offsetIndex = (rangeOffset >> 1) - (segCount - segIndex);\n            segment.offsetIndex = offsetIndex;\n            offsetsCount = Math.max(\n              offsetsCount,\n              offsetIndex + segment.end - segment.start + 1\n            );\n          }\n\n          var offsets = [];\n          for (j = 0; j < offsetsCount; j++) {\n            offsets.push(file.getUint16());\n          }\n\n          for (segIndex = 0; segIndex < segCount; segIndex++) {\n            segment = segments[segIndex];\n            start = segment.start;\n            var end = segment.end;\n            var delta = segment.delta;\n            offsetIndex = segment.offsetIndex;\n\n            for (j = start; j <= end; j++) {\n              if (j === 0xffff) {\n                continue;\n              }\n\n              glyphId = offsetIndex < 0 ? j : offsets[offsetIndex + j - start];\n              glyphId = (glyphId + delta) & 0xffff;\n              mappings.push({\n                charCode: j,\n                glyphId,\n              });\n            }\n          }\n        } else if (format === 6) {\n          // Format 6 is a 2-bytes dense mapping, which means the font data\n          // lives glue together even if they are pretty far in the unicode\n          // table. (This looks weird, so I can have missed something), this\n          // works on Linux but seems to fails on Mac so let's rewrite the\n          // cmap table to a 3-1-4 style\n          var firstCode = file.getUint16();\n          var entryCount = file.getUint16();\n\n          for (j = 0; j < entryCount; j++) {\n            glyphId = file.getUint16();\n            var charCode = firstCode + j;\n\n            mappings.push({\n              charCode,\n              glyphId,\n            });\n          }\n        } else {\n          warn(\"cmap table has unsupported format: \" + format);\n          return {\n            platformId: -1,\n            encodingId: -1,\n            mappings: [],\n            hasShortCmap: false,\n          };\n        }\n\n        // removing duplicate entries\n        mappings.sort(function (a, b) {\n          return a.charCode - b.charCode;\n        });\n        for (i = 1; i < mappings.length; i++) {\n          if (mappings[i - 1].charCode === mappings[i].charCode) {\n            mappings.splice(i, 1);\n            i--;\n          }\n        }\n\n        return {\n          platformId: potentialTable.platformId,\n          encodingId: potentialTable.encodingId,\n          mappings,\n          hasShortCmap,\n        };\n      }\n\n      function sanitizeMetrics(\n        file,\n        header,\n        metrics,\n        numGlyphs,\n        dupFirstEntry\n      ) {\n        if (!header) {\n          if (metrics) {\n            metrics.data = null;\n          }\n          return;\n        }\n\n        file.pos = (file.start ? file.start : 0) + header.offset;\n        file.pos += 4; // version\n        file.pos += 2; // ascent\n        file.pos += 2; // descent\n        file.pos += 2; // linegap\n        file.pos += 2; // adv_width_max\n        file.pos += 2; // min_sb1\n        file.pos += 2; // min_sb2\n        file.pos += 2; // max_extent\n        file.pos += 2; // caret_slope_rise\n        file.pos += 2; // caret_slope_run\n        file.pos += 2; // caret_offset\n        file.pos += 8; // reserved\n        file.pos += 2; // format\n        var numOfMetrics = file.getUint16();\n\n        if (numOfMetrics > numGlyphs) {\n          info(\n            \"The numOfMetrics (\" +\n              numOfMetrics +\n              \") should not be \" +\n              \"greater than the numGlyphs (\" +\n              numGlyphs +\n              \")\"\n          );\n          // Reduce numOfMetrics if it is greater than numGlyphs\n          numOfMetrics = numGlyphs;\n          header.data[34] = (numOfMetrics & 0xff00) >> 8;\n          header.data[35] = numOfMetrics & 0x00ff;\n        }\n\n        var numOfSidebearings = numGlyphs - numOfMetrics;\n        var numMissing =\n          numOfSidebearings - ((metrics.length - numOfMetrics * 4) >> 1);\n\n        if (numMissing > 0) {\n          // For each missing glyph, we set both the width and lsb to 0 (zero).\n          // Since we need to add two properties for each glyph, this explains\n          // the use of |numMissing * 2| when initializing the typed array.\n          var entries = new Uint8Array(metrics.length + numMissing * 2);\n          entries.set(metrics.data);\n          if (dupFirstEntry) {\n            // Set the sidebearing value of the duplicated glyph.\n            entries[metrics.length] = metrics.data[2];\n            entries[metrics.length + 1] = metrics.data[3];\n          }\n          metrics.data = entries;\n        }\n      }\n\n      function sanitizeGlyph(\n        source,\n        sourceStart,\n        sourceEnd,\n        dest,\n        destStart,\n        hintsValid\n      ) {\n        var glyphProfile = {\n          length: 0,\n          sizeOfInstructions: 0,\n        };\n        if (sourceEnd - sourceStart <= 12) {\n          // glyph with data less than 12 is invalid one\n          return glyphProfile;\n        }\n        var glyf = source.subarray(sourceStart, sourceEnd);\n        var contoursCount = signedInt16(glyf[0], glyf[1]);\n        if (contoursCount < 0) {\n          // OTS doesn't like contour count to be less than -1.\n          contoursCount = -1;\n          writeSignedInt16(glyf, 0, contoursCount);\n          // complex glyph, writing as is\n          dest.set(glyf, destStart);\n          glyphProfile.length = glyf.length;\n          return glyphProfile;\n        }\n\n        var i,\n          j = 10,\n          flagsCount = 0;\n        for (i = 0; i < contoursCount; i++) {\n          var endPoint = (glyf[j] << 8) | glyf[j + 1];\n          flagsCount = endPoint + 1;\n          j += 2;\n        }\n        // skipping instructions\n        var instructionsStart = j;\n        var instructionsLength = (glyf[j] << 8) | glyf[j + 1];\n        glyphProfile.sizeOfInstructions = instructionsLength;\n        j += 2 + instructionsLength;\n        var instructionsEnd = j;\n        // validating flags\n        var coordinatesLength = 0;\n        for (i = 0; i < flagsCount; i++) {\n          var flag = glyf[j++];\n          if (flag & 0xc0) {\n            // reserved flags must be zero, cleaning up\n            glyf[j - 1] = flag & 0x3f;\n          }\n          let xLength = 2;\n          if (flag & 2) {\n            xLength = 1;\n          } else if (flag & 16) {\n            xLength = 0;\n          }\n          let yLength = 2;\n          if (flag & 4) {\n            yLength = 1;\n          } else if (flag & 32) {\n            yLength = 0;\n          }\n          const xyLength = xLength + yLength;\n          coordinatesLength += xyLength;\n          if (flag & 8) {\n            var repeat = glyf[j++];\n            i += repeat;\n            coordinatesLength += repeat * xyLength;\n          }\n        }\n        // glyph without coordinates will be rejected\n        if (coordinatesLength === 0) {\n          return glyphProfile;\n        }\n        var glyphDataLength = j + coordinatesLength;\n        if (glyphDataLength > glyf.length) {\n          // not enough data for coordinates\n          return glyphProfile;\n        }\n        if (!hintsValid && instructionsLength > 0) {\n          dest.set(glyf.subarray(0, instructionsStart), destStart);\n          dest.set([0, 0], destStart + instructionsStart);\n          dest.set(\n            glyf.subarray(instructionsEnd, glyphDataLength),\n            destStart + instructionsStart + 2\n          );\n          glyphDataLength -= instructionsLength;\n          if (glyf.length - glyphDataLength > 3) {\n            glyphDataLength = (glyphDataLength + 3) & ~3;\n          }\n          glyphProfile.length = glyphDataLength;\n          return glyphProfile;\n        }\n        if (glyf.length - glyphDataLength > 3) {\n          // truncating and aligning to 4 bytes the long glyph data\n          glyphDataLength = (glyphDataLength + 3) & ~3;\n          dest.set(glyf.subarray(0, glyphDataLength), destStart);\n          glyphProfile.length = glyphDataLength;\n          return glyphProfile;\n        }\n        // glyph data is fine\n        dest.set(glyf, destStart);\n        glyphProfile.length = glyf.length;\n        return glyphProfile;\n      }\n\n      function sanitizeHead(head, numGlyphs, locaLength) {\n        var data = head.data;\n\n        // Validate version:\n        // Should always be 0x00010000\n        var version = int32(data[0], data[1], data[2], data[3]);\n        if (version >> 16 !== 1) {\n          info(\"Attempting to fix invalid version in head table: \" + version);\n          data[0] = 0;\n          data[1] = 1;\n          data[2] = 0;\n          data[3] = 0;\n        }\n\n        var indexToLocFormat = int16(data[50], data[51]);\n        if (indexToLocFormat < 0 || indexToLocFormat > 1) {\n          info(\n            \"Attempting to fix invalid indexToLocFormat in head table: \" +\n              indexToLocFormat\n          );\n\n          // The value of indexToLocFormat should be 0 if the loca table\n          // consists of short offsets, and should be 1 if the loca table\n          // consists of long offsets.\n          //\n          // The number of entries in the loca table should be numGlyphs + 1.\n          //\n          // Using this information, we can work backwards to deduce if the\n          // size of each offset in the loca table, and thus figure out the\n          // appropriate value for indexToLocFormat.\n\n          var numGlyphsPlusOne = numGlyphs + 1;\n          if (locaLength === numGlyphsPlusOne << 1) {\n            // 0x0000 indicates the loca table consists of short offsets\n            data[50] = 0;\n            data[51] = 0;\n          } else if (locaLength === numGlyphsPlusOne << 2) {\n            // 0x0001 indicates the loca table consists of long offsets\n            data[50] = 0;\n            data[51] = 1;\n          } else {\n            throw new FormatError(\n              \"Could not fix indexToLocFormat: \" + indexToLocFormat\n            );\n          }\n        }\n      }\n\n      function sanitizeGlyphLocations(\n        loca,\n        glyf,\n        numGlyphs,\n        isGlyphLocationsLong,\n        hintsValid,\n        dupFirstEntry,\n        maxSizeOfInstructions\n      ) {\n        var itemSize, itemDecode, itemEncode;\n        if (isGlyphLocationsLong) {\n          itemSize = 4;\n          itemDecode = function fontItemDecodeLong(data, offset) {\n            return (\n              (data[offset] << 24) |\n              (data[offset + 1] << 16) |\n              (data[offset + 2] << 8) |\n              data[offset + 3]\n            );\n          };\n          itemEncode = function fontItemEncodeLong(data, offset, value) {\n            data[offset] = (value >>> 24) & 0xff;\n            data[offset + 1] = (value >> 16) & 0xff;\n            data[offset + 2] = (value >> 8) & 0xff;\n            data[offset + 3] = value & 0xff;\n          };\n        } else {\n          itemSize = 2;\n          itemDecode = function fontItemDecode(data, offset) {\n            return (data[offset] << 9) | (data[offset + 1] << 1);\n          };\n          itemEncode = function fontItemEncode(data, offset, value) {\n            data[offset] = (value >> 9) & 0xff;\n            data[offset + 1] = (value >> 1) & 0xff;\n          };\n        }\n        // The first glyph is duplicated.\n        var numGlyphsOut = dupFirstEntry ? numGlyphs + 1 : numGlyphs;\n        var locaDataSize = itemSize * (1 + numGlyphsOut);\n        // Resize loca table to account for duplicated glyph.\n        var locaData = new Uint8Array(locaDataSize);\n        locaData.set(loca.data.subarray(0, locaDataSize));\n        loca.data = locaData;\n        // removing the invalid glyphs\n        var oldGlyfData = glyf.data;\n        var oldGlyfDataLength = oldGlyfData.length;\n        var newGlyfData = new Uint8Array(oldGlyfDataLength);\n        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        for (i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize) {\n          var endOffset = itemDecode(locaData, j);\n          // The spec says the offsets should be in ascending order, however\n          // some fonts use the offset of 0 to mark a glyph as missing.\n          if (endOffset === 0) {\n            endOffset = startOffset;\n          }\n          if (\n            endOffset > oldGlyfDataLength &&\n            ((oldGlyfDataLength + 3) & ~3) === endOffset\n          ) {\n            // Aspose breaks fonts by aligning the glyphs to the qword, but not\n            // the glyf table size, which makes last glyph out of range.\n            endOffset = oldGlyfDataLength;\n          }\n          if (endOffset > oldGlyfDataLength) {\n            // glyph end offset points outside glyf data, rejecting the glyph\n            startOffset = endOffset;\n          }\n\n          var glyphProfile = sanitizeGlyph(\n            oldGlyfData,\n            startOffset,\n            endOffset,\n            newGlyfData,\n            writeOffset,\n            hintsValid\n          );\n          var newLength = glyphProfile.length;\n          if (newLength === 0) {\n            missingGlyphs[i] = true;\n          }\n          if (glyphProfile.sizeOfInstructions > maxSizeOfInstructions) {\n            maxSizeOfInstructions = glyphProfile.sizeOfInstructions;\n          }\n          writeOffset += newLength;\n          itemEncode(locaData, j, writeOffset);\n          startOffset = endOffset;\n        }\n\n        if (writeOffset === 0) {\n          // glyf table cannot be empty -- redoing the glyf and loca tables\n          // to have single glyph with one point\n          var simpleGlyph = new Uint8Array([\n            0,\n            1,\n            0,\n            0,\n            0,\n            0,\n            0,\n            0,\n            0,\n            0,\n            0,\n            0,\n            0,\n            0,\n            49,\n            0,\n          ]);\n          for (i = 0, j = itemSize; i < numGlyphsOut; i++, j += itemSize) {\n            itemEncode(locaData, j, simpleGlyph.length);\n          }\n          glyf.data = simpleGlyph;\n        } else if (dupFirstEntry) {\n          // Browsers will not display a glyph at position 0. Typically glyph 0\n          // is notdef, but a number of fonts put a valid glyph there so it must\n          // be duplicated and appended.\n          var firstEntryLength = itemDecode(locaData, itemSize);\n          if (newGlyfData.length > firstEntryLength + writeOffset) {\n            glyf.data = newGlyfData.subarray(0, firstEntryLength + writeOffset);\n          } else {\n            glyf.data = new Uint8Array(firstEntryLength + writeOffset);\n            glyf.data.set(newGlyfData.subarray(0, writeOffset));\n          }\n          glyf.data.set(newGlyfData.subarray(0, firstEntryLength), writeOffset);\n          itemEncode(\n            loca.data,\n            locaData.length - itemSize,\n            writeOffset + firstEntryLength\n          );\n        } else {\n          glyf.data = newGlyfData.subarray(0, writeOffset);\n        }\n        return {\n          missingGlyphs,\n          maxSizeOfInstructions,\n        };\n      }\n\n      function readPostScriptTable(post, propertiesObj, maxpNumGlyphs) {\n        var start = (font.start ? font.start : 0) + post.offset;\n        font.pos = start;\n\n        var length = post.length,\n          end = start + length;\n        var version = font.getInt32();\n        // skip rest to the tables\n        font.skip(28);\n\n        var glyphNames;\n        var valid = true;\n        var i;\n\n        switch (version) {\n          case 0x00010000:\n            glyphNames = MacStandardGlyphOrdering;\n            break;\n          case 0x00020000:\n            var numGlyphs = font.getUint16();\n            if (numGlyphs !== maxpNumGlyphs) {\n              valid = false;\n              break;\n            }\n            var glyphNameIndexes = [];\n            for (i = 0; i < numGlyphs; ++i) {\n              var index = font.getUint16();\n              if (index >= 32768) {\n                valid = false;\n                break;\n              }\n              glyphNameIndexes.push(index);\n            }\n            if (!valid) {\n              break;\n            }\n            var customNames = [];\n            var strBuf = [];\n            while (font.pos < end) {\n              var stringLength = font.getByte();\n              strBuf.length = stringLength;\n              for (i = 0; i < stringLength; ++i) {\n                strBuf[i] = String.fromCharCode(font.getByte());\n              }\n              customNames.push(strBuf.join(\"\"));\n            }\n            glyphNames = [];\n            for (i = 0; i < numGlyphs; ++i) {\n              var j = glyphNameIndexes[i];\n              if (j < 258) {\n                glyphNames.push(MacStandardGlyphOrdering[j]);\n                continue;\n              }\n              glyphNames.push(customNames[j - 258]);\n            }\n            break;\n          case 0x00030000:\n            break;\n          default:\n            warn(\"Unknown/unsupported post table version \" + version);\n            valid = false;\n            if (propertiesObj.defaultEncoding) {\n              glyphNames = propertiesObj.defaultEncoding;\n            }\n            break;\n        }\n        propertiesObj.glyphNames = glyphNames;\n        return valid;\n      }\n\n      function readNameTable(nameTable) {\n        var start = (font.start ? font.start : 0) + nameTable.offset;\n        font.pos = start;\n\n        var names = [[], []];\n        var length = nameTable.length,\n          end = start + length;\n        var format = font.getUint16();\n        var FORMAT_0_HEADER_LENGTH = 6;\n        if (format !== 0 || length < FORMAT_0_HEADER_LENGTH) {\n          // unsupported name table format or table \"too\" small\n          return names;\n        }\n        var numRecords = font.getUint16();\n        var stringsStart = font.getUint16();\n        var records = [];\n        var NAME_RECORD_LENGTH = 12;\n        var i, ii;\n\n        for (\n          i = 0;\n          i < numRecords && font.pos + NAME_RECORD_LENGTH <= end;\n          i++\n        ) {\n          var r = {\n            platform: font.getUint16(),\n            encoding: font.getUint16(),\n            language: font.getUint16(),\n            name: font.getUint16(),\n            length: font.getUint16(),\n            offset: font.getUint16(),\n          };\n          // using only Macintosh and Windows platform/encoding names\n          if (\n            (r.platform === 1 && r.encoding === 0 && r.language === 0) ||\n            (r.platform === 3 && r.encoding === 1 && r.language === 0x409)\n          ) {\n            records.push(r);\n          }\n        }\n        for (i = 0, ii = records.length; i < ii; i++) {\n          var record = records[i];\n          if (record.length <= 0) {\n            continue; // Nothing to process, ignoring.\n          }\n          var pos = start + stringsStart + record.offset;\n          if (pos + record.length > end) {\n            continue; // outside of name table, ignoring\n          }\n          font.pos = pos;\n          var nameIndex = record.name;\n          if (record.encoding) {\n            // unicode\n            var str = \"\";\n            for (var j = 0, jj = record.length; j < jj; j += 2) {\n              str += String.fromCharCode(font.getUint16());\n            }\n            names[1][nameIndex] = str;\n          } else {\n            names[0][nameIndex] = bytesToString(font.getBytes(record.length));\n          }\n        }\n        return names;\n      }\n\n      // prettier-ignore\n      var TTOpsStackDeltas = [\n        0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, 0, 0, -2, -5,\n        -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1,\n        1, -1, -999, 0, 1, 0, -1, -2, 0, -1, -2, -1, -1, 0, -1, -1,\n        0, 0, -999, -999, -1, -1, -1, -1, -2, -999, -2, -2, -999, 0, -2, -2,\n        0, 0, -2, 0, -2, 0, 0, 0, -2, -1, -1, 1, 1, 0, 0, -1,\n        -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, -999, -1, -1,\n        -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n        -2, -999, -999, -999, -999, -999, -1, -1, -2, -2, 0, 0, 0, 0, -1, -1,\n        -999, -2, -2, 0, 0, -1, -2, -2, 0, 0, 0, -1, -1, -1, -2];\n      // 0xC0-DF == -1 and 0xE0-FF == -2\n\n      function sanitizeTTProgram(table, ttContext) {\n        var data = table.data;\n        var i = 0,\n          j,\n          n,\n          b,\n          funcId,\n          pc,\n          lastEndf = 0,\n          lastDeff = 0;\n        var stack = [];\n        var callstack = [];\n        var functionsCalled = [];\n        var tooComplexToFollowFunctions = ttContext.tooComplexToFollowFunctions;\n        var inFDEF = false,\n          ifLevel = 0,\n          inELSE = 0;\n        for (var ii = data.length; i < ii; ) {\n          var op = data[i++];\n          // The TrueType instruction set docs can be found at\n          // https://developer.apple.com/fonts/TTRefMan/RM05/Chap5.html\n          if (op === 0x40) {\n            // NPUSHB - pushes n bytes\n            n = data[i++];\n            if (inFDEF || inELSE) {\n              i += n;\n            } else {\n              for (j = 0; j < n; j++) {\n                stack.push(data[i++]);\n              }\n            }\n          } else if (op === 0x41) {\n            // NPUSHW - pushes n words\n            n = data[i++];\n            if (inFDEF || inELSE) {\n              i += n * 2;\n            } else {\n              for (j = 0; j < n; j++) {\n                b = data[i++];\n                stack.push((b << 8) | data[i++]);\n              }\n            }\n          } else if ((op & 0xf8) === 0xb0) {\n            // PUSHB - pushes bytes\n            n = op - 0xb0 + 1;\n            if (inFDEF || inELSE) {\n              i += n;\n            } else {\n              for (j = 0; j < n; j++) {\n                stack.push(data[i++]);\n              }\n            }\n          } else if ((op & 0xf8) === 0xb8) {\n            // PUSHW - pushes words\n            n = op - 0xb8 + 1;\n            if (inFDEF || inELSE) {\n              i += n * 2;\n            } else {\n              for (j = 0; j < n; j++) {\n                b = data[i++];\n                stack.push((b << 8) | data[i++]);\n              }\n            }\n          } else if (op === 0x2b && !tooComplexToFollowFunctions) {\n            // CALL\n            if (!inFDEF && !inELSE) {\n              // collecting information about which functions are used\n              funcId = stack[stack.length - 1];\n              if (isNaN(funcId)) {\n                info(\"TT: CALL empty stack (or invalid entry).\");\n              } else {\n                ttContext.functionsUsed[funcId] = true;\n                if (funcId in ttContext.functionsStackDeltas) {\n                  const newStackLength =\n                    stack.length + ttContext.functionsStackDeltas[funcId];\n                  if (newStackLength < 0) {\n                    warn(\"TT: CALL invalid functions stack delta.\");\n                    ttContext.hintsValid = false;\n                    return;\n                  }\n                  stack.length = newStackLength;\n                } else if (\n                  funcId in ttContext.functionsDefined &&\n                  !functionsCalled.includes(funcId)\n                ) {\n                  callstack.push({ data, i, stackTop: stack.length - 1 });\n                  functionsCalled.push(funcId);\n                  pc = ttContext.functionsDefined[funcId];\n                  if (!pc) {\n                    warn(\"TT: CALL non-existent function\");\n                    ttContext.hintsValid = false;\n                    return;\n                  }\n                  data = pc.data;\n                  i = pc.i;\n                }\n              }\n            }\n          } else if (op === 0x2c && !tooComplexToFollowFunctions) {\n            // FDEF\n            if (inFDEF || inELSE) {\n              warn(\"TT: nested FDEFs not allowed\");\n              tooComplexToFollowFunctions = true;\n            }\n            inFDEF = true;\n            // collecting information about which functions are defined\n            lastDeff = i;\n            funcId = stack.pop();\n            ttContext.functionsDefined[funcId] = { data, i };\n          } else if (op === 0x2d) {\n            // ENDF - end of function\n            if (inFDEF) {\n              inFDEF = false;\n              lastEndf = i;\n            } else {\n              pc = callstack.pop();\n              if (!pc) {\n                warn(\"TT: ENDF bad stack\");\n                ttContext.hintsValid = false;\n                return;\n              }\n              funcId = functionsCalled.pop();\n              data = pc.data;\n              i = pc.i;\n              ttContext.functionsStackDeltas[funcId] =\n                stack.length - pc.stackTop;\n            }\n          } else if (op === 0x89) {\n            // IDEF - instruction definition\n            if (inFDEF || inELSE) {\n              warn(\"TT: nested IDEFs not allowed\");\n              tooComplexToFollowFunctions = true;\n            }\n            inFDEF = true;\n            // recording it as a function to track ENDF\n            lastDeff = i;\n          } else if (op === 0x58) {\n            // IF\n            ++ifLevel;\n          } else if (op === 0x1b) {\n            // ELSE\n            inELSE = ifLevel;\n          } else if (op === 0x59) {\n            // EIF\n            if (inELSE === ifLevel) {\n              inELSE = 0;\n            }\n            --ifLevel;\n          } else if (op === 0x1c) {\n            // JMPR\n            if (!inFDEF && !inELSE) {\n              var offset = stack[stack.length - 1];\n              // only jumping forward to prevent infinite loop\n              if (offset > 0) {\n                i += offset - 1;\n              }\n            }\n          }\n          // Adjusting stack not extactly, but just enough to get function id\n          if (!inFDEF && !inELSE) {\n            let stackDelta = 0;\n            if (op <= 0x8e) {\n              stackDelta = TTOpsStackDeltas[op];\n            } else if (op >= 0xc0 && op <= 0xdf) {\n              stackDelta = -1;\n            } else if (op >= 0xe0) {\n              stackDelta = -2;\n            }\n            if (op >= 0x71 && op <= 0x75) {\n              n = stack.pop();\n              if (!isNaN(n)) {\n                stackDelta = -n * 2;\n              }\n            }\n            while (stackDelta < 0 && stack.length > 0) {\n              stack.pop();\n              stackDelta++;\n            }\n            while (stackDelta > 0) {\n              stack.push(NaN); // pushing any number into stack\n              stackDelta--;\n            }\n          }\n        }\n        ttContext.tooComplexToFollowFunctions = tooComplexToFollowFunctions;\n        var content = [data];\n        if (i > data.length) {\n          content.push(new Uint8Array(i - data.length));\n        }\n        if (lastDeff > lastEndf) {\n          warn(\"TT: complementing a missing function tail\");\n          // new function definition started, but not finished\n          // complete function by [CLEAR, ENDF]\n          content.push(new Uint8Array([0x22, 0x2d]));\n        }\n        foldTTTable(table, content);\n      }\n\n      function checkInvalidFunctions(ttContext, maxFunctionDefs) {\n        if (ttContext.tooComplexToFollowFunctions) {\n          return;\n        }\n        if (ttContext.functionsDefined.length > maxFunctionDefs) {\n          warn(\"TT: more functions defined than expected\");\n          ttContext.hintsValid = false;\n          return;\n        }\n        for (var j = 0, jj = ttContext.functionsUsed.length; j < jj; j++) {\n          if (j > maxFunctionDefs) {\n            warn(\"TT: invalid function id: \" + j);\n            ttContext.hintsValid = false;\n            return;\n          }\n          if (ttContext.functionsUsed[j] && !ttContext.functionsDefined[j]) {\n            warn(\"TT: undefined function: \" + j);\n            ttContext.hintsValid = false;\n            return;\n          }\n        }\n      }\n\n      function foldTTTable(table, content) {\n        if (content.length > 1) {\n          // concatenating the content items\n          var newLength = 0;\n          var j, jj;\n          for (j = 0, jj = content.length; j < jj; j++) {\n            newLength += content[j].length;\n          }\n          newLength = (newLength + 3) & ~3;\n          var result = new Uint8Array(newLength);\n          var pos = 0;\n          for (j = 0, jj = content.length; j < jj; j++) {\n            result.set(content[j], pos);\n            pos += content[j].length;\n          }\n          table.data = result;\n          table.length = newLength;\n        }\n      }\n\n      function sanitizeTTPrograms(fpgm, prep, cvt, maxFunctionDefs) {\n        var ttContext = {\n          functionsDefined: [],\n          functionsUsed: [],\n          functionsStackDeltas: [],\n          tooComplexToFollowFunctions: false,\n          hintsValid: true,\n        };\n        if (fpgm) {\n          sanitizeTTProgram(fpgm, ttContext);\n        }\n        if (prep) {\n          sanitizeTTProgram(prep, ttContext);\n        }\n        if (fpgm) {\n          checkInvalidFunctions(ttContext, maxFunctionDefs);\n        }\n        if (cvt && cvt.length & 1) {\n          var cvtData = new Uint8Array(cvt.length + 1);\n          cvtData.set(cvt.data);\n          cvt.data = cvtData;\n        }\n        return ttContext.hintsValid;\n      }\n\n      // The following steps modify the original font data, making copy\n      font = new Stream(new Uint8Array(font.getBytes()));\n\n      let header, tables;\n      if (isTrueTypeCollectionFile(font)) {\n        const ttcData = readTrueTypeCollectionData(font, this.name);\n        header = ttcData.header;\n        tables = ttcData.tables;\n      } else {\n        header = readOpenTypeHeader(font);\n        tables = readTables(font, header.numTables);\n      }\n      let cff, cffFile;\n\n      var isTrueType = !tables[\"CFF \"];\n      if (!isTrueType) {\n        const isComposite =\n          properties.composite &&\n          ((properties.cidToGidMap || []).length > 0 ||\n            !(properties.cMap instanceof IdentityCMap));\n        // OpenType font (skip composite fonts with non-default glyph mapping).\n        if (\n          (header.version === \"OTTO\" && !isComposite) ||\n          !tables.head ||\n          !tables.hhea ||\n          !tables.maxp ||\n          !tables.post\n        ) {\n          // No major tables: throwing everything at `CFFFont`.\n          cffFile = new Stream(tables[\"CFF \"].data);\n          cff = new CFFFont(cffFile, properties);\n\n          adjustWidths(properties);\n\n          return this.convert(name, cff, properties);\n        }\n\n        delete tables.glyf;\n        delete tables.loca;\n        delete tables.fpgm;\n        delete tables.prep;\n        delete tables[\"cvt \"];\n        this.isOpenType = true;\n      } else {\n        if (!tables.loca) {\n          throw new FormatError('Required \"loca\" table is not found');\n        }\n        if (!tables.glyf) {\n          warn('Required \"glyf\" table is not found -- trying to recover.');\n          // Note: We use `sanitizeGlyphLocations` to add dummy glyf data below.\n          tables.glyf = {\n            tag: \"glyf\",\n            data: new Uint8Array(0),\n          };\n        }\n        this.isOpenType = false;\n      }\n\n      if (!tables.maxp) {\n        throw new FormatError('Required \"maxp\" table is not found');\n      }\n\n      font.pos = (font.start || 0) + tables.maxp.offset;\n      var version = font.getInt32();\n      const numGlyphs = font.getUint16();\n      // Glyph 0 is duplicated and appended.\n      let numGlyphsOut = numGlyphs + 1;\n      let dupFirstEntry = true;\n      if (numGlyphsOut > 0xffff) {\n        dupFirstEntry = false;\n        numGlyphsOut = numGlyphs;\n        warn(\"Not enough space in glyfs to duplicate first glyph.\");\n      }\n      var maxFunctionDefs = 0;\n      var maxSizeOfInstructions = 0;\n      if (version >= 0x00010000 && tables.maxp.length >= 22) {\n        // maxZones can be invalid\n        font.pos += 8;\n        var maxZones = font.getUint16();\n        if (maxZones > 2) {\n          // reset to 2 if font has invalid maxZones\n          tables.maxp.data[14] = 0;\n          tables.maxp.data[15] = 2;\n        }\n        font.pos += 4;\n        maxFunctionDefs = font.getUint16();\n        font.pos += 4;\n        maxSizeOfInstructions = font.getUint16();\n      }\n\n      tables.maxp.data[4] = numGlyphsOut >> 8;\n      tables.maxp.data[5] = numGlyphsOut & 255;\n\n      var hintsValid = sanitizeTTPrograms(\n        tables.fpgm,\n        tables.prep,\n        tables[\"cvt \"],\n        maxFunctionDefs\n      );\n      if (!hintsValid) {\n        delete tables.fpgm;\n        delete tables.prep;\n        delete tables[\"cvt \"];\n      }\n\n      // Ensure the hmtx table contains the advance width and\n      // sidebearings information for numGlyphs in the maxp table\n      sanitizeMetrics(\n        font,\n        tables.hhea,\n        tables.hmtx,\n        numGlyphsOut,\n        dupFirstEntry\n      );\n\n      if (!tables.head) {\n        throw new FormatError('Required \"head\" table is not found');\n      }\n\n      sanitizeHead(tables.head, numGlyphs, isTrueType ? tables.loca.length : 0);\n\n      var missingGlyphs = Object.create(null);\n      if (isTrueType) {\n        var isGlyphLocationsLong = int16(\n          tables.head.data[50],\n          tables.head.data[51]\n        );\n        var glyphsInfo = sanitizeGlyphLocations(\n          tables.loca,\n          tables.glyf,\n          numGlyphs,\n          isGlyphLocationsLong,\n          hintsValid,\n          dupFirstEntry,\n          maxSizeOfInstructions\n        );\n        missingGlyphs = glyphsInfo.missingGlyphs;\n\n        // Some fonts have incorrect maxSizeOfInstructions values, so we use\n        // the computed value instead.\n        if (version >= 0x00010000 && tables.maxp.length >= 22) {\n          tables.maxp.data[26] = glyphsInfo.maxSizeOfInstructions >> 8;\n          tables.maxp.data[27] = glyphsInfo.maxSizeOfInstructions & 255;\n        }\n      }\n      if (!tables.hhea) {\n        throw new FormatError('Required \"hhea\" table is not found');\n      }\n\n      // Sanitizer reduces the glyph advanceWidth to the maxAdvanceWidth\n      // Sometimes it's 0. That needs to be fixed\n      if (tables.hhea.data[10] === 0 && tables.hhea.data[11] === 0) {\n        tables.hhea.data[10] = 0xff;\n        tables.hhea.data[11] = 0xff;\n      }\n\n      // Extract some more font properties from the OpenType head and\n      // hhea tables; yMin and descent value are always negative.\n      var metricsOverride = {\n        unitsPerEm: int16(tables.head.data[18], tables.head.data[19]),\n        yMax: int16(tables.head.data[42], tables.head.data[43]),\n        yMin: signedInt16(tables.head.data[38], tables.head.data[39]),\n        ascent: int16(tables.hhea.data[4], tables.hhea.data[5]),\n        descent: signedInt16(tables.hhea.data[6], tables.hhea.data[7]),\n      };\n\n      // PDF FontDescriptor metrics lie -- using data from actual font.\n      this.ascent = metricsOverride.ascent / metricsOverride.unitsPerEm;\n      this.descent = metricsOverride.descent / metricsOverride.unitsPerEm;\n\n      // The 'post' table has glyphs names.\n      if (tables.post) {\n        readPostScriptTable(tables.post, properties, numGlyphs);\n      }\n\n      // The original 'post' table is not needed, replace it.\n      tables.post = {\n        tag: \"post\",\n        data: createPostTable(properties),\n      };\n\n      const charCodeToGlyphId = [];\n\n      // Helper function to try to skip mapping of empty glyphs.\n      function hasGlyph(glyphId) {\n        return !missingGlyphs[glyphId];\n      }\n\n      if (properties.composite) {\n        var cidToGidMap = properties.cidToGidMap || [];\n        var isCidToGidMapEmpty = cidToGidMap.length === 0;\n\n        properties.cMap.forEach(function (charCode, cid) {\n          if (cid > 0xffff) {\n            throw new FormatError(\"Max size of CID is 65,535\");\n          }\n          var glyphId = -1;\n          if (isCidToGidMapEmpty) {\n            glyphId = cid;\n          } else if (cidToGidMap[cid] !== undefined) {\n            glyphId = cidToGidMap[cid];\n          }\n\n          if (glyphId >= 0 && glyphId < numGlyphs && hasGlyph(glyphId)) {\n            charCodeToGlyphId[charCode] = glyphId;\n          }\n        });\n      } else {\n        // Most of the following logic in this code branch is based on the\n        // 9.6.6.4 of the PDF spec.\n        var cmapTable = readCmapTable(\n          tables.cmap,\n          font,\n          this.isSymbolicFont,\n          properties.hasEncoding\n        );\n        var cmapPlatformId = cmapTable.platformId;\n        var cmapEncodingId = cmapTable.encodingId;\n        var cmapMappings = cmapTable.mappings;\n        var cmapMappingsLength = cmapMappings.length;\n\n        // The spec seems to imply that if the font is symbolic the encoding\n        // should be ignored, this doesn't appear to work for 'preistabelle.pdf'\n        // where the the font is symbolic and it has an encoding.\n        if (\n          (properties.hasEncoding &&\n            ((cmapPlatformId === 3 && cmapEncodingId === 1) ||\n              (cmapPlatformId === 1 && cmapEncodingId === 0))) ||\n          (cmapPlatformId === -1 &&\n          cmapEncodingId === -1 && // Temporary hack\n            !!getEncoding(properties.baseEncodingName))\n        ) {\n          // Temporary hack\n          // When no preferred cmap table was found and |baseEncodingName| is\n          // one of the predefined encodings, we seem to obtain a better\n          // |charCodeToGlyphId| map from the code below (fixes bug 1057544).\n          // TODO: Note that this is a hack which should be removed as soon as\n          //       we have proper support for more exotic cmap tables.\n\n          var baseEncoding = [];\n          if (\n            properties.baseEncodingName === \"MacRomanEncoding\" ||\n            properties.baseEncodingName === \"WinAnsiEncoding\"\n          ) {\n            baseEncoding = getEncoding(properties.baseEncodingName);\n          }\n          var glyphsUnicodeMap = getGlyphsUnicode();\n          for (let charCode = 0; charCode < 256; charCode++) {\n            var glyphName, standardGlyphName;\n            if (this.differences && charCode in this.differences) {\n              glyphName = this.differences[charCode];\n            } else if (\n              charCode in baseEncoding &&\n              baseEncoding[charCode] !== \"\"\n            ) {\n              glyphName = baseEncoding[charCode];\n            } else {\n              glyphName = StandardEncoding[charCode];\n            }\n            if (!glyphName) {\n              continue;\n            }\n            // Ensure that non-standard glyph names are resolved to valid ones.\n            standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap);\n\n            var unicodeOrCharCode;\n            if (cmapPlatformId === 3 && cmapEncodingId === 1) {\n              unicodeOrCharCode = glyphsUnicodeMap[standardGlyphName];\n            } else if (cmapPlatformId === 1 && cmapEncodingId === 0) {\n              // TODO: the encoding needs to be updated with mac os table.\n              unicodeOrCharCode = MacRomanEncoding.indexOf(standardGlyphName);\n            }\n\n            var found = false;\n            for (let i = 0; i < cmapMappingsLength; ++i) {\n              if (cmapMappings[i].charCode !== unicodeOrCharCode) {\n                continue;\n              }\n              charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;\n              found = true;\n              break;\n            }\n            if (!found && properties.glyphNames) {\n              // Try to map using the post table.\n              var glyphId = properties.glyphNames.indexOf(glyphName);\n              // The post table ought to use the same kind of glyph names as the\n              // `differences` array, but check the standard ones as a fallback.\n              if (glyphId === -1 && standardGlyphName !== glyphName) {\n                glyphId = properties.glyphNames.indexOf(standardGlyphName);\n              }\n              if (glyphId > 0 && hasGlyph(glyphId)) {\n                charCodeToGlyphId[charCode] = glyphId;\n              }\n            }\n          }\n        } else if (cmapPlatformId === 0 && cmapEncodingId === 0) {\n          // Default Unicode semantics, use the charcodes as is.\n          for (let i = 0; i < cmapMappingsLength; ++i) {\n            charCodeToGlyphId[cmapMappings[i].charCode] =\n              cmapMappings[i].glyphId;\n          }\n        } else {\n          // When there is only a (1, 0) cmap table, the char code is a single\n          // byte and it is used directly as the char code.\n\n          // When a (3, 0) cmap table is present, it is used instead but the\n          // spec has special rules for char codes in the range of 0xF000 to\n          // 0xF0FF and it says the (3, 0) table should map the values from\n          // the (1, 0) table by prepending 0xF0 to the char codes. To reverse\n          // this, the upper bits of the char code are cleared, but only for the\n          // special range since some PDFs have char codes outside of this range\n          // (e.g. 0x2013) which when masked would overwrite other values in the\n          // cmap.\n          for (let i = 0; i < cmapMappingsLength; ++i) {\n            let charCode = cmapMappings[i].charCode;\n            if (\n              cmapPlatformId === 3 &&\n              charCode >= 0xf000 &&\n              charCode <= 0xf0ff\n            ) {\n              charCode &= 0xff;\n            }\n            charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;\n          }\n        }\n      }\n\n      if (charCodeToGlyphId.length === 0) {\n        // defines at least one glyph\n        charCodeToGlyphId[0] = 0;\n      }\n\n      // Typically glyph 0 is duplicated and the mapping must be updated, but if\n      // there isn't enough room to duplicate, the glyph id is left the same. In\n      // this case, glyph 0 may not work correctly, but that is better than\n      // having the whole font fail.\n      let glyphZeroId = numGlyphsOut - 1;\n      if (!dupFirstEntry) {\n        glyphZeroId = 0;\n      }\n\n      // Converting glyphs and ids into font's cmap table\n      var newMapping = adjustMapping(charCodeToGlyphId, hasGlyph, glyphZeroId);\n      this.toFontChar = newMapping.toFontChar;\n      tables.cmap = {\n        tag: \"cmap\",\n        data: createCmapTable(newMapping.charCodeToGlyphId, numGlyphsOut),\n      };\n\n      if (!tables[\"OS/2\"] || !validateOS2Table(tables[\"OS/2\"], font)) {\n        tables[\"OS/2\"] = {\n          tag: \"OS/2\",\n          data: createOS2Table(\n            properties,\n            newMapping.charCodeToGlyphId,\n            metricsOverride\n          ),\n        };\n      }\n\n      if (!isTrueType) {\n        try {\n          // Trying to repair CFF file\n          cffFile = new Stream(tables[\"CFF \"].data);\n          var parser = new CFFParser(\n            cffFile,\n            properties,\n            SEAC_ANALYSIS_ENABLED\n          );\n          cff = parser.parse();\n          cff.duplicateFirstGlyph();\n          var compiler = new CFFCompiler(cff);\n          tables[\"CFF \"].data = compiler.compile();\n        } catch (e) {\n          warn(\"Failed to compile font \" + properties.loadedName);\n        }\n      }\n\n      // Re-creating 'name' table\n      if (!tables.name) {\n        tables.name = {\n          tag: \"name\",\n          data: createNameTable(this.name),\n        };\n      } else {\n        // ... using existing 'name' table as prototype\n        var namePrototype = readNameTable(tables.name);\n        tables.name.data = createNameTable(name, namePrototype);\n      }\n\n      var builder = new OpenTypeFileBuilder(header.version);\n      for (var tableTag in tables) {\n        builder.addTable(tableTag, tables[tableTag].data);\n      }\n      return builder.toArray();\n    },\n\n    convert: function Font_convert(fontName, font, properties) {\n      // TODO: Check the charstring widths to determine this.\n      properties.fixedPitch = false;\n\n      if (properties.builtInEncoding) {\n        // For Type1 fonts that do not include either `ToUnicode` or `Encoding`\n        // data, attempt to use the `builtInEncoding` to improve text selection.\n        adjustToUnicode(properties, properties.builtInEncoding);\n      }\n\n      // Type 1 fonts have a notdef inserted at the beginning, so glyph 0\n      // becomes glyph 1. In a CFF font glyph 0 is appended to the end of the\n      // char strings.\n      let glyphZeroId = 1;\n      if (font instanceof CFFFont) {\n        glyphZeroId = font.numGlyphs - 1;\n      }\n      var mapping = font.getGlyphMapping(properties);\n      var newMapping = adjustMapping(\n        mapping,\n        font.hasGlyphId.bind(font),\n        glyphZeroId\n      );\n      this.toFontChar = newMapping.toFontChar;\n      var numGlyphs = font.numGlyphs;\n\n      function getCharCodes(charCodeToGlyphId, glyphId) {\n        var charCodes = null;\n        for (var charCode in charCodeToGlyphId) {\n          if (glyphId === charCodeToGlyphId[charCode]) {\n            if (!charCodes) {\n              charCodes = [];\n            }\n            charCodes.push(charCode | 0);\n          }\n        }\n        return charCodes;\n      }\n\n      function createCharCode(charCodeToGlyphId, glyphId) {\n        for (var charCode in charCodeToGlyphId) {\n          if (glyphId === charCodeToGlyphId[charCode]) {\n            return charCode | 0;\n          }\n        }\n        newMapping.charCodeToGlyphId[\n          newMapping.nextAvailableFontCharCode\n        ] = glyphId;\n        return newMapping.nextAvailableFontCharCode++;\n      }\n\n      var seacs = font.seacs;\n      if (SEAC_ANALYSIS_ENABLED && seacs && seacs.length) {\n        var matrix = properties.fontMatrix || FONT_IDENTITY_MATRIX;\n        var charset = font.getCharset();\n        var seacMap = Object.create(null);\n        for (var glyphId in seacs) {\n          glyphId |= 0;\n          var seac = seacs[glyphId];\n          var baseGlyphName = StandardEncoding[seac[2]];\n          var accentGlyphName = StandardEncoding[seac[3]];\n          var baseGlyphId = charset.indexOf(baseGlyphName);\n          var accentGlyphId = charset.indexOf(accentGlyphName);\n          if (baseGlyphId < 0 || accentGlyphId < 0) {\n            continue;\n          }\n          var accentOffset = {\n            x: seac[0] * matrix[0] + seac[1] * matrix[2] + matrix[4],\n            y: seac[0] * matrix[1] + seac[1] * matrix[3] + matrix[5],\n          };\n\n          var charCodes = getCharCodes(mapping, glyphId);\n          if (!charCodes) {\n            // There's no point in mapping it if the char code was never mapped\n            // to begin with.\n            continue;\n          }\n          for (let i = 0, ii = charCodes.length; i < ii; i++) {\n            var charCode = charCodes[i];\n            // Find a fontCharCode that maps to the base and accent glyphs.\n            // If one doesn't exists, create it.\n            var charCodeToGlyphId = newMapping.charCodeToGlyphId;\n            var baseFontCharCode = createCharCode(\n              charCodeToGlyphId,\n              baseGlyphId\n            );\n            var accentFontCharCode = createCharCode(\n              charCodeToGlyphId,\n              accentGlyphId\n            );\n            seacMap[charCode] = {\n              baseFontCharCode,\n              accentFontCharCode,\n              accentOffset,\n            };\n          }\n        }\n        properties.seacMap = seacMap;\n      }\n\n      var unitsPerEm = 1 / (properties.fontMatrix || FONT_IDENTITY_MATRIX)[0];\n\n      var builder = new OpenTypeFileBuilder(\"\\x4F\\x54\\x54\\x4F\");\n      // PostScript Font Program\n      builder.addTable(\"CFF \", font.data);\n      // OS/2 and Windows Specific metrics\n      builder.addTable(\n        \"OS/2\",\n        createOS2Table(properties, newMapping.charCodeToGlyphId)\n      );\n      // Character to glyphs mapping\n      builder.addTable(\n        \"cmap\",\n        createCmapTable(newMapping.charCodeToGlyphId, numGlyphs)\n      );\n      // Font header\n      builder.addTable(\n        \"head\",\n        \"\\x00\\x01\\x00\\x00\" + // Version number\n        \"\\x00\\x00\\x10\\x00\" + // fontRevision\n        \"\\x00\\x00\\x00\\x00\" + // checksumAdjustement\n        \"\\x5F\\x0F\\x3C\\xF5\" + // magicNumber\n        \"\\x00\\x00\" + // Flags\n        safeString16(unitsPerEm) + // unitsPerEM\n        \"\\x00\\x00\\x00\\x00\\x9e\\x0b\\x7e\\x27\" + // creation date\n        \"\\x00\\x00\\x00\\x00\\x9e\\x0b\\x7e\\x27\" + // modifification date\n        \"\\x00\\x00\" + // xMin\n        safeString16(properties.descent) + // yMin\n        \"\\x0F\\xFF\" + // xMax\n        safeString16(properties.ascent) + // yMax\n        string16(properties.italicAngle ? 2 : 0) + // macStyle\n        \"\\x00\\x11\" + // lowestRecPPEM\n        \"\\x00\\x00\" + // fontDirectionHint\n        \"\\x00\\x00\" + // indexToLocFormat\n          \"\\x00\\x00\"\n      ); // glyphDataFormat\n\n      // Horizontal header\n      builder.addTable(\n        \"hhea\",\n        \"\\x00\\x01\\x00\\x00\" + // Version number\n        safeString16(properties.ascent) + // Typographic Ascent\n        safeString16(properties.descent) + // Typographic Descent\n        \"\\x00\\x00\" + // Line Gap\n        \"\\xFF\\xFF\" + // advanceWidthMax\n        \"\\x00\\x00\" + // minLeftSidebearing\n        \"\\x00\\x00\" + // minRightSidebearing\n        \"\\x00\\x00\" + // xMaxExtent\n        safeString16(properties.capHeight) + // caretSlopeRise\n        safeString16(Math.tan(properties.italicAngle) * properties.xHeight) + // caretSlopeRun\n        \"\\x00\\x00\" + // caretOffset\n        \"\\x00\\x00\" + // -reserved-\n        \"\\x00\\x00\" + // -reserved-\n        \"\\x00\\x00\" + // -reserved-\n        \"\\x00\\x00\" + // -reserved-\n        \"\\x00\\x00\" + // metricDataFormat\n          string16(numGlyphs)\n      ); // Number of HMetrics\n\n      // Horizontal metrics\n      builder.addTable(\n        \"hmtx\",\n        (function fontFieldsHmtx() {\n          var charstrings = font.charstrings;\n          var cffWidths = font.cff ? font.cff.widths : null;\n          var hmtx = \"\\x00\\x00\\x00\\x00\"; // Fake .notdef\n          for (let i = 1, ii = numGlyphs; i < ii; i++) {\n            var width = 0;\n            if (charstrings) {\n              var charstring = charstrings[i - 1];\n              width = \"width\" in charstring ? charstring.width : 0;\n            } else if (cffWidths) {\n              width = Math.ceil(cffWidths[i] || 0);\n            }\n            hmtx += string16(width) + string16(0);\n          }\n          return hmtx;\n        })()\n      );\n\n      // Maximum profile\n      builder.addTable(\n        \"maxp\",\n        \"\\x00\\x00\\x50\\x00\" + string16(numGlyphs) // Version number\n      ); // Num of glyphs\n\n      // Naming tables\n      builder.addTable(\"name\", createNameTable(fontName));\n\n      // PostScript information\n      builder.addTable(\"post\", createPostTable(properties));\n\n      return builder.toArray();\n    },\n\n    get spaceWidth() {\n      // trying to estimate space character width\n      var possibleSpaceReplacements = [\"space\", \"minus\", \"one\", \"i\", \"I\"];\n      var width;\n      for (var i = 0, ii = possibleSpaceReplacements.length; i < ii; i++) {\n        var glyphName = possibleSpaceReplacements[i];\n        // if possible, getting width by glyph name\n        if (glyphName in this.widths) {\n          width = this.widths[glyphName];\n          break;\n        }\n        var glyphsUnicodeMap = getGlyphsUnicode();\n        var glyphUnicode = glyphsUnicodeMap[glyphName];\n        // finding the charcode via unicodeToCID map\n        var charcode = 0;\n        if (this.composite && this.cMap.contains(glyphUnicode)) {\n          charcode = this.cMap.lookup(glyphUnicode);\n        }\n        // ... via toUnicode map\n        if (!charcode && this.toUnicode) {\n          charcode = this.toUnicode.charCodeOf(glyphUnicode);\n        }\n        // setting it to unicode if negative or undefined\n        if (charcode <= 0) {\n          charcode = glyphUnicode;\n        }\n        // trying to get width via charcode\n        width = this.widths[charcode];\n        if (width) {\n          break; // the non-zero width found\n        }\n      }\n      width = width || this.defaultWidth;\n      return shadow(this, \"spaceWidth\", width);\n    },\n\n    charToGlyph: function Font_charToGlyph(charcode, isSpace) {\n      var fontCharCode, width, operatorListId;\n\n      var widthCode = charcode;\n      if (this.cMap && this.cMap.contains(charcode)) {\n        widthCode = this.cMap.lookup(charcode);\n      }\n      width = this.widths[widthCode];\n      width = isNum(width) ? width : this.defaultWidth;\n      var vmetric = this.vmetrics && this.vmetrics[widthCode];\n\n      let unicode =\n        this.toUnicode.get(charcode) ||\n        this.fallbackToUnicode.get(charcode) ||\n        charcode;\n      if (typeof unicode === \"number\") {\n        unicode = String.fromCharCode(unicode);\n      }\n\n      var isInFont = charcode in this.toFontChar;\n      // First try the toFontChar map, if it's not there then try falling\n      // back to the char code.\n      fontCharCode = this.toFontChar[charcode] || charcode;\n      if (this.missingFile) {\n        const glyphName =\n          this.differences[charcode] || this.defaultEncoding[charcode];\n        if (\n          (glyphName === \".notdef\" || glyphName === \"\") &&\n          this.type === \"Type1\"\n        ) {\n          // .notdef glyphs should be invisible in non-embedded Type1 fonts, so\n          // replace them with spaces.\n          fontCharCode = 0x20;\n        }\n        fontCharCode = mapSpecialUnicodeValues(fontCharCode);\n      }\n\n      if (this.isType3Font) {\n        // Font char code in this case is actually a glyph name.\n        operatorListId = fontCharCode;\n      }\n\n      var accent = null;\n      if (this.seacMap && this.seacMap[charcode]) {\n        isInFont = true;\n        var seac = this.seacMap[charcode];\n        fontCharCode = seac.baseFontCharCode;\n        accent = {\n          fontChar: String.fromCodePoint(seac.accentFontCharCode),\n          offset: seac.accentOffset,\n        };\n      }\n\n      let fontChar = \"\";\n      if (typeof fontCharCode === \"number\") {\n        if (fontCharCode <= 0x10ffff) {\n          fontChar = String.fromCodePoint(fontCharCode);\n        } else {\n          warn(`charToGlyph - invalid fontCharCode: ${fontCharCode}`);\n        }\n      }\n\n      var glyph = this.glyphCache[charcode];\n      if (\n        !glyph ||\n        !glyph.matchesForCache(\n          fontChar,\n          unicode,\n          accent,\n          width,\n          vmetric,\n          operatorListId,\n          isSpace,\n          isInFont\n        )\n      ) {\n        glyph = new Glyph(\n          fontChar,\n          unicode,\n          accent,\n          width,\n          vmetric,\n          operatorListId,\n          isSpace,\n          isInFont\n        );\n        this.glyphCache[charcode] = glyph;\n      }\n      return glyph;\n    },\n\n    charsToGlyphs: function Font_charsToGlyphs(chars) {\n      var charsCache = this.charsCache;\n      var glyphs, glyph, charcode;\n\n      // if we translated this string before, just grab it from the cache\n      if (charsCache) {\n        glyphs = charsCache[chars];\n        if (glyphs) {\n          return glyphs;\n        }\n      }\n\n      // lazily create the translation cache\n      if (!charsCache) {\n        charsCache = this.charsCache = Object.create(null);\n      }\n\n      glyphs = [];\n      var charsCacheKey = chars;\n      var i = 0,\n        ii;\n\n      if (this.cMap) {\n        // composite fonts have multi-byte strings convert the string from\n        // single-byte to multi-byte\n        var c = Object.create(null);\n        while (i < chars.length) {\n          this.cMap.readCharCode(chars, i, c);\n          charcode = c.charcode;\n          var length = c.length;\n          i += length;\n          // Space is char with code 0x20 and length 1 in multiple-byte codes.\n          var isSpace = length === 1 && chars.charCodeAt(i - 1) === 0x20;\n          glyph = this.charToGlyph(charcode, isSpace);\n          glyphs.push(glyph);\n        }\n      } else {\n        for (i = 0, ii = chars.length; i < ii; ++i) {\n          charcode = chars.charCodeAt(i);\n          glyph = this.charToGlyph(charcode, charcode === 0x20);\n          glyphs.push(glyph);\n        }\n      }\n\n      // Enter the translated string into the cache\n      return (charsCache[charsCacheKey] = glyphs);\n    },\n\n    get glyphCacheValues() {\n      return Object.values(this.glyphCache);\n    },\n  };\n\n  return Font;\n})();\n\nvar ErrorFont = (function ErrorFontClosure() {\n  // eslint-disable-next-line no-shadow\n  function ErrorFont(error) {\n    this.error = error;\n    this.loadedName = \"g_font_error\";\n    this.missingFile = true;\n  }\n\n  ErrorFont.prototype = {\n    charsToGlyphs: function ErrorFont_charsToGlyphs() {\n      return [];\n    },\n    exportData(extraProperties = false) {\n      return { error: this.error };\n    },\n  };\n\n  return ErrorFont;\n})();\n\n/**\n * Shared logic for building a char code to glyph id mapping for Type1 and\n * simple CFF fonts. See section 9.6.6.2 of the spec.\n * @param {Object} properties Font properties object.\n * @param {Object} builtInEncoding The encoding contained within the actual font\n * data.\n * @param {Array} glyphNames Array of glyph names where the index is the\n * glyph ID.\n * @returns {Object} A char code to glyph ID map.\n */\nfunction type1FontGlyphMapping(properties, builtInEncoding, glyphNames) {\n  var charCodeToGlyphId = Object.create(null);\n  var glyphId, charCode, baseEncoding;\n  var isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n\n  if (properties.baseEncodingName) {\n    // If a valid base encoding name was used, the mapping is initialized with\n    // that.\n    baseEncoding = getEncoding(properties.baseEncodingName);\n    for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n      glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n      if (glyphId >= 0) {\n        charCodeToGlyphId[charCode] = glyphId;\n      } else {\n        charCodeToGlyphId[charCode] = 0; // notdef\n      }\n    }\n  } else if (isSymbolicFont) {\n    // For a symbolic font the encoding should be the fonts built-in encoding.\n    for (charCode in builtInEncoding) {\n      charCodeToGlyphId[charCode] = builtInEncoding[charCode];\n    }\n  } else {\n    // For non-symbolic fonts that don't have a base encoding the standard\n    // encoding should be used.\n    baseEncoding = StandardEncoding;\n    for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n      glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n      if (glyphId >= 0) {\n        charCodeToGlyphId[charCode] = glyphId;\n      } else {\n        charCodeToGlyphId[charCode] = 0; // notdef\n      }\n    }\n  }\n\n  // Lastly, merge in the differences.\n  var differences = properties.differences,\n    glyphsUnicodeMap;\n  if (differences) {\n    for (charCode in differences) {\n      var glyphName = differences[charCode];\n      glyphId = glyphNames.indexOf(glyphName);\n\n      if (glyphId === -1) {\n        if (!glyphsUnicodeMap) {\n          glyphsUnicodeMap = getGlyphsUnicode();\n        }\n        var standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap);\n        if (standardGlyphName !== glyphName) {\n          glyphId = glyphNames.indexOf(standardGlyphName);\n        }\n      }\n      if (glyphId >= 0) {\n        charCodeToGlyphId[charCode] = glyphId;\n      } else {\n        charCodeToGlyphId[charCode] = 0; // notdef\n      }\n    }\n  }\n  return charCodeToGlyphId;\n}\n\n// Type1Font is also a CIDFontType0.\nvar Type1Font = (function Type1FontClosure() {\n  function findBlock(streamBytes, signature, startIndex) {\n    var streamBytesLength = streamBytes.length;\n    var signatureLength = signature.length;\n    var scanLength = streamBytesLength - signatureLength;\n\n    var i = startIndex,\n      j,\n      found = false;\n    while (i < scanLength) {\n      j = 0;\n      while (j < signatureLength && streamBytes[i + j] === signature[j]) {\n        j++;\n      }\n      if (j >= signatureLength) {\n        // `signature` found, skip over whitespace.\n        i += j;\n        while (i < streamBytesLength && isWhiteSpace(streamBytes[i])) {\n          i++;\n        }\n        found = true;\n        break;\n      }\n      i++;\n    }\n    return {\n      found,\n      length: i,\n    };\n  }\n\n  function getHeaderBlock(stream, suggestedLength) {\n    var EEXEC_SIGNATURE = [0x65, 0x65, 0x78, 0x65, 0x63];\n\n    var streamStartPos = stream.pos; // Save the initial stream position.\n    var headerBytes, headerBytesLength, block;\n    try {\n      headerBytes = stream.getBytes(suggestedLength);\n      headerBytesLength = headerBytes.length;\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      // Ignore errors if the `suggestedLength` is huge enough that a Uint8Array\n      // cannot hold the result of `getBytes`, and fallback to simply checking\n      // the entire stream (fixes issue3928.pdf).\n    }\n\n    if (headerBytesLength === suggestedLength) {\n      // Most of the time `suggestedLength` is correct, so to speed things up we\n      // initially only check the last few bytes to see if the header was found.\n      // Otherwise we (potentially) check the entire stream to prevent errors in\n      // `Type1Parser` (fixes issue5686.pdf).\n      block = findBlock(\n        headerBytes,\n        EEXEC_SIGNATURE,\n        suggestedLength - 2 * EEXEC_SIGNATURE.length\n      );\n\n      if (block.found && block.length === suggestedLength) {\n        return {\n          stream: new Stream(headerBytes),\n          length: suggestedLength,\n        };\n      }\n    }\n    warn('Invalid \"Length1\" property in Type1 font -- trying to recover.');\n    stream.pos = streamStartPos; // Reset the stream position.\n\n    var SCAN_BLOCK_LENGTH = 2048;\n    var actualLength;\n    while (true) {\n      var scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\n      block = findBlock(scanBytes, EEXEC_SIGNATURE, 0);\n\n      if (block.length === 0) {\n        break;\n      }\n      stream.pos += block.length; // Update the stream position.\n\n      if (block.found) {\n        actualLength = stream.pos - streamStartPos;\n        break;\n      }\n    }\n    stream.pos = streamStartPos; // Reset the stream position.\n\n    if (actualLength) {\n      return {\n        stream: new Stream(stream.getBytes(actualLength)),\n        length: actualLength,\n      };\n    }\n    warn('Unable to recover \"Length1\" property in Type1 font -- using as is.');\n    return {\n      stream: new Stream(stream.getBytes(suggestedLength)),\n      length: suggestedLength,\n    };\n  }\n\n  function getEexecBlock(stream, suggestedLength) {\n    // We should ideally parse the eexec block to ensure that `suggestedLength`\n    // is correct, so we don't truncate the block data if it's too small.\n    // However, this would also require checking if the fixed-content portion\n    // exists (using the 'Length3' property), and ensuring that it's valid.\n    //\n    // Given that `suggestedLength` almost always is correct, all the validation\n    // would require a great deal of unnecessary parsing for most fonts.\n    // To save time, we always fetch the entire stream instead, which also avoid\n    // issues if `suggestedLength` is huge (see comment in `getHeaderBlock`).\n    //\n    // NOTE: This means that the function can include the fixed-content portion\n    // in the returned eexec block. In practice this does *not* seem to matter,\n    // since `Type1Parser_extractFontProgram` will skip over any non-commands.\n    var eexecBytes = stream.getBytes();\n    return {\n      stream: new Stream(eexecBytes),\n      length: eexecBytes.length,\n    };\n  }\n\n  // eslint-disable-next-line no-shadow\n  function Type1Font(name, file, properties) {\n    // Some bad generators embed pfb file as is, we have to strip 6-byte header.\n    // Also, length1 and length2 might be off by 6 bytes as well.\n    // http://www.math.ubc.ca/~cass/piscript/type1.pdf\n    var PFB_HEADER_SIZE = 6;\n    var headerBlockLength = properties.length1;\n    var eexecBlockLength = properties.length2;\n    var pfbHeader = file.peekBytes(PFB_HEADER_SIZE);\n    var pfbHeaderPresent = pfbHeader[0] === 0x80 && pfbHeader[1] === 0x01;\n    if (pfbHeaderPresent) {\n      file.skip(PFB_HEADER_SIZE);\n      headerBlockLength =\n        (pfbHeader[5] << 24) |\n        (pfbHeader[4] << 16) |\n        (pfbHeader[3] << 8) |\n        pfbHeader[2];\n    }\n\n    // Get the data block containing glyphs and subrs information\n    var headerBlock = getHeaderBlock(file, headerBlockLength);\n    var headerBlockParser = new Type1Parser(\n      headerBlock.stream,\n      false,\n      SEAC_ANALYSIS_ENABLED\n    );\n    headerBlockParser.extractFontHeader(properties);\n\n    if (pfbHeaderPresent) {\n      pfbHeader = file.getBytes(PFB_HEADER_SIZE);\n      eexecBlockLength =\n        (pfbHeader[5] << 24) |\n        (pfbHeader[4] << 16) |\n        (pfbHeader[3] << 8) |\n        pfbHeader[2];\n    }\n\n    // Decrypt the data blocks and retrieve it's content\n    var eexecBlock = getEexecBlock(file, eexecBlockLength);\n    var eexecBlockParser = new Type1Parser(\n      eexecBlock.stream,\n      true,\n      SEAC_ANALYSIS_ENABLED\n    );\n    var data = eexecBlockParser.extractFontProgram(properties);\n    for (const key in data.properties) {\n      properties[key] = data.properties[key];\n    }\n\n    var charstrings = data.charstrings;\n    var type2Charstrings = this.getType2Charstrings(charstrings);\n    var subrs = this.getType2Subrs(data.subrs);\n\n    this.charstrings = charstrings;\n    this.data = this.wrap(\n      name,\n      type2Charstrings,\n      this.charstrings,\n      subrs,\n      properties\n    );\n    this.seacs = this.getSeacs(data.charstrings);\n  }\n\n  Type1Font.prototype = {\n    get numGlyphs() {\n      return this.charstrings.length + 1;\n    },\n\n    getCharset: function Type1Font_getCharset() {\n      var charset = [\".notdef\"];\n      var charstrings = this.charstrings;\n      for (var glyphId = 0; glyphId < charstrings.length; glyphId++) {\n        charset.push(charstrings[glyphId].glyphName);\n      }\n      return charset;\n    },\n\n    getGlyphMapping: function Type1Font_getGlyphMapping(properties) {\n      var charstrings = this.charstrings;\n\n      if (properties.composite) {\n        const charCodeToGlyphId = Object.create(null);\n        // Map CIDs directly to GIDs.\n        for (\n          let glyphId = 0, charstringsLen = charstrings.length;\n          glyphId < charstringsLen;\n          glyphId++\n        ) {\n          const charCode = properties.cMap.charCodeOf(glyphId);\n          // Add 1 because glyph 0 is duplicated.\n          charCodeToGlyphId[charCode] = glyphId + 1;\n        }\n        return charCodeToGlyphId;\n      }\n\n      var glyphNames = [\".notdef\"],\n        glyphId;\n      for (glyphId = 0; glyphId < charstrings.length; glyphId++) {\n        glyphNames.push(charstrings[glyphId].glyphName);\n      }\n      var encoding = properties.builtInEncoding;\n      if (encoding) {\n        var builtInEncoding = Object.create(null);\n        for (var charCode in encoding) {\n          glyphId = glyphNames.indexOf(encoding[charCode]);\n          if (glyphId >= 0) {\n            builtInEncoding[charCode] = glyphId;\n          }\n        }\n      }\n\n      return type1FontGlyphMapping(properties, builtInEncoding, glyphNames);\n    },\n\n    hasGlyphId: function Type1Font_hasGlyphID(id) {\n      if (id < 0 || id >= this.numGlyphs) {\n        return false;\n      }\n      if (id === 0) {\n        // notdef is always defined.\n        return true;\n      }\n      var glyph = this.charstrings[id - 1];\n      return glyph.charstring.length > 0;\n    },\n\n    getSeacs: function Type1Font_getSeacs(charstrings) {\n      var i, ii;\n      var seacMap = [];\n      for (i = 0, ii = charstrings.length; i < ii; i++) {\n        var charstring = charstrings[i];\n        if (charstring.seac) {\n          // Offset by 1 for .notdef\n          seacMap[i + 1] = charstring.seac;\n        }\n      }\n      return seacMap;\n    },\n\n    getType2Charstrings: function Type1Font_getType2Charstrings(\n      type1Charstrings\n    ) {\n      var type2Charstrings = [];\n      for (var i = 0, ii = type1Charstrings.length; i < ii; i++) {\n        type2Charstrings.push(type1Charstrings[i].charstring);\n      }\n      return type2Charstrings;\n    },\n\n    getType2Subrs: function Type1Font_getType2Subrs(type1Subrs) {\n      var bias = 0;\n      var count = type1Subrs.length;\n      if (count < 1133) {\n        bias = 107;\n      } else if (count < 33769) {\n        bias = 1131;\n      } else {\n        bias = 32768;\n      }\n\n      // Add a bunch of empty subrs to deal with the Type2 bias\n      var type2Subrs = [];\n      var i;\n      for (i = 0; i < bias; i++) {\n        type2Subrs.push([0x0b]);\n      }\n\n      for (i = 0; i < count; i++) {\n        type2Subrs.push(type1Subrs[i]);\n      }\n\n      return type2Subrs;\n    },\n\n    wrap: function Type1Font_wrap(\n      name,\n      glyphs,\n      charstrings,\n      subrs,\n      properties\n    ) {\n      var cff = new CFF();\n      cff.header = new CFFHeader(1, 0, 4, 4);\n\n      cff.names = [name];\n\n      var topDict = new CFFTopDict();\n      // CFF strings IDs 0...390 are predefined names, so refering\n      // to entries in our own String INDEX starts at SID 391.\n      topDict.setByName(\"version\", 391);\n      topDict.setByName(\"Notice\", 392);\n      topDict.setByName(\"FullName\", 393);\n      topDict.setByName(\"FamilyName\", 394);\n      topDict.setByName(\"Weight\", 395);\n      topDict.setByName(\"Encoding\", null); // placeholder\n      topDict.setByName(\"FontMatrix\", properties.fontMatrix);\n      topDict.setByName(\"FontBBox\", properties.bbox);\n      topDict.setByName(\"charset\", null); // placeholder\n      topDict.setByName(\"CharStrings\", null); // placeholder\n      topDict.setByName(\"Private\", null); // placeholder\n      cff.topDict = topDict;\n\n      var strings = new CFFStrings();\n      strings.add(\"Version 0.11\"); // Version\n      strings.add(\"See original notice\"); // Notice\n      strings.add(name); // FullName\n      strings.add(name); // FamilyName\n      strings.add(\"Medium\"); // Weight\n      cff.strings = strings;\n\n      cff.globalSubrIndex = new CFFIndex();\n\n      var count = glyphs.length;\n      var charsetArray = [\".notdef\"];\n      var i, ii;\n      for (i = 0; i < count; i++) {\n        const glyphName = charstrings[i].glyphName;\n        const index = CFFStandardStrings.indexOf(glyphName);\n        if (index === -1) {\n          strings.add(glyphName);\n        }\n        charsetArray.push(glyphName);\n      }\n      cff.charset = new CFFCharset(false, 0, charsetArray);\n\n      var charStringsIndex = new CFFIndex();\n      charStringsIndex.add([0x8b, 0x0e]); // .notdef\n      for (i = 0; i < count; i++) {\n        charStringsIndex.add(glyphs[i]);\n      }\n      cff.charStrings = charStringsIndex;\n\n      var privateDict = new CFFPrivateDict();\n      privateDict.setByName(\"Subrs\", null); // placeholder\n      var fields = [\n        \"BlueValues\",\n        \"OtherBlues\",\n        \"FamilyBlues\",\n        \"FamilyOtherBlues\",\n        \"StemSnapH\",\n        \"StemSnapV\",\n        \"BlueShift\",\n        \"BlueFuzz\",\n        \"BlueScale\",\n        \"LanguageGroup\",\n        \"ExpansionFactor\",\n        \"ForceBold\",\n        \"StdHW\",\n        \"StdVW\",\n      ];\n      for (i = 0, ii = fields.length; i < ii; i++) {\n        var field = fields[i];\n        if (!(field in properties.privateData)) {\n          continue;\n        }\n        var value = properties.privateData[field];\n        if (Array.isArray(value)) {\n          // All of the private dictionary array data in CFF must be stored as\n          // \"delta-encoded\" numbers.\n          for (var j = value.length - 1; j > 0; j--) {\n            value[j] -= value[j - 1]; // ... difference from previous value\n          }\n        }\n        privateDict.setByName(field, value);\n      }\n      cff.topDict.privateDict = privateDict;\n\n      var subrIndex = new CFFIndex();\n      for (i = 0, ii = subrs.length; i < ii; i++) {\n        subrIndex.add(subrs[i]);\n      }\n      privateDict.subrsIndex = subrIndex;\n\n      var compiler = new CFFCompiler(cff);\n      return compiler.compile();\n    },\n  };\n\n  return Type1Font;\n})();\n\nvar CFFFont = (function CFFFontClosure() {\n  // eslint-disable-next-line no-shadow\n  function CFFFont(file, properties) {\n    this.properties = properties;\n\n    var parser = new CFFParser(file, properties, SEAC_ANALYSIS_ENABLED);\n    this.cff = parser.parse();\n    this.cff.duplicateFirstGlyph();\n    var compiler = new CFFCompiler(this.cff);\n    this.seacs = this.cff.seacs;\n    try {\n      this.data = compiler.compile();\n    } catch (e) {\n      warn(\"Failed to compile font \" + properties.loadedName);\n      // There may have just been an issue with the compiler, set the data\n      // anyway and hope the font loaded.\n      this.data = file;\n    }\n  }\n\n  CFFFont.prototype = {\n    get numGlyphs() {\n      return this.cff.charStrings.count;\n    },\n    getCharset: function CFFFont_getCharset() {\n      return this.cff.charset.charset;\n    },\n    getGlyphMapping: function CFFFont_getGlyphMapping() {\n      var cff = this.cff;\n      var properties = this.properties;\n      var charsets = cff.charset.charset;\n      var charCodeToGlyphId;\n      var glyphId;\n\n      if (properties.composite) {\n        charCodeToGlyphId = Object.create(null);\n        let charCode;\n        if (cff.isCIDFont) {\n          // If the font is actually a CID font then we should use the charset\n          // to map CIDs to GIDs.\n          for (glyphId = 0; glyphId < charsets.length; glyphId++) {\n            var cid = charsets[glyphId];\n            charCode = properties.cMap.charCodeOf(cid);\n            charCodeToGlyphId[charCode] = glyphId;\n          }\n        } else {\n          // If it is NOT actually a CID font then CIDs should be mapped\n          // directly to GIDs.\n          for (glyphId = 0; glyphId < cff.charStrings.count; glyphId++) {\n            charCode = properties.cMap.charCodeOf(glyphId);\n            charCodeToGlyphId[charCode] = glyphId;\n          }\n        }\n        return charCodeToGlyphId;\n      }\n\n      var encoding = cff.encoding ? cff.encoding.encoding : null;\n      charCodeToGlyphId = type1FontGlyphMapping(properties, encoding, charsets);\n      return charCodeToGlyphId;\n    },\n    hasGlyphId: function CFFFont_hasGlyphID(id) {\n      return this.cff.hasGlyphId(id);\n    },\n  };\n\n  return CFFFont;\n})();\n\nexport {\n  SEAC_ANALYSIS_ENABLED,\n  ErrorFont,\n  Font,\n  FontFlags,\n  ToUnicodeMap,\n  IdentityToUnicodeMap,\n  getFontType,\n};\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  bytesToString,\n  FormatError,\n  info,\n  stringToBytes,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport {\n  ExpertCharset,\n  ExpertSubsetCharset,\n  ISOAdobeCharset,\n} from \"./charsets.js\";\nimport { ExpertEncoding, StandardEncoding } from \"./encodings.js\";\n\n// Maximum subroutine call depth of type 2 chartrings. Matches OTS.\nvar MAX_SUBR_NESTING = 10;\n\n/**\n * The CFF class takes a Type1 file and wrap it into a\n * 'Compact Font Format' which itself embed Type2 charstrings.\n */\n// prettier-ignore\nvar CFFStandardStrings = [\n  \".notdef\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n  \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n  \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\",\n  \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\",\n  \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\",\n  \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\",\n  \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\",\n  \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\",\n  \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\",\n  \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"exclamdown\", \"cent\",\n  \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\",\n  \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\",\n  \"guilsinglright\", \"fi\", \"fl\", \"endash\", \"dagger\", \"daggerdbl\",\n  \"periodcentered\", \"paragraph\", \"bullet\", \"quotesinglbase\", \"quotedblbase\",\n  \"quotedblright\", \"guillemotright\", \"ellipsis\", \"perthousand\", \"questiondown\",\n  \"grave\", \"acute\", \"circumflex\", \"tilde\", \"macron\", \"breve\", \"dotaccent\",\n  \"dieresis\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\",\n  \"AE\", \"ordfeminine\", \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"ae\",\n  \"dotlessi\", \"lslash\", \"oslash\", \"oe\", \"germandbls\", \"onesuperior\",\n  \"logicalnot\", \"mu\", \"trademark\", \"Eth\", \"onehalf\", \"plusminus\", \"Thorn\",\n  \"onequarter\", \"divide\", \"brokenbar\", \"degree\", \"thorn\", \"threequarters\",\n  \"twosuperior\", \"registered\", \"minus\", \"eth\", \"multiply\", \"threesuperior\",\n  \"copyright\", \"Aacute\", \"Acircumflex\", \"Adieresis\", \"Agrave\", \"Aring\",\n  \"Atilde\", \"Ccedilla\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Egrave\",\n  \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Ntilde\", \"Oacute\",\n  \"Ocircumflex\", \"Odieresis\", \"Ograve\", \"Otilde\", \"Scaron\", \"Uacute\",\n  \"Ucircumflex\", \"Udieresis\", \"Ugrave\", \"Yacute\", \"Ydieresis\", \"Zcaron\",\n  \"aacute\", \"acircumflex\", \"adieresis\", \"agrave\", \"aring\", \"atilde\",\n  \"ccedilla\", \"eacute\", \"ecircumflex\", \"edieresis\", \"egrave\", \"iacute\",\n  \"icircumflex\", \"idieresis\", \"igrave\", \"ntilde\", \"oacute\", \"ocircumflex\",\n  \"odieresis\", \"ograve\", \"otilde\", \"scaron\", \"uacute\", \"ucircumflex\",\n  \"udieresis\", \"ugrave\", \"yacute\", \"ydieresis\", \"zcaron\", \"exclamsmall\",\n  \"Hungarumlautsmall\", \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\",\n  \"Acutesmall\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\",\n  \"onedotenleader\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\",\n  \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\",\n  \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"commasuperior\",\n  \"threequartersemdash\", \"periodsuperior\", \"questionsmall\", \"asuperior\",\n  \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\",\n  \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\",\n  \"tsuperior\", \"ff\", \"ffi\", \"ffl\", \"parenleftinferior\", \"parenrightinferior\",\n  \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\", \"Asmall\", \"Bsmall\",\n  \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\",\n  \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\",\n  \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\",\n  \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\",\n  \"Tildesmall\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\",\n  \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\", \"Caronsmall\",\n  \"Dotaccentsmall\", \"Macronsmall\", \"figuredash\", \"hypheninferior\",\n  \"Ogoneksmall\", \"Ringsmall\", \"Cedillasmall\", \"questiondownsmall\", \"oneeighth\",\n  \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\",\n  \"zerosuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\",\n  \"sevensuperior\", \"eightsuperior\", \"ninesuperior\", \"zeroinferior\",\n  \"oneinferior\", \"twoinferior\", \"threeinferior\", \"fourinferior\",\n  \"fiveinferior\", \"sixinferior\", \"seveninferior\", \"eightinferior\",\n  \"nineinferior\", \"centinferior\", \"dollarinferior\", \"periodinferior\",\n  \"commainferior\", \"Agravesmall\", \"Aacutesmall\", \"Acircumflexsmall\",\n  \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\",\n  \"Egravesmall\", \"Eacutesmall\", \"Ecircumflexsmall\", \"Edieresissmall\",\n  \"Igravesmall\", \"Iacutesmall\", \"Icircumflexsmall\", \"Idieresissmall\",\n  \"Ethsmall\", \"Ntildesmall\", \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\",\n  \"Otildesmall\", \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\",\n  \"Uacutesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\",\n  \"Thornsmall\", \"Ydieresissmall\", \"001.000\", \"001.001\", \"001.002\", \"001.003\",\n  \"Black\", \"Bold\", \"Book\", \"Light\", \"Medium\", \"Regular\", \"Roman\", \"Semibold\"\n];\n\nconst NUM_STANDARD_CFF_STRINGS = 391;\n\nvar CFFParser = (function CFFParserClosure() {\n  var CharstringValidationData = [\n    null,\n    { id: \"hstem\", min: 2, stackClearing: true, stem: true },\n    null,\n    { id: \"vstem\", min: 2, stackClearing: true, stem: true },\n    { id: \"vmoveto\", min: 1, stackClearing: true },\n    { id: \"rlineto\", min: 2, resetStack: true },\n    { id: \"hlineto\", min: 1, resetStack: true },\n    { id: \"vlineto\", min: 1, resetStack: true },\n    { id: \"rrcurveto\", min: 6, resetStack: true },\n    null,\n    { id: \"callsubr\", min: 1, undefStack: true },\n    { id: \"return\", min: 0, undefStack: true },\n    null, // 12\n    null,\n    { id: \"endchar\", min: 0, stackClearing: true },\n    null,\n    null,\n    null,\n    { id: \"hstemhm\", min: 2, stackClearing: true, stem: true },\n    { id: \"hintmask\", min: 0, stackClearing: true },\n    { id: \"cntrmask\", min: 0, stackClearing: true },\n    { id: \"rmoveto\", min: 2, stackClearing: true },\n    { id: \"hmoveto\", min: 1, stackClearing: true },\n    { id: \"vstemhm\", min: 2, stackClearing: true, stem: true },\n    { id: \"rcurveline\", min: 8, resetStack: true },\n    { id: \"rlinecurve\", min: 8, resetStack: true },\n    { id: \"vvcurveto\", min: 4, resetStack: true },\n    { id: \"hhcurveto\", min: 4, resetStack: true },\n    null, // shortint\n    { id: \"callgsubr\", min: 1, undefStack: true },\n    { id: \"vhcurveto\", min: 4, resetStack: true },\n    { id: \"hvcurveto\", min: 4, resetStack: true },\n  ];\n  var CharstringValidationData12 = [\n    null,\n    null,\n    null,\n    { id: \"and\", min: 2, stackDelta: -1 },\n    { id: \"or\", min: 2, stackDelta: -1 },\n    { id: \"not\", min: 1, stackDelta: 0 },\n    null,\n    null,\n    null,\n    { id: \"abs\", min: 1, stackDelta: 0 },\n    {\n      id: \"add\",\n      min: 2,\n      stackDelta: -1,\n      stackFn: function stack_div(stack, index) {\n        stack[index - 2] = stack[index - 2] + stack[index - 1];\n      },\n    },\n    {\n      id: \"sub\",\n      min: 2,\n      stackDelta: -1,\n      stackFn: function stack_div(stack, index) {\n        stack[index - 2] = stack[index - 2] - stack[index - 1];\n      },\n    },\n    {\n      id: \"div\",\n      min: 2,\n      stackDelta: -1,\n      stackFn: function stack_div(stack, index) {\n        stack[index - 2] = stack[index - 2] / stack[index - 1];\n      },\n    },\n    null,\n    {\n      id: \"neg\",\n      min: 1,\n      stackDelta: 0,\n      stackFn: function stack_div(stack, index) {\n        stack[index - 1] = -stack[index - 1];\n      },\n    },\n    { id: \"eq\", min: 2, stackDelta: -1 },\n    null,\n    null,\n    { id: \"drop\", min: 1, stackDelta: -1 },\n    null,\n    { id: \"put\", min: 2, stackDelta: -2 },\n    { id: \"get\", min: 1, stackDelta: 0 },\n    { id: \"ifelse\", min: 4, stackDelta: -3 },\n    { id: \"random\", min: 0, stackDelta: 1 },\n    {\n      id: \"mul\",\n      min: 2,\n      stackDelta: -1,\n      stackFn: function stack_div(stack, index) {\n        stack[index - 2] = stack[index - 2] * stack[index - 1];\n      },\n    },\n    null,\n    { id: \"sqrt\", min: 1, stackDelta: 0 },\n    { id: \"dup\", min: 1, stackDelta: 1 },\n    { id: \"exch\", min: 2, stackDelta: 0 },\n    { id: \"index\", min: 2, stackDelta: 0 },\n    { id: \"roll\", min: 3, stackDelta: -2 },\n    null,\n    null,\n    null,\n    { id: \"hflex\", min: 7, resetStack: true },\n    { id: \"flex\", min: 13, resetStack: true },\n    { id: \"hflex1\", min: 9, resetStack: true },\n    { id: \"flex1\", min: 11, resetStack: true },\n  ];\n\n  // eslint-disable-next-line no-shadow\n  function CFFParser(file, properties, seacAnalysisEnabled) {\n    this.bytes = file.getBytes();\n    this.properties = properties;\n    this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n  }\n  CFFParser.prototype = {\n    parse: function CFFParser_parse() {\n      var properties = this.properties;\n      var cff = new CFF();\n      this.cff = cff;\n\n      // The first five sections must be in order, all the others are reached\n      // via offsets contained in one of the below.\n      var header = this.parseHeader();\n      var nameIndex = this.parseIndex(header.endPos);\n      var topDictIndex = this.parseIndex(nameIndex.endPos);\n      var stringIndex = this.parseIndex(topDictIndex.endPos);\n      var globalSubrIndex = this.parseIndex(stringIndex.endPos);\n\n      var topDictParsed = this.parseDict(topDictIndex.obj.get(0));\n      var topDict = this.createDict(CFFTopDict, topDictParsed, cff.strings);\n\n      cff.header = header.obj;\n      cff.names = this.parseNameIndex(nameIndex.obj);\n      cff.strings = this.parseStringIndex(stringIndex.obj);\n      cff.topDict = topDict;\n      cff.globalSubrIndex = globalSubrIndex.obj;\n\n      this.parsePrivateDict(cff.topDict);\n\n      cff.isCIDFont = topDict.hasName(\"ROS\");\n\n      var charStringOffset = topDict.getByName(\"CharStrings\");\n      var charStringIndex = this.parseIndex(charStringOffset).obj;\n\n      var fontMatrix = topDict.getByName(\"FontMatrix\");\n      if (fontMatrix) {\n        properties.fontMatrix = fontMatrix;\n      }\n\n      var fontBBox = topDict.getByName(\"FontBBox\");\n      if (fontBBox) {\n        // adjusting ascent/descent\n        properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n        properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n        properties.ascentScaled = true;\n      }\n\n      var charset, encoding;\n      if (cff.isCIDFont) {\n        var fdArrayIndex = this.parseIndex(topDict.getByName(\"FDArray\")).obj;\n        for (var i = 0, ii = fdArrayIndex.count; i < ii; ++i) {\n          var dictRaw = fdArrayIndex.get(i);\n          var fontDict = this.createDict(\n            CFFTopDict,\n            this.parseDict(dictRaw),\n            cff.strings\n          );\n          this.parsePrivateDict(fontDict);\n          cff.fdArray.push(fontDict);\n        }\n        // cid fonts don't have an encoding\n        encoding = null;\n        charset = this.parseCharsets(\n          topDict.getByName(\"charset\"),\n          charStringIndex.count,\n          cff.strings,\n          true\n        );\n        cff.fdSelect = this.parseFDSelect(\n          topDict.getByName(\"FDSelect\"),\n          charStringIndex.count\n        );\n      } else {\n        charset = this.parseCharsets(\n          topDict.getByName(\"charset\"),\n          charStringIndex.count,\n          cff.strings,\n          false\n        );\n        encoding = this.parseEncoding(\n          topDict.getByName(\"Encoding\"),\n          properties,\n          cff.strings,\n          charset.charset\n        );\n      }\n\n      cff.charset = charset;\n      cff.encoding = encoding;\n\n      var charStringsAndSeacs = this.parseCharStrings({\n        charStrings: charStringIndex,\n        localSubrIndex: topDict.privateDict.subrsIndex,\n        globalSubrIndex: globalSubrIndex.obj,\n        fdSelect: cff.fdSelect,\n        fdArray: cff.fdArray,\n        privateDict: topDict.privateDict,\n      });\n      cff.charStrings = charStringsAndSeacs.charStrings;\n      cff.seacs = charStringsAndSeacs.seacs;\n      cff.widths = charStringsAndSeacs.widths;\n\n      return cff;\n    },\n    parseHeader: function CFFParser_parseHeader() {\n      var bytes = this.bytes;\n      var bytesLength = bytes.length;\n      var offset = 0;\n\n      // Prevent an infinite loop, by checking that the offset is within the\n      // bounds of the bytes array. Necessary in empty, or invalid, font files.\n      while (offset < bytesLength && bytes[offset] !== 1) {\n        ++offset;\n      }\n      if (offset >= bytesLength) {\n        throw new FormatError(\"Invalid CFF header\");\n      }\n      if (offset !== 0) {\n        info(\"cff data is shifted\");\n        bytes = bytes.subarray(offset);\n        this.bytes = bytes;\n      }\n      var major = bytes[0];\n      var minor = bytes[1];\n      var hdrSize = bytes[2];\n      var offSize = bytes[3];\n      var header = new CFFHeader(major, minor, hdrSize, offSize);\n      return { obj: header, endPos: hdrSize };\n    },\n    parseDict: function CFFParser_parseDict(dict) {\n      var pos = 0;\n\n      function parseOperand() {\n        var value = dict[pos++];\n        if (value === 30) {\n          return parseFloatOperand();\n        } else if (value === 28) {\n          value = dict[pos++];\n          value = ((value << 24) | (dict[pos++] << 16)) >> 16;\n          return value;\n        } else if (value === 29) {\n          value = dict[pos++];\n          value = (value << 8) | dict[pos++];\n          value = (value << 8) | dict[pos++];\n          value = (value << 8) | dict[pos++];\n          return value;\n        } else if (value >= 32 && value <= 246) {\n          return value - 139;\n        } else if (value >= 247 && value <= 250) {\n          return (value - 247) * 256 + dict[pos++] + 108;\n        } else if (value >= 251 && value <= 254) {\n          return -((value - 251) * 256) - dict[pos++] - 108;\n        }\n        warn('CFFParser_parseDict: \"' + value + '\" is a reserved command.');\n        return NaN;\n      }\n\n      function parseFloatOperand() {\n        var str = \"\";\n        var eof = 15;\n        // prettier-ignore\n        const lookup = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\",\n                        \"9\", \".\", \"E\", \"E-\", null, \"-\"];\n        var length = dict.length;\n        while (pos < length) {\n          var b = dict[pos++];\n          var b1 = b >> 4;\n          var b2 = b & 15;\n\n          if (b1 === eof) {\n            break;\n          }\n          str += lookup[b1];\n\n          if (b2 === eof) {\n            break;\n          }\n          str += lookup[b2];\n        }\n        return parseFloat(str);\n      }\n\n      var operands = [];\n      var entries = [];\n\n      pos = 0;\n      var end = dict.length;\n      while (pos < end) {\n        var b = dict[pos];\n        if (b <= 21) {\n          if (b === 12) {\n            b = (b << 8) | dict[++pos];\n          }\n          entries.push([b, operands]);\n          operands = [];\n          ++pos;\n        } else {\n          operands.push(parseOperand());\n        }\n      }\n      return entries;\n    },\n    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        // add 1 for offset to determine size of last object\n        var startPos = pos + (count + 1) * offsetSize - 1;\n\n        for (i = 0, ii = count + 1; i < ii; ++i) {\n          var offset = 0;\n          for (var j = 0; j < offsetSize; ++j) {\n            offset <<= 8;\n            offset += bytes[pos++];\n          }\n          offsets.push(startPos + offset);\n        }\n        end = offsets[count];\n      }\n      for (i = 0, ii = offsets.length - 1; i < ii; ++i) {\n        var offsetStart = offsets[i];\n        var offsetEnd = offsets[i + 1];\n        cffIndex.add(bytes.subarray(offsetStart, offsetEnd));\n      }\n      return { obj: cffIndex, endPos: end };\n    },\n    parseNameIndex: function CFFParser_parseNameIndex(index) {\n      var names = [];\n      for (var i = 0, ii = index.count; i < ii; ++i) {\n        var name = index.get(i);\n        names.push(bytesToString(name));\n      }\n      return names;\n    },\n    parseStringIndex: function CFFParser_parseStringIndex(index) {\n      var strings = new CFFStrings();\n      for (var i = 0, ii = index.count; i < ii; ++i) {\n        var data = index.get(i);\n        strings.add(bytesToString(data));\n      }\n      return strings;\n    },\n    createDict: function CFFParser_createDict(Type, dict, strings) {\n      var cffDict = new Type(strings);\n      for (var i = 0, ii = dict.length; i < ii; ++i) {\n        var pair = dict[i];\n        var key = pair[0];\n        var value = pair[1];\n        cffDict.setByKey(key, value);\n      }\n      return cffDict;\n    },\n    parseCharString: function CFFParser_parseCharString(\n      state,\n      data,\n      localSubrIndex,\n      globalSubrIndex\n    ) {\n      if (!data || state.callDepth > MAX_SUBR_NESTING) {\n        return false;\n      }\n      var stackSize = state.stackSize;\n      var stack = state.stack;\n\n      var length = data.length;\n\n      for (var j = 0; j < length; ) {\n        var value = data[j++];\n        var validationCommand = null;\n        if (value === 12) {\n          var q = data[j++];\n          if (q === 0) {\n            // The CFF specification state that the 'dotsection' command\n            // (12, 0) is deprecated and treated as a no-op, but all Type2\n            // charstrings processors should support them. Unfortunately\n            // the font sanitizer don't. As a workaround the sequence (12, 0)\n            // is replaced by a useless (0, hmoveto).\n            data[j - 2] = 139;\n            data[j - 1] = 22;\n            stackSize = 0;\n          } else {\n            validationCommand = CharstringValidationData12[q];\n          }\n        } else if (value === 28) {\n          // number (16 bit)\n          stack[stackSize] = ((data[j] << 24) | (data[j + 1] << 16)) >> 16;\n          j += 2;\n          stackSize++;\n        } else if (value === 14) {\n          if (stackSize >= 4) {\n            stackSize -= 4;\n            if (this.seacAnalysisEnabled) {\n              state.seac = stack.slice(stackSize, stackSize + 4);\n              return false;\n            }\n          }\n          validationCommand = CharstringValidationData[value];\n        } else if (value >= 32 && value <= 246) {\n          // number\n          stack[stackSize] = value - 139;\n          stackSize++;\n        } else if (value >= 247 && value <= 254) {\n          // number (+1 bytes)\n          stack[stackSize] =\n            value < 251\n              ? ((value - 247) << 8) + data[j] + 108\n              : -((value - 251) << 8) - data[j] - 108;\n          j++;\n          stackSize++;\n        } else if (value === 255) {\n          // number (32 bit)\n          stack[stackSize] =\n            ((data[j] << 24) |\n              (data[j + 1] << 16) |\n              (data[j + 2] << 8) |\n              data[j + 3]) /\n            65536;\n          j += 4;\n          stackSize++;\n        } else if (value === 19 || value === 20) {\n          state.hints += stackSize >> 1;\n          // skipping right amount of hints flag data\n          j += (state.hints + 7) >> 3;\n          stackSize %= 2;\n          validationCommand = CharstringValidationData[value];\n        } else if (value === 10 || value === 29) {\n          var subrsIndex;\n          if (value === 10) {\n            subrsIndex = localSubrIndex;\n          } else {\n            subrsIndex = globalSubrIndex;\n          }\n          if (!subrsIndex) {\n            validationCommand = CharstringValidationData[value];\n            warn(\"Missing subrsIndex for \" + validationCommand.id);\n            return false;\n          }\n          var bias = 32768;\n          if (subrsIndex.count < 1240) {\n            bias = 107;\n          } else if (subrsIndex.count < 33900) {\n            bias = 1131;\n          }\n          var subrNumber = stack[--stackSize] + bias;\n          if (\n            subrNumber < 0 ||\n            subrNumber >= subrsIndex.count ||\n            isNaN(subrNumber)\n          ) {\n            validationCommand = CharstringValidationData[value];\n            warn(\"Out of bounds subrIndex for \" + validationCommand.id);\n            return false;\n          }\n          state.stackSize = stackSize;\n          state.callDepth++;\n          var valid = this.parseCharString(\n            state,\n            subrsIndex.get(subrNumber),\n            localSubrIndex,\n            globalSubrIndex\n          );\n          if (!valid) {\n            return false;\n          }\n          state.callDepth--;\n          stackSize = state.stackSize;\n          continue;\n        } else if (value === 11) {\n          state.stackSize = stackSize;\n          return true;\n        } else {\n          validationCommand = CharstringValidationData[value];\n        }\n        if (validationCommand) {\n          if (validationCommand.stem) {\n            state.hints += stackSize >> 1;\n            if (value === 3 || value === 23) {\n              // vstem or vstemhm.\n              state.hasVStems = true;\n            } else if (state.hasVStems && (value === 1 || value === 18)) {\n              // Some browsers don't draw glyphs that specify vstems before\n              // hstems. As a workaround, replace hstem (1) and hstemhm (18)\n              // with a pointless vstem (3) or vstemhm (23).\n              warn(\"CFF stem hints are in wrong order\");\n              data[j - 1] = value === 1 ? 3 : 23;\n            }\n          }\n          if (\"min\" in validationCommand) {\n            if (!state.undefStack && stackSize < validationCommand.min) {\n              warn(\n                \"Not enough parameters for \" +\n                  validationCommand.id +\n                  \"; actual: \" +\n                  stackSize +\n                  \", expected: \" +\n                  validationCommand.min\n              );\n              return false;\n            }\n          }\n          if (state.firstStackClearing && validationCommand.stackClearing) {\n            state.firstStackClearing = false;\n            // the optional character width can be found before the first\n            // stack-clearing command arguments\n            stackSize -= validationCommand.min;\n            if (stackSize >= 2 && validationCommand.stem) {\n              // there are even amount of arguments for stem commands\n              stackSize %= 2;\n            } else if (stackSize > 1) {\n              warn(\"Found too many parameters for stack-clearing command\");\n            }\n            if (stackSize > 0 && stack[stackSize - 1] >= 0) {\n              state.width = stack[stackSize - 1];\n            }\n          }\n          if (\"stackDelta\" in validationCommand) {\n            if (\"stackFn\" in validationCommand) {\n              validationCommand.stackFn(stack, stackSize);\n            }\n            stackSize += validationCommand.stackDelta;\n          } else if (validationCommand.stackClearing) {\n            stackSize = 0;\n          } else if (validationCommand.resetStack) {\n            stackSize = 0;\n            state.undefStack = false;\n          } else if (validationCommand.undefStack) {\n            stackSize = 0;\n            state.undefStack = true;\n            state.firstStackClearing = false;\n          }\n        }\n      }\n      state.stackSize = stackSize;\n      return true;\n    },\n    parseCharStrings({\n      charStrings,\n      localSubrIndex,\n      globalSubrIndex,\n      fdSelect,\n      fdArray,\n      privateDict,\n    }) {\n      var seacs = [];\n      var widths = [];\n      var count = charStrings.count;\n      for (var i = 0; i < count; i++) {\n        var charstring = charStrings.get(i);\n        var state = {\n          callDepth: 0,\n          stackSize: 0,\n          stack: [],\n          undefStack: true,\n          hints: 0,\n          firstStackClearing: true,\n          seac: null,\n          width: null,\n          hasVStems: false,\n        };\n        var valid = true;\n        var localSubrToUse = null;\n        var privateDictToUse = privateDict;\n        if (fdSelect && fdArray.length) {\n          var fdIndex = fdSelect.getFDIndex(i);\n          if (fdIndex === -1) {\n            warn(\"Glyph index is not in fd select.\");\n            valid = false;\n          }\n          if (fdIndex >= fdArray.length) {\n            warn(\"Invalid fd index for glyph index.\");\n            valid = false;\n          }\n          if (valid) {\n            privateDictToUse = fdArray[fdIndex].privateDict;\n            localSubrToUse = privateDictToUse.subrsIndex;\n          }\n        } else if (localSubrIndex) {\n          localSubrToUse = localSubrIndex;\n        }\n        if (valid) {\n          valid = this.parseCharString(\n            state,\n            charstring,\n            localSubrToUse,\n            globalSubrIndex\n          );\n        }\n        if (state.width !== null) {\n          const nominalWidth = privateDictToUse.getByName(\"nominalWidthX\");\n          widths[i] = nominalWidth + state.width;\n        } else {\n          const defaultWidth = privateDictToUse.getByName(\"defaultWidthX\");\n          widths[i] = defaultWidth;\n        }\n        if (state.seac !== null) {\n          seacs[i] = state.seac;\n        }\n        if (!valid) {\n          // resetting invalid charstring to single 'endchar'\n          charStrings.set(i, new Uint8Array([14]));\n        }\n      }\n      return { charStrings, seacs, widths };\n    },\n    emptyPrivateDictionary: function CFFParser_emptyPrivateDictionary(\n      parentDict\n    ) {\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      // no private dict, do nothing\n      if (!parentDict.hasName(\"Private\")) {\n        this.emptyPrivateDictionary(parentDict);\n        return;\n      }\n      var privateOffset = parentDict.getByName(\"Private\");\n      // make sure the params are formatted correctly\n      if (!Array.isArray(privateOffset) || privateOffset.length !== 2) {\n        parentDict.removeByName(\"Private\");\n        return;\n      }\n      var size = privateOffset[0];\n      var offset = privateOffset[1];\n      // remove empty dicts or ones that refer to invalid location\n      if (size === 0 || offset >= this.bytes.length) {\n        this.emptyPrivateDictionary(parentDict);\n        return;\n      }\n\n      var privateDictEnd = offset + size;\n      var dictData = this.bytes.subarray(offset, privateDictEnd);\n      var dict = this.parseDict(dictData);\n      var privateDict = this.createDict(\n        CFFPrivateDict,\n        dict,\n        parentDict.strings\n      );\n      parentDict.privateDict = privateDict;\n\n      // Parse the Subrs index also since it's relative to the private dict.\n      if (!privateDict.getByName(\"Subrs\")) {\n        return;\n      }\n      var subrsOffset = privateDict.getByName(\"Subrs\");\n      var relativeOffset = offset + subrsOffset;\n      // Validate the offset.\n      if (subrsOffset === 0 || relativeOffset >= this.bytes.length) {\n        this.emptyPrivateDictionary(parentDict);\n        return;\n      }\n      var subrsIndex = this.parseIndex(relativeOffset);\n      privateDict.subrsIndex = subrsIndex.obj;\n    },\n    parseCharsets: function CFFParser_parseCharsets(pos, length, strings, cid) {\n      if (pos === 0) {\n        return new CFFCharset(\n          true,\n          CFFCharsetPredefinedTypes.ISO_ADOBE,\n          ISOAdobeCharset\n        );\n      } else if (pos === 1) {\n        return new CFFCharset(\n          true,\n          CFFCharsetPredefinedTypes.EXPERT,\n          ExpertCharset\n        );\n      } else if (pos === 2) {\n        return new CFFCharset(\n          true,\n          CFFCharsetPredefinedTypes.EXPERT_SUBSET,\n          ExpertSubsetCharset\n        );\n      }\n\n      var bytes = this.bytes;\n      var start = pos;\n      var format = bytes[pos++];\n      const charset = [cid ? 0 : \".notdef\"];\n      var id, count, i;\n\n      // subtract 1 for the .notdef glyph\n      length -= 1;\n\n      switch (format) {\n        case 0:\n          for (i = 0; i < length; i++) {\n            id = (bytes[pos++] << 8) | bytes[pos++];\n            charset.push(cid ? id : strings.get(id));\n          }\n          break;\n        case 1:\n          while (charset.length <= length) {\n            id = (bytes[pos++] << 8) | bytes[pos++];\n            count = bytes[pos++];\n            for (i = 0; i <= count; i++) {\n              charset.push(cid ? id++ : strings.get(id++));\n            }\n          }\n          break;\n        case 2:\n          while (charset.length <= length) {\n            id = (bytes[pos++] << 8) | bytes[pos++];\n            count = (bytes[pos++] << 8) | bytes[pos++];\n            for (i = 0; i <= count; i++) {\n              charset.push(cid ? id++ : strings.get(id++));\n            }\n          }\n          break;\n        default:\n          throw new FormatError(\"Unknown charset format\");\n      }\n      // Raw won't be needed if we actually compile the charset.\n      var end = pos;\n      var raw = bytes.subarray(start, end);\n\n      return new CFFCharset(false, format, charset, raw);\n    },\n    parseEncoding: function CFFParser_parseEncoding(\n      pos,\n      properties,\n      strings,\n      charset\n    ) {\n      var encoding = Object.create(null);\n      var bytes = this.bytes;\n      var predefined = false;\n      var format, i, ii;\n      var raw = null;\n\n      function readSupplement() {\n        var supplementsCount = bytes[pos++];\n        for (i = 0; i < supplementsCount; i++) {\n          var code = bytes[pos++];\n          var sid = (bytes[pos++] << 8) + (bytes[pos++] & 0xff);\n          encoding[code] = charset.indexOf(strings.get(sid));\n        }\n      }\n\n      if (pos === 0 || pos === 1) {\n        predefined = true;\n        format = pos;\n        var baseEncoding = pos ? ExpertEncoding : StandardEncoding;\n        for (i = 0, ii = charset.length; i < ii; i++) {\n          var index = baseEncoding.indexOf(charset[i]);\n          if (index !== -1) {\n            encoding[index] = i;\n          }\n        }\n      } else {\n        var dataStart = pos;\n        format = bytes[pos++];\n        switch (format & 0x7f) {\n          case 0:\n            var glyphsCount = bytes[pos++];\n            for (i = 1; i <= glyphsCount; i++) {\n              encoding[bytes[pos++]] = i;\n            }\n            break;\n\n          case 1:\n            var rangesCount = bytes[pos++];\n            var gid = 1;\n            for (i = 0; i < rangesCount; i++) {\n              var start = bytes[pos++];\n              var left = bytes[pos++];\n              for (var j = start; j <= start + left; j++) {\n                encoding[j] = gid++;\n              }\n            }\n            break;\n\n          default:\n            throw new FormatError(`Unknown encoding format: ${format} in CFF`);\n        }\n        var dataEnd = pos;\n        if (format & 0x80) {\n          // hasSupplement\n          // The font sanitizer does not support CFF encoding with a\n          // supplement, since the encoding is not really used to map\n          // between gid to glyph, let's overwrite what is declared in\n          // the top dictionary to let the sanitizer think the font use\n          // StandardEncoding, that's a lie but that's ok.\n          bytes[dataStart] &= 0x7f;\n          readSupplement();\n        }\n        raw = bytes.subarray(dataStart, dataEnd);\n      }\n      format = format & 0x7f;\n      return new CFFEncoding(predefined, format, encoding, raw);\n    },\n    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          break;\n        case 3:\n          var rangesCount = (bytes[pos++] << 8) | bytes[pos++];\n          for (i = 0; i < rangesCount; ++i) {\n            var first = (bytes[pos++] << 8) | bytes[pos++];\n            if (i === 0 && first !== 0) {\n              warn(\n                \"parseFDSelect: The first range must have a first GID of 0\" +\n                  \" -- trying to recover.\"\n              );\n              first = 0;\n            }\n            var fdIndex = bytes[pos++];\n            var next = (bytes[pos] << 8) | bytes[pos + 1];\n            for (var j = first; j < next; ++j) {\n              fdSelect.push(fdIndex);\n            }\n          }\n          // Advance past the sentinel(next).\n          pos += 2;\n          break;\n        default:\n          throw new FormatError(`parseFDSelect: Unknown format \"${format}\".`);\n      }\n      if (fdSelect.length !== length) {\n        throw new FormatError(\"parseFDSelect: Invalid font data.\");\n      }\n\n      return new CFFFDSelect(format, fdSelect);\n    },\n  };\n  return CFFParser;\n})();\n\n// Compact Font Format\nvar CFF = (function CFFClosure() {\n  // eslint-disable-next-line no-shadow\n  function CFF() {\n    this.header = null;\n    this.names = [];\n    this.topDict = null;\n    this.strings = new CFFStrings();\n    this.globalSubrIndex = null;\n\n    // The following could really be per font, but since we only have one font\n    // store them here.\n    this.encoding = null;\n    this.charset = null;\n    this.charStrings = null;\n    this.fdArray = [];\n    this.fdSelect = null;\n\n    this.isCIDFont = false;\n  }\n  CFF.prototype = {\n    duplicateFirstGlyph: function CFF_duplicateFirstGlyph() {\n      // Browsers will not display a glyph at position 0. Typically glyph 0 is\n      // notdef, but a number of fonts put a valid glyph there so it must be\n      // duplicated and appended.\n      if (this.charStrings.count >= 65535) {\n        warn(\"Not enough space in charstrings to duplicate first glyph.\");\n        return;\n      }\n      var glyphZero = this.charStrings.get(0);\n      this.charStrings.add(glyphZero);\n      if (this.isCIDFont) {\n        this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0]);\n      }\n    },\n    hasGlyphId: function CFF_hasGlyphID(id) {\n      if (id < 0 || id >= this.charStrings.count) {\n        return false;\n      }\n      var glyph = this.charStrings.get(id);\n      return glyph.length > 0;\n    },\n  };\n\n  return CFF;\n})();\n\nvar CFFHeader = (function CFFHeaderClosure() {\n  // eslint-disable-next-line no-shadow\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  return CFFHeader;\n})();\n\nvar CFFStrings = (function CFFStringsClosure() {\n  // eslint-disable-next-line no-shadow\n  function CFFStrings() {\n    this.strings = [];\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      if (index - NUM_STANDARD_CFF_STRINGS <= this.strings.length) {\n        return this.strings[index - NUM_STANDARD_CFF_STRINGS];\n      }\n      return CFFStandardStrings[0];\n    },\n    getSID: function CFFStrings_getSID(str) {\n      let index = CFFStandardStrings.indexOf(str);\n      if (index !== -1) {\n        return index;\n      }\n      index = this.strings.indexOf(str);\n      if (index !== -1) {\n        return index + NUM_STANDARD_CFF_STRINGS;\n      }\n      return -1;\n    },\n    add: function CFFStrings_add(value) {\n      this.strings.push(value);\n    },\n    get count() {\n      return this.strings.length;\n    },\n  };\n  return CFFStrings;\n})();\n\nvar CFFIndex = (function CFFIndexClosure() {\n  // eslint-disable-next-line no-shadow\n  function CFFIndex() {\n    this.objects = [];\n    this.length = 0;\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    get count() {\n      return this.objects.length;\n    },\n  };\n  return CFFIndex;\n})();\n\nvar CFFDict = (function CFFDictClosure() {\n  // eslint-disable-next-line no-shadow\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  CFFDict.prototype = {\n    // value should always be an array\n    setByKey: function CFFDict_setByKey(key, value) {\n      if (!(key in this.keyToNameMap)) {\n        return false;\n      }\n      var valueLength = value.length;\n      // ignore empty values\n      if (valueLength === 0) {\n        return true;\n      }\n      // Ignore invalid values (fixes bug1068432.pdf and bug1308536.pdf).\n      for (var i = 0; i < valueLength; i++) {\n        if (isNaN(value[i])) {\n          warn('Invalid CFFDict value: \"' + value + '\" for key \"' + key + '\".');\n          return true;\n        }\n      }\n      var type = this.types[key];\n      // remove the array wrapping these types of values\n      if (type === \"num\" || type === \"sid\" || type === \"offset\") {\n        value = value[0];\n      }\n      this.values[key] = value;\n      return true;\n    },\n    setByName: function CFFDict_setByName(name, value) {\n      if (!(name in this.nameToKeyMap)) {\n        throw new FormatError(`Invalid dictionary name \"${name}\"`);\n      }\n      this.values[this.nameToKeyMap[name]] = value;\n    },\n    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 FormatError(`Invalid dictionary name ${name}\"`);\n      }\n      var key = this.nameToKeyMap[name];\n      if (!(key in this.values)) {\n        return this.defaults[key];\n      }\n      return this.values[key];\n    },\n    removeByName: function CFFDict_removeByName(name) {\n      delete this.values[this.nameToKeyMap[name]];\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    for (var i = 0, ii = layout.length; i < ii; ++i) {\n      var entry = layout[i];\n      var key = Array.isArray(entry[0])\n        ? (entry[0][0] << 8) + entry[0][1]\n        : entry[0];\n      tables.keyToNameMap[key] = entry[1];\n      tables.nameToKeyMap[entry[1]] = key;\n      tables.types[key] = entry[2];\n      tables.defaults[key] = entry[3];\n      tables.opcodes[key] = Array.isArray(entry[0]) ? entry[0] : [entry[0]];\n      tables.order.push(key);\n    }\n    return tables;\n  };\n  return CFFDict;\n})();\n\nvar CFFTopDict = (function CFFTopDictClosure() {\n  var layout = [\n    [[12, 30], \"ROS\", [\"sid\", \"sid\", \"num\"], null],\n    [[12, 20], \"SyntheticBase\", \"num\", null],\n    [0, \"version\", \"sid\", null],\n    [1, \"Notice\", \"sid\", null],\n    [[12, 0], \"Copyright\", \"sid\", null],\n    [2, \"FullName\", \"sid\", null],\n    [3, \"FamilyName\", \"sid\", null],\n    [4, \"Weight\", \"sid\", null],\n    [[12, 1], \"isFixedPitch\", \"num\", 0],\n    [[12, 2], \"ItalicAngle\", \"num\", 0],\n    [[12, 3], \"UnderlinePosition\", \"num\", -100],\n    [[12, 4], \"UnderlineThickness\", \"num\", 50],\n    [[12, 5], \"PaintType\", \"num\", 0],\n    [[12, 6], \"CharstringType\", \"num\", 2],\n    // prettier-ignore\n    [[12, 7], \"FontMatrix\", [\"num\", \"num\", \"num\", \"num\", \"num\", \"num\"],\n                            [0.001, 0, 0, 0.001, 0, 0]],\n    [13, \"UniqueID\", \"num\", null],\n    [5, \"FontBBox\", [\"num\", \"num\", \"num\", \"num\"], [0, 0, 0, 0]],\n    [[12, 8], \"StrokeWidth\", \"num\", 0],\n    [14, \"XUID\", \"array\", null],\n    [15, \"charset\", \"offset\", 0],\n    [16, \"Encoding\", \"offset\", 0],\n    [17, \"CharStrings\", \"offset\", 0],\n    [18, \"Private\", [\"offset\", \"offset\"], null],\n    [[12, 21], \"PostScript\", \"sid\", null],\n    [[12, 22], \"BaseFontName\", \"sid\", null],\n    [[12, 23], \"BaseFontBlend\", \"delta\", null],\n    [[12, 31], \"CIDFontVersion\", \"num\", 0],\n    [[12, 32], \"CIDFontRevision\", \"num\", 0],\n    [[12, 33], \"CIDFontType\", \"num\", 0],\n    [[12, 34], \"CIDCount\", \"num\", 8720],\n    [[12, 35], \"UIDBase\", \"num\", null],\n    // XXX: CID Fonts on DirectWrite 6.1 only seem to work if FDSelect comes\n    // before FDArray.\n    [[12, 37], \"FDSelect\", \"offset\", null],\n    [[12, 36], \"FDArray\", \"offset\", null],\n    [[12, 38], \"FontName\", \"sid\", null],\n  ];\n  var tables = null;\n\n  // eslint-disable-next-line no-shadow\n  function CFFTopDict(strings) {\n    if (tables === null) {\n      tables = CFFDict.createTables(layout);\n    }\n    CFFDict.call(this, tables, strings);\n    this.privateDict = null;\n  }\n  CFFTopDict.prototype = Object.create(CFFDict.prototype);\n  return CFFTopDict;\n})();\n\nvar CFFPrivateDict = (function CFFPrivateDictClosure() {\n  var layout = [\n    [6, \"BlueValues\", \"delta\", null],\n    [7, \"OtherBlues\", \"delta\", null],\n    [8, \"FamilyBlues\", \"delta\", null],\n    [9, \"FamilyOtherBlues\", \"delta\", null],\n    [[12, 9], \"BlueScale\", \"num\", 0.039625],\n    [[12, 10], \"BlueShift\", \"num\", 7],\n    [[12, 11], \"BlueFuzz\", \"num\", 1],\n    [10, \"StdHW\", \"num\", null],\n    [11, \"StdVW\", \"num\", null],\n    [[12, 12], \"StemSnapH\", \"delta\", null],\n    [[12, 13], \"StemSnapV\", \"delta\", null],\n    [[12, 14], \"ForceBold\", \"num\", 0],\n    [[12, 17], \"LanguageGroup\", \"num\", 0],\n    [[12, 18], \"ExpansionFactor\", \"num\", 0.06],\n    [[12, 19], \"initialRandomSeed\", \"num\", 0],\n    [20, \"defaultWidthX\", \"num\", 0],\n    [21, \"nominalWidthX\", \"num\", 0],\n    [19, \"Subrs\", \"offset\", null],\n  ];\n  var tables = null;\n\n  // eslint-disable-next-line no-shadow\n  function CFFPrivateDict(strings) {\n    if (tables === null) {\n      tables = CFFDict.createTables(layout);\n    }\n    CFFDict.call(this, tables, strings);\n    this.subrsIndex = null;\n  }\n  CFFPrivateDict.prototype = Object.create(CFFDict.prototype);\n  return CFFPrivateDict;\n})();\n\nvar CFFCharsetPredefinedTypes = {\n  ISO_ADOBE: 0,\n  EXPERT: 1,\n  EXPERT_SUBSET: 2,\n};\nvar CFFCharset = (function CFFCharsetClosure() {\n  // eslint-disable-next-line no-shadow\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  return CFFCharset;\n})();\n\nvar CFFEncoding = (function CFFEncodingClosure() {\n  // eslint-disable-next-line no-shadow\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  return CFFEncoding;\n})();\n\nvar CFFFDSelect = (function CFFFDSelectClosure() {\n  // eslint-disable-next-line no-shadow\n  function CFFFDSelect(format, fdSelect) {\n    this.format = format;\n    this.fdSelect = fdSelect;\n  }\n  CFFFDSelect.prototype = {\n    getFDIndex: function CFFFDSelect_get(glyphIndex) {\n      if (glyphIndex < 0 || glyphIndex >= this.fdSelect.length) {\n        return -1;\n      }\n      return this.fdSelect[glyphIndex];\n    },\n  };\n  return CFFFDSelect;\n})();\n\n// Helper class to keep track of where an offset is within the data and helps\n// filling in that offset once it's known.\nvar CFFOffsetTracker = (function CFFOffsetTrackerClosure() {\n  // eslint-disable-next-line no-shadow\n  function CFFOffsetTracker() {\n    this.offsets = Object.create(null);\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 FormatError(`Already tracking location of ${key}`);\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(\n      key,\n      values,\n      output\n    ) {\n      if (!(key in this.offsets)) {\n        throw new FormatError(`Not tracking location of ${key}`);\n      }\n      var data = output.data;\n      var dataOffset = this.offsets[key];\n      var size = 5;\n      for (var i = 0, ii = values.length; i < ii; ++i) {\n        var offset0 = i * size + dataOffset;\n        var offset1 = offset0 + 1;\n        var offset2 = offset0 + 2;\n        var offset3 = offset0 + 3;\n        var offset4 = offset0 + 4;\n        // It's easy to screw up offsets so perform this sanity check.\n        if (\n          data[offset0] !== 0x1d ||\n          data[offset1] !== 0 ||\n          data[offset2] !== 0 ||\n          data[offset3] !== 0 ||\n          data[offset4] !== 0\n        ) {\n          throw new FormatError(\"writing to an offset that is not empty\");\n        }\n        var value = values[i];\n        data[offset0] = 0x1d;\n        data[offset1] = (value >> 24) & 0xff;\n        data[offset2] = (value >> 16) & 0xff;\n        data[offset3] = (value >> 8) & 0xff;\n        data[offset4] = value & 0xff;\n      }\n    },\n  };\n  return CFFOffsetTracker;\n})();\n\n// Takes a CFF and converts it to the binary representation.\nvar CFFCompiler = (function CFFCompilerClosure() {\n  // eslint-disable-next-line no-shadow\n  function CFFCompiler(cff) {\n    this.cff = cff;\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\n      // Compile the five entries that must be in order.\n      var header = this.compileHeader(cff.header);\n      output.add(header);\n\n      var nameIndex = this.compileNameIndex(cff.names);\n      output.add(nameIndex);\n\n      if (cff.isCIDFont) {\n        // The spec is unclear on how font matrices should relate to each other\n        // when there is one in the main top dict and the sub top dicts.\n        // Windows handles this differently than linux and osx so we have to\n        // normalize to work on all.\n        // Rules based off of some mailing list discussions:\n        // - If main font has a matrix and subfont doesn't, use the main matrix.\n        // - If no main font matrix and there is a subfont matrix, use the\n        //   subfont matrix.\n        // - If both have matrices, concat together.\n        // - If neither have matrices, use default.\n        // To make this work on all platforms we move the top matrix into each\n        // sub top dict and concat if necessary.\n        if (cff.topDict.hasName(\"FontMatrix\")) {\n          var base = cff.topDict.getByName(\"FontMatrix\");\n          cff.topDict.removeByName(\"FontMatrix\");\n          for (var i = 0, ii = cff.fdArray.length; i < ii; i++) {\n            var subDict = cff.fdArray[i];\n            var matrix = base.slice(0);\n            if (subDict.hasName(\"FontMatrix\")) {\n              matrix = Util.transform(matrix, subDict.getByName(\"FontMatrix\"));\n            }\n            subDict.setByName(\"FontMatrix\", matrix);\n          }\n        }\n      }\n\n      cff.topDict.setByName(\"charset\", 0);\n      var compiled = this.compileTopDicts(\n        [cff.topDict],\n        output.length,\n        cff.isCIDFont\n      );\n      output.add(compiled.output);\n      var topDictTracker = compiled.trackers[0];\n\n      var stringIndex = this.compileStringIndex(cff.strings.strings);\n      output.add(stringIndex);\n\n      var globalSubrIndex = this.compileIndex(cff.globalSubrIndex);\n      output.add(globalSubrIndex);\n\n      // Now start on the other entries that have no specific order.\n      if (cff.encoding && cff.topDict.hasName(\"Encoding\")) {\n        if (cff.encoding.predefined) {\n          topDictTracker.setEntryLocation(\n            \"Encoding\",\n            [cff.encoding.format],\n            output\n          );\n        } else {\n          var encoding = this.compileEncoding(cff.encoding);\n          topDictTracker.setEntryLocation(\"Encoding\", [output.length], output);\n          output.add(encoding);\n        }\n      }\n      var charset = this.compileCharset(\n        cff.charset,\n        cff.charStrings.count,\n        cff.strings,\n        cff.isCIDFont\n      );\n      topDictTracker.setEntryLocation(\"charset\", [output.length], output);\n      output.add(charset);\n\n      var charStrings = this.compileCharStrings(cff.charStrings);\n      topDictTracker.setEntryLocation(\"CharStrings\", [output.length], output);\n      output.add(charStrings);\n\n      if (cff.isCIDFont) {\n        // For some reason FDSelect must be in front of FDArray on windows. OSX\n        // and linux don't seem to care.\n        topDictTracker.setEntryLocation(\"FDSelect\", [output.length], output);\n        var fdSelect = this.compileFDSelect(cff.fdSelect);\n        output.add(fdSelect);\n        // It is unclear if the sub font dictionary can have CID related\n        // dictionary keys, but the sanitizer doesn't like them so remove them.\n        compiled = this.compileTopDicts(cff.fdArray, output.length, true);\n        topDictTracker.setEntryLocation(\"FDArray\", [output.length], output);\n        output.add(compiled.output);\n        var fontDictTrackers = compiled.trackers;\n\n        this.compilePrivateDicts(cff.fdArray, fontDictTrackers, output);\n      }\n\n      this.compilePrivateDicts([cff.topDict], [topDictTracker], output);\n\n      // If the font data ends with INDEX whose object data is zero-length,\n      // the sanitizer will bail out. Add a dummy byte to avoid that.\n      output.add([0]);\n\n      return output.data;\n    },\n    encodeNumber: function CFFCompiler_encodeNumber(value) {\n      if (parseFloat(value) === parseInt(value, 10) && !isNaN(value)) {\n        // isInt\n        return this.encodeInteger(value);\n      }\n      return this.encodeFloat(value);\n    },\n    encodeFloat: function CFFCompiler_encodeFloat(num) {\n      var value = num.toString();\n\n      // rounding inaccurate doubles\n      var m = /\\.(\\d*?)(?:9{5,20}|0{5,20})\\d{0,2}(?:e(.+)|$)/.exec(value);\n      if (m) {\n        var epsilon = parseFloat(\"1e\" + ((m[2] ? +m[2] : 0) + m[1].length));\n        value = (Math.round(num * epsilon) / epsilon).toString();\n      }\n\n      var nibbles = \"\";\n      var i, ii;\n      for (i = 0, ii = value.length; i < ii; ++i) {\n        var a = value[i];\n        if (a === \"e\") {\n          nibbles += value[++i] === \"-\" ? \"c\" : \"b\";\n        } else if (a === \".\") {\n          nibbles += \"a\";\n        } else if (a === \"-\") {\n          nibbles += \"e\";\n        } else {\n          nibbles += a;\n        }\n      }\n      nibbles += nibbles.length & 1 ? \"f\" : \"ff\";\n      var out = [30];\n      for (i = 0, ii = nibbles.length; i < ii; i += 2) {\n        out.push(parseInt(nibbles.substring(i, i + 2), 16));\n      }\n      return out;\n    },\n    encodeInteger: function CFFCompiler_encodeInteger(value) {\n      var code;\n      if (value >= -107 && value <= 107) {\n        code = [value + 139];\n      } else if (value >= 108 && value <= 1131) {\n        value = value - 108;\n        code = [(value >> 8) + 247, value & 0xff];\n      } else if (value >= -1131 && value <= -108) {\n        value = -value - 108;\n        code = [(value >> 8) + 251, value & 0xff];\n      } else if (value >= -32768 && value <= 32767) {\n        code = [0x1c, (value >> 8) & 0xff, value & 0xff];\n      } else {\n        code = [\n          0x1d,\n          (value >> 24) & 0xff,\n          (value >> 16) & 0xff,\n          (value >> 8) & 0xff,\n          value & 0xff,\n        ];\n      }\n      return code;\n    },\n    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      for (var i = 0, ii = names.length; i < ii; ++i) {\n        var name = names[i];\n        // OTS doesn't allow names to be over 127 characters.\n        var length = Math.min(name.length, 127);\n        var sanitizedName = new Array(length);\n        for (var j = 0; j < length; j++) {\n          // OTS requires chars to be between a range and not certain other\n          // chars.\n          var char = name[j];\n          if (\n            char < \"!\" ||\n            char > \"~\" ||\n            char === \"[\" ||\n            char === \"]\" ||\n            char === \"(\" ||\n            char === \")\" ||\n            char === \"{\" ||\n            char === \"}\" ||\n            char === \"<\" ||\n            char === \">\" ||\n            char === \"/\" ||\n            char === \"%\"\n          ) {\n            char = \"_\";\n          }\n          sanitizedName[j] = char;\n        }\n        sanitizedName = sanitizedName.join(\"\");\n\n        if (sanitizedName === \"\") {\n          sanitizedName = \"Bad_Font_Name\";\n        }\n        nameIndex.add(stringToBytes(sanitizedName));\n      }\n      return this.compileIndex(nameIndex);\n    },\n    compileTopDicts: function CFFCompiler_compileTopDicts(\n      dicts,\n      length,\n      removeCidKeys\n    ) {\n      var fontDictTrackers = [];\n      var fdArrayIndex = new CFFIndex();\n      for (var i = 0, ii = dicts.length; i < ii; ++i) {\n        var fontDict = dicts[i];\n        if (removeCidKeys) {\n          fontDict.removeByName(\"CIDFontVersion\");\n          fontDict.removeByName(\"CIDFontRevision\");\n          fontDict.removeByName(\"CIDFontType\");\n          fontDict.removeByName(\"CIDCount\");\n          fontDict.removeByName(\"UIDBase\");\n        }\n        var fontDictTracker = new CFFOffsetTracker();\n        var fontDictData = this.compileDict(fontDict, fontDictTracker);\n        fontDictTrackers.push(fontDictTracker);\n        fdArrayIndex.add(fontDictData);\n        fontDictTracker.offset(length);\n      }\n      fdArrayIndex = this.compileIndex(fdArrayIndex, fontDictTrackers);\n      return {\n        trackers: fontDictTrackers,\n        output: fdArrayIndex,\n      };\n    },\n    compilePrivateDicts: function CFFCompiler_compilePrivateDicts(\n      dicts,\n      trackers,\n      output\n    ) {\n      for (var i = 0, ii = dicts.length; i < ii; ++i) {\n        var fontDict = dicts[i];\n        var privateDict = fontDict.privateDict;\n        if (!privateDict || !fontDict.hasName(\"Private\")) {\n          throw new FormatError(\"There must be a private dictionary.\");\n        }\n        var privateDictTracker = new CFFOffsetTracker();\n        var privateDictData = this.compileDict(privateDict, privateDictTracker);\n\n        var outputLength = output.length;\n        privateDictTracker.offset(outputLength);\n        if (!privateDictData.length) {\n          // The private dictionary was empty, set the output length to zero to\n          // ensure the offset length isn't out of bounds in the eyes of the\n          // sanitizer.\n          outputLength = 0;\n        }\n\n        trackers[i].setEntryLocation(\n          \"Private\",\n          [privateDictData.length, outputLength],\n          output\n        );\n        output.add(privateDictData);\n\n        if (privateDict.subrsIndex && privateDict.hasName(\"Subrs\")) {\n          var subrs = this.compileIndex(privateDict.subrsIndex);\n          privateDictTracker.setEntryLocation(\n            \"Subrs\",\n            [privateDictData.length],\n            output\n          );\n          output.add(subrs);\n        }\n      }\n    },\n    compileDict: function CFFCompiler_compileDict(dict, offsetTracker) {\n      var out = [];\n      // The dictionary keys must be in a certain order.\n      var order = dict.order;\n      for (var i = 0; i < order.length; ++i) {\n        var key = order[i];\n        if (!(key in dict.values)) {\n          continue;\n        }\n        var values = dict.values[key];\n        var types = dict.types[key];\n        if (!Array.isArray(types)) {\n          types = [types];\n        }\n        if (!Array.isArray(values)) {\n          values = [values];\n        }\n\n        // Remove any empty dict values.\n        if (values.length === 0) {\n          continue;\n        }\n\n        for (var j = 0, jj = types.length; j < jj; ++j) {\n          var type = types[j];\n          var value = values[j];\n          switch (type) {\n            case \"num\":\n            case \"sid\":\n              out = out.concat(this.encodeNumber(value));\n              break;\n            case \"offset\":\n              // For offsets we just insert a 32bit integer so we don't have to\n              // deal with figuring out the length of the offset when it gets\n              // replaced later on by the compiler.\n              var name = dict.keyToNameMap[key];\n              // Some offsets have the offset and the length, so just record the\n              // position of the first one.\n              if (!offsetTracker.isTracking(name)) {\n                offsetTracker.track(name, out.length);\n              }\n              out = out.concat([0x1d, 0, 0, 0, 0]);\n              break;\n            case \"array\":\n            case \"delta\":\n              out = out.concat(this.encodeNumber(value));\n              for (var k = 1, kk = values.length; k < kk; ++k) {\n                out = out.concat(this.encodeNumber(values[k]));\n              }\n              break;\n            default:\n              throw new FormatError(`Unknown data type of ${type}`);\n          }\n        }\n        out = out.concat(dict.opcodes[key]);\n      }\n      return out;\n    },\n    compileStringIndex: function CFFCompiler_compileStringIndex(strings) {\n      var stringIndex = new CFFIndex();\n      for (var i = 0, ii = strings.length; i < ii; ++i) {\n        stringIndex.add(stringToBytes(strings[i]));\n      }\n      return this.compileIndex(stringIndex);\n    },\n    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      for (var i = 0; i < charStrings.count; i++) {\n        var glyph = charStrings.get(i);\n        // If the CharString outline is empty, replace it with .notdef to\n        // prevent OTS from rejecting the font (fixes bug1252420.pdf).\n        if (glyph.length === 0) {\n          charStringsIndex.add(new Uint8Array([0x8b, 0x0e]));\n          continue;\n        }\n        charStringsIndex.add(glyph);\n      }\n      return this.compileIndex(charStringsIndex);\n    },\n    compileCharset: function CFFCompiler_compileCharset(\n      charset,\n      numGlyphs,\n      strings,\n      isCIDFont\n    ) {\n      // Freetype requires the number of charset strings be correct and MacOS\n      // requires a valid mapping for printing.\n      let out;\n      const numGlyphsLessNotDef = numGlyphs - 1;\n      if (isCIDFont) {\n        // In a CID font, the charset is a mapping of CIDs not SIDs so just\n        // create an identity mapping.\n        out = new Uint8Array([\n          2, // format\n          0, // first CID upper byte\n          0, // first CID lower byte\n          (numGlyphsLessNotDef >> 8) & 0xff,\n          numGlyphsLessNotDef & 0xff,\n        ]);\n      } else {\n        const length = 1 + numGlyphsLessNotDef * 2;\n        out = new Uint8Array(length);\n        out[0] = 0; // format 0\n        let charsetIndex = 0;\n        const numCharsets = charset.charset.length;\n        let warned = false;\n        for (let i = 1; i < out.length; i += 2) {\n          let sid = 0;\n          if (charsetIndex < numCharsets) {\n            const name = charset.charset[charsetIndex++];\n            sid = strings.getSID(name);\n            if (sid === -1) {\n              sid = 0;\n              if (!warned) {\n                warned = true;\n                warn(`Couldn't find ${name} in CFF strings`);\n              }\n            }\n          }\n          out[i] = (sid >> 8) & 0xff;\n          out[i + 1] = sid & 0xff;\n        }\n      }\n      return this.compileTypedArray(out);\n    },\n    compileEncoding: function CFFCompiler_compileEncoding(encoding) {\n      return this.compileTypedArray(encoding.raw);\n    },\n    compileFDSelect: function CFFCompiler_compileFDSelect(fdSelect) {\n      const format = fdSelect.format;\n      let out, i;\n      switch (format) {\n        case 0:\n          out = new Uint8Array(1 + fdSelect.fdSelect.length);\n          out[0] = format;\n          for (i = 0; i < fdSelect.fdSelect.length; i++) {\n            out[i + 1] = fdSelect.fdSelect[i];\n          }\n          break;\n        case 3:\n          const start = 0;\n          let lastFD = fdSelect.fdSelect[0];\n          const ranges = [\n            format,\n            0, // nRanges place holder\n            0, // nRanges place holder\n            (start >> 8) & 0xff,\n            start & 0xff,\n            lastFD,\n          ];\n          for (i = 1; i < fdSelect.fdSelect.length; i++) {\n            const currentFD = fdSelect.fdSelect[i];\n            if (currentFD !== lastFD) {\n              ranges.push((i >> 8) & 0xff, i & 0xff, currentFD);\n              lastFD = currentFD;\n            }\n          }\n          // 3 bytes are pushed for every range and there are 3 header bytes.\n          const numRanges = (ranges.length - 3) / 3;\n          ranges[1] = (numRanges >> 8) & 0xff;\n          ranges[2] = numRanges & 0xff;\n          // sentinel\n          ranges.push((i >> 8) & 0xff, i & 0xff);\n          out = new Uint8Array(ranges);\n          break;\n      }\n      return this.compileTypedArray(out);\n    },\n    compileTypedArray: function CFFCompiler_compileTypedArray(data) {\n      var out = [];\n      for (var i = 0, ii = data.length; i < ii; ++i) {\n        out[i] = data[i];\n      }\n      return out;\n    },\n    compileIndex: function CFFCompiler_compileIndex(index, trackers) {\n      trackers = trackers || [];\n      var objects = index.objects;\n      // First 2 bytes contains the number of objects contained into this index\n      var count = objects.length;\n\n      // If there is no object, just create an index. This technically\n      // should just be [0, 0] but OTS has an issue with that.\n      if (count === 0) {\n        return [0, 0, 0];\n      }\n\n      var data = [(count >> 8) & 0xff, count & 0xff];\n\n      var lastOffset = 1,\n        i;\n      for (i = 0; i < count; ++i) {\n        lastOffset += objects[i].length;\n      }\n\n      var offsetSize;\n      if (lastOffset < 0x100) {\n        offsetSize = 1;\n      } else if (lastOffset < 0x10000) {\n        offsetSize = 2;\n      } else if (lastOffset < 0x1000000) {\n        offsetSize = 3;\n      } else {\n        offsetSize = 4;\n      }\n\n      // Next byte contains the offset size use to reference object in the file\n      data.push(offsetSize);\n\n      // Add another offset after this one because we need a new offset\n      var relativeOffset = 1;\n      for (i = 0; i < count + 1; i++) {\n        if (offsetSize === 1) {\n          data.push(relativeOffset & 0xff);\n        } else if (offsetSize === 2) {\n          data.push((relativeOffset >> 8) & 0xff, relativeOffset & 0xff);\n        } else if (offsetSize === 3) {\n          data.push(\n            (relativeOffset >> 16) & 0xff,\n            (relativeOffset >> 8) & 0xff,\n            relativeOffset & 0xff\n          );\n        } else {\n          data.push(\n            (relativeOffset >>> 24) & 0xff,\n            (relativeOffset >> 16) & 0xff,\n            (relativeOffset >> 8) & 0xff,\n            relativeOffset & 0xff\n          );\n        }\n\n        if (objects[i]) {\n          relativeOffset += objects[i].length;\n        }\n      }\n\n      for (i = 0; i < count; i++) {\n        // Notify the tracker where the object will be offset in the data.\n        if (trackers[i]) {\n          trackers[i].offset(data.length);\n        }\n        for (var j = 0, jj = objects[i].length; j < jj; j++) {\n          data.push(objects[i][j]);\n        }\n      }\n      return data;\n    },\n  };\n  return CFFCompiler;\n})();\n\nexport {\n  CFFStandardStrings,\n  CFFParser,\n  CFF,\n  CFFHeader,\n  CFFStrings,\n  CFFIndex,\n  CFFCharset,\n  CFFTopDict,\n  CFFPrivateDict,\n  CFFCompiler,\n  CFFFDSelect,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\n// prettier-ignore\nconst ISOAdobeCharset = [\n  \".notdef\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\",\n  \"percent\", \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\",\n  \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\",\n  \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\",\n  \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\",\n  \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\",\n  \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\",\n  \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\",\n  \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\",\n  \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\",\n  \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"exclamdown\", \"cent\",\n  \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\",\n  \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\",\n  \"guilsinglright\", \"fi\", \"fl\", \"endash\", \"dagger\", \"daggerdbl\",\n  \"periodcentered\", \"paragraph\", \"bullet\", \"quotesinglbase\",\n  \"quotedblbase\", \"quotedblright\", \"guillemotright\", \"ellipsis\",\n  \"perthousand\", \"questiondown\", \"grave\", \"acute\", \"circumflex\", \"tilde\",\n  \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"ring\", \"cedilla\",\n  \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"AE\", \"ordfeminine\",\n  \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"ae\", \"dotlessi\", \"lslash\",\n  \"oslash\", \"oe\", \"germandbls\", \"onesuperior\", \"logicalnot\", \"mu\",\n  \"trademark\", \"Eth\", \"onehalf\", \"plusminus\", \"Thorn\", \"onequarter\",\n  \"divide\", \"brokenbar\", \"degree\", \"thorn\", \"threequarters\", \"twosuperior\",\n  \"registered\", \"minus\", \"eth\", \"multiply\", \"threesuperior\", \"copyright\",\n  \"Aacute\", \"Acircumflex\", \"Adieresis\", \"Agrave\", \"Aring\", \"Atilde\",\n  \"Ccedilla\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Egrave\", \"Iacute\",\n  \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Ntilde\", \"Oacute\", \"Ocircumflex\",\n  \"Odieresis\", \"Ograve\", \"Otilde\", \"Scaron\", \"Uacute\", \"Ucircumflex\",\n  \"Udieresis\", \"Ugrave\", \"Yacute\", \"Ydieresis\", \"Zcaron\", \"aacute\",\n  \"acircumflex\", \"adieresis\", \"agrave\", \"aring\", \"atilde\", \"ccedilla\",\n  \"eacute\", \"ecircumflex\", \"edieresis\", \"egrave\", \"iacute\", \"icircumflex\",\n  \"idieresis\", \"igrave\", \"ntilde\", \"oacute\", \"ocircumflex\", \"odieresis\",\n  \"ograve\", \"otilde\", \"scaron\", \"uacute\", \"ucircumflex\", \"udieresis\",\n  \"ugrave\", \"yacute\", \"ydieresis\", \"zcaron\"\n];\n\n// prettier-ignore\nconst ExpertCharset = [\n  \".notdef\", \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"dollaroldstyle\",\n  \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\",\n  \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\",\n  \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\",\n  \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\",\n  \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\",\n  \"colon\", \"semicolon\", \"commasuperior\", \"threequartersemdash\",\n  \"periodsuperior\", \"questionsmall\", \"asuperior\", \"bsuperior\",\n  \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\",\n  \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\",\n  \"tsuperior\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\",\n  \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\",\n  \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\",\n  \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\",\n  \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\",\n  \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\",\n  \"onefitted\", \"rupiah\", \"Tildesmall\", \"exclamdownsmall\", \"centoldstyle\",\n  \"Lslashsmall\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\",\n  \"Brevesmall\", \"Caronsmall\", \"Dotaccentsmall\", \"Macronsmall\",\n  \"figuredash\", \"hypheninferior\", \"Ogoneksmall\", \"Ringsmall\",\n  \"Cedillasmall\", \"onequarter\", \"onehalf\", \"threequarters\",\n  \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n  \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"onesuperior\",\n  \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\",\n  \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\",\n  \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\",\n  \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\",\n  \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\",\n  \"periodinferior\", \"commainferior\", \"Agravesmall\", \"Aacutesmall\",\n  \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\",\n  \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\",\n  \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\",\n  \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\",\n  \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\",\n  \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\",\n  \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\",\n  \"Ydieresissmall\"\n];\n\n// prettier-ignore\nconst ExpertSubsetCharset = [\n  \".notdef\", \"space\", \"dollaroldstyle\", \"dollarsuperior\",\n  \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\",\n  \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\",\n  \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\",\n  \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\",\n  \"eightoldstyle\", \"nineoldstyle\", \"colon\", \"semicolon\", \"commasuperior\",\n  \"threequartersemdash\", \"periodsuperior\", \"asuperior\", \"bsuperior\",\n  \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\",\n  \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\",\n  \"tsuperior\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\",\n  \"parenrightinferior\", \"hyphensuperior\", \"colonmonetary\", \"onefitted\",\n  \"rupiah\", \"centoldstyle\", \"figuredash\", \"hypheninferior\", \"onequarter\",\n  \"onehalf\", \"threequarters\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n  \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"onesuperior\",\n  \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\",\n  \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\",\n  \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\",\n  \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\",\n  \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\",\n  \"periodinferior\", \"commainferior\"\n];\n\nexport { ISOAdobeCharset, ExpertCharset, ExpertSubsetCharset };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// prettier-ignore\nconst ExpertEncoding = [\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"\", \"dollaroldstyle\",\n  \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\",\n  \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\",\n  \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\",\n  \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\",\n  \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"colon\",\n  \"semicolon\", \"commasuperior\", \"threequartersemdash\", \"periodsuperior\",\n  \"questionsmall\", \"\", \"asuperior\", \"bsuperior\", \"centsuperior\", \"dsuperior\",\n  \"esuperior\", \"\", \"\", \"\", \"isuperior\", \"\", \"\", \"lsuperior\", \"msuperior\",\n  \"nsuperior\", \"osuperior\", \"\", \"\", \"rsuperior\", \"ssuperior\", \"tsuperior\",\n  \"\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"\",\n  \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\",\n  \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\",\n  \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\",\n  \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\",\n  \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\",\n  \"onefitted\", \"rupiah\", \"Tildesmall\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\",\n  \"\", \"\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\",\n  \"Caronsmall\", \"\", \"Dotaccentsmall\", \"\", \"\", \"Macronsmall\", \"\", \"\",\n  \"figuredash\", \"hypheninferior\", \"\", \"\", \"Ogoneksmall\", \"Ringsmall\",\n  \"Cedillasmall\", \"\", \"\", \"\", \"onequarter\", \"onehalf\", \"threequarters\",\n  \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n  \"seveneighths\", \"onethird\", \"twothirds\", \"\", \"\", \"zerosuperior\",\n  \"onesuperior\", \"twosuperior\", \"threesuperior\", \"foursuperior\",\n  \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\",\n  \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\",\n  \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\",\n  \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\",\n  \"dollarinferior\", \"periodinferior\", \"commainferior\", \"Agravesmall\",\n  \"Aacutesmall\", \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\",\n  \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\",\n  \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\",\n  \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\",\n  \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\",\n  \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\",\n  \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\",\n  \"Ydieresissmall\"];\n\n// prettier-ignore\nconst MacExpertEncoding = [\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"centoldstyle\",\n  \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\",\n  \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\",\n  \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\",\n  \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\",\n  \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\",\n  \"nineoldstyle\", \"colon\", \"semicolon\", \"\", \"threequartersemdash\", \"\",\n  \"questionsmall\", \"\", \"\", \"\", \"\", \"Ethsmall\", \"\", \"\", \"onequarter\",\n  \"onehalf\", \"threequarters\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n  \"seveneighths\", \"onethird\", \"twothirds\", \"\", \"\", \"\", \"\", \"\", \"\", \"ff\",\n  \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"\", \"parenrightinferior\",\n  \"Circumflexsmall\", \"hypheninferior\", \"Gravesmall\", \"Asmall\", \"Bsmall\",\n  \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\",\n  \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\",\n  \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\",\n  \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\",\n  \"Tildesmall\", \"\", \"\", \"asuperior\", \"centsuperior\", \"\", \"\", \"\", \"\",\n  \"Aacutesmall\", \"Agravesmall\", \"Acircumflexsmall\", \"Adieresissmall\",\n  \"Atildesmall\", \"Aringsmall\", \"Ccedillasmall\", \"Eacutesmall\", \"Egravesmall\",\n  \"Ecircumflexsmall\", \"Edieresissmall\", \"Iacutesmall\", \"Igravesmall\",\n  \"Icircumflexsmall\", \"Idieresissmall\", \"Ntildesmall\", \"Oacutesmall\",\n  \"Ogravesmall\", \"Ocircumflexsmall\", \"Odieresissmall\", \"Otildesmall\",\n  \"Uacutesmall\", \"Ugravesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"\",\n  \"eightsuperior\", \"fourinferior\", \"threeinferior\", \"sixinferior\",\n  \"eightinferior\", \"seveninferior\", \"Scaronsmall\", \"\", \"centinferior\",\n  \"twoinferior\", \"\", \"Dieresissmall\", \"\", \"Caronsmall\", \"osuperior\",\n  \"fiveinferior\", \"\", \"commainferior\", \"periodinferior\", \"Yacutesmall\", \"\",\n  \"dollarinferior\", \"\", \"\", \"Thornsmall\", \"\", \"nineinferior\", \"zeroinferior\",\n  \"Zcaronsmall\", \"AEsmall\", \"Oslashsmall\", \"questiondownsmall\",\n  \"oneinferior\", \"Lslashsmall\", \"\", \"\", \"\", \"\", \"\", \"\", \"Cedillasmall\", \"\",\n  \"\", \"\", \"\", \"\", \"OEsmall\", \"figuredash\", \"hyphensuperior\", \"\", \"\", \"\", \"\",\n  \"exclamdownsmall\", \"\", \"Ydieresissmall\", \"\", \"onesuperior\", \"twosuperior\",\n  \"threesuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\",\n  \"sevensuperior\", \"ninesuperior\", \"zerosuperior\", \"\", \"esuperior\",\n  \"rsuperior\", \"tsuperior\", \"\", \"\", \"isuperior\", \"ssuperior\", \"dsuperior\",\n  \"\", \"\", \"\", \"\", \"\", \"lsuperior\", \"Ogoneksmall\", \"Brevesmall\",\n  \"Macronsmall\", \"bsuperior\", \"nsuperior\", \"msuperior\", \"commasuperior\",\n  \"periodsuperior\", \"Dotaccentsmall\", \"Ringsmall\", \"\", \"\", \"\", \"\"];\n\n// prettier-ignore\nconst MacRomanEncoding = [\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n  \"ampersand\", \"quotesingle\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n  \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\",\n  \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\",\n  \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\",\n  \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\",\n  \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\",\n  \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\",\n  \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\",\n  \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"\",\n  \"Adieresis\", \"Aring\", \"Ccedilla\", \"Eacute\", \"Ntilde\", \"Odieresis\",\n  \"Udieresis\", \"aacute\", \"agrave\", \"acircumflex\", \"adieresis\", \"atilde\",\n  \"aring\", \"ccedilla\", \"eacute\", \"egrave\", \"ecircumflex\", \"edieresis\",\n  \"iacute\", \"igrave\", \"icircumflex\", \"idieresis\", \"ntilde\", \"oacute\",\n  \"ograve\", \"ocircumflex\", \"odieresis\", \"otilde\", \"uacute\", \"ugrave\",\n  \"ucircumflex\", \"udieresis\", \"dagger\", \"degree\", \"cent\", \"sterling\",\n  \"section\", \"bullet\", \"paragraph\", \"germandbls\", \"registered\", \"copyright\",\n  \"trademark\", \"acute\", \"dieresis\", \"notequal\", \"AE\", \"Oslash\", \"infinity\",\n  \"plusminus\", \"lessequal\", \"greaterequal\", \"yen\", \"mu\", \"partialdiff\",\n  \"summation\", \"product\", \"pi\", \"integral\", \"ordfeminine\", \"ordmasculine\",\n  \"Omega\", \"ae\", \"oslash\", \"questiondown\", \"exclamdown\", \"logicalnot\",\n  \"radical\", \"florin\", \"approxequal\", \"Delta\", \"guillemotleft\",\n  \"guillemotright\", \"ellipsis\", \"space\", \"Agrave\", \"Atilde\", \"Otilde\", \"OE\",\n  \"oe\", \"endash\", \"emdash\", \"quotedblleft\", \"quotedblright\", \"quoteleft\",\n  \"quoteright\", \"divide\", \"lozenge\", \"ydieresis\", \"Ydieresis\", \"fraction\",\n  \"currency\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"daggerdbl\",\n  \"periodcentered\", \"quotesinglbase\", \"quotedblbase\", \"perthousand\",\n  \"Acircumflex\", \"Ecircumflex\", \"Aacute\", \"Edieresis\", \"Egrave\", \"Iacute\",\n  \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Oacute\", \"Ocircumflex\", \"apple\",\n  \"Ograve\", \"Uacute\", \"Ucircumflex\", \"Ugrave\", \"dotlessi\", \"circumflex\",\n  \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"ring\", \"cedilla\", \"hungarumlaut\",\n  \"ogonek\", \"caron\"];\n\n// prettier-ignore\nconst StandardEncoding = [\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n  \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n  \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\",\n  \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\",\n  \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\",\n  \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\",\n  \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\",\n  \"asciicircum\", \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\",\n  \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\",\n  \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"exclamdown\",\n  \"cent\", \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\",\n  \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\",\n  \"guilsinglright\", \"fi\", \"fl\", \"\", \"endash\", \"dagger\", \"daggerdbl\",\n  \"periodcentered\", \"\", \"paragraph\", \"bullet\", \"quotesinglbase\",\n  \"quotedblbase\", \"quotedblright\", \"guillemotright\", \"ellipsis\",\n  \"perthousand\", \"\", \"questiondown\", \"\", \"grave\", \"acute\", \"circumflex\",\n  \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"\", \"ring\", \"cedilla\",\n  \"\", \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"AE\", \"\", \"ordfeminine\", \"\", \"\",\n  \"\", \"\", \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"\", \"\", \"\", \"\", \"\", \"ae\",\n  \"\", \"\", \"\", \"dotlessi\", \"\", \"\", \"lslash\", \"oslash\", \"oe\", \"germandbls\", \"\",\n  \"\", \"\", \"\"];\n\n// prettier-ignore\nconst WinAnsiEncoding = [\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n  \"ampersand\", \"quotesingle\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n  \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\",\n  \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\",\n  \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\",\n  \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\",\n  \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\",\n  \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\",\n  \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\",\n  \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\",\n  \"bullet\", \"Euro\", \"bullet\", \"quotesinglbase\", \"florin\", \"quotedblbase\",\n  \"ellipsis\", \"dagger\", \"daggerdbl\", \"circumflex\", \"perthousand\", \"Scaron\",\n  \"guilsinglleft\", \"OE\", \"bullet\", \"Zcaron\", \"bullet\", \"bullet\", \"quoteleft\",\n  \"quoteright\", \"quotedblleft\", \"quotedblright\", \"bullet\", \"endash\",\n  \"emdash\", \"tilde\", \"trademark\", \"scaron\", \"guilsinglright\", \"oe\", \"bullet\",\n  \"zcaron\", \"Ydieresis\", \"space\", \"exclamdown\", \"cent\", \"sterling\",\n  \"currency\", \"yen\", \"brokenbar\", \"section\", \"dieresis\", \"copyright\",\n  \"ordfeminine\", \"guillemotleft\", \"logicalnot\", \"hyphen\", \"registered\",\n  \"macron\", \"degree\", \"plusminus\", \"twosuperior\", \"threesuperior\", \"acute\",\n  \"mu\", \"paragraph\", \"periodcentered\", \"cedilla\", \"onesuperior\",\n  \"ordmasculine\", \"guillemotright\", \"onequarter\", \"onehalf\", \"threequarters\",\n  \"questiondown\", \"Agrave\", \"Aacute\", \"Acircumflex\", \"Atilde\", \"Adieresis\",\n  \"Aring\", \"AE\", \"Ccedilla\", \"Egrave\", \"Eacute\", \"Ecircumflex\", \"Edieresis\",\n  \"Igrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Eth\", \"Ntilde\", \"Ograve\",\n  \"Oacute\", \"Ocircumflex\", \"Otilde\", \"Odieresis\", \"multiply\", \"Oslash\",\n  \"Ugrave\", \"Uacute\", \"Ucircumflex\", \"Udieresis\", \"Yacute\", \"Thorn\",\n  \"germandbls\", \"agrave\", \"aacute\", \"acircumflex\", \"atilde\", \"adieresis\",\n  \"aring\", \"ae\", \"ccedilla\", \"egrave\", \"eacute\", \"ecircumflex\", \"edieresis\",\n  \"igrave\", \"iacute\", \"icircumflex\", \"idieresis\", \"eth\", \"ntilde\", \"ograve\",\n  \"oacute\", \"ocircumflex\", \"otilde\", \"odieresis\", \"divide\", \"oslash\",\n  \"ugrave\", \"uacute\", \"ucircumflex\", \"udieresis\", \"yacute\", \"thorn\",\n  \"ydieresis\"];\n\n// prettier-ignore\nconst SymbolSetEncoding = [\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"space\", \"exclam\", \"universal\", \"numbersign\", \"existential\", \"percent\",\n  \"ampersand\", \"suchthat\", \"parenleft\", \"parenright\", \"asteriskmath\", \"plus\",\n  \"comma\", \"minus\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\",\n  \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\",\n  \"equal\", \"greater\", \"question\", \"congruent\", \"Alpha\", \"Beta\", \"Chi\",\n  \"Delta\", \"Epsilon\", \"Phi\", \"Gamma\", \"Eta\", \"Iota\", \"theta1\", \"Kappa\",\n  \"Lambda\", \"Mu\", \"Nu\", \"Omicron\", \"Pi\", \"Theta\", \"Rho\", \"Sigma\", \"Tau\",\n  \"Upsilon\", \"sigma1\", \"Omega\", \"Xi\", \"Psi\", \"Zeta\", \"bracketleft\",\n  \"therefore\", \"bracketright\", \"perpendicular\", \"underscore\", \"radicalex\",\n  \"alpha\", \"beta\", \"chi\", \"delta\", \"epsilon\", \"phi\", \"gamma\", \"eta\", \"iota\",\n  \"phi1\", \"kappa\", \"lambda\", \"mu\", \"nu\", \"omicron\", \"pi\", \"theta\", \"rho\",\n  \"sigma\", \"tau\", \"upsilon\", \"omega1\", \"omega\", \"xi\", \"psi\", \"zeta\",\n  \"braceleft\", \"bar\", \"braceright\", \"similar\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"Euro\", \"Upsilon1\", \"minute\", \"lessequal\",\n  \"fraction\", \"infinity\", \"florin\", \"club\", \"diamond\", \"heart\", \"spade\",\n  \"arrowboth\", \"arrowleft\", \"arrowup\", \"arrowright\", \"arrowdown\", \"degree\",\n  \"plusminus\", \"second\", \"greaterequal\", \"multiply\", \"proportional\",\n  \"partialdiff\", \"bullet\", \"divide\", \"notequal\", \"equivalence\",\n  \"approxequal\", \"ellipsis\", \"arrowvertex\", \"arrowhorizex\", \"carriagereturn\",\n  \"aleph\", \"Ifraktur\", \"Rfraktur\", \"weierstrass\", \"circlemultiply\",\n  \"circleplus\", \"emptyset\", \"intersection\", \"union\", \"propersuperset\",\n  \"reflexsuperset\", \"notsubset\", \"propersubset\", \"reflexsubset\", \"element\",\n  \"notelement\", \"angle\", \"gradient\", \"registerserif\", \"copyrightserif\",\n  \"trademarkserif\", \"product\", \"radical\", \"dotmath\", \"logicalnot\",\n  \"logicaland\", \"logicalor\", \"arrowdblboth\", \"arrowdblleft\", \"arrowdblup\",\n  \"arrowdblright\", \"arrowdbldown\", \"lozenge\", \"angleleft\", \"registersans\",\n  \"copyrightsans\", \"trademarksans\", \"summation\", \"parenlefttp\",\n  \"parenleftex\", \"parenleftbt\", \"bracketlefttp\", \"bracketleftex\",\n  \"bracketleftbt\", \"bracelefttp\", \"braceleftmid\", \"braceleftbt\", \"braceex\",\n  \"\", \"angleright\", \"integral\", \"integraltp\", \"integralex\", \"integralbt\",\n  \"parenrighttp\", \"parenrightex\", \"parenrightbt\", \"bracketrighttp\",\n  \"bracketrightex\", \"bracketrightbt\", \"bracerighttp\", \"bracerightmid\",\n  \"bracerightbt\", \"\"];\n\n// prettier-ignore\nconst ZapfDingbatsEncoding = [\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"space\", \"a1\", \"a2\", \"a202\", \"a3\", \"a4\", \"a5\", \"a119\", \"a118\", \"a117\",\n  \"a11\", \"a12\", \"a13\", \"a14\", \"a15\", \"a16\", \"a105\", \"a17\", \"a18\", \"a19\",\n  \"a20\", \"a21\", \"a22\", \"a23\", \"a24\", \"a25\", \"a26\", \"a27\", \"a28\", \"a6\", \"a7\",\n  \"a8\", \"a9\", \"a10\", \"a29\", \"a30\", \"a31\", \"a32\", \"a33\", \"a34\", \"a35\", \"a36\",\n  \"a37\", \"a38\", \"a39\", \"a40\", \"a41\", \"a42\", \"a43\", \"a44\", \"a45\", \"a46\",\n  \"a47\", \"a48\", \"a49\", \"a50\", \"a51\", \"a52\", \"a53\", \"a54\", \"a55\", \"a56\",\n  \"a57\", \"a58\", \"a59\", \"a60\", \"a61\", \"a62\", \"a63\", \"a64\", \"a65\", \"a66\",\n  \"a67\", \"a68\", \"a69\", \"a70\", \"a71\", \"a72\", \"a73\", \"a74\", \"a203\", \"a75\",\n  \"a204\", \"a76\", \"a77\", \"a78\", \"a79\", \"a81\", \"a82\", \"a83\", \"a84\", \"a97\",\n  \"a98\", \"a99\", \"a100\", \"\", \"a89\", \"a90\", \"a93\", \"a94\", \"a91\", \"a92\", \"a205\",\n  \"a85\", \"a206\", \"a86\", \"a87\", \"a88\", \"a95\", \"a96\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"a101\", \"a102\", \"a103\",\n  \"a104\", \"a106\", \"a107\", \"a108\", \"a112\", \"a111\", \"a110\", \"a109\", \"a120\",\n  \"a121\", \"a122\", \"a123\", \"a124\", \"a125\", \"a126\", \"a127\", \"a128\", \"a129\",\n  \"a130\", \"a131\", \"a132\", \"a133\", \"a134\", \"a135\", \"a136\", \"a137\", \"a138\",\n  \"a139\", \"a140\", \"a141\", \"a142\", \"a143\", \"a144\", \"a145\", \"a146\", \"a147\",\n  \"a148\", \"a149\", \"a150\", \"a151\", \"a152\", \"a153\", \"a154\", \"a155\", \"a156\",\n  \"a157\", \"a158\", \"a159\", \"a160\", \"a161\", \"a163\", \"a164\", \"a196\", \"a165\",\n  \"a192\", \"a166\", \"a167\", \"a168\", \"a169\", \"a170\", \"a171\", \"a172\", \"a173\",\n  \"a162\", \"a174\", \"a175\", \"a176\", \"a177\", \"a178\", \"a179\", \"a193\", \"a180\",\n  \"a199\", \"a181\", \"a200\", \"a182\", \"\", \"a201\", \"a183\", \"a184\", \"a197\", \"a185\",\n  \"a194\", \"a198\", \"a186\", \"a195\", \"a187\", \"a188\", \"a189\", \"a190\", \"a191\", \"\"];\n\nfunction getEncoding(encodingName) {\n  switch (encodingName) {\n    case \"WinAnsiEncoding\":\n      return WinAnsiEncoding;\n    case \"StandardEncoding\":\n      return StandardEncoding;\n    case \"MacRomanEncoding\":\n      return MacRomanEncoding;\n    case \"SymbolSetEncoding\":\n      return SymbolSetEncoding;\n    case \"ZapfDingbatsEncoding\":\n      return ZapfDingbatsEncoding;\n    case \"ExpertEncoding\":\n      return ExpertEncoding;\n    case \"MacExpertEncoding\":\n      return MacExpertEncoding;\n    default:\n      return null;\n  }\n}\n\nexport {\n  WinAnsiEncoding,\n  StandardEncoding,\n  MacRomanEncoding,\n  SymbolSetEncoding,\n  ZapfDingbatsEncoding,\n  ExpertEncoding,\n  getEncoding,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* no-babel-preset */\n\nvar getLookupTableFactory = require(\"./core_utils.js\").getLookupTableFactory;\n\nvar getGlyphsUnicode = getLookupTableFactory(function (t) {\n  t.A = 0x0041;\n  t.AE = 0x00c6;\n  t.AEacute = 0x01fc;\n  t.AEmacron = 0x01e2;\n  t.AEsmall = 0xf7e6;\n  t.Aacute = 0x00c1;\n  t.Aacutesmall = 0xf7e1;\n  t.Abreve = 0x0102;\n  t.Abreveacute = 0x1eae;\n  t.Abrevecyrillic = 0x04d0;\n  t.Abrevedotbelow = 0x1eb6;\n  t.Abrevegrave = 0x1eb0;\n  t.Abrevehookabove = 0x1eb2;\n  t.Abrevetilde = 0x1eb4;\n  t.Acaron = 0x01cd;\n  t.Acircle = 0x24b6;\n  t.Acircumflex = 0x00c2;\n  t.Acircumflexacute = 0x1ea4;\n  t.Acircumflexdotbelow = 0x1eac;\n  t.Acircumflexgrave = 0x1ea6;\n  t.Acircumflexhookabove = 0x1ea8;\n  t.Acircumflexsmall = 0xf7e2;\n  t.Acircumflextilde = 0x1eaa;\n  t.Acute = 0xf6c9;\n  t.Acutesmall = 0xf7b4;\n  t.Acyrillic = 0x0410;\n  t.Adblgrave = 0x0200;\n  t.Adieresis = 0x00c4;\n  t.Adieresiscyrillic = 0x04d2;\n  t.Adieresismacron = 0x01de;\n  t.Adieresissmall = 0xf7e4;\n  t.Adotbelow = 0x1ea0;\n  t.Adotmacron = 0x01e0;\n  t.Agrave = 0x00c0;\n  t.Agravesmall = 0xf7e0;\n  t.Ahookabove = 0x1ea2;\n  t.Aiecyrillic = 0x04d4;\n  t.Ainvertedbreve = 0x0202;\n  t.Alpha = 0x0391;\n  t.Alphatonos = 0x0386;\n  t.Amacron = 0x0100;\n  t.Amonospace = 0xff21;\n  t.Aogonek = 0x0104;\n  t.Aring = 0x00c5;\n  t.Aringacute = 0x01fa;\n  t.Aringbelow = 0x1e00;\n  t.Aringsmall = 0xf7e5;\n  t.Asmall = 0xf761;\n  t.Atilde = 0x00c3;\n  t.Atildesmall = 0xf7e3;\n  t.Aybarmenian = 0x0531;\n  t.B = 0x0042;\n  t.Bcircle = 0x24b7;\n  t.Bdotaccent = 0x1e02;\n  t.Bdotbelow = 0x1e04;\n  t.Becyrillic = 0x0411;\n  t.Benarmenian = 0x0532;\n  t.Beta = 0x0392;\n  t.Bhook = 0x0181;\n  t.Blinebelow = 0x1e06;\n  t.Bmonospace = 0xff22;\n  t.Brevesmall = 0xf6f4;\n  t.Bsmall = 0xf762;\n  t.Btopbar = 0x0182;\n  t.C = 0x0043;\n  t.Caarmenian = 0x053e;\n  t.Cacute = 0x0106;\n  t.Caron = 0xf6ca;\n  t.Caronsmall = 0xf6f5;\n  t.Ccaron = 0x010c;\n  t.Ccedilla = 0x00c7;\n  t.Ccedillaacute = 0x1e08;\n  t.Ccedillasmall = 0xf7e7;\n  t.Ccircle = 0x24b8;\n  t.Ccircumflex = 0x0108;\n  t.Cdot = 0x010a;\n  t.Cdotaccent = 0x010a;\n  t.Cedillasmall = 0xf7b8;\n  t.Chaarmenian = 0x0549;\n  t.Cheabkhasiancyrillic = 0x04bc;\n  t.Checyrillic = 0x0427;\n  t.Chedescenderabkhasiancyrillic = 0x04be;\n  t.Chedescendercyrillic = 0x04b6;\n  t.Chedieresiscyrillic = 0x04f4;\n  t.Cheharmenian = 0x0543;\n  t.Chekhakassiancyrillic = 0x04cb;\n  t.Cheverticalstrokecyrillic = 0x04b8;\n  t.Chi = 0x03a7;\n  t.Chook = 0x0187;\n  t.Circumflexsmall = 0xf6f6;\n  t.Cmonospace = 0xff23;\n  t.Coarmenian = 0x0551;\n  t.Csmall = 0xf763;\n  t.D = 0x0044;\n  t.DZ = 0x01f1;\n  t.DZcaron = 0x01c4;\n  t.Daarmenian = 0x0534;\n  t.Dafrican = 0x0189;\n  t.Dcaron = 0x010e;\n  t.Dcedilla = 0x1e10;\n  t.Dcircle = 0x24b9;\n  t.Dcircumflexbelow = 0x1e12;\n  t.Dcroat = 0x0110;\n  t.Ddotaccent = 0x1e0a;\n  t.Ddotbelow = 0x1e0c;\n  t.Decyrillic = 0x0414;\n  t.Deicoptic = 0x03ee;\n  t.Delta = 0x2206;\n  t.Deltagreek = 0x0394;\n  t.Dhook = 0x018a;\n  t.Dieresis = 0xf6cb;\n  t.DieresisAcute = 0xf6cc;\n  t.DieresisGrave = 0xf6cd;\n  t.Dieresissmall = 0xf7a8;\n  t.Digammagreek = 0x03dc;\n  t.Djecyrillic = 0x0402;\n  t.Dlinebelow = 0x1e0e;\n  t.Dmonospace = 0xff24;\n  t.Dotaccentsmall = 0xf6f7;\n  t.Dslash = 0x0110;\n  t.Dsmall = 0xf764;\n  t.Dtopbar = 0x018b;\n  t.Dz = 0x01f2;\n  t.Dzcaron = 0x01c5;\n  t.Dzeabkhasiancyrillic = 0x04e0;\n  t.Dzecyrillic = 0x0405;\n  t.Dzhecyrillic = 0x040f;\n  t.E = 0x0045;\n  t.Eacute = 0x00c9;\n  t.Eacutesmall = 0xf7e9;\n  t.Ebreve = 0x0114;\n  t.Ecaron = 0x011a;\n  t.Ecedillabreve = 0x1e1c;\n  t.Echarmenian = 0x0535;\n  t.Ecircle = 0x24ba;\n  t.Ecircumflex = 0x00ca;\n  t.Ecircumflexacute = 0x1ebe;\n  t.Ecircumflexbelow = 0x1e18;\n  t.Ecircumflexdotbelow = 0x1ec6;\n  t.Ecircumflexgrave = 0x1ec0;\n  t.Ecircumflexhookabove = 0x1ec2;\n  t.Ecircumflexsmall = 0xf7ea;\n  t.Ecircumflextilde = 0x1ec4;\n  t.Ecyrillic = 0x0404;\n  t.Edblgrave = 0x0204;\n  t.Edieresis = 0x00cb;\n  t.Edieresissmall = 0xf7eb;\n  t.Edot = 0x0116;\n  t.Edotaccent = 0x0116;\n  t.Edotbelow = 0x1eb8;\n  t.Efcyrillic = 0x0424;\n  t.Egrave = 0x00c8;\n  t.Egravesmall = 0xf7e8;\n  t.Eharmenian = 0x0537;\n  t.Ehookabove = 0x1eba;\n  t.Eightroman = 0x2167;\n  t.Einvertedbreve = 0x0206;\n  t.Eiotifiedcyrillic = 0x0464;\n  t.Elcyrillic = 0x041b;\n  t.Elevenroman = 0x216a;\n  t.Emacron = 0x0112;\n  t.Emacronacute = 0x1e16;\n  t.Emacrongrave = 0x1e14;\n  t.Emcyrillic = 0x041c;\n  t.Emonospace = 0xff25;\n  t.Encyrillic = 0x041d;\n  t.Endescendercyrillic = 0x04a2;\n  t.Eng = 0x014a;\n  t.Enghecyrillic = 0x04a4;\n  t.Enhookcyrillic = 0x04c7;\n  t.Eogonek = 0x0118;\n  t.Eopen = 0x0190;\n  t.Epsilon = 0x0395;\n  t.Epsilontonos = 0x0388;\n  t.Ercyrillic = 0x0420;\n  t.Ereversed = 0x018e;\n  t.Ereversedcyrillic = 0x042d;\n  t.Escyrillic = 0x0421;\n  t.Esdescendercyrillic = 0x04aa;\n  t.Esh = 0x01a9;\n  t.Esmall = 0xf765;\n  t.Eta = 0x0397;\n  t.Etarmenian = 0x0538;\n  t.Etatonos = 0x0389;\n  t.Eth = 0x00d0;\n  t.Ethsmall = 0xf7f0;\n  t.Etilde = 0x1ebc;\n  t.Etildebelow = 0x1e1a;\n  t.Euro = 0x20ac;\n  t.Ezh = 0x01b7;\n  t.Ezhcaron = 0x01ee;\n  t.Ezhreversed = 0x01b8;\n  t.F = 0x0046;\n  t.Fcircle = 0x24bb;\n  t.Fdotaccent = 0x1e1e;\n  t.Feharmenian = 0x0556;\n  t.Feicoptic = 0x03e4;\n  t.Fhook = 0x0191;\n  t.Fitacyrillic = 0x0472;\n  t.Fiveroman = 0x2164;\n  t.Fmonospace = 0xff26;\n  t.Fourroman = 0x2163;\n  t.Fsmall = 0xf766;\n  t.G = 0x0047;\n  t.GBsquare = 0x3387;\n  t.Gacute = 0x01f4;\n  t.Gamma = 0x0393;\n  t.Gammaafrican = 0x0194;\n  t.Gangiacoptic = 0x03ea;\n  t.Gbreve = 0x011e;\n  t.Gcaron = 0x01e6;\n  t.Gcedilla = 0x0122;\n  t.Gcircle = 0x24bc;\n  t.Gcircumflex = 0x011c;\n  t.Gcommaaccent = 0x0122;\n  t.Gdot = 0x0120;\n  t.Gdotaccent = 0x0120;\n  t.Gecyrillic = 0x0413;\n  t.Ghadarmenian = 0x0542;\n  t.Ghemiddlehookcyrillic = 0x0494;\n  t.Ghestrokecyrillic = 0x0492;\n  t.Gheupturncyrillic = 0x0490;\n  t.Ghook = 0x0193;\n  t.Gimarmenian = 0x0533;\n  t.Gjecyrillic = 0x0403;\n  t.Gmacron = 0x1e20;\n  t.Gmonospace = 0xff27;\n  t.Grave = 0xf6ce;\n  t.Gravesmall = 0xf760;\n  t.Gsmall = 0xf767;\n  t.Gsmallhook = 0x029b;\n  t.Gstroke = 0x01e4;\n  t.H = 0x0048;\n  t.H18533 = 0x25cf;\n  t.H18543 = 0x25aa;\n  t.H18551 = 0x25ab;\n  t.H22073 = 0x25a1;\n  t.HPsquare = 0x33cb;\n  t.Haabkhasiancyrillic = 0x04a8;\n  t.Hadescendercyrillic = 0x04b2;\n  t.Hardsigncyrillic = 0x042a;\n  t.Hbar = 0x0126;\n  t.Hbrevebelow = 0x1e2a;\n  t.Hcedilla = 0x1e28;\n  t.Hcircle = 0x24bd;\n  t.Hcircumflex = 0x0124;\n  t.Hdieresis = 0x1e26;\n  t.Hdotaccent = 0x1e22;\n  t.Hdotbelow = 0x1e24;\n  t.Hmonospace = 0xff28;\n  t.Hoarmenian = 0x0540;\n  t.Horicoptic = 0x03e8;\n  t.Hsmall = 0xf768;\n  t.Hungarumlaut = 0xf6cf;\n  t.Hungarumlautsmall = 0xf6f8;\n  t.Hzsquare = 0x3390;\n  t.I = 0x0049;\n  t.IAcyrillic = 0x042f;\n  t.IJ = 0x0132;\n  t.IUcyrillic = 0x042e;\n  t.Iacute = 0x00cd;\n  t.Iacutesmall = 0xf7ed;\n  t.Ibreve = 0x012c;\n  t.Icaron = 0x01cf;\n  t.Icircle = 0x24be;\n  t.Icircumflex = 0x00ce;\n  t.Icircumflexsmall = 0xf7ee;\n  t.Icyrillic = 0x0406;\n  t.Idblgrave = 0x0208;\n  t.Idieresis = 0x00cf;\n  t.Idieresisacute = 0x1e2e;\n  t.Idieresiscyrillic = 0x04e4;\n  t.Idieresissmall = 0xf7ef;\n  t.Idot = 0x0130;\n  t.Idotaccent = 0x0130;\n  t.Idotbelow = 0x1eca;\n  t.Iebrevecyrillic = 0x04d6;\n  t.Iecyrillic = 0x0415;\n  t.Ifraktur = 0x2111;\n  t.Igrave = 0x00cc;\n  t.Igravesmall = 0xf7ec;\n  t.Ihookabove = 0x1ec8;\n  t.Iicyrillic = 0x0418;\n  t.Iinvertedbreve = 0x020a;\n  t.Iishortcyrillic = 0x0419;\n  t.Imacron = 0x012a;\n  t.Imacroncyrillic = 0x04e2;\n  t.Imonospace = 0xff29;\n  t.Iniarmenian = 0x053b;\n  t.Iocyrillic = 0x0401;\n  t.Iogonek = 0x012e;\n  t.Iota = 0x0399;\n  t.Iotaafrican = 0x0196;\n  t.Iotadieresis = 0x03aa;\n  t.Iotatonos = 0x038a;\n  t.Ismall = 0xf769;\n  t.Istroke = 0x0197;\n  t.Itilde = 0x0128;\n  t.Itildebelow = 0x1e2c;\n  t.Izhitsacyrillic = 0x0474;\n  t.Izhitsadblgravecyrillic = 0x0476;\n  t.J = 0x004a;\n  t.Jaarmenian = 0x0541;\n  t.Jcircle = 0x24bf;\n  t.Jcircumflex = 0x0134;\n  t.Jecyrillic = 0x0408;\n  t.Jheharmenian = 0x054b;\n  t.Jmonospace = 0xff2a;\n  t.Jsmall = 0xf76a;\n  t.K = 0x004b;\n  t.KBsquare = 0x3385;\n  t.KKsquare = 0x33cd;\n  t.Kabashkircyrillic = 0x04a0;\n  t.Kacute = 0x1e30;\n  t.Kacyrillic = 0x041a;\n  t.Kadescendercyrillic = 0x049a;\n  t.Kahookcyrillic = 0x04c3;\n  t.Kappa = 0x039a;\n  t.Kastrokecyrillic = 0x049e;\n  t.Kaverticalstrokecyrillic = 0x049c;\n  t.Kcaron = 0x01e8;\n  t.Kcedilla = 0x0136;\n  t.Kcircle = 0x24c0;\n  t.Kcommaaccent = 0x0136;\n  t.Kdotbelow = 0x1e32;\n  t.Keharmenian = 0x0554;\n  t.Kenarmenian = 0x053f;\n  t.Khacyrillic = 0x0425;\n  t.Kheicoptic = 0x03e6;\n  t.Khook = 0x0198;\n  t.Kjecyrillic = 0x040c;\n  t.Klinebelow = 0x1e34;\n  t.Kmonospace = 0xff2b;\n  t.Koppacyrillic = 0x0480;\n  t.Koppagreek = 0x03de;\n  t.Ksicyrillic = 0x046e;\n  t.Ksmall = 0xf76b;\n  t.L = 0x004c;\n  t.LJ = 0x01c7;\n  t.LL = 0xf6bf;\n  t.Lacute = 0x0139;\n  t.Lambda = 0x039b;\n  t.Lcaron = 0x013d;\n  t.Lcedilla = 0x013b;\n  t.Lcircle = 0x24c1;\n  t.Lcircumflexbelow = 0x1e3c;\n  t.Lcommaaccent = 0x013b;\n  t.Ldot = 0x013f;\n  t.Ldotaccent = 0x013f;\n  t.Ldotbelow = 0x1e36;\n  t.Ldotbelowmacron = 0x1e38;\n  t.Liwnarmenian = 0x053c;\n  t.Lj = 0x01c8;\n  t.Ljecyrillic = 0x0409;\n  t.Llinebelow = 0x1e3a;\n  t.Lmonospace = 0xff2c;\n  t.Lslash = 0x0141;\n  t.Lslashsmall = 0xf6f9;\n  t.Lsmall = 0xf76c;\n  t.M = 0x004d;\n  t.MBsquare = 0x3386;\n  t.Macron = 0xf6d0;\n  t.Macronsmall = 0xf7af;\n  t.Macute = 0x1e3e;\n  t.Mcircle = 0x24c2;\n  t.Mdotaccent = 0x1e40;\n  t.Mdotbelow = 0x1e42;\n  t.Menarmenian = 0x0544;\n  t.Mmonospace = 0xff2d;\n  t.Msmall = 0xf76d;\n  t.Mturned = 0x019c;\n  t.Mu = 0x039c;\n  t.N = 0x004e;\n  t.NJ = 0x01ca;\n  t.Nacute = 0x0143;\n  t.Ncaron = 0x0147;\n  t.Ncedilla = 0x0145;\n  t.Ncircle = 0x24c3;\n  t.Ncircumflexbelow = 0x1e4a;\n  t.Ncommaaccent = 0x0145;\n  t.Ndotaccent = 0x1e44;\n  t.Ndotbelow = 0x1e46;\n  t.Nhookleft = 0x019d;\n  t.Nineroman = 0x2168;\n  t.Nj = 0x01cb;\n  t.Njecyrillic = 0x040a;\n  t.Nlinebelow = 0x1e48;\n  t.Nmonospace = 0xff2e;\n  t.Nowarmenian = 0x0546;\n  t.Nsmall = 0xf76e;\n  t.Ntilde = 0x00d1;\n  t.Ntildesmall = 0xf7f1;\n  t.Nu = 0x039d;\n  t.O = 0x004f;\n  t.OE = 0x0152;\n  t.OEsmall = 0xf6fa;\n  t.Oacute = 0x00d3;\n  t.Oacutesmall = 0xf7f3;\n  t.Obarredcyrillic = 0x04e8;\n  t.Obarreddieresiscyrillic = 0x04ea;\n  t.Obreve = 0x014e;\n  t.Ocaron = 0x01d1;\n  t.Ocenteredtilde = 0x019f;\n  t.Ocircle = 0x24c4;\n  t.Ocircumflex = 0x00d4;\n  t.Ocircumflexacute = 0x1ed0;\n  t.Ocircumflexdotbelow = 0x1ed8;\n  t.Ocircumflexgrave = 0x1ed2;\n  t.Ocircumflexhookabove = 0x1ed4;\n  t.Ocircumflexsmall = 0xf7f4;\n  t.Ocircumflextilde = 0x1ed6;\n  t.Ocyrillic = 0x041e;\n  t.Odblacute = 0x0150;\n  t.Odblgrave = 0x020c;\n  t.Odieresis = 0x00d6;\n  t.Odieresiscyrillic = 0x04e6;\n  t.Odieresissmall = 0xf7f6;\n  t.Odotbelow = 0x1ecc;\n  t.Ogoneksmall = 0xf6fb;\n  t.Ograve = 0x00d2;\n  t.Ogravesmall = 0xf7f2;\n  t.Oharmenian = 0x0555;\n  t.Ohm = 0x2126;\n  t.Ohookabove = 0x1ece;\n  t.Ohorn = 0x01a0;\n  t.Ohornacute = 0x1eda;\n  t.Ohorndotbelow = 0x1ee2;\n  t.Ohorngrave = 0x1edc;\n  t.Ohornhookabove = 0x1ede;\n  t.Ohorntilde = 0x1ee0;\n  t.Ohungarumlaut = 0x0150;\n  t.Oi = 0x01a2;\n  t.Oinvertedbreve = 0x020e;\n  t.Omacron = 0x014c;\n  t.Omacronacute = 0x1e52;\n  t.Omacrongrave = 0x1e50;\n  t.Omega = 0x2126;\n  t.Omegacyrillic = 0x0460;\n  t.Omegagreek = 0x03a9;\n  t.Omegaroundcyrillic = 0x047a;\n  t.Omegatitlocyrillic = 0x047c;\n  t.Omegatonos = 0x038f;\n  t.Omicron = 0x039f;\n  t.Omicrontonos = 0x038c;\n  t.Omonospace = 0xff2f;\n  t.Oneroman = 0x2160;\n  t.Oogonek = 0x01ea;\n  t.Oogonekmacron = 0x01ec;\n  t.Oopen = 0x0186;\n  t.Oslash = 0x00d8;\n  t.Oslashacute = 0x01fe;\n  t.Oslashsmall = 0xf7f8;\n  t.Osmall = 0xf76f;\n  t.Ostrokeacute = 0x01fe;\n  t.Otcyrillic = 0x047e;\n  t.Otilde = 0x00d5;\n  t.Otildeacute = 0x1e4c;\n  t.Otildedieresis = 0x1e4e;\n  t.Otildesmall = 0xf7f5;\n  t.P = 0x0050;\n  t.Pacute = 0x1e54;\n  t.Pcircle = 0x24c5;\n  t.Pdotaccent = 0x1e56;\n  t.Pecyrillic = 0x041f;\n  t.Peharmenian = 0x054a;\n  t.Pemiddlehookcyrillic = 0x04a6;\n  t.Phi = 0x03a6;\n  t.Phook = 0x01a4;\n  t.Pi = 0x03a0;\n  t.Piwrarmenian = 0x0553;\n  t.Pmonospace = 0xff30;\n  t.Psi = 0x03a8;\n  t.Psicyrillic = 0x0470;\n  t.Psmall = 0xf770;\n  t.Q = 0x0051;\n  t.Qcircle = 0x24c6;\n  t.Qmonospace = 0xff31;\n  t.Qsmall = 0xf771;\n  t.R = 0x0052;\n  t.Raarmenian = 0x054c;\n  t.Racute = 0x0154;\n  t.Rcaron = 0x0158;\n  t.Rcedilla = 0x0156;\n  t.Rcircle = 0x24c7;\n  t.Rcommaaccent = 0x0156;\n  t.Rdblgrave = 0x0210;\n  t.Rdotaccent = 0x1e58;\n  t.Rdotbelow = 0x1e5a;\n  t.Rdotbelowmacron = 0x1e5c;\n  t.Reharmenian = 0x0550;\n  t.Rfraktur = 0x211c;\n  t.Rho = 0x03a1;\n  t.Ringsmall = 0xf6fc;\n  t.Rinvertedbreve = 0x0212;\n  t.Rlinebelow = 0x1e5e;\n  t.Rmonospace = 0xff32;\n  t.Rsmall = 0xf772;\n  t.Rsmallinverted = 0x0281;\n  t.Rsmallinvertedsuperior = 0x02b6;\n  t.S = 0x0053;\n  t.SF010000 = 0x250c;\n  t.SF020000 = 0x2514;\n  t.SF030000 = 0x2510;\n  t.SF040000 = 0x2518;\n  t.SF050000 = 0x253c;\n  t.SF060000 = 0x252c;\n  t.SF070000 = 0x2534;\n  t.SF080000 = 0x251c;\n  t.SF090000 = 0x2524;\n  t.SF100000 = 0x2500;\n  t.SF110000 = 0x2502;\n  t.SF190000 = 0x2561;\n  t.SF200000 = 0x2562;\n  t.SF210000 = 0x2556;\n  t.SF220000 = 0x2555;\n  t.SF230000 = 0x2563;\n  t.SF240000 = 0x2551;\n  t.SF250000 = 0x2557;\n  t.SF260000 = 0x255d;\n  t.SF270000 = 0x255c;\n  t.SF280000 = 0x255b;\n  t.SF360000 = 0x255e;\n  t.SF370000 = 0x255f;\n  t.SF380000 = 0x255a;\n  t.SF390000 = 0x2554;\n  t.SF400000 = 0x2569;\n  t.SF410000 = 0x2566;\n  t.SF420000 = 0x2560;\n  t.SF430000 = 0x2550;\n  t.SF440000 = 0x256c;\n  t.SF450000 = 0x2567;\n  t.SF460000 = 0x2568;\n  t.SF470000 = 0x2564;\n  t.SF480000 = 0x2565;\n  t.SF490000 = 0x2559;\n  t.SF500000 = 0x2558;\n  t.SF510000 = 0x2552;\n  t.SF520000 = 0x2553;\n  t.SF530000 = 0x256b;\n  t.SF540000 = 0x256a;\n  t.Sacute = 0x015a;\n  t.Sacutedotaccent = 0x1e64;\n  t.Sampigreek = 0x03e0;\n  t.Scaron = 0x0160;\n  t.Scarondotaccent = 0x1e66;\n  t.Scaronsmall = 0xf6fd;\n  t.Scedilla = 0x015e;\n  t.Schwa = 0x018f;\n  t.Schwacyrillic = 0x04d8;\n  t.Schwadieresiscyrillic = 0x04da;\n  t.Scircle = 0x24c8;\n  t.Scircumflex = 0x015c;\n  t.Scommaaccent = 0x0218;\n  t.Sdotaccent = 0x1e60;\n  t.Sdotbelow = 0x1e62;\n  t.Sdotbelowdotaccent = 0x1e68;\n  t.Seharmenian = 0x054d;\n  t.Sevenroman = 0x2166;\n  t.Shaarmenian = 0x0547;\n  t.Shacyrillic = 0x0428;\n  t.Shchacyrillic = 0x0429;\n  t.Sheicoptic = 0x03e2;\n  t.Shhacyrillic = 0x04ba;\n  t.Shimacoptic = 0x03ec;\n  t.Sigma = 0x03a3;\n  t.Sixroman = 0x2165;\n  t.Smonospace = 0xff33;\n  t.Softsigncyrillic = 0x042c;\n  t.Ssmall = 0xf773;\n  t.Stigmagreek = 0x03da;\n  t.T = 0x0054;\n  t.Tau = 0x03a4;\n  t.Tbar = 0x0166;\n  t.Tcaron = 0x0164;\n  t.Tcedilla = 0x0162;\n  t.Tcircle = 0x24c9;\n  t.Tcircumflexbelow = 0x1e70;\n  t.Tcommaaccent = 0x0162;\n  t.Tdotaccent = 0x1e6a;\n  t.Tdotbelow = 0x1e6c;\n  t.Tecyrillic = 0x0422;\n  t.Tedescendercyrillic = 0x04ac;\n  t.Tenroman = 0x2169;\n  t.Tetsecyrillic = 0x04b4;\n  t.Theta = 0x0398;\n  t.Thook = 0x01ac;\n  t.Thorn = 0x00de;\n  t.Thornsmall = 0xf7fe;\n  t.Threeroman = 0x2162;\n  t.Tildesmall = 0xf6fe;\n  t.Tiwnarmenian = 0x054f;\n  t.Tlinebelow = 0x1e6e;\n  t.Tmonospace = 0xff34;\n  t.Toarmenian = 0x0539;\n  t.Tonefive = 0x01bc;\n  t.Tonesix = 0x0184;\n  t.Tonetwo = 0x01a7;\n  t.Tretroflexhook = 0x01ae;\n  t.Tsecyrillic = 0x0426;\n  t.Tshecyrillic = 0x040b;\n  t.Tsmall = 0xf774;\n  t.Twelveroman = 0x216b;\n  t.Tworoman = 0x2161;\n  t.U = 0x0055;\n  t.Uacute = 0x00da;\n  t.Uacutesmall = 0xf7fa;\n  t.Ubreve = 0x016c;\n  t.Ucaron = 0x01d3;\n  t.Ucircle = 0x24ca;\n  t.Ucircumflex = 0x00db;\n  t.Ucircumflexbelow = 0x1e76;\n  t.Ucircumflexsmall = 0xf7fb;\n  t.Ucyrillic = 0x0423;\n  t.Udblacute = 0x0170;\n  t.Udblgrave = 0x0214;\n  t.Udieresis = 0x00dc;\n  t.Udieresisacute = 0x01d7;\n  t.Udieresisbelow = 0x1e72;\n  t.Udieresiscaron = 0x01d9;\n  t.Udieresiscyrillic = 0x04f0;\n  t.Udieresisgrave = 0x01db;\n  t.Udieresismacron = 0x01d5;\n  t.Udieresissmall = 0xf7fc;\n  t.Udotbelow = 0x1ee4;\n  t.Ugrave = 0x00d9;\n  t.Ugravesmall = 0xf7f9;\n  t.Uhookabove = 0x1ee6;\n  t.Uhorn = 0x01af;\n  t.Uhornacute = 0x1ee8;\n  t.Uhorndotbelow = 0x1ef0;\n  t.Uhorngrave = 0x1eea;\n  t.Uhornhookabove = 0x1eec;\n  t.Uhorntilde = 0x1eee;\n  t.Uhungarumlaut = 0x0170;\n  t.Uhungarumlautcyrillic = 0x04f2;\n  t.Uinvertedbreve = 0x0216;\n  t.Ukcyrillic = 0x0478;\n  t.Umacron = 0x016a;\n  t.Umacroncyrillic = 0x04ee;\n  t.Umacrondieresis = 0x1e7a;\n  t.Umonospace = 0xff35;\n  t.Uogonek = 0x0172;\n  t.Upsilon = 0x03a5;\n  t.Upsilon1 = 0x03d2;\n  t.Upsilonacutehooksymbolgreek = 0x03d3;\n  t.Upsilonafrican = 0x01b1;\n  t.Upsilondieresis = 0x03ab;\n  t.Upsilondieresishooksymbolgreek = 0x03d4;\n  t.Upsilonhooksymbol = 0x03d2;\n  t.Upsilontonos = 0x038e;\n  t.Uring = 0x016e;\n  t.Ushortcyrillic = 0x040e;\n  t.Usmall = 0xf775;\n  t.Ustraightcyrillic = 0x04ae;\n  t.Ustraightstrokecyrillic = 0x04b0;\n  t.Utilde = 0x0168;\n  t.Utildeacute = 0x1e78;\n  t.Utildebelow = 0x1e74;\n  t.V = 0x0056;\n  t.Vcircle = 0x24cb;\n  t.Vdotbelow = 0x1e7e;\n  t.Vecyrillic = 0x0412;\n  t.Vewarmenian = 0x054e;\n  t.Vhook = 0x01b2;\n  t.Vmonospace = 0xff36;\n  t.Voarmenian = 0x0548;\n  t.Vsmall = 0xf776;\n  t.Vtilde = 0x1e7c;\n  t.W = 0x0057;\n  t.Wacute = 0x1e82;\n  t.Wcircle = 0x24cc;\n  t.Wcircumflex = 0x0174;\n  t.Wdieresis = 0x1e84;\n  t.Wdotaccent = 0x1e86;\n  t.Wdotbelow = 0x1e88;\n  t.Wgrave = 0x1e80;\n  t.Wmonospace = 0xff37;\n  t.Wsmall = 0xf777;\n  t.X = 0x0058;\n  t.Xcircle = 0x24cd;\n  t.Xdieresis = 0x1e8c;\n  t.Xdotaccent = 0x1e8a;\n  t.Xeharmenian = 0x053d;\n  t.Xi = 0x039e;\n  t.Xmonospace = 0xff38;\n  t.Xsmall = 0xf778;\n  t.Y = 0x0059;\n  t.Yacute = 0x00dd;\n  t.Yacutesmall = 0xf7fd;\n  t.Yatcyrillic = 0x0462;\n  t.Ycircle = 0x24ce;\n  t.Ycircumflex = 0x0176;\n  t.Ydieresis = 0x0178;\n  t.Ydieresissmall = 0xf7ff;\n  t.Ydotaccent = 0x1e8e;\n  t.Ydotbelow = 0x1ef4;\n  t.Yericyrillic = 0x042b;\n  t.Yerudieresiscyrillic = 0x04f8;\n  t.Ygrave = 0x1ef2;\n  t.Yhook = 0x01b3;\n  t.Yhookabove = 0x1ef6;\n  t.Yiarmenian = 0x0545;\n  t.Yicyrillic = 0x0407;\n  t.Yiwnarmenian = 0x0552;\n  t.Ymonospace = 0xff39;\n  t.Ysmall = 0xf779;\n  t.Ytilde = 0x1ef8;\n  t.Yusbigcyrillic = 0x046a;\n  t.Yusbigiotifiedcyrillic = 0x046c;\n  t.Yuslittlecyrillic = 0x0466;\n  t.Yuslittleiotifiedcyrillic = 0x0468;\n  t.Z = 0x005a;\n  t.Zaarmenian = 0x0536;\n  t.Zacute = 0x0179;\n  t.Zcaron = 0x017d;\n  t.Zcaronsmall = 0xf6ff;\n  t.Zcircle = 0x24cf;\n  t.Zcircumflex = 0x1e90;\n  t.Zdot = 0x017b;\n  t.Zdotaccent = 0x017b;\n  t.Zdotbelow = 0x1e92;\n  t.Zecyrillic = 0x0417;\n  t.Zedescendercyrillic = 0x0498;\n  t.Zedieresiscyrillic = 0x04de;\n  t.Zeta = 0x0396;\n  t.Zhearmenian = 0x053a;\n  t.Zhebrevecyrillic = 0x04c1;\n  t.Zhecyrillic = 0x0416;\n  t.Zhedescendercyrillic = 0x0496;\n  t.Zhedieresiscyrillic = 0x04dc;\n  t.Zlinebelow = 0x1e94;\n  t.Zmonospace = 0xff3a;\n  t.Zsmall = 0xf77a;\n  t.Zstroke = 0x01b5;\n  t.a = 0x0061;\n  t.aabengali = 0x0986;\n  t.aacute = 0x00e1;\n  t.aadeva = 0x0906;\n  t.aagujarati = 0x0a86;\n  t.aagurmukhi = 0x0a06;\n  t.aamatragurmukhi = 0x0a3e;\n  t.aarusquare = 0x3303;\n  t.aavowelsignbengali = 0x09be;\n  t.aavowelsigndeva = 0x093e;\n  t.aavowelsigngujarati = 0x0abe;\n  t.abbreviationmarkarmenian = 0x055f;\n  t.abbreviationsigndeva = 0x0970;\n  t.abengali = 0x0985;\n  t.abopomofo = 0x311a;\n  t.abreve = 0x0103;\n  t.abreveacute = 0x1eaf;\n  t.abrevecyrillic = 0x04d1;\n  t.abrevedotbelow = 0x1eb7;\n  t.abrevegrave = 0x1eb1;\n  t.abrevehookabove = 0x1eb3;\n  t.abrevetilde = 0x1eb5;\n  t.acaron = 0x01ce;\n  t.acircle = 0x24d0;\n  t.acircumflex = 0x00e2;\n  t.acircumflexacute = 0x1ea5;\n  t.acircumflexdotbelow = 0x1ead;\n  t.acircumflexgrave = 0x1ea7;\n  t.acircumflexhookabove = 0x1ea9;\n  t.acircumflextilde = 0x1eab;\n  t.acute = 0x00b4;\n  t.acutebelowcmb = 0x0317;\n  t.acutecmb = 0x0301;\n  t.acutecomb = 0x0301;\n  t.acutedeva = 0x0954;\n  t.acutelowmod = 0x02cf;\n  t.acutetonecmb = 0x0341;\n  t.acyrillic = 0x0430;\n  t.adblgrave = 0x0201;\n  t.addakgurmukhi = 0x0a71;\n  t.adeva = 0x0905;\n  t.adieresis = 0x00e4;\n  t.adieresiscyrillic = 0x04d3;\n  t.adieresismacron = 0x01df;\n  t.adotbelow = 0x1ea1;\n  t.adotmacron = 0x01e1;\n  t.ae = 0x00e6;\n  t.aeacute = 0x01fd;\n  t.aekorean = 0x3150;\n  t.aemacron = 0x01e3;\n  t.afii00208 = 0x2015;\n  t.afii08941 = 0x20a4;\n  t.afii10017 = 0x0410;\n  t.afii10018 = 0x0411;\n  t.afii10019 = 0x0412;\n  t.afii10020 = 0x0413;\n  t.afii10021 = 0x0414;\n  t.afii10022 = 0x0415;\n  t.afii10023 = 0x0401;\n  t.afii10024 = 0x0416;\n  t.afii10025 = 0x0417;\n  t.afii10026 = 0x0418;\n  t.afii10027 = 0x0419;\n  t.afii10028 = 0x041a;\n  t.afii10029 = 0x041b;\n  t.afii10030 = 0x041c;\n  t.afii10031 = 0x041d;\n  t.afii10032 = 0x041e;\n  t.afii10033 = 0x041f;\n  t.afii10034 = 0x0420;\n  t.afii10035 = 0x0421;\n  t.afii10036 = 0x0422;\n  t.afii10037 = 0x0423;\n  t.afii10038 = 0x0424;\n  t.afii10039 = 0x0425;\n  t.afii10040 = 0x0426;\n  t.afii10041 = 0x0427;\n  t.afii10042 = 0x0428;\n  t.afii10043 = 0x0429;\n  t.afii10044 = 0x042a;\n  t.afii10045 = 0x042b;\n  t.afii10046 = 0x042c;\n  t.afii10047 = 0x042d;\n  t.afii10048 = 0x042e;\n  t.afii10049 = 0x042f;\n  t.afii10050 = 0x0490;\n  t.afii10051 = 0x0402;\n  t.afii10052 = 0x0403;\n  t.afii10053 = 0x0404;\n  t.afii10054 = 0x0405;\n  t.afii10055 = 0x0406;\n  t.afii10056 = 0x0407;\n  t.afii10057 = 0x0408;\n  t.afii10058 = 0x0409;\n  t.afii10059 = 0x040a;\n  t.afii10060 = 0x040b;\n  t.afii10061 = 0x040c;\n  t.afii10062 = 0x040e;\n  t.afii10063 = 0xf6c4;\n  t.afii10064 = 0xf6c5;\n  t.afii10065 = 0x0430;\n  t.afii10066 = 0x0431;\n  t.afii10067 = 0x0432;\n  t.afii10068 = 0x0433;\n  t.afii10069 = 0x0434;\n  t.afii10070 = 0x0435;\n  t.afii10071 = 0x0451;\n  t.afii10072 = 0x0436;\n  t.afii10073 = 0x0437;\n  t.afii10074 = 0x0438;\n  t.afii10075 = 0x0439;\n  t.afii10076 = 0x043a;\n  t.afii10077 = 0x043b;\n  t.afii10078 = 0x043c;\n  t.afii10079 = 0x043d;\n  t.afii10080 = 0x043e;\n  t.afii10081 = 0x043f;\n  t.afii10082 = 0x0440;\n  t.afii10083 = 0x0441;\n  t.afii10084 = 0x0442;\n  t.afii10085 = 0x0443;\n  t.afii10086 = 0x0444;\n  t.afii10087 = 0x0445;\n  t.afii10088 = 0x0446;\n  t.afii10089 = 0x0447;\n  t.afii10090 = 0x0448;\n  t.afii10091 = 0x0449;\n  t.afii10092 = 0x044a;\n  t.afii10093 = 0x044b;\n  t.afii10094 = 0x044c;\n  t.afii10095 = 0x044d;\n  t.afii10096 = 0x044e;\n  t.afii10097 = 0x044f;\n  t.afii10098 = 0x0491;\n  t.afii10099 = 0x0452;\n  t.afii10100 = 0x0453;\n  t.afii10101 = 0x0454;\n  t.afii10102 = 0x0455;\n  t.afii10103 = 0x0456;\n  t.afii10104 = 0x0457;\n  t.afii10105 = 0x0458;\n  t.afii10106 = 0x0459;\n  t.afii10107 = 0x045a;\n  t.afii10108 = 0x045b;\n  t.afii10109 = 0x045c;\n  t.afii10110 = 0x045e;\n  t.afii10145 = 0x040f;\n  t.afii10146 = 0x0462;\n  t.afii10147 = 0x0472;\n  t.afii10148 = 0x0474;\n  t.afii10192 = 0xf6c6;\n  t.afii10193 = 0x045f;\n  t.afii10194 = 0x0463;\n  t.afii10195 = 0x0473;\n  t.afii10196 = 0x0475;\n  t.afii10831 = 0xf6c7;\n  t.afii10832 = 0xf6c8;\n  t.afii10846 = 0x04d9;\n  t.afii299 = 0x200e;\n  t.afii300 = 0x200f;\n  t.afii301 = 0x200d;\n  t.afii57381 = 0x066a;\n  t.afii57388 = 0x060c;\n  t.afii57392 = 0x0660;\n  t.afii57393 = 0x0661;\n  t.afii57394 = 0x0662;\n  t.afii57395 = 0x0663;\n  t.afii57396 = 0x0664;\n  t.afii57397 = 0x0665;\n  t.afii57398 = 0x0666;\n  t.afii57399 = 0x0667;\n  t.afii57400 = 0x0668;\n  t.afii57401 = 0x0669;\n  t.afii57403 = 0x061b;\n  t.afii57407 = 0x061f;\n  t.afii57409 = 0x0621;\n  t.afii57410 = 0x0622;\n  t.afii57411 = 0x0623;\n  t.afii57412 = 0x0624;\n  t.afii57413 = 0x0625;\n  t.afii57414 = 0x0626;\n  t.afii57415 = 0x0627;\n  t.afii57416 = 0x0628;\n  t.afii57417 = 0x0629;\n  t.afii57418 = 0x062a;\n  t.afii57419 = 0x062b;\n  t.afii57420 = 0x062c;\n  t.afii57421 = 0x062d;\n  t.afii57422 = 0x062e;\n  t.afii57423 = 0x062f;\n  t.afii57424 = 0x0630;\n  t.afii57425 = 0x0631;\n  t.afii57426 = 0x0632;\n  t.afii57427 = 0x0633;\n  t.afii57428 = 0x0634;\n  t.afii57429 = 0x0635;\n  t.afii57430 = 0x0636;\n  t.afii57431 = 0x0637;\n  t.afii57432 = 0x0638;\n  t.afii57433 = 0x0639;\n  t.afii57434 = 0x063a;\n  t.afii57440 = 0x0640;\n  t.afii57441 = 0x0641;\n  t.afii57442 = 0x0642;\n  t.afii57443 = 0x0643;\n  t.afii57444 = 0x0644;\n  t.afii57445 = 0x0645;\n  t.afii57446 = 0x0646;\n  t.afii57448 = 0x0648;\n  t.afii57449 = 0x0649;\n  t.afii57450 = 0x064a;\n  t.afii57451 = 0x064b;\n  t.afii57452 = 0x064c;\n  t.afii57453 = 0x064d;\n  t.afii57454 = 0x064e;\n  t.afii57455 = 0x064f;\n  t.afii57456 = 0x0650;\n  t.afii57457 = 0x0651;\n  t.afii57458 = 0x0652;\n  t.afii57470 = 0x0647;\n  t.afii57505 = 0x06a4;\n  t.afii57506 = 0x067e;\n  t.afii57507 = 0x0686;\n  t.afii57508 = 0x0698;\n  t.afii57509 = 0x06af;\n  t.afii57511 = 0x0679;\n  t.afii57512 = 0x0688;\n  t.afii57513 = 0x0691;\n  t.afii57514 = 0x06ba;\n  t.afii57519 = 0x06d2;\n  t.afii57534 = 0x06d5;\n  t.afii57636 = 0x20aa;\n  t.afii57645 = 0x05be;\n  t.afii57658 = 0x05c3;\n  t.afii57664 = 0x05d0;\n  t.afii57665 = 0x05d1;\n  t.afii57666 = 0x05d2;\n  t.afii57667 = 0x05d3;\n  t.afii57668 = 0x05d4;\n  t.afii57669 = 0x05d5;\n  t.afii57670 = 0x05d6;\n  t.afii57671 = 0x05d7;\n  t.afii57672 = 0x05d8;\n  t.afii57673 = 0x05d9;\n  t.afii57674 = 0x05da;\n  t.afii57675 = 0x05db;\n  t.afii57676 = 0x05dc;\n  t.afii57677 = 0x05dd;\n  t.afii57678 = 0x05de;\n  t.afii57679 = 0x05df;\n  t.afii57680 = 0x05e0;\n  t.afii57681 = 0x05e1;\n  t.afii57682 = 0x05e2;\n  t.afii57683 = 0x05e3;\n  t.afii57684 = 0x05e4;\n  t.afii57685 = 0x05e5;\n  t.afii57686 = 0x05e6;\n  t.afii57687 = 0x05e7;\n  t.afii57688 = 0x05e8;\n  t.afii57689 = 0x05e9;\n  t.afii57690 = 0x05ea;\n  t.afii57694 = 0xfb2a;\n  t.afii57695 = 0xfb2b;\n  t.afii57700 = 0xfb4b;\n  t.afii57705 = 0xfb1f;\n  t.afii57716 = 0x05f0;\n  t.afii57717 = 0x05f1;\n  t.afii57718 = 0x05f2;\n  t.afii57723 = 0xfb35;\n  t.afii57793 = 0x05b4;\n  t.afii57794 = 0x05b5;\n  t.afii57795 = 0x05b6;\n  t.afii57796 = 0x05bb;\n  t.afii57797 = 0x05b8;\n  t.afii57798 = 0x05b7;\n  t.afii57799 = 0x05b0;\n  t.afii57800 = 0x05b2;\n  t.afii57801 = 0x05b1;\n  t.afii57802 = 0x05b3;\n  t.afii57803 = 0x05c2;\n  t.afii57804 = 0x05c1;\n  t.afii57806 = 0x05b9;\n  t.afii57807 = 0x05bc;\n  t.afii57839 = 0x05bd;\n  t.afii57841 = 0x05bf;\n  t.afii57842 = 0x05c0;\n  t.afii57929 = 0x02bc;\n  t.afii61248 = 0x2105;\n  t.afii61289 = 0x2113;\n  t.afii61352 = 0x2116;\n  t.afii61573 = 0x202c;\n  t.afii61574 = 0x202d;\n  t.afii61575 = 0x202e;\n  t.afii61664 = 0x200c;\n  t.afii63167 = 0x066d;\n  t.afii64937 = 0x02bd;\n  t.agrave = 0x00e0;\n  t.agujarati = 0x0a85;\n  t.agurmukhi = 0x0a05;\n  t.ahiragana = 0x3042;\n  t.ahookabove = 0x1ea3;\n  t.aibengali = 0x0990;\n  t.aibopomofo = 0x311e;\n  t.aideva = 0x0910;\n  t.aiecyrillic = 0x04d5;\n  t.aigujarati = 0x0a90;\n  t.aigurmukhi = 0x0a10;\n  t.aimatragurmukhi = 0x0a48;\n  t.ainarabic = 0x0639;\n  t.ainfinalarabic = 0xfeca;\n  t.aininitialarabic = 0xfecb;\n  t.ainmedialarabic = 0xfecc;\n  t.ainvertedbreve = 0x0203;\n  t.aivowelsignbengali = 0x09c8;\n  t.aivowelsigndeva = 0x0948;\n  t.aivowelsigngujarati = 0x0ac8;\n  t.akatakana = 0x30a2;\n  t.akatakanahalfwidth = 0xff71;\n  t.akorean = 0x314f;\n  t.alef = 0x05d0;\n  t.alefarabic = 0x0627;\n  t.alefdageshhebrew = 0xfb30;\n  t.aleffinalarabic = 0xfe8e;\n  t.alefhamzaabovearabic = 0x0623;\n  t.alefhamzaabovefinalarabic = 0xfe84;\n  t.alefhamzabelowarabic = 0x0625;\n  t.alefhamzabelowfinalarabic = 0xfe88;\n  t.alefhebrew = 0x05d0;\n  t.aleflamedhebrew = 0xfb4f;\n  t.alefmaddaabovearabic = 0x0622;\n  t.alefmaddaabovefinalarabic = 0xfe82;\n  t.alefmaksuraarabic = 0x0649;\n  t.alefmaksurafinalarabic = 0xfef0;\n  t.alefmaksurainitialarabic = 0xfef3;\n  t.alefmaksuramedialarabic = 0xfef4;\n  t.alefpatahhebrew = 0xfb2e;\n  t.alefqamatshebrew = 0xfb2f;\n  t.aleph = 0x2135;\n  t.allequal = 0x224c;\n  t.alpha = 0x03b1;\n  t.alphatonos = 0x03ac;\n  t.amacron = 0x0101;\n  t.amonospace = 0xff41;\n  t.ampersand = 0x0026;\n  t.ampersandmonospace = 0xff06;\n  t.ampersandsmall = 0xf726;\n  t.amsquare = 0x33c2;\n  t.anbopomofo = 0x3122;\n  t.angbopomofo = 0x3124;\n  t.angbracketleft = 0x3008; // Glyph is missing from Adobe's original list.\n  t.angbracketright = 0x3009; // Glyph is missing from Adobe's original list.\n  t.angkhankhuthai = 0x0e5a;\n  t.angle = 0x2220;\n  t.anglebracketleft = 0x3008;\n  t.anglebracketleftvertical = 0xfe3f;\n  t.anglebracketright = 0x3009;\n  t.anglebracketrightvertical = 0xfe40;\n  t.angleleft = 0x2329;\n  t.angleright = 0x232a;\n  t.angstrom = 0x212b;\n  t.anoteleia = 0x0387;\n  t.anudattadeva = 0x0952;\n  t.anusvarabengali = 0x0982;\n  t.anusvaradeva = 0x0902;\n  t.anusvaragujarati = 0x0a82;\n  t.aogonek = 0x0105;\n  t.apaatosquare = 0x3300;\n  t.aparen = 0x249c;\n  t.apostrophearmenian = 0x055a;\n  t.apostrophemod = 0x02bc;\n  t.apple = 0xf8ff;\n  t.approaches = 0x2250;\n  t.approxequal = 0x2248;\n  t.approxequalorimage = 0x2252;\n  t.approximatelyequal = 0x2245;\n  t.araeaekorean = 0x318e;\n  t.araeakorean = 0x318d;\n  t.arc = 0x2312;\n  t.arighthalfring = 0x1e9a;\n  t.aring = 0x00e5;\n  t.aringacute = 0x01fb;\n  t.aringbelow = 0x1e01;\n  t.arrowboth = 0x2194;\n  t.arrowdashdown = 0x21e3;\n  t.arrowdashleft = 0x21e0;\n  t.arrowdashright = 0x21e2;\n  t.arrowdashup = 0x21e1;\n  t.arrowdblboth = 0x21d4;\n  t.arrowdbldown = 0x21d3;\n  t.arrowdblleft = 0x21d0;\n  t.arrowdblright = 0x21d2;\n  t.arrowdblup = 0x21d1;\n  t.arrowdown = 0x2193;\n  t.arrowdownleft = 0x2199;\n  t.arrowdownright = 0x2198;\n  t.arrowdownwhite = 0x21e9;\n  t.arrowheaddownmod = 0x02c5;\n  t.arrowheadleftmod = 0x02c2;\n  t.arrowheadrightmod = 0x02c3;\n  t.arrowheadupmod = 0x02c4;\n  t.arrowhorizex = 0xf8e7;\n  t.arrowleft = 0x2190;\n  t.arrowleftdbl = 0x21d0;\n  t.arrowleftdblstroke = 0x21cd;\n  t.arrowleftoverright = 0x21c6;\n  t.arrowleftwhite = 0x21e6;\n  t.arrowright = 0x2192;\n  t.arrowrightdblstroke = 0x21cf;\n  t.arrowrightheavy = 0x279e;\n  t.arrowrightoverleft = 0x21c4;\n  t.arrowrightwhite = 0x21e8;\n  t.arrowtableft = 0x21e4;\n  t.arrowtabright = 0x21e5;\n  t.arrowup = 0x2191;\n  t.arrowupdn = 0x2195;\n  t.arrowupdnbse = 0x21a8;\n  t.arrowupdownbase = 0x21a8;\n  t.arrowupleft = 0x2196;\n  t.arrowupleftofdown = 0x21c5;\n  t.arrowupright = 0x2197;\n  t.arrowupwhite = 0x21e7;\n  t.arrowvertex = 0xf8e6;\n  t.asciicircum = 0x005e;\n  t.asciicircummonospace = 0xff3e;\n  t.asciitilde = 0x007e;\n  t.asciitildemonospace = 0xff5e;\n  t.ascript = 0x0251;\n  t.ascriptturned = 0x0252;\n  t.asmallhiragana = 0x3041;\n  t.asmallkatakana = 0x30a1;\n  t.asmallkatakanahalfwidth = 0xff67;\n  t.asterisk = 0x002a;\n  t.asteriskaltonearabic = 0x066d;\n  t.asteriskarabic = 0x066d;\n  t.asteriskmath = 0x2217;\n  t.asteriskmonospace = 0xff0a;\n  t.asterisksmall = 0xfe61;\n  t.asterism = 0x2042;\n  t.asuperior = 0xf6e9;\n  t.asymptoticallyequal = 0x2243;\n  t.at = 0x0040;\n  t.atilde = 0x00e3;\n  t.atmonospace = 0xff20;\n  t.atsmall = 0xfe6b;\n  t.aturned = 0x0250;\n  t.aubengali = 0x0994;\n  t.aubopomofo = 0x3120;\n  t.audeva = 0x0914;\n  t.augujarati = 0x0a94;\n  t.augurmukhi = 0x0a14;\n  t.aulengthmarkbengali = 0x09d7;\n  t.aumatragurmukhi = 0x0a4c;\n  t.auvowelsignbengali = 0x09cc;\n  t.auvowelsigndeva = 0x094c;\n  t.auvowelsigngujarati = 0x0acc;\n  t.avagrahadeva = 0x093d;\n  t.aybarmenian = 0x0561;\n  t.ayin = 0x05e2;\n  t.ayinaltonehebrew = 0xfb20;\n  t.ayinhebrew = 0x05e2;\n  t.b = 0x0062;\n  t.babengali = 0x09ac;\n  t.backslash = 0x005c;\n  t.backslashmonospace = 0xff3c;\n  t.badeva = 0x092c;\n  t.bagujarati = 0x0aac;\n  t.bagurmukhi = 0x0a2c;\n  t.bahiragana = 0x3070;\n  t.bahtthai = 0x0e3f;\n  t.bakatakana = 0x30d0;\n  t.bar = 0x007c;\n  t.barmonospace = 0xff5c;\n  t.bbopomofo = 0x3105;\n  t.bcircle = 0x24d1;\n  t.bdotaccent = 0x1e03;\n  t.bdotbelow = 0x1e05;\n  t.beamedsixteenthnotes = 0x266c;\n  t.because = 0x2235;\n  t.becyrillic = 0x0431;\n  t.beharabic = 0x0628;\n  t.behfinalarabic = 0xfe90;\n  t.behinitialarabic = 0xfe91;\n  t.behiragana = 0x3079;\n  t.behmedialarabic = 0xfe92;\n  t.behmeeminitialarabic = 0xfc9f;\n  t.behmeemisolatedarabic = 0xfc08;\n  t.behnoonfinalarabic = 0xfc6d;\n  t.bekatakana = 0x30d9;\n  t.benarmenian = 0x0562;\n  t.bet = 0x05d1;\n  t.beta = 0x03b2;\n  t.betasymbolgreek = 0x03d0;\n  t.betdagesh = 0xfb31;\n  t.betdageshhebrew = 0xfb31;\n  t.bethebrew = 0x05d1;\n  t.betrafehebrew = 0xfb4c;\n  t.bhabengali = 0x09ad;\n  t.bhadeva = 0x092d;\n  t.bhagujarati = 0x0aad;\n  t.bhagurmukhi = 0x0a2d;\n  t.bhook = 0x0253;\n  t.bihiragana = 0x3073;\n  t.bikatakana = 0x30d3;\n  t.bilabialclick = 0x0298;\n  t.bindigurmukhi = 0x0a02;\n  t.birusquare = 0x3331;\n  t.blackcircle = 0x25cf;\n  t.blackdiamond = 0x25c6;\n  t.blackdownpointingtriangle = 0x25bc;\n  t.blackleftpointingpointer = 0x25c4;\n  t.blackleftpointingtriangle = 0x25c0;\n  t.blacklenticularbracketleft = 0x3010;\n  t.blacklenticularbracketleftvertical = 0xfe3b;\n  t.blacklenticularbracketright = 0x3011;\n  t.blacklenticularbracketrightvertical = 0xfe3c;\n  t.blacklowerlefttriangle = 0x25e3;\n  t.blacklowerrighttriangle = 0x25e2;\n  t.blackrectangle = 0x25ac;\n  t.blackrightpointingpointer = 0x25ba;\n  t.blackrightpointingtriangle = 0x25b6;\n  t.blacksmallsquare = 0x25aa;\n  t.blacksmilingface = 0x263b;\n  t.blacksquare = 0x25a0;\n  t.blackstar = 0x2605;\n  t.blackupperlefttriangle = 0x25e4;\n  t.blackupperrighttriangle = 0x25e5;\n  t.blackuppointingsmalltriangle = 0x25b4;\n  t.blackuppointingtriangle = 0x25b2;\n  t.blank = 0x2423;\n  t.blinebelow = 0x1e07;\n  t.block = 0x2588;\n  t.bmonospace = 0xff42;\n  t.bobaimaithai = 0x0e1a;\n  t.bohiragana = 0x307c;\n  t.bokatakana = 0x30dc;\n  t.bparen = 0x249d;\n  t.bqsquare = 0x33c3;\n  t.braceex = 0xf8f4;\n  t.braceleft = 0x007b;\n  t.braceleftbt = 0xf8f3;\n  t.braceleftmid = 0xf8f2;\n  t.braceleftmonospace = 0xff5b;\n  t.braceleftsmall = 0xfe5b;\n  t.bracelefttp = 0xf8f1;\n  t.braceleftvertical = 0xfe37;\n  t.braceright = 0x007d;\n  t.bracerightbt = 0xf8fe;\n  t.bracerightmid = 0xf8fd;\n  t.bracerightmonospace = 0xff5d;\n  t.bracerightsmall = 0xfe5c;\n  t.bracerighttp = 0xf8fc;\n  t.bracerightvertical = 0xfe38;\n  t.bracketleft = 0x005b;\n  t.bracketleftbt = 0xf8f0;\n  t.bracketleftex = 0xf8ef;\n  t.bracketleftmonospace = 0xff3b;\n  t.bracketlefttp = 0xf8ee;\n  t.bracketright = 0x005d;\n  t.bracketrightbt = 0xf8fb;\n  t.bracketrightex = 0xf8fa;\n  t.bracketrightmonospace = 0xff3d;\n  t.bracketrighttp = 0xf8f9;\n  t.breve = 0x02d8;\n  t.brevebelowcmb = 0x032e;\n  t.brevecmb = 0x0306;\n  t.breveinvertedbelowcmb = 0x032f;\n  t.breveinvertedcmb = 0x0311;\n  t.breveinverteddoublecmb = 0x0361;\n  t.bridgebelowcmb = 0x032a;\n  t.bridgeinvertedbelowcmb = 0x033a;\n  t.brokenbar = 0x00a6;\n  t.bstroke = 0x0180;\n  t.bsuperior = 0xf6ea;\n  t.btopbar = 0x0183;\n  t.buhiragana = 0x3076;\n  t.bukatakana = 0x30d6;\n  t.bullet = 0x2022;\n  t.bulletinverse = 0x25d8;\n  t.bulletoperator = 0x2219;\n  t.bullseye = 0x25ce;\n  t.c = 0x0063;\n  t.caarmenian = 0x056e;\n  t.cabengali = 0x099a;\n  t.cacute = 0x0107;\n  t.cadeva = 0x091a;\n  t.cagujarati = 0x0a9a;\n  t.cagurmukhi = 0x0a1a;\n  t.calsquare = 0x3388;\n  t.candrabindubengali = 0x0981;\n  t.candrabinducmb = 0x0310;\n  t.candrabindudeva = 0x0901;\n  t.candrabindugujarati = 0x0a81;\n  t.capslock = 0x21ea;\n  t.careof = 0x2105;\n  t.caron = 0x02c7;\n  t.caronbelowcmb = 0x032c;\n  t.caroncmb = 0x030c;\n  t.carriagereturn = 0x21b5;\n  t.cbopomofo = 0x3118;\n  t.ccaron = 0x010d;\n  t.ccedilla = 0x00e7;\n  t.ccedillaacute = 0x1e09;\n  t.ccircle = 0x24d2;\n  t.ccircumflex = 0x0109;\n  t.ccurl = 0x0255;\n  t.cdot = 0x010b;\n  t.cdotaccent = 0x010b;\n  t.cdsquare = 0x33c5;\n  t.cedilla = 0x00b8;\n  t.cedillacmb = 0x0327;\n  t.cent = 0x00a2;\n  t.centigrade = 0x2103;\n  t.centinferior = 0xf6df;\n  t.centmonospace = 0xffe0;\n  t.centoldstyle = 0xf7a2;\n  t.centsuperior = 0xf6e0;\n  t.chaarmenian = 0x0579;\n  t.chabengali = 0x099b;\n  t.chadeva = 0x091b;\n  t.chagujarati = 0x0a9b;\n  t.chagurmukhi = 0x0a1b;\n  t.chbopomofo = 0x3114;\n  t.cheabkhasiancyrillic = 0x04bd;\n  t.checkmark = 0x2713;\n  t.checyrillic = 0x0447;\n  t.chedescenderabkhasiancyrillic = 0x04bf;\n  t.chedescendercyrillic = 0x04b7;\n  t.chedieresiscyrillic = 0x04f5;\n  t.cheharmenian = 0x0573;\n  t.chekhakassiancyrillic = 0x04cc;\n  t.cheverticalstrokecyrillic = 0x04b9;\n  t.chi = 0x03c7;\n  t.chieuchacirclekorean = 0x3277;\n  t.chieuchaparenkorean = 0x3217;\n  t.chieuchcirclekorean = 0x3269;\n  t.chieuchkorean = 0x314a;\n  t.chieuchparenkorean = 0x3209;\n  t.chochangthai = 0x0e0a;\n  t.chochanthai = 0x0e08;\n  t.chochingthai = 0x0e09;\n  t.chochoethai = 0x0e0c;\n  t.chook = 0x0188;\n  t.cieucacirclekorean = 0x3276;\n  t.cieucaparenkorean = 0x3216;\n  t.cieuccirclekorean = 0x3268;\n  t.cieuckorean = 0x3148;\n  t.cieucparenkorean = 0x3208;\n  t.cieucuparenkorean = 0x321c;\n  t.circle = 0x25cb;\n  t.circlecopyrt = 0x00a9; // Glyph is missing from Adobe's original list.\n  t.circlemultiply = 0x2297;\n  t.circleot = 0x2299;\n  t.circleplus = 0x2295;\n  t.circlepostalmark = 0x3036;\n  t.circlewithlefthalfblack = 0x25d0;\n  t.circlewithrighthalfblack = 0x25d1;\n  t.circumflex = 0x02c6;\n  t.circumflexbelowcmb = 0x032d;\n  t.circumflexcmb = 0x0302;\n  t.clear = 0x2327;\n  t.clickalveolar = 0x01c2;\n  t.clickdental = 0x01c0;\n  t.clicklateral = 0x01c1;\n  t.clickretroflex = 0x01c3;\n  t.club = 0x2663;\n  t.clubsuitblack = 0x2663;\n  t.clubsuitwhite = 0x2667;\n  t.cmcubedsquare = 0x33a4;\n  t.cmonospace = 0xff43;\n  t.cmsquaredsquare = 0x33a0;\n  t.coarmenian = 0x0581;\n  t.colon = 0x003a;\n  t.colonmonetary = 0x20a1;\n  t.colonmonospace = 0xff1a;\n  t.colonsign = 0x20a1;\n  t.colonsmall = 0xfe55;\n  t.colontriangularhalfmod = 0x02d1;\n  t.colontriangularmod = 0x02d0;\n  t.comma = 0x002c;\n  t.commaabovecmb = 0x0313;\n  t.commaaboverightcmb = 0x0315;\n  t.commaaccent = 0xf6c3;\n  t.commaarabic = 0x060c;\n  t.commaarmenian = 0x055d;\n  t.commainferior = 0xf6e1;\n  t.commamonospace = 0xff0c;\n  t.commareversedabovecmb = 0x0314;\n  t.commareversedmod = 0x02bd;\n  t.commasmall = 0xfe50;\n  t.commasuperior = 0xf6e2;\n  t.commaturnedabovecmb = 0x0312;\n  t.commaturnedmod = 0x02bb;\n  t.compass = 0x263c;\n  t.congruent = 0x2245;\n  t.contourintegral = 0x222e;\n  t.control = 0x2303;\n  t.controlACK = 0x0006;\n  t.controlBEL = 0x0007;\n  t.controlBS = 0x0008;\n  t.controlCAN = 0x0018;\n  t.controlCR = 0x000d;\n  t.controlDC1 = 0x0011;\n  t.controlDC2 = 0x0012;\n  t.controlDC3 = 0x0013;\n  t.controlDC4 = 0x0014;\n  t.controlDEL = 0x007f;\n  t.controlDLE = 0x0010;\n  t.controlEM = 0x0019;\n  t.controlENQ = 0x0005;\n  t.controlEOT = 0x0004;\n  t.controlESC = 0x001b;\n  t.controlETB = 0x0017;\n  t.controlETX = 0x0003;\n  t.controlFF = 0x000c;\n  t.controlFS = 0x001c;\n  t.controlGS = 0x001d;\n  t.controlHT = 0x0009;\n  t.controlLF = 0x000a;\n  t.controlNAK = 0x0015;\n  t.controlNULL = 0x0000; // Glyph is missing from Adobe's original list.\n  t.controlRS = 0x001e;\n  t.controlSI = 0x000f;\n  t.controlSO = 0x000e;\n  t.controlSOT = 0x0002;\n  t.controlSTX = 0x0001;\n  t.controlSUB = 0x001a;\n  t.controlSYN = 0x0016;\n  t.controlUS = 0x001f;\n  t.controlVT = 0x000b;\n  t.copyright = 0x00a9;\n  t.copyrightsans = 0xf8e9;\n  t.copyrightserif = 0xf6d9;\n  t.cornerbracketleft = 0x300c;\n  t.cornerbracketlefthalfwidth = 0xff62;\n  t.cornerbracketleftvertical = 0xfe41;\n  t.cornerbracketright = 0x300d;\n  t.cornerbracketrighthalfwidth = 0xff63;\n  t.cornerbracketrightvertical = 0xfe42;\n  t.corporationsquare = 0x337f;\n  t.cosquare = 0x33c7;\n  t.coverkgsquare = 0x33c6;\n  t.cparen = 0x249e;\n  t.cruzeiro = 0x20a2;\n  t.cstretched = 0x0297;\n  t.curlyand = 0x22cf;\n  t.curlyor = 0x22ce;\n  t.currency = 0x00a4;\n  t.cyrBreve = 0xf6d1;\n  t.cyrFlex = 0xf6d2;\n  t.cyrbreve = 0xf6d4;\n  t.cyrflex = 0xf6d5;\n  t.d = 0x0064;\n  t.daarmenian = 0x0564;\n  t.dabengali = 0x09a6;\n  t.dadarabic = 0x0636;\n  t.dadeva = 0x0926;\n  t.dadfinalarabic = 0xfebe;\n  t.dadinitialarabic = 0xfebf;\n  t.dadmedialarabic = 0xfec0;\n  t.dagesh = 0x05bc;\n  t.dageshhebrew = 0x05bc;\n  t.dagger = 0x2020;\n  t.daggerdbl = 0x2021;\n  t.dagujarati = 0x0aa6;\n  t.dagurmukhi = 0x0a26;\n  t.dahiragana = 0x3060;\n  t.dakatakana = 0x30c0;\n  t.dalarabic = 0x062f;\n  t.dalet = 0x05d3;\n  t.daletdagesh = 0xfb33;\n  t.daletdageshhebrew = 0xfb33;\n  t.dalethebrew = 0x05d3;\n  t.dalfinalarabic = 0xfeaa;\n  t.dammaarabic = 0x064f;\n  t.dammalowarabic = 0x064f;\n  t.dammatanaltonearabic = 0x064c;\n  t.dammatanarabic = 0x064c;\n  t.danda = 0x0964;\n  t.dargahebrew = 0x05a7;\n  t.dargalefthebrew = 0x05a7;\n  t.dasiapneumatacyrilliccmb = 0x0485;\n  t.dblGrave = 0xf6d3;\n  t.dblanglebracketleft = 0x300a;\n  t.dblanglebracketleftvertical = 0xfe3d;\n  t.dblanglebracketright = 0x300b;\n  t.dblanglebracketrightvertical = 0xfe3e;\n  t.dblarchinvertedbelowcmb = 0x032b;\n  t.dblarrowleft = 0x21d4;\n  t.dblarrowright = 0x21d2;\n  t.dbldanda = 0x0965;\n  t.dblgrave = 0xf6d6;\n  t.dblgravecmb = 0x030f;\n  t.dblintegral = 0x222c;\n  t.dbllowline = 0x2017;\n  t.dbllowlinecmb = 0x0333;\n  t.dbloverlinecmb = 0x033f;\n  t.dblprimemod = 0x02ba;\n  t.dblverticalbar = 0x2016;\n  t.dblverticallineabovecmb = 0x030e;\n  t.dbopomofo = 0x3109;\n  t.dbsquare = 0x33c8;\n  t.dcaron = 0x010f;\n  t.dcedilla = 0x1e11;\n  t.dcircle = 0x24d3;\n  t.dcircumflexbelow = 0x1e13;\n  t.dcroat = 0x0111;\n  t.ddabengali = 0x09a1;\n  t.ddadeva = 0x0921;\n  t.ddagujarati = 0x0aa1;\n  t.ddagurmukhi = 0x0a21;\n  t.ddalarabic = 0x0688;\n  t.ddalfinalarabic = 0xfb89;\n  t.dddhadeva = 0x095c;\n  t.ddhabengali = 0x09a2;\n  t.ddhadeva = 0x0922;\n  t.ddhagujarati = 0x0aa2;\n  t.ddhagurmukhi = 0x0a22;\n  t.ddotaccent = 0x1e0b;\n  t.ddotbelow = 0x1e0d;\n  t.decimalseparatorarabic = 0x066b;\n  t.decimalseparatorpersian = 0x066b;\n  t.decyrillic = 0x0434;\n  t.degree = 0x00b0;\n  t.dehihebrew = 0x05ad;\n  t.dehiragana = 0x3067;\n  t.deicoptic = 0x03ef;\n  t.dekatakana = 0x30c7;\n  t.deleteleft = 0x232b;\n  t.deleteright = 0x2326;\n  t.delta = 0x03b4;\n  t.deltaturned = 0x018d;\n  t.denominatorminusonenumeratorbengali = 0x09f8;\n  t.dezh = 0x02a4;\n  t.dhabengali = 0x09a7;\n  t.dhadeva = 0x0927;\n  t.dhagujarati = 0x0aa7;\n  t.dhagurmukhi = 0x0a27;\n  t.dhook = 0x0257;\n  t.dialytikatonos = 0x0385;\n  t.dialytikatonoscmb = 0x0344;\n  t.diamond = 0x2666;\n  t.diamondsuitwhite = 0x2662;\n  t.dieresis = 0x00a8;\n  t.dieresisacute = 0xf6d7;\n  t.dieresisbelowcmb = 0x0324;\n  t.dieresiscmb = 0x0308;\n  t.dieresisgrave = 0xf6d8;\n  t.dieresistonos = 0x0385;\n  t.dihiragana = 0x3062;\n  t.dikatakana = 0x30c2;\n  t.dittomark = 0x3003;\n  t.divide = 0x00f7;\n  t.divides = 0x2223;\n  t.divisionslash = 0x2215;\n  t.djecyrillic = 0x0452;\n  t.dkshade = 0x2593;\n  t.dlinebelow = 0x1e0f;\n  t.dlsquare = 0x3397;\n  t.dmacron = 0x0111;\n  t.dmonospace = 0xff44;\n  t.dnblock = 0x2584;\n  t.dochadathai = 0x0e0e;\n  t.dodekthai = 0x0e14;\n  t.dohiragana = 0x3069;\n  t.dokatakana = 0x30c9;\n  t.dollar = 0x0024;\n  t.dollarinferior = 0xf6e3;\n  t.dollarmonospace = 0xff04;\n  t.dollaroldstyle = 0xf724;\n  t.dollarsmall = 0xfe69;\n  t.dollarsuperior = 0xf6e4;\n  t.dong = 0x20ab;\n  t.dorusquare = 0x3326;\n  t.dotaccent = 0x02d9;\n  t.dotaccentcmb = 0x0307;\n  t.dotbelowcmb = 0x0323;\n  t.dotbelowcomb = 0x0323;\n  t.dotkatakana = 0x30fb;\n  t.dotlessi = 0x0131;\n  t.dotlessj = 0xf6be;\n  t.dotlessjstrokehook = 0x0284;\n  t.dotmath = 0x22c5;\n  t.dottedcircle = 0x25cc;\n  t.doubleyodpatah = 0xfb1f;\n  t.doubleyodpatahhebrew = 0xfb1f;\n  t.downtackbelowcmb = 0x031e;\n  t.downtackmod = 0x02d5;\n  t.dparen = 0x249f;\n  t.dsuperior = 0xf6eb;\n  t.dtail = 0x0256;\n  t.dtopbar = 0x018c;\n  t.duhiragana = 0x3065;\n  t.dukatakana = 0x30c5;\n  t.dz = 0x01f3;\n  t.dzaltone = 0x02a3;\n  t.dzcaron = 0x01c6;\n  t.dzcurl = 0x02a5;\n  t.dzeabkhasiancyrillic = 0x04e1;\n  t.dzecyrillic = 0x0455;\n  t.dzhecyrillic = 0x045f;\n  t.e = 0x0065;\n  t.eacute = 0x00e9;\n  t.earth = 0x2641;\n  t.ebengali = 0x098f;\n  t.ebopomofo = 0x311c;\n  t.ebreve = 0x0115;\n  t.ecandradeva = 0x090d;\n  t.ecandragujarati = 0x0a8d;\n  t.ecandravowelsigndeva = 0x0945;\n  t.ecandravowelsigngujarati = 0x0ac5;\n  t.ecaron = 0x011b;\n  t.ecedillabreve = 0x1e1d;\n  t.echarmenian = 0x0565;\n  t.echyiwnarmenian = 0x0587;\n  t.ecircle = 0x24d4;\n  t.ecircumflex = 0x00ea;\n  t.ecircumflexacute = 0x1ebf;\n  t.ecircumflexbelow = 0x1e19;\n  t.ecircumflexdotbelow = 0x1ec7;\n  t.ecircumflexgrave = 0x1ec1;\n  t.ecircumflexhookabove = 0x1ec3;\n  t.ecircumflextilde = 0x1ec5;\n  t.ecyrillic = 0x0454;\n  t.edblgrave = 0x0205;\n  t.edeva = 0x090f;\n  t.edieresis = 0x00eb;\n  t.edot = 0x0117;\n  t.edotaccent = 0x0117;\n  t.edotbelow = 0x1eb9;\n  t.eegurmukhi = 0x0a0f;\n  t.eematragurmukhi = 0x0a47;\n  t.efcyrillic = 0x0444;\n  t.egrave = 0x00e8;\n  t.egujarati = 0x0a8f;\n  t.eharmenian = 0x0567;\n  t.ehbopomofo = 0x311d;\n  t.ehiragana = 0x3048;\n  t.ehookabove = 0x1ebb;\n  t.eibopomofo = 0x311f;\n  t.eight = 0x0038;\n  t.eightarabic = 0x0668;\n  t.eightbengali = 0x09ee;\n  t.eightcircle = 0x2467;\n  t.eightcircleinversesansserif = 0x2791;\n  t.eightdeva = 0x096e;\n  t.eighteencircle = 0x2471;\n  t.eighteenparen = 0x2485;\n  t.eighteenperiod = 0x2499;\n  t.eightgujarati = 0x0aee;\n  t.eightgurmukhi = 0x0a6e;\n  t.eighthackarabic = 0x0668;\n  t.eighthangzhou = 0x3028;\n  t.eighthnotebeamed = 0x266b;\n  t.eightideographicparen = 0x3227;\n  t.eightinferior = 0x2088;\n  t.eightmonospace = 0xff18;\n  t.eightoldstyle = 0xf738;\n  t.eightparen = 0x247b;\n  t.eightperiod = 0x248f;\n  t.eightpersian = 0x06f8;\n  t.eightroman = 0x2177;\n  t.eightsuperior = 0x2078;\n  t.eightthai = 0x0e58;\n  t.einvertedbreve = 0x0207;\n  t.eiotifiedcyrillic = 0x0465;\n  t.ekatakana = 0x30a8;\n  t.ekatakanahalfwidth = 0xff74;\n  t.ekonkargurmukhi = 0x0a74;\n  t.ekorean = 0x3154;\n  t.elcyrillic = 0x043b;\n  t.element = 0x2208;\n  t.elevencircle = 0x246a;\n  t.elevenparen = 0x247e;\n  t.elevenperiod = 0x2492;\n  t.elevenroman = 0x217a;\n  t.ellipsis = 0x2026;\n  t.ellipsisvertical = 0x22ee;\n  t.emacron = 0x0113;\n  t.emacronacute = 0x1e17;\n  t.emacrongrave = 0x1e15;\n  t.emcyrillic = 0x043c;\n  t.emdash = 0x2014;\n  t.emdashvertical = 0xfe31;\n  t.emonospace = 0xff45;\n  t.emphasismarkarmenian = 0x055b;\n  t.emptyset = 0x2205;\n  t.enbopomofo = 0x3123;\n  t.encyrillic = 0x043d;\n  t.endash = 0x2013;\n  t.endashvertical = 0xfe32;\n  t.endescendercyrillic = 0x04a3;\n  t.eng = 0x014b;\n  t.engbopomofo = 0x3125;\n  t.enghecyrillic = 0x04a5;\n  t.enhookcyrillic = 0x04c8;\n  t.enspace = 0x2002;\n  t.eogonek = 0x0119;\n  t.eokorean = 0x3153;\n  t.eopen = 0x025b;\n  t.eopenclosed = 0x029a;\n  t.eopenreversed = 0x025c;\n  t.eopenreversedclosed = 0x025e;\n  t.eopenreversedhook = 0x025d;\n  t.eparen = 0x24a0;\n  t.epsilon = 0x03b5;\n  t.epsilontonos = 0x03ad;\n  t.equal = 0x003d;\n  t.equalmonospace = 0xff1d;\n  t.equalsmall = 0xfe66;\n  t.equalsuperior = 0x207c;\n  t.equivalence = 0x2261;\n  t.erbopomofo = 0x3126;\n  t.ercyrillic = 0x0440;\n  t.ereversed = 0x0258;\n  t.ereversedcyrillic = 0x044d;\n  t.escyrillic = 0x0441;\n  t.esdescendercyrillic = 0x04ab;\n  t.esh = 0x0283;\n  t.eshcurl = 0x0286;\n  t.eshortdeva = 0x090e;\n  t.eshortvowelsigndeva = 0x0946;\n  t.eshreversedloop = 0x01aa;\n  t.eshsquatreversed = 0x0285;\n  t.esmallhiragana = 0x3047;\n  t.esmallkatakana = 0x30a7;\n  t.esmallkatakanahalfwidth = 0xff6a;\n  t.estimated = 0x212e;\n  t.esuperior = 0xf6ec;\n  t.eta = 0x03b7;\n  t.etarmenian = 0x0568;\n  t.etatonos = 0x03ae;\n  t.eth = 0x00f0;\n  t.etilde = 0x1ebd;\n  t.etildebelow = 0x1e1b;\n  t.etnahtafoukhhebrew = 0x0591;\n  t.etnahtafoukhlefthebrew = 0x0591;\n  t.etnahtahebrew = 0x0591;\n  t.etnahtalefthebrew = 0x0591;\n  t.eturned = 0x01dd;\n  t.eukorean = 0x3161;\n  t.euro = 0x20ac;\n  t.evowelsignbengali = 0x09c7;\n  t.evowelsigndeva = 0x0947;\n  t.evowelsigngujarati = 0x0ac7;\n  t.exclam = 0x0021;\n  t.exclamarmenian = 0x055c;\n  t.exclamdbl = 0x203c;\n  t.exclamdown = 0x00a1;\n  t.exclamdownsmall = 0xf7a1;\n  t.exclammonospace = 0xff01;\n  t.exclamsmall = 0xf721;\n  t.existential = 0x2203;\n  t.ezh = 0x0292;\n  t.ezhcaron = 0x01ef;\n  t.ezhcurl = 0x0293;\n  t.ezhreversed = 0x01b9;\n  t.ezhtail = 0x01ba;\n  t.f = 0x0066;\n  t.fadeva = 0x095e;\n  t.fagurmukhi = 0x0a5e;\n  t.fahrenheit = 0x2109;\n  t.fathaarabic = 0x064e;\n  t.fathalowarabic = 0x064e;\n  t.fathatanarabic = 0x064b;\n  t.fbopomofo = 0x3108;\n  t.fcircle = 0x24d5;\n  t.fdotaccent = 0x1e1f;\n  t.feharabic = 0x0641;\n  t.feharmenian = 0x0586;\n  t.fehfinalarabic = 0xfed2;\n  t.fehinitialarabic = 0xfed3;\n  t.fehmedialarabic = 0xfed4;\n  t.feicoptic = 0x03e5;\n  t.female = 0x2640;\n  t.ff = 0xfb00;\n  t.f_f = 0xfb00; // Fixes issue 11016.\n  t.ffi = 0xfb03;\n  t.ffl = 0xfb04;\n  t.fi = 0xfb01;\n  t.fifteencircle = 0x246e;\n  t.fifteenparen = 0x2482;\n  t.fifteenperiod = 0x2496;\n  t.figuredash = 0x2012;\n  t.filledbox = 0x25a0;\n  t.filledrect = 0x25ac;\n  t.finalkaf = 0x05da;\n  t.finalkafdagesh = 0xfb3a;\n  t.finalkafdageshhebrew = 0xfb3a;\n  t.finalkafhebrew = 0x05da;\n  t.finalmem = 0x05dd;\n  t.finalmemhebrew = 0x05dd;\n  t.finalnun = 0x05df;\n  t.finalnunhebrew = 0x05df;\n  t.finalpe = 0x05e3;\n  t.finalpehebrew = 0x05e3;\n  t.finaltsadi = 0x05e5;\n  t.finaltsadihebrew = 0x05e5;\n  t.firsttonechinese = 0x02c9;\n  t.fisheye = 0x25c9;\n  t.fitacyrillic = 0x0473;\n  t.five = 0x0035;\n  t.fivearabic = 0x0665;\n  t.fivebengali = 0x09eb;\n  t.fivecircle = 0x2464;\n  t.fivecircleinversesansserif = 0x278e;\n  t.fivedeva = 0x096b;\n  t.fiveeighths = 0x215d;\n  t.fivegujarati = 0x0aeb;\n  t.fivegurmukhi = 0x0a6b;\n  t.fivehackarabic = 0x0665;\n  t.fivehangzhou = 0x3025;\n  t.fiveideographicparen = 0x3224;\n  t.fiveinferior = 0x2085;\n  t.fivemonospace = 0xff15;\n  t.fiveoldstyle = 0xf735;\n  t.fiveparen = 0x2478;\n  t.fiveperiod = 0x248c;\n  t.fivepersian = 0x06f5;\n  t.fiveroman = 0x2174;\n  t.fivesuperior = 0x2075;\n  t.fivethai = 0x0e55;\n  t.fl = 0xfb02;\n  t.florin = 0x0192;\n  t.fmonospace = 0xff46;\n  t.fmsquare = 0x3399;\n  t.fofanthai = 0x0e1f;\n  t.fofathai = 0x0e1d;\n  t.fongmanthai = 0x0e4f;\n  t.forall = 0x2200;\n  t.four = 0x0034;\n  t.fourarabic = 0x0664;\n  t.fourbengali = 0x09ea;\n  t.fourcircle = 0x2463;\n  t.fourcircleinversesansserif = 0x278d;\n  t.fourdeva = 0x096a;\n  t.fourgujarati = 0x0aea;\n  t.fourgurmukhi = 0x0a6a;\n  t.fourhackarabic = 0x0664;\n  t.fourhangzhou = 0x3024;\n  t.fourideographicparen = 0x3223;\n  t.fourinferior = 0x2084;\n  t.fourmonospace = 0xff14;\n  t.fournumeratorbengali = 0x09f7;\n  t.fouroldstyle = 0xf734;\n  t.fourparen = 0x2477;\n  t.fourperiod = 0x248b;\n  t.fourpersian = 0x06f4;\n  t.fourroman = 0x2173;\n  t.foursuperior = 0x2074;\n  t.fourteencircle = 0x246d;\n  t.fourteenparen = 0x2481;\n  t.fourteenperiod = 0x2495;\n  t.fourthai = 0x0e54;\n  t.fourthtonechinese = 0x02cb;\n  t.fparen = 0x24a1;\n  t.fraction = 0x2044;\n  t.franc = 0x20a3;\n  t.g = 0x0067;\n  t.gabengali = 0x0997;\n  t.gacute = 0x01f5;\n  t.gadeva = 0x0917;\n  t.gafarabic = 0x06af;\n  t.gaffinalarabic = 0xfb93;\n  t.gafinitialarabic = 0xfb94;\n  t.gafmedialarabic = 0xfb95;\n  t.gagujarati = 0x0a97;\n  t.gagurmukhi = 0x0a17;\n  t.gahiragana = 0x304c;\n  t.gakatakana = 0x30ac;\n  t.gamma = 0x03b3;\n  t.gammalatinsmall = 0x0263;\n  t.gammasuperior = 0x02e0;\n  t.gangiacoptic = 0x03eb;\n  t.gbopomofo = 0x310d;\n  t.gbreve = 0x011f;\n  t.gcaron = 0x01e7;\n  t.gcedilla = 0x0123;\n  t.gcircle = 0x24d6;\n  t.gcircumflex = 0x011d;\n  t.gcommaaccent = 0x0123;\n  t.gdot = 0x0121;\n  t.gdotaccent = 0x0121;\n  t.gecyrillic = 0x0433;\n  t.gehiragana = 0x3052;\n  t.gekatakana = 0x30b2;\n  t.geometricallyequal = 0x2251;\n  t.gereshaccenthebrew = 0x059c;\n  t.gereshhebrew = 0x05f3;\n  t.gereshmuqdamhebrew = 0x059d;\n  t.germandbls = 0x00df;\n  t.gershayimaccenthebrew = 0x059e;\n  t.gershayimhebrew = 0x05f4;\n  t.getamark = 0x3013;\n  t.ghabengali = 0x0998;\n  t.ghadarmenian = 0x0572;\n  t.ghadeva = 0x0918;\n  t.ghagujarati = 0x0a98;\n  t.ghagurmukhi = 0x0a18;\n  t.ghainarabic = 0x063a;\n  t.ghainfinalarabic = 0xfece;\n  t.ghaininitialarabic = 0xfecf;\n  t.ghainmedialarabic = 0xfed0;\n  t.ghemiddlehookcyrillic = 0x0495;\n  t.ghestrokecyrillic = 0x0493;\n  t.gheupturncyrillic = 0x0491;\n  t.ghhadeva = 0x095a;\n  t.ghhagurmukhi = 0x0a5a;\n  t.ghook = 0x0260;\n  t.ghzsquare = 0x3393;\n  t.gihiragana = 0x304e;\n  t.gikatakana = 0x30ae;\n  t.gimarmenian = 0x0563;\n  t.gimel = 0x05d2;\n  t.gimeldagesh = 0xfb32;\n  t.gimeldageshhebrew = 0xfb32;\n  t.gimelhebrew = 0x05d2;\n  t.gjecyrillic = 0x0453;\n  t.glottalinvertedstroke = 0x01be;\n  t.glottalstop = 0x0294;\n  t.glottalstopinverted = 0x0296;\n  t.glottalstopmod = 0x02c0;\n  t.glottalstopreversed = 0x0295;\n  t.glottalstopreversedmod = 0x02c1;\n  t.glottalstopreversedsuperior = 0x02e4;\n  t.glottalstopstroke = 0x02a1;\n  t.glottalstopstrokereversed = 0x02a2;\n  t.gmacron = 0x1e21;\n  t.gmonospace = 0xff47;\n  t.gohiragana = 0x3054;\n  t.gokatakana = 0x30b4;\n  t.gparen = 0x24a2;\n  t.gpasquare = 0x33ac;\n  t.gradient = 0x2207;\n  t.grave = 0x0060;\n  t.gravebelowcmb = 0x0316;\n  t.gravecmb = 0x0300;\n  t.gravecomb = 0x0300;\n  t.gravedeva = 0x0953;\n  t.gravelowmod = 0x02ce;\n  t.gravemonospace = 0xff40;\n  t.gravetonecmb = 0x0340;\n  t.greater = 0x003e;\n  t.greaterequal = 0x2265;\n  t.greaterequalorless = 0x22db;\n  t.greatermonospace = 0xff1e;\n  t.greaterorequivalent = 0x2273;\n  t.greaterorless = 0x2277;\n  t.greateroverequal = 0x2267;\n  t.greatersmall = 0xfe65;\n  t.gscript = 0x0261;\n  t.gstroke = 0x01e5;\n  t.guhiragana = 0x3050;\n  t.guillemotleft = 0x00ab;\n  t.guillemotright = 0x00bb;\n  t.guilsinglleft = 0x2039;\n  t.guilsinglright = 0x203a;\n  t.gukatakana = 0x30b0;\n  t.guramusquare = 0x3318;\n  t.gysquare = 0x33c9;\n  t.h = 0x0068;\n  t.haabkhasiancyrillic = 0x04a9;\n  t.haaltonearabic = 0x06c1;\n  t.habengali = 0x09b9;\n  t.hadescendercyrillic = 0x04b3;\n  t.hadeva = 0x0939;\n  t.hagujarati = 0x0ab9;\n  t.hagurmukhi = 0x0a39;\n  t.haharabic = 0x062d;\n  t.hahfinalarabic = 0xfea2;\n  t.hahinitialarabic = 0xfea3;\n  t.hahiragana = 0x306f;\n  t.hahmedialarabic = 0xfea4;\n  t.haitusquare = 0x332a;\n  t.hakatakana = 0x30cf;\n  t.hakatakanahalfwidth = 0xff8a;\n  t.halantgurmukhi = 0x0a4d;\n  t.hamzaarabic = 0x0621;\n  t.hamzalowarabic = 0x0621;\n  t.hangulfiller = 0x3164;\n  t.hardsigncyrillic = 0x044a;\n  t.harpoonleftbarbup = 0x21bc;\n  t.harpoonrightbarbup = 0x21c0;\n  t.hasquare = 0x33ca;\n  t.hatafpatah = 0x05b2;\n  t.hatafpatah16 = 0x05b2;\n  t.hatafpatah23 = 0x05b2;\n  t.hatafpatah2f = 0x05b2;\n  t.hatafpatahhebrew = 0x05b2;\n  t.hatafpatahnarrowhebrew = 0x05b2;\n  t.hatafpatahquarterhebrew = 0x05b2;\n  t.hatafpatahwidehebrew = 0x05b2;\n  t.hatafqamats = 0x05b3;\n  t.hatafqamats1b = 0x05b3;\n  t.hatafqamats28 = 0x05b3;\n  t.hatafqamats34 = 0x05b3;\n  t.hatafqamatshebrew = 0x05b3;\n  t.hatafqamatsnarrowhebrew = 0x05b3;\n  t.hatafqamatsquarterhebrew = 0x05b3;\n  t.hatafqamatswidehebrew = 0x05b3;\n  t.hatafsegol = 0x05b1;\n  t.hatafsegol17 = 0x05b1;\n  t.hatafsegol24 = 0x05b1;\n  t.hatafsegol30 = 0x05b1;\n  t.hatafsegolhebrew = 0x05b1;\n  t.hatafsegolnarrowhebrew = 0x05b1;\n  t.hatafsegolquarterhebrew = 0x05b1;\n  t.hatafsegolwidehebrew = 0x05b1;\n  t.hbar = 0x0127;\n  t.hbopomofo = 0x310f;\n  t.hbrevebelow = 0x1e2b;\n  t.hcedilla = 0x1e29;\n  t.hcircle = 0x24d7;\n  t.hcircumflex = 0x0125;\n  t.hdieresis = 0x1e27;\n  t.hdotaccent = 0x1e23;\n  t.hdotbelow = 0x1e25;\n  t.he = 0x05d4;\n  t.heart = 0x2665;\n  t.heartsuitblack = 0x2665;\n  t.heartsuitwhite = 0x2661;\n  t.hedagesh = 0xfb34;\n  t.hedageshhebrew = 0xfb34;\n  t.hehaltonearabic = 0x06c1;\n  t.heharabic = 0x0647;\n  t.hehebrew = 0x05d4;\n  t.hehfinalaltonearabic = 0xfba7;\n  t.hehfinalalttwoarabic = 0xfeea;\n  t.hehfinalarabic = 0xfeea;\n  t.hehhamzaabovefinalarabic = 0xfba5;\n  t.hehhamzaaboveisolatedarabic = 0xfba4;\n  t.hehinitialaltonearabic = 0xfba8;\n  t.hehinitialarabic = 0xfeeb;\n  t.hehiragana = 0x3078;\n  t.hehmedialaltonearabic = 0xfba9;\n  t.hehmedialarabic = 0xfeec;\n  t.heiseierasquare = 0x337b;\n  t.hekatakana = 0x30d8;\n  t.hekatakanahalfwidth = 0xff8d;\n  t.hekutaarusquare = 0x3336;\n  t.henghook = 0x0267;\n  t.herutusquare = 0x3339;\n  t.het = 0x05d7;\n  t.hethebrew = 0x05d7;\n  t.hhook = 0x0266;\n  t.hhooksuperior = 0x02b1;\n  t.hieuhacirclekorean = 0x327b;\n  t.hieuhaparenkorean = 0x321b;\n  t.hieuhcirclekorean = 0x326d;\n  t.hieuhkorean = 0x314e;\n  t.hieuhparenkorean = 0x320d;\n  t.hihiragana = 0x3072;\n  t.hikatakana = 0x30d2;\n  t.hikatakanahalfwidth = 0xff8b;\n  t.hiriq = 0x05b4;\n  t.hiriq14 = 0x05b4;\n  t.hiriq21 = 0x05b4;\n  t.hiriq2d = 0x05b4;\n  t.hiriqhebrew = 0x05b4;\n  t.hiriqnarrowhebrew = 0x05b4;\n  t.hiriqquarterhebrew = 0x05b4;\n  t.hiriqwidehebrew = 0x05b4;\n  t.hlinebelow = 0x1e96;\n  t.hmonospace = 0xff48;\n  t.hoarmenian = 0x0570;\n  t.hohipthai = 0x0e2b;\n  t.hohiragana = 0x307b;\n  t.hokatakana = 0x30db;\n  t.hokatakanahalfwidth = 0xff8e;\n  t.holam = 0x05b9;\n  t.holam19 = 0x05b9;\n  t.holam26 = 0x05b9;\n  t.holam32 = 0x05b9;\n  t.holamhebrew = 0x05b9;\n  t.holamnarrowhebrew = 0x05b9;\n  t.holamquarterhebrew = 0x05b9;\n  t.holamwidehebrew = 0x05b9;\n  t.honokhukthai = 0x0e2e;\n  t.hookabovecomb = 0x0309;\n  t.hookcmb = 0x0309;\n  t.hookpalatalizedbelowcmb = 0x0321;\n  t.hookretroflexbelowcmb = 0x0322;\n  t.hoonsquare = 0x3342;\n  t.horicoptic = 0x03e9;\n  t.horizontalbar = 0x2015;\n  t.horncmb = 0x031b;\n  t.hotsprings = 0x2668;\n  t.house = 0x2302;\n  t.hparen = 0x24a3;\n  t.hsuperior = 0x02b0;\n  t.hturned = 0x0265;\n  t.huhiragana = 0x3075;\n  t.huiitosquare = 0x3333;\n  t.hukatakana = 0x30d5;\n  t.hukatakanahalfwidth = 0xff8c;\n  t.hungarumlaut = 0x02dd;\n  t.hungarumlautcmb = 0x030b;\n  t.hv = 0x0195;\n  t.hyphen = 0x002d;\n  t.hypheninferior = 0xf6e5;\n  t.hyphenmonospace = 0xff0d;\n  t.hyphensmall = 0xfe63;\n  t.hyphensuperior = 0xf6e6;\n  t.hyphentwo = 0x2010;\n  t.i = 0x0069;\n  t.iacute = 0x00ed;\n  t.iacyrillic = 0x044f;\n  t.ibengali = 0x0987;\n  t.ibopomofo = 0x3127;\n  t.ibreve = 0x012d;\n  t.icaron = 0x01d0;\n  t.icircle = 0x24d8;\n  t.icircumflex = 0x00ee;\n  t.icyrillic = 0x0456;\n  t.idblgrave = 0x0209;\n  t.ideographearthcircle = 0x328f;\n  t.ideographfirecircle = 0x328b;\n  t.ideographicallianceparen = 0x323f;\n  t.ideographiccallparen = 0x323a;\n  t.ideographiccentrecircle = 0x32a5;\n  t.ideographicclose = 0x3006;\n  t.ideographiccomma = 0x3001;\n  t.ideographiccommaleft = 0xff64;\n  t.ideographiccongratulationparen = 0x3237;\n  t.ideographiccorrectcircle = 0x32a3;\n  t.ideographicearthparen = 0x322f;\n  t.ideographicenterpriseparen = 0x323d;\n  t.ideographicexcellentcircle = 0x329d;\n  t.ideographicfestivalparen = 0x3240;\n  t.ideographicfinancialcircle = 0x3296;\n  t.ideographicfinancialparen = 0x3236;\n  t.ideographicfireparen = 0x322b;\n  t.ideographichaveparen = 0x3232;\n  t.ideographichighcircle = 0x32a4;\n  t.ideographiciterationmark = 0x3005;\n  t.ideographiclaborcircle = 0x3298;\n  t.ideographiclaborparen = 0x3238;\n  t.ideographicleftcircle = 0x32a7;\n  t.ideographiclowcircle = 0x32a6;\n  t.ideographicmedicinecircle = 0x32a9;\n  t.ideographicmetalparen = 0x322e;\n  t.ideographicmoonparen = 0x322a;\n  t.ideographicnameparen = 0x3234;\n  t.ideographicperiod = 0x3002;\n  t.ideographicprintcircle = 0x329e;\n  t.ideographicreachparen = 0x3243;\n  t.ideographicrepresentparen = 0x3239;\n  t.ideographicresourceparen = 0x323e;\n  t.ideographicrightcircle = 0x32a8;\n  t.ideographicsecretcircle = 0x3299;\n  t.ideographicselfparen = 0x3242;\n  t.ideographicsocietyparen = 0x3233;\n  t.ideographicspace = 0x3000;\n  t.ideographicspecialparen = 0x3235;\n  t.ideographicstockparen = 0x3231;\n  t.ideographicstudyparen = 0x323b;\n  t.ideographicsunparen = 0x3230;\n  t.ideographicsuperviseparen = 0x323c;\n  t.ideographicwaterparen = 0x322c;\n  t.ideographicwoodparen = 0x322d;\n  t.ideographiczero = 0x3007;\n  t.ideographmetalcircle = 0x328e;\n  t.ideographmooncircle = 0x328a;\n  t.ideographnamecircle = 0x3294;\n  t.ideographsuncircle = 0x3290;\n  t.ideographwatercircle = 0x328c;\n  t.ideographwoodcircle = 0x328d;\n  t.ideva = 0x0907;\n  t.idieresis = 0x00ef;\n  t.idieresisacute = 0x1e2f;\n  t.idieresiscyrillic = 0x04e5;\n  t.idotbelow = 0x1ecb;\n  t.iebrevecyrillic = 0x04d7;\n  t.iecyrillic = 0x0435;\n  t.ieungacirclekorean = 0x3275;\n  t.ieungaparenkorean = 0x3215;\n  t.ieungcirclekorean = 0x3267;\n  t.ieungkorean = 0x3147;\n  t.ieungparenkorean = 0x3207;\n  t.igrave = 0x00ec;\n  t.igujarati = 0x0a87;\n  t.igurmukhi = 0x0a07;\n  t.ihiragana = 0x3044;\n  t.ihookabove = 0x1ec9;\n  t.iibengali = 0x0988;\n  t.iicyrillic = 0x0438;\n  t.iideva = 0x0908;\n  t.iigujarati = 0x0a88;\n  t.iigurmukhi = 0x0a08;\n  t.iimatragurmukhi = 0x0a40;\n  t.iinvertedbreve = 0x020b;\n  t.iishortcyrillic = 0x0439;\n  t.iivowelsignbengali = 0x09c0;\n  t.iivowelsigndeva = 0x0940;\n  t.iivowelsigngujarati = 0x0ac0;\n  t.ij = 0x0133;\n  t.ikatakana = 0x30a4;\n  t.ikatakanahalfwidth = 0xff72;\n  t.ikorean = 0x3163;\n  t.ilde = 0x02dc;\n  t.iluyhebrew = 0x05ac;\n  t.imacron = 0x012b;\n  t.imacroncyrillic = 0x04e3;\n  t.imageorapproximatelyequal = 0x2253;\n  t.imatragurmukhi = 0x0a3f;\n  t.imonospace = 0xff49;\n  t.increment = 0x2206;\n  t.infinity = 0x221e;\n  t.iniarmenian = 0x056b;\n  t.integral = 0x222b;\n  t.integralbottom = 0x2321;\n  t.integralbt = 0x2321;\n  t.integralex = 0xf8f5;\n  t.integraltop = 0x2320;\n  t.integraltp = 0x2320;\n  t.intersection = 0x2229;\n  t.intisquare = 0x3305;\n  t.invbullet = 0x25d8;\n  t.invcircle = 0x25d9;\n  t.invsmileface = 0x263b;\n  t.iocyrillic = 0x0451;\n  t.iogonek = 0x012f;\n  t.iota = 0x03b9;\n  t.iotadieresis = 0x03ca;\n  t.iotadieresistonos = 0x0390;\n  t.iotalatin = 0x0269;\n  t.iotatonos = 0x03af;\n  t.iparen = 0x24a4;\n  t.irigurmukhi = 0x0a72;\n  t.ismallhiragana = 0x3043;\n  t.ismallkatakana = 0x30a3;\n  t.ismallkatakanahalfwidth = 0xff68;\n  t.issharbengali = 0x09fa;\n  t.istroke = 0x0268;\n  t.isuperior = 0xf6ed;\n  t.iterationhiragana = 0x309d;\n  t.iterationkatakana = 0x30fd;\n  t.itilde = 0x0129;\n  t.itildebelow = 0x1e2d;\n  t.iubopomofo = 0x3129;\n  t.iucyrillic = 0x044e;\n  t.ivowelsignbengali = 0x09bf;\n  t.ivowelsigndeva = 0x093f;\n  t.ivowelsigngujarati = 0x0abf;\n  t.izhitsacyrillic = 0x0475;\n  t.izhitsadblgravecyrillic = 0x0477;\n  t.j = 0x006a;\n  t.jaarmenian = 0x0571;\n  t.jabengali = 0x099c;\n  t.jadeva = 0x091c;\n  t.jagujarati = 0x0a9c;\n  t.jagurmukhi = 0x0a1c;\n  t.jbopomofo = 0x3110;\n  t.jcaron = 0x01f0;\n  t.jcircle = 0x24d9;\n  t.jcircumflex = 0x0135;\n  t.jcrossedtail = 0x029d;\n  t.jdotlessstroke = 0x025f;\n  t.jecyrillic = 0x0458;\n  t.jeemarabic = 0x062c;\n  t.jeemfinalarabic = 0xfe9e;\n  t.jeeminitialarabic = 0xfe9f;\n  t.jeemmedialarabic = 0xfea0;\n  t.jeharabic = 0x0698;\n  t.jehfinalarabic = 0xfb8b;\n  t.jhabengali = 0x099d;\n  t.jhadeva = 0x091d;\n  t.jhagujarati = 0x0a9d;\n  t.jhagurmukhi = 0x0a1d;\n  t.jheharmenian = 0x057b;\n  t.jis = 0x3004;\n  t.jmonospace = 0xff4a;\n  t.jparen = 0x24a5;\n  t.jsuperior = 0x02b2;\n  t.k = 0x006b;\n  t.kabashkircyrillic = 0x04a1;\n  t.kabengali = 0x0995;\n  t.kacute = 0x1e31;\n  t.kacyrillic = 0x043a;\n  t.kadescendercyrillic = 0x049b;\n  t.kadeva = 0x0915;\n  t.kaf = 0x05db;\n  t.kafarabic = 0x0643;\n  t.kafdagesh = 0xfb3b;\n  t.kafdageshhebrew = 0xfb3b;\n  t.kaffinalarabic = 0xfeda;\n  t.kafhebrew = 0x05db;\n  t.kafinitialarabic = 0xfedb;\n  t.kafmedialarabic = 0xfedc;\n  t.kafrafehebrew = 0xfb4d;\n  t.kagujarati = 0x0a95;\n  t.kagurmukhi = 0x0a15;\n  t.kahiragana = 0x304b;\n  t.kahookcyrillic = 0x04c4;\n  t.kakatakana = 0x30ab;\n  t.kakatakanahalfwidth = 0xff76;\n  t.kappa = 0x03ba;\n  t.kappasymbolgreek = 0x03f0;\n  t.kapyeounmieumkorean = 0x3171;\n  t.kapyeounphieuphkorean = 0x3184;\n  t.kapyeounpieupkorean = 0x3178;\n  t.kapyeounssangpieupkorean = 0x3179;\n  t.karoriisquare = 0x330d;\n  t.kashidaautoarabic = 0x0640;\n  t.kashidaautonosidebearingarabic = 0x0640;\n  t.kasmallkatakana = 0x30f5;\n  t.kasquare = 0x3384;\n  t.kasraarabic = 0x0650;\n  t.kasratanarabic = 0x064d;\n  t.kastrokecyrillic = 0x049f;\n  t.katahiraprolongmarkhalfwidth = 0xff70;\n  t.kaverticalstrokecyrillic = 0x049d;\n  t.kbopomofo = 0x310e;\n  t.kcalsquare = 0x3389;\n  t.kcaron = 0x01e9;\n  t.kcedilla = 0x0137;\n  t.kcircle = 0x24da;\n  t.kcommaaccent = 0x0137;\n  t.kdotbelow = 0x1e33;\n  t.keharmenian = 0x0584;\n  t.kehiragana = 0x3051;\n  t.kekatakana = 0x30b1;\n  t.kekatakanahalfwidth = 0xff79;\n  t.kenarmenian = 0x056f;\n  t.kesmallkatakana = 0x30f6;\n  t.kgreenlandic = 0x0138;\n  t.khabengali = 0x0996;\n  t.khacyrillic = 0x0445;\n  t.khadeva = 0x0916;\n  t.khagujarati = 0x0a96;\n  t.khagurmukhi = 0x0a16;\n  t.khaharabic = 0x062e;\n  t.khahfinalarabic = 0xfea6;\n  t.khahinitialarabic = 0xfea7;\n  t.khahmedialarabic = 0xfea8;\n  t.kheicoptic = 0x03e7;\n  t.khhadeva = 0x0959;\n  t.khhagurmukhi = 0x0a59;\n  t.khieukhacirclekorean = 0x3278;\n  t.khieukhaparenkorean = 0x3218;\n  t.khieukhcirclekorean = 0x326a;\n  t.khieukhkorean = 0x314b;\n  t.khieukhparenkorean = 0x320a;\n  t.khokhaithai = 0x0e02;\n  t.khokhonthai = 0x0e05;\n  t.khokhuatthai = 0x0e03;\n  t.khokhwaithai = 0x0e04;\n  t.khomutthai = 0x0e5b;\n  t.khook = 0x0199;\n  t.khorakhangthai = 0x0e06;\n  t.khzsquare = 0x3391;\n  t.kihiragana = 0x304d;\n  t.kikatakana = 0x30ad;\n  t.kikatakanahalfwidth = 0xff77;\n  t.kiroguramusquare = 0x3315;\n  t.kiromeetorusquare = 0x3316;\n  t.kirosquare = 0x3314;\n  t.kiyeokacirclekorean = 0x326e;\n  t.kiyeokaparenkorean = 0x320e;\n  t.kiyeokcirclekorean = 0x3260;\n  t.kiyeokkorean = 0x3131;\n  t.kiyeokparenkorean = 0x3200;\n  t.kiyeoksioskorean = 0x3133;\n  t.kjecyrillic = 0x045c;\n  t.klinebelow = 0x1e35;\n  t.klsquare = 0x3398;\n  t.kmcubedsquare = 0x33a6;\n  t.kmonospace = 0xff4b;\n  t.kmsquaredsquare = 0x33a2;\n  t.kohiragana = 0x3053;\n  t.kohmsquare = 0x33c0;\n  t.kokaithai = 0x0e01;\n  t.kokatakana = 0x30b3;\n  t.kokatakanahalfwidth = 0xff7a;\n  t.kooposquare = 0x331e;\n  t.koppacyrillic = 0x0481;\n  t.koreanstandardsymbol = 0x327f;\n  t.koroniscmb = 0x0343;\n  t.kparen = 0x24a6;\n  t.kpasquare = 0x33aa;\n  t.ksicyrillic = 0x046f;\n  t.ktsquare = 0x33cf;\n  t.kturned = 0x029e;\n  t.kuhiragana = 0x304f;\n  t.kukatakana = 0x30af;\n  t.kukatakanahalfwidth = 0xff78;\n  t.kvsquare = 0x33b8;\n  t.kwsquare = 0x33be;\n  t.l = 0x006c;\n  t.labengali = 0x09b2;\n  t.lacute = 0x013a;\n  t.ladeva = 0x0932;\n  t.lagujarati = 0x0ab2;\n  t.lagurmukhi = 0x0a32;\n  t.lakkhangyaothai = 0x0e45;\n  t.lamaleffinalarabic = 0xfefc;\n  t.lamalefhamzaabovefinalarabic = 0xfef8;\n  t.lamalefhamzaaboveisolatedarabic = 0xfef7;\n  t.lamalefhamzabelowfinalarabic = 0xfefa;\n  t.lamalefhamzabelowisolatedarabic = 0xfef9;\n  t.lamalefisolatedarabic = 0xfefb;\n  t.lamalefmaddaabovefinalarabic = 0xfef6;\n  t.lamalefmaddaaboveisolatedarabic = 0xfef5;\n  t.lamarabic = 0x0644;\n  t.lambda = 0x03bb;\n  t.lambdastroke = 0x019b;\n  t.lamed = 0x05dc;\n  t.lameddagesh = 0xfb3c;\n  t.lameddageshhebrew = 0xfb3c;\n  t.lamedhebrew = 0x05dc;\n  t.lamfinalarabic = 0xfede;\n  t.lamhahinitialarabic = 0xfcca;\n  t.laminitialarabic = 0xfedf;\n  t.lamjeeminitialarabic = 0xfcc9;\n  t.lamkhahinitialarabic = 0xfccb;\n  t.lamlamhehisolatedarabic = 0xfdf2;\n  t.lammedialarabic = 0xfee0;\n  t.lammeemhahinitialarabic = 0xfd88;\n  t.lammeeminitialarabic = 0xfccc;\n  t.largecircle = 0x25ef;\n  t.lbar = 0x019a;\n  t.lbelt = 0x026c;\n  t.lbopomofo = 0x310c;\n  t.lcaron = 0x013e;\n  t.lcedilla = 0x013c;\n  t.lcircle = 0x24db;\n  t.lcircumflexbelow = 0x1e3d;\n  t.lcommaaccent = 0x013c;\n  t.ldot = 0x0140;\n  t.ldotaccent = 0x0140;\n  t.ldotbelow = 0x1e37;\n  t.ldotbelowmacron = 0x1e39;\n  t.leftangleabovecmb = 0x031a;\n  t.lefttackbelowcmb = 0x0318;\n  t.less = 0x003c;\n  t.lessequal = 0x2264;\n  t.lessequalorgreater = 0x22da;\n  t.lessmonospace = 0xff1c;\n  t.lessorequivalent = 0x2272;\n  t.lessorgreater = 0x2276;\n  t.lessoverequal = 0x2266;\n  t.lesssmall = 0xfe64;\n  t.lezh = 0x026e;\n  t.lfblock = 0x258c;\n  t.lhookretroflex = 0x026d;\n  t.lira = 0x20a4;\n  t.liwnarmenian = 0x056c;\n  t.lj = 0x01c9;\n  t.ljecyrillic = 0x0459;\n  t.ll = 0xf6c0;\n  t.lladeva = 0x0933;\n  t.llagujarati = 0x0ab3;\n  t.llinebelow = 0x1e3b;\n  t.llladeva = 0x0934;\n  t.llvocalicbengali = 0x09e1;\n  t.llvocalicdeva = 0x0961;\n  t.llvocalicvowelsignbengali = 0x09e3;\n  t.llvocalicvowelsigndeva = 0x0963;\n  t.lmiddletilde = 0x026b;\n  t.lmonospace = 0xff4c;\n  t.lmsquare = 0x33d0;\n  t.lochulathai = 0x0e2c;\n  t.logicaland = 0x2227;\n  t.logicalnot = 0x00ac;\n  t.logicalnotreversed = 0x2310;\n  t.logicalor = 0x2228;\n  t.lolingthai = 0x0e25;\n  t.longs = 0x017f;\n  t.lowlinecenterline = 0xfe4e;\n  t.lowlinecmb = 0x0332;\n  t.lowlinedashed = 0xfe4d;\n  t.lozenge = 0x25ca;\n  t.lparen = 0x24a7;\n  t.lslash = 0x0142;\n  t.lsquare = 0x2113;\n  t.lsuperior = 0xf6ee;\n  t.ltshade = 0x2591;\n  t.luthai = 0x0e26;\n  t.lvocalicbengali = 0x098c;\n  t.lvocalicdeva = 0x090c;\n  t.lvocalicvowelsignbengali = 0x09e2;\n  t.lvocalicvowelsigndeva = 0x0962;\n  t.lxsquare = 0x33d3;\n  t.m = 0x006d;\n  t.mabengali = 0x09ae;\n  t.macron = 0x00af;\n  t.macronbelowcmb = 0x0331;\n  t.macroncmb = 0x0304;\n  t.macronlowmod = 0x02cd;\n  t.macronmonospace = 0xffe3;\n  t.macute = 0x1e3f;\n  t.madeva = 0x092e;\n  t.magujarati = 0x0aae;\n  t.magurmukhi = 0x0a2e;\n  t.mahapakhhebrew = 0x05a4;\n  t.mahapakhlefthebrew = 0x05a4;\n  t.mahiragana = 0x307e;\n  t.maichattawalowleftthai = 0xf895;\n  t.maichattawalowrightthai = 0xf894;\n  t.maichattawathai = 0x0e4b;\n  t.maichattawaupperleftthai = 0xf893;\n  t.maieklowleftthai = 0xf88c;\n  t.maieklowrightthai = 0xf88b;\n  t.maiekthai = 0x0e48;\n  t.maiekupperleftthai = 0xf88a;\n  t.maihanakatleftthai = 0xf884;\n  t.maihanakatthai = 0x0e31;\n  t.maitaikhuleftthai = 0xf889;\n  t.maitaikhuthai = 0x0e47;\n  t.maitholowleftthai = 0xf88f;\n  t.maitholowrightthai = 0xf88e;\n  t.maithothai = 0x0e49;\n  t.maithoupperleftthai = 0xf88d;\n  t.maitrilowleftthai = 0xf892;\n  t.maitrilowrightthai = 0xf891;\n  t.maitrithai = 0x0e4a;\n  t.maitriupperleftthai = 0xf890;\n  t.maiyamokthai = 0x0e46;\n  t.makatakana = 0x30de;\n  t.makatakanahalfwidth = 0xff8f;\n  t.male = 0x2642;\n  t.mansyonsquare = 0x3347;\n  t.maqafhebrew = 0x05be;\n  t.mars = 0x2642;\n  t.masoracirclehebrew = 0x05af;\n  t.masquare = 0x3383;\n  t.mbopomofo = 0x3107;\n  t.mbsquare = 0x33d4;\n  t.mcircle = 0x24dc;\n  t.mcubedsquare = 0x33a5;\n  t.mdotaccent = 0x1e41;\n  t.mdotbelow = 0x1e43;\n  t.meemarabic = 0x0645;\n  t.meemfinalarabic = 0xfee2;\n  t.meeminitialarabic = 0xfee3;\n  t.meemmedialarabic = 0xfee4;\n  t.meemmeeminitialarabic = 0xfcd1;\n  t.meemmeemisolatedarabic = 0xfc48;\n  t.meetorusquare = 0x334d;\n  t.mehiragana = 0x3081;\n  t.meizierasquare = 0x337e;\n  t.mekatakana = 0x30e1;\n  t.mekatakanahalfwidth = 0xff92;\n  t.mem = 0x05de;\n  t.memdagesh = 0xfb3e;\n  t.memdageshhebrew = 0xfb3e;\n  t.memhebrew = 0x05de;\n  t.menarmenian = 0x0574;\n  t.merkhahebrew = 0x05a5;\n  t.merkhakefulahebrew = 0x05a6;\n  t.merkhakefulalefthebrew = 0x05a6;\n  t.merkhalefthebrew = 0x05a5;\n  t.mhook = 0x0271;\n  t.mhzsquare = 0x3392;\n  t.middledotkatakanahalfwidth = 0xff65;\n  t.middot = 0x00b7;\n  t.mieumacirclekorean = 0x3272;\n  t.mieumaparenkorean = 0x3212;\n  t.mieumcirclekorean = 0x3264;\n  t.mieumkorean = 0x3141;\n  t.mieumpansioskorean = 0x3170;\n  t.mieumparenkorean = 0x3204;\n  t.mieumpieupkorean = 0x316e;\n  t.mieumsioskorean = 0x316f;\n  t.mihiragana = 0x307f;\n  t.mikatakana = 0x30df;\n  t.mikatakanahalfwidth = 0xff90;\n  t.minus = 0x2212;\n  t.minusbelowcmb = 0x0320;\n  t.minuscircle = 0x2296;\n  t.minusmod = 0x02d7;\n  t.minusplus = 0x2213;\n  t.minute = 0x2032;\n  t.miribaarusquare = 0x334a;\n  t.mirisquare = 0x3349;\n  t.mlonglegturned = 0x0270;\n  t.mlsquare = 0x3396;\n  t.mmcubedsquare = 0x33a3;\n  t.mmonospace = 0xff4d;\n  t.mmsquaredsquare = 0x339f;\n  t.mohiragana = 0x3082;\n  t.mohmsquare = 0x33c1;\n  t.mokatakana = 0x30e2;\n  t.mokatakanahalfwidth = 0xff93;\n  t.molsquare = 0x33d6;\n  t.momathai = 0x0e21;\n  t.moverssquare = 0x33a7;\n  t.moverssquaredsquare = 0x33a8;\n  t.mparen = 0x24a8;\n  t.mpasquare = 0x33ab;\n  t.mssquare = 0x33b3;\n  t.msuperior = 0xf6ef;\n  t.mturned = 0x026f;\n  t.mu = 0x00b5;\n  t.mu1 = 0x00b5;\n  t.muasquare = 0x3382;\n  t.muchgreater = 0x226b;\n  t.muchless = 0x226a;\n  t.mufsquare = 0x338c;\n  t.mugreek = 0x03bc;\n  t.mugsquare = 0x338d;\n  t.muhiragana = 0x3080;\n  t.mukatakana = 0x30e0;\n  t.mukatakanahalfwidth = 0xff91;\n  t.mulsquare = 0x3395;\n  t.multiply = 0x00d7;\n  t.mumsquare = 0x339b;\n  t.munahhebrew = 0x05a3;\n  t.munahlefthebrew = 0x05a3;\n  t.musicalnote = 0x266a;\n  t.musicalnotedbl = 0x266b;\n  t.musicflatsign = 0x266d;\n  t.musicsharpsign = 0x266f;\n  t.mussquare = 0x33b2;\n  t.muvsquare = 0x33b6;\n  t.muwsquare = 0x33bc;\n  t.mvmegasquare = 0x33b9;\n  t.mvsquare = 0x33b7;\n  t.mwmegasquare = 0x33bf;\n  t.mwsquare = 0x33bd;\n  t.n = 0x006e;\n  t.nabengali = 0x09a8;\n  t.nabla = 0x2207;\n  t.nacute = 0x0144;\n  t.nadeva = 0x0928;\n  t.nagujarati = 0x0aa8;\n  t.nagurmukhi = 0x0a28;\n  t.nahiragana = 0x306a;\n  t.nakatakana = 0x30ca;\n  t.nakatakanahalfwidth = 0xff85;\n  t.napostrophe = 0x0149;\n  t.nasquare = 0x3381;\n  t.nbopomofo = 0x310b;\n  t.nbspace = 0x00a0;\n  t.ncaron = 0x0148;\n  t.ncedilla = 0x0146;\n  t.ncircle = 0x24dd;\n  t.ncircumflexbelow = 0x1e4b;\n  t.ncommaaccent = 0x0146;\n  t.ndotaccent = 0x1e45;\n  t.ndotbelow = 0x1e47;\n  t.nehiragana = 0x306d;\n  t.nekatakana = 0x30cd;\n  t.nekatakanahalfwidth = 0xff88;\n  t.newsheqelsign = 0x20aa;\n  t.nfsquare = 0x338b;\n  t.ngabengali = 0x0999;\n  t.ngadeva = 0x0919;\n  t.ngagujarati = 0x0a99;\n  t.ngagurmukhi = 0x0a19;\n  t.ngonguthai = 0x0e07;\n  t.nhiragana = 0x3093;\n  t.nhookleft = 0x0272;\n  t.nhookretroflex = 0x0273;\n  t.nieunacirclekorean = 0x326f;\n  t.nieunaparenkorean = 0x320f;\n  t.nieuncieuckorean = 0x3135;\n  t.nieuncirclekorean = 0x3261;\n  t.nieunhieuhkorean = 0x3136;\n  t.nieunkorean = 0x3134;\n  t.nieunpansioskorean = 0x3168;\n  t.nieunparenkorean = 0x3201;\n  t.nieunsioskorean = 0x3167;\n  t.nieuntikeutkorean = 0x3166;\n  t.nihiragana = 0x306b;\n  t.nikatakana = 0x30cb;\n  t.nikatakanahalfwidth = 0xff86;\n  t.nikhahitleftthai = 0xf899;\n  t.nikhahitthai = 0x0e4d;\n  t.nine = 0x0039;\n  t.ninearabic = 0x0669;\n  t.ninebengali = 0x09ef;\n  t.ninecircle = 0x2468;\n  t.ninecircleinversesansserif = 0x2792;\n  t.ninedeva = 0x096f;\n  t.ninegujarati = 0x0aef;\n  t.ninegurmukhi = 0x0a6f;\n  t.ninehackarabic = 0x0669;\n  t.ninehangzhou = 0x3029;\n  t.nineideographicparen = 0x3228;\n  t.nineinferior = 0x2089;\n  t.ninemonospace = 0xff19;\n  t.nineoldstyle = 0xf739;\n  t.nineparen = 0x247c;\n  t.nineperiod = 0x2490;\n  t.ninepersian = 0x06f9;\n  t.nineroman = 0x2178;\n  t.ninesuperior = 0x2079;\n  t.nineteencircle = 0x2472;\n  t.nineteenparen = 0x2486;\n  t.nineteenperiod = 0x249a;\n  t.ninethai = 0x0e59;\n  t.nj = 0x01cc;\n  t.njecyrillic = 0x045a;\n  t.nkatakana = 0x30f3;\n  t.nkatakanahalfwidth = 0xff9d;\n  t.nlegrightlong = 0x019e;\n  t.nlinebelow = 0x1e49;\n  t.nmonospace = 0xff4e;\n  t.nmsquare = 0x339a;\n  t.nnabengali = 0x09a3;\n  t.nnadeva = 0x0923;\n  t.nnagujarati = 0x0aa3;\n  t.nnagurmukhi = 0x0a23;\n  t.nnnadeva = 0x0929;\n  t.nohiragana = 0x306e;\n  t.nokatakana = 0x30ce;\n  t.nokatakanahalfwidth = 0xff89;\n  t.nonbreakingspace = 0x00a0;\n  t.nonenthai = 0x0e13;\n  t.nonuthai = 0x0e19;\n  t.noonarabic = 0x0646;\n  t.noonfinalarabic = 0xfee6;\n  t.noonghunnaarabic = 0x06ba;\n  t.noonghunnafinalarabic = 0xfb9f;\n  t.nooninitialarabic = 0xfee7;\n  t.noonjeeminitialarabic = 0xfcd2;\n  t.noonjeemisolatedarabic = 0xfc4b;\n  t.noonmedialarabic = 0xfee8;\n  t.noonmeeminitialarabic = 0xfcd5;\n  t.noonmeemisolatedarabic = 0xfc4e;\n  t.noonnoonfinalarabic = 0xfc8d;\n  t.notcontains = 0x220c;\n  t.notelement = 0x2209;\n  t.notelementof = 0x2209;\n  t.notequal = 0x2260;\n  t.notgreater = 0x226f;\n  t.notgreaternorequal = 0x2271;\n  t.notgreaternorless = 0x2279;\n  t.notidentical = 0x2262;\n  t.notless = 0x226e;\n  t.notlessnorequal = 0x2270;\n  t.notparallel = 0x2226;\n  t.notprecedes = 0x2280;\n  t.notsubset = 0x2284;\n  t.notsucceeds = 0x2281;\n  t.notsuperset = 0x2285;\n  t.nowarmenian = 0x0576;\n  t.nparen = 0x24a9;\n  t.nssquare = 0x33b1;\n  t.nsuperior = 0x207f;\n  t.ntilde = 0x00f1;\n  t.nu = 0x03bd;\n  t.nuhiragana = 0x306c;\n  t.nukatakana = 0x30cc;\n  t.nukatakanahalfwidth = 0xff87;\n  t.nuktabengali = 0x09bc;\n  t.nuktadeva = 0x093c;\n  t.nuktagujarati = 0x0abc;\n  t.nuktagurmukhi = 0x0a3c;\n  t.numbersign = 0x0023;\n  t.numbersignmonospace = 0xff03;\n  t.numbersignsmall = 0xfe5f;\n  t.numeralsigngreek = 0x0374;\n  t.numeralsignlowergreek = 0x0375;\n  t.numero = 0x2116;\n  t.nun = 0x05e0;\n  t.nundagesh = 0xfb40;\n  t.nundageshhebrew = 0xfb40;\n  t.nunhebrew = 0x05e0;\n  t.nvsquare = 0x33b5;\n  t.nwsquare = 0x33bb;\n  t.nyabengali = 0x099e;\n  t.nyadeva = 0x091e;\n  t.nyagujarati = 0x0a9e;\n  t.nyagurmukhi = 0x0a1e;\n  t.o = 0x006f;\n  t.oacute = 0x00f3;\n  t.oangthai = 0x0e2d;\n  t.obarred = 0x0275;\n  t.obarredcyrillic = 0x04e9;\n  t.obarreddieresiscyrillic = 0x04eb;\n  t.obengali = 0x0993;\n  t.obopomofo = 0x311b;\n  t.obreve = 0x014f;\n  t.ocandradeva = 0x0911;\n  t.ocandragujarati = 0x0a91;\n  t.ocandravowelsigndeva = 0x0949;\n  t.ocandravowelsigngujarati = 0x0ac9;\n  t.ocaron = 0x01d2;\n  t.ocircle = 0x24de;\n  t.ocircumflex = 0x00f4;\n  t.ocircumflexacute = 0x1ed1;\n  t.ocircumflexdotbelow = 0x1ed9;\n  t.ocircumflexgrave = 0x1ed3;\n  t.ocircumflexhookabove = 0x1ed5;\n  t.ocircumflextilde = 0x1ed7;\n  t.ocyrillic = 0x043e;\n  t.odblacute = 0x0151;\n  t.odblgrave = 0x020d;\n  t.odeva = 0x0913;\n  t.odieresis = 0x00f6;\n  t.odieresiscyrillic = 0x04e7;\n  t.odotbelow = 0x1ecd;\n  t.oe = 0x0153;\n  t.oekorean = 0x315a;\n  t.ogonek = 0x02db;\n  t.ogonekcmb = 0x0328;\n  t.ograve = 0x00f2;\n  t.ogujarati = 0x0a93;\n  t.oharmenian = 0x0585;\n  t.ohiragana = 0x304a;\n  t.ohookabove = 0x1ecf;\n  t.ohorn = 0x01a1;\n  t.ohornacute = 0x1edb;\n  t.ohorndotbelow = 0x1ee3;\n  t.ohorngrave = 0x1edd;\n  t.ohornhookabove = 0x1edf;\n  t.ohorntilde = 0x1ee1;\n  t.ohungarumlaut = 0x0151;\n  t.oi = 0x01a3;\n  t.oinvertedbreve = 0x020f;\n  t.okatakana = 0x30aa;\n  t.okatakanahalfwidth = 0xff75;\n  t.okorean = 0x3157;\n  t.olehebrew = 0x05ab;\n  t.omacron = 0x014d;\n  t.omacronacute = 0x1e53;\n  t.omacrongrave = 0x1e51;\n  t.omdeva = 0x0950;\n  t.omega = 0x03c9;\n  t.omega1 = 0x03d6;\n  t.omegacyrillic = 0x0461;\n  t.omegalatinclosed = 0x0277;\n  t.omegaroundcyrillic = 0x047b;\n  t.omegatitlocyrillic = 0x047d;\n  t.omegatonos = 0x03ce;\n  t.omgujarati = 0x0ad0;\n  t.omicron = 0x03bf;\n  t.omicrontonos = 0x03cc;\n  t.omonospace = 0xff4f;\n  t.one = 0x0031;\n  t.onearabic = 0x0661;\n  t.onebengali = 0x09e7;\n  t.onecircle = 0x2460;\n  t.onecircleinversesansserif = 0x278a;\n  t.onedeva = 0x0967;\n  t.onedotenleader = 0x2024;\n  t.oneeighth = 0x215b;\n  t.onefitted = 0xf6dc;\n  t.onegujarati = 0x0ae7;\n  t.onegurmukhi = 0x0a67;\n  t.onehackarabic = 0x0661;\n  t.onehalf = 0x00bd;\n  t.onehangzhou = 0x3021;\n  t.oneideographicparen = 0x3220;\n  t.oneinferior = 0x2081;\n  t.onemonospace = 0xff11;\n  t.onenumeratorbengali = 0x09f4;\n  t.oneoldstyle = 0xf731;\n  t.oneparen = 0x2474;\n  t.oneperiod = 0x2488;\n  t.onepersian = 0x06f1;\n  t.onequarter = 0x00bc;\n  t.oneroman = 0x2170;\n  t.onesuperior = 0x00b9;\n  t.onethai = 0x0e51;\n  t.onethird = 0x2153;\n  t.oogonek = 0x01eb;\n  t.oogonekmacron = 0x01ed;\n  t.oogurmukhi = 0x0a13;\n  t.oomatragurmukhi = 0x0a4b;\n  t.oopen = 0x0254;\n  t.oparen = 0x24aa;\n  t.openbullet = 0x25e6;\n  t.option = 0x2325;\n  t.ordfeminine = 0x00aa;\n  t.ordmasculine = 0x00ba;\n  t.orthogonal = 0x221f;\n  t.oshortdeva = 0x0912;\n  t.oshortvowelsigndeva = 0x094a;\n  t.oslash = 0x00f8;\n  t.oslashacute = 0x01ff;\n  t.osmallhiragana = 0x3049;\n  t.osmallkatakana = 0x30a9;\n  t.osmallkatakanahalfwidth = 0xff6b;\n  t.ostrokeacute = 0x01ff;\n  t.osuperior = 0xf6f0;\n  t.otcyrillic = 0x047f;\n  t.otilde = 0x00f5;\n  t.otildeacute = 0x1e4d;\n  t.otildedieresis = 0x1e4f;\n  t.oubopomofo = 0x3121;\n  t.overline = 0x203e;\n  t.overlinecenterline = 0xfe4a;\n  t.overlinecmb = 0x0305;\n  t.overlinedashed = 0xfe49;\n  t.overlinedblwavy = 0xfe4c;\n  t.overlinewavy = 0xfe4b;\n  t.overscore = 0x00af;\n  t.ovowelsignbengali = 0x09cb;\n  t.ovowelsigndeva = 0x094b;\n  t.ovowelsigngujarati = 0x0acb;\n  t.p = 0x0070;\n  t.paampssquare = 0x3380;\n  t.paasentosquare = 0x332b;\n  t.pabengali = 0x09aa;\n  t.pacute = 0x1e55;\n  t.padeva = 0x092a;\n  t.pagedown = 0x21df;\n  t.pageup = 0x21de;\n  t.pagujarati = 0x0aaa;\n  t.pagurmukhi = 0x0a2a;\n  t.pahiragana = 0x3071;\n  t.paiyannoithai = 0x0e2f;\n  t.pakatakana = 0x30d1;\n  t.palatalizationcyrilliccmb = 0x0484;\n  t.palochkacyrillic = 0x04c0;\n  t.pansioskorean = 0x317f;\n  t.paragraph = 0x00b6;\n  t.parallel = 0x2225;\n  t.parenleft = 0x0028;\n  t.parenleftaltonearabic = 0xfd3e;\n  t.parenleftbt = 0xf8ed;\n  t.parenleftex = 0xf8ec;\n  t.parenleftinferior = 0x208d;\n  t.parenleftmonospace = 0xff08;\n  t.parenleftsmall = 0xfe59;\n  t.parenleftsuperior = 0x207d;\n  t.parenlefttp = 0xf8eb;\n  t.parenleftvertical = 0xfe35;\n  t.parenright = 0x0029;\n  t.parenrightaltonearabic = 0xfd3f;\n  t.parenrightbt = 0xf8f8;\n  t.parenrightex = 0xf8f7;\n  t.parenrightinferior = 0x208e;\n  t.parenrightmonospace = 0xff09;\n  t.parenrightsmall = 0xfe5a;\n  t.parenrightsuperior = 0x207e;\n  t.parenrighttp = 0xf8f6;\n  t.parenrightvertical = 0xfe36;\n  t.partialdiff = 0x2202;\n  t.paseqhebrew = 0x05c0;\n  t.pashtahebrew = 0x0599;\n  t.pasquare = 0x33a9;\n  t.patah = 0x05b7;\n  t.patah11 = 0x05b7;\n  t.patah1d = 0x05b7;\n  t.patah2a = 0x05b7;\n  t.patahhebrew = 0x05b7;\n  t.patahnarrowhebrew = 0x05b7;\n  t.patahquarterhebrew = 0x05b7;\n  t.patahwidehebrew = 0x05b7;\n  t.pazerhebrew = 0x05a1;\n  t.pbopomofo = 0x3106;\n  t.pcircle = 0x24df;\n  t.pdotaccent = 0x1e57;\n  t.pe = 0x05e4;\n  t.pecyrillic = 0x043f;\n  t.pedagesh = 0xfb44;\n  t.pedageshhebrew = 0xfb44;\n  t.peezisquare = 0x333b;\n  t.pefinaldageshhebrew = 0xfb43;\n  t.peharabic = 0x067e;\n  t.peharmenian = 0x057a;\n  t.pehebrew = 0x05e4;\n  t.pehfinalarabic = 0xfb57;\n  t.pehinitialarabic = 0xfb58;\n  t.pehiragana = 0x307a;\n  t.pehmedialarabic = 0xfb59;\n  t.pekatakana = 0x30da;\n  t.pemiddlehookcyrillic = 0x04a7;\n  t.perafehebrew = 0xfb4e;\n  t.percent = 0x0025;\n  t.percentarabic = 0x066a;\n  t.percentmonospace = 0xff05;\n  t.percentsmall = 0xfe6a;\n  t.period = 0x002e;\n  t.periodarmenian = 0x0589;\n  t.periodcentered = 0x00b7;\n  t.periodhalfwidth = 0xff61;\n  t.periodinferior = 0xf6e7;\n  t.periodmonospace = 0xff0e;\n  t.periodsmall = 0xfe52;\n  t.periodsuperior = 0xf6e8;\n  t.perispomenigreekcmb = 0x0342;\n  t.perpendicular = 0x22a5;\n  t.perthousand = 0x2030;\n  t.peseta = 0x20a7;\n  t.pfsquare = 0x338a;\n  t.phabengali = 0x09ab;\n  t.phadeva = 0x092b;\n  t.phagujarati = 0x0aab;\n  t.phagurmukhi = 0x0a2b;\n  t.phi = 0x03c6;\n  t.phi1 = 0x03d5;\n  t.phieuphacirclekorean = 0x327a;\n  t.phieuphaparenkorean = 0x321a;\n  t.phieuphcirclekorean = 0x326c;\n  t.phieuphkorean = 0x314d;\n  t.phieuphparenkorean = 0x320c;\n  t.philatin = 0x0278;\n  t.phinthuthai = 0x0e3a;\n  t.phisymbolgreek = 0x03d5;\n  t.phook = 0x01a5;\n  t.phophanthai = 0x0e1e;\n  t.phophungthai = 0x0e1c;\n  t.phosamphaothai = 0x0e20;\n  t.pi = 0x03c0;\n  t.pieupacirclekorean = 0x3273;\n  t.pieupaparenkorean = 0x3213;\n  t.pieupcieuckorean = 0x3176;\n  t.pieupcirclekorean = 0x3265;\n  t.pieupkiyeokkorean = 0x3172;\n  t.pieupkorean = 0x3142;\n  t.pieupparenkorean = 0x3205;\n  t.pieupsioskiyeokkorean = 0x3174;\n  t.pieupsioskorean = 0x3144;\n  t.pieupsiostikeutkorean = 0x3175;\n  t.pieupthieuthkorean = 0x3177;\n  t.pieuptikeutkorean = 0x3173;\n  t.pihiragana = 0x3074;\n  t.pikatakana = 0x30d4;\n  t.pisymbolgreek = 0x03d6;\n  t.piwrarmenian = 0x0583;\n  t.plus = 0x002b;\n  t.plusbelowcmb = 0x031f;\n  t.pluscircle = 0x2295;\n  t.plusminus = 0x00b1;\n  t.plusmod = 0x02d6;\n  t.plusmonospace = 0xff0b;\n  t.plussmall = 0xfe62;\n  t.plussuperior = 0x207a;\n  t.pmonospace = 0xff50;\n  t.pmsquare = 0x33d8;\n  t.pohiragana = 0x307d;\n  t.pointingindexdownwhite = 0x261f;\n  t.pointingindexleftwhite = 0x261c;\n  t.pointingindexrightwhite = 0x261e;\n  t.pointingindexupwhite = 0x261d;\n  t.pokatakana = 0x30dd;\n  t.poplathai = 0x0e1b;\n  t.postalmark = 0x3012;\n  t.postalmarkface = 0x3020;\n  t.pparen = 0x24ab;\n  t.precedes = 0x227a;\n  t.prescription = 0x211e;\n  t.primemod = 0x02b9;\n  t.primereversed = 0x2035;\n  t.product = 0x220f;\n  t.projective = 0x2305;\n  t.prolongedkana = 0x30fc;\n  t.propellor = 0x2318;\n  t.propersubset = 0x2282;\n  t.propersuperset = 0x2283;\n  t.proportion = 0x2237;\n  t.proportional = 0x221d;\n  t.psi = 0x03c8;\n  t.psicyrillic = 0x0471;\n  t.psilipneumatacyrilliccmb = 0x0486;\n  t.pssquare = 0x33b0;\n  t.puhiragana = 0x3077;\n  t.pukatakana = 0x30d7;\n  t.pvsquare = 0x33b4;\n  t.pwsquare = 0x33ba;\n  t.q = 0x0071;\n  t.qadeva = 0x0958;\n  t.qadmahebrew = 0x05a8;\n  t.qafarabic = 0x0642;\n  t.qaffinalarabic = 0xfed6;\n  t.qafinitialarabic = 0xfed7;\n  t.qafmedialarabic = 0xfed8;\n  t.qamats = 0x05b8;\n  t.qamats10 = 0x05b8;\n  t.qamats1a = 0x05b8;\n  t.qamats1c = 0x05b8;\n  t.qamats27 = 0x05b8;\n  t.qamats29 = 0x05b8;\n  t.qamats33 = 0x05b8;\n  t.qamatsde = 0x05b8;\n  t.qamatshebrew = 0x05b8;\n  t.qamatsnarrowhebrew = 0x05b8;\n  t.qamatsqatanhebrew = 0x05b8;\n  t.qamatsqatannarrowhebrew = 0x05b8;\n  t.qamatsqatanquarterhebrew = 0x05b8;\n  t.qamatsqatanwidehebrew = 0x05b8;\n  t.qamatsquarterhebrew = 0x05b8;\n  t.qamatswidehebrew = 0x05b8;\n  t.qarneyparahebrew = 0x059f;\n  t.qbopomofo = 0x3111;\n  t.qcircle = 0x24e0;\n  t.qhook = 0x02a0;\n  t.qmonospace = 0xff51;\n  t.qof = 0x05e7;\n  t.qofdagesh = 0xfb47;\n  t.qofdageshhebrew = 0xfb47;\n  t.qofhebrew = 0x05e7;\n  t.qparen = 0x24ac;\n  t.quarternote = 0x2669;\n  t.qubuts = 0x05bb;\n  t.qubuts18 = 0x05bb;\n  t.qubuts25 = 0x05bb;\n  t.qubuts31 = 0x05bb;\n  t.qubutshebrew = 0x05bb;\n  t.qubutsnarrowhebrew = 0x05bb;\n  t.qubutsquarterhebrew = 0x05bb;\n  t.qubutswidehebrew = 0x05bb;\n  t.question = 0x003f;\n  t.questionarabic = 0x061f;\n  t.questionarmenian = 0x055e;\n  t.questiondown = 0x00bf;\n  t.questiondownsmall = 0xf7bf;\n  t.questiongreek = 0x037e;\n  t.questionmonospace = 0xff1f;\n  t.questionsmall = 0xf73f;\n  t.quotedbl = 0x0022;\n  t.quotedblbase = 0x201e;\n  t.quotedblleft = 0x201c;\n  t.quotedblmonospace = 0xff02;\n  t.quotedblprime = 0x301e;\n  t.quotedblprimereversed = 0x301d;\n  t.quotedblright = 0x201d;\n  t.quoteleft = 0x2018;\n  t.quoteleftreversed = 0x201b;\n  t.quotereversed = 0x201b;\n  t.quoteright = 0x2019;\n  t.quoterightn = 0x0149;\n  t.quotesinglbase = 0x201a;\n  t.quotesingle = 0x0027;\n  t.quotesinglemonospace = 0xff07;\n  t.r = 0x0072;\n  t.raarmenian = 0x057c;\n  t.rabengali = 0x09b0;\n  t.racute = 0x0155;\n  t.radeva = 0x0930;\n  t.radical = 0x221a;\n  t.radicalex = 0xf8e5;\n  t.radoverssquare = 0x33ae;\n  t.radoverssquaredsquare = 0x33af;\n  t.radsquare = 0x33ad;\n  t.rafe = 0x05bf;\n  t.rafehebrew = 0x05bf;\n  t.ragujarati = 0x0ab0;\n  t.ragurmukhi = 0x0a30;\n  t.rahiragana = 0x3089;\n  t.rakatakana = 0x30e9;\n  t.rakatakanahalfwidth = 0xff97;\n  t.ralowerdiagonalbengali = 0x09f1;\n  t.ramiddlediagonalbengali = 0x09f0;\n  t.ramshorn = 0x0264;\n  t.ratio = 0x2236;\n  t.rbopomofo = 0x3116;\n  t.rcaron = 0x0159;\n  t.rcedilla = 0x0157;\n  t.rcircle = 0x24e1;\n  t.rcommaaccent = 0x0157;\n  t.rdblgrave = 0x0211;\n  t.rdotaccent = 0x1e59;\n  t.rdotbelow = 0x1e5b;\n  t.rdotbelowmacron = 0x1e5d;\n  t.referencemark = 0x203b;\n  t.reflexsubset = 0x2286;\n  t.reflexsuperset = 0x2287;\n  t.registered = 0x00ae;\n  t.registersans = 0xf8e8;\n  t.registerserif = 0xf6da;\n  t.reharabic = 0x0631;\n  t.reharmenian = 0x0580;\n  t.rehfinalarabic = 0xfeae;\n  t.rehiragana = 0x308c;\n  t.rekatakana = 0x30ec;\n  t.rekatakanahalfwidth = 0xff9a;\n  t.resh = 0x05e8;\n  t.reshdageshhebrew = 0xfb48;\n  t.reshhebrew = 0x05e8;\n  t.reversedtilde = 0x223d;\n  t.reviahebrew = 0x0597;\n  t.reviamugrashhebrew = 0x0597;\n  t.revlogicalnot = 0x2310;\n  t.rfishhook = 0x027e;\n  t.rfishhookreversed = 0x027f;\n  t.rhabengali = 0x09dd;\n  t.rhadeva = 0x095d;\n  t.rho = 0x03c1;\n  t.rhook = 0x027d;\n  t.rhookturned = 0x027b;\n  t.rhookturnedsuperior = 0x02b5;\n  t.rhosymbolgreek = 0x03f1;\n  t.rhotichookmod = 0x02de;\n  t.rieulacirclekorean = 0x3271;\n  t.rieulaparenkorean = 0x3211;\n  t.rieulcirclekorean = 0x3263;\n  t.rieulhieuhkorean = 0x3140;\n  t.rieulkiyeokkorean = 0x313a;\n  t.rieulkiyeoksioskorean = 0x3169;\n  t.rieulkorean = 0x3139;\n  t.rieulmieumkorean = 0x313b;\n  t.rieulpansioskorean = 0x316c;\n  t.rieulparenkorean = 0x3203;\n  t.rieulphieuphkorean = 0x313f;\n  t.rieulpieupkorean = 0x313c;\n  t.rieulpieupsioskorean = 0x316b;\n  t.rieulsioskorean = 0x313d;\n  t.rieulthieuthkorean = 0x313e;\n  t.rieultikeutkorean = 0x316a;\n  t.rieulyeorinhieuhkorean = 0x316d;\n  t.rightangle = 0x221f;\n  t.righttackbelowcmb = 0x0319;\n  t.righttriangle = 0x22bf;\n  t.rihiragana = 0x308a;\n  t.rikatakana = 0x30ea;\n  t.rikatakanahalfwidth = 0xff98;\n  t.ring = 0x02da;\n  t.ringbelowcmb = 0x0325;\n  t.ringcmb = 0x030a;\n  t.ringhalfleft = 0x02bf;\n  t.ringhalfleftarmenian = 0x0559;\n  t.ringhalfleftbelowcmb = 0x031c;\n  t.ringhalfleftcentered = 0x02d3;\n  t.ringhalfright = 0x02be;\n  t.ringhalfrightbelowcmb = 0x0339;\n  t.ringhalfrightcentered = 0x02d2;\n  t.rinvertedbreve = 0x0213;\n  t.rittorusquare = 0x3351;\n  t.rlinebelow = 0x1e5f;\n  t.rlongleg = 0x027c;\n  t.rlonglegturned = 0x027a;\n  t.rmonospace = 0xff52;\n  t.rohiragana = 0x308d;\n  t.rokatakana = 0x30ed;\n  t.rokatakanahalfwidth = 0xff9b;\n  t.roruathai = 0x0e23;\n  t.rparen = 0x24ad;\n  t.rrabengali = 0x09dc;\n  t.rradeva = 0x0931;\n  t.rragurmukhi = 0x0a5c;\n  t.rreharabic = 0x0691;\n  t.rrehfinalarabic = 0xfb8d;\n  t.rrvocalicbengali = 0x09e0;\n  t.rrvocalicdeva = 0x0960;\n  t.rrvocalicgujarati = 0x0ae0;\n  t.rrvocalicvowelsignbengali = 0x09c4;\n  t.rrvocalicvowelsigndeva = 0x0944;\n  t.rrvocalicvowelsigngujarati = 0x0ac4;\n  t.rsuperior = 0xf6f1;\n  t.rtblock = 0x2590;\n  t.rturned = 0x0279;\n  t.rturnedsuperior = 0x02b4;\n  t.ruhiragana = 0x308b;\n  t.rukatakana = 0x30eb;\n  t.rukatakanahalfwidth = 0xff99;\n  t.rupeemarkbengali = 0x09f2;\n  t.rupeesignbengali = 0x09f3;\n  t.rupiah = 0xf6dd;\n  t.ruthai = 0x0e24;\n  t.rvocalicbengali = 0x098b;\n  t.rvocalicdeva = 0x090b;\n  t.rvocalicgujarati = 0x0a8b;\n  t.rvocalicvowelsignbengali = 0x09c3;\n  t.rvocalicvowelsigndeva = 0x0943;\n  t.rvocalicvowelsigngujarati = 0x0ac3;\n  t.s = 0x0073;\n  t.sabengali = 0x09b8;\n  t.sacute = 0x015b;\n  t.sacutedotaccent = 0x1e65;\n  t.sadarabic = 0x0635;\n  t.sadeva = 0x0938;\n  t.sadfinalarabic = 0xfeba;\n  t.sadinitialarabic = 0xfebb;\n  t.sadmedialarabic = 0xfebc;\n  t.sagujarati = 0x0ab8;\n  t.sagurmukhi = 0x0a38;\n  t.sahiragana = 0x3055;\n  t.sakatakana = 0x30b5;\n  t.sakatakanahalfwidth = 0xff7b;\n  t.sallallahoualayhewasallamarabic = 0xfdfa;\n  t.samekh = 0x05e1;\n  t.samekhdagesh = 0xfb41;\n  t.samekhdageshhebrew = 0xfb41;\n  t.samekhhebrew = 0x05e1;\n  t.saraaathai = 0x0e32;\n  t.saraaethai = 0x0e41;\n  t.saraaimaimalaithai = 0x0e44;\n  t.saraaimaimuanthai = 0x0e43;\n  t.saraamthai = 0x0e33;\n  t.saraathai = 0x0e30;\n  t.saraethai = 0x0e40;\n  t.saraiileftthai = 0xf886;\n  t.saraiithai = 0x0e35;\n  t.saraileftthai = 0xf885;\n  t.saraithai = 0x0e34;\n  t.saraothai = 0x0e42;\n  t.saraueeleftthai = 0xf888;\n  t.saraueethai = 0x0e37;\n  t.saraueleftthai = 0xf887;\n  t.sarauethai = 0x0e36;\n  t.sarauthai = 0x0e38;\n  t.sarauuthai = 0x0e39;\n  t.sbopomofo = 0x3119;\n  t.scaron = 0x0161;\n  t.scarondotaccent = 0x1e67;\n  t.scedilla = 0x015f;\n  t.schwa = 0x0259;\n  t.schwacyrillic = 0x04d9;\n  t.schwadieresiscyrillic = 0x04db;\n  t.schwahook = 0x025a;\n  t.scircle = 0x24e2;\n  t.scircumflex = 0x015d;\n  t.scommaaccent = 0x0219;\n  t.sdotaccent = 0x1e61;\n  t.sdotbelow = 0x1e63;\n  t.sdotbelowdotaccent = 0x1e69;\n  t.seagullbelowcmb = 0x033c;\n  t.second = 0x2033;\n  t.secondtonechinese = 0x02ca;\n  t.section = 0x00a7;\n  t.seenarabic = 0x0633;\n  t.seenfinalarabic = 0xfeb2;\n  t.seeninitialarabic = 0xfeb3;\n  t.seenmedialarabic = 0xfeb4;\n  t.segol = 0x05b6;\n  t.segol13 = 0x05b6;\n  t.segol1f = 0x05b6;\n  t.segol2c = 0x05b6;\n  t.segolhebrew = 0x05b6;\n  t.segolnarrowhebrew = 0x05b6;\n  t.segolquarterhebrew = 0x05b6;\n  t.segoltahebrew = 0x0592;\n  t.segolwidehebrew = 0x05b6;\n  t.seharmenian = 0x057d;\n  t.sehiragana = 0x305b;\n  t.sekatakana = 0x30bb;\n  t.sekatakanahalfwidth = 0xff7e;\n  t.semicolon = 0x003b;\n  t.semicolonarabic = 0x061b;\n  t.semicolonmonospace = 0xff1b;\n  t.semicolonsmall = 0xfe54;\n  t.semivoicedmarkkana = 0x309c;\n  t.semivoicedmarkkanahalfwidth = 0xff9f;\n  t.sentisquare = 0x3322;\n  t.sentosquare = 0x3323;\n  t.seven = 0x0037;\n  t.sevenarabic = 0x0667;\n  t.sevenbengali = 0x09ed;\n  t.sevencircle = 0x2466;\n  t.sevencircleinversesansserif = 0x2790;\n  t.sevendeva = 0x096d;\n  t.seveneighths = 0x215e;\n  t.sevengujarati = 0x0aed;\n  t.sevengurmukhi = 0x0a6d;\n  t.sevenhackarabic = 0x0667;\n  t.sevenhangzhou = 0x3027;\n  t.sevenideographicparen = 0x3226;\n  t.seveninferior = 0x2087;\n  t.sevenmonospace = 0xff17;\n  t.sevenoldstyle = 0xf737;\n  t.sevenparen = 0x247a;\n  t.sevenperiod = 0x248e;\n  t.sevenpersian = 0x06f7;\n  t.sevenroman = 0x2176;\n  t.sevensuperior = 0x2077;\n  t.seventeencircle = 0x2470;\n  t.seventeenparen = 0x2484;\n  t.seventeenperiod = 0x2498;\n  t.seventhai = 0x0e57;\n  t.sfthyphen = 0x00ad;\n  t.shaarmenian = 0x0577;\n  t.shabengali = 0x09b6;\n  t.shacyrillic = 0x0448;\n  t.shaddaarabic = 0x0651;\n  t.shaddadammaarabic = 0xfc61;\n  t.shaddadammatanarabic = 0xfc5e;\n  t.shaddafathaarabic = 0xfc60;\n  t.shaddakasraarabic = 0xfc62;\n  t.shaddakasratanarabic = 0xfc5f;\n  t.shade = 0x2592;\n  t.shadedark = 0x2593;\n  t.shadelight = 0x2591;\n  t.shademedium = 0x2592;\n  t.shadeva = 0x0936;\n  t.shagujarati = 0x0ab6;\n  t.shagurmukhi = 0x0a36;\n  t.shalshelethebrew = 0x0593;\n  t.shbopomofo = 0x3115;\n  t.shchacyrillic = 0x0449;\n  t.sheenarabic = 0x0634;\n  t.sheenfinalarabic = 0xfeb6;\n  t.sheeninitialarabic = 0xfeb7;\n  t.sheenmedialarabic = 0xfeb8;\n  t.sheicoptic = 0x03e3;\n  t.sheqel = 0x20aa;\n  t.sheqelhebrew = 0x20aa;\n  t.sheva = 0x05b0;\n  t.sheva115 = 0x05b0;\n  t.sheva15 = 0x05b0;\n  t.sheva22 = 0x05b0;\n  t.sheva2e = 0x05b0;\n  t.shevahebrew = 0x05b0;\n  t.shevanarrowhebrew = 0x05b0;\n  t.shevaquarterhebrew = 0x05b0;\n  t.shevawidehebrew = 0x05b0;\n  t.shhacyrillic = 0x04bb;\n  t.shimacoptic = 0x03ed;\n  t.shin = 0x05e9;\n  t.shindagesh = 0xfb49;\n  t.shindageshhebrew = 0xfb49;\n  t.shindageshshindot = 0xfb2c;\n  t.shindageshshindothebrew = 0xfb2c;\n  t.shindageshsindot = 0xfb2d;\n  t.shindageshsindothebrew = 0xfb2d;\n  t.shindothebrew = 0x05c1;\n  t.shinhebrew = 0x05e9;\n  t.shinshindot = 0xfb2a;\n  t.shinshindothebrew = 0xfb2a;\n  t.shinsindot = 0xfb2b;\n  t.shinsindothebrew = 0xfb2b;\n  t.shook = 0x0282;\n  t.sigma = 0x03c3;\n  t.sigma1 = 0x03c2;\n  t.sigmafinal = 0x03c2;\n  t.sigmalunatesymbolgreek = 0x03f2;\n  t.sihiragana = 0x3057;\n  t.sikatakana = 0x30b7;\n  t.sikatakanahalfwidth = 0xff7c;\n  t.siluqhebrew = 0x05bd;\n  t.siluqlefthebrew = 0x05bd;\n  t.similar = 0x223c;\n  t.sindothebrew = 0x05c2;\n  t.siosacirclekorean = 0x3274;\n  t.siosaparenkorean = 0x3214;\n  t.sioscieuckorean = 0x317e;\n  t.sioscirclekorean = 0x3266;\n  t.sioskiyeokkorean = 0x317a;\n  t.sioskorean = 0x3145;\n  t.siosnieunkorean = 0x317b;\n  t.siosparenkorean = 0x3206;\n  t.siospieupkorean = 0x317d;\n  t.siostikeutkorean = 0x317c;\n  t.six = 0x0036;\n  t.sixarabic = 0x0666;\n  t.sixbengali = 0x09ec;\n  t.sixcircle = 0x2465;\n  t.sixcircleinversesansserif = 0x278f;\n  t.sixdeva = 0x096c;\n  t.sixgujarati = 0x0aec;\n  t.sixgurmukhi = 0x0a6c;\n  t.sixhackarabic = 0x0666;\n  t.sixhangzhou = 0x3026;\n  t.sixideographicparen = 0x3225;\n  t.sixinferior = 0x2086;\n  t.sixmonospace = 0xff16;\n  t.sixoldstyle = 0xf736;\n  t.sixparen = 0x2479;\n  t.sixperiod = 0x248d;\n  t.sixpersian = 0x06f6;\n  t.sixroman = 0x2175;\n  t.sixsuperior = 0x2076;\n  t.sixteencircle = 0x246f;\n  t.sixteencurrencydenominatorbengali = 0x09f9;\n  t.sixteenparen = 0x2483;\n  t.sixteenperiod = 0x2497;\n  t.sixthai = 0x0e56;\n  t.slash = 0x002f;\n  t.slashmonospace = 0xff0f;\n  t.slong = 0x017f;\n  t.slongdotaccent = 0x1e9b;\n  t.smileface = 0x263a;\n  t.smonospace = 0xff53;\n  t.sofpasuqhebrew = 0x05c3;\n  t.softhyphen = 0x00ad;\n  t.softsigncyrillic = 0x044c;\n  t.sohiragana = 0x305d;\n  t.sokatakana = 0x30bd;\n  t.sokatakanahalfwidth = 0xff7f;\n  t.soliduslongoverlaycmb = 0x0338;\n  t.solidusshortoverlaycmb = 0x0337;\n  t.sorusithai = 0x0e29;\n  t.sosalathai = 0x0e28;\n  t.sosothai = 0x0e0b;\n  t.sosuathai = 0x0e2a;\n  t.space = 0x0020;\n  t.spacehackarabic = 0x0020;\n  t.spade = 0x2660;\n  t.spadesuitblack = 0x2660;\n  t.spadesuitwhite = 0x2664;\n  t.sparen = 0x24ae;\n  t.squarebelowcmb = 0x033b;\n  t.squarecc = 0x33c4;\n  t.squarecm = 0x339d;\n  t.squarediagonalcrosshatchfill = 0x25a9;\n  t.squarehorizontalfill = 0x25a4;\n  t.squarekg = 0x338f;\n  t.squarekm = 0x339e;\n  t.squarekmcapital = 0x33ce;\n  t.squareln = 0x33d1;\n  t.squarelog = 0x33d2;\n  t.squaremg = 0x338e;\n  t.squaremil = 0x33d5;\n  t.squaremm = 0x339c;\n  t.squaremsquared = 0x33a1;\n  t.squareorthogonalcrosshatchfill = 0x25a6;\n  t.squareupperlefttolowerrightfill = 0x25a7;\n  t.squareupperrighttolowerleftfill = 0x25a8;\n  t.squareverticalfill = 0x25a5;\n  t.squarewhitewithsmallblack = 0x25a3;\n  t.srsquare = 0x33db;\n  t.ssabengali = 0x09b7;\n  t.ssadeva = 0x0937;\n  t.ssagujarati = 0x0ab7;\n  t.ssangcieuckorean = 0x3149;\n  t.ssanghieuhkorean = 0x3185;\n  t.ssangieungkorean = 0x3180;\n  t.ssangkiyeokkorean = 0x3132;\n  t.ssangnieunkorean = 0x3165;\n  t.ssangpieupkorean = 0x3143;\n  t.ssangsioskorean = 0x3146;\n  t.ssangtikeutkorean = 0x3138;\n  t.ssuperior = 0xf6f2;\n  t.sterling = 0x00a3;\n  t.sterlingmonospace = 0xffe1;\n  t.strokelongoverlaycmb = 0x0336;\n  t.strokeshortoverlaycmb = 0x0335;\n  t.subset = 0x2282;\n  t.subsetnotequal = 0x228a;\n  t.subsetorequal = 0x2286;\n  t.succeeds = 0x227b;\n  t.suchthat = 0x220b;\n  t.suhiragana = 0x3059;\n  t.sukatakana = 0x30b9;\n  t.sukatakanahalfwidth = 0xff7d;\n  t.sukunarabic = 0x0652;\n  t.summation = 0x2211;\n  t.sun = 0x263c;\n  t.superset = 0x2283;\n  t.supersetnotequal = 0x228b;\n  t.supersetorequal = 0x2287;\n  t.svsquare = 0x33dc;\n  t.syouwaerasquare = 0x337c;\n  t.t = 0x0074;\n  t.tabengali = 0x09a4;\n  t.tackdown = 0x22a4;\n  t.tackleft = 0x22a3;\n  t.tadeva = 0x0924;\n  t.tagujarati = 0x0aa4;\n  t.tagurmukhi = 0x0a24;\n  t.taharabic = 0x0637;\n  t.tahfinalarabic = 0xfec2;\n  t.tahinitialarabic = 0xfec3;\n  t.tahiragana = 0x305f;\n  t.tahmedialarabic = 0xfec4;\n  t.taisyouerasquare = 0x337d;\n  t.takatakana = 0x30bf;\n  t.takatakanahalfwidth = 0xff80;\n  t.tatweelarabic = 0x0640;\n  t.tau = 0x03c4;\n  t.tav = 0x05ea;\n  t.tavdages = 0xfb4a;\n  t.tavdagesh = 0xfb4a;\n  t.tavdageshhebrew = 0xfb4a;\n  t.tavhebrew = 0x05ea;\n  t.tbar = 0x0167;\n  t.tbopomofo = 0x310a;\n  t.tcaron = 0x0165;\n  t.tccurl = 0x02a8;\n  t.tcedilla = 0x0163;\n  t.tcheharabic = 0x0686;\n  t.tchehfinalarabic = 0xfb7b;\n  t.tchehinitialarabic = 0xfb7c;\n  t.tchehmedialarabic = 0xfb7d;\n  t.tcircle = 0x24e3;\n  t.tcircumflexbelow = 0x1e71;\n  t.tcommaaccent = 0x0163;\n  t.tdieresis = 0x1e97;\n  t.tdotaccent = 0x1e6b;\n  t.tdotbelow = 0x1e6d;\n  t.tecyrillic = 0x0442;\n  t.tedescendercyrillic = 0x04ad;\n  t.teharabic = 0x062a;\n  t.tehfinalarabic = 0xfe96;\n  t.tehhahinitialarabic = 0xfca2;\n  t.tehhahisolatedarabic = 0xfc0c;\n  t.tehinitialarabic = 0xfe97;\n  t.tehiragana = 0x3066;\n  t.tehjeeminitialarabic = 0xfca1;\n  t.tehjeemisolatedarabic = 0xfc0b;\n  t.tehmarbutaarabic = 0x0629;\n  t.tehmarbutafinalarabic = 0xfe94;\n  t.tehmedialarabic = 0xfe98;\n  t.tehmeeminitialarabic = 0xfca4;\n  t.tehmeemisolatedarabic = 0xfc0e;\n  t.tehnoonfinalarabic = 0xfc73;\n  t.tekatakana = 0x30c6;\n  t.tekatakanahalfwidth = 0xff83;\n  t.telephone = 0x2121;\n  t.telephoneblack = 0x260e;\n  t.telishagedolahebrew = 0x05a0;\n  t.telishaqetanahebrew = 0x05a9;\n  t.tencircle = 0x2469;\n  t.tenideographicparen = 0x3229;\n  t.tenparen = 0x247d;\n  t.tenperiod = 0x2491;\n  t.tenroman = 0x2179;\n  t.tesh = 0x02a7;\n  t.tet = 0x05d8;\n  t.tetdagesh = 0xfb38;\n  t.tetdageshhebrew = 0xfb38;\n  t.tethebrew = 0x05d8;\n  t.tetsecyrillic = 0x04b5;\n  t.tevirhebrew = 0x059b;\n  t.tevirlefthebrew = 0x059b;\n  t.thabengali = 0x09a5;\n  t.thadeva = 0x0925;\n  t.thagujarati = 0x0aa5;\n  t.thagurmukhi = 0x0a25;\n  t.thalarabic = 0x0630;\n  t.thalfinalarabic = 0xfeac;\n  t.thanthakhatlowleftthai = 0xf898;\n  t.thanthakhatlowrightthai = 0xf897;\n  t.thanthakhatthai = 0x0e4c;\n  t.thanthakhatupperleftthai = 0xf896;\n  t.theharabic = 0x062b;\n  t.thehfinalarabic = 0xfe9a;\n  t.thehinitialarabic = 0xfe9b;\n  t.thehmedialarabic = 0xfe9c;\n  t.thereexists = 0x2203;\n  t.therefore = 0x2234;\n  t.theta = 0x03b8;\n  t.theta1 = 0x03d1;\n  t.thetasymbolgreek = 0x03d1;\n  t.thieuthacirclekorean = 0x3279;\n  t.thieuthaparenkorean = 0x3219;\n  t.thieuthcirclekorean = 0x326b;\n  t.thieuthkorean = 0x314c;\n  t.thieuthparenkorean = 0x320b;\n  t.thirteencircle = 0x246c;\n  t.thirteenparen = 0x2480;\n  t.thirteenperiod = 0x2494;\n  t.thonangmonthothai = 0x0e11;\n  t.thook = 0x01ad;\n  t.thophuthaothai = 0x0e12;\n  t.thorn = 0x00fe;\n  t.thothahanthai = 0x0e17;\n  t.thothanthai = 0x0e10;\n  t.thothongthai = 0x0e18;\n  t.thothungthai = 0x0e16;\n  t.thousandcyrillic = 0x0482;\n  t.thousandsseparatorarabic = 0x066c;\n  t.thousandsseparatorpersian = 0x066c;\n  t.three = 0x0033;\n  t.threearabic = 0x0663;\n  t.threebengali = 0x09e9;\n  t.threecircle = 0x2462;\n  t.threecircleinversesansserif = 0x278c;\n  t.threedeva = 0x0969;\n  t.threeeighths = 0x215c;\n  t.threegujarati = 0x0ae9;\n  t.threegurmukhi = 0x0a69;\n  t.threehackarabic = 0x0663;\n  t.threehangzhou = 0x3023;\n  t.threeideographicparen = 0x3222;\n  t.threeinferior = 0x2083;\n  t.threemonospace = 0xff13;\n  t.threenumeratorbengali = 0x09f6;\n  t.threeoldstyle = 0xf733;\n  t.threeparen = 0x2476;\n  t.threeperiod = 0x248a;\n  t.threepersian = 0x06f3;\n  t.threequarters = 0x00be;\n  t.threequartersemdash = 0xf6de;\n  t.threeroman = 0x2172;\n  t.threesuperior = 0x00b3;\n  t.threethai = 0x0e53;\n  t.thzsquare = 0x3394;\n  t.tihiragana = 0x3061;\n  t.tikatakana = 0x30c1;\n  t.tikatakanahalfwidth = 0xff81;\n  t.tikeutacirclekorean = 0x3270;\n  t.tikeutaparenkorean = 0x3210;\n  t.tikeutcirclekorean = 0x3262;\n  t.tikeutkorean = 0x3137;\n  t.tikeutparenkorean = 0x3202;\n  t.tilde = 0x02dc;\n  t.tildebelowcmb = 0x0330;\n  t.tildecmb = 0x0303;\n  t.tildecomb = 0x0303;\n  t.tildedoublecmb = 0x0360;\n  t.tildeoperator = 0x223c;\n  t.tildeoverlaycmb = 0x0334;\n  t.tildeverticalcmb = 0x033e;\n  t.timescircle = 0x2297;\n  t.tipehahebrew = 0x0596;\n  t.tipehalefthebrew = 0x0596;\n  t.tippigurmukhi = 0x0a70;\n  t.titlocyrilliccmb = 0x0483;\n  t.tiwnarmenian = 0x057f;\n  t.tlinebelow = 0x1e6f;\n  t.tmonospace = 0xff54;\n  t.toarmenian = 0x0569;\n  t.tohiragana = 0x3068;\n  t.tokatakana = 0x30c8;\n  t.tokatakanahalfwidth = 0xff84;\n  t.tonebarextrahighmod = 0x02e5;\n  t.tonebarextralowmod = 0x02e9;\n  t.tonebarhighmod = 0x02e6;\n  t.tonebarlowmod = 0x02e8;\n  t.tonebarmidmod = 0x02e7;\n  t.tonefive = 0x01bd;\n  t.tonesix = 0x0185;\n  t.tonetwo = 0x01a8;\n  t.tonos = 0x0384;\n  t.tonsquare = 0x3327;\n  t.topatakthai = 0x0e0f;\n  t.tortoiseshellbracketleft = 0x3014;\n  t.tortoiseshellbracketleftsmall = 0xfe5d;\n  t.tortoiseshellbracketleftvertical = 0xfe39;\n  t.tortoiseshellbracketright = 0x3015;\n  t.tortoiseshellbracketrightsmall = 0xfe5e;\n  t.tortoiseshellbracketrightvertical = 0xfe3a;\n  t.totaothai = 0x0e15;\n  t.tpalatalhook = 0x01ab;\n  t.tparen = 0x24af;\n  t.trademark = 0x2122;\n  t.trademarksans = 0xf8ea;\n  t.trademarkserif = 0xf6db;\n  t.tretroflexhook = 0x0288;\n  t.triagdn = 0x25bc;\n  t.triaglf = 0x25c4;\n  t.triagrt = 0x25ba;\n  t.triagup = 0x25b2;\n  t.ts = 0x02a6;\n  t.tsadi = 0x05e6;\n  t.tsadidagesh = 0xfb46;\n  t.tsadidageshhebrew = 0xfb46;\n  t.tsadihebrew = 0x05e6;\n  t.tsecyrillic = 0x0446;\n  t.tsere = 0x05b5;\n  t.tsere12 = 0x05b5;\n  t.tsere1e = 0x05b5;\n  t.tsere2b = 0x05b5;\n  t.tserehebrew = 0x05b5;\n  t.tserenarrowhebrew = 0x05b5;\n  t.tserequarterhebrew = 0x05b5;\n  t.tserewidehebrew = 0x05b5;\n  t.tshecyrillic = 0x045b;\n  t.tsuperior = 0xf6f3;\n  t.ttabengali = 0x099f;\n  t.ttadeva = 0x091f;\n  t.ttagujarati = 0x0a9f;\n  t.ttagurmukhi = 0x0a1f;\n  t.tteharabic = 0x0679;\n  t.ttehfinalarabic = 0xfb67;\n  t.ttehinitialarabic = 0xfb68;\n  t.ttehmedialarabic = 0xfb69;\n  t.tthabengali = 0x09a0;\n  t.tthadeva = 0x0920;\n  t.tthagujarati = 0x0aa0;\n  t.tthagurmukhi = 0x0a20;\n  t.tturned = 0x0287;\n  t.tuhiragana = 0x3064;\n  t.tukatakana = 0x30c4;\n  t.tukatakanahalfwidth = 0xff82;\n  t.tusmallhiragana = 0x3063;\n  t.tusmallkatakana = 0x30c3;\n  t.tusmallkatakanahalfwidth = 0xff6f;\n  t.twelvecircle = 0x246b;\n  t.twelveparen = 0x247f;\n  t.twelveperiod = 0x2493;\n  t.twelveroman = 0x217b;\n  t.twentycircle = 0x2473;\n  t.twentyhangzhou = 0x5344;\n  t.twentyparen = 0x2487;\n  t.twentyperiod = 0x249b;\n  t.two = 0x0032;\n  t.twoarabic = 0x0662;\n  t.twobengali = 0x09e8;\n  t.twocircle = 0x2461;\n  t.twocircleinversesansserif = 0x278b;\n  t.twodeva = 0x0968;\n  t.twodotenleader = 0x2025;\n  t.twodotleader = 0x2025;\n  t.twodotleadervertical = 0xfe30;\n  t.twogujarati = 0x0ae8;\n  t.twogurmukhi = 0x0a68;\n  t.twohackarabic = 0x0662;\n  t.twohangzhou = 0x3022;\n  t.twoideographicparen = 0x3221;\n  t.twoinferior = 0x2082;\n  t.twomonospace = 0xff12;\n  t.twonumeratorbengali = 0x09f5;\n  t.twooldstyle = 0xf732;\n  t.twoparen = 0x2475;\n  t.twoperiod = 0x2489;\n  t.twopersian = 0x06f2;\n  t.tworoman = 0x2171;\n  t.twostroke = 0x01bb;\n  t.twosuperior = 0x00b2;\n  t.twothai = 0x0e52;\n  t.twothirds = 0x2154;\n  t.u = 0x0075;\n  t.uacute = 0x00fa;\n  t.ubar = 0x0289;\n  t.ubengali = 0x0989;\n  t.ubopomofo = 0x3128;\n  t.ubreve = 0x016d;\n  t.ucaron = 0x01d4;\n  t.ucircle = 0x24e4;\n  t.ucircumflex = 0x00fb;\n  t.ucircumflexbelow = 0x1e77;\n  t.ucyrillic = 0x0443;\n  t.udattadeva = 0x0951;\n  t.udblacute = 0x0171;\n  t.udblgrave = 0x0215;\n  t.udeva = 0x0909;\n  t.udieresis = 0x00fc;\n  t.udieresisacute = 0x01d8;\n  t.udieresisbelow = 0x1e73;\n  t.udieresiscaron = 0x01da;\n  t.udieresiscyrillic = 0x04f1;\n  t.udieresisgrave = 0x01dc;\n  t.udieresismacron = 0x01d6;\n  t.udotbelow = 0x1ee5;\n  t.ugrave = 0x00f9;\n  t.ugujarati = 0x0a89;\n  t.ugurmukhi = 0x0a09;\n  t.uhiragana = 0x3046;\n  t.uhookabove = 0x1ee7;\n  t.uhorn = 0x01b0;\n  t.uhornacute = 0x1ee9;\n  t.uhorndotbelow = 0x1ef1;\n  t.uhorngrave = 0x1eeb;\n  t.uhornhookabove = 0x1eed;\n  t.uhorntilde = 0x1eef;\n  t.uhungarumlaut = 0x0171;\n  t.uhungarumlautcyrillic = 0x04f3;\n  t.uinvertedbreve = 0x0217;\n  t.ukatakana = 0x30a6;\n  t.ukatakanahalfwidth = 0xff73;\n  t.ukcyrillic = 0x0479;\n  t.ukorean = 0x315c;\n  t.umacron = 0x016b;\n  t.umacroncyrillic = 0x04ef;\n  t.umacrondieresis = 0x1e7b;\n  t.umatragurmukhi = 0x0a41;\n  t.umonospace = 0xff55;\n  t.underscore = 0x005f;\n  t.underscoredbl = 0x2017;\n  t.underscoremonospace = 0xff3f;\n  t.underscorevertical = 0xfe33;\n  t.underscorewavy = 0xfe4f;\n  t.union = 0x222a;\n  t.universal = 0x2200;\n  t.uogonek = 0x0173;\n  t.uparen = 0x24b0;\n  t.upblock = 0x2580;\n  t.upperdothebrew = 0x05c4;\n  t.upsilon = 0x03c5;\n  t.upsilondieresis = 0x03cb;\n  t.upsilondieresistonos = 0x03b0;\n  t.upsilonlatin = 0x028a;\n  t.upsilontonos = 0x03cd;\n  t.uptackbelowcmb = 0x031d;\n  t.uptackmod = 0x02d4;\n  t.uragurmukhi = 0x0a73;\n  t.uring = 0x016f;\n  t.ushortcyrillic = 0x045e;\n  t.usmallhiragana = 0x3045;\n  t.usmallkatakana = 0x30a5;\n  t.usmallkatakanahalfwidth = 0xff69;\n  t.ustraightcyrillic = 0x04af;\n  t.ustraightstrokecyrillic = 0x04b1;\n  t.utilde = 0x0169;\n  t.utildeacute = 0x1e79;\n  t.utildebelow = 0x1e75;\n  t.uubengali = 0x098a;\n  t.uudeva = 0x090a;\n  t.uugujarati = 0x0a8a;\n  t.uugurmukhi = 0x0a0a;\n  t.uumatragurmukhi = 0x0a42;\n  t.uuvowelsignbengali = 0x09c2;\n  t.uuvowelsigndeva = 0x0942;\n  t.uuvowelsigngujarati = 0x0ac2;\n  t.uvowelsignbengali = 0x09c1;\n  t.uvowelsigndeva = 0x0941;\n  t.uvowelsigngujarati = 0x0ac1;\n  t.v = 0x0076;\n  t.vadeva = 0x0935;\n  t.vagujarati = 0x0ab5;\n  t.vagurmukhi = 0x0a35;\n  t.vakatakana = 0x30f7;\n  t.vav = 0x05d5;\n  t.vavdagesh = 0xfb35;\n  t.vavdagesh65 = 0xfb35;\n  t.vavdageshhebrew = 0xfb35;\n  t.vavhebrew = 0x05d5;\n  t.vavholam = 0xfb4b;\n  t.vavholamhebrew = 0xfb4b;\n  t.vavvavhebrew = 0x05f0;\n  t.vavyodhebrew = 0x05f1;\n  t.vcircle = 0x24e5;\n  t.vdotbelow = 0x1e7f;\n  t.vecyrillic = 0x0432;\n  t.veharabic = 0x06a4;\n  t.vehfinalarabic = 0xfb6b;\n  t.vehinitialarabic = 0xfb6c;\n  t.vehmedialarabic = 0xfb6d;\n  t.vekatakana = 0x30f9;\n  t.venus = 0x2640;\n  t.verticalbar = 0x007c;\n  t.verticallineabovecmb = 0x030d;\n  t.verticallinebelowcmb = 0x0329;\n  t.verticallinelowmod = 0x02cc;\n  t.verticallinemod = 0x02c8;\n  t.vewarmenian = 0x057e;\n  t.vhook = 0x028b;\n  t.vikatakana = 0x30f8;\n  t.viramabengali = 0x09cd;\n  t.viramadeva = 0x094d;\n  t.viramagujarati = 0x0acd;\n  t.visargabengali = 0x0983;\n  t.visargadeva = 0x0903;\n  t.visargagujarati = 0x0a83;\n  t.vmonospace = 0xff56;\n  t.voarmenian = 0x0578;\n  t.voicediterationhiragana = 0x309e;\n  t.voicediterationkatakana = 0x30fe;\n  t.voicedmarkkana = 0x309b;\n  t.voicedmarkkanahalfwidth = 0xff9e;\n  t.vokatakana = 0x30fa;\n  t.vparen = 0x24b1;\n  t.vtilde = 0x1e7d;\n  t.vturned = 0x028c;\n  t.vuhiragana = 0x3094;\n  t.vukatakana = 0x30f4;\n  t.w = 0x0077;\n  t.wacute = 0x1e83;\n  t.waekorean = 0x3159;\n  t.wahiragana = 0x308f;\n  t.wakatakana = 0x30ef;\n  t.wakatakanahalfwidth = 0xff9c;\n  t.wakorean = 0x3158;\n  t.wasmallhiragana = 0x308e;\n  t.wasmallkatakana = 0x30ee;\n  t.wattosquare = 0x3357;\n  t.wavedash = 0x301c;\n  t.wavyunderscorevertical = 0xfe34;\n  t.wawarabic = 0x0648;\n  t.wawfinalarabic = 0xfeee;\n  t.wawhamzaabovearabic = 0x0624;\n  t.wawhamzaabovefinalarabic = 0xfe86;\n  t.wbsquare = 0x33dd;\n  t.wcircle = 0x24e6;\n  t.wcircumflex = 0x0175;\n  t.wdieresis = 0x1e85;\n  t.wdotaccent = 0x1e87;\n  t.wdotbelow = 0x1e89;\n  t.wehiragana = 0x3091;\n  t.weierstrass = 0x2118;\n  t.wekatakana = 0x30f1;\n  t.wekorean = 0x315e;\n  t.weokorean = 0x315d;\n  t.wgrave = 0x1e81;\n  t.whitebullet = 0x25e6;\n  t.whitecircle = 0x25cb;\n  t.whitecircleinverse = 0x25d9;\n  t.whitecornerbracketleft = 0x300e;\n  t.whitecornerbracketleftvertical = 0xfe43;\n  t.whitecornerbracketright = 0x300f;\n  t.whitecornerbracketrightvertical = 0xfe44;\n  t.whitediamond = 0x25c7;\n  t.whitediamondcontainingblacksmalldiamond = 0x25c8;\n  t.whitedownpointingsmalltriangle = 0x25bf;\n  t.whitedownpointingtriangle = 0x25bd;\n  t.whiteleftpointingsmalltriangle = 0x25c3;\n  t.whiteleftpointingtriangle = 0x25c1;\n  t.whitelenticularbracketleft = 0x3016;\n  t.whitelenticularbracketright = 0x3017;\n  t.whiterightpointingsmalltriangle = 0x25b9;\n  t.whiterightpointingtriangle = 0x25b7;\n  t.whitesmallsquare = 0x25ab;\n  t.whitesmilingface = 0x263a;\n  t.whitesquare = 0x25a1;\n  t.whitestar = 0x2606;\n  t.whitetelephone = 0x260f;\n  t.whitetortoiseshellbracketleft = 0x3018;\n  t.whitetortoiseshellbracketright = 0x3019;\n  t.whiteuppointingsmalltriangle = 0x25b5;\n  t.whiteuppointingtriangle = 0x25b3;\n  t.wihiragana = 0x3090;\n  t.wikatakana = 0x30f0;\n  t.wikorean = 0x315f;\n  t.wmonospace = 0xff57;\n  t.wohiragana = 0x3092;\n  t.wokatakana = 0x30f2;\n  t.wokatakanahalfwidth = 0xff66;\n  t.won = 0x20a9;\n  t.wonmonospace = 0xffe6;\n  t.wowaenthai = 0x0e27;\n  t.wparen = 0x24b2;\n  t.wring = 0x1e98;\n  t.wsuperior = 0x02b7;\n  t.wturned = 0x028d;\n  t.wynn = 0x01bf;\n  t.x = 0x0078;\n  t.xabovecmb = 0x033d;\n  t.xbopomofo = 0x3112;\n  t.xcircle = 0x24e7;\n  t.xdieresis = 0x1e8d;\n  t.xdotaccent = 0x1e8b;\n  t.xeharmenian = 0x056d;\n  t.xi = 0x03be;\n  t.xmonospace = 0xff58;\n  t.xparen = 0x24b3;\n  t.xsuperior = 0x02e3;\n  t.y = 0x0079;\n  t.yaadosquare = 0x334e;\n  t.yabengali = 0x09af;\n  t.yacute = 0x00fd;\n  t.yadeva = 0x092f;\n  t.yaekorean = 0x3152;\n  t.yagujarati = 0x0aaf;\n  t.yagurmukhi = 0x0a2f;\n  t.yahiragana = 0x3084;\n  t.yakatakana = 0x30e4;\n  t.yakatakanahalfwidth = 0xff94;\n  t.yakorean = 0x3151;\n  t.yamakkanthai = 0x0e4e;\n  t.yasmallhiragana = 0x3083;\n  t.yasmallkatakana = 0x30e3;\n  t.yasmallkatakanahalfwidth = 0xff6c;\n  t.yatcyrillic = 0x0463;\n  t.ycircle = 0x24e8;\n  t.ycircumflex = 0x0177;\n  t.ydieresis = 0x00ff;\n  t.ydotaccent = 0x1e8f;\n  t.ydotbelow = 0x1ef5;\n  t.yeharabic = 0x064a;\n  t.yehbarreearabic = 0x06d2;\n  t.yehbarreefinalarabic = 0xfbaf;\n  t.yehfinalarabic = 0xfef2;\n  t.yehhamzaabovearabic = 0x0626;\n  t.yehhamzaabovefinalarabic = 0xfe8a;\n  t.yehhamzaaboveinitialarabic = 0xfe8b;\n  t.yehhamzaabovemedialarabic = 0xfe8c;\n  t.yehinitialarabic = 0xfef3;\n  t.yehmedialarabic = 0xfef4;\n  t.yehmeeminitialarabic = 0xfcdd;\n  t.yehmeemisolatedarabic = 0xfc58;\n  t.yehnoonfinalarabic = 0xfc94;\n  t.yehthreedotsbelowarabic = 0x06d1;\n  t.yekorean = 0x3156;\n  t.yen = 0x00a5;\n  t.yenmonospace = 0xffe5;\n  t.yeokorean = 0x3155;\n  t.yeorinhieuhkorean = 0x3186;\n  t.yerahbenyomohebrew = 0x05aa;\n  t.yerahbenyomolefthebrew = 0x05aa;\n  t.yericyrillic = 0x044b;\n  t.yerudieresiscyrillic = 0x04f9;\n  t.yesieungkorean = 0x3181;\n  t.yesieungpansioskorean = 0x3183;\n  t.yesieungsioskorean = 0x3182;\n  t.yetivhebrew = 0x059a;\n  t.ygrave = 0x1ef3;\n  t.yhook = 0x01b4;\n  t.yhookabove = 0x1ef7;\n  t.yiarmenian = 0x0575;\n  t.yicyrillic = 0x0457;\n  t.yikorean = 0x3162;\n  t.yinyang = 0x262f;\n  t.yiwnarmenian = 0x0582;\n  t.ymonospace = 0xff59;\n  t.yod = 0x05d9;\n  t.yoddagesh = 0xfb39;\n  t.yoddageshhebrew = 0xfb39;\n  t.yodhebrew = 0x05d9;\n  t.yodyodhebrew = 0x05f2;\n  t.yodyodpatahhebrew = 0xfb1f;\n  t.yohiragana = 0x3088;\n  t.yoikorean = 0x3189;\n  t.yokatakana = 0x30e8;\n  t.yokatakanahalfwidth = 0xff96;\n  t.yokorean = 0x315b;\n  t.yosmallhiragana = 0x3087;\n  t.yosmallkatakana = 0x30e7;\n  t.yosmallkatakanahalfwidth = 0xff6e;\n  t.yotgreek = 0x03f3;\n  t.yoyaekorean = 0x3188;\n  t.yoyakorean = 0x3187;\n  t.yoyakthai = 0x0e22;\n  t.yoyingthai = 0x0e0d;\n  t.yparen = 0x24b4;\n  t.ypogegrammeni = 0x037a;\n  t.ypogegrammenigreekcmb = 0x0345;\n  t.yr = 0x01a6;\n  t.yring = 0x1e99;\n  t.ysuperior = 0x02b8;\n  t.ytilde = 0x1ef9;\n  t.yturned = 0x028e;\n  t.yuhiragana = 0x3086;\n  t.yuikorean = 0x318c;\n  t.yukatakana = 0x30e6;\n  t.yukatakanahalfwidth = 0xff95;\n  t.yukorean = 0x3160;\n  t.yusbigcyrillic = 0x046b;\n  t.yusbigiotifiedcyrillic = 0x046d;\n  t.yuslittlecyrillic = 0x0467;\n  t.yuslittleiotifiedcyrillic = 0x0469;\n  t.yusmallhiragana = 0x3085;\n  t.yusmallkatakana = 0x30e5;\n  t.yusmallkatakanahalfwidth = 0xff6d;\n  t.yuyekorean = 0x318b;\n  t.yuyeokorean = 0x318a;\n  t.yyabengali = 0x09df;\n  t.yyadeva = 0x095f;\n  t.z = 0x007a;\n  t.zaarmenian = 0x0566;\n  t.zacute = 0x017a;\n  t.zadeva = 0x095b;\n  t.zagurmukhi = 0x0a5b;\n  t.zaharabic = 0x0638;\n  t.zahfinalarabic = 0xfec6;\n  t.zahinitialarabic = 0xfec7;\n  t.zahiragana = 0x3056;\n  t.zahmedialarabic = 0xfec8;\n  t.zainarabic = 0x0632;\n  t.zainfinalarabic = 0xfeb0;\n  t.zakatakana = 0x30b6;\n  t.zaqefgadolhebrew = 0x0595;\n  t.zaqefqatanhebrew = 0x0594;\n  t.zarqahebrew = 0x0598;\n  t.zayin = 0x05d6;\n  t.zayindagesh = 0xfb36;\n  t.zayindageshhebrew = 0xfb36;\n  t.zayinhebrew = 0x05d6;\n  t.zbopomofo = 0x3117;\n  t.zcaron = 0x017e;\n  t.zcircle = 0x24e9;\n  t.zcircumflex = 0x1e91;\n  t.zcurl = 0x0291;\n  t.zdot = 0x017c;\n  t.zdotaccent = 0x017c;\n  t.zdotbelow = 0x1e93;\n  t.zecyrillic = 0x0437;\n  t.zedescendercyrillic = 0x0499;\n  t.zedieresiscyrillic = 0x04df;\n  t.zehiragana = 0x305c;\n  t.zekatakana = 0x30bc;\n  t.zero = 0x0030;\n  t.zeroarabic = 0x0660;\n  t.zerobengali = 0x09e6;\n  t.zerodeva = 0x0966;\n  t.zerogujarati = 0x0ae6;\n  t.zerogurmukhi = 0x0a66;\n  t.zerohackarabic = 0x0660;\n  t.zeroinferior = 0x2080;\n  t.zeromonospace = 0xff10;\n  t.zerooldstyle = 0xf730;\n  t.zeropersian = 0x06f0;\n  t.zerosuperior = 0x2070;\n  t.zerothai = 0x0e50;\n  t.zerowidthjoiner = 0xfeff;\n  t.zerowidthnonjoiner = 0x200c;\n  t.zerowidthspace = 0x200b;\n  t.zeta = 0x03b6;\n  t.zhbopomofo = 0x3113;\n  t.zhearmenian = 0x056a;\n  t.zhebrevecyrillic = 0x04c2;\n  t.zhecyrillic = 0x0436;\n  t.zhedescendercyrillic = 0x0497;\n  t.zhedieresiscyrillic = 0x04dd;\n  t.zihiragana = 0x3058;\n  t.zikatakana = 0x30b8;\n  t.zinorhebrew = 0x05ae;\n  t.zlinebelow = 0x1e95;\n  t.zmonospace = 0xff5a;\n  t.zohiragana = 0x305e;\n  t.zokatakana = 0x30be;\n  t.zparen = 0x24b5;\n  t.zretroflexhook = 0x0290;\n  t.zstroke = 0x01b6;\n  t.zuhiragana = 0x305a;\n  t.zukatakana = 0x30ba;\n  t[\".notdef\"] = 0x0000;\n\n  // TeX-specific glyph names.\n  t.angbracketleftbig = 0x2329;\n  t.angbracketleftBig = 0x2329;\n  t.angbracketleftbigg = 0x2329;\n  t.angbracketleftBigg = 0x2329;\n  t.angbracketrightBig = 0x232a;\n  t.angbracketrightbig = 0x232a;\n  t.angbracketrightBigg = 0x232a;\n  t.angbracketrightbigg = 0x232a;\n  t.arrowhookleft = 0x21aa;\n  t.arrowhookright = 0x21a9;\n  t.arrowlefttophalf = 0x21bc;\n  t.arrowleftbothalf = 0x21bd;\n  t.arrownortheast = 0x2197;\n  t.arrownorthwest = 0x2196;\n  t.arrowrighttophalf = 0x21c0;\n  t.arrowrightbothalf = 0x21c1;\n  t.arrowsoutheast = 0x2198;\n  t.arrowsouthwest = 0x2199;\n  t.backslashbig = 0x2216;\n  t.backslashBig = 0x2216;\n  t.backslashBigg = 0x2216;\n  t.backslashbigg = 0x2216;\n  t.bardbl = 0x2016;\n  t.bracehtipdownleft = 0xfe37;\n  t.bracehtipdownright = 0xfe37;\n  t.bracehtipupleft = 0xfe38;\n  t.bracehtipupright = 0xfe38;\n  t.braceleftBig = 0x007b;\n  t.braceleftbig = 0x007b;\n  t.braceleftbigg = 0x007b;\n  t.braceleftBigg = 0x007b;\n  t.bracerightBig = 0x007d;\n  t.bracerightbig = 0x007d;\n  t.bracerightbigg = 0x007d;\n  t.bracerightBigg = 0x007d;\n  t.bracketleftbig = 0x005b;\n  t.bracketleftBig = 0x005b;\n  t.bracketleftbigg = 0x005b;\n  t.bracketleftBigg = 0x005b;\n  t.bracketrightBig = 0x005d;\n  t.bracketrightbig = 0x005d;\n  t.bracketrightbigg = 0x005d;\n  t.bracketrightBigg = 0x005d;\n  t.ceilingleftbig = 0x2308;\n  t.ceilingleftBig = 0x2308;\n  t.ceilingleftBigg = 0x2308;\n  t.ceilingleftbigg = 0x2308;\n  t.ceilingrightbig = 0x2309;\n  t.ceilingrightBig = 0x2309;\n  t.ceilingrightbigg = 0x2309;\n  t.ceilingrightBigg = 0x2309;\n  t.circledotdisplay = 0x2299;\n  t.circledottext = 0x2299;\n  t.circlemultiplydisplay = 0x2297;\n  t.circlemultiplytext = 0x2297;\n  t.circleplusdisplay = 0x2295;\n  t.circleplustext = 0x2295;\n  t.contintegraldisplay = 0x222e;\n  t.contintegraltext = 0x222e;\n  t.coproductdisplay = 0x2210;\n  t.coproducttext = 0x2210;\n  t.floorleftBig = 0x230a;\n  t.floorleftbig = 0x230a;\n  t.floorleftbigg = 0x230a;\n  t.floorleftBigg = 0x230a;\n  t.floorrightbig = 0x230b;\n  t.floorrightBig = 0x230b;\n  t.floorrightBigg = 0x230b;\n  t.floorrightbigg = 0x230b;\n  t.hatwide = 0x0302;\n  t.hatwider = 0x0302;\n  t.hatwidest = 0x0302;\n  t.intercal = 0x1d40;\n  t.integraldisplay = 0x222b;\n  t.integraltext = 0x222b;\n  t.intersectiondisplay = 0x22c2;\n  t.intersectiontext = 0x22c2;\n  t.logicalanddisplay = 0x2227;\n  t.logicalandtext = 0x2227;\n  t.logicalordisplay = 0x2228;\n  t.logicalortext = 0x2228;\n  t.parenleftBig = 0x0028;\n  t.parenleftbig = 0x0028;\n  t.parenleftBigg = 0x0028;\n  t.parenleftbigg = 0x0028;\n  t.parenrightBig = 0x0029;\n  t.parenrightbig = 0x0029;\n  t.parenrightBigg = 0x0029;\n  t.parenrightbigg = 0x0029;\n  t.prime = 0x2032;\n  t.productdisplay = 0x220f;\n  t.producttext = 0x220f;\n  t.radicalbig = 0x221a;\n  t.radicalBig = 0x221a;\n  t.radicalBigg = 0x221a;\n  t.radicalbigg = 0x221a;\n  t.radicalbt = 0x221a;\n  t.radicaltp = 0x221a;\n  t.radicalvertex = 0x221a;\n  t.slashbig = 0x002f;\n  t.slashBig = 0x002f;\n  t.slashBigg = 0x002f;\n  t.slashbigg = 0x002f;\n  t.summationdisplay = 0x2211;\n  t.summationtext = 0x2211;\n  t.tildewide = 0x02dc;\n  t.tildewider = 0x02dc;\n  t.tildewidest = 0x02dc;\n  t.uniondisplay = 0x22c3;\n  t.unionmultidisplay = 0x228e;\n  t.unionmultitext = 0x228e;\n  t.unionsqdisplay = 0x2294;\n  t.unionsqtext = 0x2294;\n  t.uniontext = 0x22c3;\n  t.vextenddouble = 0x2225;\n  t.vextendsingle = 0x2223;\n});\n\nvar getDingbatsGlyphsUnicode = getLookupTableFactory(function (t) {\n  t.space = 0x0020;\n  t.a1 = 0x2701;\n  t.a2 = 0x2702;\n  t.a202 = 0x2703;\n  t.a3 = 0x2704;\n  t.a4 = 0x260e;\n  t.a5 = 0x2706;\n  t.a119 = 0x2707;\n  t.a118 = 0x2708;\n  t.a117 = 0x2709;\n  t.a11 = 0x261b;\n  t.a12 = 0x261e;\n  t.a13 = 0x270c;\n  t.a14 = 0x270d;\n  t.a15 = 0x270e;\n  t.a16 = 0x270f;\n  t.a105 = 0x2710;\n  t.a17 = 0x2711;\n  t.a18 = 0x2712;\n  t.a19 = 0x2713;\n  t.a20 = 0x2714;\n  t.a21 = 0x2715;\n  t.a22 = 0x2716;\n  t.a23 = 0x2717;\n  t.a24 = 0x2718;\n  t.a25 = 0x2719;\n  t.a26 = 0x271a;\n  t.a27 = 0x271b;\n  t.a28 = 0x271c;\n  t.a6 = 0x271d;\n  t.a7 = 0x271e;\n  t.a8 = 0x271f;\n  t.a9 = 0x2720;\n  t.a10 = 0x2721;\n  t.a29 = 0x2722;\n  t.a30 = 0x2723;\n  t.a31 = 0x2724;\n  t.a32 = 0x2725;\n  t.a33 = 0x2726;\n  t.a34 = 0x2727;\n  t.a35 = 0x2605;\n  t.a36 = 0x2729;\n  t.a37 = 0x272a;\n  t.a38 = 0x272b;\n  t.a39 = 0x272c;\n  t.a40 = 0x272d;\n  t.a41 = 0x272e;\n  t.a42 = 0x272f;\n  t.a43 = 0x2730;\n  t.a44 = 0x2731;\n  t.a45 = 0x2732;\n  t.a46 = 0x2733;\n  t.a47 = 0x2734;\n  t.a48 = 0x2735;\n  t.a49 = 0x2736;\n  t.a50 = 0x2737;\n  t.a51 = 0x2738;\n  t.a52 = 0x2739;\n  t.a53 = 0x273a;\n  t.a54 = 0x273b;\n  t.a55 = 0x273c;\n  t.a56 = 0x273d;\n  t.a57 = 0x273e;\n  t.a58 = 0x273f;\n  t.a59 = 0x2740;\n  t.a60 = 0x2741;\n  t.a61 = 0x2742;\n  t.a62 = 0x2743;\n  t.a63 = 0x2744;\n  t.a64 = 0x2745;\n  t.a65 = 0x2746;\n  t.a66 = 0x2747;\n  t.a67 = 0x2748;\n  t.a68 = 0x2749;\n  t.a69 = 0x274a;\n  t.a70 = 0x274b;\n  t.a71 = 0x25cf;\n  t.a72 = 0x274d;\n  t.a73 = 0x25a0;\n  t.a74 = 0x274f;\n  t.a203 = 0x2750;\n  t.a75 = 0x2751;\n  t.a204 = 0x2752;\n  t.a76 = 0x25b2;\n  t.a77 = 0x25bc;\n  t.a78 = 0x25c6;\n  t.a79 = 0x2756;\n  t.a81 = 0x25d7;\n  t.a82 = 0x2758;\n  t.a83 = 0x2759;\n  t.a84 = 0x275a;\n  t.a97 = 0x275b;\n  t.a98 = 0x275c;\n  t.a99 = 0x275d;\n  t.a100 = 0x275e;\n  t.a101 = 0x2761;\n  t.a102 = 0x2762;\n  t.a103 = 0x2763;\n  t.a104 = 0x2764;\n  t.a106 = 0x2765;\n  t.a107 = 0x2766;\n  t.a108 = 0x2767;\n  t.a112 = 0x2663;\n  t.a111 = 0x2666;\n  t.a110 = 0x2665;\n  t.a109 = 0x2660;\n  t.a120 = 0x2460;\n  t.a121 = 0x2461;\n  t.a122 = 0x2462;\n  t.a123 = 0x2463;\n  t.a124 = 0x2464;\n  t.a125 = 0x2465;\n  t.a126 = 0x2466;\n  t.a127 = 0x2467;\n  t.a128 = 0x2468;\n  t.a129 = 0x2469;\n  t.a130 = 0x2776;\n  t.a131 = 0x2777;\n  t.a132 = 0x2778;\n  t.a133 = 0x2779;\n  t.a134 = 0x277a;\n  t.a135 = 0x277b;\n  t.a136 = 0x277c;\n  t.a137 = 0x277d;\n  t.a138 = 0x277e;\n  t.a139 = 0x277f;\n  t.a140 = 0x2780;\n  t.a141 = 0x2781;\n  t.a142 = 0x2782;\n  t.a143 = 0x2783;\n  t.a144 = 0x2784;\n  t.a145 = 0x2785;\n  t.a146 = 0x2786;\n  t.a147 = 0x2787;\n  t.a148 = 0x2788;\n  t.a149 = 0x2789;\n  t.a150 = 0x278a;\n  t.a151 = 0x278b;\n  t.a152 = 0x278c;\n  t.a153 = 0x278d;\n  t.a154 = 0x278e;\n  t.a155 = 0x278f;\n  t.a156 = 0x2790;\n  t.a157 = 0x2791;\n  t.a158 = 0x2792;\n  t.a159 = 0x2793;\n  t.a160 = 0x2794;\n  t.a161 = 0x2192;\n  t.a163 = 0x2194;\n  t.a164 = 0x2195;\n  t.a196 = 0x2798;\n  t.a165 = 0x2799;\n  t.a192 = 0x279a;\n  t.a166 = 0x279b;\n  t.a167 = 0x279c;\n  t.a168 = 0x279d;\n  t.a169 = 0x279e;\n  t.a170 = 0x279f;\n  t.a171 = 0x27a0;\n  t.a172 = 0x27a1;\n  t.a173 = 0x27a2;\n  t.a162 = 0x27a3;\n  t.a174 = 0x27a4;\n  t.a175 = 0x27a5;\n  t.a176 = 0x27a6;\n  t.a177 = 0x27a7;\n  t.a178 = 0x27a8;\n  t.a179 = 0x27a9;\n  t.a193 = 0x27aa;\n  t.a180 = 0x27ab;\n  t.a199 = 0x27ac;\n  t.a181 = 0x27ad;\n  t.a200 = 0x27ae;\n  t.a182 = 0x27af;\n  t.a201 = 0x27b1;\n  t.a183 = 0x27b2;\n  t.a184 = 0x27b3;\n  t.a197 = 0x27b4;\n  t.a185 = 0x27b5;\n  t.a194 = 0x27b6;\n  t.a198 = 0x27b7;\n  t.a186 = 0x27b8;\n  t.a195 = 0x27b9;\n  t.a187 = 0x27ba;\n  t.a188 = 0x27bb;\n  t.a189 = 0x27bc;\n  t.a190 = 0x27bd;\n  t.a191 = 0x27be;\n  t.a89 = 0x2768; // 0xF8D7\n  t.a90 = 0x2769; // 0xF8D8\n  t.a93 = 0x276a; // 0xF8D9\n  t.a94 = 0x276b; // 0xF8DA\n  t.a91 = 0x276c; // 0xF8DB\n  t.a92 = 0x276d; // 0xF8DC\n  t.a205 = 0x276e; // 0xF8DD\n  t.a85 = 0x276f; // 0xF8DE\n  t.a206 = 0x2770; // 0xF8DF\n  t.a86 = 0x2771; // 0xF8E0\n  t.a87 = 0x2772; // 0xF8E1\n  t.a88 = 0x2773; // 0xF8E2\n  t.a95 = 0x2774; // 0xF8E3\n  t.a96 = 0x2775; // 0xF8E4\n  t[\".notdef\"] = 0x0000;\n});\n\nexports.getGlyphsUnicode = getGlyphsUnicode;\nexports.getDingbatsGlyphsUnicode = getDingbatsGlyphsUnicode;\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\nimport { getLookupTableFactory } from \"./core_utils.js\";\n\n/**\n * Hold a map of decoded fonts and of the standard fourteen Type1\n * fonts and their acronyms.\n */\nconst getStdFontMap = getLookupTableFactory(function (t) {\n  t.ArialNarrow = \"Helvetica\";\n  t[\"ArialNarrow-Bold\"] = \"Helvetica-Bold\";\n  t[\"ArialNarrow-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"ArialNarrow-Italic\"] = \"Helvetica-Oblique\";\n  t.ArialBlack = \"Helvetica\";\n  t[\"ArialBlack-Bold\"] = \"Helvetica-Bold\";\n  t[\"ArialBlack-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"ArialBlack-Italic\"] = \"Helvetica-Oblique\";\n  t[\"Arial-Black\"] = \"Helvetica\";\n  t[\"Arial-Black-Bold\"] = \"Helvetica-Bold\";\n  t[\"Arial-Black-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"Arial-Black-Italic\"] = \"Helvetica-Oblique\";\n  t.Arial = \"Helvetica\";\n  t[\"Arial-Bold\"] = \"Helvetica-Bold\";\n  t[\"Arial-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"Arial-Italic\"] = \"Helvetica-Oblique\";\n  t[\"Arial-BoldItalicMT\"] = \"Helvetica-BoldOblique\";\n  t[\"Arial-BoldMT\"] = \"Helvetica-Bold\";\n  t[\"Arial-ItalicMT\"] = \"Helvetica-Oblique\";\n  t.ArialMT = \"Helvetica\";\n  t[\"Courier-Bold\"] = \"Courier-Bold\";\n  t[\"Courier-BoldItalic\"] = \"Courier-BoldOblique\";\n  t[\"Courier-Italic\"] = \"Courier-Oblique\";\n  t.CourierNew = \"Courier\";\n  t[\"CourierNew-Bold\"] = \"Courier-Bold\";\n  t[\"CourierNew-BoldItalic\"] = \"Courier-BoldOblique\";\n  t[\"CourierNew-Italic\"] = \"Courier-Oblique\";\n  t[\"CourierNewPS-BoldItalicMT\"] = \"Courier-BoldOblique\";\n  t[\"CourierNewPS-BoldMT\"] = \"Courier-Bold\";\n  t[\"CourierNewPS-ItalicMT\"] = \"Courier-Oblique\";\n  t.CourierNewPSMT = \"Courier\";\n  t.Helvetica = \"Helvetica\";\n  t[\"Helvetica-Bold\"] = \"Helvetica-Bold\";\n  t[\"Helvetica-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"Helvetica-BoldOblique\"] = \"Helvetica-BoldOblique\";\n  t[\"Helvetica-Italic\"] = \"Helvetica-Oblique\";\n  t[\"Helvetica-Oblique\"] = \"Helvetica-Oblique\";\n  t[\"Symbol-Bold\"] = \"Symbol\";\n  t[\"Symbol-BoldItalic\"] = \"Symbol\";\n  t[\"Symbol-Italic\"] = \"Symbol\";\n  t.TimesNewRoman = \"Times-Roman\";\n  t[\"TimesNewRoman-Bold\"] = \"Times-Bold\";\n  t[\"TimesNewRoman-BoldItalic\"] = \"Times-BoldItalic\";\n  t[\"TimesNewRoman-Italic\"] = \"Times-Italic\";\n  t.TimesNewRomanPS = \"Times-Roman\";\n  t[\"TimesNewRomanPS-Bold\"] = \"Times-Bold\";\n  t[\"TimesNewRomanPS-BoldItalic\"] = \"Times-BoldItalic\";\n  t[\"TimesNewRomanPS-BoldItalicMT\"] = \"Times-BoldItalic\";\n  t[\"TimesNewRomanPS-BoldMT\"] = \"Times-Bold\";\n  t[\"TimesNewRomanPS-Italic\"] = \"Times-Italic\";\n  t[\"TimesNewRomanPS-ItalicMT\"] = \"Times-Italic\";\n  t.TimesNewRomanPSMT = \"Times-Roman\";\n  t[\"TimesNewRomanPSMT-Bold\"] = \"Times-Bold\";\n  t[\"TimesNewRomanPSMT-BoldItalic\"] = \"Times-BoldItalic\";\n  t[\"TimesNewRomanPSMT-Italic\"] = \"Times-Italic\";\n});\n\n/**\n * Holds the map of the non-standard fonts that might be included as\n * a standard fonts without glyph data.\n */\nconst getNonStdFontMap = getLookupTableFactory(function (t) {\n  t.Calibri = \"Helvetica\";\n  t[\"Calibri-Bold\"] = \"Helvetica-Bold\";\n  t[\"Calibri-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"Calibri-Italic\"] = \"Helvetica-Oblique\";\n  t.CenturyGothic = \"Helvetica\";\n  t[\"CenturyGothic-Bold\"] = \"Helvetica-Bold\";\n  t[\"CenturyGothic-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"CenturyGothic-Italic\"] = \"Helvetica-Oblique\";\n  t.ComicSansMS = \"Comic Sans MS\";\n  t[\"ComicSansMS-Bold\"] = \"Comic Sans MS-Bold\";\n  t[\"ComicSansMS-BoldItalic\"] = \"Comic Sans MS-BoldItalic\";\n  t[\"ComicSansMS-Italic\"] = \"Comic Sans MS-Italic\";\n  t.LucidaConsole = \"Courier\";\n  t[\"LucidaConsole-Bold\"] = \"Courier-Bold\";\n  t[\"LucidaConsole-BoldItalic\"] = \"Courier-BoldOblique\";\n  t[\"LucidaConsole-Italic\"] = \"Courier-Oblique\";\n  t[\"LucidaSans-Demi\"] = \"Helvetica-Bold\";\n  t[\"MS-Gothic\"] = \"MS Gothic\";\n  t[\"MS-Gothic-Bold\"] = \"MS Gothic-Bold\";\n  t[\"MS-Gothic-BoldItalic\"] = \"MS Gothic-BoldItalic\";\n  t[\"MS-Gothic-Italic\"] = \"MS Gothic-Italic\";\n  t[\"MS-Mincho\"] = \"MS Mincho\";\n  t[\"MS-Mincho-Bold\"] = \"MS Mincho-Bold\";\n  t[\"MS-Mincho-BoldItalic\"] = \"MS Mincho-BoldItalic\";\n  t[\"MS-Mincho-Italic\"] = \"MS Mincho-Italic\";\n  t[\"MS-PGothic\"] = \"MS PGothic\";\n  t[\"MS-PGothic-Bold\"] = \"MS PGothic-Bold\";\n  t[\"MS-PGothic-BoldItalic\"] = \"MS PGothic-BoldItalic\";\n  t[\"MS-PGothic-Italic\"] = \"MS PGothic-Italic\";\n  t[\"MS-PMincho\"] = \"MS PMincho\";\n  t[\"MS-PMincho-Bold\"] = \"MS PMincho-Bold\";\n  t[\"MS-PMincho-BoldItalic\"] = \"MS PMincho-BoldItalic\";\n  t[\"MS-PMincho-Italic\"] = \"MS PMincho-Italic\";\n  t.NuptialScript = \"Times-Italic\";\n  t.SegoeUISymbol = \"Helvetica\";\n  t.Wingdings = \"ZapfDingbats\";\n  t[\"Wingdings-Regular\"] = \"ZapfDingbats\";\n});\n\nconst getSerifFonts = getLookupTableFactory(function (t) {\n  t[\"Adobe Jenson\"] = true;\n  t[\"Adobe Text\"] = true;\n  t.Albertus = true;\n  t.Aldus = true;\n  t.Alexandria = true;\n  t.Algerian = true;\n  t[\"American Typewriter\"] = true;\n  t.Antiqua = true;\n  t.Apex = true;\n  t.Arno = true;\n  t.Aster = true;\n  t.Aurora = true;\n  t.Baskerville = true;\n  t.Bell = true;\n  t.Bembo = true;\n  t[\"Bembo Schoolbook\"] = true;\n  t.Benguiat = true;\n  t[\"Berkeley Old Style\"] = true;\n  t[\"Bernhard Modern\"] = true;\n  t[\"Berthold City\"] = true;\n  t.Bodoni = true;\n  t[\"Bauer Bodoni\"] = true;\n  t[\"Book Antiqua\"] = true;\n  t.Bookman = true;\n  t[\"Bordeaux Roman\"] = true;\n  t[\"Californian FB\"] = true;\n  t.Calisto = true;\n  t.Calvert = true;\n  t.Capitals = true;\n  t.Cambria = true;\n  t.Cartier = true;\n  t.Caslon = true;\n  t.Catull = true;\n  t.Centaur = true;\n  t[\"Century Old Style\"] = true;\n  t[\"Century Schoolbook\"] = true;\n  t.Chaparral = true;\n  t[\"Charis SIL\"] = true;\n  t.Cheltenham = true;\n  t[\"Cholla Slab\"] = true;\n  t.Clarendon = true;\n  t.Clearface = true;\n  t.Cochin = true;\n  t.Colonna = true;\n  t[\"Computer Modern\"] = true;\n  t[\"Concrete Roman\"] = true;\n  t.Constantia = true;\n  t[\"Cooper Black\"] = true;\n  t.Corona = true;\n  t.Ecotype = true;\n  t.Egyptienne = true;\n  t.Elephant = true;\n  t.Excelsior = true;\n  t.Fairfield = true;\n  t[\"FF Scala\"] = true;\n  t.Folkard = true;\n  t.Footlight = true;\n  t.FreeSerif = true;\n  t[\"Friz Quadrata\"] = true;\n  t.Garamond = true;\n  t.Gentium = true;\n  t.Georgia = true;\n  t.Gloucester = true;\n  t[\"Goudy Old Style\"] = true;\n  t[\"Goudy Schoolbook\"] = true;\n  t[\"Goudy Pro Font\"] = true;\n  t.Granjon = true;\n  t[\"Guardian Egyptian\"] = true;\n  t.Heather = true;\n  t.Hercules = true;\n  t[\"High Tower Text\"] = true;\n  t.Hiroshige = true;\n  t[\"Hoefler Text\"] = true;\n  t[\"Humana Serif\"] = true;\n  t.Imprint = true;\n  t[\"Ionic No. 5\"] = true;\n  t.Janson = true;\n  t.Joanna = true;\n  t.Korinna = true;\n  t.Lexicon = true;\n  t[\"Liberation Serif\"] = true;\n  t[\"Linux Libertine\"] = true;\n  t.Literaturnaya = true;\n  t.Lucida = true;\n  t[\"Lucida Bright\"] = true;\n  t.Melior = true;\n  t.Memphis = true;\n  t.Miller = true;\n  t.Minion = true;\n  t.Modern = true;\n  t[\"Mona Lisa\"] = true;\n  t[\"Mrs Eaves\"] = true;\n  t[\"MS Serif\"] = true;\n  t[\"Museo Slab\"] = true;\n  t[\"New York\"] = true;\n  t[\"Nimbus Roman\"] = true;\n  t[\"NPS Rawlinson Roadway\"] = true;\n  t.NuptialScript = true;\n  t.Palatino = true;\n  t.Perpetua = true;\n  t.Plantin = true;\n  t[\"Plantin Schoolbook\"] = true;\n  t.Playbill = true;\n  t[\"Poor Richard\"] = true;\n  t[\"Rawlinson Roadway\"] = true;\n  t.Renault = true;\n  t.Requiem = true;\n  t.Rockwell = true;\n  t.Roman = true;\n  t[\"Rotis Serif\"] = true;\n  t.Sabon = true;\n  t.Scala = true;\n  t.Seagull = true;\n  t.Sistina = true;\n  t.Souvenir = true;\n  t.STIX = true;\n  t[\"Stone Informal\"] = true;\n  t[\"Stone Serif\"] = true;\n  t.Sylfaen = true;\n  t.Times = true;\n  t.Trajan = true;\n  t[\"Trinité\"] = true;\n  t[\"Trump Mediaeval\"] = true;\n  t.Utopia = true;\n  t[\"Vale Type\"] = true;\n  t[\"Bitstream Vera\"] = true;\n  t[\"Vera Serif\"] = true;\n  t.Versailles = true;\n  t.Wanted = true;\n  t.Weiss = true;\n  t[\"Wide Latin\"] = true;\n  t.Windsor = true;\n  t.XITS = true;\n});\n\nconst getSymbolsFonts = getLookupTableFactory(function (t) {\n  t.Dingbats = true;\n  t.Symbol = true;\n  t.ZapfDingbats = true;\n});\n\n// Glyph map for well-known standard fonts. Sometimes Ghostscript uses CID\n// fonts, but does not embed the CID to GID mapping. The mapping is incomplete\n// for all glyphs, but common for some set of the standard fonts.\nconst getGlyphMapForStandardFonts = getLookupTableFactory(function (t) {\n  t[2] = 10;\n  t[3] = 32;\n  t[4] = 33;\n  t[5] = 34;\n  t[6] = 35;\n  t[7] = 36;\n  t[8] = 37;\n  t[9] = 38;\n  t[10] = 39;\n  t[11] = 40;\n  t[12] = 41;\n  t[13] = 42;\n  t[14] = 43;\n  t[15] = 44;\n  t[16] = 45;\n  t[17] = 46;\n  t[18] = 47;\n  t[19] = 48;\n  t[20] = 49;\n  t[21] = 50;\n  t[22] = 51;\n  t[23] = 52;\n  t[24] = 53;\n  t[25] = 54;\n  t[26] = 55;\n  t[27] = 56;\n  t[28] = 57;\n  t[29] = 58;\n  t[30] = 894;\n  t[31] = 60;\n  t[32] = 61;\n  t[33] = 62;\n  t[34] = 63;\n  t[35] = 64;\n  t[36] = 65;\n  t[37] = 66;\n  t[38] = 67;\n  t[39] = 68;\n  t[40] = 69;\n  t[41] = 70;\n  t[42] = 71;\n  t[43] = 72;\n  t[44] = 73;\n  t[45] = 74;\n  t[46] = 75;\n  t[47] = 76;\n  t[48] = 77;\n  t[49] = 78;\n  t[50] = 79;\n  t[51] = 80;\n  t[52] = 81;\n  t[53] = 82;\n  t[54] = 83;\n  t[55] = 84;\n  t[56] = 85;\n  t[57] = 86;\n  t[58] = 87;\n  t[59] = 88;\n  t[60] = 89;\n  t[61] = 90;\n  t[62] = 91;\n  t[63] = 92;\n  t[64] = 93;\n  t[65] = 94;\n  t[66] = 95;\n  t[67] = 96;\n  t[68] = 97;\n  t[69] = 98;\n  t[70] = 99;\n  t[71] = 100;\n  t[72] = 101;\n  t[73] = 102;\n  t[74] = 103;\n  t[75] = 104;\n  t[76] = 105;\n  t[77] = 106;\n  t[78] = 107;\n  t[79] = 108;\n  t[80] = 109;\n  t[81] = 110;\n  t[82] = 111;\n  t[83] = 112;\n  t[84] = 113;\n  t[85] = 114;\n  t[86] = 115;\n  t[87] = 116;\n  t[88] = 117;\n  t[89] = 118;\n  t[90] = 119;\n  t[91] = 120;\n  t[92] = 121;\n  t[93] = 122;\n  t[94] = 123;\n  t[95] = 124;\n  t[96] = 125;\n  t[97] = 126;\n  t[98] = 196;\n  t[99] = 197;\n  t[100] = 199;\n  t[101] = 201;\n  t[102] = 209;\n  t[103] = 214;\n  t[104] = 220;\n  t[105] = 225;\n  t[106] = 224;\n  t[107] = 226;\n  t[108] = 228;\n  t[109] = 227;\n  t[110] = 229;\n  t[111] = 231;\n  t[112] = 233;\n  t[113] = 232;\n  t[114] = 234;\n  t[115] = 235;\n  t[116] = 237;\n  t[117] = 236;\n  t[118] = 238;\n  t[119] = 239;\n  t[120] = 241;\n  t[121] = 243;\n  t[122] = 242;\n  t[123] = 244;\n  t[124] = 246;\n  t[125] = 245;\n  t[126] = 250;\n  t[127] = 249;\n  t[128] = 251;\n  t[129] = 252;\n  t[130] = 8224;\n  t[131] = 176;\n  t[132] = 162;\n  t[133] = 163;\n  t[134] = 167;\n  t[135] = 8226;\n  t[136] = 182;\n  t[137] = 223;\n  t[138] = 174;\n  t[139] = 169;\n  t[140] = 8482;\n  t[141] = 180;\n  t[142] = 168;\n  t[143] = 8800;\n  t[144] = 198;\n  t[145] = 216;\n  t[146] = 8734;\n  t[147] = 177;\n  t[148] = 8804;\n  t[149] = 8805;\n  t[150] = 165;\n  t[151] = 181;\n  t[152] = 8706;\n  t[153] = 8721;\n  t[154] = 8719;\n  t[156] = 8747;\n  t[157] = 170;\n  t[158] = 186;\n  t[159] = 8486;\n  t[160] = 230;\n  t[161] = 248;\n  t[162] = 191;\n  t[163] = 161;\n  t[164] = 172;\n  t[165] = 8730;\n  t[166] = 402;\n  t[167] = 8776;\n  t[168] = 8710;\n  t[169] = 171;\n  t[170] = 187;\n  t[171] = 8230;\n  t[210] = 218;\n  t[223] = 711;\n  t[224] = 321;\n  t[225] = 322;\n  t[227] = 353;\n  t[229] = 382;\n  t[234] = 253;\n  t[252] = 263;\n  t[253] = 268;\n  t[254] = 269;\n  t[258] = 258;\n  t[260] = 260;\n  t[261] = 261;\n  t[265] = 280;\n  t[266] = 281;\n  t[268] = 283;\n  t[269] = 313;\n  t[275] = 323;\n  t[276] = 324;\n  t[278] = 328;\n  t[284] = 345;\n  t[285] = 346;\n  t[286] = 347;\n  t[292] = 367;\n  t[295] = 377;\n  t[296] = 378;\n  t[298] = 380;\n  t[305] = 963;\n  t[306] = 964;\n  t[307] = 966;\n  t[308] = 8215;\n  t[309] = 8252;\n  t[310] = 8319;\n  t[311] = 8359;\n  t[312] = 8592;\n  t[313] = 8593;\n  t[337] = 9552;\n  t[493] = 1039;\n  t[494] = 1040;\n  t[705] = 1524;\n  t[706] = 8362;\n  t[710] = 64288;\n  t[711] = 64298;\n  t[759] = 1617;\n  t[761] = 1776;\n  t[763] = 1778;\n  t[775] = 1652;\n  t[777] = 1764;\n  t[778] = 1780;\n  t[779] = 1781;\n  t[780] = 1782;\n  t[782] = 771;\n  t[783] = 64726;\n  t[786] = 8363;\n  t[788] = 8532;\n  t[790] = 768;\n  t[791] = 769;\n  t[792] = 768;\n  t[795] = 803;\n  t[797] = 64336;\n  t[798] = 64337;\n  t[799] = 64342;\n  t[800] = 64343;\n  t[801] = 64344;\n  t[802] = 64345;\n  t[803] = 64362;\n  t[804] = 64363;\n  t[805] = 64364;\n  t[2424] = 7821;\n  t[2425] = 7822;\n  t[2426] = 7823;\n  t[2427] = 7824;\n  t[2428] = 7825;\n  t[2429] = 7826;\n  t[2430] = 7827;\n  t[2433] = 7682;\n  t[2678] = 8045;\n  t[2679] = 8046;\n  t[2830] = 1552;\n  t[2838] = 686;\n  t[2840] = 751;\n  t[2842] = 753;\n  t[2843] = 754;\n  t[2844] = 755;\n  t[2846] = 757;\n  t[2856] = 767;\n  t[2857] = 848;\n  t[2858] = 849;\n  t[2862] = 853;\n  t[2863] = 854;\n  t[2864] = 855;\n  t[2865] = 861;\n  t[2866] = 862;\n  t[2906] = 7460;\n  t[2908] = 7462;\n  t[2909] = 7463;\n  t[2910] = 7464;\n  t[2912] = 7466;\n  t[2913] = 7467;\n  t[2914] = 7468;\n  t[2916] = 7470;\n  t[2917] = 7471;\n  t[2918] = 7472;\n  t[2920] = 7474;\n  t[2921] = 7475;\n  t[2922] = 7476;\n  t[2924] = 7478;\n  t[2925] = 7479;\n  t[2926] = 7480;\n  t[2928] = 7482;\n  t[2929] = 7483;\n  t[2930] = 7484;\n  t[2932] = 7486;\n  t[2933] = 7487;\n  t[2934] = 7488;\n  t[2936] = 7490;\n  t[2937] = 7491;\n  t[2938] = 7492;\n  t[2940] = 7494;\n  t[2941] = 7495;\n  t[2942] = 7496;\n  t[2944] = 7498;\n  t[2946] = 7500;\n  t[2948] = 7502;\n  t[2950] = 7504;\n  t[2951] = 7505;\n  t[2952] = 7506;\n  t[2954] = 7508;\n  t[2955] = 7509;\n  t[2956] = 7510;\n  t[2958] = 7512;\n  t[2959] = 7513;\n  t[2960] = 7514;\n  t[2962] = 7516;\n  t[2963] = 7517;\n  t[2964] = 7518;\n  t[2966] = 7520;\n  t[2967] = 7521;\n  t[2968] = 7522;\n  t[2970] = 7524;\n  t[2971] = 7525;\n  t[2972] = 7526;\n  t[2974] = 7528;\n  t[2975] = 7529;\n  t[2976] = 7530;\n  t[2978] = 1537;\n  t[2979] = 1538;\n  t[2980] = 1539;\n  t[2982] = 1549;\n  t[2983] = 1551;\n  t[2984] = 1552;\n  t[2986] = 1554;\n  t[2987] = 1555;\n  t[2988] = 1556;\n  t[2990] = 1623;\n  t[2991] = 1624;\n  t[2995] = 1775;\n  t[2999] = 1791;\n  t[3002] = 64290;\n  t[3003] = 64291;\n  t[3004] = 64292;\n  t[3006] = 64294;\n  t[3007] = 64295;\n  t[3008] = 64296;\n  t[3011] = 1900;\n  t[3014] = 8223;\n  t[3015] = 8244;\n  t[3017] = 7532;\n  t[3018] = 7533;\n  t[3019] = 7534;\n  t[3075] = 7590;\n  t[3076] = 7591;\n  t[3079] = 7594;\n  t[3080] = 7595;\n  t[3083] = 7598;\n  t[3084] = 7599;\n  t[3087] = 7602;\n  t[3088] = 7603;\n  t[3091] = 7606;\n  t[3092] = 7607;\n  t[3095] = 7610;\n  t[3096] = 7611;\n  t[3099] = 7614;\n  t[3100] = 7615;\n  t[3103] = 7618;\n  t[3104] = 7619;\n  t[3107] = 8337;\n  t[3108] = 8338;\n  t[3116] = 1884;\n  t[3119] = 1885;\n  t[3120] = 1885;\n  t[3123] = 1886;\n  t[3124] = 1886;\n  t[3127] = 1887;\n  t[3128] = 1887;\n  t[3131] = 1888;\n  t[3132] = 1888;\n  t[3135] = 1889;\n  t[3136] = 1889;\n  t[3139] = 1890;\n  t[3140] = 1890;\n  t[3143] = 1891;\n  t[3144] = 1891;\n  t[3147] = 1892;\n  t[3148] = 1892;\n  t[3153] = 580;\n  t[3154] = 581;\n  t[3157] = 584;\n  t[3158] = 585;\n  t[3161] = 588;\n  t[3162] = 589;\n  t[3165] = 891;\n  t[3166] = 892;\n  t[3169] = 1274;\n  t[3170] = 1275;\n  t[3173] = 1278;\n  t[3174] = 1279;\n  t[3181] = 7622;\n  t[3182] = 7623;\n  t[3282] = 11799;\n  t[3316] = 578;\n  t[3379] = 42785;\n  t[3393] = 1159;\n  t[3416] = 8377;\n});\n\n// The glyph map for ArialBlack differs slightly from the glyph map used for\n// other well-known standard fonts. Hence we use this (incomplete) CID to GID\n// mapping to adjust the glyph map for non-embedded ArialBlack fonts.\nconst getSupplementalGlyphMapForArialBlack = getLookupTableFactory(function (\n  t\n) {\n  t[227] = 322;\n  t[264] = 261;\n  t[291] = 346;\n});\n\n// The glyph map for Calibri (a Windows font) differs from the glyph map used\n// in the standard fonts. Hence we use this (incomplete) CID to GID mapping to\n// adjust the glyph map for non-embedded Calibri fonts.\nconst getSupplementalGlyphMapForCalibri = getLookupTableFactory(function (t) {\n  t[1] = 32;\n  t[4] = 65;\n  t[17] = 66;\n  t[18] = 67;\n  t[24] = 68;\n  t[28] = 69;\n  t[38] = 70;\n  t[39] = 71;\n  t[44] = 72;\n  t[47] = 73;\n  t[58] = 74;\n  t[60] = 75;\n  t[62] = 76;\n  t[68] = 77;\n  t[69] = 78;\n  t[75] = 79;\n  t[87] = 80;\n  t[89] = 81;\n  t[90] = 82;\n  t[94] = 83;\n  t[100] = 84;\n  t[104] = 85;\n  t[115] = 86;\n  t[116] = 87;\n  t[121] = 88;\n  t[122] = 89;\n  t[127] = 90;\n  t[258] = 97;\n  t[268] = 261;\n  t[271] = 98;\n  t[272] = 99;\n  t[273] = 263;\n  t[282] = 100;\n  t[286] = 101;\n  t[295] = 281;\n  t[296] = 102;\n  t[336] = 103;\n  t[346] = 104;\n  t[349] = 105;\n  t[361] = 106;\n  t[364] = 107;\n  t[367] = 108;\n  t[371] = 322;\n  t[373] = 109;\n  t[374] = 110;\n  t[381] = 111;\n  t[383] = 243;\n  t[393] = 112;\n  t[395] = 113;\n  t[396] = 114;\n  t[400] = 115;\n  t[401] = 347;\n  t[410] = 116;\n  t[437] = 117;\n  t[448] = 118;\n  t[449] = 119;\n  t[454] = 120;\n  t[455] = 121;\n  t[460] = 122;\n  t[463] = 380;\n  t[853] = 44;\n  t[855] = 58;\n  t[856] = 46;\n  t[876] = 47;\n  t[878] = 45;\n  t[882] = 45;\n  t[894] = 40;\n  t[895] = 41;\n  t[896] = 91;\n  t[897] = 93;\n  t[923] = 64;\n  t[1004] = 48;\n  t[1005] = 49;\n  t[1006] = 50;\n  t[1007] = 51;\n  t[1008] = 52;\n  t[1009] = 53;\n  t[1010] = 54;\n  t[1011] = 55;\n  t[1012] = 56;\n  t[1013] = 57;\n  t[1081] = 37;\n  t[1085] = 43;\n  t[1086] = 45;\n});\n\nexport {\n  getStdFontMap,\n  getNonStdFontMap,\n  getSerifFonts,\n  getSymbolsFonts,\n  getGlyphMapForStandardFonts,\n  getSupplementalGlyphMapForArialBlack,\n  getSupplementalGlyphMapForCalibri,\n};\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* no-babel-preset */\n\nvar getLookupTableFactory = require(\"./core_utils.js\").getLookupTableFactory;\n\n// Some characters, e.g. copyrightserif, are mapped to the private use area\n// and might not be displayed using standard fonts. Mapping/hacking well-known\n// chars to the similar equivalents in the normal characters range.\nvar getSpecialPUASymbols = getLookupTableFactory(function (t) {\n  t[63721] = 0x00a9; // copyrightsans (0xF8E9) => copyright\n  t[63193] = 0x00a9; // copyrightserif (0xF6D9) => copyright\n  t[63720] = 0x00ae; // registersans (0xF8E8) => registered\n  t[63194] = 0x00ae; // registerserif (0xF6DA) => registered\n  t[63722] = 0x2122; // trademarksans (0xF8EA) => trademark\n  t[63195] = 0x2122; // trademarkserif (0xF6DB) => trademark\n  t[63729] = 0x23a7; // bracelefttp (0xF8F1)\n  t[63730] = 0x23a8; // braceleftmid (0xF8F2)\n  t[63731] = 0x23a9; // braceleftbt (0xF8F3)\n  t[63740] = 0x23ab; // bracerighttp (0xF8FC)\n  t[63741] = 0x23ac; // bracerightmid (0xF8FD)\n  t[63742] = 0x23ad; // bracerightbt (0xF8FE)\n  t[63726] = 0x23a1; // bracketlefttp (0xF8EE)\n  t[63727] = 0x23a2; // bracketleftex (0xF8EF)\n  t[63728] = 0x23a3; // bracketleftbt (0xF8F0)\n  t[63737] = 0x23a4; // bracketrighttp (0xF8F9)\n  t[63738] = 0x23a5; // bracketrightex (0xF8FA)\n  t[63739] = 0x23a6; // bracketrightbt (0xF8FB)\n  t[63723] = 0x239b; // parenlefttp (0xF8EB)\n  t[63724] = 0x239c; // parenleftex (0xF8EC)\n  t[63725] = 0x239d; // parenleftbt (0xF8ED)\n  t[63734] = 0x239e; // parenrighttp (0xF8F6)\n  t[63735] = 0x239f; // parenrightex (0xF8F7)\n  t[63736] = 0x23a0; // parenrightbt (0xF8F8)\n});\n\nfunction mapSpecialUnicodeValues(code) {\n  if (code >= 0xfff0 && code <= 0xffff) {\n    // Specials unicode block.\n    return 0;\n  } else if (code >= 0xf600 && code <= 0xf8ff) {\n    return getSpecialPUASymbols()[code] || code;\n  } else if (code === /* softhyphen = */ 0x00ad) {\n    return 0x002d; // hyphen\n  }\n  return code;\n}\n\nfunction getUnicodeForGlyph(name, glyphsUnicodeMap) {\n  var unicode = glyphsUnicodeMap[name];\n  if (unicode !== undefined) {\n    return unicode;\n  }\n  if (!name) {\n    return -1;\n  }\n  // Try to recover valid Unicode values from 'uniXXXX'/'uXXXX{XX}' glyphs.\n  if (name[0] === \"u\") {\n    var nameLen = name.length,\n      hexStr;\n\n    if (nameLen === 7 && name[1] === \"n\" && name[2] === \"i\") {\n      // 'uniXXXX'\n      hexStr = name.substring(3);\n    } else if (nameLen >= 5 && nameLen <= 7) {\n      // 'uXXXX{XX}'\n      hexStr = name.substring(1);\n    } else {\n      return -1;\n    }\n    // Check for upper-case hexadecimal characters, to avoid false positives.\n    if (hexStr === hexStr.toUpperCase()) {\n      unicode = parseInt(hexStr, 16);\n      if (unicode >= 0) {\n        return unicode;\n      }\n    }\n  }\n  return -1;\n}\n\nvar UnicodeRanges = [\n  { begin: 0x0000, end: 0x007f }, // Basic Latin\n  { begin: 0x0080, end: 0x00ff }, // Latin-1 Supplement\n  { begin: 0x0100, end: 0x017f }, // Latin Extended-A\n  { begin: 0x0180, end: 0x024f }, // Latin Extended-B\n  { begin: 0x0250, end: 0x02af }, // IPA Extensions\n  { begin: 0x02b0, end: 0x02ff }, // Spacing Modifier Letters\n  { begin: 0x0300, end: 0x036f }, // Combining Diacritical Marks\n  { begin: 0x0370, end: 0x03ff }, // Greek and Coptic\n  { begin: 0x2c80, end: 0x2cff }, // Coptic\n  { begin: 0x0400, end: 0x04ff }, // Cyrillic\n  { begin: 0x0530, end: 0x058f }, // Armenian\n  { begin: 0x0590, end: 0x05ff }, // Hebrew\n  { begin: 0xa500, end: 0xa63f }, // Vai\n  { begin: 0x0600, end: 0x06ff }, // Arabic\n  { begin: 0x07c0, end: 0x07ff }, // NKo\n  { begin: 0x0900, end: 0x097f }, // Devanagari\n  { begin: 0x0980, end: 0x09ff }, // Bengali\n  { begin: 0x0a00, end: 0x0a7f }, // Gurmukhi\n  { begin: 0x0a80, end: 0x0aff }, // Gujarati\n  { begin: 0x0b00, end: 0x0b7f }, // Oriya\n  { begin: 0x0b80, end: 0x0bff }, // Tamil\n  { begin: 0x0c00, end: 0x0c7f }, // Telugu\n  { begin: 0x0c80, end: 0x0cff }, // Kannada\n  { begin: 0x0d00, end: 0x0d7f }, // Malayalam\n  { begin: 0x0e00, end: 0x0e7f }, // Thai\n  { begin: 0x0e80, end: 0x0eff }, // Lao\n  { begin: 0x10a0, end: 0x10ff }, // Georgian\n  { begin: 0x1b00, end: 0x1b7f }, // Balinese\n  { begin: 0x1100, end: 0x11ff }, // Hangul Jamo\n  { begin: 0x1e00, end: 0x1eff }, // Latin Extended Additional\n  { begin: 0x1f00, end: 0x1fff }, // Greek Extended\n  { begin: 0x2000, end: 0x206f }, // General Punctuation\n  { begin: 0x2070, end: 0x209f }, // Superscripts And Subscripts\n  { begin: 0x20a0, end: 0x20cf }, // Currency Symbol\n  { begin: 0x20d0, end: 0x20ff }, // Combining Diacritical Marks\n  { begin: 0x2100, end: 0x214f }, // Letterlike Symbols\n  { begin: 0x2150, end: 0x218f }, // Number Forms\n  { begin: 0x2190, end: 0x21ff }, // Arrows\n  { begin: 0x2200, end: 0x22ff }, // Mathematical Operators\n  { begin: 0x2300, end: 0x23ff }, // Miscellaneous Technical\n  { begin: 0x2400, end: 0x243f }, // Control Pictures\n  { begin: 0x2440, end: 0x245f }, // Optical Character Recognition\n  { begin: 0x2460, end: 0x24ff }, // Enclosed Alphanumerics\n  { begin: 0x2500, end: 0x257f }, // Box Drawing\n  { begin: 0x2580, end: 0x259f }, // Block Elements\n  { begin: 0x25a0, end: 0x25ff }, // Geometric Shapes\n  { begin: 0x2600, end: 0x26ff }, // Miscellaneous Symbols\n  { begin: 0x2700, end: 0x27bf }, // Dingbats\n  { begin: 0x3000, end: 0x303f }, // CJK Symbols And Punctuation\n  { begin: 0x3040, end: 0x309f }, // Hiragana\n  { begin: 0x30a0, end: 0x30ff }, // Katakana\n  { begin: 0x3100, end: 0x312f }, // Bopomofo\n  { begin: 0x3130, end: 0x318f }, // Hangul Compatibility Jamo\n  { begin: 0xa840, end: 0xa87f }, // Phags-pa\n  { begin: 0x3200, end: 0x32ff }, // Enclosed CJK Letters And Months\n  { begin: 0x3300, end: 0x33ff }, // CJK Compatibility\n  { begin: 0xac00, end: 0xd7af }, // Hangul Syllables\n  { begin: 0xd800, end: 0xdfff }, // Non-Plane 0 *\n  { begin: 0x10900, end: 0x1091f }, // Phoenicia\n  { begin: 0x4e00, end: 0x9fff }, // CJK Unified Ideographs\n  { begin: 0xe000, end: 0xf8ff }, // Private Use Area (plane 0)\n  { begin: 0x31c0, end: 0x31ef }, // CJK Strokes\n  { begin: 0xfb00, end: 0xfb4f }, // Alphabetic Presentation Forms\n  { begin: 0xfb50, end: 0xfdff }, // Arabic Presentation Forms-A\n  { begin: 0xfe20, end: 0xfe2f }, // Combining Half Marks\n  { begin: 0xfe10, end: 0xfe1f }, // Vertical Forms\n  { begin: 0xfe50, end: 0xfe6f }, // Small Form Variants\n  { begin: 0xfe70, end: 0xfeff }, // Arabic Presentation Forms-B\n  { begin: 0xff00, end: 0xffef }, // Halfwidth And Fullwidth Forms\n  { begin: 0xfff0, end: 0xffff }, // Specials\n  { begin: 0x0f00, end: 0x0fff }, // Tibetan\n  { begin: 0x0700, end: 0x074f }, // Syriac\n  { begin: 0x0780, end: 0x07bf }, // Thaana\n  { begin: 0x0d80, end: 0x0dff }, // Sinhala\n  { begin: 0x1000, end: 0x109f }, // Myanmar\n  { begin: 0x1200, end: 0x137f }, // Ethiopic\n  { begin: 0x13a0, end: 0x13ff }, // Cherokee\n  { begin: 0x1400, end: 0x167f }, // Unified Canadian Aboriginal Syllabics\n  { begin: 0x1680, end: 0x169f }, // Ogham\n  { begin: 0x16a0, end: 0x16ff }, // Runic\n  { begin: 0x1780, end: 0x17ff }, // Khmer\n  { begin: 0x1800, end: 0x18af }, // Mongolian\n  { begin: 0x2800, end: 0x28ff }, // Braille Patterns\n  { begin: 0xa000, end: 0xa48f }, // Yi Syllables\n  { begin: 0x1700, end: 0x171f }, // Tagalog\n  { begin: 0x10300, end: 0x1032f }, // Old Italic\n  { begin: 0x10330, end: 0x1034f }, // Gothic\n  { begin: 0x10400, end: 0x1044f }, // Deseret\n  { begin: 0x1d000, end: 0x1d0ff }, // Byzantine Musical Symbols\n  { begin: 0x1d400, end: 0x1d7ff }, // Mathematical Alphanumeric Symbols\n  { begin: 0xff000, end: 0xffffd }, // Private Use (plane 15)\n  { begin: 0xfe00, end: 0xfe0f }, // Variation Selectors\n  { begin: 0xe0000, end: 0xe007f }, // Tags\n  { begin: 0x1900, end: 0x194f }, // Limbu\n  { begin: 0x1950, end: 0x197f }, // Tai Le\n  { begin: 0x1980, end: 0x19df }, // New Tai Lue\n  { begin: 0x1a00, end: 0x1a1f }, // Buginese\n  { begin: 0x2c00, end: 0x2c5f }, // Glagolitic\n  { begin: 0x2d30, end: 0x2d7f }, // Tifinagh\n  { begin: 0x4dc0, end: 0x4dff }, // Yijing Hexagram Symbols\n  { begin: 0xa800, end: 0xa82f }, // Syloti Nagri\n  { begin: 0x10000, end: 0x1007f }, // Linear B Syllabary\n  { begin: 0x10140, end: 0x1018f }, // Ancient Greek Numbers\n  { begin: 0x10380, end: 0x1039f }, // Ugaritic\n  { begin: 0x103a0, end: 0x103df }, // Old Persian\n  { begin: 0x10450, end: 0x1047f }, // Shavian\n  { begin: 0x10480, end: 0x104af }, // Osmanya\n  { begin: 0x10800, end: 0x1083f }, // Cypriot Syllabary\n  { begin: 0x10a00, end: 0x10a5f }, // Kharoshthi\n  { begin: 0x1d300, end: 0x1d35f }, // Tai Xuan Jing Symbols\n  { begin: 0x12000, end: 0x123ff }, // Cuneiform\n  { begin: 0x1d360, end: 0x1d37f }, // Counting Rod Numerals\n  { begin: 0x1b80, end: 0x1bbf }, // Sundanese\n  { begin: 0x1c00, end: 0x1c4f }, // Lepcha\n  { begin: 0x1c50, end: 0x1c7f }, // Ol Chiki\n  { begin: 0xa880, end: 0xa8df }, // Saurashtra\n  { begin: 0xa900, end: 0xa92f }, // Kayah Li\n  { begin: 0xa930, end: 0xa95f }, // Rejang\n  { begin: 0xaa00, end: 0xaa5f }, // Cham\n  { begin: 0x10190, end: 0x101cf }, // Ancient Symbols\n  { begin: 0x101d0, end: 0x101ff }, // Phaistos Disc\n  { begin: 0x102a0, end: 0x102df }, // Carian\n  { begin: 0x1f030, end: 0x1f09f }, // Domino Tiles\n];\n\nfunction getUnicodeRangeFor(value) {\n  for (var i = 0, ii = UnicodeRanges.length; i < ii; i++) {\n    var range = UnicodeRanges[i];\n    if (value >= range.begin && value < range.end) {\n      return i;\n    }\n  }\n  return -1;\n}\n\nfunction isRTLRangeFor(value) {\n  var range = UnicodeRanges[13];\n  if (value >= range.begin && value < range.end) {\n    return true;\n  }\n  range = UnicodeRanges[11];\n  if (value >= range.begin && value < range.end) {\n    return true;\n  }\n  return false;\n}\n\n// The normalization table is obtained by filtering the Unicode characters\n// database with <compat> entries.\nvar getNormalizedUnicodes = getLookupTableFactory(function (t) {\n  t[\"\\u00A8\"] = \"\\u0020\\u0308\";\n  t[\"\\u00AF\"] = \"\\u0020\\u0304\";\n  t[\"\\u00B4\"] = \"\\u0020\\u0301\";\n  t[\"\\u00B5\"] = \"\\u03BC\";\n  t[\"\\u00B8\"] = \"\\u0020\\u0327\";\n  t[\"\\u0132\"] = \"\\u0049\\u004A\";\n  t[\"\\u0133\"] = \"\\u0069\\u006A\";\n  t[\"\\u013F\"] = \"\\u004C\\u00B7\";\n  t[\"\\u0140\"] = \"\\u006C\\u00B7\";\n  t[\"\\u0149\"] = \"\\u02BC\\u006E\";\n  t[\"\\u017F\"] = \"\\u0073\";\n  t[\"\\u01C4\"] = \"\\u0044\\u017D\";\n  t[\"\\u01C5\"] = \"\\u0044\\u017E\";\n  t[\"\\u01C6\"] = \"\\u0064\\u017E\";\n  t[\"\\u01C7\"] = \"\\u004C\\u004A\";\n  t[\"\\u01C8\"] = \"\\u004C\\u006A\";\n  t[\"\\u01C9\"] = \"\\u006C\\u006A\";\n  t[\"\\u01CA\"] = \"\\u004E\\u004A\";\n  t[\"\\u01CB\"] = \"\\u004E\\u006A\";\n  t[\"\\u01CC\"] = \"\\u006E\\u006A\";\n  t[\"\\u01F1\"] = \"\\u0044\\u005A\";\n  t[\"\\u01F2\"] = \"\\u0044\\u007A\";\n  t[\"\\u01F3\"] = \"\\u0064\\u007A\";\n  t[\"\\u02D8\"] = \"\\u0020\\u0306\";\n  t[\"\\u02D9\"] = \"\\u0020\\u0307\";\n  t[\"\\u02DA\"] = \"\\u0020\\u030A\";\n  t[\"\\u02DB\"] = \"\\u0020\\u0328\";\n  t[\"\\u02DC\"] = \"\\u0020\\u0303\";\n  t[\"\\u02DD\"] = \"\\u0020\\u030B\";\n  t[\"\\u037A\"] = \"\\u0020\\u0345\";\n  t[\"\\u0384\"] = \"\\u0020\\u0301\";\n  t[\"\\u03D0\"] = \"\\u03B2\";\n  t[\"\\u03D1\"] = \"\\u03B8\";\n  t[\"\\u03D2\"] = \"\\u03A5\";\n  t[\"\\u03D5\"] = \"\\u03C6\";\n  t[\"\\u03D6\"] = \"\\u03C0\";\n  t[\"\\u03F0\"] = \"\\u03BA\";\n  t[\"\\u03F1\"] = \"\\u03C1\";\n  t[\"\\u03F2\"] = \"\\u03C2\";\n  t[\"\\u03F4\"] = \"\\u0398\";\n  t[\"\\u03F5\"] = \"\\u03B5\";\n  t[\"\\u03F9\"] = \"\\u03A3\";\n  t[\"\\u0587\"] = \"\\u0565\\u0582\";\n  t[\"\\u0675\"] = \"\\u0627\\u0674\";\n  t[\"\\u0676\"] = \"\\u0648\\u0674\";\n  t[\"\\u0677\"] = \"\\u06C7\\u0674\";\n  t[\"\\u0678\"] = \"\\u064A\\u0674\";\n  t[\"\\u0E33\"] = \"\\u0E4D\\u0E32\";\n  t[\"\\u0EB3\"] = \"\\u0ECD\\u0EB2\";\n  t[\"\\u0EDC\"] = \"\\u0EAB\\u0E99\";\n  t[\"\\u0EDD\"] = \"\\u0EAB\\u0EA1\";\n  t[\"\\u0F77\"] = \"\\u0FB2\\u0F81\";\n  t[\"\\u0F79\"] = \"\\u0FB3\\u0F81\";\n  t[\"\\u1E9A\"] = \"\\u0061\\u02BE\";\n  t[\"\\u1FBD\"] = \"\\u0020\\u0313\";\n  t[\"\\u1FBF\"] = \"\\u0020\\u0313\";\n  t[\"\\u1FC0\"] = \"\\u0020\\u0342\";\n  t[\"\\u1FFE\"] = \"\\u0020\\u0314\";\n  t[\"\\u2002\"] = \"\\u0020\";\n  t[\"\\u2003\"] = \"\\u0020\";\n  t[\"\\u2004\"] = \"\\u0020\";\n  t[\"\\u2005\"] = \"\\u0020\";\n  t[\"\\u2006\"] = \"\\u0020\";\n  t[\"\\u2008\"] = \"\\u0020\";\n  t[\"\\u2009\"] = \"\\u0020\";\n  t[\"\\u200A\"] = \"\\u0020\";\n  t[\"\\u2017\"] = \"\\u0020\\u0333\";\n  t[\"\\u2024\"] = \"\\u002E\";\n  t[\"\\u2025\"] = \"\\u002E\\u002E\";\n  t[\"\\u2026\"] = \"\\u002E\\u002E\\u002E\";\n  t[\"\\u2033\"] = \"\\u2032\\u2032\";\n  t[\"\\u2034\"] = \"\\u2032\\u2032\\u2032\";\n  t[\"\\u2036\"] = \"\\u2035\\u2035\";\n  t[\"\\u2037\"] = \"\\u2035\\u2035\\u2035\";\n  t[\"\\u203C\"] = \"\\u0021\\u0021\";\n  t[\"\\u203E\"] = \"\\u0020\\u0305\";\n  t[\"\\u2047\"] = \"\\u003F\\u003F\";\n  t[\"\\u2048\"] = \"\\u003F\\u0021\";\n  t[\"\\u2049\"] = \"\\u0021\\u003F\";\n  t[\"\\u2057\"] = \"\\u2032\\u2032\\u2032\\u2032\";\n  t[\"\\u205F\"] = \"\\u0020\";\n  t[\"\\u20A8\"] = \"\\u0052\\u0073\";\n  t[\"\\u2100\"] = \"\\u0061\\u002F\\u0063\";\n  t[\"\\u2101\"] = \"\\u0061\\u002F\\u0073\";\n  t[\"\\u2103\"] = \"\\u00B0\\u0043\";\n  t[\"\\u2105\"] = \"\\u0063\\u002F\\u006F\";\n  t[\"\\u2106\"] = \"\\u0063\\u002F\\u0075\";\n  t[\"\\u2107\"] = \"\\u0190\";\n  t[\"\\u2109\"] = \"\\u00B0\\u0046\";\n  t[\"\\u2116\"] = \"\\u004E\\u006F\";\n  t[\"\\u2121\"] = \"\\u0054\\u0045\\u004C\";\n  t[\"\\u2135\"] = \"\\u05D0\";\n  t[\"\\u2136\"] = \"\\u05D1\";\n  t[\"\\u2137\"] = \"\\u05D2\";\n  t[\"\\u2138\"] = \"\\u05D3\";\n  t[\"\\u213B\"] = \"\\u0046\\u0041\\u0058\";\n  t[\"\\u2160\"] = \"\\u0049\";\n  t[\"\\u2161\"] = \"\\u0049\\u0049\";\n  t[\"\\u2162\"] = \"\\u0049\\u0049\\u0049\";\n  t[\"\\u2163\"] = \"\\u0049\\u0056\";\n  t[\"\\u2164\"] = \"\\u0056\";\n  t[\"\\u2165\"] = \"\\u0056\\u0049\";\n  t[\"\\u2166\"] = \"\\u0056\\u0049\\u0049\";\n  t[\"\\u2167\"] = \"\\u0056\\u0049\\u0049\\u0049\";\n  t[\"\\u2168\"] = \"\\u0049\\u0058\";\n  t[\"\\u2169\"] = \"\\u0058\";\n  t[\"\\u216A\"] = \"\\u0058\\u0049\";\n  t[\"\\u216B\"] = \"\\u0058\\u0049\\u0049\";\n  t[\"\\u216C\"] = \"\\u004C\";\n  t[\"\\u216D\"] = \"\\u0043\";\n  t[\"\\u216E\"] = \"\\u0044\";\n  t[\"\\u216F\"] = \"\\u004D\";\n  t[\"\\u2170\"] = \"\\u0069\";\n  t[\"\\u2171\"] = \"\\u0069\\u0069\";\n  t[\"\\u2172\"] = \"\\u0069\\u0069\\u0069\";\n  t[\"\\u2173\"] = \"\\u0069\\u0076\";\n  t[\"\\u2174\"] = \"\\u0076\";\n  t[\"\\u2175\"] = \"\\u0076\\u0069\";\n  t[\"\\u2176\"] = \"\\u0076\\u0069\\u0069\";\n  t[\"\\u2177\"] = \"\\u0076\\u0069\\u0069\\u0069\";\n  t[\"\\u2178\"] = \"\\u0069\\u0078\";\n  t[\"\\u2179\"] = \"\\u0078\";\n  t[\"\\u217A\"] = \"\\u0078\\u0069\";\n  t[\"\\u217B\"] = \"\\u0078\\u0069\\u0069\";\n  t[\"\\u217C\"] = \"\\u006C\";\n  t[\"\\u217D\"] = \"\\u0063\";\n  t[\"\\u217E\"] = \"\\u0064\";\n  t[\"\\u217F\"] = \"\\u006D\";\n  t[\"\\u222C\"] = \"\\u222B\\u222B\";\n  t[\"\\u222D\"] = \"\\u222B\\u222B\\u222B\";\n  t[\"\\u222F\"] = \"\\u222E\\u222E\";\n  t[\"\\u2230\"] = \"\\u222E\\u222E\\u222E\";\n  t[\"\\u2474\"] = \"\\u0028\\u0031\\u0029\";\n  t[\"\\u2475\"] = \"\\u0028\\u0032\\u0029\";\n  t[\"\\u2476\"] = \"\\u0028\\u0033\\u0029\";\n  t[\"\\u2477\"] = \"\\u0028\\u0034\\u0029\";\n  t[\"\\u2478\"] = \"\\u0028\\u0035\\u0029\";\n  t[\"\\u2479\"] = \"\\u0028\\u0036\\u0029\";\n  t[\"\\u247A\"] = \"\\u0028\\u0037\\u0029\";\n  t[\"\\u247B\"] = \"\\u0028\\u0038\\u0029\";\n  t[\"\\u247C\"] = \"\\u0028\\u0039\\u0029\";\n  t[\"\\u247D\"] = \"\\u0028\\u0031\\u0030\\u0029\";\n  t[\"\\u247E\"] = \"\\u0028\\u0031\\u0031\\u0029\";\n  t[\"\\u247F\"] = \"\\u0028\\u0031\\u0032\\u0029\";\n  t[\"\\u2480\"] = \"\\u0028\\u0031\\u0033\\u0029\";\n  t[\"\\u2481\"] = \"\\u0028\\u0031\\u0034\\u0029\";\n  t[\"\\u2482\"] = \"\\u0028\\u0031\\u0035\\u0029\";\n  t[\"\\u2483\"] = \"\\u0028\\u0031\\u0036\\u0029\";\n  t[\"\\u2484\"] = \"\\u0028\\u0031\\u0037\\u0029\";\n  t[\"\\u2485\"] = \"\\u0028\\u0031\\u0038\\u0029\";\n  t[\"\\u2486\"] = \"\\u0028\\u0031\\u0039\\u0029\";\n  t[\"\\u2487\"] = \"\\u0028\\u0032\\u0030\\u0029\";\n  t[\"\\u2488\"] = \"\\u0031\\u002E\";\n  t[\"\\u2489\"] = \"\\u0032\\u002E\";\n  t[\"\\u248A\"] = \"\\u0033\\u002E\";\n  t[\"\\u248B\"] = \"\\u0034\\u002E\";\n  t[\"\\u248C\"] = \"\\u0035\\u002E\";\n  t[\"\\u248D\"] = \"\\u0036\\u002E\";\n  t[\"\\u248E\"] = \"\\u0037\\u002E\";\n  t[\"\\u248F\"] = \"\\u0038\\u002E\";\n  t[\"\\u2490\"] = \"\\u0039\\u002E\";\n  t[\"\\u2491\"] = \"\\u0031\\u0030\\u002E\";\n  t[\"\\u2492\"] = \"\\u0031\\u0031\\u002E\";\n  t[\"\\u2493\"] = \"\\u0031\\u0032\\u002E\";\n  t[\"\\u2494\"] = \"\\u0031\\u0033\\u002E\";\n  t[\"\\u2495\"] = \"\\u0031\\u0034\\u002E\";\n  t[\"\\u2496\"] = \"\\u0031\\u0035\\u002E\";\n  t[\"\\u2497\"] = \"\\u0031\\u0036\\u002E\";\n  t[\"\\u2498\"] = \"\\u0031\\u0037\\u002E\";\n  t[\"\\u2499\"] = \"\\u0031\\u0038\\u002E\";\n  t[\"\\u249A\"] = \"\\u0031\\u0039\\u002E\";\n  t[\"\\u249B\"] = \"\\u0032\\u0030\\u002E\";\n  t[\"\\u249C\"] = \"\\u0028\\u0061\\u0029\";\n  t[\"\\u249D\"] = \"\\u0028\\u0062\\u0029\";\n  t[\"\\u249E\"] = \"\\u0028\\u0063\\u0029\";\n  t[\"\\u249F\"] = \"\\u0028\\u0064\\u0029\";\n  t[\"\\u24A0\"] = \"\\u0028\\u0065\\u0029\";\n  t[\"\\u24A1\"] = \"\\u0028\\u0066\\u0029\";\n  t[\"\\u24A2\"] = \"\\u0028\\u0067\\u0029\";\n  t[\"\\u24A3\"] = \"\\u0028\\u0068\\u0029\";\n  t[\"\\u24A4\"] = \"\\u0028\\u0069\\u0029\";\n  t[\"\\u24A5\"] = \"\\u0028\\u006A\\u0029\";\n  t[\"\\u24A6\"] = \"\\u0028\\u006B\\u0029\";\n  t[\"\\u24A7\"] = \"\\u0028\\u006C\\u0029\";\n  t[\"\\u24A8\"] = \"\\u0028\\u006D\\u0029\";\n  t[\"\\u24A9\"] = \"\\u0028\\u006E\\u0029\";\n  t[\"\\u24AA\"] = \"\\u0028\\u006F\\u0029\";\n  t[\"\\u24AB\"] = \"\\u0028\\u0070\\u0029\";\n  t[\"\\u24AC\"] = \"\\u0028\\u0071\\u0029\";\n  t[\"\\u24AD\"] = \"\\u0028\\u0072\\u0029\";\n  t[\"\\u24AE\"] = \"\\u0028\\u0073\\u0029\";\n  t[\"\\u24AF\"] = \"\\u0028\\u0074\\u0029\";\n  t[\"\\u24B0\"] = \"\\u0028\\u0075\\u0029\";\n  t[\"\\u24B1\"] = \"\\u0028\\u0076\\u0029\";\n  t[\"\\u24B2\"] = \"\\u0028\\u0077\\u0029\";\n  t[\"\\u24B3\"] = \"\\u0028\\u0078\\u0029\";\n  t[\"\\u24B4\"] = \"\\u0028\\u0079\\u0029\";\n  t[\"\\u24B5\"] = \"\\u0028\\u007A\\u0029\";\n  t[\"\\u2A0C\"] = \"\\u222B\\u222B\\u222B\\u222B\";\n  t[\"\\u2A74\"] = \"\\u003A\\u003A\\u003D\";\n  t[\"\\u2A75\"] = \"\\u003D\\u003D\";\n  t[\"\\u2A76\"] = \"\\u003D\\u003D\\u003D\";\n  t[\"\\u2E9F\"] = \"\\u6BCD\";\n  t[\"\\u2EF3\"] = \"\\u9F9F\";\n  t[\"\\u2F00\"] = \"\\u4E00\";\n  t[\"\\u2F01\"] = \"\\u4E28\";\n  t[\"\\u2F02\"] = \"\\u4E36\";\n  t[\"\\u2F03\"] = \"\\u4E3F\";\n  t[\"\\u2F04\"] = \"\\u4E59\";\n  t[\"\\u2F05\"] = \"\\u4E85\";\n  t[\"\\u2F06\"] = \"\\u4E8C\";\n  t[\"\\u2F07\"] = \"\\u4EA0\";\n  t[\"\\u2F08\"] = \"\\u4EBA\";\n  t[\"\\u2F09\"] = \"\\u513F\";\n  t[\"\\u2F0A\"] = \"\\u5165\";\n  t[\"\\u2F0B\"] = \"\\u516B\";\n  t[\"\\u2F0C\"] = \"\\u5182\";\n  t[\"\\u2F0D\"] = \"\\u5196\";\n  t[\"\\u2F0E\"] = \"\\u51AB\";\n  t[\"\\u2F0F\"] = \"\\u51E0\";\n  t[\"\\u2F10\"] = \"\\u51F5\";\n  t[\"\\u2F11\"] = \"\\u5200\";\n  t[\"\\u2F12\"] = \"\\u529B\";\n  t[\"\\u2F13\"] = \"\\u52F9\";\n  t[\"\\u2F14\"] = \"\\u5315\";\n  t[\"\\u2F15\"] = \"\\u531A\";\n  t[\"\\u2F16\"] = \"\\u5338\";\n  t[\"\\u2F17\"] = \"\\u5341\";\n  t[\"\\u2F18\"] = \"\\u535C\";\n  t[\"\\u2F19\"] = \"\\u5369\";\n  t[\"\\u2F1A\"] = \"\\u5382\";\n  t[\"\\u2F1B\"] = \"\\u53B6\";\n  t[\"\\u2F1C\"] = \"\\u53C8\";\n  t[\"\\u2F1D\"] = \"\\u53E3\";\n  t[\"\\u2F1E\"] = \"\\u56D7\";\n  t[\"\\u2F1F\"] = \"\\u571F\";\n  t[\"\\u2F20\"] = \"\\u58EB\";\n  t[\"\\u2F21\"] = \"\\u5902\";\n  t[\"\\u2F22\"] = \"\\u590A\";\n  t[\"\\u2F23\"] = \"\\u5915\";\n  t[\"\\u2F24\"] = \"\\u5927\";\n  t[\"\\u2F25\"] = \"\\u5973\";\n  t[\"\\u2F26\"] = \"\\u5B50\";\n  t[\"\\u2F27\"] = \"\\u5B80\";\n  t[\"\\u2F28\"] = \"\\u5BF8\";\n  t[\"\\u2F29\"] = \"\\u5C0F\";\n  t[\"\\u2F2A\"] = \"\\u5C22\";\n  t[\"\\u2F2B\"] = \"\\u5C38\";\n  t[\"\\u2F2C\"] = \"\\u5C6E\";\n  t[\"\\u2F2D\"] = \"\\u5C71\";\n  t[\"\\u2F2E\"] = \"\\u5DDB\";\n  t[\"\\u2F2F\"] = \"\\u5DE5\";\n  t[\"\\u2F30\"] = \"\\u5DF1\";\n  t[\"\\u2F31\"] = \"\\u5DFE\";\n  t[\"\\u2F32\"] = \"\\u5E72\";\n  t[\"\\u2F33\"] = \"\\u5E7A\";\n  t[\"\\u2F34\"] = \"\\u5E7F\";\n  t[\"\\u2F35\"] = \"\\u5EF4\";\n  t[\"\\u2F36\"] = \"\\u5EFE\";\n  t[\"\\u2F37\"] = \"\\u5F0B\";\n  t[\"\\u2F38\"] = \"\\u5F13\";\n  t[\"\\u2F39\"] = \"\\u5F50\";\n  t[\"\\u2F3A\"] = \"\\u5F61\";\n  t[\"\\u2F3B\"] = \"\\u5F73\";\n  t[\"\\u2F3C\"] = \"\\u5FC3\";\n  t[\"\\u2F3D\"] = \"\\u6208\";\n  t[\"\\u2F3E\"] = \"\\u6236\";\n  t[\"\\u2F3F\"] = \"\\u624B\";\n  t[\"\\u2F40\"] = \"\\u652F\";\n  t[\"\\u2F41\"] = \"\\u6534\";\n  t[\"\\u2F42\"] = \"\\u6587\";\n  t[\"\\u2F43\"] = \"\\u6597\";\n  t[\"\\u2F44\"] = \"\\u65A4\";\n  t[\"\\u2F45\"] = \"\\u65B9\";\n  t[\"\\u2F46\"] = \"\\u65E0\";\n  t[\"\\u2F47\"] = \"\\u65E5\";\n  t[\"\\u2F48\"] = \"\\u66F0\";\n  t[\"\\u2F49\"] = \"\\u6708\";\n  t[\"\\u2F4A\"] = \"\\u6728\";\n  t[\"\\u2F4B\"] = \"\\u6B20\";\n  t[\"\\u2F4C\"] = \"\\u6B62\";\n  t[\"\\u2F4D\"] = \"\\u6B79\";\n  t[\"\\u2F4E\"] = \"\\u6BB3\";\n  t[\"\\u2F4F\"] = \"\\u6BCB\";\n  t[\"\\u2F50\"] = \"\\u6BD4\";\n  t[\"\\u2F51\"] = \"\\u6BDB\";\n  t[\"\\u2F52\"] = \"\\u6C0F\";\n  t[\"\\u2F53\"] = \"\\u6C14\";\n  t[\"\\u2F54\"] = \"\\u6C34\";\n  t[\"\\u2F55\"] = \"\\u706B\";\n  t[\"\\u2F56\"] = \"\\u722A\";\n  t[\"\\u2F57\"] = \"\\u7236\";\n  t[\"\\u2F58\"] = \"\\u723B\";\n  t[\"\\u2F59\"] = \"\\u723F\";\n  t[\"\\u2F5A\"] = \"\\u7247\";\n  t[\"\\u2F5B\"] = \"\\u7259\";\n  t[\"\\u2F5C\"] = \"\\u725B\";\n  t[\"\\u2F5D\"] = \"\\u72AC\";\n  t[\"\\u2F5E\"] = \"\\u7384\";\n  t[\"\\u2F5F\"] = \"\\u7389\";\n  t[\"\\u2F60\"] = \"\\u74DC\";\n  t[\"\\u2F61\"] = \"\\u74E6\";\n  t[\"\\u2F62\"] = \"\\u7518\";\n  t[\"\\u2F63\"] = \"\\u751F\";\n  t[\"\\u2F64\"] = \"\\u7528\";\n  t[\"\\u2F65\"] = \"\\u7530\";\n  t[\"\\u2F66\"] = \"\\u758B\";\n  t[\"\\u2F67\"] = \"\\u7592\";\n  t[\"\\u2F68\"] = \"\\u7676\";\n  t[\"\\u2F69\"] = \"\\u767D\";\n  t[\"\\u2F6A\"] = \"\\u76AE\";\n  t[\"\\u2F6B\"] = \"\\u76BF\";\n  t[\"\\u2F6C\"] = \"\\u76EE\";\n  t[\"\\u2F6D\"] = \"\\u77DB\";\n  t[\"\\u2F6E\"] = \"\\u77E2\";\n  t[\"\\u2F6F\"] = \"\\u77F3\";\n  t[\"\\u2F70\"] = \"\\u793A\";\n  t[\"\\u2F71\"] = \"\\u79B8\";\n  t[\"\\u2F72\"] = \"\\u79BE\";\n  t[\"\\u2F73\"] = \"\\u7A74\";\n  t[\"\\u2F74\"] = \"\\u7ACB\";\n  t[\"\\u2F75\"] = \"\\u7AF9\";\n  t[\"\\u2F76\"] = \"\\u7C73\";\n  t[\"\\u2F77\"] = \"\\u7CF8\";\n  t[\"\\u2F78\"] = \"\\u7F36\";\n  t[\"\\u2F79\"] = \"\\u7F51\";\n  t[\"\\u2F7A\"] = \"\\u7F8A\";\n  t[\"\\u2F7B\"] = \"\\u7FBD\";\n  t[\"\\u2F7C\"] = \"\\u8001\";\n  t[\"\\u2F7D\"] = \"\\u800C\";\n  t[\"\\u2F7E\"] = \"\\u8012\";\n  t[\"\\u2F7F\"] = \"\\u8033\";\n  t[\"\\u2F80\"] = \"\\u807F\";\n  t[\"\\u2F81\"] = \"\\u8089\";\n  t[\"\\u2F82\"] = \"\\u81E3\";\n  t[\"\\u2F83\"] = \"\\u81EA\";\n  t[\"\\u2F84\"] = \"\\u81F3\";\n  t[\"\\u2F85\"] = \"\\u81FC\";\n  t[\"\\u2F86\"] = \"\\u820C\";\n  t[\"\\u2F87\"] = \"\\u821B\";\n  t[\"\\u2F88\"] = \"\\u821F\";\n  t[\"\\u2F89\"] = \"\\u826E\";\n  t[\"\\u2F8A\"] = \"\\u8272\";\n  t[\"\\u2F8B\"] = \"\\u8278\";\n  t[\"\\u2F8C\"] = \"\\u864D\";\n  t[\"\\u2F8D\"] = \"\\u866B\";\n  t[\"\\u2F8E\"] = \"\\u8840\";\n  t[\"\\u2F8F\"] = \"\\u884C\";\n  t[\"\\u2F90\"] = \"\\u8863\";\n  t[\"\\u2F91\"] = \"\\u897E\";\n  t[\"\\u2F92\"] = \"\\u898B\";\n  t[\"\\u2F93\"] = \"\\u89D2\";\n  t[\"\\u2F94\"] = \"\\u8A00\";\n  t[\"\\u2F95\"] = \"\\u8C37\";\n  t[\"\\u2F96\"] = \"\\u8C46\";\n  t[\"\\u2F97\"] = \"\\u8C55\";\n  t[\"\\u2F98\"] = \"\\u8C78\";\n  t[\"\\u2F99\"] = \"\\u8C9D\";\n  t[\"\\u2F9A\"] = \"\\u8D64\";\n  t[\"\\u2F9B\"] = \"\\u8D70\";\n  t[\"\\u2F9C\"] = \"\\u8DB3\";\n  t[\"\\u2F9D\"] = \"\\u8EAB\";\n  t[\"\\u2F9E\"] = \"\\u8ECA\";\n  t[\"\\u2F9F\"] = \"\\u8F9B\";\n  t[\"\\u2FA0\"] = \"\\u8FB0\";\n  t[\"\\u2FA1\"] = \"\\u8FB5\";\n  t[\"\\u2FA2\"] = \"\\u9091\";\n  t[\"\\u2FA3\"] = \"\\u9149\";\n  t[\"\\u2FA4\"] = \"\\u91C6\";\n  t[\"\\u2FA5\"] = \"\\u91CC\";\n  t[\"\\u2FA6\"] = \"\\u91D1\";\n  t[\"\\u2FA7\"] = \"\\u9577\";\n  t[\"\\u2FA8\"] = \"\\u9580\";\n  t[\"\\u2FA9\"] = \"\\u961C\";\n  t[\"\\u2FAA\"] = \"\\u96B6\";\n  t[\"\\u2FAB\"] = \"\\u96B9\";\n  t[\"\\u2FAC\"] = \"\\u96E8\";\n  t[\"\\u2FAD\"] = \"\\u9751\";\n  t[\"\\u2FAE\"] = \"\\u975E\";\n  t[\"\\u2FAF\"] = \"\\u9762\";\n  t[\"\\u2FB0\"] = \"\\u9769\";\n  t[\"\\u2FB1\"] = \"\\u97CB\";\n  t[\"\\u2FB2\"] = \"\\u97ED\";\n  t[\"\\u2FB3\"] = \"\\u97F3\";\n  t[\"\\u2FB4\"] = \"\\u9801\";\n  t[\"\\u2FB5\"] = \"\\u98A8\";\n  t[\"\\u2FB6\"] = \"\\u98DB\";\n  t[\"\\u2FB7\"] = \"\\u98DF\";\n  t[\"\\u2FB8\"] = \"\\u9996\";\n  t[\"\\u2FB9\"] = \"\\u9999\";\n  t[\"\\u2FBA\"] = \"\\u99AC\";\n  t[\"\\u2FBB\"] = \"\\u9AA8\";\n  t[\"\\u2FBC\"] = \"\\u9AD8\";\n  t[\"\\u2FBD\"] = \"\\u9ADF\";\n  t[\"\\u2FBE\"] = \"\\u9B25\";\n  t[\"\\u2FBF\"] = \"\\u9B2F\";\n  t[\"\\u2FC0\"] = \"\\u9B32\";\n  t[\"\\u2FC1\"] = \"\\u9B3C\";\n  t[\"\\u2FC2\"] = \"\\u9B5A\";\n  t[\"\\u2FC3\"] = \"\\u9CE5\";\n  t[\"\\u2FC4\"] = \"\\u9E75\";\n  t[\"\\u2FC5\"] = \"\\u9E7F\";\n  t[\"\\u2FC6\"] = \"\\u9EA5\";\n  t[\"\\u2FC7\"] = \"\\u9EBB\";\n  t[\"\\u2FC8\"] = \"\\u9EC3\";\n  t[\"\\u2FC9\"] = \"\\u9ECD\";\n  t[\"\\u2FCA\"] = \"\\u9ED1\";\n  t[\"\\u2FCB\"] = \"\\u9EF9\";\n  t[\"\\u2FCC\"] = \"\\u9EFD\";\n  t[\"\\u2FCD\"] = \"\\u9F0E\";\n  t[\"\\u2FCE\"] = \"\\u9F13\";\n  t[\"\\u2FCF\"] = \"\\u9F20\";\n  t[\"\\u2FD0\"] = \"\\u9F3B\";\n  t[\"\\u2FD1\"] = \"\\u9F4A\";\n  t[\"\\u2FD2\"] = \"\\u9F52\";\n  t[\"\\u2FD3\"] = \"\\u9F8D\";\n  t[\"\\u2FD4\"] = \"\\u9F9C\";\n  t[\"\\u2FD5\"] = \"\\u9FA0\";\n  t[\"\\u3036\"] = \"\\u3012\";\n  t[\"\\u3038\"] = \"\\u5341\";\n  t[\"\\u3039\"] = \"\\u5344\";\n  t[\"\\u303A\"] = \"\\u5345\";\n  t[\"\\u309B\"] = \"\\u0020\\u3099\";\n  t[\"\\u309C\"] = \"\\u0020\\u309A\";\n  t[\"\\u3131\"] = \"\\u1100\";\n  t[\"\\u3132\"] = \"\\u1101\";\n  t[\"\\u3133\"] = \"\\u11AA\";\n  t[\"\\u3134\"] = \"\\u1102\";\n  t[\"\\u3135\"] = \"\\u11AC\";\n  t[\"\\u3136\"] = \"\\u11AD\";\n  t[\"\\u3137\"] = \"\\u1103\";\n  t[\"\\u3138\"] = \"\\u1104\";\n  t[\"\\u3139\"] = \"\\u1105\";\n  t[\"\\u313A\"] = \"\\u11B0\";\n  t[\"\\u313B\"] = \"\\u11B1\";\n  t[\"\\u313C\"] = \"\\u11B2\";\n  t[\"\\u313D\"] = \"\\u11B3\";\n  t[\"\\u313E\"] = \"\\u11B4\";\n  t[\"\\u313F\"] = \"\\u11B5\";\n  t[\"\\u3140\"] = \"\\u111A\";\n  t[\"\\u3141\"] = \"\\u1106\";\n  t[\"\\u3142\"] = \"\\u1107\";\n  t[\"\\u3143\"] = \"\\u1108\";\n  t[\"\\u3144\"] = \"\\u1121\";\n  t[\"\\u3145\"] = \"\\u1109\";\n  t[\"\\u3146\"] = \"\\u110A\";\n  t[\"\\u3147\"] = \"\\u110B\";\n  t[\"\\u3148\"] = \"\\u110C\";\n  t[\"\\u3149\"] = \"\\u110D\";\n  t[\"\\u314A\"] = \"\\u110E\";\n  t[\"\\u314B\"] = \"\\u110F\";\n  t[\"\\u314C\"] = \"\\u1110\";\n  t[\"\\u314D\"] = \"\\u1111\";\n  t[\"\\u314E\"] = \"\\u1112\";\n  t[\"\\u314F\"] = \"\\u1161\";\n  t[\"\\u3150\"] = \"\\u1162\";\n  t[\"\\u3151\"] = \"\\u1163\";\n  t[\"\\u3152\"] = \"\\u1164\";\n  t[\"\\u3153\"] = \"\\u1165\";\n  t[\"\\u3154\"] = \"\\u1166\";\n  t[\"\\u3155\"] = \"\\u1167\";\n  t[\"\\u3156\"] = \"\\u1168\";\n  t[\"\\u3157\"] = \"\\u1169\";\n  t[\"\\u3158\"] = \"\\u116A\";\n  t[\"\\u3159\"] = \"\\u116B\";\n  t[\"\\u315A\"] = \"\\u116C\";\n  t[\"\\u315B\"] = \"\\u116D\";\n  t[\"\\u315C\"] = \"\\u116E\";\n  t[\"\\u315D\"] = \"\\u116F\";\n  t[\"\\u315E\"] = \"\\u1170\";\n  t[\"\\u315F\"] = \"\\u1171\";\n  t[\"\\u3160\"] = \"\\u1172\";\n  t[\"\\u3161\"] = \"\\u1173\";\n  t[\"\\u3162\"] = \"\\u1174\";\n  t[\"\\u3163\"] = \"\\u1175\";\n  t[\"\\u3164\"] = \"\\u1160\";\n  t[\"\\u3165\"] = \"\\u1114\";\n  t[\"\\u3166\"] = \"\\u1115\";\n  t[\"\\u3167\"] = \"\\u11C7\";\n  t[\"\\u3168\"] = \"\\u11C8\";\n  t[\"\\u3169\"] = \"\\u11CC\";\n  t[\"\\u316A\"] = \"\\u11CE\";\n  t[\"\\u316B\"] = \"\\u11D3\";\n  t[\"\\u316C\"] = \"\\u11D7\";\n  t[\"\\u316D\"] = \"\\u11D9\";\n  t[\"\\u316E\"] = \"\\u111C\";\n  t[\"\\u316F\"] = \"\\u11DD\";\n  t[\"\\u3170\"] = \"\\u11DF\";\n  t[\"\\u3171\"] = \"\\u111D\";\n  t[\"\\u3172\"] = \"\\u111E\";\n  t[\"\\u3173\"] = \"\\u1120\";\n  t[\"\\u3174\"] = \"\\u1122\";\n  t[\"\\u3175\"] = \"\\u1123\";\n  t[\"\\u3176\"] = \"\\u1127\";\n  t[\"\\u3177\"] = \"\\u1129\";\n  t[\"\\u3178\"] = \"\\u112B\";\n  t[\"\\u3179\"] = \"\\u112C\";\n  t[\"\\u317A\"] = \"\\u112D\";\n  t[\"\\u317B\"] = \"\\u112E\";\n  t[\"\\u317C\"] = \"\\u112F\";\n  t[\"\\u317D\"] = \"\\u1132\";\n  t[\"\\u317E\"] = \"\\u1136\";\n  t[\"\\u317F\"] = \"\\u1140\";\n  t[\"\\u3180\"] = \"\\u1147\";\n  t[\"\\u3181\"] = \"\\u114C\";\n  t[\"\\u3182\"] = \"\\u11F1\";\n  t[\"\\u3183\"] = \"\\u11F2\";\n  t[\"\\u3184\"] = \"\\u1157\";\n  t[\"\\u3185\"] = \"\\u1158\";\n  t[\"\\u3186\"] = \"\\u1159\";\n  t[\"\\u3187\"] = \"\\u1184\";\n  t[\"\\u3188\"] = \"\\u1185\";\n  t[\"\\u3189\"] = \"\\u1188\";\n  t[\"\\u318A\"] = \"\\u1191\";\n  t[\"\\u318B\"] = \"\\u1192\";\n  t[\"\\u318C\"] = \"\\u1194\";\n  t[\"\\u318D\"] = \"\\u119E\";\n  t[\"\\u318E\"] = \"\\u11A1\";\n  t[\"\\u3200\"] = \"\\u0028\\u1100\\u0029\";\n  t[\"\\u3201\"] = \"\\u0028\\u1102\\u0029\";\n  t[\"\\u3202\"] = \"\\u0028\\u1103\\u0029\";\n  t[\"\\u3203\"] = \"\\u0028\\u1105\\u0029\";\n  t[\"\\u3204\"] = \"\\u0028\\u1106\\u0029\";\n  t[\"\\u3205\"] = \"\\u0028\\u1107\\u0029\";\n  t[\"\\u3206\"] = \"\\u0028\\u1109\\u0029\";\n  t[\"\\u3207\"] = \"\\u0028\\u110B\\u0029\";\n  t[\"\\u3208\"] = \"\\u0028\\u110C\\u0029\";\n  t[\"\\u3209\"] = \"\\u0028\\u110E\\u0029\";\n  t[\"\\u320A\"] = \"\\u0028\\u110F\\u0029\";\n  t[\"\\u320B\"] = \"\\u0028\\u1110\\u0029\";\n  t[\"\\u320C\"] = \"\\u0028\\u1111\\u0029\";\n  t[\"\\u320D\"] = \"\\u0028\\u1112\\u0029\";\n  t[\"\\u320E\"] = \"\\u0028\\u1100\\u1161\\u0029\";\n  t[\"\\u320F\"] = \"\\u0028\\u1102\\u1161\\u0029\";\n  t[\"\\u3210\"] = \"\\u0028\\u1103\\u1161\\u0029\";\n  t[\"\\u3211\"] = \"\\u0028\\u1105\\u1161\\u0029\";\n  t[\"\\u3212\"] = \"\\u0028\\u1106\\u1161\\u0029\";\n  t[\"\\u3213\"] = \"\\u0028\\u1107\\u1161\\u0029\";\n  t[\"\\u3214\"] = \"\\u0028\\u1109\\u1161\\u0029\";\n  t[\"\\u3215\"] = \"\\u0028\\u110B\\u1161\\u0029\";\n  t[\"\\u3216\"] = \"\\u0028\\u110C\\u1161\\u0029\";\n  t[\"\\u3217\"] = \"\\u0028\\u110E\\u1161\\u0029\";\n  t[\"\\u3218\"] = \"\\u0028\\u110F\\u1161\\u0029\";\n  t[\"\\u3219\"] = \"\\u0028\\u1110\\u1161\\u0029\";\n  t[\"\\u321A\"] = \"\\u0028\\u1111\\u1161\\u0029\";\n  t[\"\\u321B\"] = \"\\u0028\\u1112\\u1161\\u0029\";\n  t[\"\\u321C\"] = \"\\u0028\\u110C\\u116E\\u0029\";\n  t[\"\\u321D\"] = \"\\u0028\\u110B\\u1169\\u110C\\u1165\\u11AB\\u0029\";\n  t[\"\\u321E\"] = \"\\u0028\\u110B\\u1169\\u1112\\u116E\\u0029\";\n  t[\"\\u3220\"] = \"\\u0028\\u4E00\\u0029\";\n  t[\"\\u3221\"] = \"\\u0028\\u4E8C\\u0029\";\n  t[\"\\u3222\"] = \"\\u0028\\u4E09\\u0029\";\n  t[\"\\u3223\"] = \"\\u0028\\u56DB\\u0029\";\n  t[\"\\u3224\"] = \"\\u0028\\u4E94\\u0029\";\n  t[\"\\u3225\"] = \"\\u0028\\u516D\\u0029\";\n  t[\"\\u3226\"] = \"\\u0028\\u4E03\\u0029\";\n  t[\"\\u3227\"] = \"\\u0028\\u516B\\u0029\";\n  t[\"\\u3228\"] = \"\\u0028\\u4E5D\\u0029\";\n  t[\"\\u3229\"] = \"\\u0028\\u5341\\u0029\";\n  t[\"\\u322A\"] = \"\\u0028\\u6708\\u0029\";\n  t[\"\\u322B\"] = \"\\u0028\\u706B\\u0029\";\n  t[\"\\u322C\"] = \"\\u0028\\u6C34\\u0029\";\n  t[\"\\u322D\"] = \"\\u0028\\u6728\\u0029\";\n  t[\"\\u322E\"] = \"\\u0028\\u91D1\\u0029\";\n  t[\"\\u322F\"] = \"\\u0028\\u571F\\u0029\";\n  t[\"\\u3230\"] = \"\\u0028\\u65E5\\u0029\";\n  t[\"\\u3231\"] = \"\\u0028\\u682A\\u0029\";\n  t[\"\\u3232\"] = \"\\u0028\\u6709\\u0029\";\n  t[\"\\u3233\"] = \"\\u0028\\u793E\\u0029\";\n  t[\"\\u3234\"] = \"\\u0028\\u540D\\u0029\";\n  t[\"\\u3235\"] = \"\\u0028\\u7279\\u0029\";\n  t[\"\\u3236\"] = \"\\u0028\\u8CA1\\u0029\";\n  t[\"\\u3237\"] = \"\\u0028\\u795D\\u0029\";\n  t[\"\\u3238\"] = \"\\u0028\\u52B4\\u0029\";\n  t[\"\\u3239\"] = \"\\u0028\\u4EE3\\u0029\";\n  t[\"\\u323A\"] = \"\\u0028\\u547C\\u0029\";\n  t[\"\\u323B\"] = \"\\u0028\\u5B66\\u0029\";\n  t[\"\\u323C\"] = \"\\u0028\\u76E3\\u0029\";\n  t[\"\\u323D\"] = \"\\u0028\\u4F01\\u0029\";\n  t[\"\\u323E\"] = \"\\u0028\\u8CC7\\u0029\";\n  t[\"\\u323F\"] = \"\\u0028\\u5354\\u0029\";\n  t[\"\\u3240\"] = \"\\u0028\\u796D\\u0029\";\n  t[\"\\u3241\"] = \"\\u0028\\u4F11\\u0029\";\n  t[\"\\u3242\"] = \"\\u0028\\u81EA\\u0029\";\n  t[\"\\u3243\"] = \"\\u0028\\u81F3\\u0029\";\n  t[\"\\u32C0\"] = \"\\u0031\\u6708\";\n  t[\"\\u32C1\"] = \"\\u0032\\u6708\";\n  t[\"\\u32C2\"] = \"\\u0033\\u6708\";\n  t[\"\\u32C3\"] = \"\\u0034\\u6708\";\n  t[\"\\u32C4\"] = \"\\u0035\\u6708\";\n  t[\"\\u32C5\"] = \"\\u0036\\u6708\";\n  t[\"\\u32C6\"] = \"\\u0037\\u6708\";\n  t[\"\\u32C7\"] = \"\\u0038\\u6708\";\n  t[\"\\u32C8\"] = \"\\u0039\\u6708\";\n  t[\"\\u32C9\"] = \"\\u0031\\u0030\\u6708\";\n  t[\"\\u32CA\"] = \"\\u0031\\u0031\\u6708\";\n  t[\"\\u32CB\"] = \"\\u0031\\u0032\\u6708\";\n  t[\"\\u3358\"] = \"\\u0030\\u70B9\";\n  t[\"\\u3359\"] = \"\\u0031\\u70B9\";\n  t[\"\\u335A\"] = \"\\u0032\\u70B9\";\n  t[\"\\u335B\"] = \"\\u0033\\u70B9\";\n  t[\"\\u335C\"] = \"\\u0034\\u70B9\";\n  t[\"\\u335D\"] = \"\\u0035\\u70B9\";\n  t[\"\\u335E\"] = \"\\u0036\\u70B9\";\n  t[\"\\u335F\"] = \"\\u0037\\u70B9\";\n  t[\"\\u3360\"] = \"\\u0038\\u70B9\";\n  t[\"\\u3361\"] = \"\\u0039\\u70B9\";\n  t[\"\\u3362\"] = \"\\u0031\\u0030\\u70B9\";\n  t[\"\\u3363\"] = \"\\u0031\\u0031\\u70B9\";\n  t[\"\\u3364\"] = \"\\u0031\\u0032\\u70B9\";\n  t[\"\\u3365\"] = \"\\u0031\\u0033\\u70B9\";\n  t[\"\\u3366\"] = \"\\u0031\\u0034\\u70B9\";\n  t[\"\\u3367\"] = \"\\u0031\\u0035\\u70B9\";\n  t[\"\\u3368\"] = \"\\u0031\\u0036\\u70B9\";\n  t[\"\\u3369\"] = \"\\u0031\\u0037\\u70B9\";\n  t[\"\\u336A\"] = \"\\u0031\\u0038\\u70B9\";\n  t[\"\\u336B\"] = \"\\u0031\\u0039\\u70B9\";\n  t[\"\\u336C\"] = \"\\u0032\\u0030\\u70B9\";\n  t[\"\\u336D\"] = \"\\u0032\\u0031\\u70B9\";\n  t[\"\\u336E\"] = \"\\u0032\\u0032\\u70B9\";\n  t[\"\\u336F\"] = \"\\u0032\\u0033\\u70B9\";\n  t[\"\\u3370\"] = \"\\u0032\\u0034\\u70B9\";\n  t[\"\\u33E0\"] = \"\\u0031\\u65E5\";\n  t[\"\\u33E1\"] = \"\\u0032\\u65E5\";\n  t[\"\\u33E2\"] = \"\\u0033\\u65E5\";\n  t[\"\\u33E3\"] = \"\\u0034\\u65E5\";\n  t[\"\\u33E4\"] = \"\\u0035\\u65E5\";\n  t[\"\\u33E5\"] = \"\\u0036\\u65E5\";\n  t[\"\\u33E6\"] = \"\\u0037\\u65E5\";\n  t[\"\\u33E7\"] = \"\\u0038\\u65E5\";\n  t[\"\\u33E8\"] = \"\\u0039\\u65E5\";\n  t[\"\\u33E9\"] = \"\\u0031\\u0030\\u65E5\";\n  t[\"\\u33EA\"] = \"\\u0031\\u0031\\u65E5\";\n  t[\"\\u33EB\"] = \"\\u0031\\u0032\\u65E5\";\n  t[\"\\u33EC\"] = \"\\u0031\\u0033\\u65E5\";\n  t[\"\\u33ED\"] = \"\\u0031\\u0034\\u65E5\";\n  t[\"\\u33EE\"] = \"\\u0031\\u0035\\u65E5\";\n  t[\"\\u33EF\"] = \"\\u0031\\u0036\\u65E5\";\n  t[\"\\u33F0\"] = \"\\u0031\\u0037\\u65E5\";\n  t[\"\\u33F1\"] = \"\\u0031\\u0038\\u65E5\";\n  t[\"\\u33F2\"] = \"\\u0031\\u0039\\u65E5\";\n  t[\"\\u33F3\"] = \"\\u0032\\u0030\\u65E5\";\n  t[\"\\u33F4\"] = \"\\u0032\\u0031\\u65E5\";\n  t[\"\\u33F5\"] = \"\\u0032\\u0032\\u65E5\";\n  t[\"\\u33F6\"] = \"\\u0032\\u0033\\u65E5\";\n  t[\"\\u33F7\"] = \"\\u0032\\u0034\\u65E5\";\n  t[\"\\u33F8\"] = \"\\u0032\\u0035\\u65E5\";\n  t[\"\\u33F9\"] = \"\\u0032\\u0036\\u65E5\";\n  t[\"\\u33FA\"] = \"\\u0032\\u0037\\u65E5\";\n  t[\"\\u33FB\"] = \"\\u0032\\u0038\\u65E5\";\n  t[\"\\u33FC\"] = \"\\u0032\\u0039\\u65E5\";\n  t[\"\\u33FD\"] = \"\\u0033\\u0030\\u65E5\";\n  t[\"\\u33FE\"] = \"\\u0033\\u0031\\u65E5\";\n  t[\"\\uFB00\"] = \"\\u0066\\u0066\";\n  t[\"\\uFB01\"] = \"\\u0066\\u0069\";\n  t[\"\\uFB02\"] = \"\\u0066\\u006C\";\n  t[\"\\uFB03\"] = \"\\u0066\\u0066\\u0069\";\n  t[\"\\uFB04\"] = \"\\u0066\\u0066\\u006C\";\n  t[\"\\uFB05\"] = \"\\u017F\\u0074\";\n  t[\"\\uFB06\"] = \"\\u0073\\u0074\";\n  t[\"\\uFB13\"] = \"\\u0574\\u0576\";\n  t[\"\\uFB14\"] = \"\\u0574\\u0565\";\n  t[\"\\uFB15\"] = \"\\u0574\\u056B\";\n  t[\"\\uFB16\"] = \"\\u057E\\u0576\";\n  t[\"\\uFB17\"] = \"\\u0574\\u056D\";\n  t[\"\\uFB4F\"] = \"\\u05D0\\u05DC\";\n  t[\"\\uFB50\"] = \"\\u0671\";\n  t[\"\\uFB51\"] = \"\\u0671\";\n  t[\"\\uFB52\"] = \"\\u067B\";\n  t[\"\\uFB53\"] = \"\\u067B\";\n  t[\"\\uFB54\"] = \"\\u067B\";\n  t[\"\\uFB55\"] = \"\\u067B\";\n  t[\"\\uFB56\"] = \"\\u067E\";\n  t[\"\\uFB57\"] = \"\\u067E\";\n  t[\"\\uFB58\"] = \"\\u067E\";\n  t[\"\\uFB59\"] = \"\\u067E\";\n  t[\"\\uFB5A\"] = \"\\u0680\";\n  t[\"\\uFB5B\"] = \"\\u0680\";\n  t[\"\\uFB5C\"] = \"\\u0680\";\n  t[\"\\uFB5D\"] = \"\\u0680\";\n  t[\"\\uFB5E\"] = \"\\u067A\";\n  t[\"\\uFB5F\"] = \"\\u067A\";\n  t[\"\\uFB60\"] = \"\\u067A\";\n  t[\"\\uFB61\"] = \"\\u067A\";\n  t[\"\\uFB62\"] = \"\\u067F\";\n  t[\"\\uFB63\"] = \"\\u067F\";\n  t[\"\\uFB64\"] = \"\\u067F\";\n  t[\"\\uFB65\"] = \"\\u067F\";\n  t[\"\\uFB66\"] = \"\\u0679\";\n  t[\"\\uFB67\"] = \"\\u0679\";\n  t[\"\\uFB68\"] = \"\\u0679\";\n  t[\"\\uFB69\"] = \"\\u0679\";\n  t[\"\\uFB6A\"] = \"\\u06A4\";\n  t[\"\\uFB6B\"] = \"\\u06A4\";\n  t[\"\\uFB6C\"] = \"\\u06A4\";\n  t[\"\\uFB6D\"] = \"\\u06A4\";\n  t[\"\\uFB6E\"] = \"\\u06A6\";\n  t[\"\\uFB6F\"] = \"\\u06A6\";\n  t[\"\\uFB70\"] = \"\\u06A6\";\n  t[\"\\uFB71\"] = \"\\u06A6\";\n  t[\"\\uFB72\"] = \"\\u0684\";\n  t[\"\\uFB73\"] = \"\\u0684\";\n  t[\"\\uFB74\"] = \"\\u0684\";\n  t[\"\\uFB75\"] = \"\\u0684\";\n  t[\"\\uFB76\"] = \"\\u0683\";\n  t[\"\\uFB77\"] = \"\\u0683\";\n  t[\"\\uFB78\"] = \"\\u0683\";\n  t[\"\\uFB79\"] = \"\\u0683\";\n  t[\"\\uFB7A\"] = \"\\u0686\";\n  t[\"\\uFB7B\"] = \"\\u0686\";\n  t[\"\\uFB7C\"] = \"\\u0686\";\n  t[\"\\uFB7D\"] = \"\\u0686\";\n  t[\"\\uFB7E\"] = \"\\u0687\";\n  t[\"\\uFB7F\"] = \"\\u0687\";\n  t[\"\\uFB80\"] = \"\\u0687\";\n  t[\"\\uFB81\"] = \"\\u0687\";\n  t[\"\\uFB82\"] = \"\\u068D\";\n  t[\"\\uFB83\"] = \"\\u068D\";\n  t[\"\\uFB84\"] = \"\\u068C\";\n  t[\"\\uFB85\"] = \"\\u068C\";\n  t[\"\\uFB86\"] = \"\\u068E\";\n  t[\"\\uFB87\"] = \"\\u068E\";\n  t[\"\\uFB88\"] = \"\\u0688\";\n  t[\"\\uFB89\"] = \"\\u0688\";\n  t[\"\\uFB8A\"] = \"\\u0698\";\n  t[\"\\uFB8B\"] = \"\\u0698\";\n  t[\"\\uFB8C\"] = \"\\u0691\";\n  t[\"\\uFB8D\"] = \"\\u0691\";\n  t[\"\\uFB8E\"] = \"\\u06A9\";\n  t[\"\\uFB8F\"] = \"\\u06A9\";\n  t[\"\\uFB90\"] = \"\\u06A9\";\n  t[\"\\uFB91\"] = \"\\u06A9\";\n  t[\"\\uFB92\"] = \"\\u06AF\";\n  t[\"\\uFB93\"] = \"\\u06AF\";\n  t[\"\\uFB94\"] = \"\\u06AF\";\n  t[\"\\uFB95\"] = \"\\u06AF\";\n  t[\"\\uFB96\"] = \"\\u06B3\";\n  t[\"\\uFB97\"] = \"\\u06B3\";\n  t[\"\\uFB98\"] = \"\\u06B3\";\n  t[\"\\uFB99\"] = \"\\u06B3\";\n  t[\"\\uFB9A\"] = \"\\u06B1\";\n  t[\"\\uFB9B\"] = \"\\u06B1\";\n  t[\"\\uFB9C\"] = \"\\u06B1\";\n  t[\"\\uFB9D\"] = \"\\u06B1\";\n  t[\"\\uFB9E\"] = \"\\u06BA\";\n  t[\"\\uFB9F\"] = \"\\u06BA\";\n  t[\"\\uFBA0\"] = \"\\u06BB\";\n  t[\"\\uFBA1\"] = \"\\u06BB\";\n  t[\"\\uFBA2\"] = \"\\u06BB\";\n  t[\"\\uFBA3\"] = \"\\u06BB\";\n  t[\"\\uFBA4\"] = \"\\u06C0\";\n  t[\"\\uFBA5\"] = \"\\u06C0\";\n  t[\"\\uFBA6\"] = \"\\u06C1\";\n  t[\"\\uFBA7\"] = \"\\u06C1\";\n  t[\"\\uFBA8\"] = \"\\u06C1\";\n  t[\"\\uFBA9\"] = \"\\u06C1\";\n  t[\"\\uFBAA\"] = \"\\u06BE\";\n  t[\"\\uFBAB\"] = \"\\u06BE\";\n  t[\"\\uFBAC\"] = \"\\u06BE\";\n  t[\"\\uFBAD\"] = \"\\u06BE\";\n  t[\"\\uFBAE\"] = \"\\u06D2\";\n  t[\"\\uFBAF\"] = \"\\u06D2\";\n  t[\"\\uFBB0\"] = \"\\u06D3\";\n  t[\"\\uFBB1\"] = \"\\u06D3\";\n  t[\"\\uFBD3\"] = \"\\u06AD\";\n  t[\"\\uFBD4\"] = \"\\u06AD\";\n  t[\"\\uFBD5\"] = \"\\u06AD\";\n  t[\"\\uFBD6\"] = \"\\u06AD\";\n  t[\"\\uFBD7\"] = \"\\u06C7\";\n  t[\"\\uFBD8\"] = \"\\u06C7\";\n  t[\"\\uFBD9\"] = \"\\u06C6\";\n  t[\"\\uFBDA\"] = \"\\u06C6\";\n  t[\"\\uFBDB\"] = \"\\u06C8\";\n  t[\"\\uFBDC\"] = \"\\u06C8\";\n  t[\"\\uFBDD\"] = \"\\u0677\";\n  t[\"\\uFBDE\"] = \"\\u06CB\";\n  t[\"\\uFBDF\"] = \"\\u06CB\";\n  t[\"\\uFBE0\"] = \"\\u06C5\";\n  t[\"\\uFBE1\"] = \"\\u06C5\";\n  t[\"\\uFBE2\"] = \"\\u06C9\";\n  t[\"\\uFBE3\"] = \"\\u06C9\";\n  t[\"\\uFBE4\"] = \"\\u06D0\";\n  t[\"\\uFBE5\"] = \"\\u06D0\";\n  t[\"\\uFBE6\"] = \"\\u06D0\";\n  t[\"\\uFBE7\"] = \"\\u06D0\";\n  t[\"\\uFBE8\"] = \"\\u0649\";\n  t[\"\\uFBE9\"] = \"\\u0649\";\n  t[\"\\uFBEA\"] = \"\\u0626\\u0627\";\n  t[\"\\uFBEB\"] = \"\\u0626\\u0627\";\n  t[\"\\uFBEC\"] = \"\\u0626\\u06D5\";\n  t[\"\\uFBED\"] = \"\\u0626\\u06D5\";\n  t[\"\\uFBEE\"] = \"\\u0626\\u0648\";\n  t[\"\\uFBEF\"] = \"\\u0626\\u0648\";\n  t[\"\\uFBF0\"] = \"\\u0626\\u06C7\";\n  t[\"\\uFBF1\"] = \"\\u0626\\u06C7\";\n  t[\"\\uFBF2\"] = \"\\u0626\\u06C6\";\n  t[\"\\uFBF3\"] = \"\\u0626\\u06C6\";\n  t[\"\\uFBF4\"] = \"\\u0626\\u06C8\";\n  t[\"\\uFBF5\"] = \"\\u0626\\u06C8\";\n  t[\"\\uFBF6\"] = \"\\u0626\\u06D0\";\n  t[\"\\uFBF7\"] = \"\\u0626\\u06D0\";\n  t[\"\\uFBF8\"] = \"\\u0626\\u06D0\";\n  t[\"\\uFBF9\"] = \"\\u0626\\u0649\";\n  t[\"\\uFBFA\"] = \"\\u0626\\u0649\";\n  t[\"\\uFBFB\"] = \"\\u0626\\u0649\";\n  t[\"\\uFBFC\"] = \"\\u06CC\";\n  t[\"\\uFBFD\"] = \"\\u06CC\";\n  t[\"\\uFBFE\"] = \"\\u06CC\";\n  t[\"\\uFBFF\"] = \"\\u06CC\";\n  t[\"\\uFC00\"] = \"\\u0626\\u062C\";\n  t[\"\\uFC01\"] = \"\\u0626\\u062D\";\n  t[\"\\uFC02\"] = \"\\u0626\\u0645\";\n  t[\"\\uFC03\"] = \"\\u0626\\u0649\";\n  t[\"\\uFC04\"] = \"\\u0626\\u064A\";\n  t[\"\\uFC05\"] = \"\\u0628\\u062C\";\n  t[\"\\uFC06\"] = \"\\u0628\\u062D\";\n  t[\"\\uFC07\"] = \"\\u0628\\u062E\";\n  t[\"\\uFC08\"] = \"\\u0628\\u0645\";\n  t[\"\\uFC09\"] = \"\\u0628\\u0649\";\n  t[\"\\uFC0A\"] = \"\\u0628\\u064A\";\n  t[\"\\uFC0B\"] = \"\\u062A\\u062C\";\n  t[\"\\uFC0C\"] = \"\\u062A\\u062D\";\n  t[\"\\uFC0D\"] = \"\\u062A\\u062E\";\n  t[\"\\uFC0E\"] = \"\\u062A\\u0645\";\n  t[\"\\uFC0F\"] = \"\\u062A\\u0649\";\n  t[\"\\uFC10\"] = \"\\u062A\\u064A\";\n  t[\"\\uFC11\"] = \"\\u062B\\u062C\";\n  t[\"\\uFC12\"] = \"\\u062B\\u0645\";\n  t[\"\\uFC13\"] = \"\\u062B\\u0649\";\n  t[\"\\uFC14\"] = \"\\u062B\\u064A\";\n  t[\"\\uFC15\"] = \"\\u062C\\u062D\";\n  t[\"\\uFC16\"] = \"\\u062C\\u0645\";\n  t[\"\\uFC17\"] = \"\\u062D\\u062C\";\n  t[\"\\uFC18\"] = \"\\u062D\\u0645\";\n  t[\"\\uFC19\"] = \"\\u062E\\u062C\";\n  t[\"\\uFC1A\"] = \"\\u062E\\u062D\";\n  t[\"\\uFC1B\"] = \"\\u062E\\u0645\";\n  t[\"\\uFC1C\"] = \"\\u0633\\u062C\";\n  t[\"\\uFC1D\"] = \"\\u0633\\u062D\";\n  t[\"\\uFC1E\"] = \"\\u0633\\u062E\";\n  t[\"\\uFC1F\"] = \"\\u0633\\u0645\";\n  t[\"\\uFC20\"] = \"\\u0635\\u062D\";\n  t[\"\\uFC21\"] = \"\\u0635\\u0645\";\n  t[\"\\uFC22\"] = \"\\u0636\\u062C\";\n  t[\"\\uFC23\"] = \"\\u0636\\u062D\";\n  t[\"\\uFC24\"] = \"\\u0636\\u062E\";\n  t[\"\\uFC25\"] = \"\\u0636\\u0645\";\n  t[\"\\uFC26\"] = \"\\u0637\\u062D\";\n  t[\"\\uFC27\"] = \"\\u0637\\u0645\";\n  t[\"\\uFC28\"] = \"\\u0638\\u0645\";\n  t[\"\\uFC29\"] = \"\\u0639\\u062C\";\n  t[\"\\uFC2A\"] = \"\\u0639\\u0645\";\n  t[\"\\uFC2B\"] = \"\\u063A\\u062C\";\n  t[\"\\uFC2C\"] = \"\\u063A\\u0645\";\n  t[\"\\uFC2D\"] = \"\\u0641\\u062C\";\n  t[\"\\uFC2E\"] = \"\\u0641\\u062D\";\n  t[\"\\uFC2F\"] = \"\\u0641\\u062E\";\n  t[\"\\uFC30\"] = \"\\u0641\\u0645\";\n  t[\"\\uFC31\"] = \"\\u0641\\u0649\";\n  t[\"\\uFC32\"] = \"\\u0641\\u064A\";\n  t[\"\\uFC33\"] = \"\\u0642\\u062D\";\n  t[\"\\uFC34\"] = \"\\u0642\\u0645\";\n  t[\"\\uFC35\"] = \"\\u0642\\u0649\";\n  t[\"\\uFC36\"] = \"\\u0642\\u064A\";\n  t[\"\\uFC37\"] = \"\\u0643\\u0627\";\n  t[\"\\uFC38\"] = \"\\u0643\\u062C\";\n  t[\"\\uFC39\"] = \"\\u0643\\u062D\";\n  t[\"\\uFC3A\"] = \"\\u0643\\u062E\";\n  t[\"\\uFC3B\"] = \"\\u0643\\u0644\";\n  t[\"\\uFC3C\"] = \"\\u0643\\u0645\";\n  t[\"\\uFC3D\"] = \"\\u0643\\u0649\";\n  t[\"\\uFC3E\"] = \"\\u0643\\u064A\";\n  t[\"\\uFC3F\"] = \"\\u0644\\u062C\";\n  t[\"\\uFC40\"] = \"\\u0644\\u062D\";\n  t[\"\\uFC41\"] = \"\\u0644\\u062E\";\n  t[\"\\uFC42\"] = \"\\u0644\\u0645\";\n  t[\"\\uFC43\"] = \"\\u0644\\u0649\";\n  t[\"\\uFC44\"] = \"\\u0644\\u064A\";\n  t[\"\\uFC45\"] = \"\\u0645\\u062C\";\n  t[\"\\uFC46\"] = \"\\u0645\\u062D\";\n  t[\"\\uFC47\"] = \"\\u0645\\u062E\";\n  t[\"\\uFC48\"] = \"\\u0645\\u0645\";\n  t[\"\\uFC49\"] = \"\\u0645\\u0649\";\n  t[\"\\uFC4A\"] = \"\\u0645\\u064A\";\n  t[\"\\uFC4B\"] = \"\\u0646\\u062C\";\n  t[\"\\uFC4C\"] = \"\\u0646\\u062D\";\n  t[\"\\uFC4D\"] = \"\\u0646\\u062E\";\n  t[\"\\uFC4E\"] = \"\\u0646\\u0645\";\n  t[\"\\uFC4F\"] = \"\\u0646\\u0649\";\n  t[\"\\uFC50\"] = \"\\u0646\\u064A\";\n  t[\"\\uFC51\"] = \"\\u0647\\u062C\";\n  t[\"\\uFC52\"] = \"\\u0647\\u0645\";\n  t[\"\\uFC53\"] = \"\\u0647\\u0649\";\n  t[\"\\uFC54\"] = \"\\u0647\\u064A\";\n  t[\"\\uFC55\"] = \"\\u064A\\u062C\";\n  t[\"\\uFC56\"] = \"\\u064A\\u062D\";\n  t[\"\\uFC57\"] = \"\\u064A\\u062E\";\n  t[\"\\uFC58\"] = \"\\u064A\\u0645\";\n  t[\"\\uFC59\"] = \"\\u064A\\u0649\";\n  t[\"\\uFC5A\"] = \"\\u064A\\u064A\";\n  t[\"\\uFC5B\"] = \"\\u0630\\u0670\";\n  t[\"\\uFC5C\"] = \"\\u0631\\u0670\";\n  t[\"\\uFC5D\"] = \"\\u0649\\u0670\";\n  t[\"\\uFC5E\"] = \"\\u0020\\u064C\\u0651\";\n  t[\"\\uFC5F\"] = \"\\u0020\\u064D\\u0651\";\n  t[\"\\uFC60\"] = \"\\u0020\\u064E\\u0651\";\n  t[\"\\uFC61\"] = \"\\u0020\\u064F\\u0651\";\n  t[\"\\uFC62\"] = \"\\u0020\\u0650\\u0651\";\n  t[\"\\uFC63\"] = \"\\u0020\\u0651\\u0670\";\n  t[\"\\uFC64\"] = \"\\u0626\\u0631\";\n  t[\"\\uFC65\"] = \"\\u0626\\u0632\";\n  t[\"\\uFC66\"] = \"\\u0626\\u0645\";\n  t[\"\\uFC67\"] = \"\\u0626\\u0646\";\n  t[\"\\uFC68\"] = \"\\u0626\\u0649\";\n  t[\"\\uFC69\"] = \"\\u0626\\u064A\";\n  t[\"\\uFC6A\"] = \"\\u0628\\u0631\";\n  t[\"\\uFC6B\"] = \"\\u0628\\u0632\";\n  t[\"\\uFC6C\"] = \"\\u0628\\u0645\";\n  t[\"\\uFC6D\"] = \"\\u0628\\u0646\";\n  t[\"\\uFC6E\"] = \"\\u0628\\u0649\";\n  t[\"\\uFC6F\"] = \"\\u0628\\u064A\";\n  t[\"\\uFC70\"] = \"\\u062A\\u0631\";\n  t[\"\\uFC71\"] = \"\\u062A\\u0632\";\n  t[\"\\uFC72\"] = \"\\u062A\\u0645\";\n  t[\"\\uFC73\"] = \"\\u062A\\u0646\";\n  t[\"\\uFC74\"] = \"\\u062A\\u0649\";\n  t[\"\\uFC75\"] = \"\\u062A\\u064A\";\n  t[\"\\uFC76\"] = \"\\u062B\\u0631\";\n  t[\"\\uFC77\"] = \"\\u062B\\u0632\";\n  t[\"\\uFC78\"] = \"\\u062B\\u0645\";\n  t[\"\\uFC79\"] = \"\\u062B\\u0646\";\n  t[\"\\uFC7A\"] = \"\\u062B\\u0649\";\n  t[\"\\uFC7B\"] = \"\\u062B\\u064A\";\n  t[\"\\uFC7C\"] = \"\\u0641\\u0649\";\n  t[\"\\uFC7D\"] = \"\\u0641\\u064A\";\n  t[\"\\uFC7E\"] = \"\\u0642\\u0649\";\n  t[\"\\uFC7F\"] = \"\\u0642\\u064A\";\n  t[\"\\uFC80\"] = \"\\u0643\\u0627\";\n  t[\"\\uFC81\"] = \"\\u0643\\u0644\";\n  t[\"\\uFC82\"] = \"\\u0643\\u0645\";\n  t[\"\\uFC83\"] = \"\\u0643\\u0649\";\n  t[\"\\uFC84\"] = \"\\u0643\\u064A\";\n  t[\"\\uFC85\"] = \"\\u0644\\u0645\";\n  t[\"\\uFC86\"] = \"\\u0644\\u0649\";\n  t[\"\\uFC87\"] = \"\\u0644\\u064A\";\n  t[\"\\uFC88\"] = \"\\u0645\\u0627\";\n  t[\"\\uFC89\"] = \"\\u0645\\u0645\";\n  t[\"\\uFC8A\"] = \"\\u0646\\u0631\";\n  t[\"\\uFC8B\"] = \"\\u0646\\u0632\";\n  t[\"\\uFC8C\"] = \"\\u0646\\u0645\";\n  t[\"\\uFC8D\"] = \"\\u0646\\u0646\";\n  t[\"\\uFC8E\"] = \"\\u0646\\u0649\";\n  t[\"\\uFC8F\"] = \"\\u0646\\u064A\";\n  t[\"\\uFC90\"] = \"\\u0649\\u0670\";\n  t[\"\\uFC91\"] = \"\\u064A\\u0631\";\n  t[\"\\uFC92\"] = \"\\u064A\\u0632\";\n  t[\"\\uFC93\"] = \"\\u064A\\u0645\";\n  t[\"\\uFC94\"] = \"\\u064A\\u0646\";\n  t[\"\\uFC95\"] = \"\\u064A\\u0649\";\n  t[\"\\uFC96\"] = \"\\u064A\\u064A\";\n  t[\"\\uFC97\"] = \"\\u0626\\u062C\";\n  t[\"\\uFC98\"] = \"\\u0626\\u062D\";\n  t[\"\\uFC99\"] = \"\\u0626\\u062E\";\n  t[\"\\uFC9A\"] = \"\\u0626\\u0645\";\n  t[\"\\uFC9B\"] = \"\\u0626\\u0647\";\n  t[\"\\uFC9C\"] = \"\\u0628\\u062C\";\n  t[\"\\uFC9D\"] = \"\\u0628\\u062D\";\n  t[\"\\uFC9E\"] = \"\\u0628\\u062E\";\n  t[\"\\uFC9F\"] = \"\\u0628\\u0645\";\n  t[\"\\uFCA0\"] = \"\\u0628\\u0647\";\n  t[\"\\uFCA1\"] = \"\\u062A\\u062C\";\n  t[\"\\uFCA2\"] = \"\\u062A\\u062D\";\n  t[\"\\uFCA3\"] = \"\\u062A\\u062E\";\n  t[\"\\uFCA4\"] = \"\\u062A\\u0645\";\n  t[\"\\uFCA5\"] = \"\\u062A\\u0647\";\n  t[\"\\uFCA6\"] = \"\\u062B\\u0645\";\n  t[\"\\uFCA7\"] = \"\\u062C\\u062D\";\n  t[\"\\uFCA8\"] = \"\\u062C\\u0645\";\n  t[\"\\uFCA9\"] = \"\\u062D\\u062C\";\n  t[\"\\uFCAA\"] = \"\\u062D\\u0645\";\n  t[\"\\uFCAB\"] = \"\\u062E\\u062C\";\n  t[\"\\uFCAC\"] = \"\\u062E\\u0645\";\n  t[\"\\uFCAD\"] = \"\\u0633\\u062C\";\n  t[\"\\uFCAE\"] = \"\\u0633\\u062D\";\n  t[\"\\uFCAF\"] = \"\\u0633\\u062E\";\n  t[\"\\uFCB0\"] = \"\\u0633\\u0645\";\n  t[\"\\uFCB1\"] = \"\\u0635\\u062D\";\n  t[\"\\uFCB2\"] = \"\\u0635\\u062E\";\n  t[\"\\uFCB3\"] = \"\\u0635\\u0645\";\n  t[\"\\uFCB4\"] = \"\\u0636\\u062C\";\n  t[\"\\uFCB5\"] = \"\\u0636\\u062D\";\n  t[\"\\uFCB6\"] = \"\\u0636\\u062E\";\n  t[\"\\uFCB7\"] = \"\\u0636\\u0645\";\n  t[\"\\uFCB8\"] = \"\\u0637\\u062D\";\n  t[\"\\uFCB9\"] = \"\\u0638\\u0645\";\n  t[\"\\uFCBA\"] = \"\\u0639\\u062C\";\n  t[\"\\uFCBB\"] = \"\\u0639\\u0645\";\n  t[\"\\uFCBC\"] = \"\\u063A\\u062C\";\n  t[\"\\uFCBD\"] = \"\\u063A\\u0645\";\n  t[\"\\uFCBE\"] = \"\\u0641\\u062C\";\n  t[\"\\uFCBF\"] = \"\\u0641\\u062D\";\n  t[\"\\uFCC0\"] = \"\\u0641\\u062E\";\n  t[\"\\uFCC1\"] = \"\\u0641\\u0645\";\n  t[\"\\uFCC2\"] = \"\\u0642\\u062D\";\n  t[\"\\uFCC3\"] = \"\\u0642\\u0645\";\n  t[\"\\uFCC4\"] = \"\\u0643\\u062C\";\n  t[\"\\uFCC5\"] = \"\\u0643\\u062D\";\n  t[\"\\uFCC6\"] = \"\\u0643\\u062E\";\n  t[\"\\uFCC7\"] = \"\\u0643\\u0644\";\n  t[\"\\uFCC8\"] = \"\\u0643\\u0645\";\n  t[\"\\uFCC9\"] = \"\\u0644\\u062C\";\n  t[\"\\uFCCA\"] = \"\\u0644\\u062D\";\n  t[\"\\uFCCB\"] = \"\\u0644\\u062E\";\n  t[\"\\uFCCC\"] = \"\\u0644\\u0645\";\n  t[\"\\uFCCD\"] = \"\\u0644\\u0647\";\n  t[\"\\uFCCE\"] = \"\\u0645\\u062C\";\n  t[\"\\uFCCF\"] = \"\\u0645\\u062D\";\n  t[\"\\uFCD0\"] = \"\\u0645\\u062E\";\n  t[\"\\uFCD1\"] = \"\\u0645\\u0645\";\n  t[\"\\uFCD2\"] = \"\\u0646\\u062C\";\n  t[\"\\uFCD3\"] = \"\\u0646\\u062D\";\n  t[\"\\uFCD4\"] = \"\\u0646\\u062E\";\n  t[\"\\uFCD5\"] = \"\\u0646\\u0645\";\n  t[\"\\uFCD6\"] = \"\\u0646\\u0647\";\n  t[\"\\uFCD7\"] = \"\\u0647\\u062C\";\n  t[\"\\uFCD8\"] = \"\\u0647\\u0645\";\n  t[\"\\uFCD9\"] = \"\\u0647\\u0670\";\n  t[\"\\uFCDA\"] = \"\\u064A\\u062C\";\n  t[\"\\uFCDB\"] = \"\\u064A\\u062D\";\n  t[\"\\uFCDC\"] = \"\\u064A\\u062E\";\n  t[\"\\uFCDD\"] = \"\\u064A\\u0645\";\n  t[\"\\uFCDE\"] = \"\\u064A\\u0647\";\n  t[\"\\uFCDF\"] = \"\\u0626\\u0645\";\n  t[\"\\uFCE0\"] = \"\\u0626\\u0647\";\n  t[\"\\uFCE1\"] = \"\\u0628\\u0645\";\n  t[\"\\uFCE2\"] = \"\\u0628\\u0647\";\n  t[\"\\uFCE3\"] = \"\\u062A\\u0645\";\n  t[\"\\uFCE4\"] = \"\\u062A\\u0647\";\n  t[\"\\uFCE5\"] = \"\\u062B\\u0645\";\n  t[\"\\uFCE6\"] = \"\\u062B\\u0647\";\n  t[\"\\uFCE7\"] = \"\\u0633\\u0645\";\n  t[\"\\uFCE8\"] = \"\\u0633\\u0647\";\n  t[\"\\uFCE9\"] = \"\\u0634\\u0645\";\n  t[\"\\uFCEA\"] = \"\\u0634\\u0647\";\n  t[\"\\uFCEB\"] = \"\\u0643\\u0644\";\n  t[\"\\uFCEC\"] = \"\\u0643\\u0645\";\n  t[\"\\uFCED\"] = \"\\u0644\\u0645\";\n  t[\"\\uFCEE\"] = \"\\u0646\\u0645\";\n  t[\"\\uFCEF\"] = \"\\u0646\\u0647\";\n  t[\"\\uFCF0\"] = \"\\u064A\\u0645\";\n  t[\"\\uFCF1\"] = \"\\u064A\\u0647\";\n  t[\"\\uFCF2\"] = \"\\u0640\\u064E\\u0651\";\n  t[\"\\uFCF3\"] = \"\\u0640\\u064F\\u0651\";\n  t[\"\\uFCF4\"] = \"\\u0640\\u0650\\u0651\";\n  t[\"\\uFCF5\"] = \"\\u0637\\u0649\";\n  t[\"\\uFCF6\"] = \"\\u0637\\u064A\";\n  t[\"\\uFCF7\"] = \"\\u0639\\u0649\";\n  t[\"\\uFCF8\"] = \"\\u0639\\u064A\";\n  t[\"\\uFCF9\"] = \"\\u063A\\u0649\";\n  t[\"\\uFCFA\"] = \"\\u063A\\u064A\";\n  t[\"\\uFCFB\"] = \"\\u0633\\u0649\";\n  t[\"\\uFCFC\"] = \"\\u0633\\u064A\";\n  t[\"\\uFCFD\"] = \"\\u0634\\u0649\";\n  t[\"\\uFCFE\"] = \"\\u0634\\u064A\";\n  t[\"\\uFCFF\"] = \"\\u062D\\u0649\";\n  t[\"\\uFD00\"] = \"\\u062D\\u064A\";\n  t[\"\\uFD01\"] = \"\\u062C\\u0649\";\n  t[\"\\uFD02\"] = \"\\u062C\\u064A\";\n  t[\"\\uFD03\"] = \"\\u062E\\u0649\";\n  t[\"\\uFD04\"] = \"\\u062E\\u064A\";\n  t[\"\\uFD05\"] = \"\\u0635\\u0649\";\n  t[\"\\uFD06\"] = \"\\u0635\\u064A\";\n  t[\"\\uFD07\"] = \"\\u0636\\u0649\";\n  t[\"\\uFD08\"] = \"\\u0636\\u064A\";\n  t[\"\\uFD09\"] = \"\\u0634\\u062C\";\n  t[\"\\uFD0A\"] = \"\\u0634\\u062D\";\n  t[\"\\uFD0B\"] = \"\\u0634\\u062E\";\n  t[\"\\uFD0C\"] = \"\\u0634\\u0645\";\n  t[\"\\uFD0D\"] = \"\\u0634\\u0631\";\n  t[\"\\uFD0E\"] = \"\\u0633\\u0631\";\n  t[\"\\uFD0F\"] = \"\\u0635\\u0631\";\n  t[\"\\uFD10\"] = \"\\u0636\\u0631\";\n  t[\"\\uFD11\"] = \"\\u0637\\u0649\";\n  t[\"\\uFD12\"] = \"\\u0637\\u064A\";\n  t[\"\\uFD13\"] = \"\\u0639\\u0649\";\n  t[\"\\uFD14\"] = \"\\u0639\\u064A\";\n  t[\"\\uFD15\"] = \"\\u063A\\u0649\";\n  t[\"\\uFD16\"] = \"\\u063A\\u064A\";\n  t[\"\\uFD17\"] = \"\\u0633\\u0649\";\n  t[\"\\uFD18\"] = \"\\u0633\\u064A\";\n  t[\"\\uFD19\"] = \"\\u0634\\u0649\";\n  t[\"\\uFD1A\"] = \"\\u0634\\u064A\";\n  t[\"\\uFD1B\"] = \"\\u062D\\u0649\";\n  t[\"\\uFD1C\"] = \"\\u062D\\u064A\";\n  t[\"\\uFD1D\"] = \"\\u062C\\u0649\";\n  t[\"\\uFD1E\"] = \"\\u062C\\u064A\";\n  t[\"\\uFD1F\"] = \"\\u062E\\u0649\";\n  t[\"\\uFD20\"] = \"\\u062E\\u064A\";\n  t[\"\\uFD21\"] = \"\\u0635\\u0649\";\n  t[\"\\uFD22\"] = \"\\u0635\\u064A\";\n  t[\"\\uFD23\"] = \"\\u0636\\u0649\";\n  t[\"\\uFD24\"] = \"\\u0636\\u064A\";\n  t[\"\\uFD25\"] = \"\\u0634\\u062C\";\n  t[\"\\uFD26\"] = \"\\u0634\\u062D\";\n  t[\"\\uFD27\"] = \"\\u0634\\u062E\";\n  t[\"\\uFD28\"] = \"\\u0634\\u0645\";\n  t[\"\\uFD29\"] = \"\\u0634\\u0631\";\n  t[\"\\uFD2A\"] = \"\\u0633\\u0631\";\n  t[\"\\uFD2B\"] = \"\\u0635\\u0631\";\n  t[\"\\uFD2C\"] = \"\\u0636\\u0631\";\n  t[\"\\uFD2D\"] = \"\\u0634\\u062C\";\n  t[\"\\uFD2E\"] = \"\\u0634\\u062D\";\n  t[\"\\uFD2F\"] = \"\\u0634\\u062E\";\n  t[\"\\uFD30\"] = \"\\u0634\\u0645\";\n  t[\"\\uFD31\"] = \"\\u0633\\u0647\";\n  t[\"\\uFD32\"] = \"\\u0634\\u0647\";\n  t[\"\\uFD33\"] = \"\\u0637\\u0645\";\n  t[\"\\uFD34\"] = \"\\u0633\\u062C\";\n  t[\"\\uFD35\"] = \"\\u0633\\u062D\";\n  t[\"\\uFD36\"] = \"\\u0633\\u062E\";\n  t[\"\\uFD37\"] = \"\\u0634\\u062C\";\n  t[\"\\uFD38\"] = \"\\u0634\\u062D\";\n  t[\"\\uFD39\"] = \"\\u0634\\u062E\";\n  t[\"\\uFD3A\"] = \"\\u0637\\u0645\";\n  t[\"\\uFD3B\"] = \"\\u0638\\u0645\";\n  t[\"\\uFD3C\"] = \"\\u0627\\u064B\";\n  t[\"\\uFD3D\"] = \"\\u0627\\u064B\";\n  t[\"\\uFD50\"] = \"\\u062A\\u062C\\u0645\";\n  t[\"\\uFD51\"] = \"\\u062A\\u062D\\u062C\";\n  t[\"\\uFD52\"] = \"\\u062A\\u062D\\u062C\";\n  t[\"\\uFD53\"] = \"\\u062A\\u062D\\u0645\";\n  t[\"\\uFD54\"] = \"\\u062A\\u062E\\u0645\";\n  t[\"\\uFD55\"] = \"\\u062A\\u0645\\u062C\";\n  t[\"\\uFD56\"] = \"\\u062A\\u0645\\u062D\";\n  t[\"\\uFD57\"] = \"\\u062A\\u0645\\u062E\";\n  t[\"\\uFD58\"] = \"\\u062C\\u0645\\u062D\";\n  t[\"\\uFD59\"] = \"\\u062C\\u0645\\u062D\";\n  t[\"\\uFD5A\"] = \"\\u062D\\u0645\\u064A\";\n  t[\"\\uFD5B\"] = \"\\u062D\\u0645\\u0649\";\n  t[\"\\uFD5C\"] = \"\\u0633\\u062D\\u062C\";\n  t[\"\\uFD5D\"] = \"\\u0633\\u062C\\u062D\";\n  t[\"\\uFD5E\"] = \"\\u0633\\u062C\\u0649\";\n  t[\"\\uFD5F\"] = \"\\u0633\\u0645\\u062D\";\n  t[\"\\uFD60\"] = \"\\u0633\\u0645\\u062D\";\n  t[\"\\uFD61\"] = \"\\u0633\\u0645\\u062C\";\n  t[\"\\uFD62\"] = \"\\u0633\\u0645\\u0645\";\n  t[\"\\uFD63\"] = \"\\u0633\\u0645\\u0645\";\n  t[\"\\uFD64\"] = \"\\u0635\\u062D\\u062D\";\n  t[\"\\uFD65\"] = \"\\u0635\\u062D\\u062D\";\n  t[\"\\uFD66\"] = \"\\u0635\\u0645\\u0645\";\n  t[\"\\uFD67\"] = \"\\u0634\\u062D\\u0645\";\n  t[\"\\uFD68\"] = \"\\u0634\\u062D\\u0645\";\n  t[\"\\uFD69\"] = \"\\u0634\\u062C\\u064A\";\n  t[\"\\uFD6A\"] = \"\\u0634\\u0645\\u062E\";\n  t[\"\\uFD6B\"] = \"\\u0634\\u0645\\u062E\";\n  t[\"\\uFD6C\"] = \"\\u0634\\u0645\\u0645\";\n  t[\"\\uFD6D\"] = \"\\u0634\\u0645\\u0645\";\n  t[\"\\uFD6E\"] = \"\\u0636\\u062D\\u0649\";\n  t[\"\\uFD6F\"] = \"\\u0636\\u062E\\u0645\";\n  t[\"\\uFD70\"] = \"\\u0636\\u062E\\u0645\";\n  t[\"\\uFD71\"] = \"\\u0637\\u0645\\u062D\";\n  t[\"\\uFD72\"] = \"\\u0637\\u0645\\u062D\";\n  t[\"\\uFD73\"] = \"\\u0637\\u0645\\u0645\";\n  t[\"\\uFD74\"] = \"\\u0637\\u0645\\u064A\";\n  t[\"\\uFD75\"] = \"\\u0639\\u062C\\u0645\";\n  t[\"\\uFD76\"] = \"\\u0639\\u0645\\u0645\";\n  t[\"\\uFD77\"] = \"\\u0639\\u0645\\u0645\";\n  t[\"\\uFD78\"] = \"\\u0639\\u0645\\u0649\";\n  t[\"\\uFD79\"] = \"\\u063A\\u0645\\u0645\";\n  t[\"\\uFD7A\"] = \"\\u063A\\u0645\\u064A\";\n  t[\"\\uFD7B\"] = \"\\u063A\\u0645\\u0649\";\n  t[\"\\uFD7C\"] = \"\\u0641\\u062E\\u0645\";\n  t[\"\\uFD7D\"] = \"\\u0641\\u062E\\u0645\";\n  t[\"\\uFD7E\"] = \"\\u0642\\u0645\\u062D\";\n  t[\"\\uFD7F\"] = \"\\u0642\\u0645\\u0645\";\n  t[\"\\uFD80\"] = \"\\u0644\\u062D\\u0645\";\n  t[\"\\uFD81\"] = \"\\u0644\\u062D\\u064A\";\n  t[\"\\uFD82\"] = \"\\u0644\\u062D\\u0649\";\n  t[\"\\uFD83\"] = \"\\u0644\\u062C\\u062C\";\n  t[\"\\uFD84\"] = \"\\u0644\\u062C\\u062C\";\n  t[\"\\uFD85\"] = \"\\u0644\\u062E\\u0645\";\n  t[\"\\uFD86\"] = \"\\u0644\\u062E\\u0645\";\n  t[\"\\uFD87\"] = \"\\u0644\\u0645\\u062D\";\n  t[\"\\uFD88\"] = \"\\u0644\\u0645\\u062D\";\n  t[\"\\uFD89\"] = \"\\u0645\\u062D\\u062C\";\n  t[\"\\uFD8A\"] = \"\\u0645\\u062D\\u0645\";\n  t[\"\\uFD8B\"] = \"\\u0645\\u062D\\u064A\";\n  t[\"\\uFD8C\"] = \"\\u0645\\u062C\\u062D\";\n  t[\"\\uFD8D\"] = \"\\u0645\\u062C\\u0645\";\n  t[\"\\uFD8E\"] = \"\\u0645\\u062E\\u062C\";\n  t[\"\\uFD8F\"] = \"\\u0645\\u062E\\u0645\";\n  t[\"\\uFD92\"] = \"\\u0645\\u062C\\u062E\";\n  t[\"\\uFD93\"] = \"\\u0647\\u0645\\u062C\";\n  t[\"\\uFD94\"] = \"\\u0647\\u0645\\u0645\";\n  t[\"\\uFD95\"] = \"\\u0646\\u062D\\u0645\";\n  t[\"\\uFD96\"] = \"\\u0646\\u062D\\u0649\";\n  t[\"\\uFD97\"] = \"\\u0646\\u062C\\u0645\";\n  t[\"\\uFD98\"] = \"\\u0646\\u062C\\u0645\";\n  t[\"\\uFD99\"] = \"\\u0646\\u062C\\u0649\";\n  t[\"\\uFD9A\"] = \"\\u0646\\u0645\\u064A\";\n  t[\"\\uFD9B\"] = \"\\u0646\\u0645\\u0649\";\n  t[\"\\uFD9C\"] = \"\\u064A\\u0645\\u0645\";\n  t[\"\\uFD9D\"] = \"\\u064A\\u0645\\u0645\";\n  t[\"\\uFD9E\"] = \"\\u0628\\u062E\\u064A\";\n  t[\"\\uFD9F\"] = \"\\u062A\\u062C\\u064A\";\n  t[\"\\uFDA0\"] = \"\\u062A\\u062C\\u0649\";\n  t[\"\\uFDA1\"] = \"\\u062A\\u062E\\u064A\";\n  t[\"\\uFDA2\"] = \"\\u062A\\u062E\\u0649\";\n  t[\"\\uFDA3\"] = \"\\u062A\\u0645\\u064A\";\n  t[\"\\uFDA4\"] = \"\\u062A\\u0645\\u0649\";\n  t[\"\\uFDA5\"] = \"\\u062C\\u0645\\u064A\";\n  t[\"\\uFDA6\"] = \"\\u062C\\u062D\\u0649\";\n  t[\"\\uFDA7\"] = \"\\u062C\\u0645\\u0649\";\n  t[\"\\uFDA8\"] = \"\\u0633\\u062E\\u0649\";\n  t[\"\\uFDA9\"] = \"\\u0635\\u062D\\u064A\";\n  t[\"\\uFDAA\"] = \"\\u0634\\u062D\\u064A\";\n  t[\"\\uFDAB\"] = \"\\u0636\\u062D\\u064A\";\n  t[\"\\uFDAC\"] = \"\\u0644\\u062C\\u064A\";\n  t[\"\\uFDAD\"] = \"\\u0644\\u0645\\u064A\";\n  t[\"\\uFDAE\"] = \"\\u064A\\u062D\\u064A\";\n  t[\"\\uFDAF\"] = \"\\u064A\\u062C\\u064A\";\n  t[\"\\uFDB0\"] = \"\\u064A\\u0645\\u064A\";\n  t[\"\\uFDB1\"] = \"\\u0645\\u0645\\u064A\";\n  t[\"\\uFDB2\"] = \"\\u0642\\u0645\\u064A\";\n  t[\"\\uFDB3\"] = \"\\u0646\\u062D\\u064A\";\n  t[\"\\uFDB4\"] = \"\\u0642\\u0645\\u062D\";\n  t[\"\\uFDB5\"] = \"\\u0644\\u062D\\u0645\";\n  t[\"\\uFDB6\"] = \"\\u0639\\u0645\\u064A\";\n  t[\"\\uFDB7\"] = \"\\u0643\\u0645\\u064A\";\n  t[\"\\uFDB8\"] = \"\\u0646\\u062C\\u062D\";\n  t[\"\\uFDB9\"] = \"\\u0645\\u062E\\u064A\";\n  t[\"\\uFDBA\"] = \"\\u0644\\u062C\\u0645\";\n  t[\"\\uFDBB\"] = \"\\u0643\\u0645\\u0645\";\n  t[\"\\uFDBC\"] = \"\\u0644\\u062C\\u0645\";\n  t[\"\\uFDBD\"] = \"\\u0646\\u062C\\u062D\";\n  t[\"\\uFDBE\"] = \"\\u062C\\u062D\\u064A\";\n  t[\"\\uFDBF\"] = \"\\u062D\\u062C\\u064A\";\n  t[\"\\uFDC0\"] = \"\\u0645\\u062C\\u064A\";\n  t[\"\\uFDC1\"] = \"\\u0641\\u0645\\u064A\";\n  t[\"\\uFDC2\"] = \"\\u0628\\u062D\\u064A\";\n  t[\"\\uFDC3\"] = \"\\u0643\\u0645\\u0645\";\n  t[\"\\uFDC4\"] = \"\\u0639\\u062C\\u0645\";\n  t[\"\\uFDC5\"] = \"\\u0635\\u0645\\u0645\";\n  t[\"\\uFDC6\"] = \"\\u0633\\u062E\\u064A\";\n  t[\"\\uFDC7\"] = \"\\u0646\\u062C\\u064A\";\n  t[\"\\uFE49\"] = \"\\u203E\";\n  t[\"\\uFE4A\"] = \"\\u203E\";\n  t[\"\\uFE4B\"] = \"\\u203E\";\n  t[\"\\uFE4C\"] = \"\\u203E\";\n  t[\"\\uFE4D\"] = \"\\u005F\";\n  t[\"\\uFE4E\"] = \"\\u005F\";\n  t[\"\\uFE4F\"] = \"\\u005F\";\n  t[\"\\uFE80\"] = \"\\u0621\";\n  t[\"\\uFE81\"] = \"\\u0622\";\n  t[\"\\uFE82\"] = \"\\u0622\";\n  t[\"\\uFE83\"] = \"\\u0623\";\n  t[\"\\uFE84\"] = \"\\u0623\";\n  t[\"\\uFE85\"] = \"\\u0624\";\n  t[\"\\uFE86\"] = \"\\u0624\";\n  t[\"\\uFE87\"] = \"\\u0625\";\n  t[\"\\uFE88\"] = \"\\u0625\";\n  t[\"\\uFE89\"] = \"\\u0626\";\n  t[\"\\uFE8A\"] = \"\\u0626\";\n  t[\"\\uFE8B\"] = \"\\u0626\";\n  t[\"\\uFE8C\"] = \"\\u0626\";\n  t[\"\\uFE8D\"] = \"\\u0627\";\n  t[\"\\uFE8E\"] = \"\\u0627\";\n  t[\"\\uFE8F\"] = \"\\u0628\";\n  t[\"\\uFE90\"] = \"\\u0628\";\n  t[\"\\uFE91\"] = \"\\u0628\";\n  t[\"\\uFE92\"] = \"\\u0628\";\n  t[\"\\uFE93\"] = \"\\u0629\";\n  t[\"\\uFE94\"] = \"\\u0629\";\n  t[\"\\uFE95\"] = \"\\u062A\";\n  t[\"\\uFE96\"] = \"\\u062A\";\n  t[\"\\uFE97\"] = \"\\u062A\";\n  t[\"\\uFE98\"] = \"\\u062A\";\n  t[\"\\uFE99\"] = \"\\u062B\";\n  t[\"\\uFE9A\"] = \"\\u062B\";\n  t[\"\\uFE9B\"] = \"\\u062B\";\n  t[\"\\uFE9C\"] = \"\\u062B\";\n  t[\"\\uFE9D\"] = \"\\u062C\";\n  t[\"\\uFE9E\"] = \"\\u062C\";\n  t[\"\\uFE9F\"] = \"\\u062C\";\n  t[\"\\uFEA0\"] = \"\\u062C\";\n  t[\"\\uFEA1\"] = \"\\u062D\";\n  t[\"\\uFEA2\"] = \"\\u062D\";\n  t[\"\\uFEA3\"] = \"\\u062D\";\n  t[\"\\uFEA4\"] = \"\\u062D\";\n  t[\"\\uFEA5\"] = \"\\u062E\";\n  t[\"\\uFEA6\"] = \"\\u062E\";\n  t[\"\\uFEA7\"] = \"\\u062E\";\n  t[\"\\uFEA8\"] = \"\\u062E\";\n  t[\"\\uFEA9\"] = \"\\u062F\";\n  t[\"\\uFEAA\"] = \"\\u062F\";\n  t[\"\\uFEAB\"] = \"\\u0630\";\n  t[\"\\uFEAC\"] = \"\\u0630\";\n  t[\"\\uFEAD\"] = \"\\u0631\";\n  t[\"\\uFEAE\"] = \"\\u0631\";\n  t[\"\\uFEAF\"] = \"\\u0632\";\n  t[\"\\uFEB0\"] = \"\\u0632\";\n  t[\"\\uFEB1\"] = \"\\u0633\";\n  t[\"\\uFEB2\"] = \"\\u0633\";\n  t[\"\\uFEB3\"] = \"\\u0633\";\n  t[\"\\uFEB4\"] = \"\\u0633\";\n  t[\"\\uFEB5\"] = \"\\u0634\";\n  t[\"\\uFEB6\"] = \"\\u0634\";\n  t[\"\\uFEB7\"] = \"\\u0634\";\n  t[\"\\uFEB8\"] = \"\\u0634\";\n  t[\"\\uFEB9\"] = \"\\u0635\";\n  t[\"\\uFEBA\"] = \"\\u0635\";\n  t[\"\\uFEBB\"] = \"\\u0635\";\n  t[\"\\uFEBC\"] = \"\\u0635\";\n  t[\"\\uFEBD\"] = \"\\u0636\";\n  t[\"\\uFEBE\"] = \"\\u0636\";\n  t[\"\\uFEBF\"] = \"\\u0636\";\n  t[\"\\uFEC0\"] = \"\\u0636\";\n  t[\"\\uFEC1\"] = \"\\u0637\";\n  t[\"\\uFEC2\"] = \"\\u0637\";\n  t[\"\\uFEC3\"] = \"\\u0637\";\n  t[\"\\uFEC4\"] = \"\\u0637\";\n  t[\"\\uFEC5\"] = \"\\u0638\";\n  t[\"\\uFEC6\"] = \"\\u0638\";\n  t[\"\\uFEC7\"] = \"\\u0638\";\n  t[\"\\uFEC8\"] = \"\\u0638\";\n  t[\"\\uFEC9\"] = \"\\u0639\";\n  t[\"\\uFECA\"] = \"\\u0639\";\n  t[\"\\uFECB\"] = \"\\u0639\";\n  t[\"\\uFECC\"] = \"\\u0639\";\n  t[\"\\uFECD\"] = \"\\u063A\";\n  t[\"\\uFECE\"] = \"\\u063A\";\n  t[\"\\uFECF\"] = \"\\u063A\";\n  t[\"\\uFED0\"] = \"\\u063A\";\n  t[\"\\uFED1\"] = \"\\u0641\";\n  t[\"\\uFED2\"] = \"\\u0641\";\n  t[\"\\uFED3\"] = \"\\u0641\";\n  t[\"\\uFED4\"] = \"\\u0641\";\n  t[\"\\uFED5\"] = \"\\u0642\";\n  t[\"\\uFED6\"] = \"\\u0642\";\n  t[\"\\uFED7\"] = \"\\u0642\";\n  t[\"\\uFED8\"] = \"\\u0642\";\n  t[\"\\uFED9\"] = \"\\u0643\";\n  t[\"\\uFEDA\"] = \"\\u0643\";\n  t[\"\\uFEDB\"] = \"\\u0643\";\n  t[\"\\uFEDC\"] = \"\\u0643\";\n  t[\"\\uFEDD\"] = \"\\u0644\";\n  t[\"\\uFEDE\"] = \"\\u0644\";\n  t[\"\\uFEDF\"] = \"\\u0644\";\n  t[\"\\uFEE0\"] = \"\\u0644\";\n  t[\"\\uFEE1\"] = \"\\u0645\";\n  t[\"\\uFEE2\"] = \"\\u0645\";\n  t[\"\\uFEE3\"] = \"\\u0645\";\n  t[\"\\uFEE4\"] = \"\\u0645\";\n  t[\"\\uFEE5\"] = \"\\u0646\";\n  t[\"\\uFEE6\"] = \"\\u0646\";\n  t[\"\\uFEE7\"] = \"\\u0646\";\n  t[\"\\uFEE8\"] = \"\\u0646\";\n  t[\"\\uFEE9\"] = \"\\u0647\";\n  t[\"\\uFEEA\"] = \"\\u0647\";\n  t[\"\\uFEEB\"] = \"\\u0647\";\n  t[\"\\uFEEC\"] = \"\\u0647\";\n  t[\"\\uFEED\"] = \"\\u0648\";\n  t[\"\\uFEEE\"] = \"\\u0648\";\n  t[\"\\uFEEF\"] = \"\\u0649\";\n  t[\"\\uFEF0\"] = \"\\u0649\";\n  t[\"\\uFEF1\"] = \"\\u064A\";\n  t[\"\\uFEF2\"] = \"\\u064A\";\n  t[\"\\uFEF3\"] = \"\\u064A\";\n  t[\"\\uFEF4\"] = \"\\u064A\";\n  t[\"\\uFEF5\"] = \"\\u0644\\u0622\";\n  t[\"\\uFEF6\"] = \"\\u0644\\u0622\";\n  t[\"\\uFEF7\"] = \"\\u0644\\u0623\";\n  t[\"\\uFEF8\"] = \"\\u0644\\u0623\";\n  t[\"\\uFEF9\"] = \"\\u0644\\u0625\";\n  t[\"\\uFEFA\"] = \"\\u0644\\u0625\";\n  t[\"\\uFEFB\"] = \"\\u0644\\u0627\";\n  t[\"\\uFEFC\"] = \"\\u0644\\u0627\";\n});\n\nfunction reverseIfRtl(chars) {\n  var charsLength = chars.length;\n  // Reverse an arabic ligature.\n  if (charsLength <= 1 || !isRTLRangeFor(chars.charCodeAt(0))) {\n    return chars;\n  }\n  var s = \"\";\n  for (var ii = charsLength - 1; ii >= 0; ii--) {\n    s += chars[ii];\n  }\n  return s;\n}\n\nexports.mapSpecialUnicodeValues = mapSpecialUnicodeValues;\nexports.reverseIfRtl = reverseIfRtl;\nexports.getUnicodeRangeFor = getUnicodeRangeFor;\nexports.getNormalizedUnicodes = getNormalizedUnicodes;\nexports.getUnicodeForGlyph = getUnicodeForGlyph;\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  bytesToString,\n  FONT_IDENTITY_MATRIX,\n  FormatError,\n  unreachable,\n  warn,\n} from \"../shared/util.js\";\nimport { CFFParser } from \"./cff_parser.js\";\nimport { getGlyphsUnicode } from \"./glyphlist.js\";\nimport { StandardEncoding } from \"./encodings.js\";\nimport { Stream } from \"./stream.js\";\n\nvar FontRendererFactory = (function FontRendererFactoryClosure() {\n  function getLong(data, offset) {\n    return (\n      (data[offset] << 24) |\n      (data[offset + 1] << 16) |\n      (data[offset + 2] << 8) |\n      data[offset + 3]\n    );\n  }\n\n  function getUshort(data, offset) {\n    return (data[offset] << 8) | data[offset + 1];\n  }\n\n  function getSubroutineBias(subrs) {\n    const numSubrs = subrs.length;\n    let bias = 32768;\n    if (numSubrs < 1240) {\n      bias = 107;\n    } else if (numSubrs < 33900) {\n      bias = 1131;\n    }\n    return bias;\n  }\n\n  function parseCmap(data, start, end) {\n    var offset =\n      getUshort(data, start + 2) === 1\n        ? getLong(data, start + 8)\n        : getLong(data, start + 16);\n    var format = getUshort(data, start + offset);\n    var ranges, p, i;\n    if (format === 4) {\n      getUshort(data, start + offset + 2); // length\n      var segCount = getUshort(data, start + offset + 6) >> 1;\n      p = start + offset + 14;\n      ranges = [];\n      for (i = 0; i < segCount; i++, p += 2) {\n        ranges[i] = { end: getUshort(data, p) };\n      }\n      p += 2;\n      for (i = 0; i < segCount; i++, p += 2) {\n        ranges[i].start = getUshort(data, p);\n      }\n      for (i = 0; i < segCount; i++, p += 2) {\n        ranges[i].idDelta = getUshort(data, p);\n      }\n      for (i = 0; i < segCount; i++, p += 2) {\n        var idOffset = getUshort(data, p);\n        if (idOffset === 0) {\n          continue;\n        }\n        ranges[i].ids = [];\n        for (var j = 0, jj = ranges[i].end - ranges[i].start + 1; j < jj; j++) {\n          ranges[i].ids[j] = getUshort(data, p + idOffset);\n          idOffset += 2;\n        }\n      }\n      return ranges;\n    } else if (format === 12) {\n      getLong(data, start + offset + 4); // length\n      var groups = getLong(data, start + offset + 12);\n      p = start + offset + 16;\n      ranges = [];\n      for (i = 0; i < groups; i++) {\n        ranges.push({\n          start: getLong(data, p),\n          end: getLong(data, p + 4),\n          idDelta: getLong(data, p + 8) - getLong(data, p),\n        });\n        p += 12;\n      }\n      return ranges;\n    }\n    throw new FormatError(`unsupported cmap: ${format}`);\n  }\n\n  function parseCff(data, start, end, seacAnalysisEnabled) {\n    var properties = {};\n    var parser = new CFFParser(\n      new Stream(data, start, end - start),\n      properties,\n      seacAnalysisEnabled\n    );\n    var cff = parser.parse();\n    return {\n      glyphs: cff.charStrings.objects,\n      subrs:\n        cff.topDict.privateDict &&\n        cff.topDict.privateDict.subrsIndex &&\n        cff.topDict.privateDict.subrsIndex.objects,\n      gsubrs: cff.globalSubrIndex && cff.globalSubrIndex.objects,\n      isCFFCIDFont: cff.isCIDFont,\n      fdSelect: cff.fdSelect,\n      fdArray: cff.fdArray,\n    };\n  }\n\n  function parseGlyfTable(glyf, loca, isGlyphLocationsLong) {\n    var itemSize, itemDecode;\n    if (isGlyphLocationsLong) {\n      itemSize = 4;\n      itemDecode = function fontItemDecodeLong(data, offset) {\n        return (\n          (data[offset] << 24) |\n          (data[offset + 1] << 16) |\n          (data[offset + 2] << 8) |\n          data[offset + 3]\n        );\n      };\n    } else {\n      itemSize = 2;\n      itemDecode = function fontItemDecode(data, offset) {\n        return (data[offset] << 9) | (data[offset + 1] << 1);\n      };\n    }\n    var glyphs = [];\n    var startOffset = itemDecode(loca, 0);\n    for (var j = itemSize; j < loca.length; j += itemSize) {\n      var endOffset = itemDecode(loca, j);\n      glyphs.push(glyf.subarray(startOffset, endOffset));\n      startOffset = endOffset;\n    }\n    return glyphs;\n  }\n\n  function lookupCmap(ranges, unicode) {\n    var code = unicode.codePointAt(0),\n      gid = 0;\n    var l = 0,\n      r = ranges.length - 1;\n    while (l < r) {\n      var c = (l + r + 1) >> 1;\n      if (code < ranges[c].start) {\n        r = c - 1;\n      } else {\n        l = c;\n      }\n    }\n    if (ranges[l].start <= code && code <= ranges[l].end) {\n      gid =\n        (ranges[l].idDelta +\n          (ranges[l].ids ? ranges[l].ids[code - ranges[l].start] : code)) &\n        0xffff;\n    }\n    return {\n      charCode: code,\n      glyphId: gid,\n    };\n  }\n\n  function compileGlyf(code, cmds, font) {\n    function moveTo(x, y) {\n      cmds.push({ cmd: \"moveTo\", args: [x, y] });\n    }\n    function lineTo(x, y) {\n      cmds.push({ cmd: \"lineTo\", args: [x, y] });\n    }\n    function quadraticCurveTo(xa, ya, x, y) {\n      cmds.push({ cmd: \"quadraticCurveTo\", args: [xa, ya, x, y] });\n    }\n\n    var i = 0;\n    var numberOfContours = ((code[i] << 24) | (code[i + 1] << 16)) >> 16;\n    var flags;\n    var x = 0,\n      y = 0;\n    i += 10;\n    if (numberOfContours < 0) {\n      // composite glyph\n      do {\n        flags = (code[i] << 8) | code[i + 1];\n        var glyphIndex = (code[i + 2] << 8) | code[i + 3];\n        i += 4;\n        var arg1, arg2;\n        if (flags & 0x01) {\n          arg1 = ((code[i] << 24) | (code[i + 1] << 16)) >> 16;\n          arg2 = ((code[i + 2] << 24) | (code[i + 3] << 16)) >> 16;\n          i += 4;\n        } else {\n          arg1 = code[i++];\n          arg2 = code[i++];\n        }\n        if (flags & 0x02) {\n          x = arg1;\n          y = arg2;\n        } else {\n          x = 0;\n          y = 0; // TODO \"they are points\" ?\n        }\n        var scaleX = 1,\n          scaleY = 1,\n          scale01 = 0,\n          scale10 = 0;\n        if (flags & 0x08) {\n          scaleX = scaleY =\n            ((code[i] << 24) | (code[i + 1] << 16)) / 1073741824;\n          i += 2;\n        } else if (flags & 0x40) {\n          scaleX = ((code[i] << 24) | (code[i + 1] << 16)) / 1073741824;\n          scaleY = ((code[i + 2] << 24) | (code[i + 3] << 16)) / 1073741824;\n          i += 4;\n        } else if (flags & 0x80) {\n          scaleX = ((code[i] << 24) | (code[i + 1] << 16)) / 1073741824;\n          scale01 = ((code[i + 2] << 24) | (code[i + 3] << 16)) / 1073741824;\n          scale10 = ((code[i + 4] << 24) | (code[i + 5] << 16)) / 1073741824;\n          scaleY = ((code[i + 6] << 24) | (code[i + 7] << 16)) / 1073741824;\n          i += 8;\n        }\n        var subglyph = font.glyphs[glyphIndex];\n        if (subglyph) {\n          cmds.push({ cmd: \"save\" });\n          cmds.push({\n            cmd: \"transform\",\n            args: [scaleX, scale01, scale10, scaleY, x, y],\n          });\n          compileGlyf(subglyph, cmds, font);\n          cmds.push({ cmd: \"restore\" });\n        }\n      } while (flags & 0x20);\n    } else {\n      // simple glyph\n      var endPtsOfContours = [];\n      var j, jj;\n      for (j = 0; j < numberOfContours; j++) {\n        endPtsOfContours.push((code[i] << 8) | code[i + 1]);\n        i += 2;\n      }\n      var instructionLength = (code[i] << 8) | code[i + 1];\n      i += 2 + instructionLength; // skipping the instructions\n      var numberOfPoints = endPtsOfContours[endPtsOfContours.length - 1] + 1;\n      var points = [];\n      while (points.length < numberOfPoints) {\n        flags = code[i++];\n        var repeat = 1;\n        if (flags & 0x08) {\n          repeat += code[i++];\n        }\n        while (repeat-- > 0) {\n          points.push({ flags });\n        }\n      }\n      for (j = 0; j < numberOfPoints; j++) {\n        switch (points[j].flags & 0x12) {\n          case 0x00:\n            x += ((code[i] << 24) | (code[i + 1] << 16)) >> 16;\n            i += 2;\n            break;\n          case 0x02:\n            x -= code[i++];\n            break;\n          case 0x12:\n            x += code[i++];\n            break;\n        }\n        points[j].x = x;\n      }\n      for (j = 0; j < numberOfPoints; j++) {\n        switch (points[j].flags & 0x24) {\n          case 0x00:\n            y += ((code[i] << 24) | (code[i + 1] << 16)) >> 16;\n            i += 2;\n            break;\n          case 0x04:\n            y -= code[i++];\n            break;\n          case 0x24:\n            y += code[i++];\n            break;\n        }\n        points[j].y = y;\n      }\n\n      var startPoint = 0;\n      for (i = 0; i < numberOfContours; i++) {\n        var endPoint = endPtsOfContours[i];\n        // contours might have implicit points, which is located in the middle\n        // between two neighboring off-curve points\n        var contour = points.slice(startPoint, endPoint + 1);\n        if (contour[0].flags & 1) {\n          contour.push(contour[0]); // using start point at the contour end\n        } else if (contour[contour.length - 1].flags & 1) {\n          // first is off-curve point, trying to use one from the end\n          contour.unshift(contour[contour.length - 1]);\n        } else {\n          // start and end are off-curve points, creating implicit one\n          var p = {\n            flags: 1,\n            x: (contour[0].x + contour[contour.length - 1].x) / 2,\n            y: (contour[0].y + contour[contour.length - 1].y) / 2,\n          };\n          contour.unshift(p);\n          contour.push(p);\n        }\n        moveTo(contour[0].x, contour[0].y);\n        for (j = 1, jj = contour.length; j < jj; j++) {\n          if (contour[j].flags & 1) {\n            lineTo(contour[j].x, contour[j].y);\n          } else if (contour[j + 1].flags & 1) {\n            quadraticCurveTo(\n              contour[j].x,\n              contour[j].y,\n              contour[j + 1].x,\n              contour[j + 1].y\n            );\n            j++;\n          } else {\n            quadraticCurveTo(\n              contour[j].x,\n              contour[j].y,\n              (contour[j].x + contour[j + 1].x) / 2,\n              (contour[j].y + contour[j + 1].y) / 2\n            );\n          }\n        }\n        startPoint = endPoint + 1;\n      }\n    }\n  }\n\n  function compileCharString(charStringCode, cmds, font, glyphId) {\n    function moveTo(x, y) {\n      cmds.push({ cmd: \"moveTo\", args: [x, y] });\n    }\n    function lineTo(x, y) {\n      cmds.push({ cmd: \"lineTo\", args: [x, y] });\n    }\n    function bezierCurveTo(x1, y1, x2, y2, x, y) {\n      cmds.push({ cmd: \"bezierCurveTo\", args: [x1, y1, x2, y2, x, y] });\n    }\n\n    var stack = [];\n    var x = 0,\n      y = 0;\n    var stems = 0;\n\n    function parse(code) {\n      var i = 0;\n      while (i < code.length) {\n        var stackClean = false;\n        var v = code[i++];\n        var xa, xb, ya, yb, y1, y2, y3, n, subrCode;\n        switch (v) {\n          case 1: // hstem\n            stems += stack.length >> 1;\n            stackClean = true;\n            break;\n          case 3: // vstem\n            stems += stack.length >> 1;\n            stackClean = true;\n            break;\n          case 4: // vmoveto\n            y += stack.pop();\n            moveTo(x, y);\n            stackClean = true;\n            break;\n          case 5: // rlineto\n            while (stack.length > 0) {\n              x += stack.shift();\n              y += stack.shift();\n              lineTo(x, y);\n            }\n            break;\n          case 6: // hlineto\n            while (stack.length > 0) {\n              x += stack.shift();\n              lineTo(x, y);\n              if (stack.length === 0) {\n                break;\n              }\n              y += stack.shift();\n              lineTo(x, y);\n            }\n            break;\n          case 7: // vlineto\n            while (stack.length > 0) {\n              y += stack.shift();\n              lineTo(x, y);\n              if (stack.length === 0) {\n                break;\n              }\n              x += stack.shift();\n              lineTo(x, y);\n            }\n            break;\n          case 8: // rrcurveto\n            while (stack.length > 0) {\n              xa = x + stack.shift();\n              ya = y + stack.shift();\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb + stack.shift();\n              y = yb + stack.shift();\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n            }\n            break;\n          case 10: // callsubr\n            n = stack.pop();\n            subrCode = null;\n            if (font.isCFFCIDFont) {\n              const fdIndex = font.fdSelect.getFDIndex(glyphId);\n              if (fdIndex >= 0 && fdIndex < font.fdArray.length) {\n                const fontDict = font.fdArray[fdIndex];\n                let subrs;\n                if (fontDict.privateDict && fontDict.privateDict.subrsIndex) {\n                  subrs = fontDict.privateDict.subrsIndex.objects;\n                }\n                if (subrs) {\n                  // Add subroutine bias.\n                  n += getSubroutineBias(subrs);\n                  subrCode = subrs[n];\n                }\n              } else {\n                warn(\"Invalid fd index for glyph index.\");\n              }\n            } else {\n              subrCode = font.subrs[n + font.subrsBias];\n            }\n            if (subrCode) {\n              parse(subrCode);\n            }\n            break;\n          case 11: // return\n            return;\n          case 12:\n            v = code[i++];\n            switch (v) {\n              case 34: // flex\n                xa = x + stack.shift();\n                xb = xa + stack.shift();\n                y1 = y + stack.shift();\n                x = xb + stack.shift();\n                bezierCurveTo(xa, y, xb, y1, x, y1);\n                xa = x + stack.shift();\n                xb = xa + stack.shift();\n                x = xb + stack.shift();\n                bezierCurveTo(xa, y1, xb, y, x, y);\n                break;\n              case 35: // flex\n                xa = x + stack.shift();\n                ya = y + stack.shift();\n                xb = xa + stack.shift();\n                yb = ya + stack.shift();\n                x = xb + stack.shift();\n                y = yb + stack.shift();\n                bezierCurveTo(xa, ya, xb, yb, x, y);\n                xa = x + stack.shift();\n                ya = y + stack.shift();\n                xb = xa + stack.shift();\n                yb = ya + stack.shift();\n                x = xb + stack.shift();\n                y = yb + stack.shift();\n                bezierCurveTo(xa, ya, xb, yb, x, y);\n                stack.pop(); // fd\n                break;\n              case 36: // hflex1\n                xa = x + stack.shift();\n                y1 = y + stack.shift();\n                xb = xa + stack.shift();\n                y2 = y1 + stack.shift();\n                x = xb + stack.shift();\n                bezierCurveTo(xa, y1, xb, y2, x, y2);\n                xa = x + stack.shift();\n                xb = xa + stack.shift();\n                y3 = y2 + stack.shift();\n                x = xb + stack.shift();\n                bezierCurveTo(xa, y2, xb, y3, x, y);\n                break;\n              case 37: // flex1\n                var x0 = x,\n                  y0 = y;\n                xa = x + stack.shift();\n                ya = y + stack.shift();\n                xb = xa + stack.shift();\n                yb = ya + stack.shift();\n                x = xb + stack.shift();\n                y = yb + stack.shift();\n                bezierCurveTo(xa, ya, xb, yb, x, y);\n                xa = x + stack.shift();\n                ya = y + stack.shift();\n                xb = xa + stack.shift();\n                yb = ya + stack.shift();\n                x = xb;\n                y = yb;\n                if (Math.abs(x - x0) > Math.abs(y - y0)) {\n                  x += stack.shift();\n                } else {\n                  y += stack.shift();\n                }\n                bezierCurveTo(xa, ya, xb, yb, x, y);\n                break;\n              default:\n                throw new FormatError(`unknown operator: 12 ${v}`);\n            }\n            break;\n          case 14: // endchar\n            if (stack.length >= 4) {\n              var achar = stack.pop();\n              var bchar = stack.pop();\n              y = stack.pop();\n              x = stack.pop();\n              cmds.push({ cmd: \"save\" });\n              cmds.push({ cmd: \"translate\", args: [x, y] });\n              var cmap = lookupCmap(\n                font.cmap,\n                String.fromCharCode(font.glyphNameMap[StandardEncoding[achar]])\n              );\n              compileCharString(\n                font.glyphs[cmap.glyphId],\n                cmds,\n                font,\n                cmap.glyphId\n              );\n              cmds.push({ cmd: \"restore\" });\n\n              cmap = lookupCmap(\n                font.cmap,\n                String.fromCharCode(font.glyphNameMap[StandardEncoding[bchar]])\n              );\n              compileCharString(\n                font.glyphs[cmap.glyphId],\n                cmds,\n                font,\n                cmap.glyphId\n              );\n            }\n            return;\n          case 18: // hstemhm\n            stems += stack.length >> 1;\n            stackClean = true;\n            break;\n          case 19: // hintmask\n            stems += stack.length >> 1;\n            i += (stems + 7) >> 3;\n            stackClean = true;\n            break;\n          case 20: // cntrmask\n            stems += stack.length >> 1;\n            i += (stems + 7) >> 3;\n            stackClean = true;\n            break;\n          case 21: // rmoveto\n            y += stack.pop();\n            x += stack.pop();\n            moveTo(x, y);\n            stackClean = true;\n            break;\n          case 22: // hmoveto\n            x += stack.pop();\n            moveTo(x, y);\n            stackClean = true;\n            break;\n          case 23: // vstemhm\n            stems += stack.length >> 1;\n            stackClean = true;\n            break;\n          case 24: // rcurveline\n            while (stack.length > 2) {\n              xa = x + stack.shift();\n              ya = y + stack.shift();\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb + stack.shift();\n              y = yb + stack.shift();\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n            }\n            x += stack.shift();\n            y += stack.shift();\n            lineTo(x, y);\n            break;\n          case 25: // rlinecurve\n            while (stack.length > 6) {\n              x += stack.shift();\n              y += stack.shift();\n              lineTo(x, y);\n            }\n            xa = x + stack.shift();\n            ya = y + stack.shift();\n            xb = xa + stack.shift();\n            yb = ya + stack.shift();\n            x = xb + stack.shift();\n            y = yb + stack.shift();\n            bezierCurveTo(xa, ya, xb, yb, x, y);\n            break;\n          case 26: // vvcurveto\n            if (stack.length % 2) {\n              x += stack.shift();\n            }\n            while (stack.length > 0) {\n              xa = x;\n              ya = y + stack.shift();\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb;\n              y = yb + stack.shift();\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n            }\n            break;\n          case 27: // hhcurveto\n            if (stack.length % 2) {\n              y += stack.shift();\n            }\n            while (stack.length > 0) {\n              xa = x + stack.shift();\n              ya = y;\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb + stack.shift();\n              y = yb;\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n            }\n            break;\n          case 28:\n            stack.push(((code[i] << 24) | (code[i + 1] << 16)) >> 16);\n            i += 2;\n            break;\n          case 29: // callgsubr\n            n = stack.pop() + font.gsubrsBias;\n            subrCode = font.gsubrs[n];\n            if (subrCode) {\n              parse(subrCode);\n            }\n            break;\n          case 30: // vhcurveto\n            while (stack.length > 0) {\n              xa = x;\n              ya = y + stack.shift();\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb + stack.shift();\n              y = yb + (stack.length === 1 ? stack.shift() : 0);\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n              if (stack.length === 0) {\n                break;\n              }\n\n              xa = x + stack.shift();\n              ya = y;\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              y = yb + stack.shift();\n              x = xb + (stack.length === 1 ? stack.shift() : 0);\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n            }\n            break;\n          case 31: // hvcurveto\n            while (stack.length > 0) {\n              xa = x + stack.shift();\n              ya = y;\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              y = yb + stack.shift();\n              x = xb + (stack.length === 1 ? stack.shift() : 0);\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n              if (stack.length === 0) {\n                break;\n              }\n\n              xa = x;\n              ya = y + stack.shift();\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb + stack.shift();\n              y = yb + (stack.length === 1 ? stack.shift() : 0);\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n            }\n            break;\n          default:\n            if (v < 32) {\n              throw new FormatError(`unknown operator: ${v}`);\n            }\n            if (v < 247) {\n              stack.push(v - 139);\n            } else if (v < 251) {\n              stack.push((v - 247) * 256 + code[i++] + 108);\n            } else if (v < 255) {\n              stack.push(-(v - 251) * 256 - code[i++] - 108);\n            } else {\n              stack.push(\n                ((code[i] << 24) |\n                  (code[i + 1] << 16) |\n                  (code[i + 2] << 8) |\n                  code[i + 3]) /\n                  65536\n              );\n              i += 4;\n            }\n            break;\n        }\n        if (stackClean) {\n          stack.length = 0;\n        }\n      }\n    }\n    parse(charStringCode);\n  }\n\n  const NOOP = [];\n\n  class CompiledFont {\n    constructor(fontMatrix) {\n      if (this.constructor === CompiledFont) {\n        unreachable(\"Cannot initialize CompiledFont.\");\n      }\n      this.fontMatrix = fontMatrix;\n\n      this.compiledGlyphs = Object.create(null);\n      this.compiledCharCodeToGlyphId = Object.create(null);\n    }\n\n    getPathJs(unicode) {\n      const cmap = lookupCmap(this.cmap, unicode);\n      let fn = this.compiledGlyphs[cmap.glyphId];\n      if (!fn) {\n        fn = this.compileGlyph(this.glyphs[cmap.glyphId], cmap.glyphId);\n        this.compiledGlyphs[cmap.glyphId] = fn;\n      }\n      if (this.compiledCharCodeToGlyphId[cmap.charCode] === undefined) {\n        this.compiledCharCodeToGlyphId[cmap.charCode] = cmap.glyphId;\n      }\n      return fn;\n    }\n\n    compileGlyph(code, glyphId) {\n      if (!code || code.length === 0 || code[0] === 14) {\n        return NOOP;\n      }\n\n      let fontMatrix = this.fontMatrix;\n      if (this.isCFFCIDFont) {\n        // Top DICT's FontMatrix can be ignored because CFFCompiler always\n        // removes it and copies to FDArray DICTs.\n        const fdIndex = this.fdSelect.getFDIndex(glyphId);\n        if (fdIndex >= 0 && fdIndex < this.fdArray.length) {\n          const fontDict = this.fdArray[fdIndex];\n          fontMatrix = fontDict.getByName(\"FontMatrix\") || FONT_IDENTITY_MATRIX;\n        } else {\n          warn(\"Invalid fd index for glyph index.\");\n        }\n      }\n\n      const cmds = [];\n      cmds.push({ cmd: \"save\" });\n      cmds.push({ cmd: \"transform\", args: fontMatrix.slice() });\n      cmds.push({ cmd: \"scale\", args: [\"size\", \"-size\"] });\n\n      this.compileGlyphImpl(code, cmds, glyphId);\n\n      cmds.push({ cmd: \"restore\" });\n\n      return cmds;\n    }\n\n    compileGlyphImpl() {\n      unreachable(\"Children classes should implement this.\");\n    }\n\n    hasBuiltPath(unicode) {\n      const cmap = lookupCmap(this.cmap, unicode);\n      return (\n        this.compiledGlyphs[cmap.glyphId] !== undefined &&\n        this.compiledCharCodeToGlyphId[cmap.charCode] !== undefined\n      );\n    }\n  }\n\n  class TrueTypeCompiled extends CompiledFont {\n    constructor(glyphs, cmap, fontMatrix) {\n      super(fontMatrix || [0.000488, 0, 0, 0.000488, 0, 0]);\n\n      this.glyphs = glyphs;\n      this.cmap = cmap;\n    }\n\n    compileGlyphImpl(code, cmds) {\n      compileGlyf(code, cmds, this);\n    }\n  }\n\n  class Type2Compiled extends CompiledFont {\n    constructor(cffInfo, cmap, fontMatrix, glyphNameMap) {\n      super(fontMatrix || [0.001, 0, 0, 0.001, 0, 0]);\n\n      this.glyphs = cffInfo.glyphs;\n      this.gsubrs = cffInfo.gsubrs || [];\n      this.subrs = cffInfo.subrs || [];\n      this.cmap = cmap;\n      this.glyphNameMap = glyphNameMap || getGlyphsUnicode();\n\n      this.gsubrsBias = getSubroutineBias(this.gsubrs);\n      this.subrsBias = getSubroutineBias(this.subrs);\n\n      this.isCFFCIDFont = cffInfo.isCFFCIDFont;\n      this.fdSelect = cffInfo.fdSelect;\n      this.fdArray = cffInfo.fdArray;\n    }\n\n    compileGlyphImpl(code, cmds, glyphId) {\n      compileCharString(code, cmds, this, glyphId);\n    }\n  }\n\n  return {\n    create: function FontRendererFactory_create(font, seacAnalysisEnabled) {\n      var data = new Uint8Array(font.data);\n      var cmap, glyf, loca, cff, indexToLocFormat, unitsPerEm;\n      var numTables = getUshort(data, 4);\n      for (var i = 0, p = 12; i < numTables; i++, p += 16) {\n        var tag = bytesToString(data.subarray(p, p + 4));\n        var offset = getLong(data, p + 8);\n        var length = getLong(data, p + 12);\n        switch (tag) {\n          case \"cmap\":\n            cmap = parseCmap(data, offset, offset + length);\n            break;\n          case \"glyf\":\n            glyf = data.subarray(offset, offset + length);\n            break;\n          case \"loca\":\n            loca = data.subarray(offset, offset + length);\n            break;\n          case \"head\":\n            unitsPerEm = getUshort(data, offset + 18);\n            indexToLocFormat = getUshort(data, offset + 50);\n            break;\n          case \"CFF \":\n            cff = parseCff(data, offset, offset + length, seacAnalysisEnabled);\n            break;\n        }\n      }\n\n      if (glyf) {\n        var fontMatrix = !unitsPerEm\n          ? font.fontMatrix\n          : [1 / unitsPerEm, 0, 0, 1 / unitsPerEm, 0, 0];\n        return new TrueTypeCompiled(\n          parseGlyfTable(glyf, loca, indexToLocFormat),\n          cmap,\n          fontMatrix\n        );\n      }\n      return new Type2Compiled(cff, cmap, font.fontMatrix, font.glyphNameMap);\n    },\n  };\n})();\n\nexport { FontRendererFactory };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getEncoding } from \"./encodings.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\nimport { warn } from \"../shared/util.js\";\n\n// Hinting is currently disabled due to unknown problems on windows\n// in tracemonkey and various other pdfs with type1 fonts.\nvar HINTING_ENABLED = false;\n\n/*\n * CharStrings are encoded following the the CharString Encoding sequence\n * describe in Chapter 6 of the \"Adobe Type1 Font Format\" specification.\n * The value in a byte indicates a command, a number, or subsequent bytes\n * that are to be interpreted in a special way.\n *\n * CharString Number Encoding:\n *  A CharString byte containing the values from 32 through 255 inclusive\n *  indicate an integer. These values are decoded in four ranges.\n *\n * 1. A CharString byte containing a value, v, between 32 and 246 inclusive,\n * indicate the integer v - 139. Thus, the integer values from -107 through\n * 107 inclusive may be encoded in single byte.\n *\n * 2. A CharString byte containing a value, v, between 247 and 250 inclusive,\n * indicates an integer involving the next byte, w, according to the formula:\n * [(v - 247) x 256] + w + 108\n *\n * 3. A CharString byte containing a value, v, between 251 and 254 inclusive,\n * indicates an integer involving the next byte, w, according to the formula:\n * -[(v - 251) * 256] - w - 108\n *\n * 4. A CharString containing the value 255 indicates that the next 4 bytes\n * are a two complement signed integer. The first of these bytes contains the\n * highest order bits, the second byte contains the next higher order bits\n * and the fourth byte contain the lowest order bits.\n *\n *\n * CharString Command Encoding:\n *  CharStrings commands are encoded in 1 or 2 bytes.\n *\n *  Single byte commands are encoded in 1 byte that contains a value between\n *  0 and 31 inclusive.\n *  If a command byte contains the value 12, then the value in the next byte\n *  indicates a command. This \"escape\" mechanism allows many extra commands\n * to be encoded and this encoding technique helps to minimize the length of\n * the charStrings.\n */\nvar Type1CharString = (function Type1CharStringClosure() {\n  var COMMAND_MAP = {\n    hstem: [1],\n    vstem: [3],\n    vmoveto: [4],\n    rlineto: [5],\n    hlineto: [6],\n    vlineto: [7],\n    rrcurveto: [8],\n    callsubr: [10],\n    flex: [12, 35],\n    drop: [12, 18],\n    endchar: [14],\n    rmoveto: [21],\n    hmoveto: [22],\n    vhcurveto: [30],\n    hvcurveto: [31],\n  };\n\n  // eslint-disable-next-line no-shadow\n  function Type1CharString() {\n    this.width = 0;\n    this.lsb = 0;\n    this.flexing = false;\n    this.output = [];\n    this.stack = [];\n  }\n\n  Type1CharString.prototype = {\n    convert: function Type1CharString_convert(\n      encoded,\n      subrs,\n      seacAnalysisEnabled\n    ) {\n      var count = encoded.length;\n      var error = false;\n      var wx, sbx, subrNumber;\n      for (var i = 0; i < count; i++) {\n        var value = encoded[i];\n        if (value < 32) {\n          if (value === 12) {\n            value = (value << 8) + encoded[++i];\n          }\n          switch (value) {\n            case 1: // hstem\n              if (!HINTING_ENABLED) {\n                this.stack = [];\n                break;\n              }\n              error = this.executeCommand(2, COMMAND_MAP.hstem);\n              break;\n            case 3: // vstem\n              if (!HINTING_ENABLED) {\n                this.stack = [];\n                break;\n              }\n              error = this.executeCommand(2, COMMAND_MAP.vstem);\n              break;\n            case 4: // vmoveto\n              if (this.flexing) {\n                if (this.stack.length < 1) {\n                  error = true;\n                  break;\n                }\n                // Add the dx for flex and but also swap the values so they are\n                // the right order.\n                var dy = this.stack.pop();\n                this.stack.push(0, dy);\n                break;\n              }\n              error = this.executeCommand(1, COMMAND_MAP.vmoveto);\n              break;\n            case 5: // rlineto\n              error = this.executeCommand(2, COMMAND_MAP.rlineto);\n              break;\n            case 6: // hlineto\n              error = this.executeCommand(1, COMMAND_MAP.hlineto);\n              break;\n            case 7: // vlineto\n              error = this.executeCommand(1, COMMAND_MAP.vlineto);\n              break;\n            case 8: // rrcurveto\n              error = this.executeCommand(6, COMMAND_MAP.rrcurveto);\n              break;\n            case 9: // closepath\n              // closepath is a Type1 command that does not take argument and is\n              // useless in Type2 and it can simply be ignored.\n              this.stack = [];\n              break;\n            case 10: // callsubr\n              if (this.stack.length < 1) {\n                error = true;\n                break;\n              }\n              subrNumber = this.stack.pop();\n              if (!subrs[subrNumber]) {\n                error = true;\n                break;\n              }\n              error = this.convert(\n                subrs[subrNumber],\n                subrs,\n                seacAnalysisEnabled\n              );\n              break;\n            case 11: // return\n              return error;\n            case 13: // hsbw\n              if (this.stack.length < 2) {\n                error = true;\n                break;\n              }\n              // To convert to type2 we have to move the width value to the\n              // first part of the charstring and then use hmoveto with lsb.\n              wx = this.stack.pop();\n              sbx = this.stack.pop();\n              this.lsb = sbx;\n              this.width = wx;\n              this.stack.push(wx, sbx);\n              error = this.executeCommand(2, COMMAND_MAP.hmoveto);\n              break;\n            case 14: // endchar\n              this.output.push(COMMAND_MAP.endchar[0]);\n              break;\n            case 21: // rmoveto\n              if (this.flexing) {\n                break;\n              }\n              error = this.executeCommand(2, COMMAND_MAP.rmoveto);\n              break;\n            case 22: // hmoveto\n              if (this.flexing) {\n                // Add the dy for flex.\n                this.stack.push(0);\n                break;\n              }\n              error = this.executeCommand(1, COMMAND_MAP.hmoveto);\n              break;\n            case 30: // vhcurveto\n              error = this.executeCommand(4, COMMAND_MAP.vhcurveto);\n              break;\n            case 31: // hvcurveto\n              error = this.executeCommand(4, COMMAND_MAP.hvcurveto);\n              break;\n            case (12 << 8) + 0: // dotsection\n              // dotsection is a Type1 command to specify some hinting feature\n              // for dots that do not take a parameter and it can safely be\n              // ignored for Type2.\n              this.stack = [];\n              break;\n            case (12 << 8) + 1: // vstem3\n              if (!HINTING_ENABLED) {\n                this.stack = [];\n                break;\n              }\n              // [vh]stem3 are Type1 only and Type2 supports [vh]stem with\n              // multiple parameters, so instead of returning [vh]stem3 take a\n              // shortcut and return [vhstem] instead.\n              error = this.executeCommand(2, COMMAND_MAP.vstem);\n              break;\n            case (12 << 8) + 2: // hstem3\n              if (!HINTING_ENABLED) {\n                this.stack = [];\n                break;\n              }\n              // See vstem3.\n              error = this.executeCommand(2, COMMAND_MAP.hstem);\n              break;\n            case (12 << 8) + 6: // seac\n              // seac is like type 2's special endchar but it doesn't use the\n              // first argument asb, so remove it.\n              if (seacAnalysisEnabled) {\n                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              break;\n            case (12 << 8) + 7: // sbw\n              if (this.stack.length < 4) {\n                error = true;\n                break;\n              }\n              // To convert to type2 we have to move the width value to the\n              // first part of the charstring and then use rmoveto with\n              // (dx, dy). The height argument will not be used for vmtx and\n              // vhea tables reconstruction -- ignoring it.\n              this.stack.pop(); // wy\n              wx = this.stack.pop();\n              var sby = this.stack.pop();\n              sbx = this.stack.pop();\n              this.lsb = sbx;\n              this.width = wx;\n              this.stack.push(wx, sbx, sby);\n              error = this.executeCommand(3, COMMAND_MAP.rmoveto);\n              break;\n            case (12 << 8) + 12: // div\n              if (this.stack.length < 2) {\n                error = true;\n                break;\n              }\n              var num2 = this.stack.pop();\n              var num1 = this.stack.pop();\n              this.stack.push(num1 / num2);\n              break;\n            case (12 << 8) + 16: // callothersubr\n              if (this.stack.length < 2) {\n                error = true;\n                break;\n              }\n              subrNumber = this.stack.pop();\n              var numArgs = this.stack.pop();\n              if (subrNumber === 0 && numArgs === 3) {\n                var flexArgs = this.stack.splice(this.stack.length - 17, 17);\n                this.stack.push(\n                  flexArgs[2] + flexArgs[0], // bcp1x + rpx\n                  flexArgs[3] + flexArgs[1], // bcp1y + rpy\n                  flexArgs[4], // bcp2x\n                  flexArgs[5], // bcp2y\n                  flexArgs[6], // p2x\n                  flexArgs[7], // p2y\n                  flexArgs[8], // bcp3x\n                  flexArgs[9], // bcp3y\n                  flexArgs[10], // bcp4x\n                  flexArgs[11], // bcp4y\n                  flexArgs[12], // p3x\n                  flexArgs[13], // p3y\n                  flexArgs[14] // flexDepth\n                  // 15 = finalx unused by flex\n                  // 16 = finaly unused by flex\n                );\n                error = this.executeCommand(13, COMMAND_MAP.flex, true);\n                this.flexing = false;\n                this.stack.push(flexArgs[15], flexArgs[16]);\n              } else if (subrNumber === 1 && numArgs === 0) {\n                this.flexing = true;\n              }\n              break;\n            case (12 << 8) + 17: // pop\n              // Ignore this since it is only used with othersubr.\n              break;\n            case (12 << 8) + 33: // setcurrentpoint\n              // Ignore for now.\n              this.stack = [];\n              break;\n            default:\n              warn('Unknown type 1 charstring command of \"' + value + '\"');\n              break;\n          }\n          if (error) {\n            break;\n          }\n          continue;\n        } else if (value <= 246) {\n          value = value - 139;\n        } else if (value <= 250) {\n          value = (value - 247) * 256 + encoded[++i] + 108;\n        } else if (value <= 254) {\n          value = -((value - 251) * 256) - encoded[++i] - 108;\n        } else {\n          value =\n            ((encoded[++i] & 0xff) << 24) |\n            ((encoded[++i] & 0xff) << 16) |\n            ((encoded[++i] & 0xff) << 8) |\n            ((encoded[++i] & 0xff) << 0);\n        }\n        this.stack.push(value);\n      }\n      return error;\n    },\n\n    executeCommand(howManyArgs, command, keepStack) {\n      var stackLength = this.stack.length;\n      if (howManyArgs > stackLength) {\n        return true;\n      }\n      var start = stackLength - howManyArgs;\n      for (var i = start; i < stackLength; i++) {\n        var value = this.stack[i];\n        if (Number.isInteger(value)) {\n          this.output.push(28, (value >> 8) & 0xff, value & 0xff);\n        } else {\n          // fixed point\n          value = (65536 * value) | 0;\n          this.output.push(\n            255,\n            (value >> 24) & 0xff,\n            (value >> 16) & 0xff,\n            (value >> 8) & 0xff,\n            value & 0xff\n          );\n        }\n      }\n      this.output.push.apply(this.output, command);\n      if (keepStack) {\n        this.stack.splice(start, howManyArgs);\n      } else {\n        this.stack.length = 0;\n      }\n      return false;\n    },\n  };\n\n  return Type1CharString;\n})();\n\n/*\n * Type1Parser encapsulate the needed code for parsing a Type1 font\n * program. Some of its logic depends on the Type2 charstrings\n * structure.\n * Note: this doesn't really parse the font since that would require evaluation\n * of PostScript, but it is possible in most cases to extract what we need\n * without a full parse.\n */\nvar Type1Parser = (function Type1ParserClosure() {\n  /*\n   * Decrypt a Sequence of Ciphertext Bytes to Produce the Original Sequence\n   * of Plaintext Bytes. The function took a key as a parameter which can be\n   * for decrypting the eexec block of for decoding charStrings.\n   */\n  var EEXEC_ENCRYPT_KEY = 55665;\n  var CHAR_STRS_ENCRYPT_KEY = 4330;\n\n  function isHexDigit(code) {\n    return (\n      (code >= 48 && code <= 57) || // '0'-'9'\n      (code >= 65 && code <= 70) || // 'A'-'F'\n      (code >= 97 && code <= 102) // 'a'-'f'\n    );\n  }\n\n  function decrypt(data, key, discardNumber) {\n    if (discardNumber >= data.length) {\n      return new Uint8Array(0);\n    }\n    var r = key | 0,\n      c1 = 52845,\n      c2 = 22719,\n      i,\n      j;\n    for (i = 0; i < discardNumber; i++) {\n      r = ((data[i] + r) * c1 + c2) & ((1 << 16) - 1);\n    }\n    var count = data.length - discardNumber;\n    var decrypted = new Uint8Array(count);\n    for (i = discardNumber, j = 0; j < count; i++, j++) {\n      var value = data[i];\n      decrypted[j] = value ^ (r >> 8);\n      r = ((value + r) * c1 + c2) & ((1 << 16) - 1);\n    }\n    return decrypted;\n  }\n\n  function decryptAscii(data, key, discardNumber) {\n    var r = key | 0,\n      c1 = 52845,\n      c2 = 22719;\n    var count = data.length,\n      maybeLength = count >>> 1;\n    var decrypted = new Uint8Array(maybeLength);\n    var i, j;\n    for (i = 0, j = 0; i < count; i++) {\n      var digit1 = data[i];\n      if (!isHexDigit(digit1)) {\n        continue;\n      }\n      i++;\n      var digit2;\n      while (i < count && !isHexDigit((digit2 = data[i]))) {\n        i++;\n      }\n      if (i < count) {\n        var value = parseInt(String.fromCharCode(digit1, digit2), 16);\n        decrypted[j++] = value ^ (r >> 8);\n        r = ((value + r) * c1 + c2) & ((1 << 16) - 1);\n      }\n    }\n    return decrypted.slice(discardNumber, j);\n  }\n\n  function isSpecial(c) {\n    return (\n      c === /* '/' = */ 0x2f ||\n      c === /* '[' = */ 0x5b ||\n      c === /* ']' = */ 0x5d ||\n      c === /* '{' = */ 0x7b ||\n      c === /* '}' = */ 0x7d ||\n      c === /* '(' = */ 0x28 ||\n      c === /* ')' = */ 0x29\n    );\n  }\n\n  // eslint-disable-next-line no-shadow\n  function Type1Parser(stream, encrypted, seacAnalysisEnabled) {\n    if (encrypted) {\n      var data = stream.getBytes();\n      var isBinary = !(\n        (isHexDigit(data[0]) || isWhiteSpace(data[0])) &&\n        isHexDigit(data[1]) &&\n        isHexDigit(data[2]) &&\n        isHexDigit(data[3]) &&\n        isHexDigit(data[4]) &&\n        isHexDigit(data[5]) &&\n        isHexDigit(data[6]) &&\n        isHexDigit(data[7])\n      );\n      stream = new Stream(\n        isBinary\n          ? decrypt(data, EEXEC_ENCRYPT_KEY, 4)\n          : decryptAscii(data, EEXEC_ENCRYPT_KEY, 4)\n      );\n    }\n    this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n\n    this.stream = stream;\n    this.nextChar();\n  }\n\n  Type1Parser.prototype = {\n    readNumberArray: function Type1Parser_readNumberArray() {\n      this.getToken(); // read '[' or '{' (arrays can start with either)\n      var array = [];\n      while (true) {\n        var token = this.getToken();\n        if (token === null || token === \"]\" || token === \"}\") {\n          break;\n        }\n        array.push(parseFloat(token || 0));\n      }\n      return array;\n    },\n\n    readNumber: function Type1Parser_readNumber() {\n      var token = this.getToken();\n      return parseFloat(token || 0);\n    },\n\n    readInt: function Type1Parser_readInt() {\n      // Use '| 0' to prevent setting a double into length such as the double\n      // does not flow into the loop variable.\n      var token = this.getToken();\n      return parseInt(token || 0, 10) | 0;\n    },\n\n    readBoolean: function Type1Parser_readBoolean() {\n      var token = this.getToken();\n\n      // Use 1 and 0 since that's what type2 charstrings use.\n      return token === \"true\" ? 1 : 0;\n    },\n\n    nextChar: function Type1_nextChar() {\n      return (this.currentChar = this.stream.getByte());\n    },\n\n    getToken: function Type1Parser_getToken() {\n      // Eat whitespace and comments.\n      var comment = false;\n      var ch = this.currentChar;\n      while (true) {\n        if (ch === -1) {\n          return null;\n        }\n\n        if (comment) {\n          if (ch === 0x0a || ch === 0x0d) {\n            comment = false;\n          }\n        } else if (ch === /* '%' = */ 0x25) {\n          comment = true;\n        } else if (!isWhiteSpace(ch)) {\n          break;\n        }\n        ch = this.nextChar();\n      }\n      if (isSpecial(ch)) {\n        this.nextChar();\n        return String.fromCharCode(ch);\n      }\n      var token = \"\";\n      do {\n        token += String.fromCharCode(ch);\n        ch = this.nextChar();\n      } while (ch >= 0 && !isWhiteSpace(ch) && !isSpecial(ch));\n      return token;\n    },\n\n    readCharStrings: function Type1Parser_readCharStrings(bytes, lenIV) {\n      if (lenIV === -1) {\n        // This isn't in the spec, but Adobe's tx program handles -1\n        // as plain text.\n        return bytes;\n      }\n      return decrypt(bytes, CHAR_STRS_ENCRYPT_KEY, lenIV);\n    },\n\n    /*\n     * Returns an object containing a Subrs array and a CharStrings\n     * array extracted from and eexec encrypted block of data\n     */\n    extractFontProgram: function Type1Parser_extractFontProgram(properties) {\n      var stream = this.stream;\n\n      var subrs = [],\n        charstrings = [];\n      var privateData = Object.create(null);\n      privateData.lenIV = 4;\n      var program = {\n        subrs: [],\n        charstrings: [],\n        properties: {\n          privateData,\n        },\n      };\n      var token, length, data, lenIV, encoded;\n      while ((token = this.getToken()) !== null) {\n        if (token !== \"/\") {\n          continue;\n        }\n        token = this.getToken();\n        switch (token) {\n          case \"CharStrings\":\n            // The number immediately following CharStrings must be greater or\n            // equal to the number of CharStrings.\n            this.getToken();\n            this.getToken(); // read in 'dict'\n            this.getToken(); // read in 'dup'\n            this.getToken(); // read in 'begin'\n            while (true) {\n              token = this.getToken();\n              if (token === null || token === \"end\") {\n                break;\n              }\n\n              if (token !== \"/\") {\n                continue;\n              }\n              var glyph = this.getToken();\n              length = this.readInt();\n              this.getToken(); // read in 'RD' or '-|'\n              data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);\n              lenIV = program.properties.privateData.lenIV;\n              encoded = this.readCharStrings(data, lenIV);\n              this.nextChar();\n              token = this.getToken(); // read in 'ND' or '|-'\n              if (token === \"noaccess\") {\n                this.getToken(); // read in 'def'\n              }\n              charstrings.push({\n                glyph,\n                encoded,\n              });\n            }\n            break;\n          case \"Subrs\":\n            this.readInt(); // num\n            this.getToken(); // read in 'array'\n            while (this.getToken() === \"dup\") {\n              const index = this.readInt();\n              length = this.readInt();\n              this.getToken(); // read in 'RD' or '-|'\n              data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);\n              lenIV = program.properties.privateData.lenIV;\n              encoded = this.readCharStrings(data, lenIV);\n              this.nextChar();\n              token = this.getToken(); // read in 'NP' or '|'\n              if (token === \"noaccess\") {\n                this.getToken(); // read in 'put'\n              }\n              subrs[index] = encoded;\n            }\n            break;\n          case \"BlueValues\":\n          case \"OtherBlues\":\n          case \"FamilyBlues\":\n          case \"FamilyOtherBlues\":\n            var blueArray = this.readNumberArray();\n            // *Blue* values may contain invalid data: disables reading of\n            // those values when hinting is disabled.\n            if (\n              blueArray.length > 0 &&\n              blueArray.length % 2 === 0 &&\n              HINTING_ENABLED\n            ) {\n              program.properties.privateData[token] = blueArray;\n            }\n            break;\n          case \"StemSnapH\":\n          case \"StemSnapV\":\n            program.properties.privateData[token] = this.readNumberArray();\n            break;\n          case \"StdHW\":\n          case \"StdVW\":\n            program.properties.privateData[token] = this.readNumberArray()[0];\n            break;\n          case \"BlueShift\":\n          case \"lenIV\":\n          case \"BlueFuzz\":\n          case \"BlueScale\":\n          case \"LanguageGroup\":\n          case \"ExpansionFactor\":\n            program.properties.privateData[token] = this.readNumber();\n            break;\n          case \"ForceBold\":\n            program.properties.privateData[token] = this.readBoolean();\n            break;\n        }\n      }\n\n      for (var i = 0; i < charstrings.length; i++) {\n        glyph = charstrings[i].glyph;\n        encoded = charstrings[i].encoded;\n        var charString = new Type1CharString();\n        var error = charString.convert(\n          encoded,\n          subrs,\n          this.seacAnalysisEnabled\n        );\n        var output = charString.output;\n        if (error) {\n          // It seems when FreeType encounters an error while evaluating a glyph\n          // that it completely ignores the glyph so we'll mimic that behaviour\n          // here and put an endchar to make the validator happy.\n          output = [14];\n        }\n        const charStringObject = {\n          glyphName: glyph,\n          charstring: output,\n          width: charString.width,\n          lsb: charString.lsb,\n          seac: charString.seac,\n        };\n        if (glyph === \".notdef\") {\n          // Make sure .notdef is at index zero (issue #11477).\n          program.charstrings.unshift(charStringObject);\n        } else {\n          program.charstrings.push(charStringObject);\n        }\n\n        // Attempt to replace missing widths, from the font dictionary /Widths\n        // entry, with ones from the font data (fixes issue11150_reduced.pdf).\n        if (properties.builtInEncoding) {\n          const index = properties.builtInEncoding.indexOf(glyph);\n          if (\n            index > -1 &&\n            properties.widths[index] === undefined &&\n            index >= properties.firstChar &&\n            index <= properties.lastChar\n          ) {\n            properties.widths[index] = charString.width;\n          }\n        }\n      }\n\n      return program;\n    },\n\n    extractFontHeader: function Type1Parser_extractFontHeader(properties) {\n      var token;\n      while ((token = this.getToken()) !== null) {\n        if (token !== \"/\") {\n          continue;\n        }\n        token = this.getToken();\n        switch (token) {\n          case \"FontMatrix\":\n            var matrix = this.readNumberArray();\n            properties.fontMatrix = matrix;\n            break;\n          case \"Encoding\":\n            var encodingArg = this.getToken();\n            var encoding;\n            if (!/^\\d+$/.test(encodingArg)) {\n              // encoding name is specified\n              encoding = getEncoding(encodingArg);\n            } else {\n              encoding = [];\n              var size = parseInt(encodingArg, 10) | 0;\n              this.getToken(); // read in 'array'\n\n              for (var j = 0; j < size; j++) {\n                token = this.getToken();\n                // skipping till first dup or def (e.g. ignoring for statement)\n                while (token !== \"dup\" && token !== \"def\") {\n                  token = this.getToken();\n                  if (token === null) {\n                    return; // invalid header\n                  }\n                }\n                if (token === \"def\") {\n                  break; // read all array data\n                }\n                var index = this.readInt();\n                this.getToken(); // read in '/'\n                var glyph = this.getToken();\n                encoding[index] = glyph;\n                this.getToken(); // read the in 'put'\n              }\n            }\n            properties.builtInEncoding = encoding;\n            break;\n          case \"FontBBox\":\n            var fontBBox = this.readNumberArray();\n            // adjusting ascent/descent\n            properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n            properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n            properties.ascentScaled = true;\n            break;\n        }\n      }\n    },\n  };\n\n  return Type1Parser;\n})();\n\nexport { Type1Parser };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  assert,\n  FormatError,\n  info,\n  unreachable,\n  UNSUPPORTED_FEATURES,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { isStream } from \"./primitives.js\";\nimport { MissingDataException } from \"./core_utils.js\";\n\nvar ShadingType = {\n  FUNCTION_BASED: 1,\n  AXIAL: 2,\n  RADIAL: 3,\n  FREE_FORM_MESH: 4,\n  LATTICE_FORM_MESH: 5,\n  COONS_PATCH_MESH: 6,\n  TENSOR_PATCH_MESH: 7,\n};\n\nvar Pattern = (function PatternClosure() {\n  // Constructor should define this.getPattern\n  // eslint-disable-next-line no-shadow\n  function Pattern() {\n    unreachable(\"should not call Pattern constructor\");\n  }\n\n  Pattern.prototype = {\n    // Input: current Canvas context\n    // Output: the appropriate fillStyle or strokeStyle\n    getPattern: function Pattern_getPattern(ctx) {\n      unreachable(`Should not call Pattern.getStyle: ${ctx}`);\n    },\n  };\n\n  Pattern.parseShading = function (\n    shading,\n    matrix,\n    xref,\n    res,\n    handler,\n    pdfFunctionFactory\n  ) {\n    var dict = isStream(shading) ? shading.dict : shading;\n    var type = dict.get(\"ShadingType\");\n\n    try {\n      switch (type) {\n        case ShadingType.AXIAL:\n        case ShadingType.RADIAL:\n          // Both radial and axial shadings are handled by RadialAxial shading.\n          return new Shadings.RadialAxial(\n            dict,\n            matrix,\n            xref,\n            res,\n            pdfFunctionFactory\n          );\n        case ShadingType.FREE_FORM_MESH:\n        case ShadingType.LATTICE_FORM_MESH:\n        case ShadingType.COONS_PATCH_MESH:\n        case ShadingType.TENSOR_PATCH_MESH:\n          return new Shadings.Mesh(\n            shading,\n            matrix,\n            xref,\n            res,\n            pdfFunctionFactory\n          );\n        default:\n          throw new FormatError(\"Unsupported ShadingType: \" + type);\n      }\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      handler.send(\"UnsupportedFeature\", {\n        featureId: UNSUPPORTED_FEATURES.shadingPattern,\n      });\n      warn(ex);\n      return new Shadings.Dummy();\n    }\n  };\n  return Pattern;\n})();\n\nvar Shadings = {};\n\n// A small number to offset the first/last color stops so we can insert ones to\n// support extend. Number.MIN_VALUE is too small and breaks the extend.\nShadings.SMALL_NUMBER = 1e-6;\n\n// Radial and axial shading have very similar implementations\n// If needed, the implementations can be broken into two classes\nShadings.RadialAxial = (function RadialAxialClosure() {\n  function RadialAxial(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.parse(cs, xref, res, pdfFunctionFactory);\n    this.cs = cs;\n    const bbox = dict.getArray(\"BBox\");\n    if (Array.isArray(bbox) && bbox.length === 4) {\n      this.bbox = Util.normalizeRect(bbox);\n    } else {\n      this.bbox = null;\n    }\n\n    var t0 = 0.0,\n      t1 = 1.0;\n    if (dict.has(\"Domain\")) {\n      var domainArr = dict.getArray(\"Domain\");\n      t0 = domainArr[0];\n      t1 = domainArr[1];\n    }\n\n    var extendStart = false,\n      extendEnd = false;\n    if (dict.has(\"Extend\")) {\n      var extendArr = dict.getArray(\"Extend\");\n      extendStart = extendArr[0];\n      extendEnd = extendArr[1];\n    }\n\n    if (\n      this.shadingType === ShadingType.RADIAL &&\n      (!extendStart || !extendEnd)\n    ) {\n      // Radial gradient only currently works if either circle is fully within\n      // the other circle.\n      var x1 = this.coordsArr[0];\n      var y1 = this.coordsArr[1];\n      var r1 = this.coordsArr[2];\n      var x2 = this.coordsArr[3];\n      var y2 = this.coordsArr[4];\n      var r2 = this.coordsArr[5];\n      var distance = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));\n      if (r1 <= r2 + distance && r2 <= r1 + distance) {\n        warn(\"Unsupported radial gradient.\");\n      }\n    }\n\n    this.extendStart = extendStart;\n    this.extendEnd = extendEnd;\n\n    var fnObj = dict.get(\"Function\");\n    var fn = pdfFunctionFactory.createFromArray(fnObj);\n\n    // 10 samples seems good enough for now, but probably won't work\n    // if there are sharp color changes. Ideally, we would implement\n    // the spec faithfully and add lossless optimizations.\n    const NUMBER_OF_SAMPLES = 10;\n    const step = (t1 - t0) / NUMBER_OF_SAMPLES;\n\n    var colorStops = (this.colorStops = []);\n\n    // Protect against bad domains.\n    if (t0 >= t1 || step <= 0) {\n      // Acrobat doesn't seem to handle these cases so we'll ignore for\n      // now.\n      info(\"Bad shading domain.\");\n      return;\n    }\n\n    var color = new Float32Array(cs.numComps),\n      ratio = new Float32Array(1);\n    var rgbColor;\n    for (let i = 0; i <= NUMBER_OF_SAMPLES; i++) {\n      ratio[0] = t0 + i * step;\n      fn(ratio, 0, color, 0);\n      rgbColor = cs.getRgb(color, 0);\n      var cssColor = Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]);\n      colorStops.push([i / NUMBER_OF_SAMPLES, cssColor]);\n    }\n\n    var background = \"transparent\";\n    if (dict.has(\"Background\")) {\n      rgbColor = cs.getRgb(dict.get(\"Background\"), 0);\n      background = Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]);\n    }\n\n    if (!extendStart) {\n      // Insert a color stop at the front and offset the first real color stop\n      // so it doesn't conflict with the one we insert.\n      colorStops.unshift([0, background]);\n      colorStops[1][0] += Shadings.SMALL_NUMBER;\n    }\n    if (!extendEnd) {\n      // Same idea as above in extendStart but for the end.\n      colorStops[colorStops.length - 1][0] -= Shadings.SMALL_NUMBER;\n      colorStops.push([1, background]);\n    }\n\n    this.colorStops = colorStops;\n  }\n\n  RadialAxial.prototype = {\n    getIR: function RadialAxial_getIR() {\n      var coordsArr = this.coordsArr;\n      var shadingType = this.shadingType;\n      var type, p0, p1, r0, r1;\n      if (shadingType === ShadingType.AXIAL) {\n        p0 = [coordsArr[0], coordsArr[1]];\n        p1 = [coordsArr[2], coordsArr[3]];\n        r0 = null;\n        r1 = null;\n        type = \"axial\";\n      } else if (shadingType === ShadingType.RADIAL) {\n        p0 = [coordsArr[0], coordsArr[1]];\n        p1 = [coordsArr[3], coordsArr[4]];\n        r0 = coordsArr[2];\n        r1 = coordsArr[5];\n        type = \"radial\";\n      } else {\n        unreachable(`getPattern type unknown: ${shadingType}`);\n      }\n\n      var matrix = this.matrix;\n      if (matrix) {\n        p0 = Util.applyTransform(p0, matrix);\n        p1 = Util.applyTransform(p1, matrix);\n        if (shadingType === ShadingType.RADIAL) {\n          var scale = Util.singularValueDecompose2dScale(matrix);\n          r0 *= scale[0];\n          r1 *= scale[1];\n        }\n      }\n\n      return [\"RadialAxial\", type, this.bbox, this.colorStops, p0, p1, r0, r1];\n    },\n  };\n\n  return RadialAxial;\n})();\n\n// All mesh shading. For now, they will be presented as set of the triangles\n// to be drawn on the canvas and rgb color for each vertex.\nShadings.Mesh = (function MeshClosure() {\n  function MeshStreamReader(stream, context) {\n    this.stream = stream;\n    this.context = context;\n    this.buffer = 0;\n    this.bufferLength = 0;\n\n    var numComps = context.numComps;\n    this.tmpCompsBuf = new Float32Array(numComps);\n    var csNumComps = context.colorSpace.numComps;\n    this.tmpCsCompsBuf = context.colorFn\n      ? new Float32Array(csNumComps)\n      : this.tmpCompsBuf;\n  }\n  MeshStreamReader.prototype = {\n    get hasData() {\n      if (this.stream.end) {\n        return this.stream.pos < this.stream.end;\n      }\n      if (this.bufferLength > 0) {\n        return true;\n      }\n      var nextByte = this.stream.getByte();\n      if (nextByte < 0) {\n        return false;\n      }\n      this.buffer = nextByte;\n      this.bufferLength = 8;\n      return true;\n    },\n    readBits: function MeshStreamReader_readBits(n) {\n      var buffer = this.buffer;\n      var bufferLength = this.bufferLength;\n      if (n === 32) {\n        if (bufferLength === 0) {\n          return (\n            ((this.stream.getByte() << 24) |\n              (this.stream.getByte() << 16) |\n              (this.stream.getByte() << 8) |\n              this.stream.getByte()) >>>\n            0\n          );\n        }\n        buffer =\n          (buffer << 24) |\n          (this.stream.getByte() << 16) |\n          (this.stream.getByte() << 8) |\n          this.stream.getByte();\n        var nextByte = this.stream.getByte();\n        this.buffer = nextByte & ((1 << bufferLength) - 1);\n        return (\n          ((buffer << (8 - bufferLength)) |\n            ((nextByte & 0xff) >> bufferLength)) >>>\n          0\n        );\n      }\n      if (n === 8 && bufferLength === 0) {\n        return this.stream.getByte();\n      }\n      while (bufferLength < n) {\n        buffer = (buffer << 8) | this.stream.getByte();\n        bufferLength += 8;\n      }\n      bufferLength -= n;\n      this.bufferLength = bufferLength;\n      this.buffer = buffer & ((1 << bufferLength) - 1);\n      return buffer >> bufferLength;\n    },\n    align: function MeshStreamReader_align() {\n      this.buffer = 0;\n      this.bufferLength = 0;\n    },\n    readFlag: function MeshStreamReader_readFlag() {\n      return this.readBits(this.context.bitsPerFlag);\n    },\n    readCoordinate: function MeshStreamReader_readCoordinate() {\n      var bitsPerCoordinate = this.context.bitsPerCoordinate;\n      var xi = this.readBits(bitsPerCoordinate);\n      var yi = this.readBits(bitsPerCoordinate);\n      var decode = this.context.decode;\n      var scale =\n        bitsPerCoordinate < 32\n          ? 1 / ((1 << bitsPerCoordinate) - 1)\n          : 2.3283064365386963e-10; // 2 ^ -32\n      return [\n        xi * scale * (decode[1] - decode[0]) + decode[0],\n        yi * scale * (decode[3] - decode[2]) + decode[2],\n      ];\n    },\n    readComponents: function MeshStreamReader_readComponents() {\n      var numComps = this.context.numComps;\n      var bitsPerComponent = this.context.bitsPerComponent;\n      var scale =\n        bitsPerComponent < 32\n          ? 1 / ((1 << bitsPerComponent) - 1)\n          : 2.3283064365386963e-10; // 2 ^ -32\n      var decode = this.context.decode;\n      var components = this.tmpCompsBuf;\n      for (var i = 0, j = 4; i < numComps; i++, j += 2) {\n        var ci = this.readBits(bitsPerComponent);\n        components[i] = ci * scale * (decode[j + 1] - decode[j]) + decode[j];\n      }\n      var color = this.tmpCsCompsBuf;\n      if (this.context.colorFn) {\n        this.context.colorFn(components, 0, color, 0);\n      }\n      return this.context.colorSpace.getRgb(color, 0);\n    },\n  };\n\n  function decodeType4Shading(mesh, reader) {\n    var coords = mesh.coords;\n    var colors = mesh.colors;\n    var operators = [];\n    var ps = []; // not maintaining cs since that will match ps\n    var verticesLeft = 0; // assuming we have all data to start a new triangle\n    while (reader.hasData) {\n      var f = reader.readFlag();\n      var coord = reader.readCoordinate();\n      var color = reader.readComponents();\n      if (verticesLeft === 0) {\n        // ignoring flags if we started a triangle\n        if (!(0 <= f && f <= 2)) {\n          throw new FormatError(\"Unknown type4 flag\");\n        }\n        switch (f) {\n          case 0:\n            verticesLeft = 3;\n            break;\n          case 1:\n            ps.push(ps[ps.length - 2], ps[ps.length - 1]);\n            verticesLeft = 1;\n            break;\n          case 2:\n            ps.push(ps[ps.length - 3], ps[ps.length - 1]);\n            verticesLeft = 1;\n            break;\n        }\n        operators.push(f);\n      }\n      ps.push(coords.length);\n      coords.push(coord);\n      colors.push(color);\n      verticesLeft--;\n\n      reader.align();\n    }\n    mesh.figures.push({\n      type: \"triangles\",\n      coords: new Int32Array(ps),\n      colors: new Int32Array(ps),\n    });\n  }\n\n  function decodeType5Shading(mesh, reader, verticesPerRow) {\n    var coords = mesh.coords;\n    var colors = mesh.colors;\n    var ps = []; // not maintaining cs since that will match ps\n    while (reader.hasData) {\n      var coord = reader.readCoordinate();\n      var color = reader.readComponents();\n      ps.push(coords.length);\n      coords.push(coord);\n      colors.push(color);\n    }\n    mesh.figures.push({\n      type: \"lattice\",\n      coords: new Int32Array(ps),\n      colors: new Int32Array(ps),\n      verticesPerRow,\n    });\n  }\n\n  var MIN_SPLIT_PATCH_CHUNKS_AMOUNT = 3;\n  var MAX_SPLIT_PATCH_CHUNKS_AMOUNT = 20;\n\n  var TRIANGLE_DENSITY = 20; // count of triangles per entire mesh bounds\n\n  var getB = (function getBClosure() {\n    function buildB(count) {\n      var lut = [];\n      for (var i = 0; i <= count; i++) {\n        var t = i / count,\n          t_ = 1 - t;\n        lut.push(\n          new Float32Array([\n            t_ * t_ * t_,\n            3 * t * t_ * t_,\n            3 * t * t * t_,\n            t * t * t,\n          ])\n        );\n      }\n      return lut;\n    }\n    var cache = [];\n\n    // eslint-disable-next-line no-shadow\n    return function getB(count) {\n      if (!cache[count]) {\n        cache[count] = buildB(count);\n      }\n      return cache[count];\n    };\n  })();\n\n  function buildFigureFromPatch(mesh, index) {\n    var figure = mesh.figures[index];\n    assert(figure.type === \"patch\", \"Unexpected patch mesh figure\");\n\n    var coords = mesh.coords,\n      colors = mesh.colors;\n    var pi = figure.coords;\n    var ci = figure.colors;\n\n    var figureMinX = Math.min(\n      coords[pi[0]][0],\n      coords[pi[3]][0],\n      coords[pi[12]][0],\n      coords[pi[15]][0]\n    );\n    var figureMinY = Math.min(\n      coords[pi[0]][1],\n      coords[pi[3]][1],\n      coords[pi[12]][1],\n      coords[pi[15]][1]\n    );\n    var figureMaxX = Math.max(\n      coords[pi[0]][0],\n      coords[pi[3]][0],\n      coords[pi[12]][0],\n      coords[pi[15]][0]\n    );\n    var figureMaxY = Math.max(\n      coords[pi[0]][1],\n      coords[pi[3]][1],\n      coords[pi[12]][1],\n      coords[pi[15]][1]\n    );\n    var splitXBy = Math.ceil(\n      ((figureMaxX - figureMinX) * TRIANGLE_DENSITY) /\n        (mesh.bounds[2] - mesh.bounds[0])\n    );\n    splitXBy = Math.max(\n      MIN_SPLIT_PATCH_CHUNKS_AMOUNT,\n      Math.min(MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitXBy)\n    );\n    var splitYBy = Math.ceil(\n      ((figureMaxY - figureMinY) * TRIANGLE_DENSITY) /\n        (mesh.bounds[3] - mesh.bounds[1])\n    );\n    splitYBy = Math.max(\n      MIN_SPLIT_PATCH_CHUNKS_AMOUNT,\n      Math.min(MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitYBy)\n    );\n\n    var verticesPerRow = splitXBy + 1;\n    var figureCoords = new Int32Array((splitYBy + 1) * verticesPerRow);\n    var figureColors = new Int32Array((splitYBy + 1) * verticesPerRow);\n    var k = 0;\n    var cl = new Uint8Array(3),\n      cr = new Uint8Array(3);\n    var c0 = colors[ci[0]],\n      c1 = colors[ci[1]],\n      c2 = colors[ci[2]],\n      c3 = colors[ci[3]];\n    var bRow = getB(splitYBy),\n      bCol = getB(splitXBy);\n    for (var row = 0; row <= splitYBy; row++) {\n      cl[0] = ((c0[0] * (splitYBy - row) + c2[0] * row) / splitYBy) | 0;\n      cl[1] = ((c0[1] * (splitYBy - row) + c2[1] * row) / splitYBy) | 0;\n      cl[2] = ((c0[2] * (splitYBy - row) + c2[2] * row) / splitYBy) | 0;\n\n      cr[0] = ((c1[0] * (splitYBy - row) + c3[0] * row) / splitYBy) | 0;\n      cr[1] = ((c1[1] * (splitYBy - row) + c3[1] * row) / splitYBy) | 0;\n      cr[2] = ((c1[2] * (splitYBy - row) + c3[2] * row) / splitYBy) | 0;\n\n      for (var col = 0; col <= splitXBy; col++, k++) {\n        if (\n          (row === 0 || row === splitYBy) &&\n          (col === 0 || col === splitXBy)\n        ) {\n          continue;\n        }\n        var x = 0,\n          y = 0;\n        var q = 0;\n        for (var i = 0; i <= 3; i++) {\n          for (var j = 0; j <= 3; j++, q++) {\n            var m = bRow[row][i] * bCol[col][j];\n            x += coords[pi[q]][0] * m;\n            y += coords[pi[q]][1] * m;\n          }\n        }\n        figureCoords[k] = coords.length;\n        coords.push([x, y]);\n        figureColors[k] = colors.length;\n        var newColor = new Uint8Array(3);\n        newColor[0] = ((cl[0] * (splitXBy - col) + cr[0] * col) / splitXBy) | 0;\n        newColor[1] = ((cl[1] * (splitXBy - col) + cr[1] * col) / splitXBy) | 0;\n        newColor[2] = ((cl[2] * (splitXBy - col) + cr[2] * col) / splitXBy) | 0;\n        colors.push(newColor);\n      }\n    }\n    figureCoords[0] = pi[0];\n    figureColors[0] = ci[0];\n    figureCoords[splitXBy] = pi[3];\n    figureColors[splitXBy] = ci[1];\n    figureCoords[verticesPerRow * splitYBy] = pi[12];\n    figureColors[verticesPerRow * splitYBy] = ci[2];\n    figureCoords[verticesPerRow * splitYBy + splitXBy] = pi[15];\n    figureColors[verticesPerRow * splitYBy + splitXBy] = ci[3];\n\n    mesh.figures[index] = {\n      type: \"lattice\",\n      coords: figureCoords,\n      colors: figureColors,\n      verticesPerRow,\n    };\n  }\n\n  function decodeType6Shading(mesh, reader) {\n    // A special case of Type 7. The p11, p12, p21, p22 automatically filled\n    var coords = mesh.coords;\n    var colors = mesh.colors;\n    var ps = new Int32Array(16); // p00, p10, ..., p30, p01, ..., p33\n    var cs = new Int32Array(4); // c00, c30, c03, c33\n    while (reader.hasData) {\n      var f = reader.readFlag();\n      if (!(0 <= f && f <= 3)) {\n        throw new FormatError(\"Unknown type6 flag\");\n      }\n      var i, ii;\n      var pi = coords.length;\n      for (i = 0, ii = f !== 0 ? 8 : 12; i < ii; i++) {\n        coords.push(reader.readCoordinate());\n      }\n      var ci = colors.length;\n      for (i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {\n        colors.push(reader.readComponents());\n      }\n      var tmp1, tmp2, tmp3, tmp4;\n      switch (f) {\n        // prettier-ignore\n        case 0:\n          ps[12] = pi + 3; ps[13] = pi + 4;  ps[14] = pi + 5;  ps[15] = pi + 6;\n          ps[ 8] = pi + 2; /* values for 5, 6, 9, 10 are    */ ps[11] = pi + 7;\n          ps[ 4] = pi + 1; /* calculated below              */ ps[ 7] = pi + 8;\n          ps[ 0] = pi;     ps[ 1] = pi + 11; ps[ 2] = pi + 10; ps[ 3] = pi + 9;\n          cs[2] = ci + 1; cs[3] = ci + 2;\n          cs[0] = ci;     cs[1] = ci + 3;\n          break;\n        // prettier-ignore\n        case 1:\n          tmp1 = ps[12]; tmp2 = ps[13]; tmp3 = ps[14]; tmp4 = ps[15];\n          ps[12] = tmp4; ps[13] = pi + 0;  ps[14] = pi + 1;  ps[15] = pi + 2;\n          ps[ 8] = tmp3; /* values for 5, 6, 9, 10 are    */ ps[11] = pi + 3;\n          ps[ 4] = tmp2; /* calculated below              */ ps[ 7] = pi + 4;\n          ps[ 0] = tmp1; ps[ 1] = pi + 7;   ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n          tmp1 = cs[2]; tmp2 = cs[3];\n          cs[2] = tmp2;   cs[3] = ci;\n          cs[0] = tmp1;   cs[1] = ci + 1;\n          break;\n        // prettier-ignore\n        case 2:\n          tmp1 = ps[15];\n          tmp2 = ps[11];\n          ps[12] = ps[3];  ps[13] = pi + 0; ps[14] = pi + 1;   ps[15] = pi + 2;\n          ps[ 8] = ps[7];  /* values for 5, 6, 9, 10 are    */ ps[11] = pi + 3;\n          ps[ 4] = tmp2;   /* calculated below              */ ps[ 7] = pi + 4;\n          ps[ 0] = tmp1;  ps[ 1] = pi + 7;   ps[ 2] = pi + 6;  ps[ 3] = pi + 5;\n          tmp1 = cs[3];\n          cs[2] = cs[1]; cs[3] = ci;\n          cs[0] = tmp1;  cs[1] = ci + 1;\n          break;\n        // prettier-ignore\n        case 3:\n          ps[12] = ps[0];  ps[13] = pi + 0;   ps[14] = pi + 1; ps[15] = pi + 2;\n          ps[ 8] = ps[1];  /* values for 5, 6, 9, 10 are    */ ps[11] = pi + 3;\n          ps[ 4] = ps[2];  /* calculated below              */ ps[ 7] = pi + 4;\n          ps[ 0] = ps[3];  ps[ 1] = pi + 7;   ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n          cs[2] = cs[0]; cs[3] = ci;\n          cs[0] = cs[1]; cs[1] = ci + 1;\n          break;\n      }\n      // set p11, p12, p21, p22\n      ps[5] = coords.length;\n      coords.push([\n        (-4 * coords[ps[0]][0] -\n          coords[ps[15]][0] +\n          6 * (coords[ps[4]][0] + coords[ps[1]][0]) -\n          2 * (coords[ps[12]][0] + coords[ps[3]][0]) +\n          3 * (coords[ps[13]][0] + coords[ps[7]][0])) /\n          9,\n        (-4 * coords[ps[0]][1] -\n          coords[ps[15]][1] +\n          6 * (coords[ps[4]][1] + coords[ps[1]][1]) -\n          2 * (coords[ps[12]][1] + coords[ps[3]][1]) +\n          3 * (coords[ps[13]][1] + coords[ps[7]][1])) /\n          9,\n      ]);\n      ps[6] = coords.length;\n      coords.push([\n        (-4 * coords[ps[3]][0] -\n          coords[ps[12]][0] +\n          6 * (coords[ps[2]][0] + coords[ps[7]][0]) -\n          2 * (coords[ps[0]][0] + coords[ps[15]][0]) +\n          3 * (coords[ps[4]][0] + coords[ps[14]][0])) /\n          9,\n        (-4 * coords[ps[3]][1] -\n          coords[ps[12]][1] +\n          6 * (coords[ps[2]][1] + coords[ps[7]][1]) -\n          2 * (coords[ps[0]][1] + coords[ps[15]][1]) +\n          3 * (coords[ps[4]][1] + coords[ps[14]][1])) /\n          9,\n      ]);\n      ps[9] = coords.length;\n      coords.push([\n        (-4 * coords[ps[12]][0] -\n          coords[ps[3]][0] +\n          6 * (coords[ps[8]][0] + coords[ps[13]][0]) -\n          2 * (coords[ps[0]][0] + coords[ps[15]][0]) +\n          3 * (coords[ps[11]][0] + coords[ps[1]][0])) /\n          9,\n        (-4 * coords[ps[12]][1] -\n          coords[ps[3]][1] +\n          6 * (coords[ps[8]][1] + coords[ps[13]][1]) -\n          2 * (coords[ps[0]][1] + coords[ps[15]][1]) +\n          3 * (coords[ps[11]][1] + coords[ps[1]][1])) /\n          9,\n      ]);\n      ps[10] = coords.length;\n      coords.push([\n        (-4 * coords[ps[15]][0] -\n          coords[ps[0]][0] +\n          6 * (coords[ps[11]][0] + coords[ps[14]][0]) -\n          2 * (coords[ps[12]][0] + coords[ps[3]][0]) +\n          3 * (coords[ps[2]][0] + coords[ps[8]][0])) /\n          9,\n        (-4 * coords[ps[15]][1] -\n          coords[ps[0]][1] +\n          6 * (coords[ps[11]][1] + coords[ps[14]][1]) -\n          2 * (coords[ps[12]][1] + coords[ps[3]][1]) +\n          3 * (coords[ps[2]][1] + coords[ps[8]][1])) /\n          9,\n      ]);\n      mesh.figures.push({\n        type: \"patch\",\n        coords: new Int32Array(ps), // making copies of ps and cs\n        colors: new Int32Array(cs),\n      });\n    }\n  }\n\n  function decodeType7Shading(mesh, reader) {\n    var coords = mesh.coords;\n    var colors = mesh.colors;\n    var ps = new Int32Array(16); // p00, p10, ..., p30, p01, ..., p33\n    var cs = new Int32Array(4); // c00, c30, c03, c33\n    while (reader.hasData) {\n      var f = reader.readFlag();\n      if (!(0 <= f && f <= 3)) {\n        throw new FormatError(\"Unknown type7 flag\");\n      }\n      var i, ii;\n      var pi = coords.length;\n      for (i = 0, ii = f !== 0 ? 12 : 16; i < ii; i++) {\n        coords.push(reader.readCoordinate());\n      }\n      var ci = colors.length;\n      for (i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {\n        colors.push(reader.readComponents());\n      }\n      var tmp1, tmp2, tmp3, tmp4;\n      switch (f) {\n        // prettier-ignore\n        case 0:\n          ps[12] = pi + 3; ps[13] = pi + 4;  ps[14] = pi + 5;  ps[15] = pi + 6;\n          ps[ 8] = pi + 2; ps[ 9] = pi + 13; ps[10] = pi + 14; ps[11] = pi + 7;\n          ps[ 4] = pi + 1; ps[ 5] = pi + 12; ps[ 6] = pi + 15; ps[ 7] = pi + 8;\n          ps[ 0] = pi;     ps[ 1] = pi + 11; ps[ 2] = pi + 10; ps[ 3] = pi + 9;\n          cs[2] = ci + 1; cs[3] = ci + 2;\n          cs[0] = ci;     cs[1] = ci + 3;\n          break;\n        // prettier-ignore\n        case 1:\n          tmp1 = ps[12]; tmp2 = ps[13]; tmp3 = ps[14]; tmp4 = ps[15];\n          ps[12] = tmp4;   ps[13] = pi + 0;  ps[14] = pi + 1;  ps[15] = pi + 2;\n          ps[ 8] = tmp3;   ps[ 9] = pi + 9;  ps[10] = pi + 10; ps[11] = pi + 3;\n          ps[ 4] = tmp2;   ps[ 5] = pi + 8;  ps[ 6] = pi + 11; ps[ 7] = pi + 4;\n          ps[ 0] = tmp1;   ps[ 1] = pi + 7;  ps[ 2] = pi + 6;  ps[ 3] = pi + 5;\n          tmp1 = cs[2]; tmp2 = cs[3];\n          cs[2] = tmp2;   cs[3] = ci;\n          cs[0] = tmp1;   cs[1] = ci + 1;\n          break;\n        // prettier-ignore\n        case 2:\n          tmp1 = ps[15];\n          tmp2 = ps[11];\n          ps[12] = ps[3]; ps[13] = pi + 0; ps[14] = pi + 1;  ps[15] = pi + 2;\n          ps[ 8] = ps[7]; ps[ 9] = pi + 9; ps[10] = pi + 10; ps[11] = pi + 3;\n          ps[ 4] = tmp2;  ps[ 5] = pi + 8; ps[ 6] = pi + 11; ps[ 7] = pi + 4;\n          ps[ 0] = tmp1;  ps[ 1] = pi + 7; ps[ 2] = pi + 6;  ps[ 3] = pi + 5;\n          tmp1 = cs[3];\n          cs[2] = cs[1]; cs[3] = ci;\n          cs[0] = tmp1;  cs[1] = ci + 1;\n          break;\n        // prettier-ignore\n        case 3:\n          ps[12] = ps[0];  ps[13] = pi + 0;  ps[14] = pi + 1;  ps[15] = pi + 2;\n          ps[ 8] = ps[1];  ps[ 9] = pi + 9;  ps[10] = pi + 10; ps[11] = pi + 3;\n          ps[ 4] = ps[2];  ps[ 5] = pi + 8;  ps[ 6] = pi + 11; ps[ 7] = pi + 4;\n          ps[ 0] = ps[3];  ps[ 1] = pi + 7;  ps[ 2] = pi + 6;  ps[ 3] = pi + 5;\n          cs[2] = cs[0]; cs[3] = ci;\n          cs[0] = cs[1]; cs[1] = ci + 1;\n          break;\n      }\n      mesh.figures.push({\n        type: \"patch\",\n        coords: new Int32Array(ps), // making copies of ps and cs\n        colors: new Int32Array(cs),\n      });\n    }\n  }\n\n  function updateBounds(mesh) {\n    var minX = mesh.coords[0][0],\n      minY = mesh.coords[0][1],\n      maxX = minX,\n      maxY = minY;\n    for (var i = 1, ii = mesh.coords.length; i < ii; i++) {\n      var x = mesh.coords[i][0],\n        y = mesh.coords[i][1];\n      minX = minX > x ? x : minX;\n      minY = minY > y ? y : minY;\n      maxX = maxX < x ? x : maxX;\n      maxY = maxY < y ? y : maxY;\n    }\n    mesh.bounds = [minX, minY, maxX, maxY];\n  }\n\n  function packData(mesh) {\n    var i, ii, j, jj;\n\n    var coords = mesh.coords;\n    var coordsPacked = new Float32Array(coords.length * 2);\n    for (i = 0, j = 0, ii = coords.length; i < ii; i++) {\n      var xy = coords[i];\n      coordsPacked[j++] = xy[0];\n      coordsPacked[j++] = xy[1];\n    }\n    mesh.coords = coordsPacked;\n\n    var colors = mesh.colors;\n    var colorsPacked = new Uint8Array(colors.length * 3);\n    for (i = 0, j = 0, ii = colors.length; i < ii; i++) {\n      var c = colors[i];\n      colorsPacked[j++] = c[0];\n      colorsPacked[j++] = c[1];\n      colorsPacked[j++] = c[2];\n    }\n    mesh.colors = colorsPacked;\n\n    var figures = mesh.figures;\n    for (i = 0, ii = figures.length; i < ii; i++) {\n      var figure = figures[i],\n        ps = figure.coords,\n        cs = figure.colors;\n      for (j = 0, jj = ps.length; j < jj; j++) {\n        ps[j] *= 2;\n        cs[j] *= 3;\n      }\n    }\n  }\n\n  function Mesh(stream, matrix, xref, res, pdfFunctionFactory) {\n    if (!isStream(stream)) {\n      throw new FormatError(\"Mesh data is not a stream\");\n    }\n    var dict = stream.dict;\n    this.matrix = matrix;\n    this.shadingType = dict.get(\"ShadingType\");\n    this.type = \"Pattern\";\n    const bbox = dict.getArray(\"BBox\");\n    if (Array.isArray(bbox) && bbox.length === 4) {\n      this.bbox = Util.normalizeRect(bbox);\n    } else {\n      this.bbox = null;\n    }\n    var cs = dict.get(\"ColorSpace\", \"CS\");\n    cs = ColorSpace.parse(cs, xref, res, pdfFunctionFactory);\n    this.cs = cs;\n    this.background = dict.has(\"Background\")\n      ? cs.getRgb(dict.get(\"Background\"), 0)\n      : null;\n\n    var fnObj = dict.get(\"Function\");\n    var fn = fnObj ? pdfFunctionFactory.createFromArray(fnObj) : null;\n\n    this.coords = [];\n    this.colors = [];\n    this.figures = [];\n\n    var decodeContext = {\n      bitsPerCoordinate: dict.get(\"BitsPerCoordinate\"),\n      bitsPerComponent: dict.get(\"BitsPerComponent\"),\n      bitsPerFlag: dict.get(\"BitsPerFlag\"),\n      decode: dict.getArray(\"Decode\"),\n      colorFn: fn,\n      colorSpace: cs,\n      numComps: fn ? 1 : cs.numComps,\n    };\n    var reader = new MeshStreamReader(stream, decodeContext);\n\n    var patchMesh = false;\n    switch (this.shadingType) {\n      case ShadingType.FREE_FORM_MESH:\n        decodeType4Shading(this, reader);\n        break;\n      case ShadingType.LATTICE_FORM_MESH:\n        var verticesPerRow = dict.get(\"VerticesPerRow\") | 0;\n        if (verticesPerRow < 2) {\n          throw new FormatError(\"Invalid VerticesPerRow\");\n        }\n        decodeType5Shading(this, reader, verticesPerRow);\n        break;\n      case ShadingType.COONS_PATCH_MESH:\n        decodeType6Shading(this, reader);\n        patchMesh = true;\n        break;\n      case ShadingType.TENSOR_PATCH_MESH:\n        decodeType7Shading(this, reader);\n        patchMesh = true;\n        break;\n      default:\n        unreachable(\"Unsupported mesh type.\");\n        break;\n    }\n\n    if (patchMesh) {\n      // dirty bounds calculation for determining, how dense shall be triangles\n      updateBounds(this);\n      for (var i = 0, ii = this.figures.length; i < ii; i++) {\n        buildFigureFromPatch(this, i);\n      }\n    }\n    // calculate bounds\n    updateBounds(this);\n\n    packData(this);\n  }\n\n  Mesh.prototype = {\n    getIR: function Mesh_getIR() {\n      return [\n        \"Mesh\",\n        this.shadingType,\n        this.coords,\n        this.colors,\n        this.figures,\n        this.bounds,\n        this.matrix,\n        this.bbox,\n        this.background,\n      ];\n    },\n  };\n\n  return Mesh;\n})();\n\nShadings.Dummy = (function DummyClosure() {\n  function Dummy() {\n    this.type = \"Pattern\";\n  }\n\n  Dummy.prototype = {\n    getIR: function Dummy_getIR() {\n      return [\"Dummy\"];\n    },\n  };\n  return Dummy;\n})();\n\nfunction getTilingPatternIR(operatorList, dict, args) {\n  const matrix = dict.getArray(\"Matrix\");\n  const bbox = Util.normalizeRect(dict.getArray(\"BBox\"));\n  const xstep = dict.get(\"XStep\");\n  const ystep = dict.get(\"YStep\");\n  const paintType = dict.get(\"PaintType\");\n  const tilingType = dict.get(\"TilingType\");\n\n  // Ensure that the pattern has a non-zero width and height, to prevent errors\n  // in `pattern_helper.js` (fixes issue8330.pdf).\n  if (bbox[2] - bbox[0] === 0 || bbox[3] - bbox[1] === 0) {\n    throw new FormatError(`Invalid getTilingPatternIR /BBox array: [${bbox}].`);\n  }\n\n  return [\n    \"TilingPattern\",\n    args,\n    operatorList,\n    matrix,\n    bbox,\n    xstep,\n    ystep,\n    paintType,\n    tilingType,\n  ];\n}\n\nexport { Pattern, getTilingPatternIR };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { warn } from \"../shared/util.js\";\n\n// Character types for symbols from 0000 to 00FF.\n// Source: ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt\n// prettier-ignore\nvar baseTypes = [\n  \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"S\", \"B\", \"S\",\n  \"WS\", \"B\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\",\n  \"BN\", \"BN\", \"BN\", \"BN\", \"B\", \"B\", \"B\", \"S\", \"WS\", \"ON\", \"ON\", \"ET\",\n  \"ET\", \"ET\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"ES\", \"CS\", \"ES\", \"CS\", \"CS\",\n  \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"CS\", \"ON\",\n  \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n  \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n  \"L\", \"L\", \"L\", \"L\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\",\n  \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n  \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"ON\", \"ON\", \"ON\",\n  \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"B\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\",\n  \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\",\n  \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"CS\", \"ON\", \"ET\",\n  \"ET\", \"ET\", \"ET\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"ON\", \"ON\", \"BN\", \"ON\",\n  \"ON\", \"ET\", \"ET\", \"EN\", \"EN\", \"ON\", \"L\", \"ON\", \"ON\", \"ON\", \"EN\", \"L\",\n  \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n  \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n  \"L\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n  \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n  \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\"\n];\n\n// Character types for symbols from 0600 to 06FF.\n// Source: ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt\n// Note that 061D does not exist in the Unicode standard (see\n// http://unicode.org/charts/PDF/U0600.pdf), so we replace it with an\n// empty string and issue a warning if we encounter this character. The\n// empty string is required to properly index the items after it.\n// prettier-ignore\nvar arabicTypes = [\n  \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"ON\", \"ON\", \"AL\", \"ET\", \"ET\", \"AL\",\n  \"CS\", \"AL\", \"ON\", \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\",\n  \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\",\n  \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\",\n  \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\",\n  \"AN\", \"AN\", \"AN\", \"ET\", \"AN\", \"AN\", \"AL\", \"AL\", \"AL\", \"NSM\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AN\",\n  \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"NSM\", \"NSM\",\n  \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"EN\", \"EN\", \"EN\", \"EN\",\n  \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\"\n];\n\nfunction isOdd(i) {\n  return (i & 1) !== 0;\n}\n\nfunction isEven(i) {\n  return (i & 1) === 0;\n}\n\nfunction findUnequal(arr, start, value) {\n  for (var j = start, jj = arr.length; j < jj; ++j) {\n    if (arr[j] !== value) {\n      return j;\n    }\n  }\n  return j;\n}\n\nfunction setValues(arr, start, end, value) {\n  for (var j = start; j < end; ++j) {\n    arr[j] = value;\n  }\n}\n\nfunction reverseValues(arr, start, end) {\n  for (var i = start, j = end - 1; i < j; ++i, --j) {\n    var temp = arr[i];\n    arr[i] = arr[j];\n    arr[j] = temp;\n  }\n}\n\nfunction createBidiText(str, isLTR, vertical = false) {\n  let dir = \"ltr\";\n  if (vertical) {\n    dir = \"ttb\";\n  } else if (!isLTR) {\n    dir = \"rtl\";\n  }\n  return { str, dir };\n}\n\n// These are used in bidi(), which is called frequently. We re-use them on\n// each call to avoid unnecessary allocations.\nvar chars = [];\nvar types = [];\n\nfunction bidi(str, startLevel, vertical) {\n  var isLTR = true;\n  var strLength = str.length;\n  if (strLength === 0 || vertical) {\n    return createBidiText(str, isLTR, vertical);\n  }\n\n  // Get types and fill arrays\n  chars.length = strLength;\n  types.length = strLength;\n  var numBidi = 0;\n\n  var i, ii;\n  for (i = 0; i < strLength; ++i) {\n    chars[i] = str.charAt(i);\n\n    var charCode = str.charCodeAt(i);\n    var charType = \"L\";\n    if (charCode <= 0x00ff) {\n      charType = baseTypes[charCode];\n    } else if (0x0590 <= charCode && charCode <= 0x05f4) {\n      charType = \"R\";\n    } else if (0x0600 <= charCode && charCode <= 0x06ff) {\n      charType = arabicTypes[charCode & 0xff];\n      if (!charType) {\n        warn(\"Bidi: invalid Unicode character \" + charCode.toString(16));\n      }\n    } else if (0x0700 <= charCode && charCode <= 0x08ac) {\n      charType = \"AL\";\n    }\n    if (charType === \"R\" || charType === \"AL\" || charType === \"AN\") {\n      numBidi++;\n    }\n    types[i] = charType;\n  }\n\n  // Detect the bidi method\n  // - If there are no rtl characters then no bidi needed\n  // - If less than 30% chars are rtl then string is primarily ltr\n  // - If more than 30% chars are rtl then string is primarily rtl\n  if (numBidi === 0) {\n    isLTR = true;\n    return createBidiText(str, isLTR);\n  }\n\n  if (startLevel === -1) {\n    if (numBidi / strLength < 0.3) {\n      isLTR = true;\n      startLevel = 0;\n    } else {\n      isLTR = false;\n      startLevel = 1;\n    }\n  }\n\n  var levels = [];\n  for (i = 0; i < strLength; ++i) {\n    levels[i] = startLevel;\n  }\n\n  /*\n   X1-X10: skip most of this, since we are NOT doing the embeddings.\n   */\n  var e = isOdd(startLevel) ? \"R\" : \"L\";\n  var sor = e;\n  var eor = sor;\n\n  /*\n   W1. Examine each non-spacing mark (NSM) in the level run, and change the\n   type of the NSM to the type of the previous character. If the NSM is at the\n   start of the level run, it will get the type of sor.\n   */\n  var lastType = sor;\n  for (i = 0; i < strLength; ++i) {\n    if (types[i] === \"NSM\") {\n      types[i] = lastType;\n    } else {\n      lastType = types[i];\n    }\n  }\n\n  /*\n   W2. Search backwards from each instance of a European number until the\n   first strong type (R, L, AL, or sor) is found.  If an AL is found, change\n   the type of the European number to Arabic number.\n   */\n  lastType = sor;\n  var t;\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (t === \"EN\") {\n      types[i] = lastType === \"AL\" ? \"AN\" : \"EN\";\n    } else if (t === \"R\" || t === \"L\" || t === \"AL\") {\n      lastType = t;\n    }\n  }\n\n  /*\n   W3. Change all ALs to R.\n   */\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (t === \"AL\") {\n      types[i] = \"R\";\n    }\n  }\n\n  /*\n   W4. A single European separator between two European numbers changes to a\n   European number. A single common separator between two numbers of the same\n   type changes to that type:\n   */\n  for (i = 1; i < strLength - 1; ++i) {\n    if (types[i] === \"ES\" && types[i - 1] === \"EN\" && types[i + 1] === \"EN\") {\n      types[i] = \"EN\";\n    }\n    if (\n      types[i] === \"CS\" &&\n      (types[i - 1] === \"EN\" || types[i - 1] === \"AN\") &&\n      types[i + 1] === types[i - 1]\n    ) {\n      types[i] = types[i - 1];\n    }\n  }\n\n  /*\n   W5. A sequence of European terminators adjacent to European numbers changes\n   to all European numbers:\n   */\n  for (i = 0; i < strLength; ++i) {\n    if (types[i] === \"EN\") {\n      // do before\n      var j;\n      for (j = i - 1; j >= 0; --j) {\n        if (types[j] !== \"ET\") {\n          break;\n        }\n        types[j] = \"EN\";\n      }\n      // do after\n      for (j = i + 1; j < strLength; ++j) {\n        if (types[j] !== \"ET\") {\n          break;\n        }\n        types[j] = \"EN\";\n      }\n    }\n  }\n\n  /*\n   W6. Otherwise, separators and terminators change to Other Neutral:\n   */\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (t === \"WS\" || t === \"ES\" || t === \"ET\" || t === \"CS\") {\n      types[i] = \"ON\";\n    }\n  }\n\n  /*\n   W7. Search backwards from each instance of a European number until the\n   first strong type (R, L, or sor) is found. If an L is found,  then change\n   the type of the European number to L.\n   */\n  lastType = sor;\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (t === \"EN\") {\n      types[i] = lastType === \"L\" ? \"L\" : \"EN\";\n    } else if (t === \"R\" || t === \"L\") {\n      lastType = t;\n    }\n  }\n\n  /*\n   N1. A sequence of neutrals takes the direction of the surrounding strong\n   text if the text on both sides has the same direction. European and Arabic\n   numbers are treated as though they were R. Start-of-level-run (sor) and\n   end-of-level-run (eor) are used at level run boundaries.\n   */\n  for (i = 0; i < strLength; ++i) {\n    if (types[i] === \"ON\") {\n      var end = findUnequal(types, i + 1, \"ON\");\n      var before = sor;\n      if (i > 0) {\n        before = types[i - 1];\n      }\n\n      var after = eor;\n      if (end + 1 < strLength) {\n        after = types[end + 1];\n      }\n      if (before !== \"L\") {\n        before = \"R\";\n      }\n      if (after !== \"L\") {\n        after = \"R\";\n      }\n      if (before === after) {\n        setValues(types, i, end, before);\n      }\n      i = end - 1; // reset to end (-1 so next iteration is ok)\n    }\n  }\n\n  /*\n   N2. Any remaining neutrals take the embedding direction.\n   */\n  for (i = 0; i < strLength; ++i) {\n    if (types[i] === \"ON\") {\n      types[i] = e;\n    }\n  }\n\n  /*\n   I1. For all characters with an even (left-to-right) embedding direction,\n   those of type R go up one level and those of type AN or EN go up two\n   levels.\n   I2. For all characters with an odd (right-to-left) embedding direction,\n   those of type L, EN or AN go up one level.\n   */\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (isEven(levels[i])) {\n      if (t === \"R\") {\n        levels[i] += 1;\n      } else if (t === \"AN\" || t === \"EN\") {\n        levels[i] += 2;\n      }\n    } else {\n      // isOdd\n      if (t === \"L\" || t === \"AN\" || t === \"EN\") {\n        levels[i] += 1;\n      }\n    }\n  }\n\n  /*\n   L1. On each line, reset the embedding level of the following characters to\n   the paragraph embedding level:\n\n   segment separators,\n   paragraph separators,\n   any sequence of whitespace characters preceding a segment separator or\n   paragraph separator, and any sequence of white space characters at the end\n   of the line.\n   */\n\n  // don't bother as text is only single line\n\n  /*\n   L2. From the highest level found in the text to the lowest odd level on\n   each line, reverse any contiguous sequence of characters that are at that\n   level or higher.\n   */\n\n  // find highest level & lowest odd level\n  var highestLevel = -1;\n  var lowestOddLevel = 99;\n  var level;\n  for (i = 0, ii = levels.length; i < ii; ++i) {\n    level = levels[i];\n    if (highestLevel < level) {\n      highestLevel = level;\n    }\n    if (lowestOddLevel > level && isOdd(level)) {\n      lowestOddLevel = level;\n    }\n  }\n\n  // now reverse between those limits\n  for (level = highestLevel; level >= lowestOddLevel; --level) {\n    // find segments to reverse\n    var start = -1;\n    for (i = 0, ii = levels.length; i < ii; ++i) {\n      if (levels[i] < level) {\n        if (start >= 0) {\n          reverseValues(chars, start, i);\n          start = -1;\n        }\n      } else if (start < 0) {\n        start = i;\n      }\n    }\n    if (start >= 0) {\n      reverseValues(chars, start, levels.length);\n    }\n  }\n\n  /*\n   L3. Combining marks applied to a right-to-left base character will at this\n   point precede their base character. If the rendering engine expects them to\n   follow the base characters in the final display process, then the ordering\n   of the marks and the base character must be reversed.\n   */\n\n  // don't bother for now\n\n  /*\n   L4. A character that possesses the mirrored property as specified by\n   Section 4.7, Mirrored, must be depicted by a mirrored glyph if the resolved\n   directionality of that character is R.\n   */\n\n  // don't mirror as characters are already mirrored in the pdf\n\n  // Finally, return string\n  for (i = 0, ii = chars.length; i < ii; ++i) {\n    var ch = chars[i];\n    if (ch === \"<\" || ch === \">\") {\n      chars[i] = \"\";\n    }\n  }\n  return createBidiText(chars.join(\"\"), isLTR);\n}\n\nexport { bidi };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getLookupTableFactory } from \"./core_utils.js\";\n\n// The Metrics object contains glyph widths (in glyph space units).\n// As per PDF spec, for most fonts (Type 3 being an exception) a glyph\n// space unit corresponds to 1/1000th of text space unit.\nvar getMetrics = getLookupTableFactory(function (t) {\n  t.Courier = 600;\n  t[\"Courier-Bold\"] = 600;\n  t[\"Courier-BoldOblique\"] = 600;\n  t[\"Courier-Oblique\"] = 600;\n  // eslint-disable-next-line no-shadow\n  t.Helvetica = getLookupTableFactory(function (t) {\n    t.space = 278;\n    t.exclam = 278;\n    t.quotedbl = 355;\n    t.numbersign = 556;\n    t.dollar = 556;\n    t.percent = 889;\n    t.ampersand = 667;\n    t.quoteright = 222;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 389;\n    t.plus = 584;\n    t.comma = 278;\n    t.hyphen = 333;\n    t.period = 278;\n    t.slash = 278;\n    t.zero = 556;\n    t.one = 556;\n    t.two = 556;\n    t.three = 556;\n    t.four = 556;\n    t.five = 556;\n    t.six = 556;\n    t.seven = 556;\n    t.eight = 556;\n    t.nine = 556;\n    t.colon = 278;\n    t.semicolon = 278;\n    t.less = 584;\n    t.equal = 584;\n    t.greater = 584;\n    t.question = 556;\n    t.at = 1015;\n    t.A = 667;\n    t.B = 667;\n    t.C = 722;\n    t.D = 722;\n    t.E = 667;\n    t.F = 611;\n    t.G = 778;\n    t.H = 722;\n    t.I = 278;\n    t.J = 500;\n    t.K = 667;\n    t.L = 556;\n    t.M = 833;\n    t.N = 722;\n    t.O = 778;\n    t.P = 667;\n    t.Q = 778;\n    t.R = 722;\n    t.S = 667;\n    t.T = 611;\n    t.U = 722;\n    t.V = 667;\n    t.W = 944;\n    t.X = 667;\n    t.Y = 667;\n    t.Z = 611;\n    t.bracketleft = 278;\n    t.backslash = 278;\n    t.bracketright = 278;\n    t.asciicircum = 469;\n    t.underscore = 556;\n    t.quoteleft = 222;\n    t.a = 556;\n    t.b = 556;\n    t.c = 500;\n    t.d = 556;\n    t.e = 556;\n    t.f = 278;\n    t.g = 556;\n    t.h = 556;\n    t.i = 222;\n    t.j = 222;\n    t.k = 500;\n    t.l = 222;\n    t.m = 833;\n    t.n = 556;\n    t.o = 556;\n    t.p = 556;\n    t.q = 556;\n    t.r = 333;\n    t.s = 500;\n    t.t = 278;\n    t.u = 556;\n    t.v = 500;\n    t.w = 722;\n    t.x = 500;\n    t.y = 500;\n    t.z = 500;\n    t.braceleft = 334;\n    t.bar = 260;\n    t.braceright = 334;\n    t.asciitilde = 584;\n    t.exclamdown = 333;\n    t.cent = 556;\n    t.sterling = 556;\n    t.fraction = 167;\n    t.yen = 556;\n    t.florin = 556;\n    t.section = 556;\n    t.currency = 556;\n    t.quotesingle = 191;\n    t.quotedblleft = 333;\n    t.guillemotleft = 556;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 500;\n    t.fl = 500;\n    t.endash = 556;\n    t.dagger = 556;\n    t.daggerdbl = 556;\n    t.periodcentered = 278;\n    t.paragraph = 537;\n    t.bullet = 350;\n    t.quotesinglbase = 222;\n    t.quotedblbase = 333;\n    t.quotedblright = 333;\n    t.guillemotright = 556;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 611;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 1000;\n    t.ordfeminine = 370;\n    t.Lslash = 556;\n    t.Oslash = 778;\n    t.OE = 1000;\n    t.ordmasculine = 365;\n    t.ae = 889;\n    t.dotlessi = 278;\n    t.lslash = 222;\n    t.oslash = 611;\n    t.oe = 944;\n    t.germandbls = 611;\n    t.Idieresis = 278;\n    t.eacute = 556;\n    t.abreve = 556;\n    t.uhungarumlaut = 556;\n    t.ecaron = 556;\n    t.Ydieresis = 667;\n    t.divide = 584;\n    t.Yacute = 667;\n    t.Acircumflex = 667;\n    t.aacute = 556;\n    t.Ucircumflex = 722;\n    t.yacute = 500;\n    t.scommaaccent = 500;\n    t.ecircumflex = 556;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 556;\n    t.Uacute = 722;\n    t.uogonek = 556;\n    t.Edieresis = 667;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 737;\n    t.Emacron = 667;\n    t.ccaron = 500;\n    t.aring = 556;\n    t.Ncommaaccent = 722;\n    t.lacute = 222;\n    t.agrave = 556;\n    t.Tcommaaccent = 611;\n    t.Cacute = 722;\n    t.atilde = 556;\n    t.Edotaccent = 667;\n    t.scaron = 500;\n    t.scedilla = 500;\n    t.iacute = 278;\n    t.lozenge = 471;\n    t.Rcaron = 722;\n    t.Gcommaaccent = 778;\n    t.ucircumflex = 556;\n    t.acircumflex = 556;\n    t.Amacron = 667;\n    t.rcaron = 333;\n    t.ccedilla = 500;\n    t.Zdotaccent = 611;\n    t.Thorn = 667;\n    t.Omacron = 778;\n    t.Racute = 722;\n    t.Sacute = 667;\n    t.dcaron = 643;\n    t.Umacron = 722;\n    t.uring = 556;\n    t.threesuperior = 333;\n    t.Ograve = 778;\n    t.Agrave = 667;\n    t.Abreve = 667;\n    t.multiply = 584;\n    t.uacute = 556;\n    t.Tcaron = 611;\n    t.partialdiff = 476;\n    t.ydieresis = 500;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 667;\n    t.adieresis = 556;\n    t.edieresis = 556;\n    t.cacute = 500;\n    t.nacute = 556;\n    t.umacron = 556;\n    t.Ncaron = 722;\n    t.Iacute = 278;\n    t.plusminus = 584;\n    t.brokenbar = 260;\n    t.registered = 737;\n    t.Gbreve = 778;\n    t.Idotaccent = 278;\n    t.summation = 600;\n    t.Egrave = 667;\n    t.racute = 333;\n    t.omacron = 556;\n    t.Zacute = 611;\n    t.Zcaron = 611;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 722;\n    t.lcommaaccent = 222;\n    t.tcaron = 317;\n    t.eogonek = 556;\n    t.Uogonek = 722;\n    t.Aacute = 667;\n    t.Adieresis = 667;\n    t.egrave = 556;\n    t.zacute = 500;\n    t.iogonek = 222;\n    t.Oacute = 778;\n    t.oacute = 556;\n    t.amacron = 556;\n    t.sacute = 500;\n    t.idieresis = 278;\n    t.Ocircumflex = 778;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 556;\n    t.twosuperior = 333;\n    t.Odieresis = 778;\n    t.mu = 556;\n    t.igrave = 278;\n    t.ohungarumlaut = 556;\n    t.Eogonek = 667;\n    t.dcroat = 556;\n    t.threequarters = 834;\n    t.Scedilla = 667;\n    t.lcaron = 299;\n    t.Kcommaaccent = 667;\n    t.Lacute = 556;\n    t.trademark = 1000;\n    t.edotaccent = 556;\n    t.Igrave = 278;\n    t.Imacron = 278;\n    t.Lcaron = 556;\n    t.onehalf = 834;\n    t.lessequal = 549;\n    t.ocircumflex = 556;\n    t.ntilde = 556;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 667;\n    t.emacron = 556;\n    t.gbreve = 556;\n    t.onequarter = 834;\n    t.Scaron = 667;\n    t.Scommaaccent = 667;\n    t.Ohungarumlaut = 778;\n    t.degree = 400;\n    t.ograve = 556;\n    t.Ccaron = 722;\n    t.ugrave = 556;\n    t.radical = 453;\n    t.Dcaron = 722;\n    t.rcommaaccent = 333;\n    t.Ntilde = 722;\n    t.otilde = 556;\n    t.Rcommaaccent = 722;\n    t.Lcommaaccent = 556;\n    t.Atilde = 667;\n    t.Aogonek = 667;\n    t.Aring = 667;\n    t.Otilde = 778;\n    t.zdotaccent = 500;\n    t.Ecaron = 667;\n    t.Iogonek = 278;\n    t.kcommaaccent = 500;\n    t.minus = 584;\n    t.Icircumflex = 278;\n    t.ncaron = 556;\n    t.tcommaaccent = 278;\n    t.logicalnot = 584;\n    t.odieresis = 556;\n    t.udieresis = 556;\n    t.notequal = 549;\n    t.gcommaaccent = 556;\n    t.eth = 556;\n    t.zcaron = 500;\n    t.ncommaaccent = 556;\n    t.onesuperior = 333;\n    t.imacron = 278;\n    t.Euro = 556;\n  });\n  // eslint-disable-next-line no-shadow\n  t[\"Helvetica-Bold\"] = getLookupTableFactory(function (t) {\n    t.space = 278;\n    t.exclam = 333;\n    t.quotedbl = 474;\n    t.numbersign = 556;\n    t.dollar = 556;\n    t.percent = 889;\n    t.ampersand = 722;\n    t.quoteright = 278;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 389;\n    t.plus = 584;\n    t.comma = 278;\n    t.hyphen = 333;\n    t.period = 278;\n    t.slash = 278;\n    t.zero = 556;\n    t.one = 556;\n    t.two = 556;\n    t.three = 556;\n    t.four = 556;\n    t.five = 556;\n    t.six = 556;\n    t.seven = 556;\n    t.eight = 556;\n    t.nine = 556;\n    t.colon = 333;\n    t.semicolon = 333;\n    t.less = 584;\n    t.equal = 584;\n    t.greater = 584;\n    t.question = 611;\n    t.at = 975;\n    t.A = 722;\n    t.B = 722;\n    t.C = 722;\n    t.D = 722;\n    t.E = 667;\n    t.F = 611;\n    t.G = 778;\n    t.H = 722;\n    t.I = 278;\n    t.J = 556;\n    t.K = 722;\n    t.L = 611;\n    t.M = 833;\n    t.N = 722;\n    t.O = 778;\n    t.P = 667;\n    t.Q = 778;\n    t.R = 722;\n    t.S = 667;\n    t.T = 611;\n    t.U = 722;\n    t.V = 667;\n    t.W = 944;\n    t.X = 667;\n    t.Y = 667;\n    t.Z = 611;\n    t.bracketleft = 333;\n    t.backslash = 278;\n    t.bracketright = 333;\n    t.asciicircum = 584;\n    t.underscore = 556;\n    t.quoteleft = 278;\n    t.a = 556;\n    t.b = 611;\n    t.c = 556;\n    t.d = 611;\n    t.e = 556;\n    t.f = 333;\n    t.g = 611;\n    t.h = 611;\n    t.i = 278;\n    t.j = 278;\n    t.k = 556;\n    t.l = 278;\n    t.m = 889;\n    t.n = 611;\n    t.o = 611;\n    t.p = 611;\n    t.q = 611;\n    t.r = 389;\n    t.s = 556;\n    t.t = 333;\n    t.u = 611;\n    t.v = 556;\n    t.w = 778;\n    t.x = 556;\n    t.y = 556;\n    t.z = 500;\n    t.braceleft = 389;\n    t.bar = 280;\n    t.braceright = 389;\n    t.asciitilde = 584;\n    t.exclamdown = 333;\n    t.cent = 556;\n    t.sterling = 556;\n    t.fraction = 167;\n    t.yen = 556;\n    t.florin = 556;\n    t.section = 556;\n    t.currency = 556;\n    t.quotesingle = 238;\n    t.quotedblleft = 500;\n    t.guillemotleft = 556;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 611;\n    t.fl = 611;\n    t.endash = 556;\n    t.dagger = 556;\n    t.daggerdbl = 556;\n    t.periodcentered = 278;\n    t.paragraph = 556;\n    t.bullet = 350;\n    t.quotesinglbase = 278;\n    t.quotedblbase = 500;\n    t.quotedblright = 500;\n    t.guillemotright = 556;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 611;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 1000;\n    t.ordfeminine = 370;\n    t.Lslash = 611;\n    t.Oslash = 778;\n    t.OE = 1000;\n    t.ordmasculine = 365;\n    t.ae = 889;\n    t.dotlessi = 278;\n    t.lslash = 278;\n    t.oslash = 611;\n    t.oe = 944;\n    t.germandbls = 611;\n    t.Idieresis = 278;\n    t.eacute = 556;\n    t.abreve = 556;\n    t.uhungarumlaut = 611;\n    t.ecaron = 556;\n    t.Ydieresis = 667;\n    t.divide = 584;\n    t.Yacute = 667;\n    t.Acircumflex = 722;\n    t.aacute = 556;\n    t.Ucircumflex = 722;\n    t.yacute = 556;\n    t.scommaaccent = 556;\n    t.ecircumflex = 556;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 556;\n    t.Uacute = 722;\n    t.uogonek = 611;\n    t.Edieresis = 667;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 737;\n    t.Emacron = 667;\n    t.ccaron = 556;\n    t.aring = 556;\n    t.Ncommaaccent = 722;\n    t.lacute = 278;\n    t.agrave = 556;\n    t.Tcommaaccent = 611;\n    t.Cacute = 722;\n    t.atilde = 556;\n    t.Edotaccent = 667;\n    t.scaron = 556;\n    t.scedilla = 556;\n    t.iacute = 278;\n    t.lozenge = 494;\n    t.Rcaron = 722;\n    t.Gcommaaccent = 778;\n    t.ucircumflex = 611;\n    t.acircumflex = 556;\n    t.Amacron = 722;\n    t.rcaron = 389;\n    t.ccedilla = 556;\n    t.Zdotaccent = 611;\n    t.Thorn = 667;\n    t.Omacron = 778;\n    t.Racute = 722;\n    t.Sacute = 667;\n    t.dcaron = 743;\n    t.Umacron = 722;\n    t.uring = 611;\n    t.threesuperior = 333;\n    t.Ograve = 778;\n    t.Agrave = 722;\n    t.Abreve = 722;\n    t.multiply = 584;\n    t.uacute = 611;\n    t.Tcaron = 611;\n    t.partialdiff = 494;\n    t.ydieresis = 556;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 667;\n    t.adieresis = 556;\n    t.edieresis = 556;\n    t.cacute = 556;\n    t.nacute = 611;\n    t.umacron = 611;\n    t.Ncaron = 722;\n    t.Iacute = 278;\n    t.plusminus = 584;\n    t.brokenbar = 280;\n    t.registered = 737;\n    t.Gbreve = 778;\n    t.Idotaccent = 278;\n    t.summation = 600;\n    t.Egrave = 667;\n    t.racute = 389;\n    t.omacron = 611;\n    t.Zacute = 611;\n    t.Zcaron = 611;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 722;\n    t.lcommaaccent = 278;\n    t.tcaron = 389;\n    t.eogonek = 556;\n    t.Uogonek = 722;\n    t.Aacute = 722;\n    t.Adieresis = 722;\n    t.egrave = 556;\n    t.zacute = 500;\n    t.iogonek = 278;\n    t.Oacute = 778;\n    t.oacute = 611;\n    t.amacron = 556;\n    t.sacute = 556;\n    t.idieresis = 278;\n    t.Ocircumflex = 778;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 611;\n    t.twosuperior = 333;\n    t.Odieresis = 778;\n    t.mu = 611;\n    t.igrave = 278;\n    t.ohungarumlaut = 611;\n    t.Eogonek = 667;\n    t.dcroat = 611;\n    t.threequarters = 834;\n    t.Scedilla = 667;\n    t.lcaron = 400;\n    t.Kcommaaccent = 722;\n    t.Lacute = 611;\n    t.trademark = 1000;\n    t.edotaccent = 556;\n    t.Igrave = 278;\n    t.Imacron = 278;\n    t.Lcaron = 611;\n    t.onehalf = 834;\n    t.lessequal = 549;\n    t.ocircumflex = 611;\n    t.ntilde = 611;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 667;\n    t.emacron = 556;\n    t.gbreve = 611;\n    t.onequarter = 834;\n    t.Scaron = 667;\n    t.Scommaaccent = 667;\n    t.Ohungarumlaut = 778;\n    t.degree = 400;\n    t.ograve = 611;\n    t.Ccaron = 722;\n    t.ugrave = 611;\n    t.radical = 549;\n    t.Dcaron = 722;\n    t.rcommaaccent = 389;\n    t.Ntilde = 722;\n    t.otilde = 611;\n    t.Rcommaaccent = 722;\n    t.Lcommaaccent = 611;\n    t.Atilde = 722;\n    t.Aogonek = 722;\n    t.Aring = 722;\n    t.Otilde = 778;\n    t.zdotaccent = 500;\n    t.Ecaron = 667;\n    t.Iogonek = 278;\n    t.kcommaaccent = 556;\n    t.minus = 584;\n    t.Icircumflex = 278;\n    t.ncaron = 611;\n    t.tcommaaccent = 333;\n    t.logicalnot = 584;\n    t.odieresis = 611;\n    t.udieresis = 611;\n    t.notequal = 549;\n    t.gcommaaccent = 611;\n    t.eth = 611;\n    t.zcaron = 500;\n    t.ncommaaccent = 611;\n    t.onesuperior = 333;\n    t.imacron = 278;\n    t.Euro = 556;\n  });\n  // eslint-disable-next-line no-shadow\n  t[\"Helvetica-BoldOblique\"] = getLookupTableFactory(function (t) {\n    t.space = 278;\n    t.exclam = 333;\n    t.quotedbl = 474;\n    t.numbersign = 556;\n    t.dollar = 556;\n    t.percent = 889;\n    t.ampersand = 722;\n    t.quoteright = 278;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 389;\n    t.plus = 584;\n    t.comma = 278;\n    t.hyphen = 333;\n    t.period = 278;\n    t.slash = 278;\n    t.zero = 556;\n    t.one = 556;\n    t.two = 556;\n    t.three = 556;\n    t.four = 556;\n    t.five = 556;\n    t.six = 556;\n    t.seven = 556;\n    t.eight = 556;\n    t.nine = 556;\n    t.colon = 333;\n    t.semicolon = 333;\n    t.less = 584;\n    t.equal = 584;\n    t.greater = 584;\n    t.question = 611;\n    t.at = 975;\n    t.A = 722;\n    t.B = 722;\n    t.C = 722;\n    t.D = 722;\n    t.E = 667;\n    t.F = 611;\n    t.G = 778;\n    t.H = 722;\n    t.I = 278;\n    t.J = 556;\n    t.K = 722;\n    t.L = 611;\n    t.M = 833;\n    t.N = 722;\n    t.O = 778;\n    t.P = 667;\n    t.Q = 778;\n    t.R = 722;\n    t.S = 667;\n    t.T = 611;\n    t.U = 722;\n    t.V = 667;\n    t.W = 944;\n    t.X = 667;\n    t.Y = 667;\n    t.Z = 611;\n    t.bracketleft = 333;\n    t.backslash = 278;\n    t.bracketright = 333;\n    t.asciicircum = 584;\n    t.underscore = 556;\n    t.quoteleft = 278;\n    t.a = 556;\n    t.b = 611;\n    t.c = 556;\n    t.d = 611;\n    t.e = 556;\n    t.f = 333;\n    t.g = 611;\n    t.h = 611;\n    t.i = 278;\n    t.j = 278;\n    t.k = 556;\n    t.l = 278;\n    t.m = 889;\n    t.n = 611;\n    t.o = 611;\n    t.p = 611;\n    t.q = 611;\n    t.r = 389;\n    t.s = 556;\n    t.t = 333;\n    t.u = 611;\n    t.v = 556;\n    t.w = 778;\n    t.x = 556;\n    t.y = 556;\n    t.z = 500;\n    t.braceleft = 389;\n    t.bar = 280;\n    t.braceright = 389;\n    t.asciitilde = 584;\n    t.exclamdown = 333;\n    t.cent = 556;\n    t.sterling = 556;\n    t.fraction = 167;\n    t.yen = 556;\n    t.florin = 556;\n    t.section = 556;\n    t.currency = 556;\n    t.quotesingle = 238;\n    t.quotedblleft = 500;\n    t.guillemotleft = 556;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 611;\n    t.fl = 611;\n    t.endash = 556;\n    t.dagger = 556;\n    t.daggerdbl = 556;\n    t.periodcentered = 278;\n    t.paragraph = 556;\n    t.bullet = 350;\n    t.quotesinglbase = 278;\n    t.quotedblbase = 500;\n    t.quotedblright = 500;\n    t.guillemotright = 556;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 611;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 1000;\n    t.ordfeminine = 370;\n    t.Lslash = 611;\n    t.Oslash = 778;\n    t.OE = 1000;\n    t.ordmasculine = 365;\n    t.ae = 889;\n    t.dotlessi = 278;\n    t.lslash = 278;\n    t.oslash = 611;\n    t.oe = 944;\n    t.germandbls = 611;\n    t.Idieresis = 278;\n    t.eacute = 556;\n    t.abreve = 556;\n    t.uhungarumlaut = 611;\n    t.ecaron = 556;\n    t.Ydieresis = 667;\n    t.divide = 584;\n    t.Yacute = 667;\n    t.Acircumflex = 722;\n    t.aacute = 556;\n    t.Ucircumflex = 722;\n    t.yacute = 556;\n    t.scommaaccent = 556;\n    t.ecircumflex = 556;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 556;\n    t.Uacute = 722;\n    t.uogonek = 611;\n    t.Edieresis = 667;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 737;\n    t.Emacron = 667;\n    t.ccaron = 556;\n    t.aring = 556;\n    t.Ncommaaccent = 722;\n    t.lacute = 278;\n    t.agrave = 556;\n    t.Tcommaaccent = 611;\n    t.Cacute = 722;\n    t.atilde = 556;\n    t.Edotaccent = 667;\n    t.scaron = 556;\n    t.scedilla = 556;\n    t.iacute = 278;\n    t.lozenge = 494;\n    t.Rcaron = 722;\n    t.Gcommaaccent = 778;\n    t.ucircumflex = 611;\n    t.acircumflex = 556;\n    t.Amacron = 722;\n    t.rcaron = 389;\n    t.ccedilla = 556;\n    t.Zdotaccent = 611;\n    t.Thorn = 667;\n    t.Omacron = 778;\n    t.Racute = 722;\n    t.Sacute = 667;\n    t.dcaron = 743;\n    t.Umacron = 722;\n    t.uring = 611;\n    t.threesuperior = 333;\n    t.Ograve = 778;\n    t.Agrave = 722;\n    t.Abreve = 722;\n    t.multiply = 584;\n    t.uacute = 611;\n    t.Tcaron = 611;\n    t.partialdiff = 494;\n    t.ydieresis = 556;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 667;\n    t.adieresis = 556;\n    t.edieresis = 556;\n    t.cacute = 556;\n    t.nacute = 611;\n    t.umacron = 611;\n    t.Ncaron = 722;\n    t.Iacute = 278;\n    t.plusminus = 584;\n    t.brokenbar = 280;\n    t.registered = 737;\n    t.Gbreve = 778;\n    t.Idotaccent = 278;\n    t.summation = 600;\n    t.Egrave = 667;\n    t.racute = 389;\n    t.omacron = 611;\n    t.Zacute = 611;\n    t.Zcaron = 611;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 722;\n    t.lcommaaccent = 278;\n    t.tcaron = 389;\n    t.eogonek = 556;\n    t.Uogonek = 722;\n    t.Aacute = 722;\n    t.Adieresis = 722;\n    t.egrave = 556;\n    t.zacute = 500;\n    t.iogonek = 278;\n    t.Oacute = 778;\n    t.oacute = 611;\n    t.amacron = 556;\n    t.sacute = 556;\n    t.idieresis = 278;\n    t.Ocircumflex = 778;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 611;\n    t.twosuperior = 333;\n    t.Odieresis = 778;\n    t.mu = 611;\n    t.igrave = 278;\n    t.ohungarumlaut = 611;\n    t.Eogonek = 667;\n    t.dcroat = 611;\n    t.threequarters = 834;\n    t.Scedilla = 667;\n    t.lcaron = 400;\n    t.Kcommaaccent = 722;\n    t.Lacute = 611;\n    t.trademark = 1000;\n    t.edotaccent = 556;\n    t.Igrave = 278;\n    t.Imacron = 278;\n    t.Lcaron = 611;\n    t.onehalf = 834;\n    t.lessequal = 549;\n    t.ocircumflex = 611;\n    t.ntilde = 611;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 667;\n    t.emacron = 556;\n    t.gbreve = 611;\n    t.onequarter = 834;\n    t.Scaron = 667;\n    t.Scommaaccent = 667;\n    t.Ohungarumlaut = 778;\n    t.degree = 400;\n    t.ograve = 611;\n    t.Ccaron = 722;\n    t.ugrave = 611;\n    t.radical = 549;\n    t.Dcaron = 722;\n    t.rcommaaccent = 389;\n    t.Ntilde = 722;\n    t.otilde = 611;\n    t.Rcommaaccent = 722;\n    t.Lcommaaccent = 611;\n    t.Atilde = 722;\n    t.Aogonek = 722;\n    t.Aring = 722;\n    t.Otilde = 778;\n    t.zdotaccent = 500;\n    t.Ecaron = 667;\n    t.Iogonek = 278;\n    t.kcommaaccent = 556;\n    t.minus = 584;\n    t.Icircumflex = 278;\n    t.ncaron = 611;\n    t.tcommaaccent = 333;\n    t.logicalnot = 584;\n    t.odieresis = 611;\n    t.udieresis = 611;\n    t.notequal = 549;\n    t.gcommaaccent = 611;\n    t.eth = 611;\n    t.zcaron = 500;\n    t.ncommaaccent = 611;\n    t.onesuperior = 333;\n    t.imacron = 278;\n    t.Euro = 556;\n  });\n  // eslint-disable-next-line no-shadow\n  t[\"Helvetica-Oblique\"] = getLookupTableFactory(function (t) {\n    t.space = 278;\n    t.exclam = 278;\n    t.quotedbl = 355;\n    t.numbersign = 556;\n    t.dollar = 556;\n    t.percent = 889;\n    t.ampersand = 667;\n    t.quoteright = 222;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 389;\n    t.plus = 584;\n    t.comma = 278;\n    t.hyphen = 333;\n    t.period = 278;\n    t.slash = 278;\n    t.zero = 556;\n    t.one = 556;\n    t.two = 556;\n    t.three = 556;\n    t.four = 556;\n    t.five = 556;\n    t.six = 556;\n    t.seven = 556;\n    t.eight = 556;\n    t.nine = 556;\n    t.colon = 278;\n    t.semicolon = 278;\n    t.less = 584;\n    t.equal = 584;\n    t.greater = 584;\n    t.question = 556;\n    t.at = 1015;\n    t.A = 667;\n    t.B = 667;\n    t.C = 722;\n    t.D = 722;\n    t.E = 667;\n    t.F = 611;\n    t.G = 778;\n    t.H = 722;\n    t.I = 278;\n    t.J = 500;\n    t.K = 667;\n    t.L = 556;\n    t.M = 833;\n    t.N = 722;\n    t.O = 778;\n    t.P = 667;\n    t.Q = 778;\n    t.R = 722;\n    t.S = 667;\n    t.T = 611;\n    t.U = 722;\n    t.V = 667;\n    t.W = 944;\n    t.X = 667;\n    t.Y = 667;\n    t.Z = 611;\n    t.bracketleft = 278;\n    t.backslash = 278;\n    t.bracketright = 278;\n    t.asciicircum = 469;\n    t.underscore = 556;\n    t.quoteleft = 222;\n    t.a = 556;\n    t.b = 556;\n    t.c = 500;\n    t.d = 556;\n    t.e = 556;\n    t.f = 278;\n    t.g = 556;\n    t.h = 556;\n    t.i = 222;\n    t.j = 222;\n    t.k = 500;\n    t.l = 222;\n    t.m = 833;\n    t.n = 556;\n    t.o = 556;\n    t.p = 556;\n    t.q = 556;\n    t.r = 333;\n    t.s = 500;\n    t.t = 278;\n    t.u = 556;\n    t.v = 500;\n    t.w = 722;\n    t.x = 500;\n    t.y = 500;\n    t.z = 500;\n    t.braceleft = 334;\n    t.bar = 260;\n    t.braceright = 334;\n    t.asciitilde = 584;\n    t.exclamdown = 333;\n    t.cent = 556;\n    t.sterling = 556;\n    t.fraction = 167;\n    t.yen = 556;\n    t.florin = 556;\n    t.section = 556;\n    t.currency = 556;\n    t.quotesingle = 191;\n    t.quotedblleft = 333;\n    t.guillemotleft = 556;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 500;\n    t.fl = 500;\n    t.endash = 556;\n    t.dagger = 556;\n    t.daggerdbl = 556;\n    t.periodcentered = 278;\n    t.paragraph = 537;\n    t.bullet = 350;\n    t.quotesinglbase = 222;\n    t.quotedblbase = 333;\n    t.quotedblright = 333;\n    t.guillemotright = 556;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 611;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 1000;\n    t.ordfeminine = 370;\n    t.Lslash = 556;\n    t.Oslash = 778;\n    t.OE = 1000;\n    t.ordmasculine = 365;\n    t.ae = 889;\n    t.dotlessi = 278;\n    t.lslash = 222;\n    t.oslash = 611;\n    t.oe = 944;\n    t.germandbls = 611;\n    t.Idieresis = 278;\n    t.eacute = 556;\n    t.abreve = 556;\n    t.uhungarumlaut = 556;\n    t.ecaron = 556;\n    t.Ydieresis = 667;\n    t.divide = 584;\n    t.Yacute = 667;\n    t.Acircumflex = 667;\n    t.aacute = 556;\n    t.Ucircumflex = 722;\n    t.yacute = 500;\n    t.scommaaccent = 500;\n    t.ecircumflex = 556;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 556;\n    t.Uacute = 722;\n    t.uogonek = 556;\n    t.Edieresis = 667;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 737;\n    t.Emacron = 667;\n    t.ccaron = 500;\n    t.aring = 556;\n    t.Ncommaaccent = 722;\n    t.lacute = 222;\n    t.agrave = 556;\n    t.Tcommaaccent = 611;\n    t.Cacute = 722;\n    t.atilde = 556;\n    t.Edotaccent = 667;\n    t.scaron = 500;\n    t.scedilla = 500;\n    t.iacute = 278;\n    t.lozenge = 471;\n    t.Rcaron = 722;\n    t.Gcommaaccent = 778;\n    t.ucircumflex = 556;\n    t.acircumflex = 556;\n    t.Amacron = 667;\n    t.rcaron = 333;\n    t.ccedilla = 500;\n    t.Zdotaccent = 611;\n    t.Thorn = 667;\n    t.Omacron = 778;\n    t.Racute = 722;\n    t.Sacute = 667;\n    t.dcaron = 643;\n    t.Umacron = 722;\n    t.uring = 556;\n    t.threesuperior = 333;\n    t.Ograve = 778;\n    t.Agrave = 667;\n    t.Abreve = 667;\n    t.multiply = 584;\n    t.uacute = 556;\n    t.Tcaron = 611;\n    t.partialdiff = 476;\n    t.ydieresis = 500;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 667;\n    t.adieresis = 556;\n    t.edieresis = 556;\n    t.cacute = 500;\n    t.nacute = 556;\n    t.umacron = 556;\n    t.Ncaron = 722;\n    t.Iacute = 278;\n    t.plusminus = 584;\n    t.brokenbar = 260;\n    t.registered = 737;\n    t.Gbreve = 778;\n    t.Idotaccent = 278;\n    t.summation = 600;\n    t.Egrave = 667;\n    t.racute = 333;\n    t.omacron = 556;\n    t.Zacute = 611;\n    t.Zcaron = 611;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 722;\n    t.lcommaaccent = 222;\n    t.tcaron = 317;\n    t.eogonek = 556;\n    t.Uogonek = 722;\n    t.Aacute = 667;\n    t.Adieresis = 667;\n    t.egrave = 556;\n    t.zacute = 500;\n    t.iogonek = 222;\n    t.Oacute = 778;\n    t.oacute = 556;\n    t.amacron = 556;\n    t.sacute = 500;\n    t.idieresis = 278;\n    t.Ocircumflex = 778;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 556;\n    t.twosuperior = 333;\n    t.Odieresis = 778;\n    t.mu = 556;\n    t.igrave = 278;\n    t.ohungarumlaut = 556;\n    t.Eogonek = 667;\n    t.dcroat = 556;\n    t.threequarters = 834;\n    t.Scedilla = 667;\n    t.lcaron = 299;\n    t.Kcommaaccent = 667;\n    t.Lacute = 556;\n    t.trademark = 1000;\n    t.edotaccent = 556;\n    t.Igrave = 278;\n    t.Imacron = 278;\n    t.Lcaron = 556;\n    t.onehalf = 834;\n    t.lessequal = 549;\n    t.ocircumflex = 556;\n    t.ntilde = 556;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 667;\n    t.emacron = 556;\n    t.gbreve = 556;\n    t.onequarter = 834;\n    t.Scaron = 667;\n    t.Scommaaccent = 667;\n    t.Ohungarumlaut = 778;\n    t.degree = 400;\n    t.ograve = 556;\n    t.Ccaron = 722;\n    t.ugrave = 556;\n    t.radical = 453;\n    t.Dcaron = 722;\n    t.rcommaaccent = 333;\n    t.Ntilde = 722;\n    t.otilde = 556;\n    t.Rcommaaccent = 722;\n    t.Lcommaaccent = 556;\n    t.Atilde = 667;\n    t.Aogonek = 667;\n    t.Aring = 667;\n    t.Otilde = 778;\n    t.zdotaccent = 500;\n    t.Ecaron = 667;\n    t.Iogonek = 278;\n    t.kcommaaccent = 500;\n    t.minus = 584;\n    t.Icircumflex = 278;\n    t.ncaron = 556;\n    t.tcommaaccent = 278;\n    t.logicalnot = 584;\n    t.odieresis = 556;\n    t.udieresis = 556;\n    t.notequal = 549;\n    t.gcommaaccent = 556;\n    t.eth = 556;\n    t.zcaron = 500;\n    t.ncommaaccent = 556;\n    t.onesuperior = 333;\n    t.imacron = 278;\n    t.Euro = 556;\n  });\n  // eslint-disable-next-line no-shadow\n  t.Symbol = getLookupTableFactory(function (t) {\n    t.space = 250;\n    t.exclam = 333;\n    t.universal = 713;\n    t.numbersign = 500;\n    t.existential = 549;\n    t.percent = 833;\n    t.ampersand = 778;\n    t.suchthat = 439;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asteriskmath = 500;\n    t.plus = 549;\n    t.comma = 250;\n    t.minus = 549;\n    t.period = 250;\n    t.slash = 278;\n    t.zero = 500;\n    t.one = 500;\n    t.two = 500;\n    t.three = 500;\n    t.four = 500;\n    t.five = 500;\n    t.six = 500;\n    t.seven = 500;\n    t.eight = 500;\n    t.nine = 500;\n    t.colon = 278;\n    t.semicolon = 278;\n    t.less = 549;\n    t.equal = 549;\n    t.greater = 549;\n    t.question = 444;\n    t.congruent = 549;\n    t.Alpha = 722;\n    t.Beta = 667;\n    t.Chi = 722;\n    t.Delta = 612;\n    t.Epsilon = 611;\n    t.Phi = 763;\n    t.Gamma = 603;\n    t.Eta = 722;\n    t.Iota = 333;\n    t.theta1 = 631;\n    t.Kappa = 722;\n    t.Lambda = 686;\n    t.Mu = 889;\n    t.Nu = 722;\n    t.Omicron = 722;\n    t.Pi = 768;\n    t.Theta = 741;\n    t.Rho = 556;\n    t.Sigma = 592;\n    t.Tau = 611;\n    t.Upsilon = 690;\n    t.sigma1 = 439;\n    t.Omega = 768;\n    t.Xi = 645;\n    t.Psi = 795;\n    t.Zeta = 611;\n    t.bracketleft = 333;\n    t.therefore = 863;\n    t.bracketright = 333;\n    t.perpendicular = 658;\n    t.underscore = 500;\n    t.radicalex = 500;\n    t.alpha = 631;\n    t.beta = 549;\n    t.chi = 549;\n    t.delta = 494;\n    t.epsilon = 439;\n    t.phi = 521;\n    t.gamma = 411;\n    t.eta = 603;\n    t.iota = 329;\n    t.phi1 = 603;\n    t.kappa = 549;\n    t.lambda = 549;\n    t.mu = 576;\n    t.nu = 521;\n    t.omicron = 549;\n    t.pi = 549;\n    t.theta = 521;\n    t.rho = 549;\n    t.sigma = 603;\n    t.tau = 439;\n    t.upsilon = 576;\n    t.omega1 = 713;\n    t.omega = 686;\n    t.xi = 493;\n    t.psi = 686;\n    t.zeta = 494;\n    t.braceleft = 480;\n    t.bar = 200;\n    t.braceright = 480;\n    t.similar = 549;\n    t.Euro = 750;\n    t.Upsilon1 = 620;\n    t.minute = 247;\n    t.lessequal = 549;\n    t.fraction = 167;\n    t.infinity = 713;\n    t.florin = 500;\n    t.club = 753;\n    t.diamond = 753;\n    t.heart = 753;\n    t.spade = 753;\n    t.arrowboth = 1042;\n    t.arrowleft = 987;\n    t.arrowup = 603;\n    t.arrowright = 987;\n    t.arrowdown = 603;\n    t.degree = 400;\n    t.plusminus = 549;\n    t.second = 411;\n    t.greaterequal = 549;\n    t.multiply = 549;\n    t.proportional = 713;\n    t.partialdiff = 494;\n    t.bullet = 460;\n    t.divide = 549;\n    t.notequal = 549;\n    t.equivalence = 549;\n    t.approxequal = 549;\n    t.ellipsis = 1000;\n    t.arrowvertex = 603;\n    t.arrowhorizex = 1000;\n    t.carriagereturn = 658;\n    t.aleph = 823;\n    t.Ifraktur = 686;\n    t.Rfraktur = 795;\n    t.weierstrass = 987;\n    t.circlemultiply = 768;\n    t.circleplus = 768;\n    t.emptyset = 823;\n    t.intersection = 768;\n    t.union = 768;\n    t.propersuperset = 713;\n    t.reflexsuperset = 713;\n    t.notsubset = 713;\n    t.propersubset = 713;\n    t.reflexsubset = 713;\n    t.element = 713;\n    t.notelement = 713;\n    t.angle = 768;\n    t.gradient = 713;\n    t.registerserif = 790;\n    t.copyrightserif = 790;\n    t.trademarkserif = 890;\n    t.product = 823;\n    t.radical = 549;\n    t.dotmath = 250;\n    t.logicalnot = 713;\n    t.logicaland = 603;\n    t.logicalor = 603;\n    t.arrowdblboth = 1042;\n    t.arrowdblleft = 987;\n    t.arrowdblup = 603;\n    t.arrowdblright = 987;\n    t.arrowdbldown = 603;\n    t.lozenge = 494;\n    t.angleleft = 329;\n    t.registersans = 790;\n    t.copyrightsans = 790;\n    t.trademarksans = 786;\n    t.summation = 713;\n    t.parenlefttp = 384;\n    t.parenleftex = 384;\n    t.parenleftbt = 384;\n    t.bracketlefttp = 384;\n    t.bracketleftex = 384;\n    t.bracketleftbt = 384;\n    t.bracelefttp = 494;\n    t.braceleftmid = 494;\n    t.braceleftbt = 494;\n    t.braceex = 494;\n    t.angleright = 329;\n    t.integral = 274;\n    t.integraltp = 686;\n    t.integralex = 686;\n    t.integralbt = 686;\n    t.parenrighttp = 384;\n    t.parenrightex = 384;\n    t.parenrightbt = 384;\n    t.bracketrighttp = 384;\n    t.bracketrightex = 384;\n    t.bracketrightbt = 384;\n    t.bracerighttp = 494;\n    t.bracerightmid = 494;\n    t.bracerightbt = 494;\n    t.apple = 790;\n  });\n  // eslint-disable-next-line no-shadow\n  t[\"Times-Roman\"] = getLookupTableFactory(function (t) {\n    t.space = 250;\n    t.exclam = 333;\n    t.quotedbl = 408;\n    t.numbersign = 500;\n    t.dollar = 500;\n    t.percent = 833;\n    t.ampersand = 778;\n    t.quoteright = 333;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 500;\n    t.plus = 564;\n    t.comma = 250;\n    t.hyphen = 333;\n    t.period = 250;\n    t.slash = 278;\n    t.zero = 500;\n    t.one = 500;\n    t.two = 500;\n    t.three = 500;\n    t.four = 500;\n    t.five = 500;\n    t.six = 500;\n    t.seven = 500;\n    t.eight = 500;\n    t.nine = 500;\n    t.colon = 278;\n    t.semicolon = 278;\n    t.less = 564;\n    t.equal = 564;\n    t.greater = 564;\n    t.question = 444;\n    t.at = 921;\n    t.A = 722;\n    t.B = 667;\n    t.C = 667;\n    t.D = 722;\n    t.E = 611;\n    t.F = 556;\n    t.G = 722;\n    t.H = 722;\n    t.I = 333;\n    t.J = 389;\n    t.K = 722;\n    t.L = 611;\n    t.M = 889;\n    t.N = 722;\n    t.O = 722;\n    t.P = 556;\n    t.Q = 722;\n    t.R = 667;\n    t.S = 556;\n    t.T = 611;\n    t.U = 722;\n    t.V = 722;\n    t.W = 944;\n    t.X = 722;\n    t.Y = 722;\n    t.Z = 611;\n    t.bracketleft = 333;\n    t.backslash = 278;\n    t.bracketright = 333;\n    t.asciicircum = 469;\n    t.underscore = 500;\n    t.quoteleft = 333;\n    t.a = 444;\n    t.b = 500;\n    t.c = 444;\n    t.d = 500;\n    t.e = 444;\n    t.f = 333;\n    t.g = 500;\n    t.h = 500;\n    t.i = 278;\n    t.j = 278;\n    t.k = 500;\n    t.l = 278;\n    t.m = 778;\n    t.n = 500;\n    t.o = 500;\n    t.p = 500;\n    t.q = 500;\n    t.r = 333;\n    t.s = 389;\n    t.t = 278;\n    t.u = 500;\n    t.v = 500;\n    t.w = 722;\n    t.x = 500;\n    t.y = 500;\n    t.z = 444;\n    t.braceleft = 480;\n    t.bar = 200;\n    t.braceright = 480;\n    t.asciitilde = 541;\n    t.exclamdown = 333;\n    t.cent = 500;\n    t.sterling = 500;\n    t.fraction = 167;\n    t.yen = 500;\n    t.florin = 500;\n    t.section = 500;\n    t.currency = 500;\n    t.quotesingle = 180;\n    t.quotedblleft = 444;\n    t.guillemotleft = 500;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 556;\n    t.fl = 556;\n    t.endash = 500;\n    t.dagger = 500;\n    t.daggerdbl = 500;\n    t.periodcentered = 250;\n    t.paragraph = 453;\n    t.bullet = 350;\n    t.quotesinglbase = 333;\n    t.quotedblbase = 444;\n    t.quotedblright = 444;\n    t.guillemotright = 500;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 444;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 889;\n    t.ordfeminine = 276;\n    t.Lslash = 611;\n    t.Oslash = 722;\n    t.OE = 889;\n    t.ordmasculine = 310;\n    t.ae = 667;\n    t.dotlessi = 278;\n    t.lslash = 278;\n    t.oslash = 500;\n    t.oe = 722;\n    t.germandbls = 500;\n    t.Idieresis = 333;\n    t.eacute = 444;\n    t.abreve = 444;\n    t.uhungarumlaut = 500;\n    t.ecaron = 444;\n    t.Ydieresis = 722;\n    t.divide = 564;\n    t.Yacute = 722;\n    t.Acircumflex = 722;\n    t.aacute = 444;\n    t.Ucircumflex = 722;\n    t.yacute = 500;\n    t.scommaaccent = 389;\n    t.ecircumflex = 444;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 444;\n    t.Uacute = 722;\n    t.uogonek = 500;\n    t.Edieresis = 611;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 760;\n    t.Emacron = 611;\n    t.ccaron = 444;\n    t.aring = 444;\n    t.Ncommaaccent = 722;\n    t.lacute = 278;\n    t.agrave = 444;\n    t.Tcommaaccent = 611;\n    t.Cacute = 667;\n    t.atilde = 444;\n    t.Edotaccent = 611;\n    t.scaron = 389;\n    t.scedilla = 389;\n    t.iacute = 278;\n    t.lozenge = 471;\n    t.Rcaron = 667;\n    t.Gcommaaccent = 722;\n    t.ucircumflex = 500;\n    t.acircumflex = 444;\n    t.Amacron = 722;\n    t.rcaron = 333;\n    t.ccedilla = 444;\n    t.Zdotaccent = 611;\n    t.Thorn = 556;\n    t.Omacron = 722;\n    t.Racute = 667;\n    t.Sacute = 556;\n    t.dcaron = 588;\n    t.Umacron = 722;\n    t.uring = 500;\n    t.threesuperior = 300;\n    t.Ograve = 722;\n    t.Agrave = 722;\n    t.Abreve = 722;\n    t.multiply = 564;\n    t.uacute = 500;\n    t.Tcaron = 611;\n    t.partialdiff = 476;\n    t.ydieresis = 500;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 611;\n    t.adieresis = 444;\n    t.edieresis = 444;\n    t.cacute = 444;\n    t.nacute = 500;\n    t.umacron = 500;\n    t.Ncaron = 722;\n    t.Iacute = 333;\n    t.plusminus = 564;\n    t.brokenbar = 200;\n    t.registered = 760;\n    t.Gbreve = 722;\n    t.Idotaccent = 333;\n    t.summation = 600;\n    t.Egrave = 611;\n    t.racute = 333;\n    t.omacron = 500;\n    t.Zacute = 611;\n    t.Zcaron = 611;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 667;\n    t.lcommaaccent = 278;\n    t.tcaron = 326;\n    t.eogonek = 444;\n    t.Uogonek = 722;\n    t.Aacute = 722;\n    t.Adieresis = 722;\n    t.egrave = 444;\n    t.zacute = 444;\n    t.iogonek = 278;\n    t.Oacute = 722;\n    t.oacute = 500;\n    t.amacron = 444;\n    t.sacute = 389;\n    t.idieresis = 278;\n    t.Ocircumflex = 722;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 500;\n    t.twosuperior = 300;\n    t.Odieresis = 722;\n    t.mu = 500;\n    t.igrave = 278;\n    t.ohungarumlaut = 500;\n    t.Eogonek = 611;\n    t.dcroat = 500;\n    t.threequarters = 750;\n    t.Scedilla = 556;\n    t.lcaron = 344;\n    t.Kcommaaccent = 722;\n    t.Lacute = 611;\n    t.trademark = 980;\n    t.edotaccent = 444;\n    t.Igrave = 333;\n    t.Imacron = 333;\n    t.Lcaron = 611;\n    t.onehalf = 750;\n    t.lessequal = 549;\n    t.ocircumflex = 500;\n    t.ntilde = 500;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 611;\n    t.emacron = 444;\n    t.gbreve = 500;\n    t.onequarter = 750;\n    t.Scaron = 556;\n    t.Scommaaccent = 556;\n    t.Ohungarumlaut = 722;\n    t.degree = 400;\n    t.ograve = 500;\n    t.Ccaron = 667;\n    t.ugrave = 500;\n    t.radical = 453;\n    t.Dcaron = 722;\n    t.rcommaaccent = 333;\n    t.Ntilde = 722;\n    t.otilde = 500;\n    t.Rcommaaccent = 667;\n    t.Lcommaaccent = 611;\n    t.Atilde = 722;\n    t.Aogonek = 722;\n    t.Aring = 722;\n    t.Otilde = 722;\n    t.zdotaccent = 444;\n    t.Ecaron = 611;\n    t.Iogonek = 333;\n    t.kcommaaccent = 500;\n    t.minus = 564;\n    t.Icircumflex = 333;\n    t.ncaron = 500;\n    t.tcommaaccent = 278;\n    t.logicalnot = 564;\n    t.odieresis = 500;\n    t.udieresis = 500;\n    t.notequal = 549;\n    t.gcommaaccent = 500;\n    t.eth = 500;\n    t.zcaron = 444;\n    t.ncommaaccent = 500;\n    t.onesuperior = 300;\n    t.imacron = 278;\n    t.Euro = 500;\n  });\n  // eslint-disable-next-line no-shadow\n  t[\"Times-Bold\"] = getLookupTableFactory(function (t) {\n    t.space = 250;\n    t.exclam = 333;\n    t.quotedbl = 555;\n    t.numbersign = 500;\n    t.dollar = 500;\n    t.percent = 1000;\n    t.ampersand = 833;\n    t.quoteright = 333;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 500;\n    t.plus = 570;\n    t.comma = 250;\n    t.hyphen = 333;\n    t.period = 250;\n    t.slash = 278;\n    t.zero = 500;\n    t.one = 500;\n    t.two = 500;\n    t.three = 500;\n    t.four = 500;\n    t.five = 500;\n    t.six = 500;\n    t.seven = 500;\n    t.eight = 500;\n    t.nine = 500;\n    t.colon = 333;\n    t.semicolon = 333;\n    t.less = 570;\n    t.equal = 570;\n    t.greater = 570;\n    t.question = 500;\n    t.at = 930;\n    t.A = 722;\n    t.B = 667;\n    t.C = 722;\n    t.D = 722;\n    t.E = 667;\n    t.F = 611;\n    t.G = 778;\n    t.H = 778;\n    t.I = 389;\n    t.J = 500;\n    t.K = 778;\n    t.L = 667;\n    t.M = 944;\n    t.N = 722;\n    t.O = 778;\n    t.P = 611;\n    t.Q = 778;\n    t.R = 722;\n    t.S = 556;\n    t.T = 667;\n    t.U = 722;\n    t.V = 722;\n    t.W = 1000;\n    t.X = 722;\n    t.Y = 722;\n    t.Z = 667;\n    t.bracketleft = 333;\n    t.backslash = 278;\n    t.bracketright = 333;\n    t.asciicircum = 581;\n    t.underscore = 500;\n    t.quoteleft = 333;\n    t.a = 500;\n    t.b = 556;\n    t.c = 444;\n    t.d = 556;\n    t.e = 444;\n    t.f = 333;\n    t.g = 500;\n    t.h = 556;\n    t.i = 278;\n    t.j = 333;\n    t.k = 556;\n    t.l = 278;\n    t.m = 833;\n    t.n = 556;\n    t.o = 500;\n    t.p = 556;\n    t.q = 556;\n    t.r = 444;\n    t.s = 389;\n    t.t = 333;\n    t.u = 556;\n    t.v = 500;\n    t.w = 722;\n    t.x = 500;\n    t.y = 500;\n    t.z = 444;\n    t.braceleft = 394;\n    t.bar = 220;\n    t.braceright = 394;\n    t.asciitilde = 520;\n    t.exclamdown = 333;\n    t.cent = 500;\n    t.sterling = 500;\n    t.fraction = 167;\n    t.yen = 500;\n    t.florin = 500;\n    t.section = 500;\n    t.currency = 500;\n    t.quotesingle = 278;\n    t.quotedblleft = 500;\n    t.guillemotleft = 500;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 556;\n    t.fl = 556;\n    t.endash = 500;\n    t.dagger = 500;\n    t.daggerdbl = 500;\n    t.periodcentered = 250;\n    t.paragraph = 540;\n    t.bullet = 350;\n    t.quotesinglbase = 333;\n    t.quotedblbase = 500;\n    t.quotedblright = 500;\n    t.guillemotright = 500;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 500;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 1000;\n    t.ordfeminine = 300;\n    t.Lslash = 667;\n    t.Oslash = 778;\n    t.OE = 1000;\n    t.ordmasculine = 330;\n    t.ae = 722;\n    t.dotlessi = 278;\n    t.lslash = 278;\n    t.oslash = 500;\n    t.oe = 722;\n    t.germandbls = 556;\n    t.Idieresis = 389;\n    t.eacute = 444;\n    t.abreve = 500;\n    t.uhungarumlaut = 556;\n    t.ecaron = 444;\n    t.Ydieresis = 722;\n    t.divide = 570;\n    t.Yacute = 722;\n    t.Acircumflex = 722;\n    t.aacute = 500;\n    t.Ucircumflex = 722;\n    t.yacute = 500;\n    t.scommaaccent = 389;\n    t.ecircumflex = 444;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 500;\n    t.Uacute = 722;\n    t.uogonek = 556;\n    t.Edieresis = 667;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 747;\n    t.Emacron = 667;\n    t.ccaron = 444;\n    t.aring = 500;\n    t.Ncommaaccent = 722;\n    t.lacute = 278;\n    t.agrave = 500;\n    t.Tcommaaccent = 667;\n    t.Cacute = 722;\n    t.atilde = 500;\n    t.Edotaccent = 667;\n    t.scaron = 389;\n    t.scedilla = 389;\n    t.iacute = 278;\n    t.lozenge = 494;\n    t.Rcaron = 722;\n    t.Gcommaaccent = 778;\n    t.ucircumflex = 556;\n    t.acircumflex = 500;\n    t.Amacron = 722;\n    t.rcaron = 444;\n    t.ccedilla = 444;\n    t.Zdotaccent = 667;\n    t.Thorn = 611;\n    t.Omacron = 778;\n    t.Racute = 722;\n    t.Sacute = 556;\n    t.dcaron = 672;\n    t.Umacron = 722;\n    t.uring = 556;\n    t.threesuperior = 300;\n    t.Ograve = 778;\n    t.Agrave = 722;\n    t.Abreve = 722;\n    t.multiply = 570;\n    t.uacute = 556;\n    t.Tcaron = 667;\n    t.partialdiff = 494;\n    t.ydieresis = 500;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 667;\n    t.adieresis = 500;\n    t.edieresis = 444;\n    t.cacute = 444;\n    t.nacute = 556;\n    t.umacron = 556;\n    t.Ncaron = 722;\n    t.Iacute = 389;\n    t.plusminus = 570;\n    t.brokenbar = 220;\n    t.registered = 747;\n    t.Gbreve = 778;\n    t.Idotaccent = 389;\n    t.summation = 600;\n    t.Egrave = 667;\n    t.racute = 444;\n    t.omacron = 500;\n    t.Zacute = 667;\n    t.Zcaron = 667;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 722;\n    t.lcommaaccent = 278;\n    t.tcaron = 416;\n    t.eogonek = 444;\n    t.Uogonek = 722;\n    t.Aacute = 722;\n    t.Adieresis = 722;\n    t.egrave = 444;\n    t.zacute = 444;\n    t.iogonek = 278;\n    t.Oacute = 778;\n    t.oacute = 500;\n    t.amacron = 500;\n    t.sacute = 389;\n    t.idieresis = 278;\n    t.Ocircumflex = 778;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 556;\n    t.twosuperior = 300;\n    t.Odieresis = 778;\n    t.mu = 556;\n    t.igrave = 278;\n    t.ohungarumlaut = 500;\n    t.Eogonek = 667;\n    t.dcroat = 556;\n    t.threequarters = 750;\n    t.Scedilla = 556;\n    t.lcaron = 394;\n    t.Kcommaaccent = 778;\n    t.Lacute = 667;\n    t.trademark = 1000;\n    t.edotaccent = 444;\n    t.Igrave = 389;\n    t.Imacron = 389;\n    t.Lcaron = 667;\n    t.onehalf = 750;\n    t.lessequal = 549;\n    t.ocircumflex = 500;\n    t.ntilde = 556;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 667;\n    t.emacron = 444;\n    t.gbreve = 500;\n    t.onequarter = 750;\n    t.Scaron = 556;\n    t.Scommaaccent = 556;\n    t.Ohungarumlaut = 778;\n    t.degree = 400;\n    t.ograve = 500;\n    t.Ccaron = 722;\n    t.ugrave = 556;\n    t.radical = 549;\n    t.Dcaron = 722;\n    t.rcommaaccent = 444;\n    t.Ntilde = 722;\n    t.otilde = 500;\n    t.Rcommaaccent = 722;\n    t.Lcommaaccent = 667;\n    t.Atilde = 722;\n    t.Aogonek = 722;\n    t.Aring = 722;\n    t.Otilde = 778;\n    t.zdotaccent = 444;\n    t.Ecaron = 667;\n    t.Iogonek = 389;\n    t.kcommaaccent = 556;\n    t.minus = 570;\n    t.Icircumflex = 389;\n    t.ncaron = 556;\n    t.tcommaaccent = 333;\n    t.logicalnot = 570;\n    t.odieresis = 500;\n    t.udieresis = 556;\n    t.notequal = 549;\n    t.gcommaaccent = 500;\n    t.eth = 500;\n    t.zcaron = 444;\n    t.ncommaaccent = 556;\n    t.onesuperior = 300;\n    t.imacron = 278;\n    t.Euro = 500;\n  });\n  // eslint-disable-next-line no-shadow\n  t[\"Times-BoldItalic\"] = getLookupTableFactory(function (t) {\n    t.space = 250;\n    t.exclam = 389;\n    t.quotedbl = 555;\n    t.numbersign = 500;\n    t.dollar = 500;\n    t.percent = 833;\n    t.ampersand = 778;\n    t.quoteright = 333;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 500;\n    t.plus = 570;\n    t.comma = 250;\n    t.hyphen = 333;\n    t.period = 250;\n    t.slash = 278;\n    t.zero = 500;\n    t.one = 500;\n    t.two = 500;\n    t.three = 500;\n    t.four = 500;\n    t.five = 500;\n    t.six = 500;\n    t.seven = 500;\n    t.eight = 500;\n    t.nine = 500;\n    t.colon = 333;\n    t.semicolon = 333;\n    t.less = 570;\n    t.equal = 570;\n    t.greater = 570;\n    t.question = 500;\n    t.at = 832;\n    t.A = 667;\n    t.B = 667;\n    t.C = 667;\n    t.D = 722;\n    t.E = 667;\n    t.F = 667;\n    t.G = 722;\n    t.H = 778;\n    t.I = 389;\n    t.J = 500;\n    t.K = 667;\n    t.L = 611;\n    t.M = 889;\n    t.N = 722;\n    t.O = 722;\n    t.P = 611;\n    t.Q = 722;\n    t.R = 667;\n    t.S = 556;\n    t.T = 611;\n    t.U = 722;\n    t.V = 667;\n    t.W = 889;\n    t.X = 667;\n    t.Y = 611;\n    t.Z = 611;\n    t.bracketleft = 333;\n    t.backslash = 278;\n    t.bracketright = 333;\n    t.asciicircum = 570;\n    t.underscore = 500;\n    t.quoteleft = 333;\n    t.a = 500;\n    t.b = 500;\n    t.c = 444;\n    t.d = 500;\n    t.e = 444;\n    t.f = 333;\n    t.g = 500;\n    t.h = 556;\n    t.i = 278;\n    t.j = 278;\n    t.k = 500;\n    t.l = 278;\n    t.m = 778;\n    t.n = 556;\n    t.o = 500;\n    t.p = 500;\n    t.q = 500;\n    t.r = 389;\n    t.s = 389;\n    t.t = 278;\n    t.u = 556;\n    t.v = 444;\n    t.w = 667;\n    t.x = 500;\n    t.y = 444;\n    t.z = 389;\n    t.braceleft = 348;\n    t.bar = 220;\n    t.braceright = 348;\n    t.asciitilde = 570;\n    t.exclamdown = 389;\n    t.cent = 500;\n    t.sterling = 500;\n    t.fraction = 167;\n    t.yen = 500;\n    t.florin = 500;\n    t.section = 500;\n    t.currency = 500;\n    t.quotesingle = 278;\n    t.quotedblleft = 500;\n    t.guillemotleft = 500;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 556;\n    t.fl = 556;\n    t.endash = 500;\n    t.dagger = 500;\n    t.daggerdbl = 500;\n    t.periodcentered = 250;\n    t.paragraph = 500;\n    t.bullet = 350;\n    t.quotesinglbase = 333;\n    t.quotedblbase = 500;\n    t.quotedblright = 500;\n    t.guillemotright = 500;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 500;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 944;\n    t.ordfeminine = 266;\n    t.Lslash = 611;\n    t.Oslash = 722;\n    t.OE = 944;\n    t.ordmasculine = 300;\n    t.ae = 722;\n    t.dotlessi = 278;\n    t.lslash = 278;\n    t.oslash = 500;\n    t.oe = 722;\n    t.germandbls = 500;\n    t.Idieresis = 389;\n    t.eacute = 444;\n    t.abreve = 500;\n    t.uhungarumlaut = 556;\n    t.ecaron = 444;\n    t.Ydieresis = 611;\n    t.divide = 570;\n    t.Yacute = 611;\n    t.Acircumflex = 667;\n    t.aacute = 500;\n    t.Ucircumflex = 722;\n    t.yacute = 444;\n    t.scommaaccent = 389;\n    t.ecircumflex = 444;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 500;\n    t.Uacute = 722;\n    t.uogonek = 556;\n    t.Edieresis = 667;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 747;\n    t.Emacron = 667;\n    t.ccaron = 444;\n    t.aring = 500;\n    t.Ncommaaccent = 722;\n    t.lacute = 278;\n    t.agrave = 500;\n    t.Tcommaaccent = 611;\n    t.Cacute = 667;\n    t.atilde = 500;\n    t.Edotaccent = 667;\n    t.scaron = 389;\n    t.scedilla = 389;\n    t.iacute = 278;\n    t.lozenge = 494;\n    t.Rcaron = 667;\n    t.Gcommaaccent = 722;\n    t.ucircumflex = 556;\n    t.acircumflex = 500;\n    t.Amacron = 667;\n    t.rcaron = 389;\n    t.ccedilla = 444;\n    t.Zdotaccent = 611;\n    t.Thorn = 611;\n    t.Omacron = 722;\n    t.Racute = 667;\n    t.Sacute = 556;\n    t.dcaron = 608;\n    t.Umacron = 722;\n    t.uring = 556;\n    t.threesuperior = 300;\n    t.Ograve = 722;\n    t.Agrave = 667;\n    t.Abreve = 667;\n    t.multiply = 570;\n    t.uacute = 556;\n    t.Tcaron = 611;\n    t.partialdiff = 494;\n    t.ydieresis = 444;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 667;\n    t.adieresis = 500;\n    t.edieresis = 444;\n    t.cacute = 444;\n    t.nacute = 556;\n    t.umacron = 556;\n    t.Ncaron = 722;\n    t.Iacute = 389;\n    t.plusminus = 570;\n    t.brokenbar = 220;\n    t.registered = 747;\n    t.Gbreve = 722;\n    t.Idotaccent = 389;\n    t.summation = 600;\n    t.Egrave = 667;\n    t.racute = 389;\n    t.omacron = 500;\n    t.Zacute = 611;\n    t.Zcaron = 611;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 667;\n    t.lcommaaccent = 278;\n    t.tcaron = 366;\n    t.eogonek = 444;\n    t.Uogonek = 722;\n    t.Aacute = 667;\n    t.Adieresis = 667;\n    t.egrave = 444;\n    t.zacute = 389;\n    t.iogonek = 278;\n    t.Oacute = 722;\n    t.oacute = 500;\n    t.amacron = 500;\n    t.sacute = 389;\n    t.idieresis = 278;\n    t.Ocircumflex = 722;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 500;\n    t.twosuperior = 300;\n    t.Odieresis = 722;\n    t.mu = 576;\n    t.igrave = 278;\n    t.ohungarumlaut = 500;\n    t.Eogonek = 667;\n    t.dcroat = 500;\n    t.threequarters = 750;\n    t.Scedilla = 556;\n    t.lcaron = 382;\n    t.Kcommaaccent = 667;\n    t.Lacute = 611;\n    t.trademark = 1000;\n    t.edotaccent = 444;\n    t.Igrave = 389;\n    t.Imacron = 389;\n    t.Lcaron = 611;\n    t.onehalf = 750;\n    t.lessequal = 549;\n    t.ocircumflex = 500;\n    t.ntilde = 556;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 667;\n    t.emacron = 444;\n    t.gbreve = 500;\n    t.onequarter = 750;\n    t.Scaron = 556;\n    t.Scommaaccent = 556;\n    t.Ohungarumlaut = 722;\n    t.degree = 400;\n    t.ograve = 500;\n    t.Ccaron = 667;\n    t.ugrave = 556;\n    t.radical = 549;\n    t.Dcaron = 722;\n    t.rcommaaccent = 389;\n    t.Ntilde = 722;\n    t.otilde = 500;\n    t.Rcommaaccent = 667;\n    t.Lcommaaccent = 611;\n    t.Atilde = 667;\n    t.Aogonek = 667;\n    t.Aring = 667;\n    t.Otilde = 722;\n    t.zdotaccent = 389;\n    t.Ecaron = 667;\n    t.Iogonek = 389;\n    t.kcommaaccent = 500;\n    t.minus = 606;\n    t.Icircumflex = 389;\n    t.ncaron = 556;\n    t.tcommaaccent = 278;\n    t.logicalnot = 606;\n    t.odieresis = 500;\n    t.udieresis = 556;\n    t.notequal = 549;\n    t.gcommaaccent = 500;\n    t.eth = 500;\n    t.zcaron = 389;\n    t.ncommaaccent = 556;\n    t.onesuperior = 300;\n    t.imacron = 278;\n    t.Euro = 500;\n  });\n  // eslint-disable-next-line no-shadow\n  t[\"Times-Italic\"] = getLookupTableFactory(function (t) {\n    t.space = 250;\n    t.exclam = 333;\n    t.quotedbl = 420;\n    t.numbersign = 500;\n    t.dollar = 500;\n    t.percent = 833;\n    t.ampersand = 778;\n    t.quoteright = 333;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 500;\n    t.plus = 675;\n    t.comma = 250;\n    t.hyphen = 333;\n    t.period = 250;\n    t.slash = 278;\n    t.zero = 500;\n    t.one = 500;\n    t.two = 500;\n    t.three = 500;\n    t.four = 500;\n    t.five = 500;\n    t.six = 500;\n    t.seven = 500;\n    t.eight = 500;\n    t.nine = 500;\n    t.colon = 333;\n    t.semicolon = 333;\n    t.less = 675;\n    t.equal = 675;\n    t.greater = 675;\n    t.question = 500;\n    t.at = 920;\n    t.A = 611;\n    t.B = 611;\n    t.C = 667;\n    t.D = 722;\n    t.E = 611;\n    t.F = 611;\n    t.G = 722;\n    t.H = 722;\n    t.I = 333;\n    t.J = 444;\n    t.K = 667;\n    t.L = 556;\n    t.M = 833;\n    t.N = 667;\n    t.O = 722;\n    t.P = 611;\n    t.Q = 722;\n    t.R = 611;\n    t.S = 500;\n    t.T = 556;\n    t.U = 722;\n    t.V = 611;\n    t.W = 833;\n    t.X = 611;\n    t.Y = 556;\n    t.Z = 556;\n    t.bracketleft = 389;\n    t.backslash = 278;\n    t.bracketright = 389;\n    t.asciicircum = 422;\n    t.underscore = 500;\n    t.quoteleft = 333;\n    t.a = 500;\n    t.b = 500;\n    t.c = 444;\n    t.d = 500;\n    t.e = 444;\n    t.f = 278;\n    t.g = 500;\n    t.h = 500;\n    t.i = 278;\n    t.j = 278;\n    t.k = 444;\n    t.l = 278;\n    t.m = 722;\n    t.n = 500;\n    t.o = 500;\n    t.p = 500;\n    t.q = 500;\n    t.r = 389;\n    t.s = 389;\n    t.t = 278;\n    t.u = 500;\n    t.v = 444;\n    t.w = 667;\n    t.x = 444;\n    t.y = 444;\n    t.z = 389;\n    t.braceleft = 400;\n    t.bar = 275;\n    t.braceright = 400;\n    t.asciitilde = 541;\n    t.exclamdown = 389;\n    t.cent = 500;\n    t.sterling = 500;\n    t.fraction = 167;\n    t.yen = 500;\n    t.florin = 500;\n    t.section = 500;\n    t.currency = 500;\n    t.quotesingle = 214;\n    t.quotedblleft = 556;\n    t.guillemotleft = 500;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 500;\n    t.fl = 500;\n    t.endash = 500;\n    t.dagger = 500;\n    t.daggerdbl = 500;\n    t.periodcentered = 250;\n    t.paragraph = 523;\n    t.bullet = 350;\n    t.quotesinglbase = 333;\n    t.quotedblbase = 556;\n    t.quotedblright = 556;\n    t.guillemotright = 500;\n    t.ellipsis = 889;\n    t.perthousand = 1000;\n    t.questiondown = 500;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 889;\n    t.AE = 889;\n    t.ordfeminine = 276;\n    t.Lslash = 556;\n    t.Oslash = 722;\n    t.OE = 944;\n    t.ordmasculine = 310;\n    t.ae = 667;\n    t.dotlessi = 278;\n    t.lslash = 278;\n    t.oslash = 500;\n    t.oe = 667;\n    t.germandbls = 500;\n    t.Idieresis = 333;\n    t.eacute = 444;\n    t.abreve = 500;\n    t.uhungarumlaut = 500;\n    t.ecaron = 444;\n    t.Ydieresis = 556;\n    t.divide = 675;\n    t.Yacute = 556;\n    t.Acircumflex = 611;\n    t.aacute = 500;\n    t.Ucircumflex = 722;\n    t.yacute = 444;\n    t.scommaaccent = 389;\n    t.ecircumflex = 444;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 500;\n    t.Uacute = 722;\n    t.uogonek = 500;\n    t.Edieresis = 611;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 760;\n    t.Emacron = 611;\n    t.ccaron = 444;\n    t.aring = 500;\n    t.Ncommaaccent = 667;\n    t.lacute = 278;\n    t.agrave = 500;\n    t.Tcommaaccent = 556;\n    t.Cacute = 667;\n    t.atilde = 500;\n    t.Edotaccent = 611;\n    t.scaron = 389;\n    t.scedilla = 389;\n    t.iacute = 278;\n    t.lozenge = 471;\n    t.Rcaron = 611;\n    t.Gcommaaccent = 722;\n    t.ucircumflex = 500;\n    t.acircumflex = 500;\n    t.Amacron = 611;\n    t.rcaron = 389;\n    t.ccedilla = 444;\n    t.Zdotaccent = 556;\n    t.Thorn = 611;\n    t.Omacron = 722;\n    t.Racute = 611;\n    t.Sacute = 500;\n    t.dcaron = 544;\n    t.Umacron = 722;\n    t.uring = 500;\n    t.threesuperior = 300;\n    t.Ograve = 722;\n    t.Agrave = 611;\n    t.Abreve = 611;\n    t.multiply = 675;\n    t.uacute = 500;\n    t.Tcaron = 556;\n    t.partialdiff = 476;\n    t.ydieresis = 444;\n    t.Nacute = 667;\n    t.icircumflex = 278;\n    t.Ecircumflex = 611;\n    t.adieresis = 500;\n    t.edieresis = 444;\n    t.cacute = 444;\n    t.nacute = 500;\n    t.umacron = 500;\n    t.Ncaron = 667;\n    t.Iacute = 333;\n    t.plusminus = 675;\n    t.brokenbar = 275;\n    t.registered = 760;\n    t.Gbreve = 722;\n    t.Idotaccent = 333;\n    t.summation = 600;\n    t.Egrave = 611;\n    t.racute = 389;\n    t.omacron = 500;\n    t.Zacute = 556;\n    t.Zcaron = 556;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 667;\n    t.lcommaaccent = 278;\n    t.tcaron = 300;\n    t.eogonek = 444;\n    t.Uogonek = 722;\n    t.Aacute = 611;\n    t.Adieresis = 611;\n    t.egrave = 444;\n    t.zacute = 389;\n    t.iogonek = 278;\n    t.Oacute = 722;\n    t.oacute = 500;\n    t.amacron = 500;\n    t.sacute = 389;\n    t.idieresis = 278;\n    t.Ocircumflex = 722;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 500;\n    t.twosuperior = 300;\n    t.Odieresis = 722;\n    t.mu = 500;\n    t.igrave = 278;\n    t.ohungarumlaut = 500;\n    t.Eogonek = 611;\n    t.dcroat = 500;\n    t.threequarters = 750;\n    t.Scedilla = 500;\n    t.lcaron = 300;\n    t.Kcommaaccent = 667;\n    t.Lacute = 556;\n    t.trademark = 980;\n    t.edotaccent = 444;\n    t.Igrave = 333;\n    t.Imacron = 333;\n    t.Lcaron = 611;\n    t.onehalf = 750;\n    t.lessequal = 549;\n    t.ocircumflex = 500;\n    t.ntilde = 500;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 611;\n    t.emacron = 444;\n    t.gbreve = 500;\n    t.onequarter = 750;\n    t.Scaron = 500;\n    t.Scommaaccent = 500;\n    t.Ohungarumlaut = 722;\n    t.degree = 400;\n    t.ograve = 500;\n    t.Ccaron = 667;\n    t.ugrave = 500;\n    t.radical = 453;\n    t.Dcaron = 722;\n    t.rcommaaccent = 389;\n    t.Ntilde = 667;\n    t.otilde = 500;\n    t.Rcommaaccent = 611;\n    t.Lcommaaccent = 556;\n    t.Atilde = 611;\n    t.Aogonek = 611;\n    t.Aring = 611;\n    t.Otilde = 722;\n    t.zdotaccent = 389;\n    t.Ecaron = 611;\n    t.Iogonek = 333;\n    t.kcommaaccent = 444;\n    t.minus = 675;\n    t.Icircumflex = 333;\n    t.ncaron = 500;\n    t.tcommaaccent = 278;\n    t.logicalnot = 675;\n    t.odieresis = 500;\n    t.udieresis = 500;\n    t.notequal = 549;\n    t.gcommaaccent = 500;\n    t.eth = 500;\n    t.zcaron = 389;\n    t.ncommaaccent = 500;\n    t.onesuperior = 300;\n    t.imacron = 278;\n    t.Euro = 500;\n  });\n  // eslint-disable-next-line no-shadow\n  t.ZapfDingbats = getLookupTableFactory(function (t) {\n    t.space = 278;\n    t.a1 = 974;\n    t.a2 = 961;\n    t.a202 = 974;\n    t.a3 = 980;\n    t.a4 = 719;\n    t.a5 = 789;\n    t.a119 = 790;\n    t.a118 = 791;\n    t.a117 = 690;\n    t.a11 = 960;\n    t.a12 = 939;\n    t.a13 = 549;\n    t.a14 = 855;\n    t.a15 = 911;\n    t.a16 = 933;\n    t.a105 = 911;\n    t.a17 = 945;\n    t.a18 = 974;\n    t.a19 = 755;\n    t.a20 = 846;\n    t.a21 = 762;\n    t.a22 = 761;\n    t.a23 = 571;\n    t.a24 = 677;\n    t.a25 = 763;\n    t.a26 = 760;\n    t.a27 = 759;\n    t.a28 = 754;\n    t.a6 = 494;\n    t.a7 = 552;\n    t.a8 = 537;\n    t.a9 = 577;\n    t.a10 = 692;\n    t.a29 = 786;\n    t.a30 = 788;\n    t.a31 = 788;\n    t.a32 = 790;\n    t.a33 = 793;\n    t.a34 = 794;\n    t.a35 = 816;\n    t.a36 = 823;\n    t.a37 = 789;\n    t.a38 = 841;\n    t.a39 = 823;\n    t.a40 = 833;\n    t.a41 = 816;\n    t.a42 = 831;\n    t.a43 = 923;\n    t.a44 = 744;\n    t.a45 = 723;\n    t.a46 = 749;\n    t.a47 = 790;\n    t.a48 = 792;\n    t.a49 = 695;\n    t.a50 = 776;\n    t.a51 = 768;\n    t.a52 = 792;\n    t.a53 = 759;\n    t.a54 = 707;\n    t.a55 = 708;\n    t.a56 = 682;\n    t.a57 = 701;\n    t.a58 = 826;\n    t.a59 = 815;\n    t.a60 = 789;\n    t.a61 = 789;\n    t.a62 = 707;\n    t.a63 = 687;\n    t.a64 = 696;\n    t.a65 = 689;\n    t.a66 = 786;\n    t.a67 = 787;\n    t.a68 = 713;\n    t.a69 = 791;\n    t.a70 = 785;\n    t.a71 = 791;\n    t.a72 = 873;\n    t.a73 = 761;\n    t.a74 = 762;\n    t.a203 = 762;\n    t.a75 = 759;\n    t.a204 = 759;\n    t.a76 = 892;\n    t.a77 = 892;\n    t.a78 = 788;\n    t.a79 = 784;\n    t.a81 = 438;\n    t.a82 = 138;\n    t.a83 = 277;\n    t.a84 = 415;\n    t.a97 = 392;\n    t.a98 = 392;\n    t.a99 = 668;\n    t.a100 = 668;\n    t.a89 = 390;\n    t.a90 = 390;\n    t.a93 = 317;\n    t.a94 = 317;\n    t.a91 = 276;\n    t.a92 = 276;\n    t.a205 = 509;\n    t.a85 = 509;\n    t.a206 = 410;\n    t.a86 = 410;\n    t.a87 = 234;\n    t.a88 = 234;\n    t.a95 = 334;\n    t.a96 = 334;\n    t.a101 = 732;\n    t.a102 = 544;\n    t.a103 = 544;\n    t.a104 = 910;\n    t.a106 = 667;\n    t.a107 = 760;\n    t.a108 = 760;\n    t.a112 = 776;\n    t.a111 = 595;\n    t.a110 = 694;\n    t.a109 = 626;\n    t.a120 = 788;\n    t.a121 = 788;\n    t.a122 = 788;\n    t.a123 = 788;\n    t.a124 = 788;\n    t.a125 = 788;\n    t.a126 = 788;\n    t.a127 = 788;\n    t.a128 = 788;\n    t.a129 = 788;\n    t.a130 = 788;\n    t.a131 = 788;\n    t.a132 = 788;\n    t.a133 = 788;\n    t.a134 = 788;\n    t.a135 = 788;\n    t.a136 = 788;\n    t.a137 = 788;\n    t.a138 = 788;\n    t.a139 = 788;\n    t.a140 = 788;\n    t.a141 = 788;\n    t.a142 = 788;\n    t.a143 = 788;\n    t.a144 = 788;\n    t.a145 = 788;\n    t.a146 = 788;\n    t.a147 = 788;\n    t.a148 = 788;\n    t.a149 = 788;\n    t.a150 = 788;\n    t.a151 = 788;\n    t.a152 = 788;\n    t.a153 = 788;\n    t.a154 = 788;\n    t.a155 = 788;\n    t.a156 = 788;\n    t.a157 = 788;\n    t.a158 = 788;\n    t.a159 = 788;\n    t.a160 = 894;\n    t.a161 = 838;\n    t.a163 = 1016;\n    t.a164 = 458;\n    t.a196 = 748;\n    t.a165 = 924;\n    t.a192 = 748;\n    t.a166 = 918;\n    t.a167 = 927;\n    t.a168 = 928;\n    t.a169 = 928;\n    t.a170 = 834;\n    t.a171 = 873;\n    t.a172 = 828;\n    t.a173 = 924;\n    t.a162 = 924;\n    t.a174 = 917;\n    t.a175 = 930;\n    t.a176 = 931;\n    t.a177 = 463;\n    t.a178 = 883;\n    t.a179 = 836;\n    t.a193 = 836;\n    t.a180 = 867;\n    t.a199 = 867;\n    t.a181 = 696;\n    t.a200 = 696;\n    t.a182 = 874;\n    t.a201 = 874;\n    t.a183 = 760;\n    t.a184 = 946;\n    t.a197 = 771;\n    t.a185 = 865;\n    t.a194 = 771;\n    t.a198 = 888;\n    t.a186 = 967;\n    t.a195 = 888;\n    t.a187 = 831;\n    t.a188 = 873;\n    t.a189 = 927;\n    t.a190 = 970;\n    t.a191 = 918;\n  });\n});\n\nexport { getMetrics };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  FormatError,\n  info,\n  isBool,\n  IsEvalSupportedCached,\n  unreachable,\n} from \"../shared/util.js\";\nimport { isDict, isStream } from \"./primitives.js\";\nimport { PostScriptLexer, PostScriptParser } from \"./ps_parser.js\";\n\nclass PDFFunctionFactory {\n  constructor({ xref, isEvalSupported = true }) {\n    this.xref = xref;\n    this.isEvalSupported = isEvalSupported !== false;\n  }\n\n  create(fn) {\n    return PDFFunction.parse({\n      xref: this.xref,\n      isEvalSupported: this.isEvalSupported,\n      fn,\n    });\n  }\n\n  createFromArray(fnObj) {\n    return PDFFunction.parseArray({\n      xref: this.xref,\n      isEvalSupported: this.isEvalSupported,\n      fnObj,\n    });\n  }\n}\n\nfunction toNumberArray(arr) {\n  if (!Array.isArray(arr)) {\n    return null;\n  }\n  const length = arr.length;\n  for (let i = 0; i < length; i++) {\n    if (typeof arr[i] !== \"number\") {\n      // Non-number is found -- convert all items to numbers.\n      const result = new Array(length);\n      for (let j = 0; j < length; j++) {\n        result[j] = +arr[j];\n      }\n      return result;\n    }\n  }\n  return arr;\n}\n\nvar PDFFunction = (function PDFFunctionClosure() {\n  const CONSTRUCT_SAMPLED = 0;\n  const CONSTRUCT_INTERPOLATED = 2;\n  const CONSTRUCT_STICHED = 3;\n  const CONSTRUCT_POSTSCRIPT = 4;\n\n  return {\n    getSampleArray(size, outputSize, bps, stream) {\n      var i, ii;\n      var length = 1;\n      for (i = 0, ii = size.length; i < ii; i++) {\n        length *= size[i];\n      }\n      length *= outputSize;\n\n      var array = new Array(length);\n      var codeSize = 0;\n      var codeBuf = 0;\n      // 32 is a valid bps so shifting won't work\n      var sampleMul = 1.0 / (2.0 ** bps - 1);\n\n      var strBytes = stream.getBytes((length * bps + 7) / 8);\n      var strIdx = 0;\n      for (i = 0; i < length; i++) {\n        while (codeSize < bps) {\n          codeBuf <<= 8;\n          codeBuf |= strBytes[strIdx++];\n          codeSize += 8;\n        }\n        codeSize -= bps;\n        array[i] = (codeBuf >> codeSize) * sampleMul;\n        codeBuf &= (1 << codeSize) - 1;\n      }\n      return array;\n    },\n\n    getIR({ xref, isEvalSupported, fn }) {\n      var dict = fn.dict;\n      if (!dict) {\n        dict = fn;\n      }\n\n      var types = [\n        this.constructSampled,\n        null,\n        this.constructInterpolated,\n        this.constructStiched,\n        this.constructPostScript,\n      ];\n\n      var typeNum = dict.get(\"FunctionType\");\n      var typeFn = types[typeNum];\n      if (!typeFn) {\n        throw new FormatError(\"Unknown type of function\");\n      }\n\n      return typeFn.call(this, { xref, isEvalSupported, fn, dict });\n    },\n\n    fromIR({ xref, isEvalSupported, IR }) {\n      var type = IR[0];\n      switch (type) {\n        case CONSTRUCT_SAMPLED:\n          return this.constructSampledFromIR({ xref, isEvalSupported, IR });\n        case CONSTRUCT_INTERPOLATED:\n          return this.constructInterpolatedFromIR({\n            xref,\n            isEvalSupported,\n            IR,\n          });\n        case CONSTRUCT_STICHED:\n          return this.constructStichedFromIR({ xref, isEvalSupported, IR });\n        // case CONSTRUCT_POSTSCRIPT:\n        default:\n          return this.constructPostScriptFromIR({ xref, isEvalSupported, IR });\n      }\n    },\n\n    parse({ xref, isEvalSupported, fn }) {\n      const IR = this.getIR({ xref, isEvalSupported, fn });\n      return this.fromIR({ xref, isEvalSupported, IR });\n    },\n\n    parseArray({ xref, isEvalSupported, fnObj }) {\n      if (!Array.isArray(fnObj)) {\n        // not an array -- parsing as regular function\n        return this.parse({ xref, isEvalSupported, fn: fnObj });\n      }\n\n      var fnArray = [];\n      for (var j = 0, jj = fnObj.length; j < jj; j++) {\n        fnArray.push(\n          this.parse({ xref, isEvalSupported, fn: xref.fetchIfRef(fnObj[j]) })\n        );\n      }\n      return function (src, srcOffset, dest, destOffset) {\n        for (var i = 0, ii = fnArray.length; i < ii; i++) {\n          fnArray[i](src, srcOffset, dest, destOffset + i);\n        }\n      };\n    },\n\n    constructSampled({ xref, isEvalSupported, fn, dict }) {\n      function toMultiArray(arr) {\n        var inputLength = arr.length;\n        var out = [];\n        var index = 0;\n        for (var i = 0; i < inputLength; i += 2) {\n          out[index] = [arr[i], arr[i + 1]];\n          ++index;\n        }\n        return out;\n      }\n      var domain = toNumberArray(dict.getArray(\"Domain\"));\n      var range = toNumberArray(dict.getArray(\"Range\"));\n\n      if (!domain || !range) {\n        throw new FormatError(\"No domain or range\");\n      }\n\n      var inputSize = domain.length / 2;\n      var outputSize = range.length / 2;\n\n      domain = toMultiArray(domain);\n      range = toMultiArray(range);\n\n      var size = toNumberArray(dict.getArray(\"Size\"));\n      var bps = dict.get(\"BitsPerSample\");\n      var order = dict.get(\"Order\") || 1;\n      if (order !== 1) {\n        // No description how cubic spline interpolation works in PDF32000:2008\n        // As in poppler, ignoring order, linear interpolation may work as good\n        info(\"No support for cubic spline interpolation: \" + order);\n      }\n\n      var encode = toNumberArray(dict.getArray(\"Encode\"));\n      if (!encode) {\n        encode = [];\n        for (var i = 0; i < inputSize; ++i) {\n          encode.push([0, size[i] - 1]);\n        }\n      } else {\n        encode = toMultiArray(encode);\n      }\n\n      var decode = toNumberArray(dict.getArray(\"Decode\"));\n      if (!decode) {\n        decode = range;\n      } else {\n        decode = toMultiArray(decode);\n      }\n\n      var samples = this.getSampleArray(size, outputSize, bps, fn);\n\n      return [\n        CONSTRUCT_SAMPLED,\n        inputSize,\n        domain,\n        encode,\n        decode,\n        samples,\n        size,\n        outputSize,\n        2 ** bps - 1,\n        range,\n      ];\n    },\n\n    constructSampledFromIR({ xref, isEvalSupported, IR }) {\n      // See chapter 3, page 109 of the PDF reference\n      function interpolate(x, xmin, xmax, ymin, ymax) {\n        return ymin + (x - xmin) * ((ymax - ymin) / (xmax - xmin));\n      }\n\n      return function constructSampledFromIRResult(\n        src,\n        srcOffset,\n        dest,\n        destOffset\n      ) {\n        // See chapter 3, page 110 of the PDF reference.\n        var m = IR[1];\n        var domain = IR[2];\n        var encode = IR[3];\n        var decode = IR[4];\n        var samples = IR[5];\n        var size = IR[6];\n        var n = IR[7];\n        // var mask = IR[8];\n        var range = IR[9];\n\n        // Building the cube vertices: its part and sample index\n        // http://rjwagner49.com/Mathematics/Interpolation.pdf\n        var cubeVertices = 1 << m;\n        var cubeN = new Float64Array(cubeVertices);\n        var cubeVertex = new Uint32Array(cubeVertices);\n        var i, j;\n        for (j = 0; j < cubeVertices; j++) {\n          cubeN[j] = 1;\n        }\n\n        var k = n,\n          pos = 1;\n        // Map x_i to y_j for 0 <= i < m using the sampled function.\n        for (i = 0; i < m; ++i) {\n          // x_i' = min(max(x_i, Domain_2i), Domain_2i+1)\n          var domain_2i = domain[i][0];\n          var domain_2i_1 = domain[i][1];\n          var xi = Math.min(\n            Math.max(src[srcOffset + i], domain_2i),\n            domain_2i_1\n          );\n\n          // e_i = Interpolate(x_i', Domain_2i, Domain_2i+1,\n          //                   Encode_2i, Encode_2i+1)\n          var e = interpolate(\n            xi,\n            domain_2i,\n            domain_2i_1,\n            encode[i][0],\n            encode[i][1]\n          );\n\n          // e_i' = min(max(e_i, 0), Size_i - 1)\n          var size_i = size[i];\n          e = Math.min(Math.max(e, 0), size_i - 1);\n\n          // Adjusting the cube: N and vertex sample index\n          var e0 = e < size_i - 1 ? Math.floor(e) : e - 1; // e1 = e0 + 1;\n          var n0 = e0 + 1 - e; // (e1 - e) / (e1 - e0);\n          var n1 = e - e0; // (e - e0) / (e1 - e0);\n          var offset0 = e0 * k;\n          var offset1 = offset0 + k; // e1 * k\n          for (j = 0; j < cubeVertices; j++) {\n            if (j & pos) {\n              cubeN[j] *= n1;\n              cubeVertex[j] += offset1;\n            } else {\n              cubeN[j] *= n0;\n              cubeVertex[j] += offset0;\n            }\n          }\n\n          k *= size_i;\n          pos <<= 1;\n        }\n\n        for (j = 0; j < n; ++j) {\n          // Sum all cube vertices' samples portions\n          var rj = 0;\n          for (i = 0; i < cubeVertices; i++) {\n            rj += samples[cubeVertex[i] + j] * cubeN[i];\n          }\n\n          // r_j' = Interpolate(r_j, 0, 2^BitsPerSample - 1,\n          //                    Decode_2j, Decode_2j+1)\n          rj = interpolate(rj, 0, 1, decode[j][0], decode[j][1]);\n\n          // y_j = min(max(r_j, range_2j), range_2j+1)\n          dest[destOffset + j] = Math.min(\n            Math.max(rj, range[j][0]),\n            range[j][1]\n          );\n        }\n      };\n    },\n\n    constructInterpolated({ xref, isEvalSupported, fn, dict }) {\n      var c0 = toNumberArray(dict.getArray(\"C0\")) || [0];\n      var c1 = toNumberArray(dict.getArray(\"C1\")) || [1];\n      var n = dict.get(\"N\");\n\n      var length = c0.length;\n      var diff = [];\n      for (var i = 0; i < length; ++i) {\n        diff.push(c1[i] - c0[i]);\n      }\n\n      return [CONSTRUCT_INTERPOLATED, c0, diff, n];\n    },\n\n    constructInterpolatedFromIR({ xref, isEvalSupported, IR }) {\n      var c0 = IR[1];\n      var diff = IR[2];\n      var n = IR[3];\n\n      var length = diff.length;\n\n      return function constructInterpolatedFromIRResult(\n        src,\n        srcOffset,\n        dest,\n        destOffset\n      ) {\n        var x = n === 1 ? src[srcOffset] : src[srcOffset] ** n;\n\n        for (var j = 0; j < length; ++j) {\n          dest[destOffset + j] = c0[j] + x * diff[j];\n        }\n      };\n    },\n\n    constructStiched({ xref, isEvalSupported, fn, dict }) {\n      var domain = toNumberArray(dict.getArray(\"Domain\"));\n\n      if (!domain) {\n        throw new FormatError(\"No domain\");\n      }\n\n      var inputSize = domain.length / 2;\n      if (inputSize !== 1) {\n        throw new FormatError(\"Bad domain for stiched function\");\n      }\n\n      var fnRefs = dict.get(\"Functions\");\n      var fns = [];\n      for (var i = 0, ii = fnRefs.length; i < ii; ++i) {\n        fns.push(\n          this.parse({ xref, isEvalSupported, fn: xref.fetchIfRef(fnRefs[i]) })\n        );\n      }\n\n      var bounds = toNumberArray(dict.getArray(\"Bounds\"));\n      var encode = toNumberArray(dict.getArray(\"Encode\"));\n\n      return [CONSTRUCT_STICHED, domain, bounds, encode, fns];\n    },\n\n    constructStichedFromIR({ xref, isEvalSupported, IR }) {\n      var domain = IR[1];\n      var bounds = IR[2];\n      var encode = IR[3];\n      var fns = IR[4];\n      var tmpBuf = new Float32Array(1);\n\n      return function constructStichedFromIRResult(\n        src,\n        srcOffset,\n        dest,\n        destOffset\n      ) {\n        var clip = function constructStichedFromIRClip(v, min, max) {\n          if (v > max) {\n            v = max;\n          } else if (v < min) {\n            v = min;\n          }\n          return v;\n        };\n\n        // clip to domain\n        var v = clip(src[srcOffset], domain[0], domain[1]);\n        // calculate which bound the value is in\n        for (var i = 0, ii = bounds.length; i < ii; ++i) {\n          if (v < bounds[i]) {\n            break;\n          }\n        }\n\n        // encode value into domain of function\n        var dmin = domain[0];\n        if (i > 0) {\n          dmin = bounds[i - 1];\n        }\n        var dmax = domain[1];\n        if (i < bounds.length) {\n          dmax = bounds[i];\n        }\n\n        var rmin = encode[2 * i];\n        var rmax = encode[2 * i + 1];\n\n        // Prevent the value from becoming NaN as a result\n        // of division by zero (fixes issue6113.pdf).\n        tmpBuf[0] =\n          dmin === dmax\n            ? rmin\n            : rmin + ((v - dmin) * (rmax - rmin)) / (dmax - dmin);\n\n        // call the appropriate function\n        fns[i](tmpBuf, 0, dest, destOffset);\n      };\n    },\n\n    constructPostScript({ xref, isEvalSupported, fn, dict }) {\n      var domain = toNumberArray(dict.getArray(\"Domain\"));\n      var range = toNumberArray(dict.getArray(\"Range\"));\n\n      if (!domain) {\n        throw new FormatError(\"No domain.\");\n      }\n\n      if (!range) {\n        throw new FormatError(\"No range.\");\n      }\n\n      var lexer = new PostScriptLexer(fn);\n      var parser = new PostScriptParser(lexer);\n      var code = parser.parse();\n\n      return [CONSTRUCT_POSTSCRIPT, domain, range, code];\n    },\n\n    constructPostScriptFromIR({ xref, isEvalSupported, IR }) {\n      var domain = IR[1];\n      var range = IR[2];\n      var code = IR[3];\n\n      if (isEvalSupported && IsEvalSupportedCached.value) {\n        const compiled = new PostScriptCompiler().compile(code, domain, range);\n        if (compiled) {\n          // Compiled function consists of simple expressions such as addition,\n          // subtraction, Math.max, and also contains 'var' and 'return'\n          // statements. See the generation in the PostScriptCompiler below.\n          // eslint-disable-next-line no-new-func\n          return new Function(\n            \"src\",\n            \"srcOffset\",\n            \"dest\",\n            \"destOffset\",\n            compiled\n          );\n        }\n      }\n      info(\"Unable to compile PS function\");\n\n      var numOutputs = range.length >> 1;\n      var numInputs = domain.length >> 1;\n      var evaluator = new PostScriptEvaluator(code);\n      // Cache the values for a big speed up, the cache size is limited though\n      // since the number of possible values can be huge from a PS function.\n      var cache = Object.create(null);\n      // The MAX_CACHE_SIZE is set to ~4x the maximum number of distinct values\n      // seen in our tests.\n      var MAX_CACHE_SIZE = 2048 * 4;\n      var cache_available = MAX_CACHE_SIZE;\n      var tmpBuf = new Float32Array(numInputs);\n\n      return function constructPostScriptFromIRResult(\n        src,\n        srcOffset,\n        dest,\n        destOffset\n      ) {\n        var i, value;\n        var key = \"\";\n        var input = tmpBuf;\n        for (i = 0; i < numInputs; i++) {\n          value = src[srcOffset + i];\n          input[i] = value;\n          key += value + \"_\";\n        }\n\n        var cachedValue = cache[key];\n        if (cachedValue !== undefined) {\n          dest.set(cachedValue, destOffset);\n          return;\n        }\n\n        var output = new Float32Array(numOutputs);\n        var stack = evaluator.execute(input);\n        var stackIndex = stack.length - numOutputs;\n        for (i = 0; i < numOutputs; i++) {\n          value = stack[stackIndex + i];\n          var bound = range[i * 2];\n          if (value < bound) {\n            value = bound;\n          } else {\n            bound = range[i * 2 + 1];\n            if (value > bound) {\n              value = bound;\n            }\n          }\n          output[i] = value;\n        }\n        if (cache_available > 0) {\n          cache_available--;\n          cache[key] = output;\n        }\n        dest.set(output, destOffset);\n      };\n    },\n  };\n})();\n\nfunction isPDFFunction(v) {\n  var fnDict;\n  if (typeof v !== \"object\") {\n    return false;\n  } else if (isDict(v)) {\n    fnDict = v;\n  } else if (isStream(v)) {\n    fnDict = v.dict;\n  } else {\n    return false;\n  }\n  return fnDict.has(\"FunctionType\");\n}\n\nvar PostScriptStack = (function PostScriptStackClosure() {\n  var MAX_STACK_SIZE = 100;\n\n  // eslint-disable-next-line no-shadow\n  function PostScriptStack(initialStack) {\n    this.stack = !initialStack\n      ? []\n      : Array.prototype.slice.call(initialStack, 0);\n  }\n\n  PostScriptStack.prototype = {\n    push: function PostScriptStack_push(value) {\n      if (this.stack.length >= MAX_STACK_SIZE) {\n        throw new Error(\"PostScript function stack overflow.\");\n      }\n      this.stack.push(value);\n    },\n    pop: function PostScriptStack_pop() {\n      if (this.stack.length <= 0) {\n        throw new Error(\"PostScript function stack underflow.\");\n      }\n      return this.stack.pop();\n    },\n    copy: function PostScriptStack_copy(n) {\n      if (this.stack.length + n >= MAX_STACK_SIZE) {\n        throw new Error(\"PostScript function stack overflow.\");\n      }\n      var stack = this.stack;\n      for (var i = stack.length - n, j = n - 1; j >= 0; j--, i++) {\n        stack.push(stack[i]);\n      }\n    },\n    index: function PostScriptStack_index(n) {\n      this.push(this.stack[this.stack.length - n - 1]);\n    },\n    // rotate the last n stack elements p times\n    roll: function PostScriptStack_roll(n, p) {\n      var stack = this.stack;\n      var l = stack.length - n;\n      var r = stack.length - 1,\n        c = l + (p - Math.floor(p / n) * n),\n        i,\n        j,\n        t;\n      for (i = l, j = r; i < j; i++, j--) {\n        t = stack[i];\n        stack[i] = stack[j];\n        stack[j] = t;\n      }\n      for (i = l, j = c - 1; i < j; i++, j--) {\n        t = stack[i];\n        stack[i] = stack[j];\n        stack[j] = t;\n      }\n      for (i = c, j = r; i < j; i++, j--) {\n        t = stack[i];\n        stack[i] = stack[j];\n        stack[j] = t;\n      }\n    },\n  };\n  return PostScriptStack;\n})();\nvar PostScriptEvaluator = (function PostScriptEvaluatorClosure() {\n  // eslint-disable-next-line no-shadow\n  function PostScriptEvaluator(operators) {\n    this.operators = operators;\n  }\n  PostScriptEvaluator.prototype = {\n    execute: function PostScriptEvaluator_execute(initialStack) {\n      var stack = new PostScriptStack(initialStack);\n      var counter = 0;\n      var operators = this.operators;\n      var length = operators.length;\n      var operator, a, b;\n      while (counter < length) {\n        operator = operators[counter++];\n        if (typeof operator === \"number\") {\n          // Operator is really an operand and should be pushed to the stack.\n          stack.push(operator);\n          continue;\n        }\n        switch (operator) {\n          // non standard ps operators\n          case \"jz\": // jump if false\n            b = stack.pop();\n            a = stack.pop();\n            if (!a) {\n              counter = b;\n            }\n            break;\n          case \"j\": // jump\n            a = stack.pop();\n            counter = a;\n            break;\n\n          // all ps operators in alphabetical order (excluding if/ifelse)\n          case \"abs\":\n            a = stack.pop();\n            stack.push(Math.abs(a));\n            break;\n          case \"add\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a + b);\n            break;\n          case \"and\":\n            b = stack.pop();\n            a = stack.pop();\n            if (isBool(a) && isBool(b)) {\n              stack.push(a && b);\n            } else {\n              stack.push(a & b);\n            }\n            break;\n          case \"atan\":\n            a = stack.pop();\n            stack.push(Math.atan(a));\n            break;\n          case \"bitshift\":\n            b = stack.pop();\n            a = stack.pop();\n            if (a > 0) {\n              stack.push(a << b);\n            } else {\n              stack.push(a >> b);\n            }\n            break;\n          case \"ceiling\":\n            a = stack.pop();\n            stack.push(Math.ceil(a));\n            break;\n          case \"copy\":\n            a = stack.pop();\n            stack.copy(a);\n            break;\n          case \"cos\":\n            a = stack.pop();\n            stack.push(Math.cos(a));\n            break;\n          case \"cvi\":\n            a = stack.pop() | 0;\n            stack.push(a);\n            break;\n          case \"cvr\":\n            // noop\n            break;\n          case \"div\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a / b);\n            break;\n          case \"dup\":\n            stack.copy(1);\n            break;\n          case \"eq\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a === b);\n            break;\n          case \"exch\":\n            stack.roll(2, 1);\n            break;\n          case \"exp\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a ** b);\n            break;\n          case \"false\":\n            stack.push(false);\n            break;\n          case \"floor\":\n            a = stack.pop();\n            stack.push(Math.floor(a));\n            break;\n          case \"ge\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a >= b);\n            break;\n          case \"gt\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a > b);\n            break;\n          case \"idiv\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push((a / b) | 0);\n            break;\n          case \"index\":\n            a = stack.pop();\n            stack.index(a);\n            break;\n          case \"le\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a <= b);\n            break;\n          case \"ln\":\n            a = stack.pop();\n            stack.push(Math.log(a));\n            break;\n          case \"log\":\n            a = stack.pop();\n            stack.push(Math.log(a) / Math.LN10);\n            break;\n          case \"lt\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a < b);\n            break;\n          case \"mod\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a % b);\n            break;\n          case \"mul\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a * b);\n            break;\n          case \"ne\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a !== b);\n            break;\n          case \"neg\":\n            a = stack.pop();\n            stack.push(-a);\n            break;\n          case \"not\":\n            a = stack.pop();\n            if (isBool(a)) {\n              stack.push(!a);\n            } else {\n              stack.push(~a);\n            }\n            break;\n          case \"or\":\n            b = stack.pop();\n            a = stack.pop();\n            if (isBool(a) && isBool(b)) {\n              stack.push(a || b);\n            } else {\n              stack.push(a | b);\n            }\n            break;\n          case \"pop\":\n            stack.pop();\n            break;\n          case \"roll\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.roll(a, b);\n            break;\n          case \"round\":\n            a = stack.pop();\n            stack.push(Math.round(a));\n            break;\n          case \"sin\":\n            a = stack.pop();\n            stack.push(Math.sin(a));\n            break;\n          case \"sqrt\":\n            a = stack.pop();\n            stack.push(Math.sqrt(a));\n            break;\n          case \"sub\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a - b);\n            break;\n          case \"true\":\n            stack.push(true);\n            break;\n          case \"truncate\":\n            a = stack.pop();\n            a = a < 0 ? Math.ceil(a) : Math.floor(a);\n            stack.push(a);\n            break;\n          case \"xor\":\n            b = stack.pop();\n            a = stack.pop();\n            if (isBool(a) && isBool(b)) {\n              stack.push(a !== b);\n            } else {\n              stack.push(a ^ b);\n            }\n            break;\n          default:\n            throw new FormatError(`Unknown operator ${operator}`);\n        }\n      }\n      return stack.stack;\n    },\n  };\n  return PostScriptEvaluator;\n})();\n\n// Most of the PDFs functions consist of simple operations such as:\n//   roll, exch, sub, cvr, pop, index, dup, mul, if, gt, add.\n//\n// We can compile most of such programs, and at the same moment, we can\n// optimize some expressions using basic math properties. Keeping track of\n// min/max values will allow us to avoid extra Math.min/Math.max calls.\nvar PostScriptCompiler = (function PostScriptCompilerClosure() {\n  function AstNode(type) {\n    this.type = type;\n  }\n  AstNode.prototype.visit = function (visitor) {\n    unreachable(\"abstract method\");\n  };\n\n  function AstArgument(index, min, max) {\n    AstNode.call(this, \"args\");\n    this.index = index;\n    this.min = min;\n    this.max = max;\n  }\n  AstArgument.prototype = Object.create(AstNode.prototype);\n  AstArgument.prototype.visit = function (visitor) {\n    visitor.visitArgument(this);\n  };\n\n  function AstLiteral(number) {\n    AstNode.call(this, \"literal\");\n    this.number = number;\n    this.min = number;\n    this.max = number;\n  }\n  AstLiteral.prototype = Object.create(AstNode.prototype);\n  AstLiteral.prototype.visit = function (visitor) {\n    visitor.visitLiteral(this);\n  };\n\n  function AstBinaryOperation(op, arg1, arg2, min, max) {\n    AstNode.call(this, \"binary\");\n    this.op = op;\n    this.arg1 = arg1;\n    this.arg2 = arg2;\n    this.min = min;\n    this.max = max;\n  }\n  AstBinaryOperation.prototype = Object.create(AstNode.prototype);\n  AstBinaryOperation.prototype.visit = function (visitor) {\n    visitor.visitBinaryOperation(this);\n  };\n\n  function AstMin(arg, max) {\n    AstNode.call(this, \"max\");\n    this.arg = arg;\n    this.min = arg.min;\n    this.max = max;\n  }\n  AstMin.prototype = Object.create(AstNode.prototype);\n  AstMin.prototype.visit = function (visitor) {\n    visitor.visitMin(this);\n  };\n\n  function AstVariable(index, min, max) {\n    AstNode.call(this, \"var\");\n    this.index = index;\n    this.min = min;\n    this.max = max;\n  }\n  AstVariable.prototype = Object.create(AstNode.prototype);\n  AstVariable.prototype.visit = function (visitor) {\n    visitor.visitVariable(this);\n  };\n\n  function AstVariableDefinition(variable, arg) {\n    AstNode.call(this, \"definition\");\n    this.variable = variable;\n    this.arg = arg;\n  }\n  AstVariableDefinition.prototype = Object.create(AstNode.prototype);\n  AstVariableDefinition.prototype.visit = function (visitor) {\n    visitor.visitVariableDefinition(this);\n  };\n\n  function ExpressionBuilderVisitor() {\n    this.parts = [];\n  }\n  ExpressionBuilderVisitor.prototype = {\n    visitArgument(arg) {\n      this.parts.push(\n        \"Math.max(\",\n        arg.min,\n        \", Math.min(\",\n        arg.max,\n        \", src[srcOffset + \",\n        arg.index,\n        \"]))\"\n      );\n    },\n    visitVariable(variable) {\n      this.parts.push(\"v\", variable.index);\n    },\n    visitLiteral(literal) {\n      this.parts.push(literal.number);\n    },\n    visitBinaryOperation(operation) {\n      this.parts.push(\"(\");\n      operation.arg1.visit(this);\n      this.parts.push(\" \", operation.op, \" \");\n      operation.arg2.visit(this);\n      this.parts.push(\")\");\n    },\n    visitVariableDefinition(definition) {\n      this.parts.push(\"var \");\n      definition.variable.visit(this);\n      this.parts.push(\" = \");\n      definition.arg.visit(this);\n      this.parts.push(\";\");\n    },\n    visitMin(max) {\n      this.parts.push(\"Math.min(\");\n      max.arg.visit(this);\n      this.parts.push(\", \", max.max, \")\");\n    },\n    toString() {\n      return this.parts.join(\"\");\n    },\n  };\n\n  function buildAddOperation(num1, num2) {\n    if (num2.type === \"literal\" && num2.number === 0) {\n      // optimization: second operand is 0\n      return num1;\n    }\n    if (num1.type === \"literal\" && num1.number === 0) {\n      // optimization: first operand is 0\n      return num2;\n    }\n    if (num2.type === \"literal\" && num1.type === \"literal\") {\n      // optimization: operands operand are literals\n      return new AstLiteral(num1.number + num2.number);\n    }\n    return new AstBinaryOperation(\n      \"+\",\n      num1,\n      num2,\n      num1.min + num2.min,\n      num1.max + num2.max\n    );\n  }\n\n  function buildMulOperation(num1, num2) {\n    if (num2.type === \"literal\") {\n      // optimization: second operands is a literal...\n      if (num2.number === 0) {\n        return new AstLiteral(0); // and it's 0\n      } else if (num2.number === 1) {\n        return num1; // and it's 1\n      } else if (num1.type === \"literal\") {\n        // ... and first operands is a literal too\n        return new AstLiteral(num1.number * num2.number);\n      }\n    }\n    if (num1.type === \"literal\") {\n      // optimization: first operands is a literal...\n      if (num1.number === 0) {\n        return new AstLiteral(0); // and it's 0\n      } else if (num1.number === 1) {\n        return num2; // and it's 1\n      }\n    }\n    var min = Math.min(\n      num1.min * num2.min,\n      num1.min * num2.max,\n      num1.max * num2.min,\n      num1.max * num2.max\n    );\n    var max = Math.max(\n      num1.min * num2.min,\n      num1.min * num2.max,\n      num1.max * num2.min,\n      num1.max * num2.max\n    );\n    return new AstBinaryOperation(\"*\", num1, num2, min, max);\n  }\n\n  function buildSubOperation(num1, num2) {\n    if (num2.type === \"literal\") {\n      // optimization: second operands is a literal...\n      if (num2.number === 0) {\n        return num1; // ... and it's 0\n      } else if (num1.type === \"literal\") {\n        // ... and first operands is a literal too\n        return new AstLiteral(num1.number - num2.number);\n      }\n    }\n    if (\n      num2.type === \"binary\" &&\n      num2.op === \"-\" &&\n      num1.type === \"literal\" &&\n      num1.number === 1 &&\n      num2.arg1.type === \"literal\" &&\n      num2.arg1.number === 1\n    ) {\n      // optimization for case: 1 - (1 - x)\n      return num2.arg2;\n    }\n    return new AstBinaryOperation(\n      \"-\",\n      num1,\n      num2,\n      num1.min - num2.max,\n      num1.max - num2.min\n    );\n  }\n\n  function buildMinOperation(num1, max) {\n    if (num1.min >= max) {\n      // optimization: num1 min value is not less than required max\n      return new AstLiteral(max); // just returning max\n    } else if (num1.max <= max) {\n      // optimization: num1 max value is not greater than required max\n      return num1; // just returning an argument\n    }\n    return new AstMin(num1, max);\n  }\n\n  // eslint-disable-next-line no-shadow\n  function PostScriptCompiler() {}\n  PostScriptCompiler.prototype = {\n    compile: function PostScriptCompiler_compile(code, domain, range) {\n      var stack = [];\n      var instructions = [];\n      var inputSize = domain.length >> 1,\n        outputSize = range.length >> 1;\n      var lastRegister = 0;\n      var n, j;\n      var num1, num2, ast1, ast2, tmpVar, item;\n      for (let i = 0; i < inputSize; i++) {\n        stack.push(new AstArgument(i, domain[i * 2], domain[i * 2 + 1]));\n      }\n\n      for (let i = 0, ii = code.length; i < ii; i++) {\n        item = code[i];\n        if (typeof item === \"number\") {\n          stack.push(new AstLiteral(item));\n          continue;\n        }\n\n        switch (item) {\n          case \"add\":\n            if (stack.length < 2) {\n              return null;\n            }\n            num2 = stack.pop();\n            num1 = stack.pop();\n            stack.push(buildAddOperation(num1, num2));\n            break;\n          case \"cvr\":\n            if (stack.length < 1) {\n              return null;\n            }\n            break;\n          case \"mul\":\n            if (stack.length < 2) {\n              return null;\n            }\n            num2 = stack.pop();\n            num1 = stack.pop();\n            stack.push(buildMulOperation(num1, num2));\n            break;\n          case \"sub\":\n            if (stack.length < 2) {\n              return null;\n            }\n            num2 = stack.pop();\n            num1 = stack.pop();\n            stack.push(buildSubOperation(num1, num2));\n            break;\n          case \"exch\":\n            if (stack.length < 2) {\n              return null;\n            }\n            ast1 = stack.pop();\n            ast2 = stack.pop();\n            stack.push(ast1, ast2);\n            break;\n          case \"pop\":\n            if (stack.length < 1) {\n              return null;\n            }\n            stack.pop();\n            break;\n          case \"index\":\n            if (stack.length < 1) {\n              return null;\n            }\n            num1 = stack.pop();\n            if (num1.type !== \"literal\") {\n              return null;\n            }\n            n = num1.number;\n            if (n < 0 || !Number.isInteger(n) || stack.length < n) {\n              return null;\n            }\n            ast1 = stack[stack.length - n - 1];\n            if (ast1.type === \"literal\" || ast1.type === \"var\") {\n              stack.push(ast1);\n              break;\n            }\n            tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);\n            stack[stack.length - n - 1] = tmpVar;\n            stack.push(tmpVar);\n            instructions.push(new AstVariableDefinition(tmpVar, ast1));\n            break;\n          case \"dup\":\n            if (stack.length < 1) {\n              return null;\n            }\n            if (\n              typeof code[i + 1] === \"number\" &&\n              code[i + 2] === \"gt\" &&\n              code[i + 3] === i + 7 &&\n              code[i + 4] === \"jz\" &&\n              code[i + 5] === \"pop\" &&\n              code[i + 6] === code[i + 1]\n            ) {\n              // special case of the commands sequence for the min operation\n              num1 = stack.pop();\n              stack.push(buildMinOperation(num1, code[i + 1]));\n              i += 6;\n              break;\n            }\n            ast1 = stack[stack.length - 1];\n            if (ast1.type === \"literal\" || ast1.type === \"var\") {\n              // we don't have to save into intermediate variable a literal or\n              // variable.\n              stack.push(ast1);\n              break;\n            }\n            tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);\n            stack[stack.length - 1] = tmpVar;\n            stack.push(tmpVar);\n            instructions.push(new AstVariableDefinition(tmpVar, ast1));\n            break;\n          case \"roll\":\n            if (stack.length < 2) {\n              return null;\n            }\n            num2 = stack.pop();\n            num1 = stack.pop();\n            if (num2.type !== \"literal\" || num1.type !== \"literal\") {\n              // both roll operands must be numbers\n              return null;\n            }\n            j = num2.number;\n            n = num1.number;\n            if (\n              n <= 0 ||\n              !Number.isInteger(n) ||\n              !Number.isInteger(j) ||\n              stack.length < n\n            ) {\n              // ... and integers\n              return null;\n            }\n            j = ((j % n) + n) % n;\n            if (j === 0) {\n              break; // just skipping -- there are nothing to rotate\n            }\n            Array.prototype.push.apply(\n              stack,\n              stack.splice(stack.length - n, n - j)\n            );\n            break;\n          default:\n            return null; // unsupported operator\n        }\n      }\n\n      if (stack.length !== outputSize) {\n        return null;\n      }\n\n      var result = [];\n      instructions.forEach(function (instruction) {\n        var statementBuilder = new ExpressionBuilderVisitor();\n        instruction.visit(statementBuilder);\n        result.push(statementBuilder.toString());\n      });\n      stack.forEach(function (expr, i) {\n        var statementBuilder = new ExpressionBuilderVisitor();\n        expr.visit(statementBuilder);\n        var min = range[i * 2],\n          max = range[i * 2 + 1];\n        var out = [statementBuilder.toString()];\n        if (min > expr.min) {\n          out.unshift(\"Math.max(\", min, \", \");\n          out.push(\")\");\n        }\n        if (max < expr.max) {\n          out.unshift(\"Math.min(\", max, \", \");\n          out.push(\")\");\n        }\n        out.unshift(\"dest[destOffset + \", i, \"] = \");\n        out.push(\";\");\n        result.push(out.join(\"\"));\n      });\n      return result.join(\"\\n\");\n    },\n  };\n\n  return PostScriptCompiler;\n})();\n\nexport {\n  isPDFFunction,\n  PDFFunctionFactory,\n  PostScriptEvaluator,\n  PostScriptCompiler,\n};\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\nimport { FormatError, shadow } from \"../shared/util.js\";\nimport { EOF } from \"./primitives.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\n\nclass PostScriptParser {\n  constructor(lexer) {\n    this.lexer = lexer;\n    this.operators = [];\n    this.token = null;\n    this.prev = null;\n  }\n\n  nextToken() {\n    this.prev = this.token;\n    this.token = this.lexer.getToken();\n  }\n\n  accept(type) {\n    if (this.token.type === type) {\n      this.nextToken();\n      return true;\n    }\n    return false;\n  }\n\n  expect(type) {\n    if (this.accept(type)) {\n      return true;\n    }\n    throw new FormatError(\n      `Unexpected symbol: found ${this.token.type} expected ${type}.`\n    );\n  }\n\n  parse() {\n    this.nextToken();\n    this.expect(PostScriptTokenTypes.LBRACE);\n    this.parseBlock();\n    this.expect(PostScriptTokenTypes.RBRACE);\n    return this.operators;\n  }\n\n  parseBlock() {\n    while (true) {\n      if (this.accept(PostScriptTokenTypes.NUMBER)) {\n        this.operators.push(this.prev.value);\n      } else if (this.accept(PostScriptTokenTypes.OPERATOR)) {\n        this.operators.push(this.prev.value);\n      } else if (this.accept(PostScriptTokenTypes.LBRACE)) {\n        this.parseCondition();\n      } else {\n        return;\n      }\n    }\n  }\n\n  parseCondition() {\n    // Add two place holders that will be updated later\n    const conditionLocation = this.operators.length;\n    this.operators.push(null, null);\n\n    this.parseBlock();\n    this.expect(PostScriptTokenTypes.RBRACE);\n    if (this.accept(PostScriptTokenTypes.IF)) {\n      // The true block is right after the 'if' so it just falls through on true\n      // else it jumps and skips the true block.\n      this.operators[conditionLocation] = this.operators.length;\n      this.operators[conditionLocation + 1] = \"jz\";\n    } else if (this.accept(PostScriptTokenTypes.LBRACE)) {\n      const jumpLocation = this.operators.length;\n      this.operators.push(null, null);\n      const endOfTrue = this.operators.length;\n      this.parseBlock();\n      this.expect(PostScriptTokenTypes.RBRACE);\n      this.expect(PostScriptTokenTypes.IFELSE);\n      // The jump is added at the end of the true block to skip the false block.\n      this.operators[jumpLocation] = this.operators.length;\n      this.operators[jumpLocation + 1] = \"j\";\n\n      this.operators[conditionLocation] = endOfTrue;\n      this.operators[conditionLocation + 1] = \"jz\";\n    } else {\n      throw new FormatError(\"PS Function: error parsing conditional.\");\n    }\n  }\n}\n\nconst PostScriptTokenTypes = {\n  LBRACE: 0,\n  RBRACE: 1,\n  NUMBER: 2,\n  OPERATOR: 3,\n  IF: 4,\n  IFELSE: 5,\n};\n\nconst PostScriptToken = (function PostScriptTokenClosure() {\n  const opCache = Object.create(null);\n\n  // eslint-disable-next-line no-shadow\n  class PostScriptToken {\n    constructor(type, value) {\n      this.type = type;\n      this.value = value;\n    }\n\n    static getOperator(op) {\n      const opValue = opCache[op];\n      if (opValue) {\n        return opValue;\n      }\n      return (opCache[op] = new PostScriptToken(\n        PostScriptTokenTypes.OPERATOR,\n        op\n      ));\n    }\n\n    static get LBRACE() {\n      return shadow(\n        this,\n        \"LBRACE\",\n        new PostScriptToken(PostScriptTokenTypes.LBRACE, \"{\")\n      );\n    }\n\n    static get RBRACE() {\n      return shadow(\n        this,\n        \"RBRACE\",\n        new PostScriptToken(PostScriptTokenTypes.RBRACE, \"}\")\n      );\n    }\n\n    static get IF() {\n      return shadow(\n        this,\n        \"IF\",\n        new PostScriptToken(PostScriptTokenTypes.IF, \"IF\")\n      );\n    }\n\n    static get IFELSE() {\n      return shadow(\n        this,\n        \"IFELSE\",\n        new PostScriptToken(PostScriptTokenTypes.IFELSE, \"IFELSE\")\n      );\n    }\n  }\n  return PostScriptToken;\n})();\n\nclass PostScriptLexer {\n  constructor(stream) {\n    this.stream = stream;\n    this.nextChar();\n\n    this.strBuf = [];\n  }\n\n  nextChar() {\n    return (this.currentChar = this.stream.getByte());\n  }\n\n  getToken() {\n    let comment = false;\n    let ch = this.currentChar;\n\n    // skip comments\n    while (true) {\n      if (ch < 0) {\n        return EOF;\n      }\n\n      if (comment) {\n        if (ch === 0x0a || ch === 0x0d) {\n          comment = false;\n        }\n      } else if (ch === /* '%' = */ 0x25) {\n        comment = true;\n      } else if (!isWhiteSpace(ch)) {\n        break;\n      }\n      ch = this.nextChar();\n    }\n    switch (ch | 0) {\n      case 0x30: // '0'\n      case 0x31: // '1'\n      case 0x32: // '2'\n      case 0x33: // '3'\n      case 0x34: // '4'\n      case 0x35: // '5'\n      case 0x36: // '6'\n      case 0x37: // '7'\n      case 0x38: // '8'\n      case 0x39: // '9'\n      case 0x2b: // '+'\n      case 0x2d: // '-'\n      case 0x2e: // '.'\n        return new PostScriptToken(\n          PostScriptTokenTypes.NUMBER,\n          this.getNumber()\n        );\n      case 0x7b: // '{'\n        this.nextChar();\n        return PostScriptToken.LBRACE;\n      case 0x7d: // '}'\n        this.nextChar();\n        return PostScriptToken.RBRACE;\n    }\n    // operator\n    const strBuf = this.strBuf;\n    strBuf.length = 0;\n    strBuf[0] = String.fromCharCode(ch);\n\n    while (\n      (ch = this.nextChar()) >= 0 &&\n      ((ch >= /* 'A' = */ 0x41 && ch <= /* 'Z' = */ 0x5a) ||\n        (ch >= /* 'a' = */ 0x61 && ch <= /* 'z' = */ 0x7a))\n    ) {\n      strBuf.push(String.fromCharCode(ch));\n    }\n    const str = strBuf.join(\"\");\n    switch (str.toLowerCase()) {\n      case \"if\":\n        return PostScriptToken.IF;\n      case \"ifelse\":\n        return PostScriptToken.IFELSE;\n      default:\n        return PostScriptToken.getOperator(str);\n    }\n  }\n\n  getNumber() {\n    let ch = this.currentChar;\n    const strBuf = this.strBuf;\n    strBuf.length = 0;\n    strBuf[0] = String.fromCharCode(ch);\n\n    while ((ch = this.nextChar()) >= 0) {\n      if (\n        (ch >= /* '0' = */ 0x30 && ch <= /* '9' = */ 0x39) ||\n        ch === /* '-' = */ 0x2d ||\n        ch === /* '.' = */ 0x2e\n      ) {\n        strBuf.push(String.fromCharCode(ch));\n      } else {\n        break;\n      }\n    }\n    const value = parseFloat(strBuf.join(\"\"));\n    if (isNaN(value)) {\n      throw new FormatError(`Invalid floating point number: ${value}`);\n    }\n    return value;\n  }\n}\n\nexport { PostScriptLexer, PostScriptParser };\n","/* Copyright 2014 Opera Software ASA\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n *\n * Based on https://code.google.com/p/smhasher/wiki/MurmurHash3.\n * Hashes roughly 100 KB per millisecond on i7 3.4 GHz.\n */\n/* eslint no-var: error */\n\nimport { isArrayBuffer, isString } from \"../shared/util.js\";\n\nconst SEED = 0xc3d2e1f0;\n// Workaround for missing math precision in JS.\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\n\nclass MurmurHash3_64 {\n  constructor(seed) {\n    this.h1 = seed ? seed & 0xffffffff : SEED;\n    this.h2 = seed ? seed & 0xffffffff : SEED;\n  }\n\n  update(input) {\n    let data, length;\n    if (isString(input)) {\n      data = new Uint8Array(input.length * 2);\n      length = 0;\n      for (let i = 0, ii = input.length; i < ii; i++) {\n        const code = input.charCodeAt(i);\n        if (code <= 0xff) {\n          data[length++] = code;\n        } else {\n          data[length++] = code >>> 8;\n          data[length++] = code & 0xff;\n        }\n      }\n    } else if (isArrayBuffer(input)) {\n      data = input;\n      length = data.byteLength;\n    } else {\n      throw new Error(\n        \"Wrong data format in MurmurHash3_64_update. \" +\n          \"Input must be a string or array.\"\n      );\n    }\n\n    const blockCounts = length >> 2;\n    const tailLength = length - blockCounts * 4;\n    // We don't care about endianness here.\n    const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n    let k1 = 0,\n      k2 = 0;\n    let h1 = this.h1,\n      h2 = this.h2;\n    const C1 = 0xcc9e2d51,\n      C2 = 0x1b873593;\n    const C1_LOW = C1 & MASK_LOW,\n      C2_LOW = C2 & MASK_LOW;\n\n    for (let i = 0; i < blockCounts; i++) {\n      if (i & 1) {\n        k1 = dataUint32[i];\n        k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\n        k1 = (k1 << 15) | (k1 >>> 17);\n        k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\n        h1 ^= k1;\n        h1 = (h1 << 13) | (h1 >>> 19);\n        h1 = h1 * 5 + 0xe6546b64;\n      } else {\n        k2 = dataUint32[i];\n        k2 = ((k2 * C1) & MASK_HIGH) | ((k2 * C1_LOW) & MASK_LOW);\n        k2 = (k2 << 15) | (k2 >>> 17);\n        k2 = ((k2 * C2) & MASK_HIGH) | ((k2 * C2_LOW) & MASK_LOW);\n        h2 ^= k2;\n        h2 = (h2 << 13) | (h2 >>> 19);\n        h2 = h2 * 5 + 0xe6546b64;\n      }\n    }\n\n    k1 = 0;\n\n    switch (tailLength) {\n      case 3:\n        k1 ^= data[blockCounts * 4 + 2] << 16;\n      /* falls through */\n      case 2:\n        k1 ^= data[blockCounts * 4 + 1] << 8;\n      /* falls through */\n      case 1:\n        k1 ^= data[blockCounts * 4];\n        /* falls through */\n\n        k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\n        k1 = (k1 << 15) | (k1 >>> 17);\n        k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\n        if (blockCounts & 1) {\n          h1 ^= k1;\n        } else {\n          h2 ^= k1;\n        }\n    }\n\n    this.h1 = h1;\n    this.h2 = h2;\n  }\n\n  hexdigest() {\n    let h1 = this.h1,\n      h2 = this.h2;\n\n    h1 ^= h2 >>> 1;\n    h1 = ((h1 * 0xed558ccd) & MASK_HIGH) | ((h1 * 0x8ccd) & MASK_LOW);\n    h2 =\n      ((h2 * 0xff51afd7) & MASK_HIGH) |\n      (((((h2 << 16) | (h1 >>> 16)) * 0xafd7ed55) & MASK_HIGH) >>> 16);\n    h1 ^= h2 >>> 1;\n    h1 = ((h1 * 0x1a85ec53) & MASK_HIGH) | ((h1 * 0xec53) & MASK_LOW);\n    h2 =\n      ((h2 * 0xc4ceb9fe) & MASK_HIGH) |\n      (((((h2 << 16) | (h1 >>> 16)) * 0xb9fe1a85) & MASK_HIGH) >>> 16);\n    h1 ^= h2 >>> 1;\n\n    const hex1 = (h1 >>> 0).toString(16),\n      hex2 = (h2 >>> 0).toString(16);\n    return hex1.padStart(8, \"0\") + hex2.padStart(8, \"0\");\n  }\n}\n\nexport { MurmurHash3_64 };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, FormatError, ImageKind, info, warn } from \"../shared/util.js\";\nimport { isName, isStream, Name } from \"./primitives.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { DecodeStream } from \"./stream.js\";\nimport { JpegStream } from \"./jpeg_stream.js\";\nimport { JpxImage } from \"./jpx.js\";\n\nvar PDFImage = (function PDFImageClosure() {\n  /**\n   * Decode and clamp a value. The formula is different from the spec because we\n   * don't decode to float range [0,1], we decode it in the [0,max] range.\n   */\n  function decodeAndClamp(value, addend, coefficient, max) {\n    value = addend + value * coefficient;\n    // Clamp the value to the range\n    if (value < 0) {\n      value = 0;\n    } else if (value > max) {\n      value = max;\n    }\n    return value;\n  }\n\n  /**\n   * Resizes an image mask with 1 component.\n   * @param {TypedArray} src - The source buffer.\n   * @param {number} bpc - Number of bits per component.\n   * @param {number} w1 - Original width.\n   * @param {number} h1 - Original height.\n   * @param {number} w2 - New width.\n   * @param {number} h2 - New height.\n   * @returns {TypedArray} The resized image mask buffer.\n   */\n  function resizeImageMask(src, bpc, w1, h1, w2, h2) {\n    var length = w2 * h2;\n    let dest;\n    if (bpc <= 8) {\n      dest = new Uint8Array(length);\n    } else if (bpc <= 16) {\n      dest = new Uint16Array(length);\n    } else {\n      dest = new Uint32Array(length);\n    }\n    var xRatio = w1 / w2;\n    var yRatio = h1 / h2;\n    var i,\n      j,\n      py,\n      newIndex = 0,\n      oldIndex;\n    var xScaled = new Uint16Array(w2);\n    var w1Scanline = w1;\n\n    for (i = 0; i < w2; i++) {\n      xScaled[i] = Math.floor(i * xRatio);\n    }\n    for (i = 0; i < h2; i++) {\n      py = Math.floor(i * yRatio) * w1Scanline;\n      for (j = 0; j < w2; j++) {\n        oldIndex = py + xScaled[j];\n        dest[newIndex++] = src[oldIndex];\n      }\n    }\n    return dest;\n  }\n\n  // eslint-disable-next-line no-shadow\n  function PDFImage({\n    xref,\n    res,\n    image,\n    isInline = false,\n    smask = null,\n    mask = null,\n    isMask = false,\n    pdfFunctionFactory,\n  }) {\n    this.image = image;\n    var dict = image.dict;\n\n    const filter = dict.get(\"Filter\");\n    if (isName(filter)) {\n      switch (filter.name) {\n        case \"JPXDecode\":\n          var jpxImage = new JpxImage();\n          jpxImage.parseImageProperties(image.stream);\n          image.stream.reset();\n\n          image.width = jpxImage.width;\n          image.height = jpxImage.height;\n          image.bitsPerComponent = jpxImage.bitsPerComponent;\n          image.numComps = jpxImage.componentsCount;\n          break;\n        case \"JBIG2Decode\":\n          image.bitsPerComponent = 1;\n          image.numComps = 1;\n          break;\n      }\n    }\n    // TODO cache rendered images?\n\n    let width = dict.get(\"Width\", \"W\");\n    let height = dict.get(\"Height\", \"H\");\n\n    if (\n      Number.isInteger(image.width) &&\n      image.width > 0 &&\n      Number.isInteger(image.height) &&\n      image.height > 0 &&\n      (image.width !== width || image.height !== height)\n    ) {\n      warn(\n        \"PDFImage - using the Width/Height of the image data, \" +\n          \"rather than the image dictionary.\"\n      );\n      width = image.width;\n      height = image.height;\n    }\n    if (width < 1 || height < 1) {\n      throw new FormatError(\n        `Invalid image width: ${width} or height: ${height}`\n      );\n    }\n    this.width = width;\n    this.height = height;\n\n    this.interpolate = dict.get(\"Interpolate\", \"I\") || false;\n    this.imageMask = dict.get(\"ImageMask\", \"IM\") || false;\n    this.matte = dict.get(\"Matte\") || false;\n\n    var bitsPerComponent = image.bitsPerComponent;\n    if (!bitsPerComponent) {\n      bitsPerComponent = dict.get(\"BitsPerComponent\", \"BPC\");\n      if (!bitsPerComponent) {\n        if (this.imageMask) {\n          bitsPerComponent = 1;\n        } else {\n          throw new FormatError(\n            `Bits per component missing in image: ${this.imageMask}`\n          );\n        }\n      }\n    }\n    this.bpc = bitsPerComponent;\n\n    if (!this.imageMask) {\n      var colorSpace = dict.get(\"ColorSpace\", \"CS\");\n      if (!colorSpace) {\n        info(\"JPX images (which do not require color spaces)\");\n        switch (image.numComps) {\n          case 1:\n            colorSpace = Name.get(\"DeviceGray\");\n            break;\n          case 3:\n            colorSpace = Name.get(\"DeviceRGB\");\n            break;\n          case 4:\n            colorSpace = Name.get(\"DeviceCMYK\");\n            break;\n          default:\n            throw new Error(\n              `JPX images with ${image.numComps} ` +\n                \"color components not supported.\"\n            );\n        }\n      }\n      const resources = isInline ? res : null;\n      this.colorSpace = ColorSpace.parse(\n        colorSpace,\n        xref,\n        resources,\n        pdfFunctionFactory\n      );\n      this.numComps = this.colorSpace.numComps;\n    }\n\n    this.decode = dict.getArray(\"Decode\", \"D\");\n    this.needsDecode = false;\n    if (\n      this.decode &&\n      ((this.colorSpace &&\n        !this.colorSpace.isDefaultDecode(this.decode, bitsPerComponent)) ||\n        (isMask &&\n          !ColorSpace.isDefaultDecode(this.decode, /* numComps = */ 1)))\n    ) {\n      this.needsDecode = true;\n      // Do some preprocessing to avoid more math.\n      var max = (1 << bitsPerComponent) - 1;\n      this.decodeCoefficients = [];\n      this.decodeAddends = [];\n      const isIndexed = this.colorSpace && this.colorSpace.name === \"Indexed\";\n      for (var i = 0, j = 0; i < this.decode.length; i += 2, ++j) {\n        var dmin = this.decode[i];\n        var dmax = this.decode[i + 1];\n        this.decodeCoefficients[j] = isIndexed\n          ? (dmax - dmin) / max\n          : dmax - dmin;\n        this.decodeAddends[j] = isIndexed ? dmin : max * dmin;\n      }\n    }\n\n    if (smask) {\n      this.smask = new PDFImage({\n        xref,\n        res,\n        image: smask,\n        isInline,\n        pdfFunctionFactory,\n      });\n    } else if (mask) {\n      if (isStream(mask)) {\n        var maskDict = mask.dict,\n          imageMask = maskDict.get(\"ImageMask\", \"IM\");\n        if (!imageMask) {\n          warn(\"Ignoring /Mask in image without /ImageMask.\");\n        } else {\n          this.mask = new PDFImage({\n            xref,\n            res,\n            image: mask,\n            isInline,\n            isMask: true,\n            pdfFunctionFactory,\n          });\n        }\n      } else {\n        // Color key mask (just an array).\n        this.mask = mask;\n      }\n    }\n  }\n  /**\n   * Handles processing of image data and returns the Promise that is resolved\n   * with a PDFImage when the image is ready to be used.\n   */\n  PDFImage.buildImage = function ({\n    xref,\n    res,\n    image,\n    isInline = false,\n    pdfFunctionFactory,\n  }) {\n    const imageData = image;\n    let smaskData = null;\n    let maskData = null;\n\n    const smask = image.dict.get(\"SMask\");\n    const mask = image.dict.get(\"Mask\");\n\n    if (smask) {\n      smaskData = smask;\n    } else if (mask) {\n      if (isStream(mask) || Array.isArray(mask)) {\n        maskData = mask;\n      } else {\n        warn(\"Unsupported mask format.\");\n      }\n    }\n    return Promise.resolve(\n      new PDFImage({\n        xref,\n        res,\n        image: imageData,\n        isInline,\n        smask: smaskData,\n        mask: maskData,\n        pdfFunctionFactory,\n      })\n    );\n  };\n\n  PDFImage.createMask = function ({\n    imgArray,\n    width,\n    height,\n    imageIsFromDecodeStream,\n    inverseDecode,\n  }) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        imgArray instanceof Uint8ClampedArray,\n        'PDFImage.createMask: Unsupported \"imgArray\" type.'\n      );\n    }\n    // |imgArray| might not contain full data for every pixel of the mask, so\n    // we need to distinguish between |computedLength| and |actualLength|.\n    // In particular, if inverseDecode is true, then the array we return must\n    // have a length of |computedLength|.\n\n    var computedLength = ((width + 7) >> 3) * height;\n    var actualLength = imgArray.byteLength;\n    var haveFullData = computedLength === actualLength;\n    var data, i;\n\n    if (imageIsFromDecodeStream && (!inverseDecode || haveFullData)) {\n      // imgArray came from a DecodeStream and its data is in an appropriate\n      // form, so we can just transfer it.\n      data = imgArray;\n    } else if (!inverseDecode) {\n      data = new Uint8ClampedArray(actualLength);\n      data.set(imgArray);\n    } else {\n      data = new Uint8ClampedArray(computedLength);\n      data.set(imgArray);\n      for (i = actualLength; i < computedLength; i++) {\n        data[i] = 0xff;\n      }\n    }\n\n    // If necessary, invert the original mask data (but not any extra we might\n    // have added above). It's safe to modify the array -- whether it's the\n    // original or a copy, we're about to transfer it anyway, so nothing else\n    // in this thread can be relying on its contents.\n    if (inverseDecode) {\n      for (i = 0; i < actualLength; i++) {\n        data[i] ^= 0xff;\n      }\n    }\n\n    return { data, width, height };\n  };\n\n  PDFImage.prototype = {\n    get drawWidth() {\n      return Math.max(\n        this.width,\n        (this.smask && this.smask.width) || 0,\n        (this.mask && this.mask.width) || 0\n      );\n    },\n\n    get drawHeight() {\n      return Math.max(\n        this.height,\n        (this.smask && this.smask.height) || 0,\n        (this.mask && this.mask.height) || 0\n      );\n    },\n\n    decodeBuffer(buffer) {\n      var bpc = this.bpc;\n      var numComps = this.numComps;\n\n      var decodeAddends = this.decodeAddends;\n      var decodeCoefficients = this.decodeCoefficients;\n      var max = (1 << bpc) - 1;\n      var i, ii;\n\n      if (bpc === 1) {\n        // If the buffer needed decode that means it just needs to be inverted.\n        for (i = 0, ii = buffer.length; i < ii; i++) {\n          buffer[i] = +!buffer[i];\n        }\n        return;\n      }\n      var index = 0;\n      for (i = 0, ii = this.width * this.height; i < ii; i++) {\n        for (var j = 0; j < numComps; j++) {\n          buffer[index] = decodeAndClamp(\n            buffer[index],\n            decodeAddends[j],\n            decodeCoefficients[j],\n            max\n          );\n          index++;\n        }\n      }\n    },\n\n    getComponents(buffer) {\n      var bpc = this.bpc;\n\n      // This image doesn't require any extra work.\n      if (bpc === 8) {\n        return buffer;\n      }\n\n      var width = this.width;\n      var height = this.height;\n      var numComps = this.numComps;\n\n      var length = width * height * numComps;\n      var bufferPos = 0;\n      let output;\n      if (bpc <= 8) {\n        output = new Uint8Array(length);\n      } else if (bpc <= 16) {\n        output = new Uint16Array(length);\n      } else {\n        output = new Uint32Array(length);\n      }\n      var rowComps = width * numComps;\n\n      var max = (1 << bpc) - 1;\n      var i = 0,\n        ii,\n        buf;\n\n      if (bpc === 1) {\n        // Optimization for reading 1 bpc images.\n        var mask, loop1End, loop2End;\n        for (var j = 0; j < height; j++) {\n          loop1End = i + (rowComps & ~7);\n          loop2End = i + rowComps;\n\n          // unroll loop for all full bytes\n          while (i < loop1End) {\n            buf = buffer[bufferPos++];\n            output[i] = (buf >> 7) & 1;\n            output[i + 1] = (buf >> 6) & 1;\n            output[i + 2] = (buf >> 5) & 1;\n            output[i + 3] = (buf >> 4) & 1;\n            output[i + 4] = (buf >> 3) & 1;\n            output[i + 5] = (buf >> 2) & 1;\n            output[i + 6] = (buf >> 1) & 1;\n            output[i + 7] = buf & 1;\n            i += 8;\n          }\n\n          // handle remaining bits\n          if (i < loop2End) {\n            buf = buffer[bufferPos++];\n            mask = 128;\n            while (i < loop2End) {\n              output[i++] = +!!(buf & mask);\n              mask >>= 1;\n            }\n          }\n        }\n      } else {\n        // The general case that handles all other bpc values.\n        var bits = 0;\n        buf = 0;\n        for (i = 0, ii = length; i < ii; ++i) {\n          if (i % rowComps === 0) {\n            buf = 0;\n            bits = 0;\n          }\n\n          while (bits < bpc) {\n            buf = (buf << 8) | buffer[bufferPos++];\n            bits += 8;\n          }\n\n          var remainingBits = bits - bpc;\n          let value = buf >> remainingBits;\n          if (value < 0) {\n            value = 0;\n          } else if (value > max) {\n            value = max;\n          }\n          output[i] = value;\n          buf = buf & ((1 << remainingBits) - 1);\n          bits = remainingBits;\n        }\n      }\n      return output;\n    },\n\n    fillOpacity(rgbaBuf, width, height, actualHeight, image) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          rgbaBuf instanceof Uint8ClampedArray,\n          'PDFImage.fillOpacity: Unsupported \"rgbaBuf\" type.'\n        );\n      }\n      var smask = this.smask;\n      var mask = this.mask;\n      var alphaBuf, sw, sh, i, ii, j;\n\n      if (smask) {\n        sw = smask.width;\n        sh = smask.height;\n        alphaBuf = new Uint8ClampedArray(sw * sh);\n        smask.fillGrayBuffer(alphaBuf);\n        if (sw !== width || sh !== height) {\n          alphaBuf = resizeImageMask(\n            alphaBuf,\n            smask.bpc,\n            sw,\n            sh,\n            width,\n            height\n          );\n        }\n      } else if (mask) {\n        if (mask instanceof PDFImage) {\n          sw = mask.width;\n          sh = mask.height;\n          alphaBuf = new Uint8ClampedArray(sw * sh);\n          mask.numComps = 1;\n          mask.fillGrayBuffer(alphaBuf);\n\n          // Need to invert values in rgbaBuf\n          for (i = 0, ii = sw * sh; i < ii; ++i) {\n            alphaBuf[i] = 255 - alphaBuf[i];\n          }\n\n          if (sw !== width || sh !== height) {\n            alphaBuf = resizeImageMask(\n              alphaBuf,\n              mask.bpc,\n              sw,\n              sh,\n              width,\n              height\n            );\n          }\n        } else if (Array.isArray(mask)) {\n          // Color key mask: if any of the components are outside the range\n          // then they should be painted.\n          alphaBuf = new Uint8ClampedArray(width * height);\n          var numComps = this.numComps;\n          for (i = 0, ii = width * height; i < ii; ++i) {\n            var opacity = 0;\n            var imageOffset = i * numComps;\n            for (j = 0; j < numComps; ++j) {\n              var color = image[imageOffset + j];\n              var maskOffset = j * 2;\n              if (color < mask[maskOffset] || color > mask[maskOffset + 1]) {\n                opacity = 255;\n                break;\n              }\n            }\n            alphaBuf[i] = opacity;\n          }\n        } else {\n          throw new FormatError(\"Unknown mask format.\");\n        }\n      }\n\n      if (alphaBuf) {\n        for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {\n          rgbaBuf[j] = alphaBuf[i];\n        }\n      } else {\n        // No mask.\n        for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {\n          rgbaBuf[j] = 255;\n        }\n      }\n    },\n\n    undoPreblend(buffer, width, height) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          buffer instanceof Uint8ClampedArray,\n          'PDFImage.undoPreblend: Unsupported \"buffer\" type.'\n        );\n      }\n      var matte = this.smask && this.smask.matte;\n      if (!matte) {\n        return;\n      }\n      var matteRgb = this.colorSpace.getRgb(matte, 0);\n      var matteR = matteRgb[0];\n      var matteG = matteRgb[1];\n      var matteB = matteRgb[2];\n      var length = width * height * 4;\n      for (var i = 0; i < length; i += 4) {\n        var alpha = buffer[i + 3];\n        if (alpha === 0) {\n          // according formula we have to get Infinity in all components\n          // making it white (typical paper color) should be okay\n          buffer[i] = 255;\n          buffer[i + 1] = 255;\n          buffer[i + 2] = 255;\n          continue;\n        }\n        var k = 255 / alpha;\n        buffer[i] = (buffer[i] - matteR) * k + matteR;\n        buffer[i + 1] = (buffer[i + 1] - matteG) * k + matteG;\n        buffer[i + 2] = (buffer[i + 2] - matteB) * k + matteB;\n      }\n    },\n\n    createImageData(forceRGBA = false) {\n      var drawWidth = this.drawWidth;\n      var drawHeight = this.drawHeight;\n      var imgData = {\n        width: drawWidth,\n        height: drawHeight,\n        kind: 0,\n        data: null,\n        // Other fields are filled in below.\n      };\n\n      var numComps = this.numComps;\n      var originalWidth = this.width;\n      var originalHeight = this.height;\n      var bpc = this.bpc;\n\n      // Rows start at byte boundary.\n      var rowBytes = (originalWidth * numComps * bpc + 7) >> 3;\n      var imgArray;\n\n      if (!forceRGBA) {\n        // If it is a 1-bit-per-pixel grayscale (i.e. black-and-white) image\n        // without any complications, we pass a same-sized copy to the main\n        // thread rather than expanding by 32x to RGBA form. This saves *lots*\n        // of memory for many scanned documents. It's also much faster.\n        //\n        // Similarly, if it is a 24-bit-per pixel RGB image without any\n        // complications, we avoid expanding by 1.333x to RGBA form.\n        var kind;\n        if (this.colorSpace.name === \"DeviceGray\" && bpc === 1) {\n          kind = ImageKind.GRAYSCALE_1BPP;\n        } else if (\n          this.colorSpace.name === \"DeviceRGB\" &&\n          bpc === 8 &&\n          !this.needsDecode\n        ) {\n          kind = ImageKind.RGB_24BPP;\n        }\n        if (\n          kind &&\n          !this.smask &&\n          !this.mask &&\n          drawWidth === originalWidth &&\n          drawHeight === originalHeight\n        ) {\n          imgData.kind = kind;\n\n          imgArray = this.getImageBytes(originalHeight * rowBytes);\n          // If imgArray came from a DecodeStream, we're safe to transfer it\n          // (and thus detach its underlying buffer) because it will constitute\n          // the entire DecodeStream's data.  But if it came from a Stream, we\n          // need to copy it because it'll only be a portion of the Stream's\n          // data, and the rest will be read later on.\n          if (this.image instanceof DecodeStream) {\n            imgData.data = imgArray;\n          } else {\n            var newArray = new Uint8ClampedArray(imgArray.length);\n            newArray.set(imgArray);\n            imgData.data = newArray;\n          }\n          if (this.needsDecode) {\n            // Invert the buffer (which must be grayscale if we reached here).\n            assert(\n              kind === ImageKind.GRAYSCALE_1BPP,\n              \"PDFImage.createImageData: The image must be grayscale.\"\n            );\n            var buffer = imgData.data;\n            for (var i = 0, ii = buffer.length; i < ii; i++) {\n              buffer[i] ^= 0xff;\n            }\n          }\n          return imgData;\n        }\n        if (this.image instanceof JpegStream && !this.smask && !this.mask) {\n          let imageLength = originalHeight * rowBytes;\n          switch (this.colorSpace.name) {\n            case \"DeviceGray\":\n              // Avoid truncating the image, since `JpegImage.getData`\n              // will expand the image data when `forceRGB === true`.\n              imageLength *= 3;\n            /* falls through */\n            case \"DeviceRGB\":\n            case \"DeviceCMYK\":\n              imgData.kind = ImageKind.RGB_24BPP;\n              imgData.data = this.getImageBytes(\n                imageLength,\n                drawWidth,\n                drawHeight,\n                /* forceRGB = */ true\n              );\n              return imgData;\n          }\n        }\n      }\n\n      imgArray = this.getImageBytes(originalHeight * rowBytes);\n      // imgArray can be incomplete (e.g. after CCITT fax encoding).\n      var actualHeight =\n        0 | (((imgArray.length / rowBytes) * drawHeight) / originalHeight);\n\n      var comps = this.getComponents(imgArray);\n\n      // If opacity data is present, use RGBA_32BPP form. Otherwise, use the\n      // more compact RGB_24BPP form if allowable.\n      var alpha01, maybeUndoPreblend;\n      if (!forceRGBA && !this.smask && !this.mask) {\n        imgData.kind = ImageKind.RGB_24BPP;\n        imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 3);\n        alpha01 = 0;\n        maybeUndoPreblend = false;\n      } else {\n        imgData.kind = ImageKind.RGBA_32BPP;\n        imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 4);\n        alpha01 = 1;\n        maybeUndoPreblend = true;\n\n        // Color key masking (opacity) must be performed before decoding.\n        this.fillOpacity(\n          imgData.data,\n          drawWidth,\n          drawHeight,\n          actualHeight,\n          comps\n        );\n      }\n\n      if (this.needsDecode) {\n        this.decodeBuffer(comps);\n      }\n      this.colorSpace.fillRgb(\n        imgData.data,\n        originalWidth,\n        originalHeight,\n        drawWidth,\n        drawHeight,\n        actualHeight,\n        bpc,\n        comps,\n        alpha01\n      );\n      if (maybeUndoPreblend) {\n        this.undoPreblend(imgData.data, drawWidth, actualHeight);\n      }\n\n      return imgData;\n    },\n\n    fillGrayBuffer(buffer) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          buffer instanceof Uint8ClampedArray,\n          'PDFImage.fillGrayBuffer: Unsupported \"buffer\" type.'\n        );\n      }\n      var numComps = this.numComps;\n      if (numComps !== 1) {\n        throw new FormatError(\n          `Reading gray scale from a color image: ${numComps}`\n        );\n      }\n\n      var width = this.width;\n      var height = this.height;\n      var bpc = this.bpc;\n\n      // rows start at byte boundary\n      var rowBytes = (width * numComps * bpc + 7) >> 3;\n      var imgArray = this.getImageBytes(height * rowBytes);\n\n      var comps = this.getComponents(imgArray);\n      var i, length;\n\n      if (bpc === 1) {\n        // inline decoding (= inversion) for 1 bpc images\n        length = width * height;\n        if (this.needsDecode) {\n          // invert and scale to {0, 255}\n          for (i = 0; i < length; ++i) {\n            buffer[i] = (comps[i] - 1) & 255;\n          }\n        } else {\n          // scale to {0, 255}\n          for (i = 0; i < length; ++i) {\n            buffer[i] = -comps[i] & 255;\n          }\n        }\n        return;\n      }\n\n      if (this.needsDecode) {\n        this.decodeBuffer(comps);\n      }\n      length = width * height;\n      // we aren't using a colorspace so we need to scale the value\n      var scale = 255 / ((1 << bpc) - 1);\n      for (i = 0; i < length; ++i) {\n        buffer[i] = scale * comps[i];\n      }\n    },\n\n    getImageBytes(length, drawWidth, drawHeight, forceRGB = false) {\n      this.image.reset();\n      this.image.drawWidth = drawWidth || this.width;\n      this.image.drawHeight = drawHeight || this.height;\n      this.image.forceRGB = !!forceRGB;\n      return this.image.getBytes(length, /* forceClamped = */ true);\n    },\n  };\n  return PDFImage;\n})();\n\nexport { PDFImage };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error, prefer-const: error */\n\nimport {\n  AbortException,\n  assert,\n  createPromiseCapability,\n  MissingPDFException,\n  UnexpectedResponseException,\n  UnknownErrorException,\n} from \"./util.js\";\n\nconst CallbackKind = {\n  UNKNOWN: 0,\n  DATA: 1,\n  ERROR: 2,\n};\n\nconst StreamKind = {\n  UNKNOWN: 0,\n  CANCEL: 1,\n  CANCEL_COMPLETE: 2,\n  CLOSE: 3,\n  ENQUEUE: 4,\n  ERROR: 5,\n  PULL: 6,\n  PULL_COMPLETE: 7,\n  START_COMPLETE: 8,\n};\n\nfunction wrapReason(reason) {\n  if (\n    typeof PDFJSDev === \"undefined\" ||\n    PDFJSDev.test(\"!PRODUCTION || TESTING\")\n  ) {\n    assert(\n      reason instanceof Error ||\n        (typeof reason === \"object\" && reason !== null),\n      'wrapReason: Expected \"reason\" to be a (possibly cloned) Error.'\n    );\n  } else {\n    if (typeof reason !== \"object\" || reason === null) {\n      return reason;\n    }\n  }\n  switch (reason.name) {\n    case \"AbortException\":\n      return new AbortException(reason.message);\n    case \"MissingPDFException\":\n      return new MissingPDFException(reason.message);\n    case \"UnexpectedResponseException\":\n      return new UnexpectedResponseException(reason.message, reason.status);\n    case \"UnknownErrorException\":\n      return new UnknownErrorException(reason.message, reason.details);\n    default:\n      return new UnknownErrorException(reason.message, reason.toString());\n  }\n}\n\nclass MessageHandler {\n  constructor(sourceName, targetName, comObj) {\n    this.sourceName = sourceName;\n    this.targetName = targetName;\n    this.comObj = comObj;\n    this.callbackId = 1;\n    this.streamId = 1;\n    this.postMessageTransfers = true;\n    this.streamSinks = Object.create(null);\n    this.streamControllers = Object.create(null);\n    this.callbackCapabilities = Object.create(null);\n    this.actionHandler = Object.create(null);\n\n    this._onComObjOnMessage = event => {\n      const data = event.data;\n      if (data.targetName !== this.sourceName) {\n        return;\n      }\n      if (data.stream) {\n        this._processStreamMessage(data);\n        return;\n      }\n      if (data.callback) {\n        const callbackId = data.callbackId;\n        const capability = this.callbackCapabilities[callbackId];\n        if (!capability) {\n          throw new Error(`Cannot resolve callback ${callbackId}`);\n        }\n        delete this.callbackCapabilities[callbackId];\n\n        if (data.callback === CallbackKind.DATA) {\n          capability.resolve(data.data);\n        } else if (data.callback === CallbackKind.ERROR) {\n          capability.reject(wrapReason(data.reason));\n        } else {\n          throw new Error(\"Unexpected callback case\");\n        }\n        return;\n      }\n      const action = this.actionHandler[data.action];\n      if (!action) {\n        throw new Error(`Unknown action from worker: ${data.action}`);\n      }\n      if (data.callbackId) {\n        const cbSourceName = this.sourceName;\n        const cbTargetName = data.sourceName;\n        new Promise(function (resolve) {\n          resolve(action(data.data));\n        }).then(\n          function (result) {\n            comObj.postMessage({\n              sourceName: cbSourceName,\n              targetName: cbTargetName,\n              callback: CallbackKind.DATA,\n              callbackId: data.callbackId,\n              data: result,\n            });\n          },\n          function (reason) {\n            comObj.postMessage({\n              sourceName: cbSourceName,\n              targetName: cbTargetName,\n              callback: CallbackKind.ERROR,\n              callbackId: data.callbackId,\n              reason: wrapReason(reason),\n            });\n          }\n        );\n        return;\n      }\n      if (data.streamId) {\n        this._createStreamSink(data);\n        return;\n      }\n      action(data.data);\n    };\n    comObj.addEventListener(\"message\", this._onComObjOnMessage);\n  }\n\n  on(actionName, handler) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        typeof handler === \"function\",\n        'MessageHandler.on: Expected \"handler\" to be a function.'\n      );\n    }\n    const ah = this.actionHandler;\n    if (ah[actionName]) {\n      throw new Error(`There is already an actionName called \"${actionName}\"`);\n    }\n    ah[actionName] = handler;\n  }\n\n  /**\n   * Sends a message to the comObj to invoke the action with the supplied data.\n   * @param {string} actionName - Action to call.\n   * @param {JSON} data - JSON data to send.\n   * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n   */\n  send(actionName, data, transfers) {\n    this._postMessage(\n      {\n        sourceName: this.sourceName,\n        targetName: this.targetName,\n        action: actionName,\n        data,\n      },\n      transfers\n    );\n  }\n\n  /**\n   * Sends a message to the comObj to invoke the action with the supplied data.\n   * Expects that the other side will callback with the response.\n   * @param {string} actionName - Action to call.\n   * @param {JSON} data - JSON data to send.\n   * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n   * @returns {Promise} Promise to be resolved with response data.\n   */\n  sendWithPromise(actionName, data, transfers) {\n    const callbackId = this.callbackId++;\n    const capability = createPromiseCapability();\n    this.callbackCapabilities[callbackId] = capability;\n    try {\n      this._postMessage(\n        {\n          sourceName: this.sourceName,\n          targetName: this.targetName,\n          action: actionName,\n          callbackId,\n          data,\n        },\n        transfers\n      );\n    } catch (ex) {\n      capability.reject(ex);\n    }\n    return capability.promise;\n  }\n\n  /**\n   * Sends a message to the comObj to invoke the action with the supplied data.\n   * Expect that the other side will callback to signal 'start_complete'.\n   * @param {string} actionName - Action to call.\n   * @param {JSON} data - JSON data to send.\n   * @param {Object} queueingStrategy - Strategy to signal backpressure based on\n   *                 internal queue.\n   * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n   * @returns {ReadableStream} ReadableStream to read data in chunks.\n   */\n  sendWithStream(actionName, data, queueingStrategy, transfers) {\n    const streamId = this.streamId++;\n    const sourceName = this.sourceName;\n    const targetName = this.targetName;\n    const comObj = this.comObj;\n\n    return new ReadableStream(\n      {\n        start: controller => {\n          const startCapability = createPromiseCapability();\n          this.streamControllers[streamId] = {\n            controller,\n            startCall: startCapability,\n            pullCall: null,\n            cancelCall: null,\n            isClosed: false,\n          };\n          this._postMessage(\n            {\n              sourceName,\n              targetName,\n              action: actionName,\n              streamId,\n              data,\n              desiredSize: controller.desiredSize,\n            },\n            transfers\n          );\n          // Return Promise for Async process, to signal success/failure.\n          return startCapability.promise;\n        },\n\n        pull: controller => {\n          const pullCapability = createPromiseCapability();\n          this.streamControllers[streamId].pullCall = pullCapability;\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.PULL,\n            streamId,\n            desiredSize: controller.desiredSize,\n          });\n          // Returning Promise will not call \"pull\"\n          // again until current pull is resolved.\n          return pullCapability.promise;\n        },\n\n        cancel: reason => {\n          assert(reason instanceof Error, \"cancel must have a valid reason\");\n          const cancelCapability = createPromiseCapability();\n          this.streamControllers[streamId].cancelCall = cancelCapability;\n          this.streamControllers[streamId].isClosed = true;\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.CANCEL,\n            streamId,\n            reason: wrapReason(reason),\n          });\n          // Return Promise to signal success or failure.\n          return cancelCapability.promise;\n        },\n      },\n      queueingStrategy\n    );\n  }\n\n  /**\n   * @private\n   */\n  _createStreamSink(data) {\n    const self = this;\n    const action = this.actionHandler[data.action];\n    const streamId = data.streamId;\n    const sourceName = this.sourceName;\n    const targetName = data.sourceName;\n    const comObj = this.comObj;\n\n    const streamSink = {\n      enqueue(chunk, size = 1, transfers) {\n        if (this.isCancelled) {\n          return;\n        }\n        const lastDesiredSize = this.desiredSize;\n        this.desiredSize -= size;\n        // Enqueue decreases the desiredSize property of sink,\n        // so when it changes from positive to negative,\n        // set ready as unresolved promise.\n        if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n          this.sinkCapability = createPromiseCapability();\n          this.ready = this.sinkCapability.promise;\n        }\n        self._postMessage(\n          {\n            sourceName,\n            targetName,\n            stream: StreamKind.ENQUEUE,\n            streamId,\n            chunk,\n          },\n          transfers\n        );\n      },\n\n      close() {\n        if (this.isCancelled) {\n          return;\n        }\n        this.isCancelled = true;\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.CLOSE,\n          streamId,\n        });\n        delete self.streamSinks[streamId];\n      },\n\n      error(reason) {\n        assert(reason instanceof Error, \"error must have a valid reason\");\n        if (this.isCancelled) {\n          return;\n        }\n        this.isCancelled = true;\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.ERROR,\n          streamId,\n          reason: wrapReason(reason),\n        });\n      },\n\n      sinkCapability: createPromiseCapability(),\n      onPull: null,\n      onCancel: null,\n      isCancelled: false,\n      desiredSize: data.desiredSize,\n      ready: null,\n    };\n\n    streamSink.sinkCapability.resolve();\n    streamSink.ready = streamSink.sinkCapability.promise;\n    this.streamSinks[streamId] = streamSink;\n    new Promise(function (resolve) {\n      resolve(action(data.data, streamSink));\n    }).then(\n      function () {\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.START_COMPLETE,\n          streamId,\n          success: true,\n        });\n      },\n      function (reason) {\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.START_COMPLETE,\n          streamId,\n          reason: wrapReason(reason),\n        });\n      }\n    );\n  }\n\n  /**\n   * @private\n   */\n  _processStreamMessage(data) {\n    const streamId = data.streamId;\n    const sourceName = this.sourceName;\n    const targetName = data.sourceName;\n    const comObj = this.comObj;\n\n    switch (data.stream) {\n      case StreamKind.START_COMPLETE:\n        if (data.success) {\n          this.streamControllers[streamId].startCall.resolve();\n        } else {\n          this.streamControllers[streamId].startCall.reject(\n            wrapReason(data.reason)\n          );\n        }\n        break;\n      case StreamKind.PULL_COMPLETE:\n        if (data.success) {\n          this.streamControllers[streamId].pullCall.resolve();\n        } else {\n          this.streamControllers[streamId].pullCall.reject(\n            wrapReason(data.reason)\n          );\n        }\n        break;\n      case StreamKind.PULL:\n        // Ignore any pull after close is called.\n        if (!this.streamSinks[streamId]) {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.PULL_COMPLETE,\n            streamId,\n            success: true,\n          });\n          break;\n        }\n        // Pull increases the desiredSize property of sink,\n        // so when it changes from negative to positive,\n        // set ready property as resolved promise.\n        if (\n          this.streamSinks[streamId].desiredSize <= 0 &&\n          data.desiredSize > 0\n        ) {\n          this.streamSinks[streamId].sinkCapability.resolve();\n        }\n        // Reset desiredSize property of sink on every pull.\n        this.streamSinks[streamId].desiredSize = data.desiredSize;\n        const { onPull } = this.streamSinks[data.streamId];\n        new Promise(function (resolve) {\n          resolve(onPull && onPull());\n        }).then(\n          function () {\n            comObj.postMessage({\n              sourceName,\n              targetName,\n              stream: StreamKind.PULL_COMPLETE,\n              streamId,\n              success: true,\n            });\n          },\n          function (reason) {\n            comObj.postMessage({\n              sourceName,\n              targetName,\n              stream: StreamKind.PULL_COMPLETE,\n              streamId,\n              reason: wrapReason(reason),\n            });\n          }\n        );\n        break;\n      case StreamKind.ENQUEUE:\n        assert(\n          this.streamControllers[streamId],\n          \"enqueue should have stream controller\"\n        );\n        if (this.streamControllers[streamId].isClosed) {\n          break;\n        }\n        this.streamControllers[streamId].controller.enqueue(data.chunk);\n        break;\n      case StreamKind.CLOSE:\n        assert(\n          this.streamControllers[streamId],\n          \"close should have stream controller\"\n        );\n        if (this.streamControllers[streamId].isClosed) {\n          break;\n        }\n        this.streamControllers[streamId].isClosed = true;\n        this.streamControllers[streamId].controller.close();\n        this._deleteStreamController(streamId);\n        break;\n      case StreamKind.ERROR:\n        assert(\n          this.streamControllers[streamId],\n          \"error should have stream controller\"\n        );\n        this.streamControllers[streamId].controller.error(\n          wrapReason(data.reason)\n        );\n        this._deleteStreamController(streamId);\n        break;\n      case StreamKind.CANCEL_COMPLETE:\n        if (data.success) {\n          this.streamControllers[streamId].cancelCall.resolve();\n        } else {\n          this.streamControllers[streamId].cancelCall.reject(\n            wrapReason(data.reason)\n          );\n        }\n        this._deleteStreamController(streamId);\n        break;\n      case StreamKind.CANCEL:\n        if (!this.streamSinks[streamId]) {\n          break;\n        }\n        const { onCancel } = this.streamSinks[data.streamId];\n        new Promise(function (resolve) {\n          resolve(onCancel && onCancel(wrapReason(data.reason)));\n        }).then(\n          function () {\n            comObj.postMessage({\n              sourceName,\n              targetName,\n              stream: StreamKind.CANCEL_COMPLETE,\n              streamId,\n              success: true,\n            });\n          },\n          function (reason) {\n            comObj.postMessage({\n              sourceName,\n              targetName,\n              stream: StreamKind.CANCEL_COMPLETE,\n              streamId,\n              reason: wrapReason(reason),\n            });\n          }\n        );\n        this.streamSinks[streamId].sinkCapability.reject(\n          wrapReason(data.reason)\n        );\n        this.streamSinks[streamId].isCancelled = true;\n        delete this.streamSinks[streamId];\n        break;\n      default:\n        throw new Error(\"Unexpected stream case\");\n    }\n  }\n\n  /**\n   * @private\n   */\n  async _deleteStreamController(streamId) {\n    // Delete the `streamController` only when the start, pull, and cancel\n    // capabilities have settled, to prevent `TypeError`s.\n    await Promise.allSettled(\n      [\n        this.streamControllers[streamId].startCall,\n        this.streamControllers[streamId].pullCall,\n        this.streamControllers[streamId].cancelCall,\n      ].map(function (capability) {\n        return capability && capability.promise;\n      })\n    );\n    delete this.streamControllers[streamId];\n  }\n\n  /**\n   * Sends raw message to the comObj.\n   * @param {Object} message - Raw message.\n   * @param transfers List of transfers/ArrayBuffers, or undefined.\n   * @private\n   */\n  _postMessage(message, transfers) {\n    if (transfers && this.postMessageTransfers) {\n      this.comObj.postMessage(message, transfers);\n    } else {\n      this.comObj.postMessage(message);\n    }\n  }\n\n  destroy() {\n    this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n  }\n}\n\nexport { MessageHandler };\n","/* Copyright 2019 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\nimport { assert } from \"../shared/util.js\";\n\n/** @implements {IPDFStream} */\nclass PDFWorkerStream {\n  constructor(msgHandler) {\n    this._msgHandler = msgHandler;\n    this._contentLength = null;\n    this._fullRequestReader = null;\n    this._rangeRequestReaders = [];\n  }\n\n  getFullReader() {\n    assert(\n      !this._fullRequestReader,\n      \"PDFWorkerStream.getFullReader can only be called once.\"\n    );\n    this._fullRequestReader = new PDFWorkerStreamReader(this._msgHandler);\n    return this._fullRequestReader;\n  }\n\n  getRangeReader(begin, end) {\n    const reader = new PDFWorkerStreamRangeReader(begin, end, this._msgHandler);\n    this._rangeRequestReaders.push(reader);\n    return reader;\n  }\n\n  cancelAllRequests(reason) {\n    if (this._fullRequestReader) {\n      this._fullRequestReader.cancel(reason);\n    }\n    const readers = this._rangeRequestReaders.slice(0);\n    readers.forEach(function (reader) {\n      reader.cancel(reason);\n    });\n  }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFWorkerStreamReader {\n  constructor(msgHandler) {\n    this._msgHandler = msgHandler;\n    this.onProgress = null;\n\n    this._contentLength = null;\n    this._isRangeSupported = false;\n    this._isStreamingSupported = false;\n\n    const readableStream = this._msgHandler.sendWithStream(\"GetReader\");\n    this._reader = readableStream.getReader();\n\n    this._headersReady = this._msgHandler\n      .sendWithPromise(\"ReaderHeadersReady\")\n      .then(data => {\n        this._isStreamingSupported = data.isStreamingSupported;\n        this._isRangeSupported = data.isRangeSupported;\n        this._contentLength = data.contentLength;\n      });\n  }\n\n  get headersReady() {\n    return this._headersReady;\n  }\n\n  get contentLength() {\n    return this._contentLength;\n  }\n\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n\n  get isRangeSupported() {\n    return this._isRangeSupported;\n  }\n\n  async read() {\n    const { value, done } = await this._reader.read();\n    if (done) {\n      return { value: undefined, done: true };\n    }\n    // `value` is wrapped into Uint8Array, we need to\n    // unwrap it to ArrayBuffer for further processing.\n    return { value: value.buffer, done: false };\n  }\n\n  cancel(reason) {\n    this._reader.cancel(reason);\n  }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFWorkerStreamRangeReader {\n  constructor(begin, end, msgHandler) {\n    this._msgHandler = msgHandler;\n    this.onProgress = null;\n\n    const readableStream = this._msgHandler.sendWithStream(\"GetRangeReader\", {\n      begin,\n      end,\n    });\n    this._reader = readableStream.getReader();\n  }\n\n  get isStreamingSupported() {\n    return false;\n  }\n\n  async read() {\n    const { value, done } = await this._reader.read();\n    if (done) {\n      return { value: undefined, done: true };\n    }\n    return { value: value.buffer, done: false };\n  }\n\n  cancel(reason) {\n    this._reader.cancel(reason);\n  }\n}\n\nexport { PDFWorkerStream };\n"],"sourceRoot":""}