{"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/writer.js","webpack://pdfjs-dist/build/pdf.worker/src/core/evaluator.js","webpack://pdfjs-dist/build/pdf.worker/src/core/cmap.js","webpack://pdfjs-dist/build/pdf.worker/src/core/fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/cff_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/charsets.js","webpack://pdfjs-dist/build/pdf.worker/src/core/encodings.js","webpack://pdfjs-dist/build/pdf.worker/src/core/glyphlist.js","webpack://pdfjs-dist/build/pdf.worker/src/core/standard_fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/unicode.js","webpack://pdfjs-dist/build/pdf.worker/src/core/font_renderer.js","webpack://pdfjs-dist/build/pdf.worker/src/core/type1_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/pattern.js","webpack://pdfjs-dist/build/pdf.worker/src/core/function.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ps_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/bidi.js","webpack://pdfjs-dist/build/pdf.worker/src/core/metrics.js","webpack://pdfjs-dist/build/pdf.worker/src/core/murmurhash3.js","webpack://pdfjs-dist/build/pdf.worker/src/core/image.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/message_handler.js","webpack://pdfjs-dist/build/pdf.worker/src/core/worker_stream.js"],"names":["pdfjsVersion","pdfjsBuild","constructor","finish","terminate","ensureNotTerminated","testMessageProcessed","handler","supportTransfers","data","setVerbosityLevel","WorkerMessageHandler","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","pageRef","Ref","ref","page","promises","document","pageIndex","newRefs","x","a","xref","newXrefInfo","Object","_info","xrefInfo","isString","stringToPDFString","rootRef","encrypt","newRef","infoRef","info","fileIds","startXRef","incrementalUpdate","start","VerbosityLevel","Date","intent","renderInteractiveForms","annotationStorage","operatorListInfo","sink","featureId","UNSUPPORTED_FEATURES","normalizeWhitespace","combineTextItems","waitOn","cleanupPromise","setupDoc","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","errorMarkedContent","PasswordResponses","NEED_PASSWORD","INCORRECT_PASSWORD","Number","console","unreachable","base","other","url","absoluteUrl","baseUrl","_isValidProtocol","enumerable","configurable","writable","BaseException","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","b","c","first","second","sx","sy","rect","orderedX","rect1","rect2","orderedY","result","PDFStringTranslateTable","code","decodeURIComponent","escape","unescape","encodeURIComponent","arr1","arr2","element","date","buffer","capability","isSettled","get","resolve","createObjectURL","digits","forceDataSchema","URL","blob","type","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","getRawValues","set","has","forEach","callback","mergeSubDicts","mergedDict","dict","properties","property","values","subDict","refCache","toString","key","gen","refValue","put","remove","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","chunksToRequest","requestIds","groupedChunksToRequest","groupedChunk","reason","getStream","requestRanges","ranges","range","groupChunks","groupedChunks","prevChunk","onProgress","isProgressive","loadedRequests","lastChunk","onError","getBeginChunk","getEndChunk","abort","lookup","initializer","stopWhenFound","LOOP_LIMIT","loopCount","ROMAN_NUMBER_MAP","lowerCase","number","romanBuf","romanStr","offset","ch","DEFAULT_USER_UNIT","LETTER_SIZE_MEDIABOX","annotation","idCounters","_getInheritableProperty","isDict","dictArray","_getBoundingBox","box","isNum","cropBox","isArrayEqual","view","rotate","getContentStream","content","streams","isStream","partialEvaluator","idFactory","fontCache","builtInCMapCache","globalImageCache","options","newRefsPromises","isAnnotationRenderable","loadResources","objectLoader","getOperatorList","contentStreamPromise","resourcesPromise","dataPromises","pageListPromise","opList","transparency","resources","operatorList","annotations","pageOpList","opListPromises","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","linearization","Linearization","err","find","step","startXRefLength","found","isWhiteSpace","parseInt","isNaN","checkHeader","MAX_PDF_VERSION_LENGTH","version","parseStartXRef","num","_hasOnlyDocumentSignatures","recursionDepth","RECURSION_LIMIT","field","isSignature","isInvisible","formInfo","hasAcroForm","hasXfa","acroForm","xfa","fields","hasFields","sigFlags","hasOnlyDocumentSignatures","DocumentInfoValidators","Title","Author","Subject","Keywords","Creator","Producer","CreationDate","ModDate","Trapped","docInfo","PDFFormatVersion","IsLinearized","IsAcroFormPresent","IsXFAPresent","IsCollectionPresent","infoDict","customValue","isBool","idArray","hash","calculateMD5","fingerprintBuf","hex","_getLinearizationPage","catalog","globalIdFactory","checkFirstPage","dest","collection","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","config","defaultConfig","groupsData","groups","groupRefs","group","id","groupRef","name","_readOptionalContentConfig","onParsed","contentGroupRefs","nestedLevels","order","parsedOrderRefs","nestedOrder","parseNestedOrder","hiddenGroups","nestedName","parseOrder","MAX_NESTED_LEVELS","creator","baseState","on","parseOnOff","off","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","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","getNewRef","resetNewRef","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","mayHaveChildren","keys","rawValue","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","nextObj","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","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","peekObj","currentChar","beginInlineImagePos","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","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","encryptString","strLen","pad","crypto","buf","CipherTransformFactory","defaultPasswordBytes","passwordLength","revision","pdfAlgorithm","hashDataSize","ownerPassword","keyLengthInBytes","encryptionKey","checkData","derivedKey","userPassword","identityName","algorithm","cfDict","streamCryptoName","handlerDict","encryptMetadata","fileIdBytes","utf8StringToString","passwordBytes","prepareKeyData","uBytes","userValidationSalt","userKeySalt","ownerEncryption","userEncryption","perms","createEncryptionKey20","decodedPassword","decodeUserPassword","cf","cryptFilter","cfm","buildObjectKey","createCipherTransform","buildCipherConstructor","cipherConstructor","COMPONENTS","xRatio","w1","yRatio","newIndex","xScaled","w1Scanline","oldIndex","getRgb","rgb","getRgbItem","getRgbBuffer","getOutputLength","isPassthrough","isDefaultDecode","fillRgb","originalWidth","numComponentColors","needsResizing","originalHeight","allColors","bpc","colorMap","destPos","comps","rgbPos","resizeRgbImage","csRef","csName","localColorSpaceCache","localColorSpace","parsedColorSpace","cachedColorSpace","cs","colorSpaces","resourcesCS","mode","whitePoint","blackPoint","matrix","numComps","alt","altCS","baseCS","hiVal","tintFn","pdfFunctionFactory","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","onlyRefs","shouldCache","pageIndexSet","GlobalImageCache","addPageIndex","setData","onlyData","parameters","fieldType","quadPoints","quadPointsLists","annotationFlags","borderStyle","contents","hasAppearance","modificationDate","_hasFlag","_isViewable","_isPrintable","setContents","setModificationDate","setFlags","hasFlag","setRectangle","setColor","setBorderStyle","dictType","setAppearance","appearanceStates","normalAppearanceState","appearance","appearanceDict","bbox","getTransformMatrix","setWidth","maxHeight","setStyle","setDashArray","dashArray","allZeros","validNumber","setHorizontalCornerRadius","setVerticalCornerRadius","rawIRT","rt","setCreationDate","fieldValue","_constructFieldName","fieldName","loopDict","_decodeFormValue","formValue","hasFieldFlag","evaluator","AP","originalTransform","newTransform","bufferOriginal","writeDict","bufferNew","isPassword","defaultPadding","hPadding","totalHeight","fontInfo","fontSize","descent","vPadding","defaultAppearance","alignment","escapeString","renderedText","initialState","fontName","clone","_computeFontSize","em","capHeight","fontRegex","_renderText","glyphs","glyph","maximumLength","_getCombAppearance","combWidth","renderedComb","_getMultilineAppearance","text","padding","_splitLine","whitespace","lastSpacePos","startChunk","charWidth","savedAppearance","defaultValue","parentBuffer","parentTransform","_processCheckBox","customAppearance","normalAppearance","exportValues","_processRadioButton","fieldParent","fieldParentValue","_processPushButton","option","isOptionArray","exportValue","displayValue","DEFAULT_ICON_SIZE","getQuadPoints","parentItem","parentSubtype","rawParent","parentFlags","rawVertices","originalInkLists","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","firstTransformArg1","firstTransformArg2","firstTransformArg3","iTransform","iPIMXO","transformArgs","positions","images","maskParams","iFirstPIXO","firstPIXOArg0","MIN_IMAGES_IN_BLOCK","MAX_IMAGES_IN_BLOCK","iFirstSetFont","firstSetFontArg0","firstSetFontArg1","MIN_CHARS_IN_BLOCK","MAX_CHARS_IN_BLOCK","iFirstBeginText","iFirstSetTextMatrix","iFirstShowText","iFirstEndText","iFirst","iEndText","iCurr","_optimize","match","iterate","push","flush","NullOptimizer","OperatorList","CHUNK_SIZE","CHUNK_SIZE_ABOUT","streamSink","addOp","fn","addDependency","addDependencies","addOpList","getIR","transfers","writeValue","string","roundedValue","writeArray","numberToString","writeStream","time","md5Buffer","filesize","md5BufferLen","writeString","newXref","refForXrefTable","originalData","baseOffset","xrefTableData","indexes","maxOffset","md5","computeMD5","offsetSize","sizes","structSize","tableLength","bufferLen","footer","writeInt","DefaultPartialEvaluatorOptions","PatternType","TILING","SHADING","deferred","parsingArray","maybeBM","normalizeBlendMode","TimeSlotManager","newOptions","newEvaluator","hasBlendModes","nodes","graphicStates","graphicState","bm","xObjects","xObject","xResources","readableStream","pump","xobj","optionalContent","groupOptions","isolated","knockout","groupSubtype","colorSpace","_sendImgData","cacheGlobally","isInline","image","imageRef","bitStrideLength","imgArray","imageIsFromDecodeStream","inverseDecode","localImageCache","softMask","SMALL_IMAGE_DIMENSIONS","imageObj","res","PDFImage","handleSMask","smaskContent","smaskOptions","backdrop","transferObj","isPDFFunction","transferFn","transferMap","stateManager","handleTransferFunction","transferArray","transferMaps","numFns","numEffectfulFns","handleTilingType","tilingOpList","patternResources","patternDict","handleSetFont","fontArgs","translated","loadedName","extraProperties","handleText","isAddToPathSet","PartialEvaluator","ensureStateFont","gStateRef","gState","isSimpleGState","gStateObj","gStateKeys","localGStateCache","loadFont","errorFont","fontRef","fontRes","fontCapability","preEvaluatedFont","fontRefIsRef","fontID","descriptor","fontAliases","aliasFontRef","translatedPromise","xrefFontStats","fontFile3","fontType","getFontType","buildPath","parsingText","lastIndex","opArgs","parseColorSpace","patternName","typeNum","shading","Pattern","contentProperties","optionalContentType","optionalContentGroups","groupIds","ocg","expression","policy","self","xobjs","preprocessor","timeSlotManager","promiseBody","operation","localImage","resolveXObject","globalImage","combinedGlyphs","arrLength","arrItem","shadingRes","patternIR","localGStateObj","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","emptyGStateCache","textState","fontFamily","ascent","tsm","glyphHeight","trm","scaleLineX","scaleCtmX","textChunk","bidiResult","bidi","replaceWhitespace","dir","ensureTextContentItem","glyphWidth","glyphUnicode","NormalizedUnicodes","reverseIfRtl","charSpacing","wordSpacing","addFakeSpaces","tx","ty","w0","fakeSpaces","runBidiTransform","enqueueChunk","fontNameArg","fontSizeArg","flushTextContentItem","isSameTextLine","advance","buildTextContentItem","breakTextRun","currentState","xObjStateManager","sinkWrapper","enqueueInvoked","enqueue","gStateFont","resolveGState","stop","extractDataStructures","toUnicode","baseDict","toUnicodePromise","cidSystemInfo","registry","ordering","supplement","cidToGidMap","cidToGidBytes","differences","baseEncodingName","encoding","diffEncoding","getEncoding","isSymbolicFont","FontFlags","isNonsymbolicFont","readToUnicode","builtToUnicode","_buildSimpleFontToUnicode","forceGlyphs","glyphName","glyphsUnicodeMap","codeStr","unicode","getUnicodeForGlyph","baseEncoding","buildToUnicode","ucs2CMapName","fetchBuiltInCMap","useCMap","cMap","cid","ucs2","ucs2CMap","cmapObj","cmap","w2","readCidToGidMap","glyphsData","glyphID","extractWidths","glyphsWidths","defaultWidth","glyphsVMetrics","widths","vmetrics","defaultVMetrics","vmetric","firstChar","parseFloat","baseFontName","metrics","isMonospace","firstWidth","isSerifFont","fontNameWoStyle","getBaseFontMetrics","monospace","stdFontMap","lookupName","Metrics","glyphWidths","buildCharCodeToWidth","charCode","widthsByGlyphName","preEvaluateFont","composite","df","diffLength","diffBuf","diffEntry","lastChar","uint8array","translateFont","maxCharIndex","newProperties","baseFont","fontNameStr","baseFontStr","fontFile","length1","length2","length3","fixedPitch","fontMatrix","xHeight","italicAngle","isType3Font","cidEncoding","cMapPromise","accent","send","fallback","loadType3Data","type3Options","type3Evaluator","type3Dependencies","loadCharProcsPromise","charProcs","fontResources","charProcOperatorList","glyphStream","dummyOperatorList","old","setTextLineMatrix","translateTextMatrix","translateTextLineMatrix","calcTextLineMatrixAdvance","txDiff","tyDiff","denominator","calcRenderMatrix","carriageReturn","getOPMap","numArgs","variableArgs","EvaluatorPreprocessor","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","Font","fallbackName","getFontFileType","cff","adjustWidths","isTrueTypeFile","isTrueTypeCollectionFile","fileType","isOpenTypeFile","isType1File","isCFFFile","fileSubtype","toFontChar","newMap","privateUseAreaIndex","nextAvailableFontCharCode","privateUseOffetEnd","originalCharCode","glyphId","charCodeToGlyphId","hasGlyph","fontCharCode","codeIndices","getRanges","string16","bmpLength","trailingRangesCount","segCount","startCount","endCount","idDeltas","idRangeOffsets","glyphsIds","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","locaEntries","missingGlyphs","writeOffset","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","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","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","duplicateFirstGlyph","glyphZero","getSID","setByKey","valueLength","setByName","hasName","removeByName","keyToNameMap","nameToKeyMap","defaults","types","opcodes","layout","CFFTopDict","CFFDict","CFFPrivateDict","ISO_ADOBE","EXPERT","EXPERT_SUBSET","getFDIndex","glyphIndex","isTracking","track","setEntryLocation","offset1","offset2","offset3","offset4","compile","compiled","topDictTracker","fontDictTrackers","encodeNumber","encodeFloat","CFFCompiler","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","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","asb","sby","num2","num1","flexArgs","executeCommand","stackLength","howManyArgs","Type1Parser","EEXEC_ENCRYPT_KEY","CHAR_STRS_ENCRYPT_KEY","discardNumber","c1","c2","decrypted","digit1","isHexDigit","digit2","isBinary","decryptAscii","readNumberArray","readInt","readBoolean","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","cachedFunction","parsedFunction","createFromArray","getCached","fnRef","localFunction","_cache","PDFFunction","CONSTRUCT_SAMPLED","CONSTRUCT_INTERPOLATED","CONSTRUCT_STICHED","CONSTRUCT_POSTSCRIPT","getSampleArray","sampleMul","strBytes","strIdx","typeFn","fromIR","IR","parseArray","constructSampled","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","baseTypes","arabicTypes","temp","isLTR","strLength","createBidiText","numBidi","charType","startLevel","levels","isOdd","sor","eor","lastType","findUnequal","before","after","setValues","isEven","highestLevel","lowestOddLevel","reverseValues","getMetrics","SEED","MASK_HIGH","MASK_LOW","seed","update","blockCounts","tailLength","dataUint32","k2","C1","C2","C1_LOW","C2_LOW","hexdigest","hex1","hex2","addend","isMask","isIndexed","maskDict","imageData","smaskData","maskData","computedLength","haveFullData","decodeBuffer","decodeAddends","decodeCoefficients","decodeAndClamp","getComponents","bufferPos","rowComps","loop1End","loop2End","remainingBits","fillOpacity","sw","sh","alphaBuf","resizeImageMask","opacity","imageOffset","maskOffset","rgbaBuf","undoPreblend","matte","matteRgb","matteR","matteG","matteB","createImageData","forceRGBA","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","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  isString,\n  MissingPDFException,\n  PasswordException,\n  setVerbosityLevel,\n  stringToPDFString,\n  UnexpectedResponseException,\n  UnknownErrorException,\n  UNSUPPORTED_FEATURES,\n  VerbosityLevel,\n  warn,\n} from \"../shared/util.js\";\nimport { clearPrimitiveCaches, Ref } from \"./primitives.js\";\nimport { LocalPdfManager, NetworkPdfManager } from \"./pdf_manager.js\";\nimport { incrementalUpdate } from \"./writer.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\nimport { MessageHandler } from \"../shared/message_handler.js\";\nimport { PDFWorkerStream } from \"./worker_stream.js\";\nimport { XRefParseException } from \"./core_utils.js\";\n\nclass WorkerTask {\n  constructor(name) {\n    this.name = name;\n    this.terminated = false;\n    this._capability = createPromiseCapability();\n  }\n\n  get finished() {\n    return this._capability.promise;\n  }\n\n  finish() {\n    this._capability.resolve();\n  }\n\n  terminate() {\n    this.terminated = true;\n  }\n\n  ensureNotTerminated() {\n    if (this.terminated) {\n      throw new Error(\"Worker task was terminated\");\n    }\n  }\n}\n\nclass WorkerMessageHandler {\n  static setup(handler, port) {\n    var testMessageProcessed = false;\n    handler.on(\"test\", function wphSetupTest(data) {\n      if (testMessageProcessed) {\n        return; // we already processed 'test' message once\n      }\n      testMessageProcessed = true;\n\n      // check if Uint8Array can be sent to worker\n      if (!(data instanceof Uint8Array)) {\n        handler.send(\"test\", null);\n        return;\n      }\n      // making sure postMessage transfers are working\n      const supportTransfers = data[0] === 255;\n      handler.postMessageTransfers = supportTransfers;\n\n      handler.send(\"test\", { supportTransfers });\n    });\n\n    handler.on(\"configure\", function wphConfigure(data) {\n      setVerbosityLevel(data.verbosity);\n    });\n\n    handler.on(\"GetDocRequest\", function wphSetupDoc(data) {\n      return WorkerMessageHandler.createDocumentHandler(data, port);\n    });\n  }\n\n  static createDocumentHandler(docParams, port) {\n    // This context is actually holds references on pdfManager and handler,\n    // until the latter is destroyed.\n    var pdfManager;\n    var terminated = false;\n    var cancelXHRs = null;\n    var WorkerTasks = [];\n    const verbosity = getVerbosityLevel();\n\n    const apiVersion = docParams.apiVersion;\n    const workerVersion =\n      typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"TESTING\")\n        ? PDFJSDev.eval(\"BUNDLE_VERSION\")\n        : null;\n    if (apiVersion !== workerVersion) {\n      throw new Error(\n        `The API version \"${apiVersion}\" does not match ` +\n          `the Worker version \"${workerVersion}\".`\n      );\n    }\n\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n      // Fail early, and predictably, rather than having (some) fonts fail to\n      // load/render with slightly cryptic error messages in environments where\n      // the `Array.prototype` has been *incorrectly* extended.\n      //\n      // PLEASE NOTE: We do *not* want to slow down font parsing by adding\n      //              `hasOwnProperty` checks all over the code-base.\n      const enumerableProperties = [];\n      for (const property in []) {\n        enumerableProperties.push(property);\n      }\n      if (enumerableProperties.length) {\n        throw new Error(\n          \"The `Array.prototype` contains unexpected enumerable properties: \" +\n            enumerableProperties.join(\", \") +\n            \"; thus breaking e.g. `for...in` iteration of `Array`s.\"\n        );\n      }\n\n      // Ensure that (primarily) Node.js users won't accidentally attempt to use\n      // a non-translated/non-polyfilled build of the library, since that would\n      // quickly fail anyway because of missing functionality (such as e.g.\n      // `ReadableStream` and `Promise.allSettled`).\n      if (\n        (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"SKIP_BABEL\")) &&\n        (typeof ReadableStream === \"undefined\" ||\n          typeof Promise.allSettled === \"undefined\")\n      ) {\n        throw new Error(\n          \"The browser/environment lacks native support for critical \" +\n            \"functionality used by the PDF.js library (e.g. \" +\n            \"`ReadableStream` and/or `Promise.allSettled`); \" +\n            \"please use an ES5-compatible build instead.\"\n        );\n      }\n    }\n\n    var docId = docParams.docId;\n    var docBaseUrl = docParams.docBaseUrl;\n    var workerHandlerName = docParams.docId + \"_worker\";\n    var handler = new MessageHandler(workerHandlerName, docId, port);\n\n    // Ensure that postMessage transfers are always correctly enabled/disabled,\n    // to prevent \"DataCloneError\" in browsers without transfers support.\n    handler.postMessageTransfers = docParams.postMessageTransfers;\n\n    function ensureNotTerminated() {\n      if (terminated) {\n        throw new Error(\"Worker was terminated\");\n      }\n    }\n\n    function startWorkerTask(task) {\n      WorkerTasks.push(task);\n    }\n\n    function finishWorkerTask(task) {\n      task.finish();\n      var i = WorkerTasks.indexOf(task);\n      WorkerTasks.splice(i, 1);\n    }\n\n    async function loadDocument(recoveryMode) {\n      await pdfManager.ensureDoc(\"checkHeader\");\n      await pdfManager.ensureDoc(\"parseStartXRef\");\n      await pdfManager.ensureDoc(\"parse\", [recoveryMode]);\n\n      if (!recoveryMode) {\n        // Check that at least the first page can be successfully loaded,\n        // since otherwise the XRef table is definitely not valid.\n        await pdfManager.ensureDoc(\"checkFirstPage\");\n      }\n\n      const [numPages, fingerprint] = await Promise.all([\n        pdfManager.ensureDoc(\"numPages\"),\n        pdfManager.ensureDoc(\"fingerprint\"),\n      ]);\n      return { numPages, fingerprint };\n    }\n\n    function getPdfManager(data, evaluatorOptions) {\n      var pdfManagerCapability = createPromiseCapability();\n      let newPdfManager;\n\n      var source = data.source;\n      if (source.data) {\n        try {\n          newPdfManager = new LocalPdfManager(\n            docId,\n            source.data,\n            source.password,\n            evaluatorOptions,\n            docBaseUrl\n          );\n          pdfManagerCapability.resolve(newPdfManager);\n        } catch (ex) {\n          pdfManagerCapability.reject(ex);\n        }\n        return pdfManagerCapability.promise;\n      }\n\n      var pdfStream,\n        cachedChunks = [];\n      try {\n        pdfStream = new PDFWorkerStream(handler);\n      } catch (ex) {\n        pdfManagerCapability.reject(ex);\n        return pdfManagerCapability.promise;\n      }\n\n      var fullRequest = pdfStream.getFullReader();\n      fullRequest.headersReady\n        .then(function () {\n          if (!fullRequest.isRangeSupported) {\n            return;\n          }\n\n          // We don't need auto-fetch when streaming is enabled.\n          var disableAutoFetch =\n            source.disableAutoFetch || fullRequest.isStreamingSupported;\n          newPdfManager = new NetworkPdfManager(\n            docId,\n            pdfStream,\n            {\n              msgHandler: handler,\n              password: source.password,\n              length: fullRequest.contentLength,\n              disableAutoFetch,\n              rangeChunkSize: source.rangeChunkSize,\n            },\n            evaluatorOptions,\n            docBaseUrl\n          );\n          // There may be a chance that `newPdfManager` is not initialized for\n          // the first few runs of `readchunk` block of code. Be sure to send\n          // all cached chunks, if any, to chunked_stream via pdf_manager.\n          for (let i = 0; i < cachedChunks.length; i++) {\n            newPdfManager.sendProgressiveData(cachedChunks[i]);\n          }\n\n          cachedChunks = [];\n          pdfManagerCapability.resolve(newPdfManager);\n          cancelXHRs = null;\n        })\n        .catch(function (reason) {\n          pdfManagerCapability.reject(reason);\n          cancelXHRs = null;\n        });\n\n      var loaded = 0;\n      var flushChunks = function () {\n        var pdfFile = arraysToBytes(cachedChunks);\n        if (source.length && pdfFile.length !== source.length) {\n          warn(\"reported HTTP length is different from actual\");\n        }\n        // the data is array, instantiating directly from it\n        try {\n          newPdfManager = new LocalPdfManager(\n            docId,\n            pdfFile,\n            source.password,\n            evaluatorOptions,\n            docBaseUrl\n          );\n          pdfManagerCapability.resolve(newPdfManager);\n        } catch (ex) {\n          pdfManagerCapability.reject(ex);\n        }\n        cachedChunks = [];\n      };\n      var readPromise = new Promise(function (resolve, reject) {\n        var readChunk = function ({ value, done }) {\n          try {\n            ensureNotTerminated();\n            if (done) {\n              if (!newPdfManager) {\n                flushChunks();\n              }\n              cancelXHRs = null;\n              return;\n            }\n\n            loaded += arrayByteLength(value);\n            if (!fullRequest.isStreamingSupported) {\n              handler.send(\"DocProgress\", {\n                loaded,\n                total: Math.max(loaded, fullRequest.contentLength || 0),\n              });\n            }\n\n            if (newPdfManager) {\n              newPdfManager.sendProgressiveData(value);\n            } else {\n              cachedChunks.push(value);\n            }\n\n            fullRequest.read().then(readChunk, reject);\n          } catch (e) {\n            reject(e);\n          }\n        };\n        fullRequest.read().then(readChunk, reject);\n      });\n      readPromise.catch(function (e) {\n        pdfManagerCapability.reject(e);\n        cancelXHRs = null;\n      });\n\n      cancelXHRs = function (reason) {\n        pdfStream.cancelAllRequests(reason);\n      };\n\n      return pdfManagerCapability.promise;\n    }\n\n    function setupDoc(data) {\n      function onSuccess(doc) {\n        ensureNotTerminated();\n        handler.send(\"GetDoc\", { pdfInfo: doc });\n      }\n\n      function onFailure(ex) {\n        ensureNotTerminated();\n\n        if (ex instanceof PasswordException) {\n          var task = new WorkerTask(`PasswordException: response ${ex.code}`);\n          startWorkerTask(task);\n\n          handler\n            .sendWithPromise(\"PasswordRequest\", ex)\n            .then(function ({ password }) {\n              finishWorkerTask(task);\n              pdfManager.updatePassword(password);\n              pdfManagerReady();\n            })\n            .catch(function () {\n              finishWorkerTask(task);\n              handler.send(\"DocException\", ex);\n            });\n        } else if (\n          ex instanceof InvalidPDFException ||\n          ex instanceof MissingPDFException ||\n          ex instanceof UnexpectedResponseException ||\n          ex instanceof UnknownErrorException\n        ) {\n          handler.send(\"DocException\", ex);\n        } else {\n          handler.send(\n            \"DocException\",\n            new UnknownErrorException(ex.message, ex.toString())\n          );\n        }\n      }\n\n      function pdfManagerReady() {\n        ensureNotTerminated();\n\n        loadDocument(false).then(onSuccess, function (reason) {\n          ensureNotTerminated();\n\n          // Try again with recoveryMode == true\n          if (!(reason instanceof XRefParseException)) {\n            onFailure(reason);\n            return;\n          }\n          pdfManager.requestLoadedStream();\n          pdfManager.onLoadedStream().then(function () {\n            ensureNotTerminated();\n\n            loadDocument(true).then(onSuccess, onFailure);\n          });\n        });\n      }\n\n      ensureNotTerminated();\n\n      var evaluatorOptions = {\n        maxImageSize: data.maxImageSize,\n        disableFontFace: data.disableFontFace,\n        ignoreErrors: data.ignoreErrors,\n        isEvalSupported: data.isEvalSupported,\n        fontExtraProperties: data.fontExtraProperties,\n      };\n\n      getPdfManager(data, evaluatorOptions)\n        .then(function (newPdfManager) {\n          if (terminated) {\n            // We were in a process of setting up the manager, but it got\n            // terminated in the middle.\n            newPdfManager.terminate(\n              new AbortException(\"Worker was terminated.\")\n            );\n            throw new Error(\"Worker was terminated\");\n          }\n          pdfManager = newPdfManager;\n\n          pdfManager.onLoadedStream().then(function (stream) {\n            handler.send(\"DataLoaded\", { length: stream.bytes.byteLength });\n          });\n        })\n        .then(pdfManagerReady, onFailure);\n    }\n\n    handler.on(\"GetPage\", function wphSetupGetPage(data) {\n      return pdfManager.getPage(data.pageIndex).then(function (page) {\n        return Promise.all([\n          pdfManager.ensure(page, \"rotate\"),\n          pdfManager.ensure(page, \"ref\"),\n          pdfManager.ensure(page, \"userUnit\"),\n          pdfManager.ensure(page, \"view\"),\n        ]).then(function ([rotate, ref, userUnit, view]) {\n          return {\n            rotate,\n            ref,\n            userUnit,\n            view,\n          };\n        });\n      });\n    });\n\n    handler.on(\"GetPageIndex\", function wphSetupGetPageIndex({ ref }) {\n      const pageRef = Ref.get(ref.num, ref.gen);\n      return pdfManager.ensureCatalog(\"getPageIndex\", [pageRef]);\n    });\n\n    handler.on(\"GetDestinations\", function wphSetupGetDestinations(data) {\n      return pdfManager.ensureCatalog(\"destinations\");\n    });\n\n    handler.on(\"GetDestination\", function wphSetupGetDestination(data) {\n      return pdfManager.ensureCatalog(\"getDestination\", [data.id]);\n    });\n\n    handler.on(\"GetPageLabels\", function wphSetupGetPageLabels(data) {\n      return pdfManager.ensureCatalog(\"pageLabels\");\n    });\n\n    handler.on(\"GetPageLayout\", function wphSetupGetPageLayout(data) {\n      return pdfManager.ensureCatalog(\"pageLayout\");\n    });\n\n    handler.on(\"GetPageMode\", function wphSetupGetPageMode(data) {\n      return pdfManager.ensureCatalog(\"pageMode\");\n    });\n\n    handler.on(\"GetViewerPreferences\", function (data) {\n      return pdfManager.ensureCatalog(\"viewerPreferences\");\n    });\n\n    handler.on(\"GetOpenAction\", function (data) {\n      return pdfManager.ensureCatalog(\"openAction\");\n    });\n\n    handler.on(\"GetAttachments\", function wphSetupGetAttachments(data) {\n      return pdfManager.ensureCatalog(\"attachments\");\n    });\n\n    handler.on(\"GetJavaScript\", function wphSetupGetJavaScript(data) {\n      return pdfManager.ensureCatalog(\"javaScript\");\n    });\n\n    handler.on(\"GetOutline\", function wphSetupGetOutline(data) {\n      return pdfManager.ensureCatalog(\"documentOutline\");\n    });\n\n    handler.on(\"GetOptionalContentConfig\", function (data) {\n      return pdfManager.ensureCatalog(\"optionalContentConfig\");\n    });\n\n    handler.on(\"GetPermissions\", function (data) {\n      return pdfManager.ensureCatalog(\"permissions\");\n    });\n\n    handler.on(\"GetMetadata\", function wphSetupGetMetadata(data) {\n      return Promise.all([\n        pdfManager.ensureDoc(\"documentInfo\"),\n        pdfManager.ensureCatalog(\"metadata\"),\n      ]);\n    });\n\n    handler.on(\"GetData\", function wphSetupGetData(data) {\n      pdfManager.requestLoadedStream();\n      return pdfManager.onLoadedStream().then(function (stream) {\n        return stream.bytes;\n      });\n    });\n\n    handler.on(\"GetStats\", function wphSetupGetStats(data) {\n      return pdfManager.ensureXRef(\"stats\");\n    });\n\n    handler.on(\"GetAnnotations\", function ({ pageIndex, intent }) {\n      return pdfManager.getPage(pageIndex).then(function (page) {\n        return page.getAnnotationsData(intent);\n      });\n    });\n\n    handler.on(\"SaveDocument\", function ({\n      numPages,\n      annotationStorage,\n      filename,\n    }) {\n      pdfManager.requestLoadedStream();\n      const promises = [pdfManager.onLoadedStream()];\n      const document = pdfManager.pdfDocument;\n      for (let pageIndex = 0; pageIndex < numPages; pageIndex++) {\n        promises.push(\n          pdfManager.getPage(pageIndex).then(function (page) {\n            const task = new WorkerTask(`Save: page ${pageIndex}`);\n            return page.save(handler, task, annotationStorage);\n          })\n        );\n      }\n\n      return Promise.all(promises).then(([stream, ...refs]) => {\n        let newRefs = [];\n        for (const ref of refs) {\n          newRefs = ref\n            .filter(x => x !== null)\n            .reduce((a, b) => a.concat(b), newRefs);\n        }\n\n        if (newRefs.length === 0) {\n          // No new refs so just return the initial bytes\n          return stream.bytes;\n        }\n\n        const xref = document.xref;\n        let newXrefInfo = Object.create(null);\n        if (xref.trailer) {\n          // Get string info from Info in order to compute fileId\n          const _info = Object.create(null);\n          const xrefInfo = xref.trailer.get(\"Info\") || null;\n          if (xrefInfo) {\n            xrefInfo.forEach((key, value) => {\n              if (isString(key) && isString(value)) {\n                _info[key] = stringToPDFString(value);\n              }\n            });\n          }\n\n          newXrefInfo = {\n            rootRef: xref.trailer.getRaw(\"Root\") || null,\n            encrypt: xref.trailer.getRaw(\"Encrypt\") || null,\n            newRef: xref.getNewRef(),\n            infoRef: xref.trailer.getRaw(\"Info\") || null,\n            info: _info,\n            fileIds: xref.trailer.getRaw(\"ID\") || null,\n            startXRef: document.startXRef,\n            filename,\n          };\n        }\n        xref.resetNewRef();\n\n        return incrementalUpdate(stream.bytes, newXrefInfo, newRefs);\n      });\n    });\n\n    handler.on(\n      \"GetOperatorList\",\n      function wphSetupRenderPage(data, sink) {\n        var pageIndex = data.pageIndex;\n        pdfManager.getPage(pageIndex).then(function (page) {\n          var task = new WorkerTask(`GetOperatorList: page ${pageIndex}`);\n          startWorkerTask(task);\n\n          // NOTE: Keep this condition in sync with the `info` helper function.\n          const start = verbosity >= VerbosityLevel.INFOS ? Date.now() : 0;\n\n          // Pre compile the pdf page and fetch the fonts/images.\n          page\n            .getOperatorList({\n              handler,\n              sink,\n              task,\n              intent: data.intent,\n              renderInteractiveForms: data.renderInteractiveForms,\n              annotationStorage: data.annotationStorage,\n            })\n            .then(\n              function (operatorListInfo) {\n                finishWorkerTask(task);\n\n                if (start) {\n                  info(\n                    `page=${pageIndex + 1} - getOperatorList: time=` +\n                      `${Date.now() - start}ms, len=${operatorListInfo.length}`\n                  );\n                }\n                sink.close();\n              },\n              function (reason) {\n                finishWorkerTask(task);\n                if (task.terminated) {\n                  return; // ignoring errors from the terminated thread\n                }\n                // For compatibility with older behavior, generating unknown\n                // unsupported feature notification on errors.\n                handler.send(\"UnsupportedFeature\", {\n                  featureId: UNSUPPORTED_FEATURES.errorOperatorList,\n                });\n\n                sink.error(reason);\n\n                // TODO: Should `reason` be re-thrown here (currently that\n                //       casues \"Uncaught exception: ...\" messages in the\n                //       console)?\n              }\n            );\n        });\n      },\n      this\n    );\n\n    handler.on(\"GetTextContent\", function wphExtractText(data, sink) {\n      var pageIndex = data.pageIndex;\n      sink.onPull = function (desiredSize) {};\n      sink.onCancel = function (reason) {};\n\n      pdfManager.getPage(pageIndex).then(function (page) {\n        var task = new WorkerTask(\"GetTextContent: page \" + pageIndex);\n        startWorkerTask(task);\n\n        // NOTE: Keep this condition in sync with the `info` helper function.\n        const start = verbosity >= VerbosityLevel.INFOS ? Date.now() : 0;\n\n        page\n          .extractTextContent({\n            handler,\n            task,\n            sink,\n            normalizeWhitespace: data.normalizeWhitespace,\n            combineTextItems: data.combineTextItems,\n          })\n          .then(\n            function () {\n              finishWorkerTask(task);\n\n              if (start) {\n                info(\n                  `page=${pageIndex + 1} - getTextContent: time=` +\n                    `${Date.now() - start}ms`\n                );\n              }\n              sink.close();\n            },\n            function (reason) {\n              finishWorkerTask(task);\n              if (task.terminated) {\n                return; // ignoring errors from the terminated thread\n              }\n              sink.error(reason);\n\n              // TODO: Should `reason` be re-thrown here (currently that casues\n              //       \"Uncaught exception: ...\" messages in the console)?\n            }\n          );\n      });\n    });\n\n    handler.on(\"FontFallback\", function (data) {\n      return pdfManager.fontFallback(data.id, handler);\n    });\n\n    handler.on(\"Cleanup\", function wphCleanup(data) {\n      return pdfManager.cleanup(/* manuallyTriggered = */ true);\n    });\n\n    handler.on(\"Terminate\", function wphTerminate(data) {\n      terminated = true;\n\n      const waitOn = [];\n      if (pdfManager) {\n        pdfManager.terminate(new AbortException(\"Worker was terminated.\"));\n\n        const cleanupPromise = pdfManager.cleanup();\n        waitOn.push(cleanupPromise);\n\n        pdfManager = null;\n      } else {\n        clearPrimitiveCaches();\n      }\n      if (cancelXHRs) {\n        cancelXHRs(new AbortException(\"Worker was terminated.\"));\n      }\n\n      WorkerTasks.forEach(function (task) {\n        waitOn.push(task.finished);\n        task.terminate();\n      });\n\n      return Promise.all(waitOn).then(function () {\n        // Notice that even if we destroying handler, resolved response promise\n        // must be sent back.\n        handler.destroy();\n        handler = null;\n      });\n    });\n\n    handler.on(\"Ready\", function wphReady(data) {\n      setupDoc(docParams);\n      docParams = null; // we don't need docParams anymore -- saving memory.\n    });\n    return workerHandlerName;\n  }\n\n  static initializeFromPort(port) {\n    var handler = new MessageHandler(\"worker\", \"main\", port);\n    WorkerMessageHandler.setup(handler, port);\n    handler.send(\"ready\", null);\n  }\n}\n\nfunction isMessagePort(maybePort) {\n  return (\n    typeof maybePort.postMessage === \"function\" && \"onmessage\" in maybePort\n  );\n}\n\n// Worker thread (and not Node.js)?\nif (\n  typeof window === \"undefined\" &&\n  !isNodeJS &&\n  typeof self !== \"undefined\" &&\n  isMessagePort(self)\n) {\n  WorkerMessageHandler.initializeFromPort(self);\n}\n\nexport { WorkerTask, WorkerMessageHandler };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\nimport \"./compatibility.js\";\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\n// Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\nconst PermissionFlag = {\n  PRINT: 0x04,\n  MODIFY_CONTENTS: 0x08,\n  COPY: 0x10,\n  MODIFY_ANNOTATIONS: 0x20,\n  FILL_INTERACTIVE_FORMS: 0x100,\n  COPY_FOR_ACCESSIBILITY: 0x200,\n  ASSEMBLE: 0x400,\n  PRINT_HIGH_QUALITY: 0x800,\n};\n\nconst TextRenderingMode = {\n  FILL: 0,\n  STROKE: 1,\n  FILL_STROKE: 2,\n  INVISIBLE: 3,\n  FILL_ADD_TO_PATH: 4,\n  STROKE_ADD_TO_PATH: 5,\n  FILL_STROKE_ADD_TO_PATH: 6,\n  ADD_TO_PATH: 7,\n  FILL_STROKE_MASK: 3,\n  ADD_TO_PATH_FLAG: 4,\n};\n\nconst ImageKind = {\n  GRAYSCALE_1BPP: 1,\n  RGB_24BPP: 2,\n  RGBA_32BPP: 3,\n};\n\nconst AnnotationType = {\n  TEXT: 1,\n  LINK: 2,\n  FREETEXT: 3,\n  LINE: 4,\n  SQUARE: 5,\n  CIRCLE: 6,\n  POLYGON: 7,\n  POLYLINE: 8,\n  HIGHLIGHT: 9,\n  UNDERLINE: 10,\n  SQUIGGLY: 11,\n  STRIKEOUT: 12,\n  STAMP: 13,\n  CARET: 14,\n  INK: 15,\n  POPUP: 16,\n  FILEATTACHMENT: 17,\n  SOUND: 18,\n  MOVIE: 19,\n  WIDGET: 20,\n  SCREEN: 21,\n  PRINTERMARK: 22,\n  TRAPNET: 23,\n  WATERMARK: 24,\n  THREED: 25,\n  REDACT: 26,\n};\n\nconst AnnotationStateModelType = {\n  MARKED: \"Marked\",\n  REVIEW: \"Review\",\n};\n\nconst AnnotationMarkedState = {\n  MARKED: \"Marked\",\n  UNMARKED: \"Unmarked\",\n};\n\nconst AnnotationReviewState = {\n  ACCEPTED: \"Accepted\",\n  REJECTED: \"Rejected\",\n  CANCELLED: \"Cancelled\",\n  COMPLETED: \"Completed\",\n  NONE: \"None\",\n};\n\nconst AnnotationReplyType = {\n  GROUP: \"Group\",\n  REPLY: \"R\",\n};\n\nconst AnnotationFlag = {\n  INVISIBLE: 0x01,\n  HIDDEN: 0x02,\n  PRINT: 0x04,\n  NOZOOM: 0x08,\n  NOROTATE: 0x10,\n  NOVIEW: 0x20,\n  READONLY: 0x40,\n  LOCKED: 0x80,\n  TOGGLENOVIEW: 0x100,\n  LOCKEDCONTENTS: 0x200,\n};\n\nconst AnnotationFieldFlag = {\n  READONLY: 0x0000001,\n  REQUIRED: 0x0000002,\n  NOEXPORT: 0x0000004,\n  MULTILINE: 0x0001000,\n  PASSWORD: 0x0002000,\n  NOTOGGLETOOFF: 0x0004000,\n  RADIO: 0x0008000,\n  PUSHBUTTON: 0x0010000,\n  COMBO: 0x0020000,\n  EDIT: 0x0040000,\n  SORT: 0x0080000,\n  FILESELECT: 0x0100000,\n  MULTISELECT: 0x0200000,\n  DONOTSPELLCHECK: 0x0400000,\n  DONOTSCROLL: 0x0800000,\n  COMB: 0x1000000,\n  RICHTEXT: 0x2000000,\n  RADIOSINUNISON: 0x2000000,\n  COMMITONSELCHANGE: 0x4000000,\n};\n\nconst AnnotationBorderStyleType = {\n  SOLID: 1,\n  DASHED: 2,\n  BEVELED: 3,\n  INSET: 4,\n  UNDERLINE: 5,\n};\n\nconst StreamType = {\n  UNKNOWN: \"UNKNOWN\",\n  FLATE: \"FLATE\",\n  LZW: \"LZW\",\n  DCT: \"DCT\",\n  JPX: \"JPX\",\n  JBIG: \"JBIG\",\n  A85: \"A85\",\n  AHX: \"AHX\",\n  CCF: \"CCF\",\n  RLX: \"RLX\", // PDF short name is 'RL', but telemetry requires three chars.\n};\n\nconst FontType = {\n  UNKNOWN: \"UNKNOWN\",\n  TYPE1: \"TYPE1\",\n  TYPE1C: \"TYPE1C\",\n  CIDFONTTYPE0: \"CIDFONTTYPE0\",\n  CIDFONTTYPE0C: \"CIDFONTTYPE0C\",\n  TRUETYPE: \"TRUETYPE\",\n  CIDFONTTYPE2: \"CIDFONTTYPE2\",\n  TYPE3: \"TYPE3\",\n  OPENTYPE: \"OPENTYPE\",\n  TYPE0: \"TYPE0\",\n  MMTYPE1: \"MMTYPE1\",\n};\n\nconst VerbosityLevel = {\n  ERRORS: 0,\n  WARNINGS: 1,\n  INFOS: 5,\n};\n\nconst CMapCompressionType = {\n  NONE: 0,\n  BINARY: 1,\n  STREAM: 2,\n};\n\n// All the possible operations for an operator list.\nconst OPS = {\n  // Intentionally start from 1 so it is easy to spot bad operators that will be\n  // 0's.\n  dependency: 1,\n  setLineWidth: 2,\n  setLineCap: 3,\n  setLineJoin: 4,\n  setMiterLimit: 5,\n  setDash: 6,\n  setRenderingIntent: 7,\n  setFlatness: 8,\n  setGState: 9,\n  save: 10,\n  restore: 11,\n  transform: 12,\n  moveTo: 13,\n  lineTo: 14,\n  curveTo: 15,\n  curveTo2: 16,\n  curveTo3: 17,\n  closePath: 18,\n  rectangle: 19,\n  stroke: 20,\n  closeStroke: 21,\n  fill: 22,\n  eoFill: 23,\n  fillStroke: 24,\n  eoFillStroke: 25,\n  closeFillStroke: 26,\n  closeEOFillStroke: 27,\n  endPath: 28,\n  clip: 29,\n  eoClip: 30,\n  beginText: 31,\n  endText: 32,\n  setCharSpacing: 33,\n  setWordSpacing: 34,\n  setHScale: 35,\n  setLeading: 36,\n  setFont: 37,\n  setTextRenderingMode: 38,\n  setTextRise: 39,\n  moveText: 40,\n  setLeadingMoveText: 41,\n  setTextMatrix: 42,\n  nextLine: 43,\n  showText: 44,\n  showSpacedText: 45,\n  nextLineShowText: 46,\n  nextLineSetSpacingShowText: 47,\n  setCharWidth: 48,\n  setCharWidthAndBounds: 49,\n  setStrokeColorSpace: 50,\n  setFillColorSpace: 51,\n  setStrokeColor: 52,\n  setStrokeColorN: 53,\n  setFillColor: 54,\n  setFillColorN: 55,\n  setStrokeGray: 56,\n  setFillGray: 57,\n  setStrokeRGBColor: 58,\n  setFillRGBColor: 59,\n  setStrokeCMYKColor: 60,\n  setFillCMYKColor: 61,\n  shadingFill: 62,\n  beginInlineImage: 63,\n  beginImageData: 64,\n  endInlineImage: 65,\n  paintXObject: 66,\n  markPoint: 67,\n  markPointProps: 68,\n  beginMarkedContent: 69,\n  beginMarkedContentProps: 70,\n  endMarkedContent: 71,\n  beginCompat: 72,\n  endCompat: 73,\n  paintFormXObjectBegin: 74,\n  paintFormXObjectEnd: 75,\n  beginGroup: 76,\n  endGroup: 77,\n  beginAnnotations: 78,\n  endAnnotations: 79,\n  beginAnnotation: 80,\n  endAnnotation: 81,\n  paintJpegXObject: 82,\n  paintImageMaskXObject: 83,\n  paintImageMaskXObjectGroup: 84,\n  paintImageXObject: 85,\n  paintInlineImageXObject: 86,\n  paintInlineImageXObjectGroup: 87,\n  paintImageXObjectRepeat: 88,\n  paintImageMaskXObjectRepeat: 89,\n  paintSolidColorImageMask: 90,\n  constructPath: 91,\n};\n\nconst UNSUPPORTED_FEATURES = {\n  /** @deprecated unused */\n  unknown: \"unknown\",\n  forms: \"forms\",\n  javaScript: \"javaScript\",\n  smask: \"smask\",\n  shadingPattern: \"shadingPattern\",\n  /** @deprecated unused */\n  font: \"font\",\n  errorTilingPattern: \"errorTilingPattern\",\n  errorExtGState: \"errorExtGState\",\n  errorXObject: \"errorXObject\",\n  errorFontLoadType3: \"errorFontLoadType3\",\n  errorFontState: \"errorFontState\",\n  errorFontMissing: \"errorFontMissing\",\n  errorFontTranslate: \"errorFontTranslate\",\n  errorColorSpace: \"errorColorSpace\",\n  errorOperatorList: \"errorOperatorList\",\n  errorFontToUnicode: \"errorFontToUnicode\",\n  errorFontLoadNative: \"errorFontLoadNative\",\n  errorFontGetPath: \"errorFontGetPath\",\n  errorMarkedContent: \"errorMarkedContent\",\n};\n\nconst PasswordResponses = {\n  NEED_PASSWORD: 1,\n  INCORRECT_PASSWORD: 2,\n};\n\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n  if (Number.isInteger(level)) {\n    verbosity = level;\n  }\n}\n\nfunction getVerbosityLevel() {\n  return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n  if (verbosity >= VerbosityLevel.INFOS) {\n    console.log(`Info: ${msg}`);\n  }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n  if (verbosity >= VerbosityLevel.WARNINGS) {\n    console.log(`Warning: ${msg}`);\n  }\n}\n\nfunction unreachable(msg) {\n  throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n  if (!cond) {\n    unreachable(msg);\n  }\n}\n\n// Checks if URLs have the same origin. For non-HTTP based URLs, returns false.\nfunction isSameOrigin(baseUrl, otherUrl) {\n  let base;\n  try {\n    base = new URL(baseUrl);\n    if (!base.origin || base.origin === \"null\") {\n      return false; // non-HTTP url\n    }\n  } catch (e) {\n    return false;\n  }\n\n  const other = new URL(otherUrl, base);\n  return base.origin === other.origin;\n}\n\n// Checks if URLs use one of the allowed protocols, e.g. to avoid XSS.\nfunction _isValidProtocol(url) {\n  if (!url) {\n    return false;\n  }\n  switch (url.protocol) {\n    case \"http:\":\n    case \"https:\":\n    case \"ftp:\":\n    case \"mailto:\":\n    case \"tel:\":\n      return true;\n    default:\n      return false;\n  }\n}\n\n/**\n * Attempts to create a valid absolute URL.\n *\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} baseUrl - An absolute URL.\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl) {\n  if (!url) {\n    return null;\n  }\n  try {\n    const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n    if (_isValidProtocol(absoluteUrl)) {\n      return absoluteUrl;\n    }\n  } catch (ex) {\n    /* `new URL()` will throw on incorrect data. */\n  }\n  return null;\n}\n\nfunction shadow(obj, prop, value) {\n  Object.defineProperty(obj, prop, {\n    value,\n    enumerable: true,\n    configurable: true,\n    writable: false,\n  });\n  return value;\n}\n\n/**\n * @type {any}\n */\nconst BaseException = (function BaseExceptionClosure() {\n  // eslint-disable-next-line no-shadow\n  function BaseException(message) {\n    if (this.constructor === BaseException) {\n      unreachable(\"Cannot initialize BaseException.\");\n    }\n    this.message = message;\n    this.name = this.constructor.name;\n  }\n  BaseException.prototype = new Error();\n  BaseException.constructor = BaseException;\n\n  return BaseException;\n})();\n\nclass PasswordException extends BaseException {\n  constructor(msg, code) {\n    super(msg);\n    this.code = code;\n  }\n}\n\nclass UnknownErrorException extends BaseException {\n  constructor(msg, details) {\n    super(msg);\n    this.details = details;\n  }\n}\n\nclass InvalidPDFException extends BaseException {}\n\nclass MissingPDFException extends BaseException {}\n\nclass UnexpectedResponseException extends BaseException {\n  constructor(msg, status) {\n    super(msg);\n    this.status = status;\n  }\n}\n\n/**\n * Error caused during parsing PDF data.\n */\nclass FormatError extends BaseException {}\n\n/**\n * Error used to indicate task cancellation.\n */\nclass AbortException extends BaseException {}\n\nconst NullCharactersRegExp = /\\x00/g;\n\n/**\n * @param {string} str\n */\nfunction removeNullCharacters(str) {\n  if (typeof str !== \"string\") {\n    warn(\"The argument for removeNullCharacters must be a string.\");\n    return str;\n  }\n  return str.replace(NullCharactersRegExp, \"\");\n}\n\nfunction bytesToString(bytes) {\n  assert(\n    bytes !== null && typeof bytes === \"object\" && bytes.length !== undefined,\n    \"Invalid argument for bytesToString\"\n  );\n  const length = bytes.length;\n  const MAX_ARGUMENT_COUNT = 8192;\n  if (length < MAX_ARGUMENT_COUNT) {\n    return String.fromCharCode.apply(null, bytes);\n  }\n  const strBuf = [];\n  for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n    const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n    const chunk = bytes.subarray(i, chunkEnd);\n    strBuf.push(String.fromCharCode.apply(null, chunk));\n  }\n  return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n  assert(typeof str === \"string\", \"Invalid argument for stringToBytes\");\n  const length = str.length;\n  const bytes = new Uint8Array(length);\n  for (let i = 0; i < length; ++i) {\n    bytes[i] = str.charCodeAt(i) & 0xff;\n  }\n  return bytes;\n}\n\n/**\n * Gets length of the array (Array, Uint8Array, or string) in bytes.\n * @param {Array<any>|Uint8Array|string} arr\n * @returns {number}\n */\nfunction arrayByteLength(arr) {\n  if (arr.length !== undefined) {\n    return arr.length;\n  }\n  assert(arr.byteLength !== undefined, \"arrayByteLength - invalid argument.\");\n  return arr.byteLength;\n}\n\n/**\n * Combines array items (arrays) into single Uint8Array object.\n * @param {Array<Array<any>|Uint8Array|string>} arr - the array of the arrays\n *   (Array, Uint8Array, or string).\n * @returns {Uint8Array}\n */\nfunction arraysToBytes(arr) {\n  const length = arr.length;\n  // Shortcut: if first and only item is Uint8Array, return it.\n  if (length === 1 && arr[0] instanceof Uint8Array) {\n    return arr[0];\n  }\n  let resultLength = 0;\n  for (let i = 0; i < length; i++) {\n    resultLength += arrayByteLength(arr[i]);\n  }\n  let pos = 0;\n  const data = new Uint8Array(resultLength);\n  for (let i = 0; i < length; i++) {\n    let item = arr[i];\n    if (!(item instanceof Uint8Array)) {\n      if (typeof item === \"string\") {\n        item = stringToBytes(item);\n      } else {\n        item = new Uint8Array(item);\n      }\n    }\n    const itemLength = item.byteLength;\n    data.set(item, pos);\n    pos += itemLength;\n  }\n  return data;\n}\n\nfunction string32(value) {\n  return String.fromCharCode(\n    (value >> 24) & 0xff,\n    (value >> 16) & 0xff,\n    (value >> 8) & 0xff,\n    value & 0xff\n  );\n}\n\n// Checks the endianness of the platform.\nfunction isLittleEndian() {\n  const buffer8 = new Uint8Array(4);\n  buffer8[0] = 1;\n  const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n  return view32[0] === 1;\n}\nconst IsLittleEndianCached = {\n  get value() {\n    return shadow(this, \"value\", isLittleEndian());\n  },\n};\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n  try {\n    new Function(\"\"); // eslint-disable-line no-new, no-new-func\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\nconst IsEvalSupportedCached = {\n  get value() {\n    return shadow(this, \"value\", isEvalSupported());\n  },\n};\n\nconst rgbBuf = [\"rgb(\", 0, \",\", 0, \",\", 0, \")\"];\n\nclass Util {\n  // makeCssRgb() can be called thousands of times. Using ´rgbBuf` avoids\n  // creating many intermediate strings.\n  static makeCssRgb(r, g, b) {\n    rgbBuf[1] = r;\n    rgbBuf[3] = g;\n    rgbBuf[5] = b;\n    return rgbBuf.join(\"\");\n  }\n\n  // Concatenates two transformation matrices together and returns the result.\n  static transform(m1, m2) {\n    return [\n      m1[0] * m2[0] + m1[2] * m2[1],\n      m1[1] * m2[0] + m1[3] * m2[1],\n      m1[0] * m2[2] + m1[2] * m2[3],\n      m1[1] * m2[2] + m1[3] * m2[3],\n      m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n      m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n    ];\n  }\n\n  // For 2d affine transforms\n  static applyTransform(p, m) {\n    const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n    const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n    return [xt, yt];\n  }\n\n  static applyInverseTransform(p, m) {\n    const d = m[0] * m[3] - m[1] * m[2];\n    const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n    const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n    return [xt, yt];\n  }\n\n  // Applies the transform to the rectangle and finds the minimum axially\n  // aligned bounding box.\n  static getAxialAlignedBoundingBox(r, m) {\n    const p1 = Util.applyTransform(r, m);\n    const p2 = Util.applyTransform(r.slice(2, 4), m);\n    const p3 = Util.applyTransform([r[0], r[3]], m);\n    const p4 = Util.applyTransform([r[2], r[1]], m);\n    return [\n      Math.min(p1[0], p2[0], p3[0], p4[0]),\n      Math.min(p1[1], p2[1], p3[1], p4[1]),\n      Math.max(p1[0], p2[0], p3[0], p4[0]),\n      Math.max(p1[1], p2[1], p3[1], p4[1]),\n    ];\n  }\n\n  static inverseTransform(m) {\n    const d = m[0] * m[3] - m[1] * m[2];\n    return [\n      m[3] / d,\n      -m[1] / d,\n      -m[2] / d,\n      m[0] / d,\n      (m[2] * m[5] - m[4] * m[3]) / d,\n      (m[4] * m[1] - m[5] * m[0]) / d,\n    ];\n  }\n\n  // Apply a generic 3d matrix M on a 3-vector v:\n  //   | a b c |   | X |\n  //   | d e f | x | Y |\n  //   | g h i |   | Z |\n  // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i],\n  // with v as [X,Y,Z]\n  static apply3dTransform(m, v) {\n    return [\n      m[0] * v[0] + m[1] * v[1] + m[2] * v[2],\n      m[3] * v[0] + m[4] * v[1] + m[5] * v[2],\n      m[6] * v[0] + m[7] * v[1] + m[8] * v[2],\n    ];\n  }\n\n  // This calculation uses Singular Value Decomposition.\n  // The SVD can be represented with formula A = USV. We are interested in the\n  // matrix S here because it represents the scale values.\n  static singularValueDecompose2dScale(m) {\n    const transpose = [m[0], m[2], m[1], m[3]];\n\n    // Multiply matrix m with its transpose.\n    const a = m[0] * transpose[0] + m[1] * transpose[2];\n    const b = m[0] * transpose[1] + m[1] * transpose[3];\n    const c = m[2] * transpose[0] + m[3] * transpose[2];\n    const d = m[2] * transpose[1] + m[3] * transpose[3];\n\n    // Solve the second degree polynomial to get roots.\n    const first = (a + d) / 2;\n    const second = Math.sqrt((a + d) * (a + d) - 4 * (a * d - c * b)) / 2;\n    const sx = first + second || 1;\n    const sy = first - second || 1;\n\n    // Scale values are the square roots of the eigenvalues.\n    return [Math.sqrt(sx), Math.sqrt(sy)];\n  }\n\n  // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n  // For coordinate systems whose origin lies in the bottom-left, this\n  // means normalization to (BL,TR) ordering. For systems with origin in the\n  // top-left, this means (TL,BR) ordering.\n  static normalizeRect(rect) {\n    const r = rect.slice(0); // clone rect\n    if (rect[0] > rect[2]) {\n      r[0] = rect[2];\n      r[2] = rect[0];\n    }\n    if (rect[1] > rect[3]) {\n      r[1] = rect[3];\n      r[3] = rect[1];\n    }\n    return r;\n  }\n\n  // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n  // intersection of rect1 and rect2. If no intersection, returns 'false'\n  // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n  static intersect(rect1, rect2) {\n    function compare(a, b) {\n      return a - b;\n    }\n\n    // Order points along the axes\n    const orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare);\n    const orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare);\n    const result = [];\n\n    rect1 = Util.normalizeRect(rect1);\n    rect2 = Util.normalizeRect(rect2);\n\n    // X: first and second points belong to different rectangles?\n    if (\n      (orderedX[0] === rect1[0] && orderedX[1] === rect2[0]) ||\n      (orderedX[0] === rect2[0] && orderedX[1] === rect1[0])\n    ) {\n      // Intersection must be between second and third points\n      result[0] = orderedX[1];\n      result[2] = orderedX[2];\n    } else {\n      return null;\n    }\n\n    // Y: first and second points belong to different rectangles?\n    if (\n      (orderedY[0] === rect1[1] && orderedY[1] === rect2[1]) ||\n      (orderedY[0] === rect2[1] && orderedY[1] === rect1[1])\n    ) {\n      // Intersection must be between second and third points\n      result[1] = orderedY[1];\n      result[3] = orderedY[2];\n    } else {\n      return null;\n    }\n\n    return result;\n  }\n}\n\n// prettier-ignore\nconst PDFStringTranslateTable = [\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0x2D8, 0x2C7, 0x2C6, 0x2D9, 0x2DD, 0x2DB, 0x2DA, 0x2DC, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014,\n  0x2013, 0x192, 0x2044, 0x2039, 0x203A, 0x2212, 0x2030, 0x201E, 0x201C,\n  0x201D, 0x2018, 0x2019, 0x201A, 0x2122, 0xFB01, 0xFB02, 0x141, 0x152, 0x160,\n  0x178, 0x17D, 0x131, 0x142, 0x153, 0x161, 0x17E, 0, 0x20AC\n];\n\nfunction stringToPDFString(str) {\n  const length = str.length,\n    strBuf = [];\n  if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n    // UTF16BE BOM\n    for (let i = 2; i < length; i += 2) {\n      strBuf.push(\n        String.fromCharCode((str.charCodeAt(i) << 8) | str.charCodeAt(i + 1))\n      );\n    }\n  } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n    // UTF16LE BOM\n    for (let i = 2; i < length; i += 2) {\n      strBuf.push(\n        String.fromCharCode((str.charCodeAt(i + 1) << 8) | str.charCodeAt(i))\n      );\n    }\n  } else {\n    for (let i = 0; i < length; ++i) {\n      const code = PDFStringTranslateTable[str.charCodeAt(i)];\n      strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n    }\n  }\n  return strBuf.join(\"\");\n}\n\nfunction escapeString(str) {\n  // replace \"(\", \")\" and \"\\\" by \"\\(\", \"\\)\" and \"\\\\\"\n  // in order to write it in a PDF file.\n  return str.replace(/([\\(\\)\\\\])/g, \"\\\\$1\");\n}\n\nfunction stringToUTF8String(str) {\n  return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n  return unescape(encodeURIComponent(str));\n}\n\nfunction isBool(v) {\n  return typeof v === \"boolean\";\n}\n\nfunction isNum(v) {\n  return typeof v === \"number\";\n}\n\nfunction isString(v) {\n  return typeof v === \"string\";\n}\n\nfunction isArrayBuffer(v) {\n  return typeof v === \"object\" && v !== null && v.byteLength !== undefined;\n}\n\nfunction isArrayEqual(arr1, arr2) {\n  if (arr1.length !== arr2.length) {\n    return false;\n  }\n  return arr1.every(function (element, index) {\n    return element === arr2[index];\n  });\n}\n\nfunction getModificationDate(date = new Date(Date.now())) {\n  const buffer = [\n    date.getUTCFullYear().toString(),\n    (date.getUTCMonth() + 1).toString().padStart(2, \"0\"),\n    (date.getUTCDate() + 1).toString().padStart(2, \"0\"),\n    date.getUTCHours().toString().padStart(2, \"0\"),\n    date.getUTCMinutes().toString().padStart(2, \"0\"),\n    date.getUTCSeconds().toString().padStart(2, \"0\"),\n  ];\n\n  return buffer.join(\"\");\n}\n\n/**\n * Promise Capability object.\n *\n * @typedef {Object} PromiseCapability\n * @property {Promise<any>} promise - A Promise object.\n * @property {boolean} settled - If the Promise has been fulfilled/rejected.\n * @property {function} resolve - Fulfills the Promise.\n * @property {function} reject - Rejects the Promise.\n */\n\n/**\n * Creates a promise capability object.\n * @alias createPromiseCapability\n *\n * @returns {PromiseCapability}\n */\nfunction createPromiseCapability() {\n  const capability = Object.create(null);\n  let isSettled = false;\n\n  Object.defineProperty(capability, \"settled\", {\n    get() {\n      return isSettled;\n    },\n  });\n  capability.promise = new Promise(function (resolve, reject) {\n    capability.resolve = function (data) {\n      isSettled = true;\n      resolve(data);\n    };\n    capability.reject = function (reason) {\n      isSettled = true;\n      reject(reason);\n    };\n  });\n  return capability;\n}\n\nconst createObjectURL = (function createObjectURLClosure() {\n  // Blob/createObjectURL is not available, falling back to data schema.\n  const digits =\n    \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n  // eslint-disable-next-line no-shadow\n  return function createObjectURL(data, contentType, forceDataSchema = false) {\n    if (!forceDataSchema && URL.createObjectURL) {\n      const blob = new Blob([data], { type: contentType });\n      return URL.createObjectURL(blob);\n    }\n\n    let buffer = `data:${contentType};base64,`;\n    for (let i = 0, ii = data.length; i < ii; i += 3) {\n      const b1 = data[i] & 0xff;\n      const b2 = data[i + 1] & 0xff;\n      const b3 = data[i + 2] & 0xff;\n      const d1 = b1 >> 2,\n        d2 = ((b1 & 3) << 4) | (b2 >> 4);\n      const d3 = i + 1 < ii ? ((b2 & 0xf) << 2) | (b3 >> 6) : 64;\n      const d4 = i + 2 < ii ? b3 & 0x3f : 64;\n      buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];\n    }\n    return buffer;\n  };\n})();\n\nexport {\n  BaseException,\n  FONT_IDENTITY_MATRIX,\n  IDENTITY_MATRIX,\n  OPS,\n  VerbosityLevel,\n  UNSUPPORTED_FEATURES,\n  AnnotationBorderStyleType,\n  AnnotationFieldFlag,\n  AnnotationFlag,\n  AnnotationMarkedState,\n  AnnotationReplyType,\n  AnnotationReviewState,\n  AnnotationStateModelType,\n  AnnotationType,\n  FontType,\n  ImageKind,\n  CMapCompressionType,\n  AbortException,\n  InvalidPDFException,\n  MissingPDFException,\n  PasswordException,\n  PasswordResponses,\n  PermissionFlag,\n  StreamType,\n  TextRenderingMode,\n  UnexpectedResponseException,\n  UnknownErrorException,\n  Util,\n  FormatError,\n  arrayByteLength,\n  arraysToBytes,\n  assert,\n  bytesToString,\n  createPromiseCapability,\n  createObjectURL,\n  escapeString,\n  getModificationDate,\n  getVerbosityLevel,\n  info,\n  isArrayBuffer,\n  isArrayEqual,\n  isBool,\n  isNum,\n  isString,\n  isSameOrigin,\n  createValidAbsoluteUrl,\n  IsLittleEndianCached,\n  IsEvalSupportedCached,\n  removeNullCharacters,\n  setVerbosityLevel,\n  shadow,\n  string32,\n  stringToBytes,\n  stringToPDFString,\n  stringToUTF8String,\n  utf8StringToString,\n  warn,\n  unreachable,\n};\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\nimport { isNodeJS } from \"./is_node.js\";\n\n// Skip compatibility checks for modern builds and if we already ran the module.\nif (\n  (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"SKIP_BABEL\")) &&\n  (typeof globalThis === \"undefined\" || !globalThis._pdfjsCompatibilityChecked)\n) {\n  // Provides support for globalThis in legacy browsers.\n  // Support: IE11/Edge, Opera\n  if (typeof globalThis === \"undefined\" || globalThis.Math !== Math) {\n    // eslint-disable-next-line no-global-assign\n    globalThis = require(\"core-js/es/global-this\");\n  }\n  globalThis._pdfjsCompatibilityChecked = true;\n\n  const hasDOM = typeof window === \"object\" && typeof document === \"object\";\n  const userAgent =\n    (typeof navigator !== \"undefined\" && navigator.userAgent) || \"\";\n  const isIE = /Trident/.test(userAgent);\n\n  // Support: Node.js\n  (function checkNodeBtoa() {\n    if (globalThis.btoa || !isNodeJS) {\n      return;\n    }\n    globalThis.btoa = function (chars) {\n      // eslint-disable-next-line no-undef\n      return Buffer.from(chars, \"binary\").toString(\"base64\");\n    };\n  })();\n\n  // Support: Node.js\n  (function checkNodeAtob() {\n    if (globalThis.atob || !isNodeJS) {\n      return;\n    }\n    globalThis.atob = function (input) {\n      // eslint-disable-next-line no-undef\n      return Buffer.from(input, \"base64\").toString(\"binary\");\n    };\n  })();\n\n  // Provides support for ChildNode.remove in legacy browsers.\n  // Support: IE.\n  (function checkChildNodeRemove() {\n    if (!hasDOM) {\n      return;\n    }\n    if (typeof Element.prototype.remove !== \"undefined\") {\n      return;\n    }\n    Element.prototype.remove = function () {\n      if (this.parentNode) {\n        // eslint-disable-next-line mozilla/avoid-removeChild\n        this.parentNode.removeChild(this);\n      }\n    };\n  })();\n\n  // Provides support for DOMTokenList.prototype.{add, remove}, with more than\n  // one parameter, in legacy browsers.\n  // Support: IE\n  (function checkDOMTokenListAddRemove() {\n    if (!hasDOM || isNodeJS) {\n      return;\n    }\n    const div = document.createElement(\"div\");\n    div.classList.add(\"testOne\", \"testTwo\");\n\n    if (\n      div.classList.contains(\"testOne\") === true &&\n      div.classList.contains(\"testTwo\") === true\n    ) {\n      return;\n    }\n    const OriginalDOMTokenListAdd = DOMTokenList.prototype.add;\n    const OriginalDOMTokenListRemove = DOMTokenList.prototype.remove;\n\n    DOMTokenList.prototype.add = function (...tokens) {\n      for (const token of tokens) {\n        OriginalDOMTokenListAdd.call(this, token);\n      }\n    };\n    DOMTokenList.prototype.remove = function (...tokens) {\n      for (const token of tokens) {\n        OriginalDOMTokenListRemove.call(this, token);\n      }\n    };\n  })();\n\n  // Provides support for DOMTokenList.prototype.toggle, with the optional\n  // \"force\" parameter, in legacy browsers.\n  // Support: IE\n  (function checkDOMTokenListToggle() {\n    if (!hasDOM || isNodeJS) {\n      return;\n    }\n    const div = document.createElement(\"div\");\n    if (div.classList.toggle(\"test\", 0) === false) {\n      return;\n    }\n\n    DOMTokenList.prototype.toggle = function (token) {\n      const force =\n        arguments.length > 1 ? !!arguments[1] : !this.contains(token);\n      return this[force ? \"add\" : \"remove\"](token), force;\n    };\n  })();\n\n  // Provides support for window.history.{pushState, replaceState}, with the\n  // `url` parameter set to `undefined`, without breaking the document URL.\n  // Support: IE\n  (function checkWindowHistoryPushStateReplaceState() {\n    if (!hasDOM || !isIE) {\n      return;\n    }\n    const OriginalPushState = window.history.pushState;\n    const OriginalReplaceState = window.history.replaceState;\n\n    window.history.pushState = function (state, title, url) {\n      const args = url === undefined ? [state, title] : [state, title, url];\n      OriginalPushState.apply(this, args);\n    };\n    window.history.replaceState = function (state, title, url) {\n      const args = url === undefined ? [state, title] : [state, title, url];\n      OriginalReplaceState.apply(this, args);\n    };\n  })();\n\n  // Provides support for String.prototype.startsWith in legacy browsers.\n  // Support: IE, Chrome<41\n  (function checkStringStartsWith() {\n    if (String.prototype.startsWith) {\n      return;\n    }\n    require(\"core-js/es/string/starts-with.js\");\n  })();\n\n  // Provides support for String.prototype.endsWith in legacy browsers.\n  // Support: IE, Chrome<41\n  (function checkStringEndsWith() {\n    if (String.prototype.endsWith) {\n      return;\n    }\n    require(\"core-js/es/string/ends-with.js\");\n  })();\n\n  // Provides support for String.prototype.includes in legacy browsers.\n  // Support: IE, Chrome<41\n  (function checkStringIncludes() {\n    if (String.prototype.includes) {\n      return;\n    }\n    require(\"core-js/es/string/includes.js\");\n  })();\n\n  // Provides support for Array.prototype.includes in legacy browsers.\n  // Support: IE, Chrome<47\n  (function checkArrayIncludes() {\n    if (Array.prototype.includes) {\n      return;\n    }\n    require(\"core-js/es/array/includes.js\");\n  })();\n\n  // Provides support for Array.from in legacy browsers.\n  // Support: IE\n  (function checkArrayFrom() {\n    if (Array.from) {\n      return;\n    }\n    require(\"core-js/es/array/from.js\");\n  })();\n\n  // Provides support for Object.assign in legacy browsers.\n  // Support: IE\n  (function checkObjectAssign() {\n    if (Object.assign) {\n      return;\n    }\n    require(\"core-js/es/object/assign.js\");\n  })();\n\n  // Provides support for Object.fromEntries in legacy browsers.\n  // Support: IE, Chrome<73\n  (function checkObjectFromEntries() {\n    if (Object.fromEntries) {\n      return;\n    }\n    require(\"core-js/es/object/from-entries.js\");\n  })();\n\n  // Provides support for Math.log2 in legacy browsers.\n  // Support: IE, Chrome<38\n  (function checkMathLog2() {\n    if (Math.log2) {\n      return;\n    }\n    Math.log2 = require(\"core-js/es/math/log2.js\");\n  })();\n\n  // Provides support for Number.isNaN in legacy browsers.\n  // Support: IE.\n  (function checkNumberIsNaN() {\n    if (Number.isNaN) {\n      return;\n    }\n    Number.isNaN = require(\"core-js/es/number/is-nan.js\");\n  })();\n\n  // Provides support for Number.isInteger in legacy browsers.\n  // Support: IE, Chrome<34\n  (function checkNumberIsInteger() {\n    if (Number.isInteger) {\n      return;\n    }\n    Number.isInteger = require(\"core-js/es/number/is-integer.js\");\n  })();\n\n  // Provides support for TypedArray.prototype.slice in legacy browsers.\n  // Support: IE\n  (function checkTypedArraySlice() {\n    if (Uint8Array.prototype.slice) {\n      return;\n    }\n    require(\"core-js/es/typed-array/slice\");\n  })();\n\n  // Support: IE, Safari<11, Chrome<63\n  (function checkPromise() {\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n      // The current image decoders are synchronous, hence `Promise` shouldn't\n      // need to be polyfilled for the IMAGE_DECODERS build target.\n      return;\n    }\n    if (globalThis.Promise && globalThis.Promise.allSettled) {\n      return;\n    }\n    globalThis.Promise = require(\"core-js/es/promise/index.js\");\n  })();\n\n  // Support: IE\n  (function checkURL() {\n    if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")) {\n      // Prevent \"require is not a function\" errors in development mode,\n      // since the `URL` constructor should be available in modern browers.\n      return;\n    } else if (!PDFJSDev.test(\"GENERIC\")) {\n      // The `URL` constructor is assumed to be available in the extension\n      // builds.\n      return;\n    } else if (PDFJSDev.test(\"IMAGE_DECODERS\")) {\n      // The current image decoders don't use the `URL` constructor, so it\n      // doesn't need to be polyfilled for the IMAGE_DECODERS build target.\n      return;\n    }\n    globalThis.URL = require(\"core-js/web/url.js\");\n  })();\n\n  // Support: IE, Node.js\n  (function checkReadableStream() {\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n      // The current image decoders are synchronous, hence `ReadableStream`\n      // shouldn't need to be polyfilled for the IMAGE_DECODERS build target.\n      return;\n    }\n    let isReadableStreamSupported = false;\n\n    if (typeof ReadableStream !== \"undefined\") {\n      // MS Edge may say it has ReadableStream but they are not up to spec yet.\n      try {\n        // eslint-disable-next-line no-new\n        new ReadableStream({\n          start(controller) {\n            controller.close();\n          },\n        });\n        isReadableStreamSupported = true;\n      } catch (e) {\n        // The ReadableStream constructor cannot be used.\n      }\n    }\n    if (isReadableStreamSupported) {\n      return;\n    }\n    globalThis.ReadableStream = require(\"web-streams-polyfill/dist/ponyfill.js\").ReadableStream;\n  })();\n\n  // We want to support Map iteration, but it doesn't seem possible to easily\n  // test for that specifically; hence using a similarly unsupported property.\n  // Support: IE11\n  (function checkMapEntries() {\n    if (globalThis.Map && globalThis.Map.prototype.entries) {\n      return;\n    }\n    globalThis.Map = require(\"core-js/es/map/index.js\");\n  })();\n\n  // We want to support Set iteration, but it doesn't seem possible to easily\n  // test for that specifically; hence using a similarly unsupported property.\n  // Support: IE11\n  (function checkSetEntries() {\n    if (globalThis.Set && globalThis.Set.prototype.entries) {\n      return;\n    }\n    globalThis.Set = require(\"core-js/es/set/index.js\");\n  })();\n\n  // Support: IE<11, Safari<8, Chrome<36\n  (function checkWeakMap() {\n    if (globalThis.WeakMap) {\n      return;\n    }\n    globalThis.WeakMap = require(\"core-js/es/weak-map/index.js\");\n  })();\n\n  // Support: IE11\n  (function checkWeakSet() {\n    if (globalThis.WeakSet) {\n      return;\n    }\n    globalThis.WeakSet = require(\"core-js/es/weak-set/index.js\");\n  })();\n\n  // Provides support for String.codePointAt in legacy browsers.\n  // Support: IE11.\n  (function checkStringCodePointAt() {\n    if (String.prototype.codePointAt) {\n      return;\n    }\n    require(\"core-js/es/string/code-point-at.js\");\n  })();\n\n  // Provides support for String.fromCodePoint in legacy browsers.\n  // Support: IE11.\n  (function checkStringFromCodePoint() {\n    if (String.fromCodePoint) {\n      return;\n    }\n    String.fromCodePoint = require(\"core-js/es/string/from-code-point.js\");\n  })();\n\n  // Support: IE\n  (function checkSymbol() {\n    if (globalThis.Symbol) {\n      return;\n    }\n    require(\"core-js/es/symbol/index.js\");\n  })();\n\n  // Provides support for String.prototype.padStart in legacy browsers.\n  // Support: IE, Chrome<57\n  (function checkStringPadStart() {\n    if (String.prototype.padStart) {\n      return;\n    }\n    require(\"core-js/es/string/pad-start.js\");\n  })();\n\n  // Provides support for String.prototype.padEnd in legacy browsers.\n  // Support: IE, Chrome<57\n  (function checkStringPadEnd() {\n    if (String.prototype.padEnd) {\n      return;\n    }\n    require(\"core-js/es/string/pad-end.js\");\n  })();\n\n  // Provides support for Object.values in legacy browsers.\n  // Support: IE, Chrome<54\n  (function checkObjectValues() {\n    if (Object.values) {\n      return;\n    }\n    Object.values = require(\"core-js/es/object/values.js\");\n  })();\n\n  // Provides support for Object.entries in legacy browsers.\n  // Support: IE, Chrome<54\n  (function checkObjectEntries() {\n    if (Object.entries) {\n      return;\n    }\n    Object.entries = require(\"core-js/es/object/entries.js\");\n  })();\n}\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals process */\n\n// NW.js / Electron is a browser context, but copies some Node.js objects; see\n// http://docs.nwjs.io/en/latest/For%20Users/Advanced/JavaScript%20Contexts%20in%20NW.js/#access-nodejs-and-nwjs-api-in-browser-context\n// https://www.electronjs.org/docs/api/process#processversionselectron-readonly\n// https://www.electronjs.org/docs/api/process#processtype-readonly\nconst isNodeJS =\n  typeof process === \"object\" &&\n  process + \"\" === \"[object process]\" &&\n  !process.versions.nw &&\n  !(process.versions.electron && process.type && process.type !== \"browser\");\n\nexport { isNodeJS };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* uses XRef */\n\nimport { assert, unreachable } from \"../shared/util.js\";\n\nvar EOF = {};\n\nvar Name = (function NameClosure() {\n  let nameCache = Object.create(null);\n\n  // eslint-disable-next-line no-shadow\n  function Name(name) {\n    this.name = name;\n  }\n\n  Name.prototype = {};\n\n  Name.get = function Name_get(name) {\n    var nameValue = nameCache[name];\n    // eslint-disable-next-line no-restricted-syntax\n    return nameValue ? nameValue : (nameCache[name] = new Name(name));\n  };\n\n  Name._clearCache = function () {\n    nameCache = Object.create(null);\n  };\n\n  return Name;\n})();\n\nvar Cmd = (function CmdClosure() {\n  let cmdCache = Object.create(null);\n\n  // eslint-disable-next-line no-shadow\n  function Cmd(cmd) {\n    this.cmd = cmd;\n  }\n\n  Cmd.prototype = {};\n\n  Cmd.get = function Cmd_get(cmd) {\n    var cmdValue = cmdCache[cmd];\n    // eslint-disable-next-line no-restricted-syntax\n    return cmdValue ? cmdValue : (cmdCache[cmd] = new Cmd(cmd));\n  };\n\n  Cmd._clearCache = function () {\n    cmdCache = Object.create(null);\n  };\n\n  return Cmd;\n})();\n\nvar Dict = (function DictClosure() {\n  var nonSerializable = function nonSerializableClosure() {\n    return nonSerializable; // creating closure on some variable\n  };\n\n  // xref is optional\n  // eslint-disable-next-line no-shadow\n  function Dict(xref) {\n    // Map should only be used internally, use functions below to access.\n    this._map = Object.create(null);\n    this.xref = xref;\n    this.objId = null;\n    this.suppressEncryption = false;\n    this.__nonSerializable__ = nonSerializable; // disable cloning of the Dict\n  }\n\n  Dict.prototype = {\n    assignXref: function Dict_assignXref(newXref) {\n      this.xref = newXref;\n    },\n\n    get size() {\n      return Object.keys(this._map).length;\n    },\n\n    // automatically dereferences Ref objects\n    get(key1, key2, key3) {\n      let value = this._map[key1];\n      if (value === undefined && key2 !== undefined) {\n        value = this._map[key2];\n        if (value === undefined && key3 !== undefined) {\n          value = this._map[key3];\n        }\n      }\n      if (value instanceof Ref && this.xref) {\n        return this.xref.fetch(value, this.suppressEncryption);\n      }\n      return value;\n    },\n\n    // Same as get(), but returns a promise and uses fetchIfRefAsync().\n    async getAsync(key1, key2, key3) {\n      let value = this._map[key1];\n      if (value === undefined && key2 !== undefined) {\n        value = this._map[key2];\n        if (value === undefined && key3 !== undefined) {\n          value = this._map[key3];\n        }\n      }\n      if (value instanceof Ref && this.xref) {\n        return this.xref.fetchAsync(value, this.suppressEncryption);\n      }\n      return value;\n    },\n\n    // Same as get(), but dereferences all elements if the result is an Array.\n    getArray(key1, key2, key3) {\n      let value = this.get(key1, key2, key3);\n      if (!Array.isArray(value) || !this.xref) {\n        return value;\n      }\n      value = value.slice(); // Ensure that we don't modify the Dict data.\n      for (let i = 0, ii = value.length; i < ii; i++) {\n        if (!(value[i] instanceof Ref)) {\n          continue;\n        }\n        value[i] = this.xref.fetch(value[i], this.suppressEncryption);\n      }\n      return value;\n    },\n\n    // no dereferencing\n    getRaw: function Dict_getRaw(key) {\n      return this._map[key];\n    },\n\n    getKeys: function Dict_getKeys() {\n      return Object.keys(this._map);\n    },\n\n    // no dereferencing\n    getRawValues: function Dict_getRawValues() {\n      return Object.values(this._map);\n    },\n\n    set: function Dict_set(key, value) {\n      if (\n        (typeof PDFJSDev === \"undefined\" ||\n          PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n        value === undefined\n      ) {\n        unreachable('Dict.set: The \"value\" cannot be undefined.');\n      }\n      this._map[key] = value;\n    },\n\n    has: function Dict_has(key) {\n      return this._map[key] !== undefined;\n    },\n\n    forEach: function Dict_forEach(callback) {\n      for (var key in this._map) {\n        callback(key, this.get(key));\n      }\n    },\n  };\n\n  Dict.empty = new Dict(null);\n\n  Dict.merge = function ({ xref, dictArray, mergeSubDicts = false }) {\n    const mergedDict = new Dict(xref);\n\n    if (!mergeSubDicts) {\n      for (const dict of dictArray) {\n        if (!(dict instanceof Dict)) {\n          continue;\n        }\n        for (const [key, value] of Object.entries(dict._map)) {\n          if (mergedDict._map[key] === undefined) {\n            mergedDict._map[key] = value;\n          }\n        }\n      }\n      return mergedDict.size > 0 ? mergedDict : Dict.empty;\n    }\n    const properties = new Map();\n\n    for (const dict of dictArray) {\n      if (!(dict instanceof Dict)) {\n        continue;\n      }\n      for (const [key, value] of Object.entries(dict._map)) {\n        let property = properties.get(key);\n        if (property === undefined) {\n          property = [];\n          properties.set(key, property);\n        }\n        property.push(value);\n      }\n    }\n    for (const [name, values] of properties) {\n      if (values.length === 1 || !(values[0] instanceof Dict)) {\n        mergedDict._map[name] = values[0];\n        continue;\n      }\n      const subDict = new Dict(xref);\n\n      for (const dict of values) {\n        if (!(dict instanceof Dict)) {\n          continue;\n        }\n        for (const [key, value] of Object.entries(dict._map)) {\n          if (subDict._map[key] === undefined) {\n            subDict._map[key] = value;\n          }\n        }\n      }\n      if (subDict.size > 0) {\n        mergedDict._map[name] = subDict;\n      }\n    }\n    properties.clear();\n\n    return mergedDict.size > 0 ? mergedDict : Dict.empty;\n  };\n\n  return Dict;\n})();\n\nvar Ref = (function RefClosure() {\n  let refCache = Object.create(null);\n\n  // eslint-disable-next-line no-shadow\n  function Ref(num, gen) {\n    this.num = num;\n    this.gen = gen;\n  }\n\n  Ref.prototype = {\n    toString: function Ref_toString() {\n      // This function is hot, so we make the string as compact as possible.\n      // |this.gen| is almost always zero, so we treat that case specially.\n      if (this.gen === 0) {\n        return `${this.num}R`;\n      }\n      return `${this.num}R${this.gen}`;\n    },\n  };\n\n  Ref.get = function (num, gen) {\n    const key = gen === 0 ? `${num}R` : `${num}R${gen}`;\n    const refValue = refCache[key];\n    // eslint-disable-next-line no-restricted-syntax\n    return refValue ? refValue : (refCache[key] = new Ref(num, gen));\n  };\n\n  Ref._clearCache = function () {\n    refCache = Object.create(null);\n  };\n\n  return Ref;\n})();\n\n// The reference is identified by number and generation.\n// This structure stores only one instance of the reference.\nclass RefSet {\n  constructor() {\n    this._set = new Set();\n  }\n\n  has(ref) {\n    return this._set.has(ref.toString());\n  }\n\n  put(ref) {\n    this._set.add(ref.toString());\n  }\n\n  remove(ref) {\n    this._set.delete(ref.toString());\n  }\n}\n\nclass RefSetCache {\n  constructor() {\n    this._map = new Map();\n  }\n\n  get size() {\n    return this._map.size;\n  }\n\n  get(ref) {\n    return this._map.get(ref.toString());\n  }\n\n  has(ref) {\n    return this._map.has(ref.toString());\n  }\n\n  put(ref, obj) {\n    this._map.set(ref.toString(), obj);\n  }\n\n  putAlias(ref, aliasRef) {\n    this._map.set(ref.toString(), this.get(aliasRef));\n  }\n\n  forEach(callback) {\n    for (const value of this._map.values()) {\n      callback(value);\n    }\n  }\n\n  clear() {\n    this._map.clear();\n  }\n}\n\nfunction isEOF(v) {\n  return v === EOF;\n}\n\nfunction isName(v, name) {\n  return v instanceof Name && (name === undefined || v.name === name);\n}\n\nfunction isCmd(v, cmd) {\n  return v instanceof Cmd && (cmd === undefined || v.cmd === cmd);\n}\n\nfunction isDict(v, type) {\n  return (\n    v instanceof Dict && (type === undefined || isName(v.get(\"Type\"), type))\n  );\n}\n\nfunction isRef(v) {\n  return v instanceof Ref;\n}\n\nfunction isRefsEqual(v1, v2) {\n  if (\n    typeof PDFJSDev === \"undefined\" ||\n    PDFJSDev.test(\"!PRODUCTION || TESTING\")\n  ) {\n    assert(\n      v1 instanceof Ref && v2 instanceof Ref,\n      \"isRefsEqual: Both parameters should be `Ref`s.\"\n    );\n  }\n  return v1.num === v2.num && v1.gen === v2.gen;\n}\n\nfunction isStream(v) {\n  return typeof v === \"object\" && v !== null && v.getBytes !== undefined;\n}\n\nfunction clearPrimitiveCaches() {\n  Cmd._clearCache();\n  Name._clearCache();\n  Ref._clearCache();\n}\n\nexport {\n  EOF,\n  clearPrimitiveCaches,\n  Cmd,\n  Dict,\n  Name,\n  Ref,\n  RefSet,\n  RefSetCache,\n  isEOF,\n  isCmd,\n  isDict,\n  isName,\n  isRef,\n  isRefsEqual,\n  isStream,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  createValidAbsoluteUrl,\n  shadow,\n  unreachable,\n  warn,\n} from \"../shared/util.js\";\nimport { ChunkedStreamManager } from \"./chunked_stream.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { PDFDocument } from \"./document.js\";\nimport { Stream } from \"./stream.js\";\n\nclass BasePdfManager {\n  constructor() {\n    if (this.constructor === BasePdfManager) {\n      unreachable(\"Cannot initialize BasePdfManager.\");\n    }\n  }\n\n  get docId() {\n    return this._docId;\n  }\n\n  get password() {\n    return this._password;\n  }\n\n  get docBaseUrl() {\n    let docBaseUrl = null;\n    if (this._docBaseUrl) {\n      const absoluteUrl = createValidAbsoluteUrl(this._docBaseUrl);\n      if (absoluteUrl) {\n        docBaseUrl = absoluteUrl.href;\n      } else {\n        warn(`Invalid absolute docBaseUrl: \"${this._docBaseUrl}\".`);\n      }\n    }\n    return shadow(this, \"docBaseUrl\", docBaseUrl);\n  }\n\n  onLoadedStream() {\n    unreachable(\"Abstract method `onLoadedStream` called\");\n  }\n\n  ensureDoc(prop, args) {\n    return this.ensure(this.pdfDocument, prop, args);\n  }\n\n  ensureXRef(prop, args) {\n    return this.ensure(this.pdfDocument.xref, prop, args);\n  }\n\n  ensureCatalog(prop, args) {\n    return this.ensure(this.pdfDocument.catalog, prop, args);\n  }\n\n  getPage(pageIndex) {\n    return this.pdfDocument.getPage(pageIndex);\n  }\n\n  fontFallback(id, handler) {\n    return this.pdfDocument.fontFallback(id, handler);\n  }\n\n  cleanup(manuallyTriggered = false) {\n    return this.pdfDocument.cleanup(manuallyTriggered);\n  }\n\n  async ensure(obj, prop, args) {\n    unreachable(\"Abstract method `ensure` called\");\n  }\n\n  requestRange(begin, end) {\n    unreachable(\"Abstract method `requestRange` called\");\n  }\n\n  requestLoadedStream() {\n    unreachable(\"Abstract method `requestLoadedStream` called\");\n  }\n\n  sendProgressiveData(chunk) {\n    unreachable(\"Abstract method `sendProgressiveData` called\");\n  }\n\n  updatePassword(password) {\n    this._password = password;\n  }\n\n  terminate(reason) {\n    unreachable(\"Abstract method `terminate` called\");\n  }\n}\n\nclass LocalPdfManager extends BasePdfManager {\n  constructor(docId, data, password, evaluatorOptions, docBaseUrl) {\n    super();\n\n    this._docId = docId;\n    this._password = password;\n    this._docBaseUrl = docBaseUrl;\n    this.evaluatorOptions = evaluatorOptions;\n\n    const stream = new Stream(data);\n    this.pdfDocument = new PDFDocument(this, stream);\n    this._loadedStreamPromise = Promise.resolve(stream);\n  }\n\n  async ensure(obj, prop, args) {\n    const value = obj[prop];\n    if (typeof value === \"function\") {\n      return value.apply(obj, args);\n    }\n    return value;\n  }\n\n  requestRange(begin, end) {\n    return Promise.resolve();\n  }\n\n  requestLoadedStream() {}\n\n  onLoadedStream() {\n    return this._loadedStreamPromise;\n  }\n\n  terminate(reason) {}\n}\n\nclass NetworkPdfManager extends BasePdfManager {\n  constructor(docId, pdfNetworkStream, args, evaluatorOptions, docBaseUrl) {\n    super();\n\n    this._docId = docId;\n    this._password = args.password;\n    this._docBaseUrl = docBaseUrl;\n    this.msgHandler = args.msgHandler;\n    this.evaluatorOptions = evaluatorOptions;\n\n    this.streamManager = new ChunkedStreamManager(pdfNetworkStream, {\n      msgHandler: args.msgHandler,\n      length: args.length,\n      disableAutoFetch: args.disableAutoFetch,\n      rangeChunkSize: args.rangeChunkSize,\n    });\n    this.pdfDocument = new PDFDocument(this, this.streamManager.getStream());\n  }\n\n  async ensure(obj, prop, args) {\n    try {\n      const value = obj[prop];\n      if (typeof value === \"function\") {\n        return value.apply(obj, args);\n      }\n      return value;\n    } catch (ex) {\n      if (!(ex instanceof MissingDataException)) {\n        throw ex;\n      }\n      await this.requestRange(ex.begin, ex.end);\n      return this.ensure(obj, prop, args);\n    }\n  }\n\n  requestRange(begin, end) {\n    return this.streamManager.requestRange(begin, end);\n  }\n\n  requestLoadedStream() {\n    this.streamManager.requestAllChunks();\n  }\n\n  sendProgressiveData(chunk) {\n    this.streamManager.onReceiveData({ chunk });\n  }\n\n  onLoadedStream() {\n    return this.streamManager.onLoadedStream();\n  }\n\n  terminate(reason) {\n    this.streamManager.abort(reason);\n  }\n}\n\nexport { LocalPdfManager, NetworkPdfManager };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\nimport {\n  arrayByteLength,\n  arraysToBytes,\n  createPromiseCapability,\n} from \"../shared/util.js\";\nimport { MissingDataException } from \"./core_utils.js\";\n\nclass ChunkedStream {\n  constructor(length, chunkSize, manager) {\n    this.bytes = new Uint8Array(length);\n    this.start = 0;\n    this.pos = 0;\n    this.end = length;\n    this.chunkSize = chunkSize;\n    this._loadedChunks = new Set();\n    this.numChunks = Math.ceil(length / chunkSize);\n    this.manager = manager;\n    this.progressiveDataLength = 0;\n    this.lastSuccessfulEnsureByteChunk = -1; // Single-entry cache\n  }\n\n  // If a particular stream does not implement one or more of these methods,\n  // an error should be thrown.\n  getMissingChunks() {\n    const chunks = [];\n    for (let chunk = 0, n = this.numChunks; chunk < n; ++chunk) {\n      if (!this._loadedChunks.has(chunk)) {\n        chunks.push(chunk);\n      }\n    }\n    return chunks;\n  }\n\n  getBaseStreams() {\n    return [this];\n  }\n\n  get numChunksLoaded() {\n    return this._loadedChunks.size;\n  }\n\n  allChunksLoaded() {\n    return this.numChunksLoaded === this.numChunks;\n  }\n\n  onReceiveData(begin, chunk) {\n    const chunkSize = this.chunkSize;\n    if (begin % chunkSize !== 0) {\n      throw new Error(`Bad begin offset: ${begin}`);\n    }\n\n    // Using `this.length` is inaccurate here since `this.start` can be moved\n    // (see the `moveStart` method).\n    const end = begin + chunk.byteLength;\n    if (end % chunkSize !== 0 && end !== this.bytes.length) {\n      throw new Error(`Bad end offset: ${end}`);\n    }\n\n    this.bytes.set(new Uint8Array(chunk), begin);\n    const beginChunk = Math.floor(begin / chunkSize);\n    const endChunk = Math.floor((end - 1) / chunkSize) + 1;\n\n    for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n      // Since a value can only occur *once* in a `Set`, there's no need to\n      // manually check `Set.prototype.has()` before adding the value here.\n      this._loadedChunks.add(curChunk);\n    }\n  }\n\n  onReceiveProgressiveData(data) {\n    let position = this.progressiveDataLength;\n    const beginChunk = Math.floor(position / this.chunkSize);\n\n    this.bytes.set(new Uint8Array(data), position);\n    position += data.byteLength;\n    this.progressiveDataLength = position;\n    const endChunk =\n      position >= this.end\n        ? this.numChunks\n        : Math.floor(position / this.chunkSize);\n\n    for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n      // Since a value can only occur *once* in a `Set`, there's no need to\n      // manually check `Set.prototype.has()` before adding the value here.\n      this._loadedChunks.add(curChunk);\n    }\n  }\n\n  ensureByte(pos) {\n    if (pos < this.progressiveDataLength) {\n      return;\n    }\n\n    const chunk = Math.floor(pos / this.chunkSize);\n    if (chunk === this.lastSuccessfulEnsureByteChunk) {\n      return;\n    }\n\n    if (!this._loadedChunks.has(chunk)) {\n      throw new MissingDataException(pos, pos + 1);\n    }\n    this.lastSuccessfulEnsureByteChunk = chunk;\n  }\n\n  ensureRange(begin, end) {\n    if (begin >= end) {\n      return;\n    }\n    if (end <= this.progressiveDataLength) {\n      return;\n    }\n\n    const chunkSize = this.chunkSize;\n    const beginChunk = Math.floor(begin / chunkSize);\n    const endChunk = Math.floor((end - 1) / chunkSize) + 1;\n    for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n      if (!this._loadedChunks.has(chunk)) {\n        throw new MissingDataException(begin, end);\n      }\n    }\n  }\n\n  nextEmptyChunk(beginChunk) {\n    const numChunks = this.numChunks;\n    for (let i = 0; i < numChunks; ++i) {\n      const chunk = (beginChunk + i) % numChunks; // Wrap around to beginning.\n      if (!this._loadedChunks.has(chunk)) {\n        return chunk;\n      }\n    }\n    return null;\n  }\n\n  hasChunk(chunk) {\n    return this._loadedChunks.has(chunk);\n  }\n\n  get length() {\n    return this.end - this.start;\n  }\n\n  get isEmpty() {\n    return this.length === 0;\n  }\n\n  getByte() {\n    const pos = this.pos;\n    if (pos >= this.end) {\n      return -1;\n    }\n    if (pos >= this.progressiveDataLength) {\n      this.ensureByte(pos);\n    }\n    return this.bytes[this.pos++];\n  }\n\n  getUint16() {\n    const b0 = this.getByte();\n    const b1 = this.getByte();\n    if (b0 === -1 || b1 === -1) {\n      return -1;\n    }\n    return (b0 << 8) + b1;\n  }\n\n  getInt32() {\n    const b0 = this.getByte();\n    const b1 = this.getByte();\n    const b2 = this.getByte();\n    const b3 = this.getByte();\n    return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n  }\n\n  // Returns subarray of original buffer, should only be read.\n  getBytes(length, forceClamped = false) {\n    const bytes = this.bytes;\n    const pos = this.pos;\n    const strEnd = this.end;\n\n    if (!length) {\n      if (strEnd > this.progressiveDataLength) {\n        this.ensureRange(pos, strEnd);\n      }\n      const subarray = bytes.subarray(pos, strEnd);\n      // `this.bytes` is always a `Uint8Array` here.\n      return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n    }\n\n    let end = pos + length;\n    if (end > strEnd) {\n      end = strEnd;\n    }\n    if (end > this.progressiveDataLength) {\n      this.ensureRange(pos, end);\n    }\n\n    this.pos = end;\n    const subarray = bytes.subarray(pos, end);\n    // `this.bytes` is always a `Uint8Array` here.\n    return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n  }\n\n  peekByte() {\n    const peekedByte = this.getByte();\n    if (peekedByte !== -1) {\n      this.pos--;\n    }\n    return peekedByte;\n  }\n\n  peekBytes(length, forceClamped = false) {\n    const bytes = this.getBytes(length, forceClamped);\n    this.pos -= bytes.length;\n    return bytes;\n  }\n\n  getByteRange(begin, end) {\n    if (begin < 0) {\n      begin = 0;\n    }\n    if (end > this.end) {\n      end = this.end;\n    }\n    if (end > this.progressiveDataLength) {\n      this.ensureRange(begin, end);\n    }\n    return this.bytes.subarray(begin, end);\n  }\n\n  skip(n) {\n    if (!n) {\n      n = 1;\n    }\n    this.pos += n;\n  }\n\n  reset() {\n    this.pos = this.start;\n  }\n\n  moveStart() {\n    this.start = this.pos;\n  }\n\n  makeSubStream(start, length, dict) {\n    if (length) {\n      if (start + length > this.progressiveDataLength) {\n        this.ensureRange(start, start + length);\n      }\n    } else {\n      // When the `length` is undefined you do *not*, under any circumstances,\n      // want to fallback on calling `this.ensureRange(start, this.end)` since\n      // that would force the *entire* PDF file to be loaded, thus completely\n      // breaking the whole purpose of using streaming and/or range requests.\n      //\n      // However, not doing any checking here could very easily lead to wasted\n      // time/resources during e.g. parsing, since `MissingDataException`s will\n      // require data to be re-parsed, which we attempt to minimize by at least\n      // checking that the *beginning* of the data is available here.\n      if (start >= this.progressiveDataLength) {\n        this.ensureByte(start);\n      }\n    }\n\n    function ChunkedStreamSubstream() {}\n    ChunkedStreamSubstream.prototype = Object.create(this);\n    ChunkedStreamSubstream.prototype.getMissingChunks = function () {\n      const chunkSize = this.chunkSize;\n      const beginChunk = Math.floor(this.start / chunkSize);\n      const endChunk = Math.floor((this.end - 1) / chunkSize) + 1;\n      const missingChunks = [];\n      for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n        if (!this._loadedChunks.has(chunk)) {\n          missingChunks.push(chunk);\n        }\n      }\n      return missingChunks;\n    };\n    ChunkedStreamSubstream.prototype.allChunksLoaded = function () {\n      if (this.numChunksLoaded === this.numChunks) {\n        return true;\n      }\n      return this.getMissingChunks().length === 0;\n    };\n\n    const subStream = new ChunkedStreamSubstream();\n    subStream.pos = subStream.start = start;\n    subStream.end = start + length || this.end;\n    subStream.dict = dict;\n    return subStream;\n  }\n}\n\nclass ChunkedStreamManager {\n  constructor(pdfNetworkStream, args) {\n    this.length = args.length;\n    this.chunkSize = args.rangeChunkSize;\n    this.stream = new ChunkedStream(this.length, this.chunkSize, this);\n    this.pdfNetworkStream = pdfNetworkStream;\n    this.disableAutoFetch = args.disableAutoFetch;\n    this.msgHandler = args.msgHandler;\n\n    this.currRequestId = 0;\n\n    this._chunksNeededByRequest = new Map();\n    this._requestsByChunk = new Map();\n    this._promisesByRequest = new Map();\n    this.progressiveDataLength = 0;\n    this.aborted = false;\n\n    this._loadedStreamCapability = createPromiseCapability();\n  }\n\n  onLoadedStream() {\n    return this._loadedStreamCapability.promise;\n  }\n\n  sendRequest(begin, end) {\n    const rangeReader = this.pdfNetworkStream.getRangeReader(begin, end);\n    if (!rangeReader.isStreamingSupported) {\n      rangeReader.onProgress = this.onProgress.bind(this);\n    }\n\n    let chunks = [],\n      loaded = 0;\n    const promise = new Promise((resolve, reject) => {\n      const readChunk = chunk => {\n        try {\n          if (!chunk.done) {\n            const data = chunk.value;\n            chunks.push(data);\n            loaded += arrayByteLength(data);\n            if (rangeReader.isStreamingSupported) {\n              this.onProgress({ loaded });\n            }\n            rangeReader.read().then(readChunk, reject);\n            return;\n          }\n          const chunkData = arraysToBytes(chunks);\n          chunks = null;\n          resolve(chunkData);\n        } catch (e) {\n          reject(e);\n        }\n      };\n      rangeReader.read().then(readChunk, reject);\n    });\n    promise.then(data => {\n      if (this.aborted) {\n        return; // Ignoring any data after abort.\n      }\n      this.onReceiveData({ chunk: data, begin });\n    });\n    // TODO check errors\n  }\n\n  /**\n   * Get all the chunks that are not yet loaded and group them into\n   * contiguous ranges to load in as few requests as possible.\n   */\n  requestAllChunks() {\n    const missingChunks = this.stream.getMissingChunks();\n    this._requestChunks(missingChunks);\n    return this._loadedStreamCapability.promise;\n  }\n\n  _requestChunks(chunks) {\n    const requestId = this.currRequestId++;\n\n    const chunksNeeded = new Set();\n    this._chunksNeededByRequest.set(requestId, chunksNeeded);\n    for (const chunk of chunks) {\n      if (!this.stream.hasChunk(chunk)) {\n        chunksNeeded.add(chunk);\n      }\n    }\n\n    if (chunksNeeded.size === 0) {\n      return Promise.resolve();\n    }\n\n    const capability = createPromiseCapability();\n    this._promisesByRequest.set(requestId, capability);\n\n    const chunksToRequest = [];\n    for (const chunk of chunksNeeded) {\n      let requestIds = this._requestsByChunk.get(chunk);\n      if (!requestIds) {\n        requestIds = [];\n        this._requestsByChunk.set(chunk, requestIds);\n\n        chunksToRequest.push(chunk);\n      }\n      requestIds.push(requestId);\n    }\n\n    if (chunksToRequest.length > 0) {\n      const groupedChunksToRequest = this.groupChunks(chunksToRequest);\n      for (const groupedChunk of groupedChunksToRequest) {\n        const begin = groupedChunk.beginChunk * this.chunkSize;\n        const end = Math.min(\n          groupedChunk.endChunk * this.chunkSize,\n          this.length\n        );\n        this.sendRequest(begin, end);\n      }\n    }\n\n    return capability.promise.catch(reason => {\n      if (this.aborted) {\n        return; // Ignoring any pending requests after abort.\n      }\n      throw reason;\n    });\n  }\n\n  getStream() {\n    return this.stream;\n  }\n\n  /**\n   * Loads any chunks in the requested range that are not yet loaded.\n   */\n  requestRange(begin, end) {\n    end = Math.min(end, this.length);\n\n    const beginChunk = this.getBeginChunk(begin);\n    const endChunk = this.getEndChunk(end);\n\n    const chunks = [];\n    for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n      chunks.push(chunk);\n    }\n    return this._requestChunks(chunks);\n  }\n\n  requestRanges(ranges = []) {\n    const chunksToRequest = [];\n    for (const range of ranges) {\n      const beginChunk = this.getBeginChunk(range.begin);\n      const endChunk = this.getEndChunk(range.end);\n      for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n        if (!chunksToRequest.includes(chunk)) {\n          chunksToRequest.push(chunk);\n        }\n      }\n    }\n\n    chunksToRequest.sort(function (a, b) {\n      return a - b;\n    });\n    return this._requestChunks(chunksToRequest);\n  }\n\n  /**\n   * Groups a sorted array of chunks into as few contiguous larger\n   * chunks as possible.\n   */\n  groupChunks(chunks) {\n    const groupedChunks = [];\n    let beginChunk = -1;\n    let prevChunk = -1;\n\n    for (let i = 0, ii = chunks.length; i < ii; ++i) {\n      const chunk = chunks[i];\n      if (beginChunk < 0) {\n        beginChunk = chunk;\n      }\n\n      if (prevChunk >= 0 && prevChunk + 1 !== chunk) {\n        groupedChunks.push({ beginChunk, endChunk: prevChunk + 1 });\n        beginChunk = chunk;\n      }\n      if (i + 1 === chunks.length) {\n        groupedChunks.push({ beginChunk, endChunk: chunk + 1 });\n      }\n\n      prevChunk = chunk;\n    }\n    return groupedChunks;\n  }\n\n  onProgress(args) {\n    this.msgHandler.send(\"DocProgress\", {\n      loaded: this.stream.numChunksLoaded * this.chunkSize + args.loaded,\n      total: this.length,\n    });\n  }\n\n  onReceiveData(args) {\n    const chunk = args.chunk;\n    const isProgressive = args.begin === undefined;\n    const begin = isProgressive ? this.progressiveDataLength : args.begin;\n    const end = begin + chunk.byteLength;\n\n    const beginChunk = Math.floor(begin / this.chunkSize);\n    const endChunk =\n      end < this.length\n        ? Math.floor(end / this.chunkSize)\n        : Math.ceil(end / this.chunkSize);\n\n    if (isProgressive) {\n      this.stream.onReceiveProgressiveData(chunk);\n      this.progressiveDataLength = end;\n    } else {\n      this.stream.onReceiveData(begin, chunk);\n    }\n\n    if (this.stream.allChunksLoaded()) {\n      this._loadedStreamCapability.resolve(this.stream);\n    }\n\n    const loadedRequests = [];\n    for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n      // The server might return more chunks than requested.\n      const requestIds = this._requestsByChunk.get(curChunk);\n      if (!requestIds) {\n        continue;\n      }\n      this._requestsByChunk.delete(curChunk);\n\n      for (const requestId of requestIds) {\n        const chunksNeeded = this._chunksNeededByRequest.get(requestId);\n        if (chunksNeeded.has(curChunk)) {\n          chunksNeeded.delete(curChunk);\n        }\n\n        if (chunksNeeded.size > 0) {\n          continue;\n        }\n        loadedRequests.push(requestId);\n      }\n    }\n\n    // If there are no pending requests, automatically fetch the next\n    // unfetched chunk of the PDF file.\n    if (!this.disableAutoFetch && this._requestsByChunk.size === 0) {\n      let nextEmptyChunk;\n      if (this.stream.numChunksLoaded === 1) {\n        // This is a special optimization so that after fetching the first\n        // chunk, rather than fetching the second chunk, we fetch the last\n        // chunk.\n        const lastChunk = this.stream.numChunks - 1;\n        if (!this.stream.hasChunk(lastChunk)) {\n          nextEmptyChunk = lastChunk;\n        }\n      } else {\n        nextEmptyChunk = this.stream.nextEmptyChunk(endChunk);\n      }\n      if (Number.isInteger(nextEmptyChunk)) {\n        this._requestChunks([nextEmptyChunk]);\n      }\n    }\n\n    for (const requestId of loadedRequests) {\n      const capability = this._promisesByRequest.get(requestId);\n      this._promisesByRequest.delete(requestId);\n      capability.resolve();\n    }\n\n    this.msgHandler.send(\"DocProgress\", {\n      loaded: this.stream.numChunksLoaded * this.chunkSize,\n      total: this.length,\n    });\n  }\n\n  onError(err) {\n    this._loadedStreamCapability.reject(err);\n  }\n\n  getBeginChunk(begin) {\n    return Math.floor(begin / this.chunkSize);\n  }\n\n  getEndChunk(end) {\n    return Math.floor((end - 1) / this.chunkSize) + 1;\n  }\n\n  abort(reason) {\n    this.aborted = true;\n    if (this.pdfNetworkStream) {\n      this.pdfNetworkStream.cancelAllRequests(reason);\n    }\n    for (const capability of this._promisesByRequest.values()) {\n      capability.reject(reason);\n    }\n  }\n}\n\nexport { ChunkedStream, ChunkedStreamManager };\n","/* Copyright 2019 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\nimport { assert, BaseException, warn } from \"../shared/util.js\";\n\nfunction getLookupTableFactory(initializer) {\n  let lookup;\n  return function () {\n    if (initializer) {\n      lookup = Object.create(null);\n      initializer(lookup);\n      initializer = null;\n    }\n    return lookup;\n  };\n}\n\nclass MissingDataException extends BaseException {\n  constructor(begin, end) {\n    super(`Missing data [${begin}, ${end})`);\n    this.begin = begin;\n    this.end = end;\n  }\n}\n\nclass XRefEntryException extends BaseException {}\n\nclass XRefParseException extends BaseException {}\n\n/**\n * Get the value of an inheritable property.\n *\n * If the PDF specification explicitly lists a property in a dictionary as\n * inheritable, then the value of the property may be present in the dictionary\n * itself or in one or more parents of the dictionary.\n *\n * If the key is not found in the tree, `undefined` is returned. Otherwise,\n * the value for the key is returned or, if `stopWhenFound` is `false`, a list\n * of values is returned. To avoid infinite loops, the traversal is stopped when\n * the loop limit is reached.\n *\n * @param {Dict} dict - Dictionary from where to start the traversal.\n * @param {string} key - The key of the property to find the value for.\n * @param {boolean} getArray - Whether or not the value should be fetched as an\n *   array. The default value is `false`.\n * @param {boolean} stopWhenFound - Whether or not to stop the traversal when\n *   the key is found. If set to `false`, we always walk up the entire parent\n *   chain, for example to be able to find `\\Resources` placed on multiple\n *   levels of the tree. The default value is `true`.\n */\nfunction getInheritableProperty({\n  dict,\n  key,\n  getArray = false,\n  stopWhenFound = true,\n}) {\n  const LOOP_LIMIT = 100;\n  let loopCount = 0;\n  let values;\n\n  while (dict) {\n    const value = getArray ? dict.getArray(key) : dict.get(key);\n    if (value !== undefined) {\n      if (stopWhenFound) {\n        return value;\n      }\n      if (!values) {\n        values = [];\n      }\n      values.push(value);\n    }\n    if (++loopCount > LOOP_LIMIT) {\n      warn(`getInheritableProperty: maximum loop count exceeded for \"${key}\"`);\n      break;\n    }\n    dict = dict.get(\"Parent\");\n  }\n  return values;\n}\n\n// prettier-ignore\nconst ROMAN_NUMBER_MAP = [\n  \"\", \"C\", \"CC\", \"CCC\", \"CD\", \"D\", \"DC\", \"DCC\", \"DCCC\", \"CM\",\n  \"\", \"X\", \"XX\", \"XXX\", \"XL\", \"L\", \"LX\", \"LXX\", \"LXXX\", \"XC\",\n  \"\", \"I\", \"II\", \"III\", \"IV\", \"V\", \"VI\", \"VII\", \"VIII\", \"IX\"\n];\n\n/**\n * Converts positive integers to (upper case) Roman numerals.\n * @param {number} number - The number that should be converted.\n * @param {boolean} lowerCase - Indicates if the result should be converted\n *   to lower case letters. The default value is `false`.\n * @returns {string} The resulting Roman number.\n */\nfunction toRomanNumerals(number, lowerCase = false) {\n  assert(\n    Number.isInteger(number) && number > 0,\n    \"The number should be a positive integer.\"\n  );\n  const romanBuf = [];\n  let pos;\n  // Thousands\n  while (number >= 1000) {\n    number -= 1000;\n    romanBuf.push(\"M\");\n  }\n  // Hundreds\n  pos = (number / 100) | 0;\n  number %= 100;\n  romanBuf.push(ROMAN_NUMBER_MAP[pos]);\n  // Tens\n  pos = (number / 10) | 0;\n  number %= 10;\n  romanBuf.push(ROMAN_NUMBER_MAP[10 + pos]);\n  // Ones\n  romanBuf.push(ROMAN_NUMBER_MAP[20 + number]);\n\n  const romanStr = romanBuf.join(\"\");\n  return lowerCase ? romanStr.toLowerCase() : romanStr;\n}\n\n// Calculate the base 2 logarithm of the number `x`. This differs from the\n// native function in the sense that it returns the ceiling value and that it\n// returns 0 instead of `Infinity`/`NaN` for `x` values smaller than/equal to 0.\nfunction log2(x) {\n  if (x <= 0) {\n    return 0;\n  }\n  return Math.ceil(Math.log2(x));\n}\n\nfunction readInt8(data, offset) {\n  return (data[offset] << 24) >> 24;\n}\n\nfunction readUint16(data, offset) {\n  return (data[offset] << 8) | data[offset + 1];\n}\n\nfunction readUint32(data, offset) {\n  return (\n    ((data[offset] << 24) |\n      (data[offset + 1] << 16) |\n      (data[offset + 2] << 8) |\n      data[offset + 3]) >>>\n    0\n  );\n}\n\n// Checks if ch is one of the following characters: SPACE, TAB, CR or LF.\nfunction isWhiteSpace(ch) {\n  return ch === 0x20 || ch === 0x09 || ch === 0x0d || ch === 0x0a;\n}\n\nexport {\n  getLookupTableFactory,\n  MissingDataException,\n  XRefEntryException,\n  XRefParseException,\n  getInheritableProperty,\n  toRomanNumerals,\n  log2,\n  readInt8,\n  readUint16,\n  readUint32,\n  isWhiteSpace,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\nimport {\n  assert,\n  FormatError,\n  info,\n  InvalidPDFException,\n  isArrayBuffer,\n  isArrayEqual,\n  isBool,\n  isNum,\n  isString,\n  OPS,\n  shadow,\n  stringToBytes,\n  stringToPDFString,\n  unreachable,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport { Catalog, ObjectLoader, XRef } from \"./obj.js\";\nimport {\n  clearPrimitiveCaches,\n  Dict,\n  isDict,\n  isName,\n  isStream,\n  Ref,\n} from \"./primitives.js\";\nimport {\n  getInheritableProperty,\n  isWhiteSpace,\n  MissingDataException,\n  XRefEntryException,\n  XRefParseException,\n} from \"./core_utils.js\";\nimport { NullStream, Stream, StreamsSequenceStream } from \"./stream.js\";\nimport { AnnotationFactory } from \"./annotation.js\";\nimport { calculateMD5 } from \"./crypto.js\";\nimport { Linearization } from \"./parser.js\";\nimport { OperatorList } from \"./operator_list.js\";\nimport { PartialEvaluator } from \"./evaluator.js\";\n\nconst DEFAULT_USER_UNIT = 1.0;\nconst LETTER_SIZE_MEDIABOX = [0, 0, 612, 792];\n\nfunction isAnnotationRenderable(annotation, intent) {\n  return (\n    (intent === \"display\" && annotation.viewable) ||\n    (intent === \"print\" && annotation.printable)\n  );\n}\n\nclass Page {\n  constructor({\n    pdfManager,\n    xref,\n    pageIndex,\n    pageDict,\n    ref,\n    globalIdFactory,\n    fontCache,\n    builtInCMapCache,\n    globalImageCache,\n  }) {\n    this.pdfManager = pdfManager;\n    this.pageIndex = pageIndex;\n    this.pageDict = pageDict;\n    this.xref = xref;\n    this.ref = ref;\n    this.fontCache = fontCache;\n    this.builtInCMapCache = builtInCMapCache;\n    this.globalImageCache = globalImageCache;\n    this.evaluatorOptions = pdfManager.evaluatorOptions;\n    this.resourcesPromise = null;\n\n    const idCounters = {\n      obj: 0,\n    };\n    this._localIdFactory = class extends globalIdFactory {\n      static createObjId() {\n        return `p${pageIndex}_${++idCounters.obj}`;\n      }\n    };\n  }\n\n  /**\n   * @private\n   */\n  _getInheritableProperty(key, getArray = false) {\n    const value = getInheritableProperty({\n      dict: this.pageDict,\n      key,\n      getArray,\n      stopWhenFound: false,\n    });\n    if (!Array.isArray(value)) {\n      return value;\n    }\n    if (value.length === 1 || !isDict(value[0])) {\n      return value[0];\n    }\n    return Dict.merge({ xref: this.xref, dictArray: value });\n  }\n\n  get content() {\n    return this.pageDict.get(\"Contents\");\n  }\n\n  get resources() {\n    // For robustness: The spec states that a \\Resources entry has to be\n    // present, but can be empty. Some documents still omit it; in this case\n    // we return an empty dictionary.\n    return shadow(\n      this,\n      \"resources\",\n      this._getInheritableProperty(\"Resources\") || Dict.empty\n    );\n  }\n\n  _getBoundingBox(name) {\n    const box = this._getInheritableProperty(name, /* getArray = */ true);\n\n    if (Array.isArray(box) && box.length === 4) {\n      if (box[2] - box[0] !== 0 && box[3] - box[1] !== 0) {\n        return box;\n      }\n      warn(`Empty /${name} entry.`);\n    }\n    return null;\n  }\n\n  get mediaBox() {\n    // Reset invalid media box to letter size.\n    return shadow(\n      this,\n      \"mediaBox\",\n      this._getBoundingBox(\"MediaBox\") || LETTER_SIZE_MEDIABOX\n    );\n  }\n\n  get cropBox() {\n    // Reset invalid crop box to media box.\n    return shadow(\n      this,\n      \"cropBox\",\n      this._getBoundingBox(\"CropBox\") || this.mediaBox\n    );\n  }\n\n  get userUnit() {\n    let obj = this.pageDict.get(\"UserUnit\");\n    if (!isNum(obj) || obj <= 0) {\n      obj = DEFAULT_USER_UNIT;\n    }\n    return shadow(this, \"userUnit\", obj);\n  }\n\n  get view() {\n    // From the spec, 6th ed., p.963:\n    // \"The crop, bleed, trim, and art boxes should not ordinarily\n    // extend beyond the boundaries of the media box. If they do, they are\n    // effectively reduced to their intersection with the media box.\"\n    const { cropBox, mediaBox } = this;\n    let view;\n    if (cropBox === mediaBox || isArrayEqual(cropBox, mediaBox)) {\n      view = mediaBox;\n    } else {\n      const box = Util.intersect(cropBox, mediaBox);\n      if (box && box[2] - box[0] !== 0 && box[3] - box[1] !== 0) {\n        view = box;\n      } else {\n        warn(\"Empty /CropBox and /MediaBox intersection.\");\n      }\n    }\n    return shadow(this, \"view\", view || mediaBox);\n  }\n\n  get rotate() {\n    let rotate = this._getInheritableProperty(\"Rotate\") || 0;\n\n    // Normalize rotation so it's a multiple of 90 and between 0 and 270.\n    if (rotate % 90 !== 0) {\n      rotate = 0;\n    } else if (rotate >= 360) {\n      rotate = rotate % 360;\n    } else if (rotate < 0) {\n      // The spec doesn't cover negatives. Assume it's counterclockwise\n      // rotation. The following is the other implementation of modulo.\n      rotate = ((rotate % 360) + 360) % 360;\n    }\n    return shadow(this, \"rotate\", rotate);\n  }\n\n  getContentStream() {\n    const content = this.content;\n    let stream;\n\n    if (Array.isArray(content)) {\n      // Fetching the individual streams from the array.\n      const xref = this.xref;\n      const streams = [];\n      for (const subStream of content) {\n        streams.push(xref.fetchIfRef(subStream));\n      }\n      stream = new StreamsSequenceStream(streams);\n    } else if (isStream(content)) {\n      stream = content;\n    } else {\n      // Replace non-existent page content with empty content.\n      stream = new NullStream();\n    }\n    return stream;\n  }\n\n  save(handler, task, annotationStorage) {\n    const partialEvaluator = new PartialEvaluator({\n      xref: this.xref,\n      handler,\n      pageIndex: this.pageIndex,\n      idFactory: this._localIdFactory,\n      fontCache: this.fontCache,\n      builtInCMapCache: this.builtInCMapCache,\n      globalImageCache: this.globalImageCache,\n      options: this.evaluatorOptions,\n    });\n\n    // Fetch the page's annotations and save the content\n    // in case of interactive form fields.\n    return this._parsedAnnotations.then(function (annotations) {\n      const newRefsPromises = [];\n      for (const annotation of annotations) {\n        if (!isAnnotationRenderable(annotation, \"print\")) {\n          continue;\n        }\n        newRefsPromises.push(\n          annotation\n            .save(partialEvaluator, task, annotationStorage)\n            .catch(function (reason) {\n              warn(\n                \"save - ignoring annotation data during \" +\n                  `\"${task.name}\" task: \"${reason}\".`\n              );\n              return null;\n            })\n        );\n      }\n\n      return Promise.all(newRefsPromises);\n    });\n  }\n\n  loadResources(keys) {\n    if (!this.resourcesPromise) {\n      // TODO: add async `_getInheritableProperty` and remove this.\n      this.resourcesPromise = this.pdfManager.ensure(this, \"resources\");\n    }\n    return this.resourcesPromise.then(() => {\n      const objectLoader = new ObjectLoader(this.resources, keys, this.xref);\n      return objectLoader.load();\n    });\n  }\n\n  getOperatorList({\n    handler,\n    sink,\n    task,\n    intent,\n    renderInteractiveForms,\n    annotationStorage,\n  }) {\n    const contentStreamPromise = this.pdfManager.ensure(\n      this,\n      \"getContentStream\"\n    );\n    const resourcesPromise = this.loadResources([\n      \"ExtGState\",\n      \"ColorSpace\",\n      \"Pattern\",\n      \"Shading\",\n      \"XObject\",\n      \"Font\",\n    ]);\n\n    const partialEvaluator = new PartialEvaluator({\n      xref: this.xref,\n      handler,\n      pageIndex: this.pageIndex,\n      idFactory: this._localIdFactory,\n      fontCache: this.fontCache,\n      builtInCMapCache: this.builtInCMapCache,\n      globalImageCache: this.globalImageCache,\n      options: this.evaluatorOptions,\n    });\n\n    const dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);\n    const pageListPromise = dataPromises.then(([contentStream]) => {\n      const opList = new OperatorList(intent, sink);\n\n      handler.send(\"StartRenderPage\", {\n        transparency: partialEvaluator.hasBlendModes(this.resources),\n        pageIndex: this.pageIndex,\n        intent,\n      });\n\n      return partialEvaluator\n        .getOperatorList({\n          stream: contentStream,\n          task,\n          resources: this.resources,\n          operatorList: opList,\n        })\n        .then(function () {\n          return opList;\n        });\n    });\n\n    // Fetch the page's annotations and add their operator lists to the\n    // page's operator list to render them.\n    return Promise.all([pageListPromise, this._parsedAnnotations]).then(\n      function ([pageOpList, annotations]) {\n        if (annotations.length === 0) {\n          pageOpList.flush(true);\n          return { length: pageOpList.totalLength };\n        }\n\n        // Collect the operator list promises for the annotations. Each promise\n        // is resolved with the complete operator list for a single annotation.\n        const opListPromises = [];\n        for (const annotation of annotations) {\n          if (isAnnotationRenderable(annotation, intent)) {\n            opListPromises.push(\n              annotation\n                .getOperatorList(\n                  partialEvaluator,\n                  task,\n                  renderInteractiveForms,\n                  annotationStorage\n                )\n                .catch(function (reason) {\n                  warn(\n                    \"getOperatorList - ignoring annotation data during \" +\n                      `\"${task.name}\" task: \"${reason}\".`\n                  );\n                  return null;\n                })\n            );\n          }\n        }\n\n        return Promise.all(opListPromises).then(function (opLists) {\n          pageOpList.addOp(OPS.beginAnnotations, []);\n          for (const opList of opLists) {\n            pageOpList.addOpList(opList);\n          }\n          pageOpList.addOp(OPS.endAnnotations, []);\n          pageOpList.flush(true);\n          return { length: pageOpList.totalLength };\n        });\n      }\n    );\n  }\n\n  extractTextContent({\n    handler,\n    task,\n    normalizeWhitespace,\n    sink,\n    combineTextItems,\n  }) {\n    const contentStreamPromise = this.pdfManager.ensure(\n      this,\n      \"getContentStream\"\n    );\n    const resourcesPromise = this.loadResources([\n      \"ExtGState\",\n      \"XObject\",\n      \"Font\",\n    ]);\n\n    const dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);\n    return dataPromises.then(([contentStream]) => {\n      const partialEvaluator = new PartialEvaluator({\n        xref: this.xref,\n        handler,\n        pageIndex: this.pageIndex,\n        idFactory: this._localIdFactory,\n        fontCache: this.fontCache,\n        builtInCMapCache: this.builtInCMapCache,\n        globalImageCache: this.globalImageCache,\n        options: this.evaluatorOptions,\n      });\n\n      return partialEvaluator.getTextContent({\n        stream: contentStream,\n        task,\n        resources: this.resources,\n        normalizeWhitespace,\n        combineTextItems,\n        sink,\n      });\n    });\n  }\n\n  getAnnotationsData(intent) {\n    return this._parsedAnnotations.then(function (annotations) {\n      const annotationsData = [];\n      for (let i = 0, ii = annotations.length; i < ii; i++) {\n        if (!intent || isAnnotationRenderable(annotations[i], intent)) {\n          annotationsData.push(annotations[i].data);\n        }\n      }\n      return annotationsData;\n    });\n  }\n\n  get annotations() {\n    return shadow(\n      this,\n      \"annotations\",\n      this._getInheritableProperty(\"Annots\") || []\n    );\n  }\n\n  get _parsedAnnotations() {\n    const parsedAnnotations = this.pdfManager\n      .ensure(this, \"annotations\")\n      .then(() => {\n        const annotationPromises = [];\n        for (const annotationRef of this.annotations) {\n          annotationPromises.push(\n            AnnotationFactory.create(\n              this.xref,\n              annotationRef,\n              this.pdfManager,\n              this._localIdFactory\n            ).catch(function (reason) {\n              warn(`_parsedAnnotations: \"${reason}\".`);\n              return null;\n            })\n          );\n        }\n\n        return Promise.all(annotationPromises).then(function (annotations) {\n          return annotations.filter(annotation => !!annotation);\n        });\n      });\n\n    return shadow(this, \"_parsedAnnotations\", parsedAnnotations);\n  }\n}\n\nconst PDF_HEADER_SIGNATURE = new Uint8Array([0x25, 0x50, 0x44, 0x46, 0x2d]);\n// prettier-ignore\nconst STARTXREF_SIGNATURE = new Uint8Array([\n  0x73, 0x74, 0x61, 0x72, 0x74, 0x78, 0x72, 0x65, 0x66]);\nconst ENDOBJ_SIGNATURE = new Uint8Array([0x65, 0x6e, 0x64, 0x6f, 0x62, 0x6a]);\n\nconst FINGERPRINT_FIRST_BYTES = 1024;\nconst EMPTY_FINGERPRINT =\n  \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\n\nconst PDF_HEADER_VERSION_REGEXP = /^[1-9]\\.[0-9]$/;\n\nfunction find(stream, signature, limit = 1024, backwards = false) {\n  if (\n    typeof PDFJSDev === \"undefined\" ||\n    PDFJSDev.test(\"!PRODUCTION || TESTING\")\n  ) {\n    assert(limit > 0, 'The \"limit\" must be a positive integer.');\n  }\n  const signatureLength = signature.length;\n\n  const scanBytes = stream.peekBytes(limit);\n  const scanLength = scanBytes.length - signatureLength;\n\n  if (scanLength <= 0) {\n    return false;\n  }\n  if (backwards) {\n    const signatureEnd = signatureLength - 1;\n\n    let pos = scanBytes.length - 1;\n    while (pos >= signatureEnd) {\n      let j = 0;\n      while (\n        j < signatureLength &&\n        scanBytes[pos - j] === signature[signatureEnd - j]\n      ) {\n        j++;\n      }\n      if (j >= signatureLength) {\n        // `signature` found.\n        stream.pos += pos - signatureEnd;\n        return true;\n      }\n      pos--;\n    }\n  } else {\n    // forwards\n    let pos = 0;\n    while (pos <= scanLength) {\n      let j = 0;\n      while (j < signatureLength && scanBytes[pos + j] === signature[j]) {\n        j++;\n      }\n      if (j >= signatureLength) {\n        // `signature` found.\n        stream.pos += pos;\n        return true;\n      }\n      pos++;\n    }\n  }\n  return false;\n}\n\n/**\n * The `PDFDocument` class holds all the (worker-thread) data of the PDF file.\n */\nclass PDFDocument {\n  constructor(pdfManager, arg) {\n    let stream;\n    if (isStream(arg)) {\n      stream = arg;\n    } else if (isArrayBuffer(arg)) {\n      stream = new Stream(arg);\n    } else {\n      throw new Error(\"PDFDocument: Unknown argument type\");\n    }\n    if (stream.length <= 0) {\n      throw new InvalidPDFException(\n        \"The PDF file is empty, i.e. its size is zero bytes.\"\n      );\n    }\n\n    this.pdfManager = pdfManager;\n    this.stream = stream;\n    this.xref = new XRef(stream, pdfManager);\n    this._pagePromises = [];\n    this._version = null;\n\n    const idCounters = {\n      font: 0,\n    };\n    this._globalIdFactory = class {\n      static getDocId() {\n        return `g_${pdfManager.docId}`;\n      }\n\n      static createFontId() {\n        return `f${++idCounters.font}`;\n      }\n\n      static createObjId() {\n        unreachable(\"Abstract method `createObjId` called.\");\n      }\n    };\n  }\n\n  parse(recoveryMode) {\n    this.xref.parse(recoveryMode);\n    this.catalog = new Catalog(this.pdfManager, this.xref);\n\n    // The `checkHeader` method is called before this method and parses the\n    // version from the header. The specification states in section 7.5.2\n    // that the version from the catalog, if present, should overwrite the\n    // version from the header.\n    if (this.catalog.version) {\n      this._version = this.catalog.version;\n    }\n  }\n\n  get linearization() {\n    let linearization = null;\n    try {\n      linearization = Linearization.create(this.stream);\n    } catch (err) {\n      if (err instanceof MissingDataException) {\n        throw err;\n      }\n      info(err);\n    }\n    return shadow(this, \"linearization\", linearization);\n  }\n\n  get startXRef() {\n    const stream = this.stream;\n    let startXRef = 0;\n\n    if (this.linearization) {\n      // Find the end of the first object.\n      stream.reset();\n      if (find(stream, ENDOBJ_SIGNATURE)) {\n        startXRef = stream.pos + 6 - stream.start;\n      }\n    } else {\n      // Find `startxref` by checking backwards from the end of the file.\n      const step = 1024;\n      const startXRefLength = STARTXREF_SIGNATURE.length;\n      let found = false,\n        pos = stream.end;\n\n      while (!found && pos > 0) {\n        pos -= step - startXRefLength;\n        if (pos < 0) {\n          pos = 0;\n        }\n        stream.pos = pos;\n        found = find(stream, STARTXREF_SIGNATURE, step, true);\n      }\n\n      if (found) {\n        stream.skip(9);\n        let ch;\n        do {\n          ch = stream.getByte();\n        } while (isWhiteSpace(ch));\n        let str = \"\";\n        while (ch >= /* Space = */ 0x20 && ch <= /* '9' = */ 0x39) {\n          str += String.fromCharCode(ch);\n          ch = stream.getByte();\n        }\n        startXRef = parseInt(str, 10);\n        if (isNaN(startXRef)) {\n          startXRef = 0;\n        }\n      }\n    }\n    return shadow(this, \"startXRef\", startXRef);\n  }\n\n  // Find the header, get the PDF format version and setup the\n  // stream to start from the header.\n  checkHeader() {\n    const stream = this.stream;\n    stream.reset();\n\n    if (!find(stream, PDF_HEADER_SIGNATURE)) {\n      // May not be a PDF file, but don't throw an error and let\n      // parsing continue.\n      return;\n    }\n    stream.moveStart();\n\n    // Read the PDF format version.\n    const MAX_PDF_VERSION_LENGTH = 12;\n    let version = \"\",\n      ch;\n    while ((ch = stream.getByte()) > /* Space = */ 0x20) {\n      if (version.length >= MAX_PDF_VERSION_LENGTH) {\n        break;\n      }\n      version += String.fromCharCode(ch);\n    }\n    if (!this._version) {\n      // Remove the \"%PDF-\" prefix.\n      this._version = version.substring(5);\n    }\n  }\n\n  parseStartXRef() {\n    this.xref.setStartXRef(this.startXRef);\n  }\n\n  get numPages() {\n    const linearization = this.linearization;\n    const num = linearization ? linearization.numPages : this.catalog.numPages;\n    return shadow(this, \"numPages\", num);\n  }\n\n  /**\n   * @private\n   */\n  _hasOnlyDocumentSignatures(fields, recursionDepth = 0) {\n    const RECURSION_LIMIT = 10;\n    return fields.every(field => {\n      field = this.xref.fetchIfRef(field);\n      if (field.has(\"Kids\")) {\n        if (++recursionDepth > RECURSION_LIMIT) {\n          warn(\"_hasOnlyDocumentSignatures: maximum recursion depth reached\");\n          return false;\n        }\n        return this._hasOnlyDocumentSignatures(\n          field.get(\"Kids\"),\n          recursionDepth\n        );\n      }\n      const isSignature = isName(field.get(\"FT\"), \"Sig\");\n      const rectangle = field.get(\"Rect\");\n      const isInvisible =\n        Array.isArray(rectangle) && rectangle.every(value => value === 0);\n      return isSignature && isInvisible;\n    });\n  }\n\n  get formInfo() {\n    const formInfo = { hasAcroForm: false, hasXfa: false };\n    const acroForm = this.catalog.acroForm;\n    if (!acroForm) {\n      return shadow(this, \"formInfo\", formInfo);\n    }\n\n    try {\n      // The document contains XFA data if the `XFA` entry is a non-empty\n      // array or stream.\n      const xfa = acroForm.get(\"XFA\");\n      const hasXfa =\n        (Array.isArray(xfa) && xfa.length > 0) ||\n        (isStream(xfa) && !xfa.isEmpty);\n      formInfo.hasXfa = hasXfa;\n\n      // The document contains AcroForm data if the `Fields` entry is a\n      // non-empty array and it doesn't consist of only document signatures.\n      // This second check is required for files that don't actually contain\n      // AcroForm data (only XFA data), but that use the `Fields` entry to\n      // store (invisible) document signatures. This can be detected using\n      // the first bit of the `SigFlags` integer (see Table 219 in the\n      // specification).\n      const fields = acroForm.get(\"Fields\");\n      const hasFields = Array.isArray(fields) && fields.length > 0;\n      const sigFlags = acroForm.get(\"SigFlags\");\n      const hasOnlyDocumentSignatures =\n        !!(sigFlags & 0x1) && this._hasOnlyDocumentSignatures(fields);\n      formInfo.hasAcroForm = hasFields && !hasOnlyDocumentSignatures;\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      info(\"Cannot fetch form information.\");\n    }\n    return shadow(this, \"formInfo\", formInfo);\n  }\n\n  get documentInfo() {\n    const DocumentInfoValidators = {\n      Title: isString,\n      Author: isString,\n      Subject: isString,\n      Keywords: isString,\n      Creator: isString,\n      Producer: isString,\n      CreationDate: isString,\n      ModDate: isString,\n      Trapped: isName,\n    };\n\n    let version = this._version;\n    if (\n      typeof version !== \"string\" ||\n      !PDF_HEADER_VERSION_REGEXP.test(version)\n    ) {\n      warn(`Invalid PDF header version number: ${version}`);\n      version = null;\n    }\n\n    const docInfo = {\n      PDFFormatVersion: version,\n      IsLinearized: !!this.linearization,\n      IsAcroFormPresent: this.formInfo.hasAcroForm,\n      IsXFAPresent: this.formInfo.hasXfa,\n      IsCollectionPresent: !!this.catalog.collection,\n    };\n\n    let infoDict;\n    try {\n      infoDict = this.xref.trailer.get(\"Info\");\n    } catch (err) {\n      if (err instanceof MissingDataException) {\n        throw err;\n      }\n      info(\"The document information dictionary is invalid.\");\n    }\n\n    if (isDict(infoDict)) {\n      // Fill the document info with valid entries from the specification,\n      // as well as any existing well-formed custom entries.\n      for (const key of infoDict.getKeys()) {\n        const value = infoDict.get(key);\n\n        if (DocumentInfoValidators[key]) {\n          // Make sure the (standard) value conforms to the specification.\n          if (DocumentInfoValidators[key](value)) {\n            docInfo[key] =\n              typeof value !== \"string\" ? value : stringToPDFString(value);\n          } else {\n            info(`Bad value in document info for \"${key}\".`);\n          }\n        } else if (typeof key === \"string\") {\n          // For custom values, only accept white-listed types to prevent\n          // errors that would occur when trying to send non-serializable\n          // objects to the main-thread (for example `Dict` or `Stream`).\n          let customValue;\n          if (isString(value)) {\n            customValue = stringToPDFString(value);\n          } else if (isName(value) || isNum(value) || isBool(value)) {\n            customValue = value;\n          } else {\n            info(`Unsupported value in document info for (custom) \"${key}\".`);\n            continue;\n          }\n\n          if (!docInfo.Custom) {\n            docInfo.Custom = Object.create(null);\n          }\n          docInfo.Custom[key] = customValue;\n        }\n      }\n    }\n    return shadow(this, \"documentInfo\", docInfo);\n  }\n\n  get fingerprint() {\n    let hash;\n    const idArray = this.xref.trailer.get(\"ID\");\n    if (\n      Array.isArray(idArray) &&\n      idArray[0] &&\n      isString(idArray[0]) &&\n      idArray[0] !== EMPTY_FINGERPRINT\n    ) {\n      hash = stringToBytes(idArray[0]);\n    } else {\n      hash = calculateMD5(\n        this.stream.getByteRange(0, FINGERPRINT_FIRST_BYTES),\n        0,\n        FINGERPRINT_FIRST_BYTES\n      );\n    }\n\n    const fingerprintBuf = [];\n    for (let i = 0, ii = hash.length; i < ii; i++) {\n      const hex = hash[i].toString(16);\n      fingerprintBuf.push(hex.padStart(2, \"0\"));\n    }\n    return shadow(this, \"fingerprint\", fingerprintBuf.join(\"\"));\n  }\n\n  _getLinearizationPage(pageIndex) {\n    const { catalog, linearization } = this;\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        linearization && linearization.pageFirst === pageIndex,\n        \"_getLinearizationPage - invalid pageIndex argument.\"\n      );\n    }\n\n    const ref = Ref.get(linearization.objectNumberFirst, 0);\n    return this.xref\n      .fetchAsync(ref)\n      .then(obj => {\n        // Ensure that the object that was found is actually a Page dictionary.\n        if (\n          isDict(obj, \"Page\") ||\n          (isDict(obj) && !obj.has(\"Type\") && obj.has(\"Contents\"))\n        ) {\n          if (ref && !catalog.pageKidsCountCache.has(ref)) {\n            catalog.pageKidsCountCache.put(ref, 1); // Cache the Page reference.\n          }\n          return [obj, ref];\n        }\n        throw new FormatError(\n          \"The Linearization dictionary doesn't point \" +\n            \"to a valid Page dictionary.\"\n        );\n      })\n      .catch(reason => {\n        info(reason);\n        return catalog.getPageDict(pageIndex);\n      });\n  }\n\n  getPage(pageIndex) {\n    if (this._pagePromises[pageIndex] !== undefined) {\n      return this._pagePromises[pageIndex];\n    }\n    const { catalog, linearization } = this;\n\n    const promise =\n      linearization && linearization.pageFirst === pageIndex\n        ? this._getLinearizationPage(pageIndex)\n        : catalog.getPageDict(pageIndex);\n\n    return (this._pagePromises[pageIndex] = promise.then(([pageDict, ref]) => {\n      return new Page({\n        pdfManager: this.pdfManager,\n        xref: this.xref,\n        pageIndex,\n        pageDict,\n        ref,\n        globalIdFactory: this._globalIdFactory,\n        fontCache: catalog.fontCache,\n        builtInCMapCache: catalog.builtInCMapCache,\n        globalImageCache: catalog.globalImageCache,\n      });\n    }));\n  }\n\n  checkFirstPage() {\n    return this.getPage(0).catch(async reason => {\n      if (reason instanceof XRefEntryException) {\n        // Clear out the various caches to ensure that we haven't stored any\n        // inconsistent and/or incorrect state, since that could easily break\n        // subsequent `this.getPage` calls.\n        this._pagePromises.length = 0;\n        await this.cleanup();\n\n        throw new XRefParseException();\n      }\n    });\n  }\n\n  fontFallback(id, handler) {\n    return this.catalog.fontFallback(id, handler);\n  }\n\n  async cleanup(manuallyTriggered = false) {\n    return this.catalog\n      ? this.catalog.cleanup(manuallyTriggered)\n      : clearPrimitiveCaches();\n  }\n}\n\nexport { Page, PDFDocument };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  assert,\n  bytesToString,\n  createPromiseCapability,\n  createValidAbsoluteUrl,\n  FormatError,\n  info,\n  InvalidPDFException,\n  isBool,\n  isNum,\n  isString,\n  PermissionFlag,\n  shadow,\n  stringToPDFString,\n  stringToUTF8String,\n  unreachable,\n  warn,\n} from \"../shared/util.js\";\nimport {\n  clearPrimitiveCaches,\n  Cmd,\n  Dict,\n  isCmd,\n  isDict,\n  isName,\n  isRef,\n  isRefsEqual,\n  isStream,\n  Ref,\n  RefSet,\n  RefSetCache,\n} from \"./primitives.js\";\nimport { Lexer, Parser } from \"./parser.js\";\nimport {\n  MissingDataException,\n  toRomanNumerals,\n  XRefEntryException,\n  XRefParseException,\n} from \"./core_utils.js\";\nimport { CipherTransformFactory } from \"./crypto.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { GlobalImageCache } from \"./image_utils.js\";\n\nfunction fetchDestination(dest) {\n  return isDict(dest) ? dest.get(\"D\") : dest;\n}\n\nclass Catalog {\n  constructor(pdfManager, xref) {\n    this.pdfManager = pdfManager;\n    this.xref = xref;\n\n    this._catDict = xref.getCatalogObj();\n    if (!isDict(this._catDict)) {\n      throw new FormatError(\"Catalog object is not a dictionary.\");\n    }\n\n    this.fontCache = new RefSetCache();\n    this.builtInCMapCache = new Map();\n    this.globalImageCache = new GlobalImageCache();\n    this.pageKidsCountCache = new RefSetCache();\n  }\n\n  get version() {\n    const version = this._catDict.get(\"Version\");\n    if (!isName(version)) {\n      return shadow(this, \"version\", null);\n    }\n    return shadow(this, \"version\", version.name);\n  }\n\n  get collection() {\n    let collection = null;\n    try {\n      const obj = this._catDict.get(\"Collection\");\n      if (isDict(obj) && obj.size > 0) {\n        collection = obj;\n      }\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      info(\"Cannot fetch Collection entry; assuming no collection is present.\");\n    }\n    return shadow(this, \"collection\", collection);\n  }\n\n  get acroForm() {\n    let acroForm = null;\n    try {\n      const obj = this._catDict.get(\"AcroForm\");\n      if (isDict(obj) && obj.size > 0) {\n        acroForm = obj;\n      }\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      info(\"Cannot fetch AcroForm entry; assuming no forms are present.\");\n    }\n    return shadow(this, \"acroForm\", acroForm);\n  }\n\n  get metadata() {\n    const streamRef = this._catDict.getRaw(\"Metadata\");\n    if (!isRef(streamRef)) {\n      return shadow(this, \"metadata\", null);\n    }\n\n    const suppressEncryption = !(\n      this.xref.encrypt && this.xref.encrypt.encryptMetadata\n    );\n    const stream = this.xref.fetch(streamRef, suppressEncryption);\n    let metadata;\n\n    if (stream && isDict(stream.dict)) {\n      const type = stream.dict.get(\"Type\");\n      const subtype = stream.dict.get(\"Subtype\");\n\n      if (isName(type, \"Metadata\") && isName(subtype, \"XML\")) {\n        // XXX: This should examine the charset the XML document defines,\n        // however since there are currently no real means to decode\n        // arbitrary charsets, let's just hope that the author of the PDF\n        // was reasonable enough to stick with the XML default charset,\n        // which is UTF-8.\n        try {\n          metadata = stringToUTF8String(bytesToString(stream.getBytes()));\n        } catch (e) {\n          if (e instanceof MissingDataException) {\n            throw e;\n          }\n          info(\"Skipping invalid metadata.\");\n        }\n      }\n    }\n    return shadow(this, \"metadata\", metadata);\n  }\n\n  get toplevelPagesDict() {\n    const pagesObj = this._catDict.get(\"Pages\");\n    if (!isDict(pagesObj)) {\n      throw new FormatError(\"Invalid top-level pages dictionary.\");\n    }\n    return shadow(this, \"toplevelPagesDict\", pagesObj);\n  }\n\n  get documentOutline() {\n    let obj = null;\n    try {\n      obj = this._readDocumentOutline();\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(\"Unable to read document outline.\");\n    }\n    return shadow(this, \"documentOutline\", obj);\n  }\n\n  /**\n   * @private\n   */\n  _readDocumentOutline() {\n    let obj = this._catDict.get(\"Outlines\");\n    if (!isDict(obj)) {\n      return null;\n    }\n    obj = obj.getRaw(\"First\");\n    if (!isRef(obj)) {\n      return null;\n    }\n\n    const root = { items: [] };\n    const queue = [{ obj, parent: root }];\n    // To avoid recursion, keep track of the already processed items.\n    const processed = new RefSet();\n    processed.put(obj);\n    const xref = this.xref,\n      blackColor = new Uint8ClampedArray(3);\n\n    while (queue.length > 0) {\n      const i = queue.shift();\n      const outlineDict = xref.fetchIfRef(i.obj);\n      if (outlineDict === null) {\n        continue;\n      }\n      if (!outlineDict.has(\"Title\")) {\n        throw new FormatError(\"Invalid outline item encountered.\");\n      }\n\n      const data = { url: null, dest: null };\n      Catalog.parseDestDictionary({\n        destDict: outlineDict,\n        resultObj: data,\n        docBaseUrl: this.pdfManager.docBaseUrl,\n      });\n      const title = outlineDict.get(\"Title\");\n      const flags = outlineDict.get(\"F\") || 0;\n      const color = outlineDict.getArray(\"C\");\n      const count = outlineDict.get(\"Count\");\n      let rgbColor = blackColor;\n\n      // We only need to parse the color when it's valid, and non-default.\n      if (\n        Array.isArray(color) &&\n        color.length === 3 &&\n        (color[0] !== 0 || color[1] !== 0 || color[2] !== 0)\n      ) {\n        rgbColor = ColorSpace.singletons.rgb.getRgb(color, 0);\n      }\n\n      const outlineItem = {\n        dest: data.dest,\n        url: data.url,\n        unsafeUrl: data.unsafeUrl,\n        newWindow: data.newWindow,\n        title: stringToPDFString(title),\n        color: rgbColor,\n        count: Number.isInteger(count) ? count : undefined,\n        bold: !!(flags & 2),\n        italic: !!(flags & 1),\n        items: [],\n      };\n\n      i.parent.items.push(outlineItem);\n      obj = outlineDict.getRaw(\"First\");\n      if (isRef(obj) && !processed.has(obj)) {\n        queue.push({ obj, parent: outlineItem });\n        processed.put(obj);\n      }\n      obj = outlineDict.getRaw(\"Next\");\n      if (isRef(obj) && !processed.has(obj)) {\n        queue.push({ obj, parent: i.parent });\n        processed.put(obj);\n      }\n    }\n    return root.items.length > 0 ? root.items : null;\n  }\n\n  get permissions() {\n    let permissions = null;\n    try {\n      permissions = this._readPermissions();\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(\"Unable to read permissions.\");\n    }\n    return shadow(this, \"permissions\", permissions);\n  }\n\n  /**\n   * @private\n   */\n  _readPermissions() {\n    const encrypt = this.xref.trailer.get(\"Encrypt\");\n    if (!isDict(encrypt)) {\n      return null;\n    }\n\n    let flags = encrypt.get(\"P\");\n    if (!isNum(flags)) {\n      return null;\n    }\n\n    // PDF integer objects are represented internally in signed 2's complement\n    // form. Therefore, convert the signed decimal integer to a signed 2's\n    // complement binary integer so we can use regular bitwise operations on it.\n    flags += 2 ** 32;\n\n    const permissions = [];\n    for (const key in PermissionFlag) {\n      const value = PermissionFlag[key];\n      if (flags & value) {\n        permissions.push(value);\n      }\n    }\n    return permissions;\n  }\n\n  get optionalContentConfig() {\n    let config = null;\n    try {\n      const properties = this._catDict.get(\"OCProperties\");\n      if (!properties) {\n        return shadow(this, \"optionalContentConfig\", null);\n      }\n      const defaultConfig = properties.get(\"D\");\n      if (!defaultConfig) {\n        return shadow(this, \"optionalContentConfig\", null);\n      }\n      const groupsData = properties.get(\"OCGs\");\n      if (!Array.isArray(groupsData)) {\n        return shadow(this, \"optionalContentConfig\", null);\n      }\n      const groups = [];\n      const groupRefs = [];\n      // Ensure all the optional content groups are valid.\n      for (const groupRef of groupsData) {\n        if (!isRef(groupRef)) {\n          continue;\n        }\n        groupRefs.push(groupRef);\n        const group = this.xref.fetchIfRef(groupRef);\n        groups.push({\n          id: groupRef.toString(),\n          name: isString(group.get(\"Name\"))\n            ? stringToPDFString(group.get(\"Name\"))\n            : null,\n          intent: isString(group.get(\"Intent\"))\n            ? stringToPDFString(group.get(\"Intent\"))\n            : null,\n        });\n      }\n      config = this._readOptionalContentConfig(defaultConfig, groupRefs);\n      config.groups = groups;\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(`Unable to read optional content config: ${ex}`);\n    }\n    return shadow(this, \"optionalContentConfig\", config);\n  }\n\n  _readOptionalContentConfig(config, contentGroupRefs) {\n    function parseOnOff(refs) {\n      const onParsed = [];\n      if (Array.isArray(refs)) {\n        for (const value of refs) {\n          if (!isRef(value)) {\n            continue;\n          }\n          if (contentGroupRefs.includes(value)) {\n            onParsed.push(value.toString());\n          }\n        }\n      }\n      return onParsed;\n    }\n\n    function parseOrder(refs, nestedLevels = 0) {\n      if (!Array.isArray(refs)) {\n        return null;\n      }\n      const order = [];\n\n      for (const value of refs) {\n        if (isRef(value) && contentGroupRefs.includes(value)) {\n          parsedOrderRefs.put(value); // Handle \"hidden\" groups, see below.\n\n          order.push(value.toString());\n          continue;\n        }\n        // Handle nested /Order arrays (see e.g. issue 9462 and bug 1240641).\n        const nestedOrder = parseNestedOrder(value, nestedLevels);\n        if (nestedOrder) {\n          order.push(nestedOrder);\n        }\n      }\n\n      if (nestedLevels > 0) {\n        return order;\n      }\n      const hiddenGroups = [];\n      for (const groupRef of contentGroupRefs) {\n        if (parsedOrderRefs.has(groupRef)) {\n          continue;\n        }\n        hiddenGroups.push(groupRef.toString());\n      }\n      if (hiddenGroups.length) {\n        order.push({ name: null, order: hiddenGroups });\n      }\n\n      return order;\n    }\n\n    function parseNestedOrder(ref, nestedLevels) {\n      if (++nestedLevels > MAX_NESTED_LEVELS) {\n        warn(\"parseNestedOrder - reached MAX_NESTED_LEVELS.\");\n        return null;\n      }\n      const value = xref.fetchIfRef(ref);\n      if (!Array.isArray(value)) {\n        return null;\n      }\n      const nestedName = xref.fetchIfRef(value[0]);\n      if (typeof nestedName !== \"string\") {\n        return null;\n      }\n      const nestedOrder = parseOrder(value.slice(1), nestedLevels);\n      if (!nestedOrder || !nestedOrder.length) {\n        return null;\n      }\n      return { name: stringToPDFString(nestedName), order: nestedOrder };\n    }\n\n    const xref = this.xref,\n      parsedOrderRefs = new RefSet(),\n      MAX_NESTED_LEVELS = 10;\n\n    return {\n      name: isString(config.get(\"Name\"))\n        ? stringToPDFString(config.get(\"Name\"))\n        : null,\n      creator: isString(config.get(\"Creator\"))\n        ? stringToPDFString(config.get(\"Creator\"))\n        : null,\n      baseState: isName(config.get(\"BaseState\"))\n        ? config.get(\"BaseState\").name\n        : null,\n      on: parseOnOff(config.get(\"ON\")),\n      off: parseOnOff(config.get(\"OFF\")),\n      order: parseOrder(config.get(\"Order\")),\n      groups: null,\n    };\n  }\n\n  get numPages() {\n    const obj = this.toplevelPagesDict.get(\"Count\");\n    if (!Number.isInteger(obj)) {\n      throw new FormatError(\n        \"Page count in top-level pages dictionary is not an integer.\"\n      );\n    }\n    return shadow(this, \"numPages\", obj);\n  }\n\n  get destinations() {\n    const obj = this._readDests(),\n      dests = Object.create(null);\n    if (obj instanceof NameTree) {\n      const names = obj.getAll();\n      for (const name in names) {\n        dests[name] = fetchDestination(names[name]);\n      }\n    } else if (obj instanceof Dict) {\n      obj.forEach(function (key, value) {\n        if (value) {\n          dests[key] = fetchDestination(value);\n        }\n      });\n    }\n    return shadow(this, \"destinations\", dests);\n  }\n\n  getDestination(destinationId) {\n    const obj = this._readDests();\n    if (obj instanceof NameTree || obj instanceof Dict) {\n      return fetchDestination(obj.get(destinationId) || null);\n    }\n    return null;\n  }\n\n  /**\n   * @private\n   */\n  _readDests() {\n    const obj = this._catDict.get(\"Names\");\n    if (obj && obj.has(\"Dests\")) {\n      return new NameTree(obj.getRaw(\"Dests\"), this.xref);\n    } else if (this._catDict.has(\"Dests\")) {\n      // Simple destination dictionary.\n      return this._catDict.get(\"Dests\");\n    }\n    return undefined;\n  }\n\n  get pageLabels() {\n    let obj = null;\n    try {\n      obj = this._readPageLabels();\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(\"Unable to read page labels.\");\n    }\n    return shadow(this, \"pageLabels\", obj);\n  }\n\n  /**\n   * @private\n   */\n  _readPageLabels() {\n    const obj = this._catDict.getRaw(\"PageLabels\");\n    if (!obj) {\n      return null;\n    }\n\n    const pageLabels = new Array(this.numPages);\n    let style = null,\n      prefix = \"\";\n\n    const numberTree = new NumberTree(obj, this.xref);\n    const nums = numberTree.getAll();\n    let currentLabel = \"\",\n      currentIndex = 1;\n\n    for (let i = 0, ii = this.numPages; i < ii; i++) {\n      if (i in nums) {\n        const labelDict = nums[i];\n        if (!isDict(labelDict)) {\n          throw new FormatError(\"PageLabel is not a dictionary.\");\n        }\n\n        if (\n          labelDict.has(\"Type\") &&\n          !isName(labelDict.get(\"Type\"), \"PageLabel\")\n        ) {\n          throw new FormatError(\"Invalid type in PageLabel dictionary.\");\n        }\n\n        if (labelDict.has(\"S\")) {\n          const s = labelDict.get(\"S\");\n          if (!isName(s)) {\n            throw new FormatError(\"Invalid style in PageLabel dictionary.\");\n          }\n          style = s.name;\n        } else {\n          style = null;\n        }\n\n        if (labelDict.has(\"P\")) {\n          const p = labelDict.get(\"P\");\n          if (!isString(p)) {\n            throw new FormatError(\"Invalid prefix in PageLabel dictionary.\");\n          }\n          prefix = stringToPDFString(p);\n        } else {\n          prefix = \"\";\n        }\n\n        if (labelDict.has(\"St\")) {\n          const st = labelDict.get(\"St\");\n          if (!(Number.isInteger(st) && st >= 1)) {\n            throw new FormatError(\"Invalid start in PageLabel dictionary.\");\n          }\n          currentIndex = st;\n        } else {\n          currentIndex = 1;\n        }\n      }\n\n      switch (style) {\n        case \"D\":\n          currentLabel = currentIndex;\n          break;\n        case \"R\":\n        case \"r\":\n          currentLabel = toRomanNumerals(currentIndex, style === \"r\");\n          break;\n        case \"A\":\n        case \"a\":\n          const LIMIT = 26; // Use only the characters A-Z, or a-z.\n          const A_UPPER_CASE = 0x41,\n            A_LOWER_CASE = 0x61;\n\n          const baseCharCode = style === \"a\" ? A_LOWER_CASE : A_UPPER_CASE;\n          const letterIndex = currentIndex - 1;\n          const character = String.fromCharCode(\n            baseCharCode + (letterIndex % LIMIT)\n          );\n          const charBuf = [];\n          for (let j = 0, jj = (letterIndex / LIMIT) | 0; j <= jj; j++) {\n            charBuf.push(character);\n          }\n          currentLabel = charBuf.join(\"\");\n          break;\n        default:\n          if (style) {\n            throw new FormatError(\n              `Invalid style \"${style}\" in PageLabel dictionary.`\n            );\n          }\n          currentLabel = \"\";\n      }\n\n      pageLabels[i] = prefix + currentLabel;\n      currentIndex++;\n    }\n    return pageLabels;\n  }\n\n  get pageLayout() {\n    const obj = this._catDict.get(\"PageLayout\");\n    // Purposely use a non-standard default value, rather than 'SinglePage', to\n    // allow differentiating between `undefined` and /SinglePage since that does\n    // affect the Scroll mode (continuous/non-continuous) used in Adobe Reader.\n    let pageLayout = \"\";\n\n    if (isName(obj)) {\n      switch (obj.name) {\n        case \"SinglePage\":\n        case \"OneColumn\":\n        case \"TwoColumnLeft\":\n        case \"TwoColumnRight\":\n        case \"TwoPageLeft\":\n        case \"TwoPageRight\":\n          pageLayout = obj.name;\n      }\n    }\n    return shadow(this, \"pageLayout\", pageLayout);\n  }\n\n  get pageMode() {\n    const obj = this._catDict.get(\"PageMode\");\n    let pageMode = \"UseNone\"; // Default value.\n\n    if (isName(obj)) {\n      switch (obj.name) {\n        case \"UseNone\":\n        case \"UseOutlines\":\n        case \"UseThumbs\":\n        case \"FullScreen\":\n        case \"UseOC\":\n        case \"UseAttachments\":\n          pageMode = obj.name;\n      }\n    }\n    return shadow(this, \"pageMode\", pageMode);\n  }\n\n  get viewerPreferences() {\n    const ViewerPreferencesValidators = {\n      HideToolbar: isBool,\n      HideMenubar: isBool,\n      HideWindowUI: isBool,\n      FitWindow: isBool,\n      CenterWindow: isBool,\n      DisplayDocTitle: isBool,\n      NonFullScreenPageMode: isName,\n      Direction: isName,\n      ViewArea: isName,\n      ViewClip: isName,\n      PrintArea: isName,\n      PrintClip: isName,\n      PrintScaling: isName,\n      Duplex: isName,\n      PickTrayByPDFSize: isBool,\n      PrintPageRange: Array.isArray,\n      NumCopies: Number.isInteger,\n    };\n\n    const obj = this._catDict.get(\"ViewerPreferences\");\n    let prefs = null;\n\n    if (isDict(obj)) {\n      for (const key in ViewerPreferencesValidators) {\n        if (!obj.has(key)) {\n          continue;\n        }\n        const value = obj.get(key);\n        // Make sure the (standard) value conforms to the specification.\n        if (!ViewerPreferencesValidators[key](value)) {\n          info(`Bad value in ViewerPreferences for \"${key}\".`);\n          continue;\n        }\n        let prefValue;\n\n        switch (key) {\n          case \"NonFullScreenPageMode\":\n            switch (value.name) {\n              case \"UseNone\":\n              case \"UseOutlines\":\n              case \"UseThumbs\":\n              case \"UseOC\":\n                prefValue = value.name;\n                break;\n              default:\n                prefValue = \"UseNone\";\n            }\n            break;\n          case \"Direction\":\n            switch (value.name) {\n              case \"L2R\":\n              case \"R2L\":\n                prefValue = value.name;\n                break;\n              default:\n                prefValue = \"L2R\";\n            }\n            break;\n          case \"ViewArea\":\n          case \"ViewClip\":\n          case \"PrintArea\":\n          case \"PrintClip\":\n            switch (value.name) {\n              case \"MediaBox\":\n              case \"CropBox\":\n              case \"BleedBox\":\n              case \"TrimBox\":\n              case \"ArtBox\":\n                prefValue = value.name;\n                break;\n              default:\n                prefValue = \"CropBox\";\n            }\n            break;\n          case \"PrintScaling\":\n            switch (value.name) {\n              case \"None\":\n              case \"AppDefault\":\n                prefValue = value.name;\n                break;\n              default:\n                prefValue = \"AppDefault\";\n            }\n            break;\n          case \"Duplex\":\n            switch (value.name) {\n              case \"Simplex\":\n              case \"DuplexFlipShortEdge\":\n              case \"DuplexFlipLongEdge\":\n                prefValue = value.name;\n                break;\n              default:\n                prefValue = \"None\";\n            }\n            break;\n          case \"PrintPageRange\":\n            const length = value.length;\n            if (length % 2 !== 0) {\n              // The number of elements must be even.\n              break;\n            }\n            const isValid = value.every((page, i, arr) => {\n              return (\n                Number.isInteger(page) &&\n                page > 0 &&\n                (i === 0 || page >= arr[i - 1]) &&\n                page <= this.numPages\n              );\n            });\n            if (isValid) {\n              prefValue = value;\n            }\n            break;\n          case \"NumCopies\":\n            if (value > 0) {\n              prefValue = value;\n            }\n            break;\n          default:\n            if (typeof value !== \"boolean\") {\n              throw new FormatError(\n                `viewerPreferences - expected a boolean value for: ${key}`\n              );\n            }\n            prefValue = value;\n        }\n\n        if (prefValue !== undefined) {\n          if (!prefs) {\n            prefs = Object.create(null);\n          }\n          prefs[key] = prefValue;\n        } else {\n          info(`Bad value in ViewerPreferences for \"${key}\".`);\n        }\n      }\n    }\n    return shadow(this, \"viewerPreferences\", prefs);\n  }\n\n  /**\n   * NOTE: \"JavaScript\" actions are, for now, handled by `get javaScript` below.\n   */\n  get openAction() {\n    const obj = this._catDict.get(\"OpenAction\");\n    let openAction = null;\n\n    if (isDict(obj)) {\n      // Convert the OpenAction dictionary into a format that works with\n      // `parseDestDictionary`, to avoid having to re-implement those checks.\n      const destDict = new Dict(this.xref);\n      destDict.set(\"A\", obj);\n\n      const resultObj = { url: null, dest: null, action: null };\n      Catalog.parseDestDictionary({ destDict, resultObj });\n\n      if (Array.isArray(resultObj.dest)) {\n        if (!openAction) {\n          openAction = Object.create(null);\n        }\n        openAction.dest = resultObj.dest;\n      } else if (resultObj.action) {\n        if (!openAction) {\n          openAction = Object.create(null);\n        }\n        openAction.action = resultObj.action;\n      }\n    } else if (Array.isArray(obj)) {\n      if (!openAction) {\n        openAction = Object.create(null);\n      }\n      openAction.dest = obj;\n    }\n    return shadow(this, \"openAction\", openAction);\n  }\n\n  get attachments() {\n    const obj = this._catDict.get(\"Names\");\n    let attachments = null;\n\n    if (obj && obj.has(\"EmbeddedFiles\")) {\n      const nameTree = new NameTree(obj.getRaw(\"EmbeddedFiles\"), this.xref);\n      const names = nameTree.getAll();\n      for (const name in names) {\n        const fs = new FileSpec(names[name], this.xref);\n        if (!attachments) {\n          attachments = Object.create(null);\n        }\n        attachments[stringToPDFString(name)] = fs.serializable;\n      }\n    }\n    return shadow(this, \"attachments\", attachments);\n  }\n\n  get javaScript() {\n    const obj = this._catDict.get(\"Names\");\n\n    let javaScript = null;\n    function appendIfJavaScriptDict(jsDict) {\n      const type = jsDict.get(\"S\");\n      if (!isName(type, \"JavaScript\")) {\n        return;\n      }\n\n      let js = jsDict.get(\"JS\");\n      if (isStream(js)) {\n        js = bytesToString(js.getBytes());\n      } else if (!isString(js)) {\n        return;\n      }\n\n      if (!javaScript) {\n        javaScript = [];\n      }\n      javaScript.push(stringToPDFString(js));\n    }\n\n    if (obj && obj.has(\"JavaScript\")) {\n      const nameTree = new NameTree(obj.getRaw(\"JavaScript\"), this.xref);\n      const names = nameTree.getAll();\n      for (const name in names) {\n        // We don't use most JavaScript in PDF documents. This code is\n        // defensive so we don't cause errors on document load.\n        const jsDict = names[name];\n        if (isDict(jsDict)) {\n          appendIfJavaScriptDict(jsDict);\n        }\n      }\n    }\n\n    // Append OpenAction \"JavaScript\" actions to the JavaScript array.\n    const openAction = this._catDict.get(\"OpenAction\");\n    if (isDict(openAction) && isName(openAction.get(\"S\"), \"JavaScript\")) {\n      appendIfJavaScriptDict(openAction);\n    }\n\n    return shadow(this, \"javaScript\", javaScript);\n  }\n\n  fontFallback(id, handler) {\n    const promises = [];\n    this.fontCache.forEach(function (promise) {\n      promises.push(promise);\n    });\n\n    return Promise.all(promises).then(translatedFonts => {\n      for (const translatedFont of translatedFonts) {\n        if (translatedFont.loadedName === id) {\n          translatedFont.fallback(handler);\n          return;\n        }\n      }\n    });\n  }\n\n  cleanup(manuallyTriggered = false) {\n    clearPrimitiveCaches();\n    this.globalImageCache.clear(/* onlyData = */ manuallyTriggered);\n    this.pageKidsCountCache.clear();\n\n    const promises = [];\n    this.fontCache.forEach(function (promise) {\n      promises.push(promise);\n    });\n\n    return Promise.all(promises).then(translatedFonts => {\n      for (const { dict } of translatedFonts) {\n        delete dict.translated;\n      }\n      this.fontCache.clear();\n      this.builtInCMapCache.clear();\n    });\n  }\n\n  getPageDict(pageIndex) {\n    const capability = createPromiseCapability();\n    const nodesToVisit = [this._catDict.getRaw(\"Pages\")];\n    const visitedNodes = new RefSet();\n    const xref = this.xref,\n      pageKidsCountCache = this.pageKidsCountCache;\n    let count,\n      currentPageIndex = 0;\n\n    function next() {\n      while (nodesToVisit.length) {\n        const currentNode = nodesToVisit.pop();\n\n        if (isRef(currentNode)) {\n          count = pageKidsCountCache.get(currentNode);\n          // Skip nodes where the page can't be.\n          if (count > 0 && currentPageIndex + count < pageIndex) {\n            currentPageIndex += count;\n            continue;\n          }\n          // Prevent circular references in the /Pages tree.\n          if (visitedNodes.has(currentNode)) {\n            capability.reject(\n              new FormatError(\"Pages tree contains circular reference.\")\n            );\n            return;\n          }\n          visitedNodes.put(currentNode);\n\n          xref.fetchAsync(currentNode).then(function (obj) {\n            if (isDict(obj, \"Page\") || (isDict(obj) && !obj.has(\"Kids\"))) {\n              if (pageIndex === currentPageIndex) {\n                // Cache the Page reference, since it can *greatly* improve\n                // performance by reducing redundant lookups in long documents\n                // where all nodes are found at *one* level of the tree.\n                if (currentNode && !pageKidsCountCache.has(currentNode)) {\n                  pageKidsCountCache.put(currentNode, 1);\n                }\n                capability.resolve([obj, currentNode]);\n              } else {\n                currentPageIndex++;\n                next();\n              }\n              return;\n            }\n            nodesToVisit.push(obj);\n            next();\n          }, capability.reject);\n          return;\n        }\n\n        // Must be a child page dictionary.\n        if (!isDict(currentNode)) {\n          capability.reject(\n            new FormatError(\n              \"Page dictionary kid reference points to wrong type of object.\"\n            )\n          );\n          return;\n        }\n\n        count = currentNode.get(\"Count\");\n        if (Number.isInteger(count) && count >= 0) {\n          // Cache the Kids count, since it can reduce redundant lookups in\n          // documents where all nodes are found at *one* level of the tree.\n          const objId = currentNode.objId;\n          if (objId && !pageKidsCountCache.has(objId)) {\n            pageKidsCountCache.put(objId, count);\n          }\n          // Skip nodes where the page can't be.\n          if (currentPageIndex + count <= pageIndex) {\n            currentPageIndex += count;\n            continue;\n          }\n        }\n\n        const kids = currentNode.get(\"Kids\");\n        if (!Array.isArray(kids)) {\n          // Prevent errors in corrupt PDF documents that violate the\n          // specification by *inlining* Page dicts directly in the Kids\n          // array, rather than using indirect objects (fixes issue9540.pdf).\n          if (\n            isName(currentNode.get(\"Type\"), \"Page\") ||\n            (!currentNode.has(\"Type\") && currentNode.has(\"Contents\"))\n          ) {\n            if (currentPageIndex === pageIndex) {\n              capability.resolve([currentNode, null]);\n              return;\n            }\n            currentPageIndex++;\n            continue;\n          }\n\n          capability.reject(\n            new FormatError(\"Page dictionary kids object is not an array.\")\n          );\n          return;\n        }\n\n        // Always check all `Kids` nodes, to avoid getting stuck in an empty\n        // node further down in the tree (see issue5644.pdf, issue8088.pdf),\n        // and to ensure that we actually find the correct `Page` dict.\n        for (let last = kids.length - 1; last >= 0; last--) {\n          nodesToVisit.push(kids[last]);\n        }\n      }\n      capability.reject(new Error(`Page index ${pageIndex} not found.`));\n    }\n    next();\n    return capability.promise;\n  }\n\n  getPageIndex(pageRef) {\n    // The page tree nodes have the count of all the leaves below them. To get\n    // how many pages are before we just have to walk up the tree and keep\n    // adding the count of siblings to the left of the node.\n    const xref = this.xref;\n\n    function pagesBeforeRef(kidRef) {\n      let total = 0,\n        parentRef;\n\n      return xref\n        .fetchAsync(kidRef)\n        .then(function (node) {\n          if (\n            isRefsEqual(kidRef, pageRef) &&\n            !isDict(node, \"Page\") &&\n            !(isDict(node) && !node.has(\"Type\") && node.has(\"Contents\"))\n          ) {\n            throw new FormatError(\n              \"The reference does not point to a /Page dictionary.\"\n            );\n          }\n          if (!node) {\n            return null;\n          }\n          if (!isDict(node)) {\n            throw new FormatError(\"Node must be a dictionary.\");\n          }\n          parentRef = node.getRaw(\"Parent\");\n          return node.getAsync(\"Parent\");\n        })\n        .then(function (parent) {\n          if (!parent) {\n            return null;\n          }\n          if (!isDict(parent)) {\n            throw new FormatError(\"Parent must be a dictionary.\");\n          }\n          return parent.getAsync(\"Kids\");\n        })\n        .then(function (kids) {\n          if (!kids) {\n            return null;\n          }\n\n          const kidPromises = [];\n          let found = false;\n          for (let i = 0, ii = kids.length; i < ii; i++) {\n            const kid = kids[i];\n            if (!isRef(kid)) {\n              throw new FormatError(\"Kid must be a reference.\");\n            }\n            if (isRefsEqual(kid, kidRef)) {\n              found = true;\n              break;\n            }\n            kidPromises.push(\n              xref.fetchAsync(kid).then(function (obj) {\n                if (!isDict(obj)) {\n                  throw new FormatError(\"Kid node must be a dictionary.\");\n                }\n                if (obj.has(\"Count\")) {\n                  total += obj.get(\"Count\");\n                } else {\n                  // Page leaf node.\n                  total++;\n                }\n              })\n            );\n          }\n          if (!found) {\n            throw new FormatError(\"Kid reference not found in parent's kids.\");\n          }\n          return Promise.all(kidPromises).then(function () {\n            return [total, parentRef];\n          });\n        });\n    }\n\n    let total = 0;\n    function next(ref) {\n      return pagesBeforeRef(ref).then(function (args) {\n        if (!args) {\n          return total;\n        }\n        const [count, parentRef] = args;\n        total += count;\n        return next(parentRef);\n      });\n    }\n\n    return next(pageRef);\n  }\n\n  /**\n   * @typedef ParseDestDictionaryParameters\n   * @property {Dict} destDict - The dictionary containing the destination.\n   * @property {Object} resultObj - The object where the parsed destination\n   *   properties will be placed.\n   * @property {string} [docBaseUrl] - The document base URL that is used when\n   *   attempting to recover valid absolute URLs from relative ones.\n   */\n\n  /**\n   * Helper function used to parse the contents of destination dictionaries.\n   * @param {ParseDestDictionaryParameters} params\n   */\n  static parseDestDictionary(params) {\n    // Lets URLs beginning with 'www.' default to using the 'http://' protocol.\n    function addDefaultProtocolToUrl(url) {\n      return url.startsWith(\"www.\") ? `http://${url}` : url;\n    }\n\n    // According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded\n    // in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see Bugzilla 1122280.\n    function tryConvertUrlEncoding(url) {\n      try {\n        return stringToUTF8String(url);\n      } catch (e) {\n        return url;\n      }\n    }\n\n    const destDict = params.destDict;\n    if (!isDict(destDict)) {\n      warn(\"parseDestDictionary: `destDict` must be a dictionary.\");\n      return;\n    }\n    const resultObj = params.resultObj;\n    if (typeof resultObj !== \"object\") {\n      warn(\"parseDestDictionary: `resultObj` must be an object.\");\n      return;\n    }\n    const docBaseUrl = params.docBaseUrl || null;\n\n    let action = destDict.get(\"A\"),\n      url,\n      dest;\n    if (!isDict(action) && destDict.has(\"Dest\")) {\n      // A /Dest entry should *only* contain a Name or an Array, but some bad\n      // PDF generators ignore that and treat it as an /A entry.\n      action = destDict.get(\"Dest\");\n    }\n\n    if (isDict(action)) {\n      const actionType = action.get(\"S\");\n      if (!isName(actionType)) {\n        warn(\"parseDestDictionary: Invalid type in Action dictionary.\");\n        return;\n      }\n      const actionName = actionType.name;\n\n      switch (actionName) {\n        case \"URI\":\n          url = action.get(\"URI\");\n          if (isName(url)) {\n            // Some bad PDFs do not put parentheses around relative URLs.\n            url = \"/\" + url.name;\n          } else if (isString(url)) {\n            url = addDefaultProtocolToUrl(url);\n          }\n          // TODO: pdf spec mentions urls can be relative to a Base\n          // entry in the dictionary.\n          break;\n\n        case \"GoTo\":\n          dest = action.get(\"D\");\n          break;\n\n        case \"Launch\":\n        // We neither want, nor can, support arbitrary 'Launch' actions.\n        // However, in practice they are mostly used for linking to other PDF\n        // files, which we thus attempt to support (utilizing `docBaseUrl`).\n        /* falls through */\n\n        case \"GoToR\":\n          const urlDict = action.get(\"F\");\n          if (isDict(urlDict)) {\n            // We assume that we found a FileSpec dictionary\n            // and fetch the URL without checking any further.\n            url = urlDict.get(\"F\") || null;\n          } else if (isString(urlDict)) {\n            url = urlDict;\n          }\n\n          // NOTE: the destination is relative to the *remote* document.\n          let remoteDest = action.get(\"D\");\n          if (remoteDest) {\n            if (isName(remoteDest)) {\n              remoteDest = remoteDest.name;\n            }\n            if (isString(url)) {\n              const baseUrl = url.split(\"#\")[0];\n              if (isString(remoteDest)) {\n                url = baseUrl + \"#\" + remoteDest;\n              } else if (Array.isArray(remoteDest)) {\n                url = baseUrl + \"#\" + JSON.stringify(remoteDest);\n              }\n            }\n          }\n          // The 'NewWindow' property, equal to `LinkTarget.BLANK`.\n          const newWindow = action.get(\"NewWindow\");\n          if (isBool(newWindow)) {\n            resultObj.newWindow = newWindow;\n          }\n          break;\n\n        case \"Named\":\n          const namedAction = action.get(\"N\");\n          if (isName(namedAction)) {\n            resultObj.action = namedAction.name;\n          }\n          break;\n\n        case \"JavaScript\":\n          const jsAction = action.get(\"JS\");\n          let js;\n\n          if (isStream(jsAction)) {\n            js = bytesToString(jsAction.getBytes());\n          } else if (isString(jsAction)) {\n            js = jsAction;\n          }\n\n          if (js) {\n            // Attempt to recover valid URLs from `JS` entries with certain\n            // white-listed formats:\n            //  - window.open('http://example.com')\n            //  - app.launchURL('http://example.com', true)\n            const URL_OPEN_METHODS = [\"app.launchURL\", \"window.open\"];\n            const regex = new RegExp(\n              \"^\\\\s*(\" +\n                URL_OPEN_METHODS.join(\"|\").split(\".\").join(\"\\\\.\") +\n                \")\\\\((?:'|\\\")([^'\\\"]*)(?:'|\\\")(?:,\\\\s*(\\\\w+)\\\\)|\\\\))\",\n              \"i\"\n            );\n\n            const jsUrl = regex.exec(stringToPDFString(js));\n            if (jsUrl && jsUrl[2]) {\n              url = jsUrl[2];\n\n              if (jsUrl[3] === \"true\" && jsUrl[1] === \"app.launchURL\") {\n                resultObj.newWindow = true;\n              }\n              break;\n            }\n          }\n        /* falls through */\n        default:\n          warn(`parseDestDictionary: unsupported action type \"${actionName}\".`);\n          break;\n      }\n    } else if (destDict.has(\"Dest\")) {\n      // Simple destination.\n      dest = destDict.get(\"Dest\");\n    }\n\n    if (isString(url)) {\n      url = tryConvertUrlEncoding(url);\n      const absoluteUrl = createValidAbsoluteUrl(url, docBaseUrl);\n      if (absoluteUrl) {\n        resultObj.url = absoluteUrl.href;\n      }\n      resultObj.unsafeUrl = url;\n    }\n    if (dest) {\n      if (isName(dest)) {\n        dest = dest.name;\n      }\n      if (isString(dest) || Array.isArray(dest)) {\n        resultObj.dest = dest;\n      }\n    }\n  }\n}\n\nvar XRef = (function XRefClosure() {\n  // eslint-disable-next-line no-shadow\n  function XRef(stream, pdfManager) {\n    this.stream = stream;\n    this.pdfManager = pdfManager;\n    this.entries = [];\n    this.xrefstms = Object.create(null);\n    this._cacheMap = new Map(); // Prepare the XRef cache.\n    this.stats = {\n      streamTypes: Object.create(null),\n      fontTypes: Object.create(null),\n    };\n    this._newRefNum = null;\n  }\n\n  XRef.prototype = {\n    getNewRef: function XRef_getNewRef() {\n      if (this._newRefNum === null) {\n        this._newRefNum = this.entries.length;\n      }\n      return Ref.get(this._newRefNum++, 0);\n    },\n\n    resetNewRef: function XRef_resetNewRef() {\n      this._newRefNum = null;\n    },\n\n    setStartXRef: function XRef_setStartXRef(startXRef) {\n      // Store the starting positions of xref tables as we process them\n      // so we can recover from missing data errors\n      this.startXRefQueue = [startXRef];\n    },\n\n    parse: function XRef_parse(recoveryMode) {\n      var trailerDict;\n      if (!recoveryMode) {\n        trailerDict = this.readXRef();\n      } else {\n        warn(\"Indexing all PDF objects\");\n        trailerDict = this.indexObjects();\n      }\n      trailerDict.assignXref(this);\n      this.trailer = trailerDict;\n\n      let encrypt;\n      try {\n        encrypt = trailerDict.get(\"Encrypt\");\n      } catch (ex) {\n        if (ex instanceof MissingDataException) {\n          throw ex;\n        }\n        warn(`XRef.parse - Invalid \"Encrypt\" reference: \"${ex}\".`);\n      }\n      if (isDict(encrypt)) {\n        var ids = trailerDict.get(\"ID\");\n        var fileId = ids && ids.length ? ids[0] : \"\";\n        // The 'Encrypt' dictionary itself should not be encrypted, and by\n        // setting `suppressEncryption` we can prevent an infinite loop inside\n        // of `XRef_fetchUncompressed` if the dictionary contains indirect\n        // objects (fixes issue7665.pdf).\n        encrypt.suppressEncryption = true;\n        this.encrypt = new CipherTransformFactory(\n          encrypt,\n          fileId,\n          this.pdfManager.password\n        );\n      }\n\n      // Get the root dictionary (catalog) object, and do some basic validation.\n      let root;\n      try {\n        root = trailerDict.get(\"Root\");\n      } catch (ex) {\n        if (ex instanceof MissingDataException) {\n          throw ex;\n        }\n        warn(`XRef.parse - Invalid \"Root\" reference: \"${ex}\".`);\n      }\n      if (isDict(root) && root.has(\"Pages\")) {\n        this.root = root;\n      } else {\n        if (!recoveryMode) {\n          throw new XRefParseException();\n        }\n        throw new FormatError(\"Invalid root reference\");\n      }\n    },\n\n    processXRefTable: function XRef_processXRefTable(parser) {\n      if (!(\"tableState\" in this)) {\n        // Stores state of the table as we process it so we can resume\n        // from middle of table in case of missing data error\n        this.tableState = {\n          entryNum: 0,\n          streamPos: parser.lexer.stream.pos,\n          parserBuf1: parser.buf1,\n          parserBuf2: parser.buf2,\n        };\n      }\n\n      var obj = this.readXRefTable(parser);\n\n      // Sanity check\n      if (!isCmd(obj, \"trailer\")) {\n        throw new FormatError(\n          \"Invalid XRef table: could not find trailer dictionary\"\n        );\n      }\n      // Read trailer dictionary, e.g.\n      // trailer\n      //    << /Size 22\n      //      /Root 20R\n      //      /Info 10R\n      //      /ID [ <81b14aafa313db63dbd6f981e49f94f4> ]\n      //    >>\n      // The parser goes through the entire stream << ... >> and provides\n      // a getter interface for the key-value table\n      var dict = parser.getObj();\n\n      // The pdflib PDF generator can generate a nested trailer dictionary\n      if (!isDict(dict) && dict.dict) {\n        dict = dict.dict;\n      }\n      if (!isDict(dict)) {\n        throw new FormatError(\n          \"Invalid XRef table: could not parse trailer dictionary\"\n        );\n      }\n      delete this.tableState;\n\n      return dict;\n    },\n\n    readXRefTable: function XRef_readXRefTable(parser) {\n      // Example of cross-reference table:\n      // xref\n      // 0 1                    <-- subsection header (first obj #, obj count)\n      // 0000000000 65535 f     <-- actual object (offset, generation #, f/n)\n      // 23 2                   <-- subsection header ... and so on ...\n      // 0000025518 00002 n\n      // 0000025635 00000 n\n      // trailer\n      // ...\n\n      var stream = parser.lexer.stream;\n      var tableState = this.tableState;\n      stream.pos = tableState.streamPos;\n      parser.buf1 = tableState.parserBuf1;\n      parser.buf2 = tableState.parserBuf2;\n\n      // Outer loop is over subsection headers\n      var obj;\n\n      while (true) {\n        if (!(\"firstEntryNum\" in tableState) || !(\"entryCount\" in tableState)) {\n          if (isCmd((obj = parser.getObj()), \"trailer\")) {\n            break;\n          }\n          tableState.firstEntryNum = obj;\n          tableState.entryCount = parser.getObj();\n        }\n\n        var first = tableState.firstEntryNum;\n        var count = tableState.entryCount;\n        if (!Number.isInteger(first) || !Number.isInteger(count)) {\n          throw new FormatError(\n            \"Invalid XRef table: wrong types in subsection header\"\n          );\n        }\n        // Inner loop is over objects themselves\n        for (var i = tableState.entryNum; i < count; i++) {\n          tableState.streamPos = stream.pos;\n          tableState.entryNum = i;\n          tableState.parserBuf1 = parser.buf1;\n          tableState.parserBuf2 = parser.buf2;\n\n          var entry = {};\n          entry.offset = parser.getObj();\n          entry.gen = parser.getObj();\n          var type = parser.getObj();\n\n          if (type instanceof Cmd) {\n            switch (type.cmd) {\n              case \"f\":\n                entry.free = true;\n                break;\n              case \"n\":\n                entry.uncompressed = true;\n                break;\n            }\n          }\n\n          // Validate entry obj\n          if (\n            !Number.isInteger(entry.offset) ||\n            !Number.isInteger(entry.gen) ||\n            !(entry.free || entry.uncompressed)\n          ) {\n            throw new FormatError(\n              `Invalid entry in XRef subsection: ${first}, ${count}`\n            );\n          }\n\n          // The first xref table entry, i.e. obj 0, should be free. Attempting\n          // to adjust an incorrect first obj # (fixes issue 3248 and 7229).\n          if (i === 0 && entry.free && first === 1) {\n            first = 0;\n          }\n\n          if (!this.entries[i + first]) {\n            this.entries[i + first] = entry;\n          }\n        }\n\n        tableState.entryNum = 0;\n        tableState.streamPos = stream.pos;\n        tableState.parserBuf1 = parser.buf1;\n        tableState.parserBuf2 = parser.buf2;\n        delete tableState.firstEntryNum;\n        delete tableState.entryCount;\n      }\n\n      // Sanity check: as per spec, first object must be free\n      if (this.entries[0] && !this.entries[0].free) {\n        throw new FormatError(\"Invalid XRef table: unexpected first object\");\n      }\n      return obj;\n    },\n\n    processXRefStream: function XRef_processXRefStream(stream) {\n      if (!(\"streamState\" in this)) {\n        // Stores state of the stream as we process it so we can resume\n        // from middle of stream in case of missing data error\n        var streamParameters = stream.dict;\n        var byteWidths = streamParameters.get(\"W\");\n        var range = streamParameters.get(\"Index\");\n        if (!range) {\n          range = [0, streamParameters.get(\"Size\")];\n        }\n\n        this.streamState = {\n          entryRanges: range,\n          byteWidths,\n          entryNum: 0,\n          streamPos: stream.pos,\n        };\n      }\n      this.readXRefStream(stream);\n      delete this.streamState;\n\n      return stream.dict;\n    },\n\n    readXRefStream: function XRef_readXRefStream(stream) {\n      var i, j;\n      var streamState = this.streamState;\n      stream.pos = streamState.streamPos;\n\n      var byteWidths = streamState.byteWidths;\n      var typeFieldWidth = byteWidths[0];\n      var offsetFieldWidth = byteWidths[1];\n      var generationFieldWidth = byteWidths[2];\n\n      var entryRanges = streamState.entryRanges;\n      while (entryRanges.length > 0) {\n        var first = entryRanges[0];\n        var n = entryRanges[1];\n\n        if (!Number.isInteger(first) || !Number.isInteger(n)) {\n          throw new FormatError(`Invalid XRef range fields: ${first}, ${n}`);\n        }\n        if (\n          !Number.isInteger(typeFieldWidth) ||\n          !Number.isInteger(offsetFieldWidth) ||\n          !Number.isInteger(generationFieldWidth)\n        ) {\n          throw new FormatError(\n            `Invalid XRef entry fields length: ${first}, ${n}`\n          );\n        }\n        for (i = streamState.entryNum; i < n; ++i) {\n          streamState.entryNum = i;\n          streamState.streamPos = stream.pos;\n\n          var type = 0,\n            offset = 0,\n            generation = 0;\n          for (j = 0; j < typeFieldWidth; ++j) {\n            type = (type << 8) | stream.getByte();\n          }\n          // if type field is absent, its default value is 1\n          if (typeFieldWidth === 0) {\n            type = 1;\n          }\n          for (j = 0; j < offsetFieldWidth; ++j) {\n            offset = (offset << 8) | stream.getByte();\n          }\n          for (j = 0; j < generationFieldWidth; ++j) {\n            generation = (generation << 8) | stream.getByte();\n          }\n          var entry = {};\n          entry.offset = offset;\n          entry.gen = generation;\n          switch (type) {\n            case 0:\n              entry.free = true;\n              break;\n            case 1:\n              entry.uncompressed = true;\n              break;\n            case 2:\n              break;\n            default:\n              throw new FormatError(`Invalid XRef entry type: ${type}`);\n          }\n          if (!this.entries[first + i]) {\n            this.entries[first + i] = entry;\n          }\n        }\n\n        streamState.entryNum = 0;\n        streamState.streamPos = stream.pos;\n        entryRanges.splice(0, 2);\n      }\n    },\n\n    indexObjects: function XRef_indexObjects() {\n      // Simple scan through the PDF content to find objects,\n      // trailers and XRef streams.\n      var TAB = 0x9,\n        LF = 0xa,\n        CR = 0xd,\n        SPACE = 0x20;\n      var PERCENT = 0x25,\n        LT = 0x3c;\n\n      function readToken(data, offset) {\n        var token = \"\",\n          ch = data[offset];\n        while (ch !== LF && ch !== CR && ch !== LT) {\n          if (++offset >= data.length) {\n            break;\n          }\n          token += String.fromCharCode(ch);\n          ch = data[offset];\n        }\n        return token;\n      }\n      function skipUntil(data, offset, what) {\n        var length = what.length,\n          dataLength = data.length;\n        var skipped = 0;\n        // finding byte sequence\n        while (offset < dataLength) {\n          var i = 0;\n          while (i < length && data[offset + i] === what[i]) {\n            ++i;\n          }\n          if (i >= length) {\n            break; // sequence found\n          }\n          offset++;\n          skipped++;\n        }\n        return skipped;\n      }\n      var objRegExp = /^(\\d+)\\s+(\\d+)\\s+obj\\b/;\n      const endobjRegExp = /\\bendobj[\\b\\s]$/;\n      const nestedObjRegExp = /\\s+(\\d+\\s+\\d+\\s+obj[\\b\\s<])$/;\n      const CHECK_CONTENT_LENGTH = 25;\n\n      var trailerBytes = new Uint8Array([116, 114, 97, 105, 108, 101, 114]);\n      // prettier-ignore\n      var startxrefBytes = new Uint8Array([115, 116, 97, 114, 116, 120, 114,\n                                           101, 102]);\n      const objBytes = new Uint8Array([111, 98, 106]);\n      var xrefBytes = new Uint8Array([47, 88, 82, 101, 102]);\n\n      // Clear out any existing entries, since they may be bogus.\n      this.entries.length = 0;\n\n      var stream = this.stream;\n      stream.pos = 0;\n      var buffer = stream.getBytes();\n      var position = stream.start,\n        length = buffer.length;\n      var trailers = [],\n        xrefStms = [];\n      while (position < length) {\n        var ch = buffer[position];\n        if (ch === TAB || ch === LF || ch === CR || ch === SPACE) {\n          ++position;\n          continue;\n        }\n        if (ch === PERCENT) {\n          // %-comment\n          do {\n            ++position;\n            if (position >= length) {\n              break;\n            }\n            ch = buffer[position];\n          } while (ch !== LF && ch !== CR);\n          continue;\n        }\n        var token = readToken(buffer, position);\n        var m;\n        if (\n          token.startsWith(\"xref\") &&\n          (token.length === 4 || /\\s/.test(token[4]))\n        ) {\n          position += skipUntil(buffer, position, trailerBytes);\n          trailers.push(position);\n          position += skipUntil(buffer, position, startxrefBytes);\n        } else if ((m = objRegExp.exec(token))) {\n          const num = m[1] | 0,\n            gen = m[2] | 0;\n          if (!this.entries[num] || this.entries[num].gen === gen) {\n            this.entries[num] = {\n              offset: position - stream.start,\n              gen,\n              uncompressed: true,\n            };\n          }\n          let contentLength,\n            startPos = position + token.length;\n\n          // Find the next \"obj\" string, rather than \"endobj\", to ensure that\n          // we won't skip over a new 'obj' operator in corrupt files where\n          // 'endobj' operators are missing (fixes issue9105_reduced.pdf).\n          while (startPos < buffer.length) {\n            const endPos = startPos + skipUntil(buffer, startPos, objBytes) + 4;\n            contentLength = endPos - position;\n\n            const checkPos = Math.max(endPos - CHECK_CONTENT_LENGTH, startPos);\n            const tokenStr = bytesToString(buffer.subarray(checkPos, endPos));\n\n            // Check if the current object ends with an 'endobj' operator.\n            if (endobjRegExp.test(tokenStr)) {\n              break;\n            } else {\n              // Check if an \"obj\" occurrence is actually a new object,\n              // i.e. the current object is missing the 'endobj' operator.\n              const objToken = nestedObjRegExp.exec(tokenStr);\n\n              if (objToken && objToken[1]) {\n                warn(\n                  'indexObjects: Found new \"obj\" inside of another \"obj\", ' +\n                    'caused by missing \"endobj\" -- trying to recover.'\n                );\n                contentLength -= objToken[1].length;\n                break;\n              }\n            }\n            startPos = endPos;\n          }\n          const content = buffer.subarray(position, position + contentLength);\n\n          // checking XRef stream suspect\n          // (it shall have '/XRef' and next char is not a letter)\n          var xrefTagOffset = skipUntil(content, 0, xrefBytes);\n          if (\n            xrefTagOffset < contentLength &&\n            content[xrefTagOffset + 5] < 64\n          ) {\n            xrefStms.push(position - stream.start);\n            this.xrefstms[position - stream.start] = 1; // Avoid recursion\n          }\n\n          position += contentLength;\n        } else if (\n          token.startsWith(\"trailer\") &&\n          (token.length === 7 || /\\s/.test(token[7]))\n        ) {\n          trailers.push(position);\n          position += skipUntil(buffer, position, startxrefBytes);\n        } else {\n          position += token.length + 1;\n        }\n      }\n      // reading XRef streams\n      var i, ii;\n      for (i = 0, ii = xrefStms.length; i < ii; ++i) {\n        this.startXRefQueue.push(xrefStms[i]);\n        this.readXRef(/* recoveryMode */ true);\n      }\n      // finding main trailer\n      let trailerDict;\n      for (i = 0, ii = trailers.length; i < ii; ++i) {\n        stream.pos = trailers[i];\n        const parser = new Parser({\n          lexer: new Lexer(stream),\n          xref: this,\n          allowStreams: true,\n          recoveryMode: true,\n        });\n        var obj = parser.getObj();\n        if (!isCmd(obj, \"trailer\")) {\n          continue;\n        }\n        // read the trailer dictionary\n        const dict = parser.getObj();\n        if (!isDict(dict)) {\n          continue;\n        }\n        // Do some basic validation of the trailer/root dictionary candidate.\n        let rootDict;\n        try {\n          rootDict = dict.get(\"Root\");\n        } catch (ex) {\n          if (ex instanceof MissingDataException) {\n            throw ex;\n          }\n          continue;\n        }\n        if (!isDict(rootDict) || !rootDict.has(\"Pages\")) {\n          continue;\n        }\n        // taking the first one with 'ID'\n        if (dict.has(\"ID\")) {\n          return dict;\n        }\n        // The current dictionary is a candidate, but continue searching.\n        trailerDict = dict;\n      }\n      // No trailer with 'ID', taking last one (if exists).\n      if (trailerDict) {\n        return trailerDict;\n      }\n      // nothing helps\n      throw new InvalidPDFException(\"Invalid PDF structure.\");\n    },\n\n    readXRef: function XRef_readXRef(recoveryMode) {\n      var stream = this.stream;\n      // Keep track of already parsed XRef tables, to prevent an infinite loop\n      // when parsing corrupt PDF files where e.g. the /Prev entries create a\n      // circular dependency between tables (fixes bug1393476.pdf).\n      const startXRefParsedCache = Object.create(null);\n\n      try {\n        while (this.startXRefQueue.length) {\n          var startXRef = this.startXRefQueue[0];\n\n          if (startXRefParsedCache[startXRef]) {\n            warn(\"readXRef - skipping XRef table since it was already parsed.\");\n            this.startXRefQueue.shift();\n            continue;\n          }\n          startXRefParsedCache[startXRef] = true;\n\n          stream.pos = startXRef + stream.start;\n\n          const parser = new Parser({\n            lexer: new Lexer(stream),\n            xref: this,\n            allowStreams: true,\n          });\n          var obj = parser.getObj();\n          var dict;\n\n          // Get dictionary\n          if (isCmd(obj, \"xref\")) {\n            // Parse end-of-file XRef\n            dict = this.processXRefTable(parser);\n            if (!this.topDict) {\n              this.topDict = dict;\n            }\n\n            // Recursively get other XRefs 'XRefStm', if any\n            obj = dict.get(\"XRefStm\");\n            if (Number.isInteger(obj)) {\n              var pos = obj;\n              // ignore previously loaded xref streams\n              // (possible infinite recursion)\n              if (!(pos in this.xrefstms)) {\n                this.xrefstms[pos] = 1;\n                this.startXRefQueue.push(pos);\n              }\n            }\n          } else if (Number.isInteger(obj)) {\n            // Parse in-stream XRef\n            if (\n              !Number.isInteger(parser.getObj()) ||\n              !isCmd(parser.getObj(), \"obj\") ||\n              !isStream((obj = parser.getObj()))\n            ) {\n              throw new FormatError(\"Invalid XRef stream\");\n            }\n            dict = this.processXRefStream(obj);\n            if (!this.topDict) {\n              this.topDict = dict;\n            }\n            if (!dict) {\n              throw new FormatError(\"Failed to read XRef stream\");\n            }\n          } else {\n            throw new FormatError(\"Invalid XRef stream header\");\n          }\n\n          // Recursively get previous dictionary, if any\n          obj = dict.get(\"Prev\");\n          if (Number.isInteger(obj)) {\n            this.startXRefQueue.push(obj);\n          } else if (isRef(obj)) {\n            // The spec says Prev must not be a reference, i.e. \"/Prev NNN\"\n            // This is a fallback for non-compliant PDFs, i.e. \"/Prev NNN 0 R\"\n            this.startXRefQueue.push(obj.num);\n          }\n\n          this.startXRefQueue.shift();\n        }\n\n        return this.topDict;\n      } catch (e) {\n        if (e instanceof MissingDataException) {\n          throw e;\n        }\n        info(\"(while reading XRef): \" + e);\n      }\n\n      if (recoveryMode) {\n        return undefined;\n      }\n      throw new XRefParseException();\n    },\n\n    getEntry: function XRef_getEntry(i) {\n      var xrefEntry = this.entries[i];\n      if (xrefEntry && !xrefEntry.free && xrefEntry.offset) {\n        return xrefEntry;\n      }\n      return null;\n    },\n\n    fetchIfRef: function XRef_fetchIfRef(obj, suppressEncryption) {\n      if (obj instanceof Ref) {\n        return this.fetch(obj, suppressEncryption);\n      }\n      return obj;\n    },\n\n    fetch: function XRef_fetch(ref, suppressEncryption) {\n      if (!(ref instanceof Ref)) {\n        throw new Error(\"ref object is not a reference\");\n      }\n      const num = ref.num;\n\n      // The XRef cache is populated with objects which are obtained through\n      // `Parser.getObj`, and indirectly via `Lexer.getObj`. Neither of these\n      // methods should ever return `undefined` (note the `assert` calls below).\n      const cacheEntry = this._cacheMap.get(num);\n      if (cacheEntry !== undefined) {\n        // In documents with Object Streams, it's possible that cached `Dict`s\n        // have not been assigned an `objId` yet (see e.g. issue3115r.pdf).\n        if (cacheEntry instanceof Dict && !cacheEntry.objId) {\n          cacheEntry.objId = ref.toString();\n        }\n        return cacheEntry;\n      }\n      let xrefEntry = this.getEntry(num);\n\n      if (xrefEntry === null) {\n        // The referenced entry can be free.\n        this._cacheMap.set(num, xrefEntry);\n        return xrefEntry;\n      }\n\n      if (xrefEntry.uncompressed) {\n        xrefEntry = this.fetchUncompressed(ref, xrefEntry, suppressEncryption);\n      } else {\n        xrefEntry = this.fetchCompressed(ref, xrefEntry, suppressEncryption);\n      }\n      if (isDict(xrefEntry)) {\n        xrefEntry.objId = ref.toString();\n      } else if (isStream(xrefEntry)) {\n        xrefEntry.dict.objId = ref.toString();\n      }\n      return xrefEntry;\n    },\n\n    fetchUncompressed(ref, xrefEntry, suppressEncryption = false) {\n      var gen = ref.gen;\n      var num = ref.num;\n      if (xrefEntry.gen !== gen) {\n        throw new XRefEntryException(`Inconsistent generation in XRef: ${ref}`);\n      }\n      var stream = this.stream.makeSubStream(\n        xrefEntry.offset + this.stream.start\n      );\n      const parser = new Parser({\n        lexer: new Lexer(stream),\n        xref: this,\n        allowStreams: true,\n      });\n      var obj1 = parser.getObj();\n      var obj2 = parser.getObj();\n      var obj3 = parser.getObj();\n\n      if (obj1 !== num || obj2 !== gen || !(obj3 instanceof Cmd)) {\n        throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`);\n      }\n      if (obj3.cmd !== \"obj\") {\n        // some bad PDFs use \"obj1234\" and really mean 1234\n        if (obj3.cmd.startsWith(\"obj\")) {\n          num = parseInt(obj3.cmd.substring(3), 10);\n          if (!Number.isNaN(num)) {\n            return num;\n          }\n        }\n        throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`);\n      }\n      if (this.encrypt && !suppressEncryption) {\n        xrefEntry = parser.getObj(this.encrypt.createCipherTransform(num, gen));\n      } else {\n        xrefEntry = parser.getObj();\n      }\n      if (!isStream(xrefEntry)) {\n        if (\n          typeof PDFJSDev === \"undefined\" ||\n          PDFJSDev.test(\"!PRODUCTION || TESTING\")\n        ) {\n          assert(\n            xrefEntry !== undefined,\n            'fetchUncompressed: The \"xrefEntry\" cannot be undefined.'\n          );\n        }\n        this._cacheMap.set(num, xrefEntry);\n      }\n      return xrefEntry;\n    },\n\n    fetchCompressed(ref, xrefEntry, suppressEncryption = false) {\n      const tableOffset = xrefEntry.offset;\n      const stream = this.fetch(Ref.get(tableOffset, 0));\n      if (!isStream(stream)) {\n        throw new FormatError(\"bad ObjStm stream\");\n      }\n      const first = stream.dict.get(\"First\");\n      const n = stream.dict.get(\"N\");\n      if (!Number.isInteger(first) || !Number.isInteger(n)) {\n        throw new FormatError(\n          \"invalid first and n parameters for ObjStm stream\"\n        );\n      }\n      const parser = new Parser({\n        lexer: new Lexer(stream),\n        xref: this,\n        allowStreams: true,\n      });\n      const nums = new Array(n);\n      // read the object numbers to populate cache\n      for (let i = 0; i < n; ++i) {\n        const num = parser.getObj();\n        if (!Number.isInteger(num)) {\n          throw new FormatError(\n            `invalid object number in the ObjStm stream: ${num}`\n          );\n        }\n        const offset = parser.getObj();\n        if (!Number.isInteger(offset)) {\n          throw new FormatError(\n            `invalid object offset in the ObjStm stream: ${offset}`\n          );\n        }\n        nums[i] = num;\n      }\n      const entries = new Array(n);\n      // read stream objects for cache\n      for (let i = 0; i < n; ++i) {\n        const obj = parser.getObj();\n        entries[i] = obj;\n        // The ObjStm should not contain 'endobj'. If it's present, skip over it\n        // to support corrupt PDFs (fixes issue 5241, bug 898610, bug 1037816).\n        if (parser.buf1 instanceof Cmd && parser.buf1.cmd === \"endobj\") {\n          parser.shift();\n        }\n        if (isStream(obj)) {\n          continue;\n        }\n        const num = nums[i],\n          entry = this.entries[num];\n        if (entry && entry.offset === tableOffset && entry.gen === i) {\n          if (\n            typeof PDFJSDev === \"undefined\" ||\n            PDFJSDev.test(\"!PRODUCTION || TESTING\")\n          ) {\n            assert(\n              obj !== undefined,\n              'fetchCompressed: The \"obj\" cannot be undefined.'\n            );\n          }\n          this._cacheMap.set(num, obj);\n        }\n      }\n      xrefEntry = entries[xrefEntry.gen];\n      if (xrefEntry === undefined) {\n        throw new XRefEntryException(`Bad (compressed) XRef entry: ${ref}`);\n      }\n      return xrefEntry;\n    },\n\n    async fetchIfRefAsync(obj, suppressEncryption) {\n      if (obj instanceof Ref) {\n        return this.fetchAsync(obj, suppressEncryption);\n      }\n      return obj;\n    },\n\n    async fetchAsync(ref, suppressEncryption) {\n      try {\n        return this.fetch(ref, suppressEncryption);\n      } catch (ex) {\n        if (!(ex instanceof MissingDataException)) {\n          throw ex;\n        }\n        await this.pdfManager.requestRange(ex.begin, ex.end);\n        return this.fetchAsync(ref, suppressEncryption);\n      }\n    },\n\n    getCatalogObj: function XRef_getCatalogObj() {\n      return this.root;\n    },\n  };\n\n  return XRef;\n})();\n\n/**\n * A NameTree/NumberTree is like a Dict but has some advantageous properties,\n * see the specification (7.9.6 and 7.9.7) for additional details.\n * TODO: implement all the Dict functions and make this more efficient.\n */\nclass NameOrNumberTree {\n  constructor(root, xref, type) {\n    if (this.constructor === NameOrNumberTree) {\n      unreachable(\"Cannot initialize NameOrNumberTree.\");\n    }\n    this.root = root;\n    this.xref = xref;\n    this._type = type;\n  }\n\n  getAll() {\n    const dict = Object.create(null);\n    if (!this.root) {\n      return dict;\n    }\n    const xref = this.xref;\n    // Reading Name/Number tree.\n    const processed = new RefSet();\n    processed.put(this.root);\n    const queue = [this.root];\n    while (queue.length > 0) {\n      const obj = xref.fetchIfRef(queue.shift());\n      if (!isDict(obj)) {\n        continue;\n      }\n      if (obj.has(\"Kids\")) {\n        const kids = obj.get(\"Kids\");\n        for (let i = 0, ii = kids.length; i < ii; i++) {\n          const kid = kids[i];\n          if (processed.has(kid)) {\n            throw new FormatError(`Duplicate entry in \"${this._type}\" tree.`);\n          }\n          queue.push(kid);\n          processed.put(kid);\n        }\n        continue;\n      }\n      const entries = obj.get(this._type);\n      if (Array.isArray(entries)) {\n        for (let i = 0, ii = entries.length; i < ii; i += 2) {\n          dict[xref.fetchIfRef(entries[i])] = xref.fetchIfRef(entries[i + 1]);\n        }\n      }\n    }\n    return dict;\n  }\n\n  get(key) {\n    if (!this.root) {\n      return null;\n    }\n    const xref = this.xref;\n    let kidsOrEntries = xref.fetchIfRef(this.root);\n    let loopCount = 0;\n    const MAX_LEVELS = 10;\n\n    // Perform a binary search to quickly find the entry that\n    // contains the key we are looking for.\n    while (kidsOrEntries.has(\"Kids\")) {\n      if (++loopCount > MAX_LEVELS) {\n        warn(`Search depth limit reached for \"${this._type}\" tree.`);\n        return null;\n      }\n\n      const kids = kidsOrEntries.get(\"Kids\");\n      if (!Array.isArray(kids)) {\n        return null;\n      }\n\n      let l = 0,\n        r = kids.length - 1;\n      while (l <= r) {\n        const m = (l + r) >> 1;\n        const kid = xref.fetchIfRef(kids[m]);\n        const limits = kid.get(\"Limits\");\n\n        if (key < xref.fetchIfRef(limits[0])) {\n          r = m - 1;\n        } else if (key > xref.fetchIfRef(limits[1])) {\n          l = m + 1;\n        } else {\n          kidsOrEntries = xref.fetchIfRef(kids[m]);\n          break;\n        }\n      }\n      if (l > r) {\n        return null;\n      }\n    }\n\n    // If we get here, then we have found the right entry. Now go through the\n    // entries in the dictionary until we find the key we're looking for.\n    const entries = kidsOrEntries.get(this._type);\n    if (Array.isArray(entries)) {\n      // Perform a binary search to reduce the lookup time.\n      let l = 0,\n        r = entries.length - 2;\n      while (l <= r) {\n        // Check only even indices (0, 2, 4, ...) because the\n        // odd indices contain the actual data.\n        const tmp = (l + r) >> 1,\n          m = tmp + (tmp & 1);\n        const currentKey = xref.fetchIfRef(entries[m]);\n        if (key < currentKey) {\n          r = m - 2;\n        } else if (key > currentKey) {\n          l = m + 2;\n        } else {\n          return xref.fetchIfRef(entries[m + 1]);\n        }\n      }\n\n      // Fallback to an exhaustive search, in an attempt to handle corrupt\n      // PDF files where keys are not correctly ordered (fixes issue 10272).\n      info(\n        `Falling back to an exhaustive search, for key \"${key}\", ` +\n          `in \"${this._type}\" tree.`\n      );\n      for (let m = 0, mm = entries.length; m < mm; m += 2) {\n        const currentKey = xref.fetchIfRef(entries[m]);\n        if (currentKey === key) {\n          warn(\n            `The \"${key}\" key was found at an incorrect, ` +\n              `i.e. out-of-order, position in \"${this._type}\" tree.`\n          );\n          return xref.fetchIfRef(entries[m + 1]);\n        }\n      }\n    }\n    return null;\n  }\n}\n\nclass NameTree extends NameOrNumberTree {\n  constructor(root, xref) {\n    super(root, xref, \"Names\");\n  }\n}\n\nclass NumberTree extends NameOrNumberTree {\n  constructor(root, xref) {\n    super(root, xref, \"Nums\");\n  }\n}\n\n/**\n * \"A PDF file can refer to the contents of another file by using a File\n * Specification (PDF 1.1)\", see the spec (7.11) for more details.\n * NOTE: Only embedded files are supported (as part of the attachments support)\n * TODO: support the 'URL' file system (with caching if !/V), portable\n * collections attributes and related files (/RF)\n */\nvar FileSpec = (function FileSpecClosure() {\n  // eslint-disable-next-line no-shadow\n  function FileSpec(root, xref) {\n    if (!root || !isDict(root)) {\n      return;\n    }\n    this.xref = xref;\n    this.root = root;\n    if (root.has(\"FS\")) {\n      this.fs = root.get(\"FS\");\n    }\n    this.description = root.has(\"Desc\")\n      ? stringToPDFString(root.get(\"Desc\"))\n      : \"\";\n    if (root.has(\"RF\")) {\n      warn(\"Related file specifications are not supported\");\n    }\n    this.contentAvailable = true;\n    if (!root.has(\"EF\")) {\n      this.contentAvailable = false;\n      warn(\"Non-embedded file specifications are not supported\");\n    }\n  }\n\n  function pickPlatformItem(dict) {\n    // Look for the filename in this order:\n    // UF, F, Unix, Mac, DOS\n    if (dict.has(\"UF\")) {\n      return dict.get(\"UF\");\n    } else if (dict.has(\"F\")) {\n      return dict.get(\"F\");\n    } else if (dict.has(\"Unix\")) {\n      return dict.get(\"Unix\");\n    } else if (dict.has(\"Mac\")) {\n      return dict.get(\"Mac\");\n    } else if (dict.has(\"DOS\")) {\n      return dict.get(\"DOS\");\n    }\n    return null;\n  }\n\n  FileSpec.prototype = {\n    get filename() {\n      if (!this._filename && this.root) {\n        var filename = pickPlatformItem(this.root) || \"unnamed\";\n        this._filename = stringToPDFString(filename)\n          .replace(/\\\\\\\\/g, \"\\\\\")\n          .replace(/\\\\\\//g, \"/\")\n          .replace(/\\\\/g, \"/\");\n      }\n      return this._filename;\n    },\n    get content() {\n      if (!this.contentAvailable) {\n        return null;\n      }\n      if (!this.contentRef && this.root) {\n        this.contentRef = pickPlatformItem(this.root.get(\"EF\"));\n      }\n      var content = null;\n      if (this.contentRef) {\n        var xref = this.xref;\n        var fileObj = xref.fetchIfRef(this.contentRef);\n        if (fileObj && isStream(fileObj)) {\n          content = fileObj.getBytes();\n        } else {\n          warn(\n            \"Embedded file specification points to non-existing/invalid \" +\n              \"content\"\n          );\n        }\n      } else {\n        warn(\"Embedded file specification does not have a content\");\n      }\n      return content;\n    },\n    get serializable() {\n      return {\n        filename: this.filename,\n        content: this.content,\n      };\n    },\n  };\n  return FileSpec;\n})();\n\n/**\n * A helper for loading missing data in `Dict` graphs. It traverses the graph\n * depth first and queues up any objects that have missing data. Once it has\n * has traversed as many objects that are available it attempts to bundle the\n * missing data requests and then resume from the nodes that weren't ready.\n *\n * NOTE: It provides protection from circular references by keeping track of\n * loaded references. However, you must be careful not to load any graphs\n * that have references to the catalog or other pages since that will cause the\n * entire PDF document object graph to be traversed.\n */\nconst ObjectLoader = (function () {\n  function mayHaveChildren(value) {\n    return (\n      value instanceof Ref ||\n      value instanceof Dict ||\n      Array.isArray(value) ||\n      isStream(value)\n    );\n  }\n\n  function addChildren(node, nodesToVisit) {\n    if (node instanceof Dict) {\n      node = node.getRawValues();\n    } else if (isStream(node)) {\n      node = node.dict.getRawValues();\n    } else if (!Array.isArray(node)) {\n      return;\n    }\n    for (const rawValue of node) {\n      if (mayHaveChildren(rawValue)) {\n        nodesToVisit.push(rawValue);\n      }\n    }\n  }\n\n  // eslint-disable-next-line no-shadow\n  function ObjectLoader(dict, keys, xref) {\n    this.dict = dict;\n    this.keys = keys;\n    this.xref = xref;\n    this.refSet = null;\n  }\n\n  ObjectLoader.prototype = {\n    async load() {\n      // Don't walk the graph if all the data is already loaded; note that only\n      // `ChunkedStream` instances have a `allChunksLoaded` method.\n      if (\n        !this.xref.stream.allChunksLoaded ||\n        this.xref.stream.allChunksLoaded()\n      ) {\n        return undefined;\n      }\n\n      const { keys, dict } = this;\n      this.refSet = new RefSet();\n      // Setup the initial nodes to visit.\n      const nodesToVisit = [];\n      for (let i = 0, ii = keys.length; i < ii; i++) {\n        const rawValue = dict.getRaw(keys[i]);\n        // Skip nodes that are guaranteed to be empty.\n        if (rawValue !== undefined) {\n          nodesToVisit.push(rawValue);\n        }\n      }\n      return this._walk(nodesToVisit);\n    },\n\n    async _walk(nodesToVisit) {\n      const nodesToRevisit = [];\n      const pendingRequests = [];\n      // DFS walk of the object graph.\n      while (nodesToVisit.length) {\n        let currentNode = nodesToVisit.pop();\n\n        // Only references or chunked streams can cause missing data exceptions.\n        if (currentNode instanceof Ref) {\n          // Skip nodes that have already been visited.\n          if (this.refSet.has(currentNode)) {\n            continue;\n          }\n          try {\n            this.refSet.put(currentNode);\n            currentNode = this.xref.fetch(currentNode);\n          } catch (ex) {\n            if (!(ex instanceof MissingDataException)) {\n              throw ex;\n            }\n            nodesToRevisit.push(currentNode);\n            pendingRequests.push({ begin: ex.begin, end: ex.end });\n          }\n        }\n        if (currentNode && currentNode.getBaseStreams) {\n          const baseStreams = currentNode.getBaseStreams();\n          let foundMissingData = false;\n          for (let i = 0, ii = baseStreams.length; i < ii; i++) {\n            const stream = baseStreams[i];\n            if (stream.allChunksLoaded && !stream.allChunksLoaded()) {\n              foundMissingData = true;\n              pendingRequests.push({ begin: stream.start, end: stream.end });\n            }\n          }\n          if (foundMissingData) {\n            nodesToRevisit.push(currentNode);\n          }\n        }\n\n        addChildren(currentNode, nodesToVisit);\n      }\n\n      if (pendingRequests.length) {\n        await this.xref.stream.manager.requestRanges(pendingRequests);\n\n        for (let i = 0, ii = nodesToRevisit.length; i < ii; i++) {\n          const node = nodesToRevisit[i];\n          // Remove any reference nodes from the current `RefSet` so they\n          // aren't skipped when we revist them.\n          if (node instanceof Ref) {\n            this.refSet.remove(node);\n          }\n        }\n        return this._walk(nodesToRevisit);\n      }\n      // Everything is loaded.\n      this.refSet = null;\n      return undefined;\n    },\n  };\n\n  return ObjectLoader;\n})();\n\nexport { Catalog, ObjectLoader, XRef, FileSpec };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\nimport {\n  Ascii85Stream,\n  AsciiHexStream,\n  FlateStream,\n  LZWStream,\n  NullStream,\n  PredictorStream,\n  RunLengthStream,\n} from \"./stream.js\";\nimport {\n  assert,\n  bytesToString,\n  FormatError,\n  info,\n  isNum,\n  StreamType,\n  warn,\n} from \"../shared/util.js\";\nimport {\n  Cmd,\n  Dict,\n  EOF,\n  isCmd,\n  isDict,\n  isEOF,\n  isName,\n  Name,\n  Ref,\n} from \"./primitives.js\";\nimport { isWhiteSpace, MissingDataException } from \"./core_utils.js\";\nimport { CCITTFaxStream } from \"./ccitt_stream.js\";\nimport { Jbig2Stream } from \"./jbig2_stream.js\";\nimport { JpegStream } from \"./jpeg_stream.js\";\nimport { JpxStream } from \"./jpx_stream.js\";\n\nconst MAX_LENGTH_TO_CACHE = 1000;\nconst MAX_ADLER32_LENGTH = 5552;\n\nfunction computeAdler32(bytes) {\n  const bytesLength = bytes.length;\n  if (\n    typeof PDFJSDev === \"undefined\" ||\n    PDFJSDev.test(\"!PRODUCTION || TESTING\")\n  ) {\n    assert(\n      bytesLength < MAX_ADLER32_LENGTH,\n      'computeAdler32: Unsupported \"bytes\" length.'\n    );\n  }\n  let a = 1,\n    b = 0;\n  for (let i = 0; i < bytesLength; ++i) {\n    // No modulo required in the loop if `bytesLength < 5552`.\n    a += bytes[i] & 0xff;\n    b += a;\n  }\n  return (b % 65521 << 16) | a % 65521;\n}\n\nclass Parser {\n  constructor({ lexer, xref, allowStreams = false, recoveryMode = false }) {\n    this.lexer = lexer;\n    this.xref = xref;\n    this.allowStreams = allowStreams;\n    this.recoveryMode = recoveryMode;\n\n    this.imageCache = Object.create(null);\n    this.refill();\n  }\n\n  refill() {\n    this.buf1 = this.lexer.getObj();\n    this.buf2 = this.lexer.getObj();\n  }\n\n  shift() {\n    if (this.buf2 instanceof Cmd && this.buf2.cmd === \"ID\") {\n      this.buf1 = this.buf2;\n      this.buf2 = null;\n    } else {\n      this.buf1 = this.buf2;\n      this.buf2 = this.lexer.getObj();\n    }\n  }\n\n  tryShift() {\n    try {\n      this.shift();\n      return true;\n    } catch (e) {\n      if (e instanceof MissingDataException) {\n        throw e;\n      }\n      // Upon failure, the caller should reset this.lexer.pos to a known good\n      // state and call this.shift() twice to reset the buffers.\n      return false;\n    }\n  }\n\n  getObj(cipherTransform = null) {\n    const buf1 = this.buf1;\n    this.shift();\n\n    if (buf1 instanceof Cmd) {\n      switch (buf1.cmd) {\n        case \"BI\": // inline image\n          return this.makeInlineImage(cipherTransform);\n        case \"[\": // array\n          const array = [];\n          while (!isCmd(this.buf1, \"]\") && !isEOF(this.buf1)) {\n            array.push(this.getObj(cipherTransform));\n          }\n          if (isEOF(this.buf1)) {\n            if (!this.recoveryMode) {\n              throw new FormatError(\"End of file inside array\");\n            }\n            return array;\n          }\n          this.shift();\n          return array;\n        case \"<<\": // dictionary or stream\n          const dict = new Dict(this.xref);\n          while (!isCmd(this.buf1, \">>\") && !isEOF(this.buf1)) {\n            if (!isName(this.buf1)) {\n              info(\"Malformed dictionary: key must be a name object\");\n              this.shift();\n              continue;\n            }\n\n            const key = this.buf1.name;\n            this.shift();\n            if (isEOF(this.buf1)) {\n              break;\n            }\n            dict.set(key, this.getObj(cipherTransform));\n          }\n          if (isEOF(this.buf1)) {\n            if (!this.recoveryMode) {\n              throw new FormatError(\"End of file inside dictionary\");\n            }\n            return dict;\n          }\n\n          // Stream objects are not allowed inside content streams or\n          // object streams.\n          if (isCmd(this.buf2, \"stream\")) {\n            return this.allowStreams\n              ? this.makeStream(dict, cipherTransform)\n              : dict;\n          }\n          this.shift();\n          return dict;\n        default:\n          // simple object\n          return buf1;\n      }\n    }\n\n    if (Number.isInteger(buf1)) {\n      // indirect reference or integer\n      if (Number.isInteger(this.buf1) && isCmd(this.buf2, \"R\")) {\n        const ref = Ref.get(buf1, this.buf1);\n        this.shift();\n        this.shift();\n        return ref;\n      }\n      return buf1;\n    }\n\n    if (typeof buf1 === \"string\") {\n      if (cipherTransform) {\n        return cipherTransform.decryptString(buf1);\n      }\n      return buf1;\n    }\n\n    // simple object\n    return buf1;\n  }\n\n  /**\n   * Find the end of the stream by searching for the /EI\\s/.\n   * @returns {number} The inline stream length.\n   */\n  findDefaultInlineStreamEnd(stream) {\n    const E = 0x45,\n      I = 0x49,\n      SPACE = 0x20,\n      LF = 0xa,\n      CR = 0xd,\n      NUL = 0x0;\n    const lexer = this.lexer,\n      startPos = stream.pos,\n      n = 10;\n    let state = 0,\n      ch,\n      maybeEIPos;\n    while ((ch = stream.getByte()) !== -1) {\n      if (state === 0) {\n        state = ch === E ? 1 : 0;\n      } else if (state === 1) {\n        state = ch === I ? 2 : 0;\n      } else {\n        assert(state === 2, \"findDefaultInlineStreamEnd - invalid state.\");\n        if (ch === SPACE || ch === LF || ch === CR) {\n          maybeEIPos = stream.pos;\n          // Let's check that the next `n` bytes are ASCII... just to be sure.\n          const followingBytes = stream.peekBytes(n);\n          for (let i = 0, ii = followingBytes.length; i < ii; i++) {\n            ch = followingBytes[i];\n            if (ch === NUL && followingBytes[i + 1] !== NUL) {\n              // NUL bytes are not supposed to occur *outside* of inline\n              // images, but some PDF generators violate that assumption,\n              // thus breaking the EI detection heuristics used below.\n              //\n              // However, we can't unconditionally treat NUL bytes as \"ASCII\",\n              // since that *could* result in inline images being truncated.\n              //\n              // To attempt to address this, we'll still treat any *sequence*\n              // of NUL bytes as non-ASCII, but for a *single* NUL byte we'll\n              // continue checking the `followingBytes` (fixes issue8823.pdf).\n              continue;\n            }\n            if (ch !== LF && ch !== CR && (ch < SPACE || ch > 0x7f)) {\n              // Not a LF, CR, SPACE or any visible ASCII character, i.e.\n              // it's binary stuff. Resetting the state.\n              state = 0;\n              break;\n            }\n          }\n\n          if (state !== 2) {\n            continue;\n          }\n          // Check that the \"EI\" sequence isn't part of the image data, since\n          // that would cause the image to be truncated (fixes issue11124.pdf).\n          if (lexer.knownCommands) {\n            const nextObj = lexer.peekObj();\n            if (nextObj instanceof Cmd && !lexer.knownCommands[nextObj.cmd]) {\n              // Not a valid command, i.e. the inline image data *itself*\n              // contains an \"EI\" sequence. Resetting the state.\n              state = 0;\n            }\n          } else {\n            warn(\n              \"findDefaultInlineStreamEnd - `lexer.knownCommands` is undefined.\"\n            );\n          }\n\n          if (state === 2) {\n            break; // Finished!\n          }\n        } else {\n          state = 0;\n        }\n      }\n    }\n\n    if (ch === -1) {\n      warn(\n        \"findDefaultInlineStreamEnd: \" +\n          \"Reached the end of the stream without finding a valid EI marker\"\n      );\n      if (maybeEIPos) {\n        warn('... trying to recover by using the last \"EI\" occurrence.');\n        stream.skip(-(stream.pos - maybeEIPos)); // Reset the stream position.\n      }\n    }\n\n    let endOffset = 4;\n    stream.skip(-endOffset); // Set the stream position to just before \"EI\".\n    ch = stream.peekByte();\n    stream.skip(endOffset); // ... and remember to reset the stream position.\n\n    // Ensure that we don't accidentally truncate the inline image, when the\n    // data is immediately followed by the \"EI\" marker (fixes issue10388.pdf).\n    if (!isWhiteSpace(ch)) {\n      endOffset--;\n    }\n    return stream.pos - endOffset - startPos;\n  }\n\n  /**\n   * Find the EOI (end-of-image) marker 0xFFD9 of the stream.\n   * @returns {number} The inline stream length.\n   */\n  findDCTDecodeInlineStreamEnd(stream) {\n    const startPos = stream.pos;\n    let foundEOI = false,\n      b,\n      markerLength;\n    while ((b = stream.getByte()) !== -1) {\n      if (b !== 0xff) {\n        // Not a valid marker.\n        continue;\n      }\n      switch (stream.getByte()) {\n        case 0x00: // Byte stuffing.\n          // 0xFF00 appears to be a very common byte sequence in JPEG images.\n          break;\n\n        case 0xff: // Fill byte.\n          // Avoid skipping a valid marker, resetting the stream position.\n          stream.skip(-1);\n          break;\n\n        case 0xd9: // EOI\n          foundEOI = true;\n          break;\n\n        case 0xc0: // SOF0\n        case 0xc1: // SOF1\n        case 0xc2: // SOF2\n        case 0xc3: // SOF3\n        /* falls through */\n        case 0xc5: // SOF5\n        case 0xc6: // SOF6\n        case 0xc7: // SOF7\n        /* falls through */\n        case 0xc9: // SOF9\n        case 0xca: // SOF10\n        case 0xcb: // SOF11\n        /* falls through */\n        case 0xcd: // SOF13\n        case 0xce: // SOF14\n        case 0xcf: // SOF15\n        /* falls through */\n        case 0xc4: // DHT\n        case 0xcc: // DAC\n        /* falls through */\n        case 0xda: // SOS\n        case 0xdb: // DQT\n        case 0xdc: // DNL\n        case 0xdd: // DRI\n        case 0xde: // DHP\n        case 0xdf: // EXP\n        /* falls through */\n        case 0xe0: // APP0\n        case 0xe1: // APP1\n        case 0xe2: // APP2\n        case 0xe3: // APP3\n        case 0xe4: // APP4\n        case 0xe5: // APP5\n        case 0xe6: // APP6\n        case 0xe7: // APP7\n        case 0xe8: // APP8\n        case 0xe9: // APP9\n        case 0xea: // APP10\n        case 0xeb: // APP11\n        case 0xec: // APP12\n        case 0xed: // APP13\n        case 0xee: // APP14\n        case 0xef: // APP15\n        /* falls through */\n        case 0xfe: // COM\n          // The marker should be followed by the length of the segment.\n          markerLength = stream.getUint16();\n          if (markerLength > 2) {\n            // |markerLength| contains the byte length of the marker segment,\n            // including its own length (2 bytes) and excluding the marker.\n            stream.skip(markerLength - 2); // Jump to the next marker.\n          } else {\n            // The marker length is invalid, resetting the stream position.\n            stream.skip(-2);\n          }\n          break;\n      }\n      if (foundEOI) {\n        break;\n      }\n    }\n    const length = stream.pos - startPos;\n    if (b === -1) {\n      warn(\n        \"Inline DCTDecode image stream: \" +\n          \"EOI marker not found, searching for /EI/ instead.\"\n      );\n      stream.skip(-length); // Reset the stream position.\n      return this.findDefaultInlineStreamEnd(stream);\n    }\n    this.inlineStreamSkipEI(stream);\n    return length;\n  }\n\n  /**\n   * Find the EOD (end-of-data) marker '~>' (i.e. TILDE + GT) of the stream.\n   * @returns {number} The inline stream length.\n   */\n  findASCII85DecodeInlineStreamEnd(stream) {\n    const TILDE = 0x7e,\n      GT = 0x3e;\n    const startPos = stream.pos;\n    let ch;\n    while ((ch = stream.getByte()) !== -1) {\n      if (ch === TILDE) {\n        const tildePos = stream.pos;\n\n        ch = stream.peekByte();\n        // Handle corrupt PDF documents which contains whitespace \"inside\" of\n        // the EOD marker (fixes issue10614.pdf).\n        while (isWhiteSpace(ch)) {\n          stream.skip();\n          ch = stream.peekByte();\n        }\n        if (ch === GT) {\n          stream.skip();\n          break;\n        }\n        // Handle corrupt PDF documents which contains truncated EOD markers,\n        // where the '>' character is missing (fixes issue11385.pdf).\n        if (stream.pos > tildePos) {\n          const maybeEI = stream.peekBytes(2);\n          if (maybeEI[0] === /* E = */ 0x45 && maybeEI[1] === /* I = */ 0x49) {\n            break;\n          }\n        }\n      }\n    }\n    const length = stream.pos - startPos;\n    if (ch === -1) {\n      warn(\n        \"Inline ASCII85Decode image stream: \" +\n          \"EOD marker not found, searching for /EI/ instead.\"\n      );\n      stream.skip(-length); // Reset the stream position.\n      return this.findDefaultInlineStreamEnd(stream);\n    }\n    this.inlineStreamSkipEI(stream);\n    return length;\n  }\n\n  /**\n   * Find the EOD (end-of-data) marker '>' (i.e. GT) of the stream.\n   * @returns {number} The inline stream length.\n   */\n  findASCIIHexDecodeInlineStreamEnd(stream) {\n    const GT = 0x3e;\n    const startPos = stream.pos;\n    let ch;\n    while ((ch = stream.getByte()) !== -1) {\n      if (ch === GT) {\n        break;\n      }\n    }\n    const length = stream.pos - startPos;\n    if (ch === -1) {\n      warn(\n        \"Inline ASCIIHexDecode image stream: \" +\n          \"EOD marker not found, searching for /EI/ instead.\"\n      );\n      stream.skip(-length); // Reset the stream position.\n      return this.findDefaultInlineStreamEnd(stream);\n    }\n    this.inlineStreamSkipEI(stream);\n    return length;\n  }\n\n  /**\n   * Skip over the /EI/ for streams where we search for an EOD marker.\n   */\n  inlineStreamSkipEI(stream) {\n    const E = 0x45,\n      I = 0x49;\n    let state = 0,\n      ch;\n    while ((ch = stream.getByte()) !== -1) {\n      if (state === 0) {\n        state = ch === E ? 1 : 0;\n      } else if (state === 1) {\n        state = ch === I ? 2 : 0;\n      } else if (state === 2) {\n        break;\n      }\n    }\n  }\n\n  makeInlineImage(cipherTransform) {\n    const lexer = this.lexer;\n    const stream = lexer.stream;\n\n    // Parse dictionary.\n    const dict = new Dict(this.xref);\n    let dictLength;\n    while (!isCmd(this.buf1, \"ID\") && !isEOF(this.buf1)) {\n      if (!isName(this.buf1)) {\n        throw new FormatError(\"Dictionary key must be a name object\");\n      }\n      const key = this.buf1.name;\n      this.shift();\n      if (isEOF(this.buf1)) {\n        break;\n      }\n      dict.set(key, this.getObj(cipherTransform));\n    }\n    if (lexer.beginInlineImagePos !== -1) {\n      dictLength = stream.pos - lexer.beginInlineImagePos;\n    }\n\n    // Extract the name of the first (i.e. the current) image filter.\n    const filter = dict.get(\"Filter\", \"F\");\n    let filterName;\n    if (isName(filter)) {\n      filterName = filter.name;\n    } else if (Array.isArray(filter)) {\n      const filterZero = this.xref.fetchIfRef(filter[0]);\n      if (isName(filterZero)) {\n        filterName = filterZero.name;\n      }\n    }\n\n    // Parse image stream.\n    const startPos = stream.pos;\n    let length;\n    if (filterName === \"DCTDecode\" || filterName === \"DCT\") {\n      length = this.findDCTDecodeInlineStreamEnd(stream);\n    } else if (filterName === \"ASCII85Decode\" || filterName === \"A85\") {\n      length = this.findASCII85DecodeInlineStreamEnd(stream);\n    } else if (filterName === \"ASCIIHexDecode\" || filterName === \"AHx\") {\n      length = this.findASCIIHexDecodeInlineStreamEnd(stream);\n    } else {\n      length = this.findDefaultInlineStreamEnd(stream);\n    }\n    let imageStream = stream.makeSubStream(startPos, length, dict);\n\n    // Cache all images below the MAX_LENGTH_TO_CACHE threshold by their\n    // adler32 checksum.\n    let cacheKey;\n    if (length < MAX_LENGTH_TO_CACHE && dictLength < MAX_ADLER32_LENGTH) {\n      const imageBytes = imageStream.getBytes();\n      imageStream.reset();\n\n      const initialStreamPos = stream.pos;\n      // Set the stream position to the beginning of the dictionary data...\n      stream.pos = lexer.beginInlineImagePos;\n      // ... and fetch the bytes of the *entire* dictionary.\n      const dictBytes = stream.getBytes(dictLength);\n      // Finally, don't forget to reset the stream position.\n      stream.pos = initialStreamPos;\n\n      cacheKey = computeAdler32(imageBytes) + \"_\" + computeAdler32(dictBytes);\n\n      const cacheEntry = this.imageCache[cacheKey];\n      if (cacheEntry !== undefined) {\n        this.buf2 = Cmd.get(\"EI\");\n        this.shift();\n\n        cacheEntry.reset();\n        return cacheEntry;\n      }\n    }\n\n    if (cipherTransform) {\n      imageStream = cipherTransform.createStream(imageStream, length);\n    }\n\n    imageStream = this.filter(imageStream, dict, length);\n    imageStream.dict = dict;\n    if (cacheKey !== undefined) {\n      imageStream.cacheKey = `inline_${length}_${cacheKey}`;\n      this.imageCache[cacheKey] = imageStream;\n    }\n\n    this.buf2 = Cmd.get(\"EI\");\n    this.shift();\n\n    return imageStream;\n  }\n\n  _findStreamLength(startPos, signature) {\n    const { stream } = this.lexer;\n    stream.pos = startPos;\n\n    const SCAN_BLOCK_LENGTH = 2048;\n    const signatureLength = signature.length;\n\n    while (stream.pos < stream.end) {\n      const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\n      const scanLength = scanBytes.length - signatureLength;\n\n      if (scanLength <= 0) {\n        break;\n      }\n      let pos = 0;\n      while (pos < scanLength) {\n        let j = 0;\n        while (j < signatureLength && scanBytes[pos + j] === signature[j]) {\n          j++;\n        }\n        if (j >= signatureLength) {\n          // `signature` found.\n          stream.pos += pos;\n          return stream.pos - startPos;\n        }\n        pos++;\n      }\n      stream.pos += scanLength;\n    }\n    return -1;\n  }\n\n  makeStream(dict, cipherTransform) {\n    const lexer = this.lexer;\n    let stream = lexer.stream;\n\n    // Get the stream's start position.\n    lexer.skipToNextLine();\n    const startPos = stream.pos - 1;\n\n    // Get the length.\n    let length = dict.get(\"Length\");\n    if (!Number.isInteger(length)) {\n      info(`Bad length \"${length}\" in stream`);\n      length = 0;\n    }\n\n    // Skip over the stream data.\n    stream.pos = startPos + length;\n    lexer.nextChar();\n\n    // Shift '>>' and check whether the new object marks the end of the stream.\n    if (this.tryShift() && isCmd(this.buf2, \"endstream\")) {\n      this.shift(); // 'stream'\n    } else {\n      // Bad stream length, scanning for endstream command.\n      // prettier-ignore\n      const ENDSTREAM_SIGNATURE = new Uint8Array([\n        0x65, 0x6E, 0x64, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D]);\n      let actualLength = this._findStreamLength(startPos, ENDSTREAM_SIGNATURE);\n      if (actualLength < 0) {\n        // Only allow limited truncation of the endstream signature,\n        // to prevent false positives.\n        const MAX_TRUNCATION = 1;\n        // Check if the PDF generator included truncated endstream commands,\n        // such as e.g. \"endstrea\" (fixes issue10004.pdf).\n        for (let i = 1; i <= MAX_TRUNCATION; i++) {\n          const end = ENDSTREAM_SIGNATURE.length - i;\n          const TRUNCATED_SIGNATURE = ENDSTREAM_SIGNATURE.slice(0, end);\n\n          const maybeLength = this._findStreamLength(\n            startPos,\n            TRUNCATED_SIGNATURE\n          );\n          if (maybeLength >= 0) {\n            // Ensure that the byte immediately following the truncated\n            // endstream command is a space, to prevent false positives.\n            const lastByte = stream.peekBytes(end + 1)[end];\n            if (!isWhiteSpace(lastByte)) {\n              break;\n            }\n            info(\n              `Found \"${bytesToString(TRUNCATED_SIGNATURE)}\" when ` +\n                \"searching for endstream command.\"\n            );\n            actualLength = maybeLength;\n            break;\n          }\n        }\n\n        if (actualLength < 0) {\n          throw new FormatError(\"Missing endstream command.\");\n        }\n      }\n      length = actualLength;\n\n      lexer.nextChar();\n      this.shift();\n      this.shift();\n    }\n    this.shift(); // 'endstream'\n\n    stream = stream.makeSubStream(startPos, length, dict);\n    if (cipherTransform) {\n      stream = cipherTransform.createStream(stream, length);\n    }\n    stream = this.filter(stream, dict, length);\n    stream.dict = dict;\n    return stream;\n  }\n\n  filter(stream, dict, length) {\n    let filter = dict.get(\"Filter\", \"F\");\n    let params = dict.get(\"DecodeParms\", \"DP\");\n\n    if (isName(filter)) {\n      if (Array.isArray(params)) {\n        warn(\n          \"/DecodeParms should not contain an Array, \" +\n            \"when /Filter contains a Name.\"\n        );\n      }\n      return this.makeFilter(stream, filter.name, length, params);\n    }\n\n    let maybeLength = length;\n    if (Array.isArray(filter)) {\n      const filterArray = filter;\n      const paramsArray = params;\n      for (let i = 0, ii = filterArray.length; i < ii; ++i) {\n        filter = this.xref.fetchIfRef(filterArray[i]);\n        if (!isName(filter)) {\n          throw new FormatError(`Bad filter name \"${filter}\"`);\n        }\n\n        params = null;\n        if (Array.isArray(paramsArray) && i in paramsArray) {\n          params = this.xref.fetchIfRef(paramsArray[i]);\n        }\n        stream = this.makeFilter(stream, filter.name, maybeLength, params);\n        // After the first stream the `length` variable is invalid.\n        maybeLength = null;\n      }\n    }\n    return stream;\n  }\n\n  makeFilter(stream, name, maybeLength, params) {\n    // Since the 'Length' entry in the stream dictionary can be completely\n    // wrong, e.g. zero for non-empty streams, only skip parsing the stream\n    // when we can be absolutely certain that it actually is empty.\n    if (maybeLength === 0) {\n      warn(`Empty \"${name}\" stream.`);\n      return new NullStream();\n    }\n\n    try {\n      const xrefStreamStats = this.xref.stats.streamTypes;\n      if (name === \"FlateDecode\" || name === \"Fl\") {\n        xrefStreamStats[StreamType.FLATE] = true;\n        if (params) {\n          return new PredictorStream(\n            new FlateStream(stream, maybeLength),\n            maybeLength,\n            params\n          );\n        }\n        return new FlateStream(stream, maybeLength);\n      }\n      if (name === \"LZWDecode\" || name === \"LZW\") {\n        xrefStreamStats[StreamType.LZW] = true;\n        let earlyChange = 1;\n        if (params) {\n          if (params.has(\"EarlyChange\")) {\n            earlyChange = params.get(\"EarlyChange\");\n          }\n          return new PredictorStream(\n            new LZWStream(stream, maybeLength, earlyChange),\n            maybeLength,\n            params\n          );\n        }\n        return new LZWStream(stream, maybeLength, earlyChange);\n      }\n      if (name === \"DCTDecode\" || name === \"DCT\") {\n        xrefStreamStats[StreamType.DCT] = true;\n        return new JpegStream(stream, maybeLength, stream.dict, params);\n      }\n      if (name === \"JPXDecode\" || name === \"JPX\") {\n        xrefStreamStats[StreamType.JPX] = true;\n        return new JpxStream(stream, maybeLength, stream.dict, params);\n      }\n      if (name === \"ASCII85Decode\" || name === \"A85\") {\n        xrefStreamStats[StreamType.A85] = true;\n        return new Ascii85Stream(stream, maybeLength);\n      }\n      if (name === \"ASCIIHexDecode\" || name === \"AHx\") {\n        xrefStreamStats[StreamType.AHX] = true;\n        return new AsciiHexStream(stream, maybeLength);\n      }\n      if (name === \"CCITTFaxDecode\" || name === \"CCF\") {\n        xrefStreamStats[StreamType.CCF] = true;\n        return new CCITTFaxStream(stream, maybeLength, params);\n      }\n      if (name === \"RunLengthDecode\" || name === \"RL\") {\n        xrefStreamStats[StreamType.RLX] = true;\n        return new RunLengthStream(stream, maybeLength);\n      }\n      if (name === \"JBIG2Decode\") {\n        xrefStreamStats[StreamType.JBIG] = true;\n        return new Jbig2Stream(stream, maybeLength, stream.dict, params);\n      }\n      warn(`Filter \"${name}\" is not supported.`);\n      return stream;\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(`Invalid stream: \"${ex}\"`);\n      return new NullStream();\n    }\n  }\n}\n\n// A '1' in this array means the character is white space. A '1' or\n// '2' means the character ends a name or command.\n// prettier-ignore\nconst specialChars = [\n  1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, // 0x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 1x\n  1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, // 2x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, // 3x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 4x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, // 5x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 6x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, // 7x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 8x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 9x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // ax\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // bx\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // cx\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // dx\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // ex\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0  // fx\n];\n\nfunction toHexDigit(ch) {\n  if (ch >= /* '0' = */ 0x30 && ch /* '9' = */ <= 0x39) {\n    return ch & 0x0f;\n  }\n  if (\n    (ch >= /* 'A' = */ 0x41 && ch <= /* 'F' = */ 0x46) ||\n    (ch >= /* 'a' = */ 0x61 && ch <= /* 'f' = */ 0x66)\n  ) {\n    return (ch & 0x0f) + 9;\n  }\n  return -1;\n}\n\nclass Lexer {\n  constructor(stream, knownCommands = null) {\n    this.stream = stream;\n    this.nextChar();\n\n    // While lexing, we build up many strings one char at a time. Using += for\n    // this can result in lots of garbage strings. It's better to build an\n    // array of single-char strings and then join() them together at the end.\n    // And reusing a single array (i.e. |this.strBuf|) over and over for this\n    // purpose uses less memory than using a new array for each string.\n    this.strBuf = [];\n\n    // The PDFs might have \"glued\" commands with other commands, operands or\n    // literals, e.g. \"q1\". The knownCommands is a dictionary of the valid\n    // commands and their prefixes. The prefixes are built the following way:\n    // if there a command that is a prefix of the other valid command or\n    // literal (e.g. 'f' and 'false') the following prefixes must be included,\n    // 'fa', 'fal', 'fals'. The prefixes are not needed, if the command has no\n    // other commands or literals as a prefix. The knowCommands is optional.\n    this.knownCommands = knownCommands;\n\n    this._hexStringNumWarn = 0;\n    this.beginInlineImagePos = -1;\n  }\n\n  nextChar() {\n    return (this.currentChar = this.stream.getByte());\n  }\n\n  peekChar() {\n    return this.stream.peekByte();\n  }\n\n  getNumber() {\n    let ch = this.currentChar;\n    let eNotation = false;\n    let divideBy = 0; // Different from 0 if it's a floating point value.\n    let sign = 0;\n\n    if (ch === /* '-' = */ 0x2d) {\n      sign = -1;\n      ch = this.nextChar();\n\n      if (ch === /* '-' = */ 0x2d) {\n        // Ignore double negative (this is consistent with Adobe Reader).\n        ch = this.nextChar();\n      }\n    } else if (ch === /* '+' = */ 0x2b) {\n      sign = 1;\n      ch = this.nextChar();\n    }\n    if (ch === /* LF = */ 0x0a || ch === /* CR = */ 0x0d) {\n      // Ignore line-breaks (this is consistent with Adobe Reader).\n      do {\n        ch = this.nextChar();\n      } while (ch === 0x0a || ch === 0x0d);\n    }\n    if (ch === /* '.' = */ 0x2e) {\n      divideBy = 10;\n      ch = this.nextChar();\n    }\n    if (ch < /* '0' = */ 0x30 || ch > /* '9' = */ 0x39) {\n      if (\n        divideBy === 10 &&\n        sign === 0 &&\n        (isWhiteSpace(ch) || ch === /* EOF = */ -1)\n      ) {\n        // This is consistent with Adobe Reader (fixes issue9252.pdf).\n        warn(\"Lexer.getNumber - treating a single decimal point as zero.\");\n        return 0;\n      }\n      throw new FormatError(\n        `Invalid number: ${String.fromCharCode(ch)} (charCode ${ch})`\n      );\n    }\n\n    sign = sign || 1;\n    let baseValue = ch - 0x30; // '0'\n    let powerValue = 0;\n    let powerValueSign = 1;\n\n    while ((ch = this.nextChar()) >= 0) {\n      if (ch >= /* '0' = */ 0x30 && ch <= /* '9' = */ 0x39) {\n        const currentDigit = ch - 0x30; // '0'\n        if (eNotation) {\n          // We are after an 'e' or 'E'.\n          powerValue = powerValue * 10 + currentDigit;\n        } else {\n          if (divideBy !== 0) {\n            // We are after a point.\n            divideBy *= 10;\n          }\n          baseValue = baseValue * 10 + currentDigit;\n        }\n      } else if (ch === /* '.' = */ 0x2e) {\n        if (divideBy === 0) {\n          divideBy = 1;\n        } else {\n          // A number can have only one dot.\n          break;\n        }\n      } else if (ch === /* '-' = */ 0x2d) {\n        // Ignore minus signs in the middle of numbers to match\n        // Adobe's behavior.\n        warn(\"Badly formatted number: minus sign in the middle\");\n      } else if (ch === /* 'E' = */ 0x45 || ch === /* 'e' = */ 0x65) {\n        // 'E' can be either a scientific notation or the beginning of a new\n        // operator.\n        ch = this.peekChar();\n        if (ch === /* '+' = */ 0x2b || ch === /* '-' = */ 0x2d) {\n          powerValueSign = ch === 0x2d ? -1 : 1;\n          this.nextChar(); // Consume the sign character.\n        } else if (ch < /* '0' = */ 0x30 || ch > /* '9' = */ 0x39) {\n          // The 'E' must be the beginning of a new operator.\n          break;\n        }\n        eNotation = true;\n      } else {\n        // The last character doesn't belong to us.\n        break;\n      }\n    }\n\n    if (divideBy !== 0) {\n      baseValue /= divideBy;\n    }\n    if (eNotation) {\n      baseValue *= 10 ** (powerValueSign * powerValue);\n    }\n    return sign * baseValue;\n  }\n\n  getString() {\n    let numParen = 1;\n    let done = false;\n    const strBuf = this.strBuf;\n    strBuf.length = 0;\n\n    let ch = this.nextChar();\n    while (true) {\n      let charBuffered = false;\n      switch (ch | 0) {\n        case -1:\n          warn(\"Unterminated string\");\n          done = true;\n          break;\n        case 0x28: // '('\n          ++numParen;\n          strBuf.push(\"(\");\n          break;\n        case 0x29: // ')'\n          if (--numParen === 0) {\n            this.nextChar(); // consume strings ')'\n            done = true;\n          } else {\n            strBuf.push(\")\");\n          }\n          break;\n        case 0x5c: // '\\\\'\n          ch = this.nextChar();\n          switch (ch) {\n            case -1:\n              warn(\"Unterminated string\");\n              done = true;\n              break;\n            case 0x6e: // 'n'\n              strBuf.push(\"\\n\");\n              break;\n            case 0x72: // 'r'\n              strBuf.push(\"\\r\");\n              break;\n            case 0x74: // 't'\n              strBuf.push(\"\\t\");\n              break;\n            case 0x62: // 'b'\n              strBuf.push(\"\\b\");\n              break;\n            case 0x66: // 'f'\n              strBuf.push(\"\\f\");\n              break;\n            case 0x5c: // '\\'\n            case 0x28: // '('\n            case 0x29: // ')'\n              strBuf.push(String.fromCharCode(ch));\n              break;\n            case 0x30: // '0'\n            case 0x31: // '1'\n            case 0x32: // '2'\n            case 0x33: // '3'\n            case 0x34: // '4'\n            case 0x35: // '5'\n            case 0x36: // '6'\n            case 0x37: // '7'\n              let x = ch & 0x0f;\n              ch = this.nextChar();\n              charBuffered = true;\n              if (ch >= /* '0' = */ 0x30 && ch <= /* '7' = */ 0x37) {\n                x = (x << 3) + (ch & 0x0f);\n                ch = this.nextChar();\n                if (ch >= /* '0' = */ 0x30 && ch /* '7' = */ <= 0x37) {\n                  charBuffered = false;\n                  x = (x << 3) + (ch & 0x0f);\n                }\n              }\n              strBuf.push(String.fromCharCode(x));\n              break;\n            case 0x0d: // CR\n              if (this.peekChar() === /* LF = */ 0x0a) {\n                this.nextChar();\n              }\n              break;\n            case 0x0a: // LF\n              break;\n            default:\n              strBuf.push(String.fromCharCode(ch));\n              break;\n          }\n          break;\n        default:\n          strBuf.push(String.fromCharCode(ch));\n          break;\n      }\n      if (done) {\n        break;\n      }\n      if (!charBuffered) {\n        ch = this.nextChar();\n      }\n    }\n    return strBuf.join(\"\");\n  }\n\n  getName() {\n    let ch, previousCh;\n    const strBuf = this.strBuf;\n    strBuf.length = 0;\n\n    while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\n      if (ch === /* '#' = */ 0x23) {\n        ch = this.nextChar();\n        if (specialChars[ch]) {\n          warn(\n            \"Lexer_getName: \" +\n              \"NUMBER SIGN (#) should be followed by a hexadecimal number.\"\n          );\n          strBuf.push(\"#\");\n          break;\n        }\n        const x = toHexDigit(ch);\n        if (x !== -1) {\n          previousCh = ch;\n          ch = this.nextChar();\n          const x2 = toHexDigit(ch);\n          if (x2 === -1) {\n            warn(\n              `Lexer_getName: Illegal digit (${String.fromCharCode(ch)}) ` +\n                \"in hexadecimal number.\"\n            );\n            strBuf.push(\"#\", String.fromCharCode(previousCh));\n            if (specialChars[ch]) {\n              break;\n            }\n            strBuf.push(String.fromCharCode(ch));\n            continue;\n          }\n          strBuf.push(String.fromCharCode((x << 4) | x2));\n        } else {\n          strBuf.push(\"#\", String.fromCharCode(ch));\n        }\n      } else {\n        strBuf.push(String.fromCharCode(ch));\n      }\n    }\n    if (strBuf.length > 127) {\n      warn(`Name token is longer than allowed by the spec: ${strBuf.length}`);\n    }\n    return Name.get(strBuf.join(\"\"));\n  }\n\n  /**\n   * @private\n   */\n  _hexStringWarn(ch) {\n    const MAX_HEX_STRING_NUM_WARN = 5;\n\n    if (this._hexStringNumWarn++ === MAX_HEX_STRING_NUM_WARN) {\n      warn(\"getHexString - ignoring additional invalid characters.\");\n      return;\n    }\n    if (this._hexStringNumWarn > MAX_HEX_STRING_NUM_WARN) {\n      // Limit the number of warning messages printed for a `this.getHexString`\n      // invocation, since corrupt PDF documents may otherwise spam the console\n      // enough to affect general performance negatively.\n      return;\n    }\n    warn(`getHexString - ignoring invalid character: ${ch}`);\n  }\n\n  getHexString() {\n    const strBuf = this.strBuf;\n    strBuf.length = 0;\n    let ch = this.currentChar;\n    let isFirstHex = true;\n    let firstDigit, secondDigit;\n    this._hexStringNumWarn = 0;\n\n    while (true) {\n      if (ch < 0) {\n        warn(\"Unterminated hex string\");\n        break;\n      } else if (ch === /* '>' = */ 0x3e) {\n        this.nextChar();\n        break;\n      } else if (specialChars[ch] === 1) {\n        ch = this.nextChar();\n        continue;\n      } else {\n        if (isFirstHex) {\n          firstDigit = toHexDigit(ch);\n          if (firstDigit === -1) {\n            this._hexStringWarn(ch);\n            ch = this.nextChar();\n            continue;\n          }\n        } else {\n          secondDigit = toHexDigit(ch);\n          if (secondDigit === -1) {\n            this._hexStringWarn(ch);\n            ch = this.nextChar();\n            continue;\n          }\n          strBuf.push(String.fromCharCode((firstDigit << 4) | secondDigit));\n        }\n        isFirstHex = !isFirstHex;\n        ch = this.nextChar();\n      }\n    }\n    return strBuf.join(\"\");\n  }\n\n  getObj() {\n    // Skip whitespace and comments.\n    let comment = false;\n    let ch = this.currentChar;\n    while (true) {\n      if (ch < 0) {\n        return EOF;\n      }\n      if (comment) {\n        if (ch === /* LF = */ 0x0a || ch === /* CR = */ 0x0d) {\n          comment = false;\n        }\n      } else if (ch === /* '%' = */ 0x25) {\n        comment = true;\n      } else if (specialChars[ch] !== 1) {\n        break;\n      }\n      ch = this.nextChar();\n    }\n\n    // Start reading a token.\n    switch (ch | 0) {\n      case 0x30: // '0'\n      case 0x31: // '1'\n      case 0x32: // '2'\n      case 0x33: // '3'\n      case 0x34: // '4'\n      case 0x35: // '5'\n      case 0x36: // '6'\n      case 0x37: // '7'\n      case 0x38: // '8'\n      case 0x39: // '9'\n      case 0x2b: // '+'\n      case 0x2d: // '-'\n      case 0x2e: // '.'\n        return this.getNumber();\n      case 0x28: // '('\n        return this.getString();\n      case 0x2f: // '/'\n        return this.getName();\n      // array punctuation\n      case 0x5b: // '['\n        this.nextChar();\n        return Cmd.get(\"[\");\n      case 0x5d: // ']'\n        this.nextChar();\n        return Cmd.get(\"]\");\n      // hex string or dict punctuation\n      case 0x3c: // '<'\n        ch = this.nextChar();\n        if (ch === 0x3c) {\n          // dict punctuation\n          this.nextChar();\n          return Cmd.get(\"<<\");\n        }\n        return this.getHexString();\n      // dict punctuation\n      case 0x3e: // '>'\n        ch = this.nextChar();\n        if (ch === 0x3e) {\n          this.nextChar();\n          return Cmd.get(\">>\");\n        }\n        return Cmd.get(\">\");\n      case 0x7b: // '{'\n        this.nextChar();\n        return Cmd.get(\"{\");\n      case 0x7d: // '}'\n        this.nextChar();\n        return Cmd.get(\"}\");\n      case 0x29: // ')'\n        // Consume the current character in order to avoid permanently hanging\n        // the worker thread if `Lexer.getObject` is called from within a loop\n        // containing try-catch statements, since we would otherwise attempt\n        // to parse the *same* character over and over (fixes issue8061.pdf).\n        this.nextChar();\n        throw new FormatError(`Illegal character: ${ch}`);\n    }\n\n    // Start reading a command.\n    let str = String.fromCharCode(ch);\n    const knownCommands = this.knownCommands;\n    let knownCommandFound = knownCommands && knownCommands[str] !== undefined;\n    while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\n      // Stop if a known command is found and next character does not make\n      // the string a command.\n      const possibleCommand = str + String.fromCharCode(ch);\n      if (knownCommandFound && knownCommands[possibleCommand] === undefined) {\n        break;\n      }\n      if (str.length === 128) {\n        throw new FormatError(`Command token too long: ${str.length}`);\n      }\n      str = possibleCommand;\n      knownCommandFound = knownCommands && knownCommands[str] !== undefined;\n    }\n    if (str === \"true\") {\n      return true;\n    }\n    if (str === \"false\") {\n      return false;\n    }\n    if (str === \"null\") {\n      return null;\n    }\n\n    if (str === \"BI\") {\n      // Keep track of the current stream position, since it's needed in order\n      // to correctly cache inline images; see `Parser.makeInlineImage`.\n      this.beginInlineImagePos = this.stream.pos;\n    }\n\n    return Cmd.get(str);\n  }\n\n  peekObj() {\n    const streamPos = this.stream.pos,\n      currentChar = this.currentChar,\n      beginInlineImagePos = this.beginInlineImagePos;\n\n    let nextObj;\n    try {\n      nextObj = this.getObj();\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(`peekObj: ${ex}`);\n    }\n    // Ensure that we reset *all* relevant `Lexer`-instance state.\n    this.stream.pos = streamPos;\n    this.currentChar = currentChar;\n    this.beginInlineImagePos = beginInlineImagePos;\n\n    return nextObj;\n  }\n\n  skipToNextLine() {\n    let ch = this.currentChar;\n    while (ch >= 0) {\n      if (ch === /* CR = */ 0x0d) {\n        ch = this.nextChar();\n        if (ch === /* LF = */ 0x0a) {\n          this.nextChar();\n        }\n        break;\n      } else if (ch === /* LF = */ 0x0a) {\n        this.nextChar();\n        break;\n      }\n      ch = this.nextChar();\n    }\n  }\n}\n\nclass Linearization {\n  static create(stream) {\n    function getInt(linDict, name, allowZeroValue = false) {\n      const obj = linDict.get(name);\n      if (Number.isInteger(obj) && (allowZeroValue ? obj >= 0 : obj > 0)) {\n        return obj;\n      }\n      throw new Error(\n        `The \"${name}\" parameter in the linearization ` +\n          \"dictionary is invalid.\"\n      );\n    }\n\n    function getHints(linDict) {\n      const hints = linDict.get(\"H\");\n      let hintsLength;\n\n      if (\n        Array.isArray(hints) &&\n        ((hintsLength = hints.length) === 2 || hintsLength === 4)\n      ) {\n        for (let index = 0; index < hintsLength; index++) {\n          const hint = hints[index];\n          if (!(Number.isInteger(hint) && hint > 0)) {\n            throw new Error(\n              `Hint (${index}) in the linearization dictionary is invalid.`\n            );\n          }\n        }\n        return hints;\n      }\n      throw new Error(\"Hint array in the linearization dictionary is invalid.\");\n    }\n\n    const parser = new Parser({\n      lexer: new Lexer(stream),\n      xref: null,\n    });\n    const obj1 = parser.getObj();\n    const obj2 = parser.getObj();\n    const obj3 = parser.getObj();\n    const linDict = parser.getObj();\n    let obj, length;\n    if (\n      !(\n        Number.isInteger(obj1) &&\n        Number.isInteger(obj2) &&\n        isCmd(obj3, \"obj\") &&\n        isDict(linDict) &&\n        isNum((obj = linDict.get(\"Linearized\"))) &&\n        obj > 0\n      )\n    ) {\n      return null; // No valid linearization dictionary found.\n    } else if ((length = getInt(linDict, \"L\")) !== stream.length) {\n      throw new Error(\n        'The \"L\" parameter in the linearization dictionary ' +\n          \"does not equal the stream length.\"\n      );\n    }\n    return {\n      length,\n      hints: getHints(linDict),\n      objectNumberFirst: getInt(linDict, \"O\"),\n      endFirst: getInt(linDict, \"E\"),\n      numPages: getInt(linDict, \"N\"),\n      mainXRefEntriesOffset: getInt(linDict, \"T\"),\n      pageFirst: linDict.has(\"P\")\n        ? getInt(linDict, \"P\", /* allowZeroValue = */ true)\n        : 0,\n    };\n  }\n}\n\nexport { Lexer, Linearization, Parser };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* Copyright 1996-2003 Glyph & Cog, LLC\n *\n * The flate stream implementation contained in this file is a JavaScript port\n * of XPDF's implementation, made available under the Apache 2.0 open source\n * license.\n */\n\nimport { FormatError, stringToBytes, unreachable } from \"../shared/util.js\";\nimport { isDict } from \"./primitives.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\n\nvar Stream = (function StreamClosure() {\n  // eslint-disable-next-line no-shadow\n  function Stream(arrayBuffer, start, length, dict) {\n    this.bytes =\n      arrayBuffer instanceof Uint8Array\n        ? arrayBuffer\n        : new Uint8Array(arrayBuffer);\n    this.start = start || 0;\n    this.pos = this.start;\n    this.end = start + length || this.bytes.length;\n    this.dict = dict;\n  }\n\n  // required methods for a stream. if a particular stream does not\n  // implement these, an error should be thrown\n  Stream.prototype = {\n    get length() {\n      return this.end - this.start;\n    },\n    get isEmpty() {\n      return this.length === 0;\n    },\n    getByte: function Stream_getByte() {\n      if (this.pos >= this.end) {\n        return -1;\n      }\n      return this.bytes[this.pos++];\n    },\n    getUint16: function Stream_getUint16() {\n      var b0 = this.getByte();\n      var b1 = this.getByte();\n      if (b0 === -1 || b1 === -1) {\n        return -1;\n      }\n      return (b0 << 8) + b1;\n    },\n    getInt32: function Stream_getInt32() {\n      var b0 = this.getByte();\n      var b1 = this.getByte();\n      var b2 = this.getByte();\n      var b3 = this.getByte();\n      return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n    },\n    // Returns subarray of original buffer, should only be read.\n    getBytes(length, forceClamped = false) {\n      var bytes = this.bytes;\n      var pos = this.pos;\n      var strEnd = this.end;\n\n      if (!length) {\n        const subarray = bytes.subarray(pos, strEnd);\n        // `this.bytes` is always a `Uint8Array` here.\n        return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n      }\n      var end = pos + length;\n      if (end > strEnd) {\n        end = strEnd;\n      }\n      this.pos = end;\n      const subarray = bytes.subarray(pos, end);\n      // `this.bytes` is always a `Uint8Array` here.\n      return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n    },\n    peekByte: function Stream_peekByte() {\n      var peekedByte = this.getByte();\n      if (peekedByte !== -1) {\n        this.pos--;\n      }\n      return peekedByte;\n    },\n    peekBytes(length, forceClamped = false) {\n      var bytes = this.getBytes(length, forceClamped);\n      this.pos -= bytes.length;\n      return bytes;\n    },\n\n    getByteRange(begin, end) {\n      if (begin < 0) {\n        begin = 0;\n      }\n      if (end > this.end) {\n        end = this.end;\n      }\n      return this.bytes.subarray(begin, end);\n    },\n\n    skip: function Stream_skip(n) {\n      if (!n) {\n        n = 1;\n      }\n      this.pos += n;\n    },\n    reset: function Stream_reset() {\n      this.pos = this.start;\n    },\n    moveStart: function Stream_moveStart() {\n      this.start = this.pos;\n    },\n    makeSubStream: function Stream_makeSubStream(start, length, dict) {\n      return new Stream(this.bytes.buffer, start, length, dict);\n    },\n  };\n\n  return Stream;\n})();\n\nvar StringStream = (function StringStreamClosure() {\n  // eslint-disable-next-line no-shadow\n  function StringStream(str) {\n    const bytes = stringToBytes(str);\n    Stream.call(this, bytes);\n  }\n\n  StringStream.prototype = Stream.prototype;\n\n  return StringStream;\n})();\n\n// super class for the decoding streams\nvar DecodeStream = (function DecodeStreamClosure() {\n  // Lots of DecodeStreams are created whose buffers are never used.  For these\n  // we share a single empty buffer. This is (a) space-efficient and (b) avoids\n  // having special cases that would be required if we used |null| for an empty\n  // buffer.\n  var emptyBuffer = new Uint8Array(0);\n\n  // eslint-disable-next-line no-shadow\n  function DecodeStream(maybeMinBufferLength) {\n    this._rawMinBufferLength = maybeMinBufferLength || 0;\n\n    this.pos = 0;\n    this.bufferLength = 0;\n    this.eof = false;\n    this.buffer = emptyBuffer;\n    this.minBufferLength = 512;\n    if (maybeMinBufferLength) {\n      // Compute the first power of two that is as big as maybeMinBufferLength.\n      while (this.minBufferLength < maybeMinBufferLength) {\n        this.minBufferLength *= 2;\n      }\n    }\n  }\n\n  DecodeStream.prototype = {\n    get isEmpty() {\n      while (!this.eof && this.bufferLength === 0) {\n        this.readBlock();\n      }\n      return this.bufferLength === 0;\n    },\n    ensureBuffer: function DecodeStream_ensureBuffer(requested) {\n      var buffer = this.buffer;\n      if (requested <= buffer.byteLength) {\n        return buffer;\n      }\n      var size = this.minBufferLength;\n      while (size < requested) {\n        size *= 2;\n      }\n      var buffer2 = new Uint8Array(size);\n      buffer2.set(buffer);\n      return (this.buffer = buffer2);\n    },\n    getByte: function DecodeStream_getByte() {\n      var pos = this.pos;\n      while (this.bufferLength <= pos) {\n        if (this.eof) {\n          return -1;\n        }\n        this.readBlock();\n      }\n      return this.buffer[this.pos++];\n    },\n    getUint16: function DecodeStream_getUint16() {\n      var b0 = this.getByte();\n      var b1 = this.getByte();\n      if (b0 === -1 || b1 === -1) {\n        return -1;\n      }\n      return (b0 << 8) + b1;\n    },\n    getInt32: function DecodeStream_getInt32() {\n      var b0 = this.getByte();\n      var b1 = this.getByte();\n      var b2 = this.getByte();\n      var b3 = this.getByte();\n      return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n    },\n    getBytes(length, forceClamped = false) {\n      var end,\n        pos = this.pos;\n\n      if (length) {\n        this.ensureBuffer(pos + length);\n        end = pos + length;\n\n        while (!this.eof && this.bufferLength < end) {\n          this.readBlock();\n        }\n        var bufEnd = this.bufferLength;\n        if (end > bufEnd) {\n          end = bufEnd;\n        }\n      } else {\n        while (!this.eof) {\n          this.readBlock();\n        }\n        end = this.bufferLength;\n      }\n\n      this.pos = end;\n      const subarray = this.buffer.subarray(pos, end);\n      // `this.buffer` is either a `Uint8Array` or `Uint8ClampedArray` here.\n      return forceClamped && !(subarray instanceof Uint8ClampedArray)\n        ? new Uint8ClampedArray(subarray)\n        : subarray;\n    },\n    peekByte: function DecodeStream_peekByte() {\n      var peekedByte = this.getByte();\n      if (peekedByte !== -1) {\n        this.pos--;\n      }\n      return peekedByte;\n    },\n    peekBytes(length, forceClamped = false) {\n      var bytes = this.getBytes(length, forceClamped);\n      this.pos -= bytes.length;\n      return bytes;\n    },\n    makeSubStream: function DecodeStream_makeSubStream(start, length, dict) {\n      var end = start + length;\n      while (this.bufferLength <= end && !this.eof) {\n        this.readBlock();\n      }\n      return new Stream(this.buffer, start, length, dict);\n    },\n\n    getByteRange(begin, end) {\n      unreachable(\"Should not call DecodeStream.getByteRange\");\n    },\n\n    skip: function DecodeStream_skip(n) {\n      if (!n) {\n        n = 1;\n      }\n      this.pos += n;\n    },\n    reset: function DecodeStream_reset() {\n      this.pos = 0;\n    },\n    getBaseStreams: function DecodeStream_getBaseStreams() {\n      if (this.str && this.str.getBaseStreams) {\n        return this.str.getBaseStreams();\n      }\n      return [];\n    },\n  };\n\n  return DecodeStream;\n})();\n\nvar StreamsSequenceStream = (function StreamsSequenceStreamClosure() {\n  // eslint-disable-next-line no-shadow\n  function StreamsSequenceStream(streams) {\n    this.streams = streams;\n\n    let maybeLength = 0;\n    for (let i = 0, ii = streams.length; i < ii; i++) {\n      const stream = streams[i];\n      if (stream instanceof DecodeStream) {\n        maybeLength += stream._rawMinBufferLength;\n      } else {\n        maybeLength += stream.length;\n      }\n    }\n    DecodeStream.call(this, maybeLength);\n  }\n\n  StreamsSequenceStream.prototype = Object.create(DecodeStream.prototype);\n\n  StreamsSequenceStream.prototype.readBlock = function streamSequenceStreamReadBlock() {\n    var streams = this.streams;\n    if (streams.length === 0) {\n      this.eof = true;\n      return;\n    }\n    var stream = streams.shift();\n    var chunk = stream.getBytes();\n    var bufferLength = this.bufferLength;\n    var newLength = bufferLength + chunk.length;\n    var buffer = this.ensureBuffer(newLength);\n    buffer.set(chunk, bufferLength);\n    this.bufferLength = newLength;\n  };\n\n  StreamsSequenceStream.prototype.getBaseStreams = function StreamsSequenceStream_getBaseStreams() {\n    var baseStreams = [];\n    for (var i = 0, ii = this.streams.length; i < ii; i++) {\n      var stream = this.streams[i];\n      if (stream.getBaseStreams) {\n        baseStreams.push(...stream.getBaseStreams());\n      }\n    }\n    return baseStreams;\n  };\n\n  return StreamsSequenceStream;\n})();\n\nvar FlateStream = (function FlateStreamClosure() {\n  // prettier-ignore\n  var codeLenCodeMap = new Int32Array([\n    16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15\n  ]);\n\n  // prettier-ignore\n  var lengthDecode = new Int32Array([\n    0x00003, 0x00004, 0x00005, 0x00006, 0x00007, 0x00008, 0x00009, 0x0000a,\n    0x1000b, 0x1000d, 0x1000f, 0x10011, 0x20013, 0x20017, 0x2001b, 0x2001f,\n    0x30023, 0x3002b, 0x30033, 0x3003b, 0x40043, 0x40053, 0x40063, 0x40073,\n    0x50083, 0x500a3, 0x500c3, 0x500e3, 0x00102, 0x00102, 0x00102\n  ]);\n\n  // prettier-ignore\n  var distDecode = new Int32Array([\n    0x00001, 0x00002, 0x00003, 0x00004, 0x10005, 0x10007, 0x20009, 0x2000d,\n    0x30011, 0x30019, 0x40021, 0x40031, 0x50041, 0x50061, 0x60081, 0x600c1,\n    0x70101, 0x70181, 0x80201, 0x80301, 0x90401, 0x90601, 0xa0801, 0xa0c01,\n    0xb1001, 0xb1801, 0xc2001, 0xc3001, 0xd4001, 0xd6001\n  ]);\n\n  // prettier-ignore\n  var fixedLitCodeTab = [new Int32Array([\n    0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c0,\n    0x70108, 0x80060, 0x80020, 0x900a0, 0x80000, 0x80080, 0x80040, 0x900e0,\n    0x70104, 0x80058, 0x80018, 0x90090, 0x70114, 0x80078, 0x80038, 0x900d0,\n    0x7010c, 0x80068, 0x80028, 0x900b0, 0x80008, 0x80088, 0x80048, 0x900f0,\n    0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c8,\n    0x7010a, 0x80064, 0x80024, 0x900a8, 0x80004, 0x80084, 0x80044, 0x900e8,\n    0x70106, 0x8005c, 0x8001c, 0x90098, 0x70116, 0x8007c, 0x8003c, 0x900d8,\n    0x7010e, 0x8006c, 0x8002c, 0x900b8, 0x8000c, 0x8008c, 0x8004c, 0x900f8,\n    0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c4,\n    0x70109, 0x80062, 0x80022, 0x900a4, 0x80002, 0x80082, 0x80042, 0x900e4,\n    0x70105, 0x8005a, 0x8001a, 0x90094, 0x70115, 0x8007a, 0x8003a, 0x900d4,\n    0x7010d, 0x8006a, 0x8002a, 0x900b4, 0x8000a, 0x8008a, 0x8004a, 0x900f4,\n    0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cc,\n    0x7010b, 0x80066, 0x80026, 0x900ac, 0x80006, 0x80086, 0x80046, 0x900ec,\n    0x70107, 0x8005e, 0x8001e, 0x9009c, 0x70117, 0x8007e, 0x8003e, 0x900dc,\n    0x7010f, 0x8006e, 0x8002e, 0x900bc, 0x8000e, 0x8008e, 0x8004e, 0x900fc,\n    0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c2,\n    0x70108, 0x80061, 0x80021, 0x900a2, 0x80001, 0x80081, 0x80041, 0x900e2,\n    0x70104, 0x80059, 0x80019, 0x90092, 0x70114, 0x80079, 0x80039, 0x900d2,\n    0x7010c, 0x80069, 0x80029, 0x900b2, 0x80009, 0x80089, 0x80049, 0x900f2,\n    0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900ca,\n    0x7010a, 0x80065, 0x80025, 0x900aa, 0x80005, 0x80085, 0x80045, 0x900ea,\n    0x70106, 0x8005d, 0x8001d, 0x9009a, 0x70116, 0x8007d, 0x8003d, 0x900da,\n    0x7010e, 0x8006d, 0x8002d, 0x900ba, 0x8000d, 0x8008d, 0x8004d, 0x900fa,\n    0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c6,\n    0x70109, 0x80063, 0x80023, 0x900a6, 0x80003, 0x80083, 0x80043, 0x900e6,\n    0x70105, 0x8005b, 0x8001b, 0x90096, 0x70115, 0x8007b, 0x8003b, 0x900d6,\n    0x7010d, 0x8006b, 0x8002b, 0x900b6, 0x8000b, 0x8008b, 0x8004b, 0x900f6,\n    0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900ce,\n    0x7010b, 0x80067, 0x80027, 0x900ae, 0x80007, 0x80087, 0x80047, 0x900ee,\n    0x70107, 0x8005f, 0x8001f, 0x9009e, 0x70117, 0x8007f, 0x8003f, 0x900de,\n    0x7010f, 0x8006f, 0x8002f, 0x900be, 0x8000f, 0x8008f, 0x8004f, 0x900fe,\n    0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c1,\n    0x70108, 0x80060, 0x80020, 0x900a1, 0x80000, 0x80080, 0x80040, 0x900e1,\n    0x70104, 0x80058, 0x80018, 0x90091, 0x70114, 0x80078, 0x80038, 0x900d1,\n    0x7010c, 0x80068, 0x80028, 0x900b1, 0x80008, 0x80088, 0x80048, 0x900f1,\n    0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c9,\n    0x7010a, 0x80064, 0x80024, 0x900a9, 0x80004, 0x80084, 0x80044, 0x900e9,\n    0x70106, 0x8005c, 0x8001c, 0x90099, 0x70116, 0x8007c, 0x8003c, 0x900d9,\n    0x7010e, 0x8006c, 0x8002c, 0x900b9, 0x8000c, 0x8008c, 0x8004c, 0x900f9,\n    0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c5,\n    0x70109, 0x80062, 0x80022, 0x900a5, 0x80002, 0x80082, 0x80042, 0x900e5,\n    0x70105, 0x8005a, 0x8001a, 0x90095, 0x70115, 0x8007a, 0x8003a, 0x900d5,\n    0x7010d, 0x8006a, 0x8002a, 0x900b5, 0x8000a, 0x8008a, 0x8004a, 0x900f5,\n    0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cd,\n    0x7010b, 0x80066, 0x80026, 0x900ad, 0x80006, 0x80086, 0x80046, 0x900ed,\n    0x70107, 0x8005e, 0x8001e, 0x9009d, 0x70117, 0x8007e, 0x8003e, 0x900dd,\n    0x7010f, 0x8006e, 0x8002e, 0x900bd, 0x8000e, 0x8008e, 0x8004e, 0x900fd,\n    0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c3,\n    0x70108, 0x80061, 0x80021, 0x900a3, 0x80001, 0x80081, 0x80041, 0x900e3,\n    0x70104, 0x80059, 0x80019, 0x90093, 0x70114, 0x80079, 0x80039, 0x900d3,\n    0x7010c, 0x80069, 0x80029, 0x900b3, 0x80009, 0x80089, 0x80049, 0x900f3,\n    0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900cb,\n    0x7010a, 0x80065, 0x80025, 0x900ab, 0x80005, 0x80085, 0x80045, 0x900eb,\n    0x70106, 0x8005d, 0x8001d, 0x9009b, 0x70116, 0x8007d, 0x8003d, 0x900db,\n    0x7010e, 0x8006d, 0x8002d, 0x900bb, 0x8000d, 0x8008d, 0x8004d, 0x900fb,\n    0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c7,\n    0x70109, 0x80063, 0x80023, 0x900a7, 0x80003, 0x80083, 0x80043, 0x900e7,\n    0x70105, 0x8005b, 0x8001b, 0x90097, 0x70115, 0x8007b, 0x8003b, 0x900d7,\n    0x7010d, 0x8006b, 0x8002b, 0x900b7, 0x8000b, 0x8008b, 0x8004b, 0x900f7,\n    0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900cf,\n    0x7010b, 0x80067, 0x80027, 0x900af, 0x80007, 0x80087, 0x80047, 0x900ef,\n    0x70107, 0x8005f, 0x8001f, 0x9009f, 0x70117, 0x8007f, 0x8003f, 0x900df,\n    0x7010f, 0x8006f, 0x8002f, 0x900bf, 0x8000f, 0x8008f, 0x8004f, 0x900ff\n  ]), 9];\n\n  // prettier-ignore\n  var fixedDistCodeTab = [new Int32Array([\n    0x50000, 0x50010, 0x50008, 0x50018, 0x50004, 0x50014, 0x5000c, 0x5001c,\n    0x50002, 0x50012, 0x5000a, 0x5001a, 0x50006, 0x50016, 0x5000e, 0x00000,\n    0x50001, 0x50011, 0x50009, 0x50019, 0x50005, 0x50015, 0x5000d, 0x5001d,\n    0x50003, 0x50013, 0x5000b, 0x5001b, 0x50007, 0x50017, 0x5000f, 0x00000\n  ]), 5];\n\n  // eslint-disable-next-line no-shadow\n  function FlateStream(str, maybeLength) {\n    this.str = str;\n    this.dict = str.dict;\n\n    var cmf = str.getByte();\n    var flg = str.getByte();\n    if (cmf === -1 || flg === -1) {\n      throw new FormatError(`Invalid header in flate stream: ${cmf}, ${flg}`);\n    }\n    if ((cmf & 0x0f) !== 0x08) {\n      throw new FormatError(\n        `Unknown compression method in flate stream: ${cmf}, ${flg}`\n      );\n    }\n    if (((cmf << 8) + flg) % 31 !== 0) {\n      throw new FormatError(`Bad FCHECK in flate stream: ${cmf}, ${flg}`);\n    }\n    if (flg & 0x20) {\n      throw new FormatError(`FDICT bit set in flate stream: ${cmf}, ${flg}`);\n    }\n\n    this.codeSize = 0;\n    this.codeBuf = 0;\n\n    DecodeStream.call(this, maybeLength);\n  }\n\n  FlateStream.prototype = Object.create(DecodeStream.prototype);\n\n  FlateStream.prototype.getBits = function FlateStream_getBits(bits) {\n    var str = this.str;\n    var codeSize = this.codeSize;\n    var codeBuf = this.codeBuf;\n\n    var b;\n    while (codeSize < bits) {\n      if ((b = str.getByte()) === -1) {\n        throw new FormatError(\"Bad encoding in flate stream\");\n      }\n      codeBuf |= b << codeSize;\n      codeSize += 8;\n    }\n    b = codeBuf & ((1 << bits) - 1);\n    this.codeBuf = codeBuf >> bits;\n    this.codeSize = codeSize -= bits;\n\n    return b;\n  };\n\n  FlateStream.prototype.getCode = function FlateStream_getCode(table) {\n    var str = this.str;\n    var codes = table[0];\n    var maxLen = table[1];\n    var codeSize = this.codeSize;\n    var codeBuf = this.codeBuf;\n\n    var b;\n    while (codeSize < maxLen) {\n      if ((b = str.getByte()) === -1) {\n        // premature end of stream. code might however still be valid.\n        // codeSize < codeLen check below guards against incomplete codeVal.\n        break;\n      }\n      codeBuf |= b << codeSize;\n      codeSize += 8;\n    }\n    var code = codes[codeBuf & ((1 << maxLen) - 1)];\n    var codeLen = code >> 16;\n    var codeVal = code & 0xffff;\n    if (codeLen < 1 || codeSize < codeLen) {\n      throw new FormatError(\"Bad encoding in flate stream\");\n    }\n    this.codeBuf = codeBuf >> codeLen;\n    this.codeSize = codeSize - codeLen;\n    return codeVal;\n  };\n\n  FlateStream.prototype.generateHuffmanTable = function flateStreamGenerateHuffmanTable(\n    lengths\n  ) {\n    var n = lengths.length;\n\n    // find max code length\n    var maxLen = 0;\n    var i;\n    for (i = 0; i < n; ++i) {\n      if (lengths[i] > maxLen) {\n        maxLen = lengths[i];\n      }\n    }\n\n    // build the table\n    var size = 1 << maxLen;\n    var codes = new Int32Array(size);\n    for (\n      var len = 1, code = 0, skip = 2;\n      len <= maxLen;\n      ++len, code <<= 1, skip <<= 1\n    ) {\n      for (var val = 0; val < n; ++val) {\n        if (lengths[val] === len) {\n          // bit-reverse the code\n          var code2 = 0;\n          var t = code;\n          for (i = 0; i < len; ++i) {\n            code2 = (code2 << 1) | (t & 1);\n            t >>= 1;\n          }\n\n          // fill the table entries\n          for (i = code2; i < size; i += skip) {\n            codes[i] = (len << 16) | val;\n          }\n          ++code;\n        }\n      }\n    }\n\n    return [codes, maxLen];\n  };\n\n  FlateStream.prototype.readBlock = function FlateStream_readBlock() {\n    var buffer, len;\n    var str = this.str;\n    // read block header\n    var hdr = this.getBits(3);\n    if (hdr & 1) {\n      this.eof = true;\n    }\n    hdr >>= 1;\n\n    if (hdr === 0) {\n      // uncompressed block\n      var b;\n\n      if ((b = str.getByte()) === -1) {\n        throw new FormatError(\"Bad block header in flate stream\");\n      }\n      var blockLen = b;\n      if ((b = str.getByte()) === -1) {\n        throw new FormatError(\"Bad block header in flate stream\");\n      }\n      blockLen |= b << 8;\n      if ((b = str.getByte()) === -1) {\n        throw new FormatError(\"Bad block header in flate stream\");\n      }\n      var check = b;\n      if ((b = str.getByte()) === -1) {\n        throw new FormatError(\"Bad block header in flate stream\");\n      }\n      check |= b << 8;\n      if (check !== (~blockLen & 0xffff) && (blockLen !== 0 || check !== 0)) {\n        // Ignoring error for bad \"empty\" block (see issue 1277)\n        throw new FormatError(\"Bad uncompressed block length in flate stream\");\n      }\n\n      this.codeBuf = 0;\n      this.codeSize = 0;\n\n      const bufferLength = this.bufferLength,\n        end = bufferLength + blockLen;\n      buffer = this.ensureBuffer(end);\n      this.bufferLength = end;\n\n      if (blockLen === 0) {\n        if (str.peekByte() === -1) {\n          this.eof = true;\n        }\n      } else {\n        const block = str.getBytes(blockLen);\n        buffer.set(block, bufferLength);\n        if (block.length < blockLen) {\n          this.eof = true;\n        }\n      }\n      return;\n    }\n\n    var litCodeTable;\n    var distCodeTable;\n    if (hdr === 1) {\n      // compressed block, fixed codes\n      litCodeTable = fixedLitCodeTab;\n      distCodeTable = fixedDistCodeTab;\n    } else if (hdr === 2) {\n      // compressed block, dynamic codes\n      var numLitCodes = this.getBits(5) + 257;\n      var numDistCodes = this.getBits(5) + 1;\n      var numCodeLenCodes = this.getBits(4) + 4;\n\n      // build the code lengths code table\n      var codeLenCodeLengths = new Uint8Array(codeLenCodeMap.length);\n\n      var i;\n      for (i = 0; i < numCodeLenCodes; ++i) {\n        codeLenCodeLengths[codeLenCodeMap[i]] = this.getBits(3);\n      }\n      var codeLenCodeTab = this.generateHuffmanTable(codeLenCodeLengths);\n\n      // build the literal and distance code tables\n      len = 0;\n      i = 0;\n      var codes = numLitCodes + numDistCodes;\n      var codeLengths = new Uint8Array(codes);\n      var bitsLength, bitsOffset, what;\n      while (i < codes) {\n        var code = this.getCode(codeLenCodeTab);\n        if (code === 16) {\n          bitsLength = 2;\n          bitsOffset = 3;\n          what = len;\n        } else if (code === 17) {\n          bitsLength = 3;\n          bitsOffset = 3;\n          what = len = 0;\n        } else if (code === 18) {\n          bitsLength = 7;\n          bitsOffset = 11;\n          what = len = 0;\n        } else {\n          codeLengths[i++] = len = code;\n          continue;\n        }\n\n        var repeatLength = this.getBits(bitsLength) + bitsOffset;\n        while (repeatLength-- > 0) {\n          codeLengths[i++] = what;\n        }\n      }\n\n      litCodeTable = this.generateHuffmanTable(\n        codeLengths.subarray(0, numLitCodes)\n      );\n      distCodeTable = this.generateHuffmanTable(\n        codeLengths.subarray(numLitCodes, codes)\n      );\n    } else {\n      throw new FormatError(\"Unknown block type in flate stream\");\n    }\n\n    buffer = this.buffer;\n    var limit = buffer ? buffer.length : 0;\n    var pos = this.bufferLength;\n    while (true) {\n      var code1 = this.getCode(litCodeTable);\n      if (code1 < 256) {\n        if (pos + 1 >= limit) {\n          buffer = this.ensureBuffer(pos + 1);\n          limit = buffer.length;\n        }\n        buffer[pos++] = code1;\n        continue;\n      }\n      if (code1 === 256) {\n        this.bufferLength = pos;\n        return;\n      }\n      code1 -= 257;\n      code1 = lengthDecode[code1];\n      var code2 = code1 >> 16;\n      if (code2 > 0) {\n        code2 = this.getBits(code2);\n      }\n      len = (code1 & 0xffff) + code2;\n      code1 = this.getCode(distCodeTable);\n      code1 = distDecode[code1];\n      code2 = code1 >> 16;\n      if (code2 > 0) {\n        code2 = this.getBits(code2);\n      }\n      var dist = (code1 & 0xffff) + code2;\n      if (pos + len >= limit) {\n        buffer = this.ensureBuffer(pos + len);\n        limit = buffer.length;\n      }\n      for (var k = 0; k < len; ++k, ++pos) {\n        buffer[pos] = buffer[pos - dist];\n      }\n    }\n  };\n\n  return FlateStream;\n})();\n\nvar PredictorStream = (function PredictorStreamClosure() {\n  // eslint-disable-next-line no-shadow\n  function PredictorStream(str, maybeLength, params) {\n    if (!isDict(params)) {\n      return str; // no prediction\n    }\n    var predictor = (this.predictor = params.get(\"Predictor\") || 1);\n\n    if (predictor <= 1) {\n      return str; // no prediction\n    }\n    if (predictor !== 2 && (predictor < 10 || predictor > 15)) {\n      throw new FormatError(`Unsupported predictor: ${predictor}`);\n    }\n\n    if (predictor === 2) {\n      this.readBlock = this.readBlockTiff;\n    } else {\n      this.readBlock = this.readBlockPng;\n    }\n\n    this.str = str;\n    this.dict = str.dict;\n\n    var colors = (this.colors = params.get(\"Colors\") || 1);\n    var bits = (this.bits = params.get(\"BitsPerComponent\") || 8);\n    var columns = (this.columns = params.get(\"Columns\") || 1);\n\n    this.pixBytes = (colors * bits + 7) >> 3;\n    this.rowBytes = (columns * colors * bits + 7) >> 3;\n\n    DecodeStream.call(this, maybeLength);\n    return this;\n  }\n\n  PredictorStream.prototype = Object.create(DecodeStream.prototype);\n\n  PredictorStream.prototype.readBlockTiff = function predictorStreamReadBlockTiff() {\n    var rowBytes = this.rowBytes;\n\n    var bufferLength = this.bufferLength;\n    var buffer = this.ensureBuffer(bufferLength + rowBytes);\n\n    var bits = this.bits;\n    var colors = this.colors;\n\n    var rawBytes = this.str.getBytes(rowBytes);\n    this.eof = !rawBytes.length;\n    if (this.eof) {\n      return;\n    }\n\n    var inbuf = 0,\n      outbuf = 0;\n    var inbits = 0,\n      outbits = 0;\n    var pos = bufferLength;\n    var i;\n\n    if (bits === 1 && colors === 1) {\n      // Optimized version of the loop in the \"else\"-branch\n      // for 1 bit-per-component and 1 color TIFF images.\n      for (i = 0; i < rowBytes; ++i) {\n        var c = rawBytes[i] ^ inbuf;\n        c ^= c >> 1;\n        c ^= c >> 2;\n        c ^= c >> 4;\n        inbuf = (c & 1) << 7;\n        buffer[pos++] = c;\n      }\n    } else if (bits === 8) {\n      for (i = 0; i < colors; ++i) {\n        buffer[pos++] = rawBytes[i];\n      }\n      for (; i < rowBytes; ++i) {\n        buffer[pos] = buffer[pos - colors] + rawBytes[i];\n        pos++;\n      }\n    } else if (bits === 16) {\n      var bytesPerPixel = colors * 2;\n      for (i = 0; i < bytesPerPixel; ++i) {\n        buffer[pos++] = rawBytes[i];\n      }\n      for (; i < rowBytes; i += 2) {\n        var sum =\n          ((rawBytes[i] & 0xff) << 8) +\n          (rawBytes[i + 1] & 0xff) +\n          ((buffer[pos - bytesPerPixel] & 0xff) << 8) +\n          (buffer[pos - bytesPerPixel + 1] & 0xff);\n        buffer[pos++] = (sum >> 8) & 0xff;\n        buffer[pos++] = sum & 0xff;\n      }\n    } else {\n      var compArray = new Uint8Array(colors + 1);\n      var bitMask = (1 << bits) - 1;\n      var j = 0,\n        k = bufferLength;\n      var columns = this.columns;\n      for (i = 0; i < columns; ++i) {\n        for (var kk = 0; kk < colors; ++kk) {\n          if (inbits < bits) {\n            inbuf = (inbuf << 8) | (rawBytes[j++] & 0xff);\n            inbits += 8;\n          }\n          compArray[kk] =\n            (compArray[kk] + (inbuf >> (inbits - bits))) & bitMask;\n          inbits -= bits;\n          outbuf = (outbuf << bits) | compArray[kk];\n          outbits += bits;\n          if (outbits >= 8) {\n            buffer[k++] = (outbuf >> (outbits - 8)) & 0xff;\n            outbits -= 8;\n          }\n        }\n      }\n      if (outbits > 0) {\n        buffer[k++] =\n          (outbuf << (8 - outbits)) + (inbuf & ((1 << (8 - outbits)) - 1));\n      }\n    }\n    this.bufferLength += rowBytes;\n  };\n\n  PredictorStream.prototype.readBlockPng = function predictorStreamReadBlockPng() {\n    var rowBytes = this.rowBytes;\n    var pixBytes = this.pixBytes;\n\n    var predictor = this.str.getByte();\n    var rawBytes = this.str.getBytes(rowBytes);\n    this.eof = !rawBytes.length;\n    if (this.eof) {\n      return;\n    }\n\n    var bufferLength = this.bufferLength;\n    var buffer = this.ensureBuffer(bufferLength + rowBytes);\n\n    var prevRow = buffer.subarray(bufferLength - rowBytes, bufferLength);\n    if (prevRow.length === 0) {\n      prevRow = new Uint8Array(rowBytes);\n    }\n\n    var i,\n      j = bufferLength,\n      up,\n      c;\n    switch (predictor) {\n      case 0:\n        for (i = 0; i < rowBytes; ++i) {\n          buffer[j++] = rawBytes[i];\n        }\n        break;\n      case 1:\n        for (i = 0; i < pixBytes; ++i) {\n          buffer[j++] = rawBytes[i];\n        }\n        for (; i < rowBytes; ++i) {\n          buffer[j] = (buffer[j - pixBytes] + rawBytes[i]) & 0xff;\n          j++;\n        }\n        break;\n      case 2:\n        for (i = 0; i < rowBytes; ++i) {\n          buffer[j++] = (prevRow[i] + rawBytes[i]) & 0xff;\n        }\n        break;\n      case 3:\n        for (i = 0; i < pixBytes; ++i) {\n          buffer[j++] = (prevRow[i] >> 1) + rawBytes[i];\n        }\n        for (; i < rowBytes; ++i) {\n          buffer[j] =\n            (((prevRow[i] + buffer[j - pixBytes]) >> 1) + rawBytes[i]) & 0xff;\n          j++;\n        }\n        break;\n      case 4:\n        // we need to save the up left pixels values. the simplest way\n        // is to create a new buffer\n        for (i = 0; i < pixBytes; ++i) {\n          up = prevRow[i];\n          c = rawBytes[i];\n          buffer[j++] = up + c;\n        }\n        for (; i < rowBytes; ++i) {\n          up = prevRow[i];\n          var upLeft = prevRow[i - pixBytes];\n          var left = buffer[j - pixBytes];\n          var p = left + up - upLeft;\n\n          var pa = p - left;\n          if (pa < 0) {\n            pa = -pa;\n          }\n          var pb = p - up;\n          if (pb < 0) {\n            pb = -pb;\n          }\n          var pc = p - upLeft;\n          if (pc < 0) {\n            pc = -pc;\n          }\n\n          c = rawBytes[i];\n          if (pa <= pb && pa <= pc) {\n            buffer[j++] = left + c;\n          } else if (pb <= pc) {\n            buffer[j++] = up + c;\n          } else {\n            buffer[j++] = upLeft + c;\n          }\n        }\n        break;\n      default:\n        throw new FormatError(`Unsupported predictor: ${predictor}`);\n    }\n    this.bufferLength += rowBytes;\n  };\n\n  return PredictorStream;\n})();\n\nvar DecryptStream = (function DecryptStreamClosure() {\n  // eslint-disable-next-line no-shadow\n  function DecryptStream(str, maybeLength, decrypt) {\n    this.str = str;\n    this.dict = str.dict;\n    this.decrypt = decrypt;\n    this.nextChunk = null;\n    this.initialized = false;\n\n    DecodeStream.call(this, maybeLength);\n  }\n\n  var chunkSize = 512;\n\n  DecryptStream.prototype = Object.create(DecodeStream.prototype);\n\n  DecryptStream.prototype.readBlock = function DecryptStream_readBlock() {\n    var chunk;\n    if (this.initialized) {\n      chunk = this.nextChunk;\n    } else {\n      chunk = this.str.getBytes(chunkSize);\n      this.initialized = true;\n    }\n    if (!chunk || chunk.length === 0) {\n      this.eof = true;\n      return;\n    }\n    this.nextChunk = this.str.getBytes(chunkSize);\n    var hasMoreData = this.nextChunk && this.nextChunk.length > 0;\n\n    var decrypt = this.decrypt;\n    chunk = decrypt(chunk, !hasMoreData);\n\n    var bufferLength = this.bufferLength;\n    var i,\n      n = chunk.length;\n    var buffer = this.ensureBuffer(bufferLength + n);\n    for (i = 0; i < n; i++) {\n      buffer[bufferLength++] = chunk[i];\n    }\n    this.bufferLength = bufferLength;\n  };\n\n  return DecryptStream;\n})();\n\nvar Ascii85Stream = (function Ascii85StreamClosure() {\n  // eslint-disable-next-line no-shadow\n  function Ascii85Stream(str, maybeLength) {\n    this.str = str;\n    this.dict = str.dict;\n    this.input = new Uint8Array(5);\n\n    // Most streams increase in size when decoded, but Ascii85 streams\n    // typically shrink by ~20%.\n    if (maybeLength) {\n      maybeLength = 0.8 * maybeLength;\n    }\n    DecodeStream.call(this, maybeLength);\n  }\n\n  Ascii85Stream.prototype = Object.create(DecodeStream.prototype);\n\n  Ascii85Stream.prototype.readBlock = function Ascii85Stream_readBlock() {\n    var TILDA_CHAR = 0x7e; // '~'\n    var Z_LOWER_CHAR = 0x7a; // 'z'\n    var EOF = -1;\n\n    var str = this.str;\n\n    var c = str.getByte();\n    while (isWhiteSpace(c)) {\n      c = str.getByte();\n    }\n\n    if (c === EOF || c === TILDA_CHAR) {\n      this.eof = true;\n      return;\n    }\n\n    var bufferLength = this.bufferLength,\n      buffer;\n    var i;\n\n    // special code for z\n    if (c === Z_LOWER_CHAR) {\n      buffer = this.ensureBuffer(bufferLength + 4);\n      for (i = 0; i < 4; ++i) {\n        buffer[bufferLength + i] = 0;\n      }\n      this.bufferLength += 4;\n    } else {\n      var input = this.input;\n      input[0] = c;\n      for (i = 1; i < 5; ++i) {\n        c = str.getByte();\n        while (isWhiteSpace(c)) {\n          c = str.getByte();\n        }\n\n        input[i] = c;\n\n        if (c === EOF || c === TILDA_CHAR) {\n          break;\n        }\n      }\n      buffer = this.ensureBuffer(bufferLength + i - 1);\n      this.bufferLength += i - 1;\n\n      // partial ending;\n      if (i < 5) {\n        for (; i < 5; ++i) {\n          input[i] = 0x21 + 84;\n        }\n        this.eof = true;\n      }\n      var t = 0;\n      for (i = 0; i < 5; ++i) {\n        t = t * 85 + (input[i] - 0x21);\n      }\n\n      for (i = 3; i >= 0; --i) {\n        buffer[bufferLength + i] = t & 0xff;\n        t >>= 8;\n      }\n    }\n  };\n\n  return Ascii85Stream;\n})();\n\nvar AsciiHexStream = (function AsciiHexStreamClosure() {\n  // eslint-disable-next-line no-shadow\n  function AsciiHexStream(str, maybeLength) {\n    this.str = str;\n    this.dict = str.dict;\n\n    this.firstDigit = -1;\n\n    // Most streams increase in size when decoded, but AsciiHex streams shrink\n    // by 50%.\n    if (maybeLength) {\n      maybeLength = 0.5 * maybeLength;\n    }\n    DecodeStream.call(this, maybeLength);\n  }\n\n  AsciiHexStream.prototype = Object.create(DecodeStream.prototype);\n\n  AsciiHexStream.prototype.readBlock = function AsciiHexStream_readBlock() {\n    var UPSTREAM_BLOCK_SIZE = 8000;\n    var bytes = this.str.getBytes(UPSTREAM_BLOCK_SIZE);\n    if (!bytes.length) {\n      this.eof = true;\n      return;\n    }\n\n    var maxDecodeLength = (bytes.length + 1) >> 1;\n    var buffer = this.ensureBuffer(this.bufferLength + maxDecodeLength);\n    var bufferLength = this.bufferLength;\n\n    var firstDigit = this.firstDigit;\n    for (var i = 0, ii = bytes.length; i < ii; i++) {\n      var ch = bytes[i],\n        digit;\n      if (ch >= /* '0' = */ 0x30 && ch <= /* '9' = */ 0x39) {\n        digit = ch & 0x0f;\n      } else if (\n        (ch >= /* 'A' = */ 0x41 && ch <= /* 'Z' = */ 0x46) ||\n        (ch >= /* 'a' = */ 0x61 && ch <= /* 'z' = */ 0x66)\n      ) {\n        digit = (ch & 0x0f) + 9;\n      } else if (ch === /* '>' = */ 0x3e) {\n        this.eof = true;\n        break;\n      } else {\n        // Probably whitespace, ignoring.\n        continue;\n      }\n      if (firstDigit < 0) {\n        firstDigit = digit;\n      } else {\n        buffer[bufferLength++] = (firstDigit << 4) | digit;\n        firstDigit = -1;\n      }\n    }\n    if (firstDigit >= 0 && this.eof) {\n      // incomplete byte\n      buffer[bufferLength++] = firstDigit << 4;\n      firstDigit = -1;\n    }\n    this.firstDigit = firstDigit;\n    this.bufferLength = bufferLength;\n  };\n\n  return AsciiHexStream;\n})();\n\nvar RunLengthStream = (function RunLengthStreamClosure() {\n  // eslint-disable-next-line no-shadow\n  function RunLengthStream(str, maybeLength) {\n    this.str = str;\n    this.dict = str.dict;\n\n    DecodeStream.call(this, maybeLength);\n  }\n\n  RunLengthStream.prototype = Object.create(DecodeStream.prototype);\n\n  RunLengthStream.prototype.readBlock = function RunLengthStream_readBlock() {\n    // The repeatHeader has following format. The first byte defines type of run\n    // and amount of bytes to repeat/copy: n = 0 through 127 - copy next n bytes\n    // (in addition to the second byte from the header), n = 129 through 255 -\n    // duplicate the second byte from the header (257 - n) times, n = 128 - end.\n    var repeatHeader = this.str.getBytes(2);\n    if (!repeatHeader || repeatHeader.length < 2 || repeatHeader[0] === 128) {\n      this.eof = true;\n      return;\n    }\n\n    var buffer;\n    var bufferLength = this.bufferLength;\n    var n = repeatHeader[0];\n    if (n < 128) {\n      // copy n bytes\n      buffer = this.ensureBuffer(bufferLength + n + 1);\n      buffer[bufferLength++] = repeatHeader[1];\n      if (n > 0) {\n        var source = this.str.getBytes(n);\n        buffer.set(source, bufferLength);\n        bufferLength += n;\n      }\n    } else {\n      n = 257 - n;\n      var b = repeatHeader[1];\n      buffer = this.ensureBuffer(bufferLength + n + 1);\n      for (var i = 0; i < n; i++) {\n        buffer[bufferLength++] = b;\n      }\n    }\n    this.bufferLength = bufferLength;\n  };\n\n  return RunLengthStream;\n})();\n\nvar LZWStream = (function LZWStreamClosure() {\n  // eslint-disable-next-line no-shadow\n  function LZWStream(str, maybeLength, earlyChange) {\n    this.str = str;\n    this.dict = str.dict;\n    this.cachedData = 0;\n    this.bitsCached = 0;\n\n    var maxLzwDictionarySize = 4096;\n    var lzwState = {\n      earlyChange,\n      codeLength: 9,\n      nextCode: 258,\n      dictionaryValues: new Uint8Array(maxLzwDictionarySize),\n      dictionaryLengths: new Uint16Array(maxLzwDictionarySize),\n      dictionaryPrevCodes: new Uint16Array(maxLzwDictionarySize),\n      currentSequence: new Uint8Array(maxLzwDictionarySize),\n      currentSequenceLength: 0,\n    };\n    for (var i = 0; i < 256; ++i) {\n      lzwState.dictionaryValues[i] = i;\n      lzwState.dictionaryLengths[i] = 1;\n    }\n    this.lzwState = lzwState;\n\n    DecodeStream.call(this, maybeLength);\n  }\n\n  LZWStream.prototype = Object.create(DecodeStream.prototype);\n\n  LZWStream.prototype.readBits = function LZWStream_readBits(n) {\n    var bitsCached = this.bitsCached;\n    var cachedData = this.cachedData;\n    while (bitsCached < n) {\n      var c = this.str.getByte();\n      if (c === -1) {\n        this.eof = true;\n        return null;\n      }\n      cachedData = (cachedData << 8) | c;\n      bitsCached += 8;\n    }\n    this.bitsCached = bitsCached -= n;\n    this.cachedData = cachedData;\n    this.lastCode = null;\n    return (cachedData >>> bitsCached) & ((1 << n) - 1);\n  };\n\n  LZWStream.prototype.readBlock = function LZWStream_readBlock() {\n    var blockSize = 512;\n    var estimatedDecodedSize = blockSize * 2,\n      decodedSizeDelta = blockSize;\n    var i, j, q;\n\n    var lzwState = this.lzwState;\n    if (!lzwState) {\n      return; // eof was found\n    }\n\n    var earlyChange = lzwState.earlyChange;\n    var nextCode = lzwState.nextCode;\n    var dictionaryValues = lzwState.dictionaryValues;\n    var dictionaryLengths = lzwState.dictionaryLengths;\n    var dictionaryPrevCodes = lzwState.dictionaryPrevCodes;\n    var codeLength = lzwState.codeLength;\n    var prevCode = lzwState.prevCode;\n    var currentSequence = lzwState.currentSequence;\n    var currentSequenceLength = lzwState.currentSequenceLength;\n\n    var decodedLength = 0;\n    var currentBufferLength = this.bufferLength;\n    var buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n\n    for (i = 0; i < blockSize; i++) {\n      var code = this.readBits(codeLength);\n      var hasPrev = currentSequenceLength > 0;\n      if (code < 256) {\n        currentSequence[0] = code;\n        currentSequenceLength = 1;\n      } else if (code >= 258) {\n        if (code < nextCode) {\n          currentSequenceLength = dictionaryLengths[code];\n          for (j = currentSequenceLength - 1, q = code; j >= 0; j--) {\n            currentSequence[j] = dictionaryValues[q];\n            q = dictionaryPrevCodes[q];\n          }\n        } else {\n          currentSequence[currentSequenceLength++] = currentSequence[0];\n        }\n      } else if (code === 256) {\n        codeLength = 9;\n        nextCode = 258;\n        currentSequenceLength = 0;\n        continue;\n      } else {\n        this.eof = true;\n        delete this.lzwState;\n        break;\n      }\n\n      if (hasPrev) {\n        dictionaryPrevCodes[nextCode] = prevCode;\n        dictionaryLengths[nextCode] = dictionaryLengths[prevCode] + 1;\n        dictionaryValues[nextCode] = currentSequence[0];\n        nextCode++;\n        codeLength =\n          (nextCode + earlyChange) & (nextCode + earlyChange - 1)\n            ? codeLength\n            : Math.min(\n                Math.log(nextCode + earlyChange) / 0.6931471805599453 + 1,\n                12\n              ) | 0;\n      }\n      prevCode = code;\n\n      decodedLength += currentSequenceLength;\n      if (estimatedDecodedSize < decodedLength) {\n        do {\n          estimatedDecodedSize += decodedSizeDelta;\n        } while (estimatedDecodedSize < decodedLength);\n        buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n      }\n      for (j = 0; j < currentSequenceLength; j++) {\n        buffer[currentBufferLength++] = currentSequence[j];\n      }\n    }\n    lzwState.nextCode = nextCode;\n    lzwState.codeLength = codeLength;\n    lzwState.prevCode = prevCode;\n    lzwState.currentSequenceLength = currentSequenceLength;\n\n    this.bufferLength = currentBufferLength;\n  };\n\n  return LZWStream;\n})();\n\nvar NullStream = (function NullStreamClosure() {\n  // eslint-disable-next-line no-shadow\n  function NullStream() {\n    Stream.call(this, new Uint8Array(0));\n  }\n\n  NullStream.prototype = Stream.prototype;\n\n  return NullStream;\n})();\n\nexport {\n  Ascii85Stream,\n  AsciiHexStream,\n  DecryptStream,\n  DecodeStream,\n  FlateStream,\n  NullStream,\n  PredictorStream,\n  RunLengthStream,\n  Stream,\n  StreamsSequenceStream,\n  StringStream,\n  LZWStream,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Dict, isDict } from \"./primitives.js\";\nimport { CCITTFaxDecoder } from \"./ccitt.js\";\nimport { DecodeStream } from \"./stream.js\";\n\nvar CCITTFaxStream = (function CCITTFaxStreamClosure() {\n  // eslint-disable-next-line no-shadow\n  function CCITTFaxStream(str, maybeLength, params) {\n    this.str = str;\n    this.dict = str.dict;\n\n    if (!isDict(params)) {\n      params = Dict.empty;\n    }\n\n    const source = {\n      next() {\n        return str.getByte();\n      },\n    };\n    this.ccittFaxDecoder = new CCITTFaxDecoder(source, {\n      K: params.get(\"K\"),\n      EndOfLine: params.get(\"EndOfLine\"),\n      EncodedByteAlign: params.get(\"EncodedByteAlign\"),\n      Columns: params.get(\"Columns\"),\n      Rows: params.get(\"Rows\"),\n      EndOfBlock: params.get(\"EndOfBlock\"),\n      BlackIs1: params.get(\"BlackIs1\"),\n    });\n\n    DecodeStream.call(this, maybeLength);\n  }\n\n  CCITTFaxStream.prototype = Object.create(DecodeStream.prototype);\n\n  CCITTFaxStream.prototype.readBlock = function () {\n    while (!this.eof) {\n      const c = this.ccittFaxDecoder.readNextChar();\n      if (c === -1) {\n        this.eof = true;\n        return;\n      }\n      this.ensureBuffer(this.bufferLength + 1);\n      this.buffer[this.bufferLength++] = c;\n    }\n  };\n\n  return CCITTFaxStream;\n})();\n\nexport { CCITTFaxStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* Copyright 1996-2003 Glyph & Cog, LLC\n *\n * The CCITT stream implementation contained in this file is a JavaScript port\n * of XPDF's implementation, made available under the Apache 2.0 open source\n * license.\n */\n\n/**\n * @typedef {Object} CCITTFaxDecoderSource\n * @property {function} next - Method that return one byte of data for decoding,\n *   or -1 when EOF is reached.\n */\n\nimport { info } from \"../shared/util.js\";\n\nconst CCITTFaxDecoder = (function CCITTFaxDecoder() {\n  const ccittEOL = -2;\n  const ccittEOF = -1;\n  const twoDimPass = 0;\n  const twoDimHoriz = 1;\n  const twoDimVert0 = 2;\n  const twoDimVertR1 = 3;\n  const twoDimVertL1 = 4;\n  const twoDimVertR2 = 5;\n  const twoDimVertL2 = 6;\n  const twoDimVertR3 = 7;\n  const twoDimVertL3 = 8;\n\n  // prettier-ignore\n  const twoDimTable = [\n    [-1, -1], [-1, -1],                   // 000000x\n    [7, twoDimVertL3],                    // 0000010\n    [7, twoDimVertR3],                    // 0000011\n    [6, twoDimVertL2], [6, twoDimVertL2], // 000010x\n    [6, twoDimVertR2], [6, twoDimVertR2], // 000011x\n    [4, twoDimPass], [4, twoDimPass],     // 0001xxx\n    [4, twoDimPass], [4, twoDimPass],\n    [4, twoDimPass], [4, twoDimPass],\n    [4, twoDimPass], [4, twoDimPass],\n    [3, twoDimHoriz], [3, twoDimHoriz],   // 001xxxx\n    [3, twoDimHoriz], [3, twoDimHoriz],\n    [3, twoDimHoriz], [3, twoDimHoriz],\n    [3, twoDimHoriz], [3, twoDimHoriz],\n    [3, twoDimHoriz], [3, twoDimHoriz],\n    [3, twoDimHoriz], [3, twoDimHoriz],\n    [3, twoDimHoriz], [3, twoDimHoriz],\n    [3, twoDimHoriz], [3, twoDimHoriz],\n    [3, twoDimVertL1], [3, twoDimVertL1], // 010xxxx\n    [3, twoDimVertL1], [3, twoDimVertL1],\n    [3, twoDimVertL1], [3, twoDimVertL1],\n    [3, twoDimVertL1], [3, twoDimVertL1],\n    [3, twoDimVertL1], [3, twoDimVertL1],\n    [3, twoDimVertL1], [3, twoDimVertL1],\n    [3, twoDimVertL1], [3, twoDimVertL1],\n    [3, twoDimVertL1], [3, twoDimVertL1],\n    [3, twoDimVertR1], [3, twoDimVertR1], // 011xxxx\n    [3, twoDimVertR1], [3, twoDimVertR1],\n    [3, twoDimVertR1], [3, twoDimVertR1],\n    [3, twoDimVertR1], [3, twoDimVertR1],\n    [3, twoDimVertR1], [3, twoDimVertR1],\n    [3, twoDimVertR1], [3, twoDimVertR1],\n    [3, twoDimVertR1], [3, twoDimVertR1],\n    [3, twoDimVertR1], [3, twoDimVertR1],\n    [1, twoDimVert0], [1, twoDimVert0],   // 1xxxxxx\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0]\n  ];\n\n  // prettier-ignore\n  const whiteTable1 = [\n    [-1, -1],                               // 00000\n    [12, ccittEOL],                         // 00001\n    [-1, -1], [-1, -1],                     // 0001x\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 001xx\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 010xx\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 011xx\n    [11, 1792], [11, 1792],                 // 1000x\n    [12, 1984],                             // 10010\n    [12, 2048],                             // 10011\n    [12, 2112],                             // 10100\n    [12, 2176],                             // 10101\n    [12, 2240],                             // 10110\n    [12, 2304],                             // 10111\n    [11, 1856], [11, 1856],                 // 1100x\n    [11, 1920], [11, 1920],                 // 1101x\n    [12, 2368],                             // 11100\n    [12, 2432],                             // 11101\n    [12, 2496],                             // 11110\n    [12, 2560]                              // 11111\n  ];\n\n  // prettier-ignore\n  const whiteTable2 = [\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1],     // 0000000xx\n    [8, 29], [8, 29],                           // 00000010x\n    [8, 30], [8, 30],                           // 00000011x\n    [8, 45], [8, 45],                           // 00000100x\n    [8, 46], [8, 46],                           // 00000101x\n    [7, 22], [7, 22], [7, 22], [7, 22],         // 0000011xx\n    [7, 23], [7, 23], [7, 23], [7, 23],         // 0000100xx\n    [8, 47], [8, 47],                           // 00001010x\n    [8, 48], [8, 48],                           // 00001011x\n    [6, 13], [6, 13], [6, 13], [6, 13],         // 000011xxx\n    [6, 13], [6, 13], [6, 13], [6, 13],\n    [7, 20], [7, 20], [7, 20], [7, 20],         // 0001000xx\n    [8, 33], [8, 33],                           // 00010010x\n    [8, 34], [8, 34],                           // 00010011x\n    [8, 35], [8, 35],                           // 00010100x\n    [8, 36], [8, 36],                           // 00010101x\n    [8, 37], [8, 37],                           // 00010110x\n    [8, 38], [8, 38],                           // 00010111x\n    [7, 19], [7, 19], [7, 19], [7, 19],         // 0001100xx\n    [8, 31], [8, 31],                           // 00011010x\n    [8, 32], [8, 32],                           // 00011011x\n    [6, 1], [6, 1], [6, 1], [6, 1],             // 000111xxx\n    [6, 1], [6, 1], [6, 1], [6, 1],\n    [6, 12], [6, 12], [6, 12], [6, 12],         // 001000xxx\n    [6, 12], [6, 12], [6, 12], [6, 12],\n    [8, 53], [8, 53],                           // 00100100x\n    [8, 54], [8, 54],                           // 00100101x\n    [7, 26], [7, 26], [7, 26], [7, 26],         // 0010011xx\n    [8, 39], [8, 39],                           // 00101000x\n    [8, 40], [8, 40],                           // 00101001x\n    [8, 41], [8, 41],                           // 00101010x\n    [8, 42], [8, 42],                           // 00101011x\n    [8, 43], [8, 43],                           // 00101100x\n    [8, 44], [8, 44],                           // 00101101x\n    [7, 21], [7, 21], [7, 21], [7, 21],         // 0010111xx\n    [7, 28], [7, 28], [7, 28], [7, 28],         // 0011000xx\n    [8, 61], [8, 61],                           // 00110010x\n    [8, 62], [8, 62],                           // 00110011x\n    [8, 63], [8, 63],                           // 00110100x\n    [8, 0], [8, 0],                             // 00110101x\n    [8, 320], [8, 320],                         // 00110110x\n    [8, 384], [8, 384],                         // 00110111x\n    [5, 10], [5, 10], [5, 10], [5, 10],         // 00111xxxx\n    [5, 10], [5, 10], [5, 10], [5, 10],\n    [5, 10], [5, 10], [5, 10], [5, 10],\n    [5, 10], [5, 10], [5, 10], [5, 10],\n    [5, 11], [5, 11], [5, 11], [5, 11],         // 01000xxxx\n    [5, 11], [5, 11], [5, 11], [5, 11],\n    [5, 11], [5, 11], [5, 11], [5, 11],\n    [5, 11], [5, 11], [5, 11], [5, 11],\n    [7, 27], [7, 27], [7, 27], [7, 27],         // 0100100xx\n    [8, 59], [8, 59],                           // 01001010x\n    [8, 60], [8, 60],                           // 01001011x\n    [9, 1472],                                  // 010011000\n    [9, 1536],                                  // 010011001\n    [9, 1600],                                  // 010011010\n    [9, 1728],                                  // 010011011\n    [7, 18], [7, 18], [7, 18], [7, 18],         // 0100111xx\n    [7, 24], [7, 24], [7, 24], [7, 24],         // 0101000xx\n    [8, 49], [8, 49],                           // 01010010x\n    [8, 50], [8, 50],                           // 01010011x\n    [8, 51], [8, 51],                           // 01010100x\n    [8, 52], [8, 52],                           // 01010101x\n    [7, 25], [7, 25], [7, 25], [7, 25],         // 0101011xx\n    [8, 55], [8, 55],                           // 01011000x\n    [8, 56], [8, 56],                           // 01011001x\n    [8, 57], [8, 57],                           // 01011010x\n    [8, 58], [8, 58],                           // 01011011x\n    [6, 192], [6, 192], [6, 192], [6, 192],     // 010111xxx\n    [6, 192], [6, 192], [6, 192], [6, 192],\n    [6, 1664], [6, 1664], [6, 1664], [6, 1664], // 011000xxx\n    [6, 1664], [6, 1664], [6, 1664], [6, 1664],\n    [8, 448], [8, 448],                         // 01100100x\n    [8, 512], [8, 512],                         // 01100101x\n    [9, 704],                                   // 011001100\n    [9, 768],                                   // 011001101\n    [8, 640], [8, 640],                         // 01100111x\n    [8, 576], [8, 576],                         // 01101000x\n    [9, 832],                                   // 011010010\n    [9, 896],                                   // 011010011\n    [9, 960],                                   // 011010100\n    [9, 1024],                                  // 011010101\n    [9, 1088],                                  // 011010110\n    [9, 1152],                                  // 011010111\n    [9, 1216],                                  // 011011000\n    [9, 1280],                                  // 011011001\n    [9, 1344],                                  // 011011010\n    [9, 1408],                                  // 011011011\n    [7, 256], [7, 256], [7, 256], [7, 256],     // 0110111xx\n    [4, 2], [4, 2], [4, 2], [4, 2],             // 0111xxxxx\n    [4, 2], [4, 2], [4, 2], [4, 2],\n    [4, 2], [4, 2], [4, 2], [4, 2],\n    [4, 2], [4, 2], [4, 2], [4, 2],\n    [4, 2], [4, 2], [4, 2], [4, 2],\n    [4, 2], [4, 2], [4, 2], [4, 2],\n    [4, 2], [4, 2], [4, 2], [4, 2],\n    [4, 2], [4, 2], [4, 2], [4, 2],\n    [4, 3], [4, 3], [4, 3], [4, 3],             // 1000xxxxx\n    [4, 3], [4, 3], [4, 3], [4, 3],\n    [4, 3], [4, 3], [4, 3], [4, 3],\n    [4, 3], [4, 3], [4, 3], [4, 3],\n    [4, 3], [4, 3], [4, 3], [4, 3],\n    [4, 3], [4, 3], [4, 3], [4, 3],\n    [4, 3], [4, 3], [4, 3], [4, 3],\n    [4, 3], [4, 3], [4, 3], [4, 3],\n    [5, 128], [5, 128], [5, 128], [5, 128],     // 10010xxxx\n    [5, 128], [5, 128], [5, 128], [5, 128],\n    [5, 128], [5, 128], [5, 128], [5, 128],\n    [5, 128], [5, 128], [5, 128], [5, 128],\n    [5, 8], [5, 8], [5, 8], [5, 8],             // 10011xxxx\n    [5, 8], [5, 8], [5, 8], [5, 8],\n    [5, 8], [5, 8], [5, 8], [5, 8],\n    [5, 8], [5, 8], [5, 8], [5, 8],\n    [5, 9], [5, 9], [5, 9], [5, 9],             // 10100xxxx\n    [5, 9], [5, 9], [5, 9], [5, 9],\n    [5, 9], [5, 9], [5, 9], [5, 9],\n    [5, 9], [5, 9], [5, 9], [5, 9],\n    [6, 16], [6, 16], [6, 16], [6, 16],         // 101010xxx\n    [6, 16], [6, 16], [6, 16], [6, 16],\n    [6, 17], [6, 17], [6, 17], [6, 17],         // 101011xxx\n    [6, 17], [6, 17], [6, 17], [6, 17],\n    [4, 4], [4, 4], [4, 4], [4, 4],             // 1011xxxxx\n    [4, 4], [4, 4], [4, 4], [4, 4],\n    [4, 4], [4, 4], [4, 4], [4, 4],\n    [4, 4], [4, 4], [4, 4], [4, 4],\n    [4, 4], [4, 4], [4, 4], [4, 4],\n    [4, 4], [4, 4], [4, 4], [4, 4],\n    [4, 4], [4, 4], [4, 4], [4, 4],\n    [4, 4], [4, 4], [4, 4], [4, 4],\n    [4, 5], [4, 5], [4, 5], [4, 5],             // 1100xxxxx\n    [4, 5], [4, 5], [4, 5], [4, 5],\n    [4, 5], [4, 5], [4, 5], [4, 5],\n    [4, 5], [4, 5], [4, 5], [4, 5],\n    [4, 5], [4, 5], [4, 5], [4, 5],\n    [4, 5], [4, 5], [4, 5], [4, 5],\n    [4, 5], [4, 5], [4, 5], [4, 5],\n    [4, 5], [4, 5], [4, 5], [4, 5],\n    [6, 14], [6, 14], [6, 14], [6, 14],         // 110100xxx\n    [6, 14], [6, 14], [6, 14], [6, 14],\n    [6, 15], [6, 15], [6, 15], [6, 15],         // 110101xxx\n    [6, 15], [6, 15], [6, 15], [6, 15],\n    [5, 64], [5, 64], [5, 64], [5, 64],         // 11011xxxx\n    [5, 64], [5, 64], [5, 64], [5, 64],\n    [5, 64], [5, 64], [5, 64], [5, 64],\n    [5, 64], [5, 64], [5, 64], [5, 64],\n    [4, 6], [4, 6], [4, 6], [4, 6],             // 1110xxxxx\n    [4, 6], [4, 6], [4, 6], [4, 6],\n    [4, 6], [4, 6], [4, 6], [4, 6],\n    [4, 6], [4, 6], [4, 6], [4, 6],\n    [4, 6], [4, 6], [4, 6], [4, 6],\n    [4, 6], [4, 6], [4, 6], [4, 6],\n    [4, 6], [4, 6], [4, 6], [4, 6],\n    [4, 6], [4, 6], [4, 6], [4, 6],\n    [4, 7], [4, 7], [4, 7], [4, 7],             // 1111xxxxx\n    [4, 7], [4, 7], [4, 7], [4, 7],\n    [4, 7], [4, 7], [4, 7], [4, 7],\n    [4, 7], [4, 7], [4, 7], [4, 7],\n    [4, 7], [4, 7], [4, 7], [4, 7],\n    [4, 7], [4, 7], [4, 7], [4, 7],\n    [4, 7], [4, 7], [4, 7], [4, 7],\n    [4, 7], [4, 7], [4, 7], [4, 7]\n  ];\n\n  // prettier-ignore\n  const blackTable1 = [\n    [-1, -1], [-1, -1],                             // 000000000000x\n    [12, ccittEOL], [12, ccittEOL],                 // 000000000001x\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000001xx\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000010xx\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000011xx\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000100xx\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000101xx\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000110xx\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000111xx\n    [11, 1792], [11, 1792], [11, 1792], [11, 1792], // 00000001000xx\n    [12, 1984], [12, 1984],                         // 000000010010x\n    [12, 2048], [12, 2048],                         // 000000010011x\n    [12, 2112], [12, 2112],                         // 000000010100x\n    [12, 2176], [12, 2176],                         // 000000010101x\n    [12, 2240], [12, 2240],                         // 000000010110x\n    [12, 2304], [12, 2304],                         // 000000010111x\n    [11, 1856], [11, 1856], [11, 1856], [11, 1856], // 00000001100xx\n    [11, 1920], [11, 1920], [11, 1920], [11, 1920], // 00000001101xx\n    [12, 2368], [12, 2368],                         // 000000011100x\n    [12, 2432], [12, 2432],                         // 000000011101x\n    [12, 2496], [12, 2496],                         // 000000011110x\n    [12, 2560], [12, 2560],                         // 000000011111x\n    [10, 18], [10, 18], [10, 18], [10, 18],         // 0000001000xxx\n    [10, 18], [10, 18], [10, 18], [10, 18],\n    [12, 52], [12, 52],                             // 000000100100x\n    [13, 640],                                      // 0000001001010\n    [13, 704],                                      // 0000001001011\n    [13, 768],                                      // 0000001001100\n    [13, 832],                                      // 0000001001101\n    [12, 55], [12, 55],                             // 000000100111x\n    [12, 56], [12, 56],                             // 000000101000x\n    [13, 1280],                                     // 0000001010010\n    [13, 1344],                                     // 0000001010011\n    [13, 1408],                                     // 0000001010100\n    [13, 1472],                                     // 0000001010101\n    [12, 59], [12, 59],                             // 000000101011x\n    [12, 60], [12, 60],                             // 000000101100x\n    [13, 1536],                                     // 0000001011010\n    [13, 1600],                                     // 0000001011011\n    [11, 24], [11, 24], [11, 24], [11, 24],         // 00000010111xx\n    [11, 25], [11, 25], [11, 25], [11, 25],         // 00000011000xx\n    [13, 1664],                                     // 0000001100100\n    [13, 1728],                                     // 0000001100101\n    [12, 320], [12, 320],                           // 000000110011x\n    [12, 384], [12, 384],                           // 000000110100x\n    [12, 448], [12, 448],                           // 000000110101x\n    [13, 512],                                      // 0000001101100\n    [13, 576],                                      // 0000001101101\n    [12, 53], [12, 53],                             // 000000110111x\n    [12, 54], [12, 54],                             // 000000111000x\n    [13, 896],                                      // 0000001110010\n    [13, 960],                                      // 0000001110011\n    [13, 1024],                                     // 0000001110100\n    [13, 1088],                                     // 0000001110101\n    [13, 1152],                                     // 0000001110110\n    [13, 1216],                                     // 0000001110111\n    [10, 64], [10, 64], [10, 64], [10, 64],         // 0000001111xxx\n    [10, 64], [10, 64], [10, 64], [10, 64]\n  ];\n\n  // prettier-ignore\n  const blackTable2 = [\n    [8, 13], [8, 13], [8, 13], [8, 13],     // 00000100xxxx\n    [8, 13], [8, 13], [8, 13], [8, 13],\n    [8, 13], [8, 13], [8, 13], [8, 13],\n    [8, 13], [8, 13], [8, 13], [8, 13],\n    [11, 23], [11, 23],                     // 00000101000x\n    [12, 50],                               // 000001010010\n    [12, 51],                               // 000001010011\n    [12, 44],                               // 000001010100\n    [12, 45],                               // 000001010101\n    [12, 46],                               // 000001010110\n    [12, 47],                               // 000001010111\n    [12, 57],                               // 000001011000\n    [12, 58],                               // 000001011001\n    [12, 61],                               // 000001011010\n    [12, 256],                              // 000001011011\n    [10, 16], [10, 16], [10, 16], [10, 16], // 0000010111xx\n    [10, 17], [10, 17], [10, 17], [10, 17], // 0000011000xx\n    [12, 48],                               // 000001100100\n    [12, 49],                               // 000001100101\n    [12, 62],                               // 000001100110\n    [12, 63],                               // 000001100111\n    [12, 30],                               // 000001101000\n    [12, 31],                               // 000001101001\n    [12, 32],                               // 000001101010\n    [12, 33],                               // 000001101011\n    [12, 40],                               // 000001101100\n    [12, 41],                               // 000001101101\n    [11, 22], [11, 22],                     // 00000110111x\n    [8, 14], [8, 14], [8, 14], [8, 14],     // 00000111xxxx\n    [8, 14], [8, 14], [8, 14], [8, 14],\n    [8, 14], [8, 14], [8, 14], [8, 14],\n    [8, 14], [8, 14], [8, 14], [8, 14],\n    [7, 10], [7, 10], [7, 10], [7, 10],     // 0000100xxxxx\n    [7, 10], [7, 10], [7, 10], [7, 10],\n    [7, 10], [7, 10], [7, 10], [7, 10],\n    [7, 10], [7, 10], [7, 10], [7, 10],\n    [7, 10], [7, 10], [7, 10], [7, 10],\n    [7, 10], [7, 10], [7, 10], [7, 10],\n    [7, 10], [7, 10], [7, 10], [7, 10],\n    [7, 10], [7, 10], [7, 10], [7, 10],\n    [7, 11], [7, 11], [7, 11], [7, 11],     // 0000101xxxxx\n    [7, 11], [7, 11], [7, 11], [7, 11],\n    [7, 11], [7, 11], [7, 11], [7, 11],\n    [7, 11], [7, 11], [7, 11], [7, 11],\n    [7, 11], [7, 11], [7, 11], [7, 11],\n    [7, 11], [7, 11], [7, 11], [7, 11],\n    [7, 11], [7, 11], [7, 11], [7, 11],\n    [7, 11], [7, 11], [7, 11], [7, 11],\n    [9, 15], [9, 15], [9, 15], [9, 15],     // 000011000xxx\n    [9, 15], [9, 15], [9, 15], [9, 15],\n    [12, 128],                              // 000011001000\n    [12, 192],                              // 000011001001\n    [12, 26],                               // 000011001010\n    [12, 27],                               // 000011001011\n    [12, 28],                               // 000011001100\n    [12, 29],                               // 000011001101\n    [11, 19], [11, 19],                     // 00001100111x\n    [11, 20], [11, 20],                     // 00001101000x\n    [12, 34],                               // 000011010010\n    [12, 35],                               // 000011010011\n    [12, 36],                               // 000011010100\n    [12, 37],                               // 000011010101\n    [12, 38],                               // 000011010110\n    [12, 39],                               // 000011010111\n    [11, 21], [11, 21],                     // 00001101100x\n    [12, 42],                               // 000011011010\n    [12, 43],                               // 000011011011\n    [10, 0], [10, 0], [10, 0], [10, 0],     // 0000110111xx\n    [7, 12], [7, 12], [7, 12], [7, 12],     // 0000111xxxxx\n    [7, 12], [7, 12], [7, 12], [7, 12],\n    [7, 12], [7, 12], [7, 12], [7, 12],\n    [7, 12], [7, 12], [7, 12], [7, 12],\n    [7, 12], [7, 12], [7, 12], [7, 12],\n    [7, 12], [7, 12], [7, 12], [7, 12],\n    [7, 12], [7, 12], [7, 12], [7, 12],\n    [7, 12], [7, 12], [7, 12], [7, 12]\n  ];\n\n  // prettier-ignore\n  const blackTable3 = [\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 0000xx\n    [6, 9],                                 // 000100\n    [6, 8],                                 // 000101\n    [5, 7], [5, 7],                         // 00011x\n    [4, 6], [4, 6], [4, 6], [4, 6],         // 0010xx\n    [4, 5], [4, 5], [4, 5], [4, 5],         // 0011xx\n    [3, 1], [3, 1], [3, 1], [3, 1],         // 010xxx\n    [3, 1], [3, 1], [3, 1], [3, 1],\n    [3, 4], [3, 4], [3, 4], [3, 4],         // 011xxx\n    [3, 4], [3, 4], [3, 4], [3, 4],\n    [2, 3], [2, 3], [2, 3], [2, 3],         // 10xxxx\n    [2, 3], [2, 3], [2, 3], [2, 3],\n    [2, 3], [2, 3], [2, 3], [2, 3],\n    [2, 3], [2, 3], [2, 3], [2, 3],\n    [2, 2], [2, 2], [2, 2], [2, 2],         // 11xxxx\n    [2, 2], [2, 2], [2, 2], [2, 2],\n    [2, 2], [2, 2], [2, 2], [2, 2],\n    [2, 2], [2, 2], [2, 2], [2, 2]\n  ];\n\n  /**\n   * @param {CCITTFaxDecoderSource} source - The data which should be decoded.\n   * @param {Object} [options] - Decoding options.\n   */\n  // eslint-disable-next-line no-shadow\n  function CCITTFaxDecoder(source, options = {}) {\n    if (!source || typeof source.next !== \"function\") {\n      throw new Error('CCITTFaxDecoder - invalid \"source\" parameter.');\n    }\n    this.source = source;\n    this.eof = false;\n\n    this.encoding = options.K || 0;\n    this.eoline = options.EndOfLine || false;\n    this.byteAlign = options.EncodedByteAlign || false;\n    this.columns = options.Columns || 1728;\n    this.rows = options.Rows || 0;\n    let eoblock = options.EndOfBlock;\n    if (eoblock === null || eoblock === undefined) {\n      eoblock = true;\n    }\n    this.eoblock = eoblock;\n    this.black = options.BlackIs1 || false;\n\n    this.codingLine = new Uint32Array(this.columns + 1);\n    this.refLine = new Uint32Array(this.columns + 2);\n\n    this.codingLine[0] = this.columns;\n    this.codingPos = 0;\n\n    this.row = 0;\n    this.nextLine2D = this.encoding < 0;\n    this.inputBits = 0;\n    this.inputBuf = 0;\n    this.outputBits = 0;\n    this.rowsDone = false;\n\n    let code1;\n    while ((code1 = this._lookBits(12)) === 0) {\n      this._eatBits(1);\n    }\n    if (code1 === 1) {\n      this._eatBits(12);\n    }\n    if (this.encoding > 0) {\n      this.nextLine2D = !this._lookBits(1);\n      this._eatBits(1);\n    }\n  }\n\n  CCITTFaxDecoder.prototype = {\n    readNextChar() {\n      if (this.eof) {\n        return -1;\n      }\n      const refLine = this.refLine;\n      const codingLine = this.codingLine;\n      const columns = this.columns;\n\n      let refPos, blackPixels, bits, i;\n\n      if (this.outputBits === 0) {\n        if (this.rowsDone) {\n          this.eof = true;\n        }\n        if (this.eof) {\n          return -1;\n        }\n        this.err = false;\n\n        let code1, code2, code3;\n        if (this.nextLine2D) {\n          for (i = 0; codingLine[i] < columns; ++i) {\n            refLine[i] = codingLine[i];\n          }\n          refLine[i++] = columns;\n          refLine[i] = columns;\n          codingLine[0] = 0;\n          this.codingPos = 0;\n          refPos = 0;\n          blackPixels = 0;\n\n          while (codingLine[this.codingPos] < columns) {\n            code1 = this._getTwoDimCode();\n            switch (code1) {\n              case twoDimPass:\n                this._addPixels(refLine[refPos + 1], blackPixels);\n                if (refLine[refPos + 1] < columns) {\n                  refPos += 2;\n                }\n                break;\n              case twoDimHoriz:\n                code1 = code2 = 0;\n                if (blackPixels) {\n                  do {\n                    code1 += code3 = this._getBlackCode();\n                  } while (code3 >= 64);\n                  do {\n                    code2 += code3 = this._getWhiteCode();\n                  } while (code3 >= 64);\n                } else {\n                  do {\n                    code1 += code3 = this._getWhiteCode();\n                  } while (code3 >= 64);\n                  do {\n                    code2 += code3 = this._getBlackCode();\n                  } while (code3 >= 64);\n                }\n                this._addPixels(\n                  codingLine[this.codingPos] + code1,\n                  blackPixels\n                );\n                if (codingLine[this.codingPos] < columns) {\n                  this._addPixels(\n                    codingLine[this.codingPos] + code2,\n                    blackPixels ^ 1\n                  );\n                }\n                while (\n                  refLine[refPos] <= codingLine[this.codingPos] &&\n                  refLine[refPos] < columns\n                ) {\n                  refPos += 2;\n                }\n                break;\n              case twoDimVertR3:\n                this._addPixels(refLine[refPos] + 3, blackPixels);\n                blackPixels ^= 1;\n                if (codingLine[this.codingPos] < columns) {\n                  ++refPos;\n                  while (\n                    refLine[refPos] <= codingLine[this.codingPos] &&\n                    refLine[refPos] < columns\n                  ) {\n                    refPos += 2;\n                  }\n                }\n                break;\n              case twoDimVertR2:\n                this._addPixels(refLine[refPos] + 2, blackPixels);\n                blackPixels ^= 1;\n                if (codingLine[this.codingPos] < columns) {\n                  ++refPos;\n                  while (\n                    refLine[refPos] <= codingLine[this.codingPos] &&\n                    refLine[refPos] < columns\n                  ) {\n                    refPos += 2;\n                  }\n                }\n                break;\n              case twoDimVertR1:\n                this._addPixels(refLine[refPos] + 1, blackPixels);\n                blackPixels ^= 1;\n                if (codingLine[this.codingPos] < columns) {\n                  ++refPos;\n                  while (\n                    refLine[refPos] <= codingLine[this.codingPos] &&\n                    refLine[refPos] < columns\n                  ) {\n                    refPos += 2;\n                  }\n                }\n                break;\n              case twoDimVert0:\n                this._addPixels(refLine[refPos], blackPixels);\n                blackPixels ^= 1;\n                if (codingLine[this.codingPos] < columns) {\n                  ++refPos;\n                  while (\n                    refLine[refPos] <= codingLine[this.codingPos] &&\n                    refLine[refPos] < columns\n                  ) {\n                    refPos += 2;\n                  }\n                }\n                break;\n              case twoDimVertL3:\n                this._addPixelsNeg(refLine[refPos] - 3, blackPixels);\n                blackPixels ^= 1;\n                if (codingLine[this.codingPos] < columns) {\n                  if (refPos > 0) {\n                    --refPos;\n                  } else {\n                    ++refPos;\n                  }\n                  while (\n                    refLine[refPos] <= codingLine[this.codingPos] &&\n                    refLine[refPos] < columns\n                  ) {\n                    refPos += 2;\n                  }\n                }\n                break;\n              case twoDimVertL2:\n                this._addPixelsNeg(refLine[refPos] - 2, blackPixels);\n                blackPixels ^= 1;\n                if (codingLine[this.codingPos] < columns) {\n                  if (refPos > 0) {\n                    --refPos;\n                  } else {\n                    ++refPos;\n                  }\n                  while (\n                    refLine[refPos] <= codingLine[this.codingPos] &&\n                    refLine[refPos] < columns\n                  ) {\n                    refPos += 2;\n                  }\n                }\n                break;\n              case twoDimVertL1:\n                this._addPixelsNeg(refLine[refPos] - 1, blackPixels);\n                blackPixels ^= 1;\n                if (codingLine[this.codingPos] < columns) {\n                  if (refPos > 0) {\n                    --refPos;\n                  } else {\n                    ++refPos;\n                  }\n                  while (\n                    refLine[refPos] <= codingLine[this.codingPos] &&\n                    refLine[refPos] < columns\n                  ) {\n                    refPos += 2;\n                  }\n                }\n                break;\n              case ccittEOF:\n                this._addPixels(columns, 0);\n                this.eof = true;\n                break;\n              default:\n                info(\"bad 2d code\");\n                this._addPixels(columns, 0);\n                this.err = true;\n            }\n          }\n        } else {\n          codingLine[0] = 0;\n          this.codingPos = 0;\n          blackPixels = 0;\n          while (codingLine[this.codingPos] < columns) {\n            code1 = 0;\n            if (blackPixels) {\n              do {\n                code1 += code3 = this._getBlackCode();\n              } while (code3 >= 64);\n            } else {\n              do {\n                code1 += code3 = this._getWhiteCode();\n              } while (code3 >= 64);\n            }\n            this._addPixels(codingLine[this.codingPos] + code1, blackPixels);\n            blackPixels ^= 1;\n          }\n        }\n\n        let gotEOL = false;\n\n        if (this.byteAlign) {\n          this.inputBits &= ~7;\n        }\n\n        if (!this.eoblock && this.row === this.rows - 1) {\n          this.rowsDone = true;\n        } else {\n          code1 = this._lookBits(12);\n          if (this.eoline) {\n            while (code1 !== ccittEOF && code1 !== 1) {\n              this._eatBits(1);\n              code1 = this._lookBits(12);\n            }\n          } else {\n            while (code1 === 0) {\n              this._eatBits(1);\n              code1 = this._lookBits(12);\n            }\n          }\n          if (code1 === 1) {\n            this._eatBits(12);\n            gotEOL = true;\n          } else if (code1 === ccittEOF) {\n            this.eof = true;\n          }\n        }\n\n        if (!this.eof && this.encoding > 0 && !this.rowsDone) {\n          this.nextLine2D = !this._lookBits(1);\n          this._eatBits(1);\n        }\n\n        if (this.eoblock && gotEOL && this.byteAlign) {\n          code1 = this._lookBits(12);\n          if (code1 === 1) {\n            this._eatBits(12);\n            if (this.encoding > 0) {\n              this._lookBits(1);\n              this._eatBits(1);\n            }\n            if (this.encoding >= 0) {\n              for (i = 0; i < 4; ++i) {\n                code1 = this._lookBits(12);\n                if (code1 !== 1) {\n                  info(\"bad rtc code: \" + code1);\n                }\n                this._eatBits(12);\n                if (this.encoding > 0) {\n                  this._lookBits(1);\n                  this._eatBits(1);\n                }\n              }\n            }\n            this.eof = true;\n          }\n        } else if (this.err && this.eoline) {\n          while (true) {\n            code1 = this._lookBits(13);\n            if (code1 === ccittEOF) {\n              this.eof = true;\n              return -1;\n            }\n            if (code1 >> 1 === 1) {\n              break;\n            }\n            this._eatBits(1);\n          }\n          this._eatBits(12);\n          if (this.encoding > 0) {\n            this._eatBits(1);\n            this.nextLine2D = !(code1 & 1);\n          }\n        }\n\n        if (codingLine[0] > 0) {\n          this.outputBits = codingLine[(this.codingPos = 0)];\n        } else {\n          this.outputBits = codingLine[(this.codingPos = 1)];\n        }\n        this.row++;\n      }\n\n      let c;\n      if (this.outputBits >= 8) {\n        c = this.codingPos & 1 ? 0 : 0xff;\n        this.outputBits -= 8;\n        if (this.outputBits === 0 && codingLine[this.codingPos] < columns) {\n          this.codingPos++;\n          this.outputBits =\n            codingLine[this.codingPos] - codingLine[this.codingPos - 1];\n        }\n      } else {\n        bits = 8;\n        c = 0;\n        do {\n          if (this.outputBits > bits) {\n            c <<= bits;\n            if (!(this.codingPos & 1)) {\n              c |= 0xff >> (8 - bits);\n            }\n            this.outputBits -= bits;\n            bits = 0;\n          } else {\n            c <<= this.outputBits;\n            if (!(this.codingPos & 1)) {\n              c |= 0xff >> (8 - this.outputBits);\n            }\n            bits -= this.outputBits;\n            this.outputBits = 0;\n            if (codingLine[this.codingPos] < columns) {\n              this.codingPos++;\n              this.outputBits =\n                codingLine[this.codingPos] - codingLine[this.codingPos - 1];\n            } else if (bits > 0) {\n              c <<= bits;\n              bits = 0;\n            }\n          }\n        } while (bits);\n      }\n      if (this.black) {\n        c ^= 0xff;\n      }\n      return c;\n    },\n\n    /**\n     * @private\n     */\n    _addPixels(a1, blackPixels) {\n      const codingLine = this.codingLine;\n      let codingPos = this.codingPos;\n\n      if (a1 > codingLine[codingPos]) {\n        if (a1 > this.columns) {\n          info(\"row is wrong length\");\n          this.err = true;\n          a1 = this.columns;\n        }\n        if ((codingPos & 1) ^ blackPixels) {\n          ++codingPos;\n        }\n\n        codingLine[codingPos] = a1;\n      }\n      this.codingPos = codingPos;\n    },\n\n    /**\n     * @private\n     */\n    _addPixelsNeg(a1, blackPixels) {\n      const codingLine = this.codingLine;\n      let codingPos = this.codingPos;\n\n      if (a1 > codingLine[codingPos]) {\n        if (a1 > this.columns) {\n          info(\"row is wrong length\");\n          this.err = true;\n          a1 = this.columns;\n        }\n        if ((codingPos & 1) ^ blackPixels) {\n          ++codingPos;\n        }\n\n        codingLine[codingPos] = a1;\n      } else if (a1 < codingLine[codingPos]) {\n        if (a1 < 0) {\n          info(\"invalid code\");\n          this.err = true;\n          a1 = 0;\n        }\n        while (codingPos > 0 && a1 < codingLine[codingPos - 1]) {\n          --codingPos;\n        }\n        codingLine[codingPos] = a1;\n      }\n\n      this.codingPos = codingPos;\n    },\n\n    /**\n     * This function returns the code found from the table.\n     * The start and end parameters set the boundaries for searching the table.\n     * The limit parameter is optional. Function returns an array with three\n     * values. The first array element indicates whether a valid code is being\n     * returned. The second array element is the actual code. The third array\n     * element indicates whether EOF was reached.\n     * @private\n     */\n    _findTableCode(start, end, table, limit) {\n      const limitValue = limit || 0;\n      for (let i = start; i <= end; ++i) {\n        let code = this._lookBits(i);\n        if (code === ccittEOF) {\n          return [true, 1, false];\n        }\n        if (i < end) {\n          code <<= end - i;\n        }\n        if (!limitValue || code >= limitValue) {\n          const p = table[code - limitValue];\n          if (p[0] === i) {\n            this._eatBits(i);\n            return [true, p[1], true];\n          }\n        }\n      }\n      return [false, 0, false];\n    },\n\n    /**\n     * @private\n     */\n    _getTwoDimCode() {\n      let code = 0;\n      let p;\n      if (this.eoblock) {\n        code = this._lookBits(7);\n        p = twoDimTable[code];\n        if (p && p[0] > 0) {\n          this._eatBits(p[0]);\n          return p[1];\n        }\n      } else {\n        const result = this._findTableCode(1, 7, twoDimTable);\n        if (result[0] && result[2]) {\n          return result[1];\n        }\n      }\n      info(\"Bad two dim code\");\n      return ccittEOF;\n    },\n\n    /**\n     * @private\n     */\n    _getWhiteCode() {\n      let code = 0;\n      let p;\n      if (this.eoblock) {\n        code = this._lookBits(12);\n        if (code === ccittEOF) {\n          return 1;\n        }\n\n        if (code >> 5 === 0) {\n          p = whiteTable1[code];\n        } else {\n          p = whiteTable2[code >> 3];\n        }\n\n        if (p[0] > 0) {\n          this._eatBits(p[0]);\n          return p[1];\n        }\n      } else {\n        let result = this._findTableCode(1, 9, whiteTable2);\n        if (result[0]) {\n          return result[1];\n        }\n\n        result = this._findTableCode(11, 12, whiteTable1);\n        if (result[0]) {\n          return result[1];\n        }\n      }\n      info(\"bad white code\");\n      this._eatBits(1);\n      return 1;\n    },\n\n    /**\n     * @private\n     */\n    _getBlackCode() {\n      let code, p;\n      if (this.eoblock) {\n        code = this._lookBits(13);\n        if (code === ccittEOF) {\n          return 1;\n        }\n        if (code >> 7 === 0) {\n          p = blackTable1[code];\n        } else if (code >> 9 === 0 && code >> 7 !== 0) {\n          p = blackTable2[(code >> 1) - 64];\n        } else {\n          p = blackTable3[code >> 7];\n        }\n\n        if (p[0] > 0) {\n          this._eatBits(p[0]);\n          return p[1];\n        }\n      } else {\n        let result = this._findTableCode(2, 6, blackTable3);\n        if (result[0]) {\n          return result[1];\n        }\n\n        result = this._findTableCode(7, 12, blackTable2, 64);\n        if (result[0]) {\n          return result[1];\n        }\n\n        result = this._findTableCode(10, 13, blackTable1);\n        if (result[0]) {\n          return result[1];\n        }\n      }\n      info(\"bad black code\");\n      this._eatBits(1);\n      return 1;\n    },\n\n    /**\n     * @private\n     */\n    _lookBits(n) {\n      let c;\n      while (this.inputBits < n) {\n        if ((c = this.source.next()) === -1) {\n          if (this.inputBits === 0) {\n            return ccittEOF;\n          }\n          return (this.inputBuf << (n - this.inputBits)) & (0xffff >> (16 - n));\n        }\n        this.inputBuf = (this.inputBuf << 8) | c;\n        this.inputBits += 8;\n      }\n      return (this.inputBuf >> (this.inputBits - n)) & (0xffff >> (16 - n));\n    },\n\n    /**\n     * @private\n     */\n    _eatBits(n) {\n      if ((this.inputBits -= n) < 0) {\n        this.inputBits = 0;\n      }\n    },\n  };\n\n  return CCITTFaxDecoder;\n})();\n\nexport { CCITTFaxDecoder };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isDict, isStream } from \"./primitives.js\";\nimport { DecodeStream } from \"./stream.js\";\nimport { Jbig2Image } from \"./jbig2.js\";\nimport { shadow } from \"../shared/util.js\";\n\n/**\n * For JBIG2's we use a library to decode these images and\n * the stream behaves like all the other DecodeStreams.\n */\nconst Jbig2Stream = (function Jbig2StreamClosure() {\n  // eslint-disable-next-line no-shadow\n  function Jbig2Stream(stream, maybeLength, dict, params) {\n    this.stream = stream;\n    this.maybeLength = maybeLength;\n    this.dict = dict;\n    this.params = params;\n\n    DecodeStream.call(this, maybeLength);\n  }\n\n  Jbig2Stream.prototype = Object.create(DecodeStream.prototype);\n\n  Object.defineProperty(Jbig2Stream.prototype, \"bytes\", {\n    get() {\n      // If `this.maybeLength` is null, we'll get the entire stream.\n      return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n    },\n    configurable: true,\n  });\n\n  Jbig2Stream.prototype.ensureBuffer = function (requested) {\n    // No-op, since `this.readBlock` will always parse the entire image and\n    // directly insert all of its data into `this.buffer`.\n  };\n\n  Jbig2Stream.prototype.readBlock = function () {\n    if (this.eof) {\n      return;\n    }\n    const jbig2Image = new Jbig2Image();\n\n    const chunks = [];\n    if (isDict(this.params)) {\n      const globalsStream = this.params.get(\"JBIG2Globals\");\n      if (isStream(globalsStream)) {\n        const globals = globalsStream.getBytes();\n        chunks.push({ data: globals, start: 0, end: globals.length });\n      }\n    }\n    chunks.push({ data: this.bytes, start: 0, end: this.bytes.length });\n    const data = jbig2Image.parseChunks(chunks);\n    const dataLength = data.length;\n\n    // JBIG2 had black as 1 and white as 0, inverting the colors\n    for (let i = 0; i < dataLength; i++) {\n      data[i] ^= 0xff;\n    }\n    this.buffer = data;\n    this.bufferLength = dataLength;\n    this.eof = true;\n  };\n\n  return Jbig2Stream;\n})();\n\nexport { Jbig2Stream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseException, shadow } from \"../shared/util.js\";\nimport { log2, readInt8, readUint16, readUint32 } from \"./core_utils.js\";\nimport { ArithmeticDecoder } from \"./arithmetic_decoder.js\";\nimport { CCITTFaxDecoder } from \"./ccitt.js\";\n\nclass Jbig2Error extends BaseException {\n  constructor(msg) {\n    super(`JBIG2 error: ${msg}`);\n  }\n}\n\nvar Jbig2Image = (function Jbig2ImageClosure() {\n  // Utility data structures\n  function ContextCache() {}\n\n  ContextCache.prototype = {\n    getContexts(id) {\n      if (id in this) {\n        return this[id];\n      }\n      return (this[id] = new Int8Array(1 << 16));\n    },\n  };\n\n  function DecodingContext(data, start, end) {\n    this.data = data;\n    this.start = start;\n    this.end = end;\n  }\n\n  DecodingContext.prototype = {\n    get decoder() {\n      var decoder = new ArithmeticDecoder(this.data, this.start, this.end);\n      return shadow(this, \"decoder\", decoder);\n    },\n    get contextCache() {\n      var cache = new ContextCache();\n      return shadow(this, \"contextCache\", cache);\n    },\n  };\n\n  // Annex A. Arithmetic Integer Decoding Procedure\n  // A.2 Procedure for decoding values\n  function decodeInteger(contextCache, procedure, decoder) {\n    var contexts = contextCache.getContexts(procedure);\n    var prev = 1;\n\n    function readBits(length) {\n      var v = 0;\n      for (var i = 0; i < length; i++) {\n        var bit = decoder.readBit(contexts, prev);\n        prev =\n          prev < 256 ? (prev << 1) | bit : (((prev << 1) | bit) & 511) | 256;\n        v = (v << 1) | bit;\n      }\n      return v >>> 0;\n    }\n\n    var sign = readBits(1);\n    // prettier-ignore\n    /* eslint-disable no-nested-ternary */\n    var value = readBits(1) ?\n                  (readBits(1) ?\n                    (readBits(1) ?\n                      (readBits(1) ?\n                        (readBits(1) ?\n                          (readBits(32) + 4436) :\n                        readBits(12) + 340) :\n                      readBits(8) + 84) :\n                    readBits(6) + 20) :\n                  readBits(4) + 4) :\n                readBits(2);\n    /* eslint-enable no-nested-ternary */\n    if (sign === 0) {\n      return value;\n    } else if (value > 0) {\n      return -value;\n    }\n    return null;\n  }\n\n  // A.3 The IAID decoding procedure\n  function decodeIAID(contextCache, decoder, codeLength) {\n    var contexts = contextCache.getContexts(\"IAID\");\n\n    var prev = 1;\n    for (var i = 0; i < codeLength; i++) {\n      var bit = decoder.readBit(contexts, prev);\n      prev = (prev << 1) | bit;\n    }\n    if (codeLength < 31) {\n      return prev & ((1 << codeLength) - 1);\n    }\n    return prev & 0x7fffffff;\n  }\n\n  // 7.3 Segment types\n  var SegmentTypes = [\n    \"SymbolDictionary\",\n    null,\n    null,\n    null,\n    \"IntermediateTextRegion\",\n    null,\n    \"ImmediateTextRegion\",\n    \"ImmediateLosslessTextRegion\",\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    \"PatternDictionary\",\n    null,\n    null,\n    null,\n    \"IntermediateHalftoneRegion\",\n    null,\n    \"ImmediateHalftoneRegion\",\n    \"ImmediateLosslessHalftoneRegion\",\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    \"IntermediateGenericRegion\",\n    null,\n    \"ImmediateGenericRegion\",\n    \"ImmediateLosslessGenericRegion\",\n    \"IntermediateGenericRefinementRegion\",\n    null,\n    \"ImmediateGenericRefinementRegion\",\n    \"ImmediateLosslessGenericRefinementRegion\",\n    null,\n    null,\n    null,\n    null,\n    \"PageInformation\",\n    \"EndOfPage\",\n    \"EndOfStripe\",\n    \"EndOfFile\",\n    \"Profiles\",\n    \"Tables\",\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    \"Extension\",\n  ];\n\n  var CodingTemplates = [\n    [\n      { x: -1, y: -2 },\n      { x: 0, y: -2 },\n      { x: 1, y: -2 },\n      { x: -2, y: -1 },\n      { x: -1, y: -1 },\n      { x: 0, y: -1 },\n      { x: 1, y: -1 },\n      { x: 2, y: -1 },\n      { x: -4, y: 0 },\n      { x: -3, y: 0 },\n      { x: -2, y: 0 },\n      { x: -1, y: 0 },\n    ],\n    [\n      { x: -1, y: -2 },\n      { x: 0, y: -2 },\n      { x: 1, y: -2 },\n      { x: 2, y: -2 },\n      { x: -2, y: -1 },\n      { x: -1, y: -1 },\n      { x: 0, y: -1 },\n      { x: 1, y: -1 },\n      { x: 2, y: -1 },\n      { x: -3, y: 0 },\n      { x: -2, y: 0 },\n      { x: -1, y: 0 },\n    ],\n    [\n      { x: -1, y: -2 },\n      { x: 0, y: -2 },\n      { x: 1, y: -2 },\n      { x: -2, y: -1 },\n      { x: -1, y: -1 },\n      { x: 0, y: -1 },\n      { x: 1, y: -1 },\n      { x: -2, y: 0 },\n      { x: -1, y: 0 },\n    ],\n    [\n      { x: -3, y: -1 },\n      { x: -2, y: -1 },\n      { x: -1, y: -1 },\n      { x: 0, y: -1 },\n      { x: 1, y: -1 },\n      { x: -4, y: 0 },\n      { x: -3, y: 0 },\n      { x: -2, y: 0 },\n      { x: -1, y: 0 },\n    ],\n  ];\n\n  var RefinementTemplates = [\n    {\n      coding: [\n        { x: 0, y: -1 },\n        { x: 1, y: -1 },\n        { x: -1, y: 0 },\n      ],\n      reference: [\n        { x: 0, y: -1 },\n        { x: 1, y: -1 },\n        { x: -1, y: 0 },\n        { x: 0, y: 0 },\n        { x: 1, y: 0 },\n        { x: -1, y: 1 },\n        { x: 0, y: 1 },\n        { x: 1, y: 1 },\n      ],\n    },\n    {\n      coding: [\n        { x: -1, y: -1 },\n        { x: 0, y: -1 },\n        { x: 1, y: -1 },\n        { x: -1, y: 0 },\n      ],\n      reference: [\n        { x: 0, y: -1 },\n        { x: -1, y: 0 },\n        { x: 0, y: 0 },\n        { x: 1, y: 0 },\n        { x: 0, y: 1 },\n        { x: 1, y: 1 },\n      ],\n    },\n  ];\n\n  // See 6.2.5.7 Decoding the bitmap.\n  var ReusedContexts = [\n    0x9b25, // 10011 0110010 0101\n    0x0795, // 0011 110010 101\n    0x00e5, // 001 11001 01\n    0x0195, // 011001 0101\n  ];\n\n  var RefinementReusedContexts = [\n    0x0020, // '000' + '0' (coding) + '00010000' + '0' (reference)\n    0x0008, // '0000' + '001000'\n  ];\n\n  function decodeBitmapTemplate0(width, height, decodingContext) {\n    var decoder = decodingContext.decoder;\n    var contexts = decodingContext.contextCache.getContexts(\"GB\");\n    var contextLabel,\n      i,\n      j,\n      pixel,\n      row,\n      row1,\n      row2,\n      bitmap = [];\n\n    // ...ooooo....\n    // ..ooooooo... Context template for current pixel (X)\n    // .ooooX...... (concatenate values of 'o'-pixels to get contextLabel)\n    var OLD_PIXEL_MASK = 0x7bf7; // 01111 0111111 0111\n\n    for (i = 0; i < height; i++) {\n      row = bitmap[i] = new Uint8Array(width);\n      row1 = i < 1 ? row : bitmap[i - 1];\n      row2 = i < 2 ? row : bitmap[i - 2];\n\n      // At the beginning of each row:\n      // Fill contextLabel with pixels that are above/right of (X)\n      contextLabel =\n        (row2[0] << 13) |\n        (row2[1] << 12) |\n        (row2[2] << 11) |\n        (row1[0] << 7) |\n        (row1[1] << 6) |\n        (row1[2] << 5) |\n        (row1[3] << 4);\n\n      for (j = 0; j < width; j++) {\n        row[j] = pixel = decoder.readBit(contexts, contextLabel);\n\n        // At each pixel: Clear contextLabel pixels that are shifted\n        // out of the context, then add new ones.\n        contextLabel =\n          ((contextLabel & OLD_PIXEL_MASK) << 1) |\n          (j + 3 < width ? row2[j + 3] << 11 : 0) |\n          (j + 4 < width ? row1[j + 4] << 4 : 0) |\n          pixel;\n      }\n    }\n\n    return bitmap;\n  }\n\n  // 6.2 Generic Region Decoding Procedure\n  function decodeBitmap(\n    mmr,\n    width,\n    height,\n    templateIndex,\n    prediction,\n    skip,\n    at,\n    decodingContext\n  ) {\n    if (mmr) {\n      const input = new Reader(\n        decodingContext.data,\n        decodingContext.start,\n        decodingContext.end\n      );\n      return decodeMMRBitmap(input, width, height, false);\n    }\n\n    // Use optimized version for the most common case\n    if (\n      templateIndex === 0 &&\n      !skip &&\n      !prediction &&\n      at.length === 4 &&\n      at[0].x === 3 &&\n      at[0].y === -1 &&\n      at[1].x === -3 &&\n      at[1].y === -1 &&\n      at[2].x === 2 &&\n      at[2].y === -2 &&\n      at[3].x === -2 &&\n      at[3].y === -2\n    ) {\n      return decodeBitmapTemplate0(width, height, decodingContext);\n    }\n\n    var useskip = !!skip;\n    var template = CodingTemplates[templateIndex].concat(at);\n\n    // Sorting is non-standard, and it is not required. But sorting increases\n    // the number of template bits that can be reused from the previous\n    // contextLabel in the main loop.\n    template.sort(function (a, b) {\n      return a.y - b.y || a.x - b.x;\n    });\n\n    var templateLength = template.length;\n    var templateX = new Int8Array(templateLength);\n    var templateY = new Int8Array(templateLength);\n    var changingTemplateEntries = [];\n    var reuseMask = 0,\n      minX = 0,\n      maxX = 0,\n      minY = 0;\n    var c, k;\n\n    for (k = 0; k < templateLength; k++) {\n      templateX[k] = template[k].x;\n      templateY[k] = template[k].y;\n      minX = Math.min(minX, template[k].x);\n      maxX = Math.max(maxX, template[k].x);\n      minY = Math.min(minY, template[k].y);\n      // Check if the template pixel appears in two consecutive context labels,\n      // so it can be reused. Otherwise, we add it to the list of changing\n      // template entries.\n      if (\n        k < templateLength - 1 &&\n        template[k].y === template[k + 1].y &&\n        template[k].x === template[k + 1].x - 1\n      ) {\n        reuseMask |= 1 << (templateLength - 1 - k);\n      } else {\n        changingTemplateEntries.push(k);\n      }\n    }\n    var changingEntriesLength = changingTemplateEntries.length;\n\n    var changingTemplateX = new Int8Array(changingEntriesLength);\n    var changingTemplateY = new Int8Array(changingEntriesLength);\n    var changingTemplateBit = new Uint16Array(changingEntriesLength);\n    for (c = 0; c < changingEntriesLength; c++) {\n      k = changingTemplateEntries[c];\n      changingTemplateX[c] = template[k].x;\n      changingTemplateY[c] = template[k].y;\n      changingTemplateBit[c] = 1 << (templateLength - 1 - k);\n    }\n\n    // Get the safe bounding box edges from the width, height, minX, maxX, minY\n    var sbb_left = -minX;\n    var sbb_top = -minY;\n    var sbb_right = width - maxX;\n\n    var pseudoPixelContext = ReusedContexts[templateIndex];\n    var row = new Uint8Array(width);\n    var bitmap = [];\n\n    var decoder = decodingContext.decoder;\n    var contexts = decodingContext.contextCache.getContexts(\"GB\");\n\n    var ltp = 0,\n      j,\n      i0,\n      j0,\n      contextLabel = 0,\n      bit,\n      shift;\n    for (var i = 0; i < height; i++) {\n      if (prediction) {\n        var sltp = decoder.readBit(contexts, pseudoPixelContext);\n        ltp ^= sltp;\n        if (ltp) {\n          bitmap.push(row); // duplicate previous row\n          continue;\n        }\n      }\n      row = new Uint8Array(row);\n      bitmap.push(row);\n      for (j = 0; j < width; j++) {\n        if (useskip && skip[i][j]) {\n          row[j] = 0;\n          continue;\n        }\n        // Are we in the middle of a scanline, so we can reuse contextLabel\n        // bits?\n        if (j >= sbb_left && j < sbb_right && i >= sbb_top) {\n          // If yes, we can just shift the bits that are reusable and only\n          // fetch the remaining ones.\n          contextLabel = (contextLabel << 1) & reuseMask;\n          for (k = 0; k < changingEntriesLength; k++) {\n            i0 = i + changingTemplateY[k];\n            j0 = j + changingTemplateX[k];\n            bit = bitmap[i0][j0];\n            if (bit) {\n              bit = changingTemplateBit[k];\n              contextLabel |= bit;\n            }\n          }\n        } else {\n          // compute the contextLabel from scratch\n          contextLabel = 0;\n          shift = templateLength - 1;\n          for (k = 0; k < templateLength; k++, shift--) {\n            j0 = j + templateX[k];\n            if (j0 >= 0 && j0 < width) {\n              i0 = i + templateY[k];\n              if (i0 >= 0) {\n                bit = bitmap[i0][j0];\n                if (bit) {\n                  contextLabel |= bit << shift;\n                }\n              }\n            }\n          }\n        }\n        var pixel = decoder.readBit(contexts, contextLabel);\n        row[j] = pixel;\n      }\n    }\n    return bitmap;\n  }\n\n  // 6.3.2 Generic Refinement Region Decoding Procedure\n  function decodeRefinement(\n    width,\n    height,\n    templateIndex,\n    referenceBitmap,\n    offsetX,\n    offsetY,\n    prediction,\n    at,\n    decodingContext\n  ) {\n    var codingTemplate = RefinementTemplates[templateIndex].coding;\n    if (templateIndex === 0) {\n      codingTemplate = codingTemplate.concat([at[0]]);\n    }\n    var codingTemplateLength = codingTemplate.length;\n    var codingTemplateX = new Int32Array(codingTemplateLength);\n    var codingTemplateY = new Int32Array(codingTemplateLength);\n    var k;\n    for (k = 0; k < codingTemplateLength; k++) {\n      codingTemplateX[k] = codingTemplate[k].x;\n      codingTemplateY[k] = codingTemplate[k].y;\n    }\n\n    var referenceTemplate = RefinementTemplates[templateIndex].reference;\n    if (templateIndex === 0) {\n      referenceTemplate = referenceTemplate.concat([at[1]]);\n    }\n    var referenceTemplateLength = referenceTemplate.length;\n    var referenceTemplateX = new Int32Array(referenceTemplateLength);\n    var referenceTemplateY = new Int32Array(referenceTemplateLength);\n    for (k = 0; k < referenceTemplateLength; k++) {\n      referenceTemplateX[k] = referenceTemplate[k].x;\n      referenceTemplateY[k] = referenceTemplate[k].y;\n    }\n    var referenceWidth = referenceBitmap[0].length;\n    var referenceHeight = referenceBitmap.length;\n\n    var pseudoPixelContext = RefinementReusedContexts[templateIndex];\n    var bitmap = [];\n\n    var decoder = decodingContext.decoder;\n    var contexts = decodingContext.contextCache.getContexts(\"GR\");\n\n    var ltp = 0;\n    for (var i = 0; i < height; i++) {\n      if (prediction) {\n        var sltp = decoder.readBit(contexts, pseudoPixelContext);\n        ltp ^= sltp;\n        if (ltp) {\n          throw new Jbig2Error(\"prediction is not supported\");\n        }\n      }\n      var row = new Uint8Array(width);\n      bitmap.push(row);\n      for (var j = 0; j < width; j++) {\n        var i0, j0;\n        var contextLabel = 0;\n        for (k = 0; k < codingTemplateLength; k++) {\n          i0 = i + codingTemplateY[k];\n          j0 = j + codingTemplateX[k];\n          if (i0 < 0 || j0 < 0 || j0 >= width) {\n            contextLabel <<= 1; // out of bound pixel\n          } else {\n            contextLabel = (contextLabel << 1) | bitmap[i0][j0];\n          }\n        }\n        for (k = 0; k < referenceTemplateLength; k++) {\n          i0 = i + referenceTemplateY[k] - offsetY;\n          j0 = j + referenceTemplateX[k] - offsetX;\n          if (\n            i0 < 0 ||\n            i0 >= referenceHeight ||\n            j0 < 0 ||\n            j0 >= referenceWidth\n          ) {\n            contextLabel <<= 1; // out of bound pixel\n          } else {\n            contextLabel = (contextLabel << 1) | referenceBitmap[i0][j0];\n          }\n        }\n        var pixel = decoder.readBit(contexts, contextLabel);\n        row[j] = pixel;\n      }\n    }\n\n    return bitmap;\n  }\n\n  // 6.5.5 Decoding the symbol dictionary\n  function decodeSymbolDictionary(\n    huffman,\n    refinement,\n    symbols,\n    numberOfNewSymbols,\n    numberOfExportedSymbols,\n    huffmanTables,\n    templateIndex,\n    at,\n    refinementTemplateIndex,\n    refinementAt,\n    decodingContext,\n    huffmanInput\n  ) {\n    if (huffman && refinement) {\n      throw new Jbig2Error(\"symbol refinement with Huffman is not supported\");\n    }\n\n    var newSymbols = [];\n    var currentHeight = 0;\n    var symbolCodeLength = log2(symbols.length + numberOfNewSymbols);\n\n    var decoder = decodingContext.decoder;\n    var contextCache = decodingContext.contextCache;\n    let tableB1, symbolWidths;\n    if (huffman) {\n      tableB1 = getStandardTable(1); // standard table B.1\n      symbolWidths = [];\n      symbolCodeLength = Math.max(symbolCodeLength, 1); // 6.5.8.2.3\n    }\n\n    while (newSymbols.length < numberOfNewSymbols) {\n      var deltaHeight = huffman\n        ? huffmanTables.tableDeltaHeight.decode(huffmanInput)\n        : decodeInteger(contextCache, \"IADH\", decoder); // 6.5.6\n      currentHeight += deltaHeight;\n      let currentWidth = 0,\n        totalWidth = 0;\n      const firstSymbol = huffman ? symbolWidths.length : 0;\n      while (true) {\n        var deltaWidth = huffman\n          ? huffmanTables.tableDeltaWidth.decode(huffmanInput)\n          : decodeInteger(contextCache, \"IADW\", decoder); // 6.5.7\n        if (deltaWidth === null) {\n          break; // OOB\n        }\n        currentWidth += deltaWidth;\n        totalWidth += currentWidth;\n        var bitmap;\n        if (refinement) {\n          // 6.5.8.2 Refinement/aggregate-coded symbol bitmap\n          var numberOfInstances = decodeInteger(contextCache, \"IAAI\", decoder);\n          if (numberOfInstances > 1) {\n            bitmap = decodeTextRegion(\n              huffman,\n              refinement,\n              currentWidth,\n              currentHeight,\n              0,\n              numberOfInstances,\n              1, // strip size\n              symbols.concat(newSymbols),\n              symbolCodeLength,\n              0, // transposed\n              0, // ds offset\n              1, // top left 7.4.3.1.1\n              0, // OR operator\n              huffmanTables,\n              refinementTemplateIndex,\n              refinementAt,\n              decodingContext,\n              0,\n              huffmanInput\n            );\n          } else {\n            var symbolId = decodeIAID(contextCache, decoder, symbolCodeLength);\n            var rdx = decodeInteger(contextCache, \"IARDX\", decoder); // 6.4.11.3\n            var rdy = decodeInteger(contextCache, \"IARDY\", decoder); // 6.4.11.4\n            var symbol =\n              symbolId < symbols.length\n                ? symbols[symbolId]\n                : newSymbols[symbolId - symbols.length];\n            bitmap = decodeRefinement(\n              currentWidth,\n              currentHeight,\n              refinementTemplateIndex,\n              symbol,\n              rdx,\n              rdy,\n              false,\n              refinementAt,\n              decodingContext\n            );\n          }\n          newSymbols.push(bitmap);\n        } else if (huffman) {\n          // Store only symbol width and decode a collective bitmap when the\n          // height class is done.\n          symbolWidths.push(currentWidth);\n        } else {\n          // 6.5.8.1 Direct-coded symbol bitmap\n          bitmap = decodeBitmap(\n            false,\n            currentWidth,\n            currentHeight,\n            templateIndex,\n            false,\n            null,\n            at,\n            decodingContext\n          );\n          newSymbols.push(bitmap);\n        }\n      }\n      if (huffman && !refinement) {\n        // 6.5.9 Height class collective bitmap\n        const bitmapSize = huffmanTables.tableBitmapSize.decode(huffmanInput);\n        huffmanInput.byteAlign();\n        let collectiveBitmap;\n        if (bitmapSize === 0) {\n          // Uncompressed collective bitmap\n          collectiveBitmap = readUncompressedBitmap(\n            huffmanInput,\n            totalWidth,\n            currentHeight\n          );\n        } else {\n          // MMR collective bitmap\n          const originalEnd = huffmanInput.end;\n          const bitmapEnd = huffmanInput.position + bitmapSize;\n          huffmanInput.end = bitmapEnd;\n          collectiveBitmap = decodeMMRBitmap(\n            huffmanInput,\n            totalWidth,\n            currentHeight,\n            false\n          );\n          huffmanInput.end = originalEnd;\n          huffmanInput.position = bitmapEnd;\n        }\n        const numberOfSymbolsDecoded = symbolWidths.length;\n        if (firstSymbol === numberOfSymbolsDecoded - 1) {\n          // collectiveBitmap is a single symbol.\n          newSymbols.push(collectiveBitmap);\n        } else {\n          // Divide collectiveBitmap into symbols.\n          let i,\n            y,\n            xMin = 0,\n            xMax,\n            bitmapWidth,\n            symbolBitmap;\n          for (i = firstSymbol; i < numberOfSymbolsDecoded; i++) {\n            bitmapWidth = symbolWidths[i];\n            xMax = xMin + bitmapWidth;\n            symbolBitmap = [];\n            for (y = 0; y < currentHeight; y++) {\n              symbolBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));\n            }\n            newSymbols.push(symbolBitmap);\n            xMin = xMax;\n          }\n        }\n      }\n    }\n\n    // 6.5.10 Exported symbols\n    var exportedSymbols = [];\n    var flags = [],\n      currentFlag = false;\n    var totalSymbolsLength = symbols.length + numberOfNewSymbols;\n    while (flags.length < totalSymbolsLength) {\n      var runLength = huffman\n        ? tableB1.decode(huffmanInput)\n        : decodeInteger(contextCache, \"IAEX\", decoder);\n      while (runLength--) {\n        flags.push(currentFlag);\n      }\n      currentFlag = !currentFlag;\n    }\n    for (var i = 0, ii = symbols.length; i < ii; i++) {\n      if (flags[i]) {\n        exportedSymbols.push(symbols[i]);\n      }\n    }\n    for (var j = 0; j < numberOfNewSymbols; i++, j++) {\n      if (flags[i]) {\n        exportedSymbols.push(newSymbols[j]);\n      }\n    }\n    return exportedSymbols;\n  }\n\n  function decodeTextRegion(\n    huffman,\n    refinement,\n    width,\n    height,\n    defaultPixelValue,\n    numberOfSymbolInstances,\n    stripSize,\n    inputSymbols,\n    symbolCodeLength,\n    transposed,\n    dsOffset,\n    referenceCorner,\n    combinationOperator,\n    huffmanTables,\n    refinementTemplateIndex,\n    refinementAt,\n    decodingContext,\n    logStripSize,\n    huffmanInput\n  ) {\n    if (huffman && refinement) {\n      throw new Jbig2Error(\"refinement with Huffman is not supported\");\n    }\n\n    // Prepare bitmap\n    var bitmap = [];\n    var i, row;\n    for (i = 0; i < height; i++) {\n      row = new Uint8Array(width);\n      if (defaultPixelValue) {\n        for (var j = 0; j < width; j++) {\n          row[j] = defaultPixelValue;\n        }\n      }\n      bitmap.push(row);\n    }\n\n    var decoder = decodingContext.decoder;\n    var contextCache = decodingContext.contextCache;\n\n    var stripT = huffman\n      ? -huffmanTables.tableDeltaT.decode(huffmanInput)\n      : -decodeInteger(contextCache, \"IADT\", decoder); // 6.4.6\n    var firstS = 0;\n    i = 0;\n    while (i < numberOfSymbolInstances) {\n      var deltaT = huffman\n        ? huffmanTables.tableDeltaT.decode(huffmanInput)\n        : decodeInteger(contextCache, \"IADT\", decoder); // 6.4.6\n      stripT += deltaT;\n\n      var deltaFirstS = huffman\n        ? huffmanTables.tableFirstS.decode(huffmanInput)\n        : decodeInteger(contextCache, \"IAFS\", decoder); // 6.4.7\n      firstS += deltaFirstS;\n      var currentS = firstS;\n      do {\n        let currentT = 0; // 6.4.9\n        if (stripSize > 1) {\n          currentT = huffman\n            ? huffmanInput.readBits(logStripSize)\n            : decodeInteger(contextCache, \"IAIT\", decoder);\n        }\n        var t = stripSize * stripT + currentT;\n        var symbolId = huffman\n          ? huffmanTables.symbolIDTable.decode(huffmanInput)\n          : decodeIAID(contextCache, decoder, symbolCodeLength);\n        var applyRefinement =\n          refinement &&\n          (huffman\n            ? huffmanInput.readBit()\n            : decodeInteger(contextCache, \"IARI\", decoder));\n        var symbolBitmap = inputSymbols[symbolId];\n        var symbolWidth = symbolBitmap[0].length;\n        var symbolHeight = symbolBitmap.length;\n        if (applyRefinement) {\n          var rdw = decodeInteger(contextCache, \"IARDW\", decoder); // 6.4.11.1\n          var rdh = decodeInteger(contextCache, \"IARDH\", decoder); // 6.4.11.2\n          var rdx = decodeInteger(contextCache, \"IARDX\", decoder); // 6.4.11.3\n          var rdy = decodeInteger(contextCache, \"IARDY\", decoder); // 6.4.11.4\n          symbolWidth += rdw;\n          symbolHeight += rdh;\n          symbolBitmap = decodeRefinement(\n            symbolWidth,\n            symbolHeight,\n            refinementTemplateIndex,\n            symbolBitmap,\n            (rdw >> 1) + rdx,\n            (rdh >> 1) + rdy,\n            false,\n            refinementAt,\n            decodingContext\n          );\n        }\n        var offsetT = t - (referenceCorner & 1 ? 0 : symbolHeight - 1);\n        var offsetS = currentS - (referenceCorner & 2 ? symbolWidth - 1 : 0);\n        var s2, t2, symbolRow;\n        if (transposed) {\n          // Place Symbol Bitmap from T1,S1\n          for (s2 = 0; s2 < symbolHeight; s2++) {\n            row = bitmap[offsetS + s2];\n            if (!row) {\n              continue;\n            }\n            symbolRow = symbolBitmap[s2];\n            // To ignore Parts of Symbol bitmap which goes\n            // outside bitmap region\n            var maxWidth = Math.min(width - offsetT, symbolWidth);\n            switch (combinationOperator) {\n              case 0: // OR\n                for (t2 = 0; t2 < maxWidth; t2++) {\n                  row[offsetT + t2] |= symbolRow[t2];\n                }\n                break;\n              case 2: // XOR\n                for (t2 = 0; t2 < maxWidth; t2++) {\n                  row[offsetT + t2] ^= symbolRow[t2];\n                }\n                break;\n              default:\n                throw new Jbig2Error(\n                  `operator ${combinationOperator} is not supported`\n                );\n            }\n          }\n          currentS += symbolHeight - 1;\n        } else {\n          for (t2 = 0; t2 < symbolHeight; t2++) {\n            row = bitmap[offsetT + t2];\n            if (!row) {\n              continue;\n            }\n            symbolRow = symbolBitmap[t2];\n            switch (combinationOperator) {\n              case 0: // OR\n                for (s2 = 0; s2 < symbolWidth; s2++) {\n                  row[offsetS + s2] |= symbolRow[s2];\n                }\n                break;\n              case 2: // XOR\n                for (s2 = 0; s2 < symbolWidth; s2++) {\n                  row[offsetS + s2] ^= symbolRow[s2];\n                }\n                break;\n              default:\n                throw new Jbig2Error(\n                  `operator ${combinationOperator} is not supported`\n                );\n            }\n          }\n          currentS += symbolWidth - 1;\n        }\n        i++;\n        var deltaS = huffman\n          ? huffmanTables.tableDeltaS.decode(huffmanInput)\n          : decodeInteger(contextCache, \"IADS\", decoder); // 6.4.8\n        if (deltaS === null) {\n          break; // OOB\n        }\n        currentS += deltaS + dsOffset;\n      } while (true);\n    }\n    return bitmap;\n  }\n\n  function decodePatternDictionary(\n    mmr,\n    patternWidth,\n    patternHeight,\n    maxPatternIndex,\n    template,\n    decodingContext\n  ) {\n    const at = [];\n    if (!mmr) {\n      at.push({\n        x: -patternWidth,\n        y: 0,\n      });\n      if (template === 0) {\n        at.push({\n          x: -3,\n          y: -1,\n        });\n        at.push({\n          x: 2,\n          y: -2,\n        });\n        at.push({\n          x: -2,\n          y: -2,\n        });\n      }\n    }\n    const collectiveWidth = (maxPatternIndex + 1) * patternWidth;\n    const collectiveBitmap = decodeBitmap(\n      mmr,\n      collectiveWidth,\n      patternHeight,\n      template,\n      false,\n      null,\n      at,\n      decodingContext\n    );\n    // Divide collective bitmap into patterns.\n    const patterns = [];\n    for (let i = 0; i <= maxPatternIndex; i++) {\n      const patternBitmap = [];\n      const xMin = patternWidth * i;\n      const xMax = xMin + patternWidth;\n      for (let y = 0; y < patternHeight; y++) {\n        patternBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));\n      }\n      patterns.push(patternBitmap);\n    }\n    return patterns;\n  }\n\n  function decodeHalftoneRegion(\n    mmr,\n    patterns,\n    template,\n    regionWidth,\n    regionHeight,\n    defaultPixelValue,\n    enableSkip,\n    combinationOperator,\n    gridWidth,\n    gridHeight,\n    gridOffsetX,\n    gridOffsetY,\n    gridVectorX,\n    gridVectorY,\n    decodingContext\n  ) {\n    const skip = null;\n    if (enableSkip) {\n      throw new Jbig2Error(\"skip is not supported\");\n    }\n    if (combinationOperator !== 0) {\n      throw new Jbig2Error(\n        \"operator \" +\n          combinationOperator +\n          \" is not supported in halftone region\"\n      );\n    }\n\n    // Prepare bitmap.\n    const regionBitmap = [];\n    let i, j, row;\n    for (i = 0; i < regionHeight; i++) {\n      row = new Uint8Array(regionWidth);\n      if (defaultPixelValue) {\n        for (j = 0; j < regionWidth; j++) {\n          row[j] = defaultPixelValue;\n        }\n      }\n      regionBitmap.push(row);\n    }\n\n    const numberOfPatterns = patterns.length;\n    const pattern0 = patterns[0];\n    const patternWidth = pattern0[0].length,\n      patternHeight = pattern0.length;\n    const bitsPerValue = log2(numberOfPatterns);\n    const at = [];\n    if (!mmr) {\n      at.push({\n        x: template <= 1 ? 3 : 2,\n        y: -1,\n      });\n      if (template === 0) {\n        at.push({\n          x: -3,\n          y: -1,\n        });\n        at.push({\n          x: 2,\n          y: -2,\n        });\n        at.push({\n          x: -2,\n          y: -2,\n        });\n      }\n    }\n    // Annex C. Gray-scale Image Decoding Procedure.\n    const grayScaleBitPlanes = [];\n    let mmrInput, bitmap;\n    if (mmr) {\n      // MMR bit planes are in one continuous stream. Only EOFB codes indicate\n      // the end of each bitmap, so EOFBs must be decoded.\n      mmrInput = new Reader(\n        decodingContext.data,\n        decodingContext.start,\n        decodingContext.end\n      );\n    }\n    for (i = bitsPerValue - 1; i >= 0; i--) {\n      if (mmr) {\n        bitmap = decodeMMRBitmap(mmrInput, gridWidth, gridHeight, true);\n      } else {\n        bitmap = decodeBitmap(\n          false,\n          gridWidth,\n          gridHeight,\n          template,\n          false,\n          skip,\n          at,\n          decodingContext\n        );\n      }\n      grayScaleBitPlanes[i] = bitmap;\n    }\n    // 6.6.5.2 Rendering the patterns.\n    let mg, ng, bit, patternIndex, patternBitmap, x, y, patternRow, regionRow;\n    for (mg = 0; mg < gridHeight; mg++) {\n      for (ng = 0; ng < gridWidth; ng++) {\n        bit = 0;\n        patternIndex = 0;\n        for (j = bitsPerValue - 1; j >= 0; j--) {\n          bit = grayScaleBitPlanes[j][mg][ng] ^ bit; // Gray decoding\n          patternIndex |= bit << j;\n        }\n        patternBitmap = patterns[patternIndex];\n        x = (gridOffsetX + mg * gridVectorY + ng * gridVectorX) >> 8;\n        y = (gridOffsetY + mg * gridVectorX - ng * gridVectorY) >> 8;\n        // Draw patternBitmap at (x, y).\n        if (\n          x >= 0 &&\n          x + patternWidth <= regionWidth &&\n          y >= 0 &&\n          y + patternHeight <= regionHeight\n        ) {\n          for (i = 0; i < patternHeight; i++) {\n            regionRow = regionBitmap[y + i];\n            patternRow = patternBitmap[i];\n            for (j = 0; j < patternWidth; j++) {\n              regionRow[x + j] |= patternRow[j];\n            }\n          }\n        } else {\n          let regionX, regionY;\n          for (i = 0; i < patternHeight; i++) {\n            regionY = y + i;\n            if (regionY < 0 || regionY >= regionHeight) {\n              continue;\n            }\n            regionRow = regionBitmap[regionY];\n            patternRow = patternBitmap[i];\n            for (j = 0; j < patternWidth; j++) {\n              regionX = x + j;\n              if (regionX >= 0 && regionX < regionWidth) {\n                regionRow[regionX] |= patternRow[j];\n              }\n            }\n          }\n        }\n      }\n    }\n    return regionBitmap;\n  }\n\n  function readSegmentHeader(data, start) {\n    var segmentHeader = {};\n    segmentHeader.number = readUint32(data, start);\n    var flags = data[start + 4];\n    var segmentType = flags & 0x3f;\n    if (!SegmentTypes[segmentType]) {\n      throw new Jbig2Error(\"invalid segment type: \" + segmentType);\n    }\n    segmentHeader.type = segmentType;\n    segmentHeader.typeName = SegmentTypes[segmentType];\n    segmentHeader.deferredNonRetain = !!(flags & 0x80);\n\n    var pageAssociationFieldSize = !!(flags & 0x40);\n    var referredFlags = data[start + 5];\n    var referredToCount = (referredFlags >> 5) & 7;\n    var retainBits = [referredFlags & 31];\n    var position = start + 6;\n    if (referredFlags === 7) {\n      referredToCount = readUint32(data, position - 1) & 0x1fffffff;\n      position += 3;\n      var bytes = (referredToCount + 7) >> 3;\n      retainBits[0] = data[position++];\n      while (--bytes > 0) {\n        retainBits.push(data[position++]);\n      }\n    } else if (referredFlags === 5 || referredFlags === 6) {\n      throw new Jbig2Error(\"invalid referred-to flags\");\n    }\n\n    segmentHeader.retainBits = retainBits;\n\n    let referredToSegmentNumberSize = 4;\n    if (segmentHeader.number <= 256) {\n      referredToSegmentNumberSize = 1;\n    } else if (segmentHeader.number <= 65536) {\n      referredToSegmentNumberSize = 2;\n    }\n    var referredTo = [];\n    var i, ii;\n    for (i = 0; i < referredToCount; i++) {\n      let number;\n      if (referredToSegmentNumberSize === 1) {\n        number = data[position];\n      } else if (referredToSegmentNumberSize === 2) {\n        number = readUint16(data, position);\n      } else {\n        number = readUint32(data, position);\n      }\n      referredTo.push(number);\n      position += referredToSegmentNumberSize;\n    }\n    segmentHeader.referredTo = referredTo;\n    if (!pageAssociationFieldSize) {\n      segmentHeader.pageAssociation = data[position++];\n    } else {\n      segmentHeader.pageAssociation = readUint32(data, position);\n      position += 4;\n    }\n    segmentHeader.length = readUint32(data, position);\n    position += 4;\n\n    if (segmentHeader.length === 0xffffffff) {\n      // 7.2.7 Segment data length, unknown segment length\n      if (segmentType === 38) {\n        // ImmediateGenericRegion\n        var genericRegionInfo = readRegionSegmentInformation(data, position);\n        var genericRegionSegmentFlags =\n          data[position + RegionSegmentInformationFieldLength];\n        var genericRegionMmr = !!(genericRegionSegmentFlags & 1);\n        // searching for the segment end\n        var searchPatternLength = 6;\n        var searchPattern = new Uint8Array(searchPatternLength);\n        if (!genericRegionMmr) {\n          searchPattern[0] = 0xff;\n          searchPattern[1] = 0xac;\n        }\n        searchPattern[2] = (genericRegionInfo.height >>> 24) & 0xff;\n        searchPattern[3] = (genericRegionInfo.height >> 16) & 0xff;\n        searchPattern[4] = (genericRegionInfo.height >> 8) & 0xff;\n        searchPattern[5] = genericRegionInfo.height & 0xff;\n        for (i = position, ii = data.length; i < ii; i++) {\n          var j = 0;\n          while (j < searchPatternLength && searchPattern[j] === data[i + j]) {\n            j++;\n          }\n          if (j === searchPatternLength) {\n            segmentHeader.length = i + searchPatternLength;\n            break;\n          }\n        }\n        if (segmentHeader.length === 0xffffffff) {\n          throw new Jbig2Error(\"segment end was not found\");\n        }\n      } else {\n        throw new Jbig2Error(\"invalid unknown segment length\");\n      }\n    }\n    segmentHeader.headerEnd = position;\n    return segmentHeader;\n  }\n\n  function readSegments(header, data, start, end) {\n    var segments = [];\n    var position = start;\n    while (position < end) {\n      var segmentHeader = readSegmentHeader(data, position);\n      position = segmentHeader.headerEnd;\n      var segment = {\n        header: segmentHeader,\n        data,\n      };\n      if (!header.randomAccess) {\n        segment.start = position;\n        position += segmentHeader.length;\n        segment.end = position;\n      }\n      segments.push(segment);\n      if (segmentHeader.type === 51) {\n        break; // end of file is found\n      }\n    }\n    if (header.randomAccess) {\n      for (var i = 0, ii = segments.length; i < ii; i++) {\n        segments[i].start = position;\n        position += segments[i].header.length;\n        segments[i].end = position;\n      }\n    }\n    return segments;\n  }\n\n  // 7.4.1 Region segment information field\n  function readRegionSegmentInformation(data, start) {\n    return {\n      width: readUint32(data, start),\n      height: readUint32(data, start + 4),\n      x: readUint32(data, start + 8),\n      y: readUint32(data, start + 12),\n      combinationOperator: data[start + 16] & 7,\n    };\n  }\n  var RegionSegmentInformationFieldLength = 17;\n\n  function processSegment(segment, visitor) {\n    var header = segment.header;\n\n    var data = segment.data,\n      position = segment.start,\n      end = segment.end;\n    var args, at, i, atLength;\n    switch (header.type) {\n      case 0: // SymbolDictionary\n        // 7.4.2 Symbol dictionary segment syntax\n        var dictionary = {};\n        var dictionaryFlags = readUint16(data, position); // 7.4.2.1.1\n        dictionary.huffman = !!(dictionaryFlags & 1);\n        dictionary.refinement = !!(dictionaryFlags & 2);\n        dictionary.huffmanDHSelector = (dictionaryFlags >> 2) & 3;\n        dictionary.huffmanDWSelector = (dictionaryFlags >> 4) & 3;\n        dictionary.bitmapSizeSelector = (dictionaryFlags >> 6) & 1;\n        dictionary.aggregationInstancesSelector = (dictionaryFlags >> 7) & 1;\n        dictionary.bitmapCodingContextUsed = !!(dictionaryFlags & 256);\n        dictionary.bitmapCodingContextRetained = !!(dictionaryFlags & 512);\n        dictionary.template = (dictionaryFlags >> 10) & 3;\n        dictionary.refinementTemplate = (dictionaryFlags >> 12) & 1;\n        position += 2;\n        if (!dictionary.huffman) {\n          atLength = dictionary.template === 0 ? 4 : 1;\n          at = [];\n          for (i = 0; i < atLength; i++) {\n            at.push({\n              x: readInt8(data, position),\n              y: readInt8(data, position + 1),\n            });\n            position += 2;\n          }\n          dictionary.at = at;\n        }\n        if (dictionary.refinement && !dictionary.refinementTemplate) {\n          at = [];\n          for (i = 0; i < 2; i++) {\n            at.push({\n              x: readInt8(data, position),\n              y: readInt8(data, position + 1),\n            });\n            position += 2;\n          }\n          dictionary.refinementAt = at;\n        }\n        dictionary.numberOfExportedSymbols = readUint32(data, position);\n        position += 4;\n        dictionary.numberOfNewSymbols = readUint32(data, position);\n        position += 4;\n        args = [\n          dictionary,\n          header.number,\n          header.referredTo,\n          data,\n          position,\n          end,\n        ];\n        break;\n      case 6: // ImmediateTextRegion\n      case 7: // ImmediateLosslessTextRegion\n        var textRegion = {};\n        textRegion.info = readRegionSegmentInformation(data, position);\n        position += RegionSegmentInformationFieldLength;\n        var textRegionSegmentFlags = readUint16(data, position);\n        position += 2;\n        textRegion.huffman = !!(textRegionSegmentFlags & 1);\n        textRegion.refinement = !!(textRegionSegmentFlags & 2);\n        textRegion.logStripSize = (textRegionSegmentFlags >> 2) & 3;\n        textRegion.stripSize = 1 << textRegion.logStripSize;\n        textRegion.referenceCorner = (textRegionSegmentFlags >> 4) & 3;\n        textRegion.transposed = !!(textRegionSegmentFlags & 64);\n        textRegion.combinationOperator = (textRegionSegmentFlags >> 7) & 3;\n        textRegion.defaultPixelValue = (textRegionSegmentFlags >> 9) & 1;\n        textRegion.dsOffset = (textRegionSegmentFlags << 17) >> 27;\n        textRegion.refinementTemplate = (textRegionSegmentFlags >> 15) & 1;\n        if (textRegion.huffman) {\n          var textRegionHuffmanFlags = readUint16(data, position);\n          position += 2;\n          textRegion.huffmanFS = textRegionHuffmanFlags & 3;\n          textRegion.huffmanDS = (textRegionHuffmanFlags >> 2) & 3;\n          textRegion.huffmanDT = (textRegionHuffmanFlags >> 4) & 3;\n          textRegion.huffmanRefinementDW = (textRegionHuffmanFlags >> 6) & 3;\n          textRegion.huffmanRefinementDH = (textRegionHuffmanFlags >> 8) & 3;\n          textRegion.huffmanRefinementDX = (textRegionHuffmanFlags >> 10) & 3;\n          textRegion.huffmanRefinementDY = (textRegionHuffmanFlags >> 12) & 3;\n          textRegion.huffmanRefinementSizeSelector = !!(\n            textRegionHuffmanFlags & 0x4000\n          );\n        }\n        if (textRegion.refinement && !textRegion.refinementTemplate) {\n          at = [];\n          for (i = 0; i < 2; i++) {\n            at.push({\n              x: readInt8(data, position),\n              y: readInt8(data, position + 1),\n            });\n            position += 2;\n          }\n          textRegion.refinementAt = at;\n        }\n        textRegion.numberOfSymbolInstances = readUint32(data, position);\n        position += 4;\n        args = [textRegion, header.referredTo, data, position, end];\n        break;\n      case 16: // PatternDictionary\n        // 7.4.4. Pattern dictionary segment syntax\n        const patternDictionary = {};\n        const patternDictionaryFlags = data[position++];\n        patternDictionary.mmr = !!(patternDictionaryFlags & 1);\n        patternDictionary.template = (patternDictionaryFlags >> 1) & 3;\n        patternDictionary.patternWidth = data[position++];\n        patternDictionary.patternHeight = data[position++];\n        patternDictionary.maxPatternIndex = readUint32(data, position);\n        position += 4;\n        args = [patternDictionary, header.number, data, position, end];\n        break;\n      case 22: // ImmediateHalftoneRegion\n      case 23: // ImmediateLosslessHalftoneRegion\n        // 7.4.5 Halftone region segment syntax\n        const halftoneRegion = {};\n        halftoneRegion.info = readRegionSegmentInformation(data, position);\n        position += RegionSegmentInformationFieldLength;\n        const halftoneRegionFlags = data[position++];\n        halftoneRegion.mmr = !!(halftoneRegionFlags & 1);\n        halftoneRegion.template = (halftoneRegionFlags >> 1) & 3;\n        halftoneRegion.enableSkip = !!(halftoneRegionFlags & 8);\n        halftoneRegion.combinationOperator = (halftoneRegionFlags >> 4) & 7;\n        halftoneRegion.defaultPixelValue = (halftoneRegionFlags >> 7) & 1;\n        halftoneRegion.gridWidth = readUint32(data, position);\n        position += 4;\n        halftoneRegion.gridHeight = readUint32(data, position);\n        position += 4;\n        halftoneRegion.gridOffsetX = readUint32(data, position) & 0xffffffff;\n        position += 4;\n        halftoneRegion.gridOffsetY = readUint32(data, position) & 0xffffffff;\n        position += 4;\n        halftoneRegion.gridVectorX = readUint16(data, position);\n        position += 2;\n        halftoneRegion.gridVectorY = readUint16(data, position);\n        position += 2;\n        args = [halftoneRegion, header.referredTo, data, position, end];\n        break;\n      case 38: // ImmediateGenericRegion\n      case 39: // ImmediateLosslessGenericRegion\n        var genericRegion = {};\n        genericRegion.info = readRegionSegmentInformation(data, position);\n        position += RegionSegmentInformationFieldLength;\n        var genericRegionSegmentFlags = data[position++];\n        genericRegion.mmr = !!(genericRegionSegmentFlags & 1);\n        genericRegion.template = (genericRegionSegmentFlags >> 1) & 3;\n        genericRegion.prediction = !!(genericRegionSegmentFlags & 8);\n        if (!genericRegion.mmr) {\n          atLength = genericRegion.template === 0 ? 4 : 1;\n          at = [];\n          for (i = 0; i < atLength; i++) {\n            at.push({\n              x: readInt8(data, position),\n              y: readInt8(data, position + 1),\n            });\n            position += 2;\n          }\n          genericRegion.at = at;\n        }\n        args = [genericRegion, data, position, end];\n        break;\n      case 48: // PageInformation\n        var pageInfo = {\n          width: readUint32(data, position),\n          height: readUint32(data, position + 4),\n          resolutionX: readUint32(data, position + 8),\n          resolutionY: readUint32(data, position + 12),\n        };\n        if (pageInfo.height === 0xffffffff) {\n          delete pageInfo.height;\n        }\n        var pageSegmentFlags = data[position + 16];\n        readUint16(data, position + 17); // pageStripingInformation\n        pageInfo.lossless = !!(pageSegmentFlags & 1);\n        pageInfo.refinement = !!(pageSegmentFlags & 2);\n        pageInfo.defaultPixelValue = (pageSegmentFlags >> 2) & 1;\n        pageInfo.combinationOperator = (pageSegmentFlags >> 3) & 3;\n        pageInfo.requiresBuffer = !!(pageSegmentFlags & 32);\n        pageInfo.combinationOperatorOverride = !!(pageSegmentFlags & 64);\n        args = [pageInfo];\n        break;\n      case 49: // EndOfPage\n        break;\n      case 50: // EndOfStripe\n        break;\n      case 51: // EndOfFile\n        break;\n      case 53: // Tables\n        args = [header.number, data, position, end];\n        break;\n      case 62: // 7.4.15 defines 2 extension types which\n        // are comments and can be ignored.\n        break;\n      default:\n        throw new Jbig2Error(\n          `segment type ${header.typeName}(${header.type})` +\n            \" is not implemented\"\n        );\n    }\n    var callbackName = \"on\" + header.typeName;\n    if (callbackName in visitor) {\n      visitor[callbackName].apply(visitor, args);\n    }\n  }\n\n  function processSegments(segments, visitor) {\n    for (var i = 0, ii = segments.length; i < ii; i++) {\n      processSegment(segments[i], visitor);\n    }\n  }\n\n  function parseJbig2Chunks(chunks) {\n    var visitor = new SimpleSegmentVisitor();\n    for (var i = 0, ii = chunks.length; i < ii; i++) {\n      var chunk = chunks[i];\n      var segments = readSegments({}, chunk.data, chunk.start, chunk.end);\n      processSegments(segments, visitor);\n    }\n    return visitor.buffer;\n  }\n\n  function parseJbig2(data) {\n    const end = data.length;\n    let position = 0;\n\n    if (\n      data[position] !== 0x97 ||\n      data[position + 1] !== 0x4a ||\n      data[position + 2] !== 0x42 ||\n      data[position + 3] !== 0x32 ||\n      data[position + 4] !== 0x0d ||\n      data[position + 5] !== 0x0a ||\n      data[position + 6] !== 0x1a ||\n      data[position + 7] !== 0x0a\n    ) {\n      throw new Jbig2Error(\"parseJbig2 - invalid header.\");\n    }\n\n    const header = Object.create(null);\n    position += 8;\n    const flags = data[position++];\n    header.randomAccess = !(flags & 1);\n    if (!(flags & 2)) {\n      header.numberOfPages = readUint32(data, position);\n      position += 4;\n    }\n\n    const segments = readSegments(header, data, position, end);\n    const visitor = new SimpleSegmentVisitor();\n    processSegments(segments, visitor);\n\n    const { width, height } = visitor.currentPageInfo;\n    const bitPacked = visitor.buffer;\n    const imgData = new Uint8ClampedArray(width * height);\n    let q = 0,\n      k = 0;\n    for (let i = 0; i < height; i++) {\n      let mask = 0,\n        buffer;\n      for (let j = 0; j < width; j++) {\n        if (!mask) {\n          mask = 128;\n          buffer = bitPacked[k++];\n        }\n        imgData[q++] = buffer & mask ? 0 : 255;\n        mask >>= 1;\n      }\n    }\n\n    return { imgData, width, height };\n  }\n\n  function SimpleSegmentVisitor() {}\n\n  SimpleSegmentVisitor.prototype = {\n    onPageInformation: function SimpleSegmentVisitor_onPageInformation(info) {\n      this.currentPageInfo = info;\n      var rowSize = (info.width + 7) >> 3;\n      var buffer = new Uint8ClampedArray(rowSize * info.height);\n      // The contents of ArrayBuffers are initialized to 0.\n      // Fill the buffer with 0xFF only if info.defaultPixelValue is set\n      if (info.defaultPixelValue) {\n        for (var i = 0, ii = buffer.length; i < ii; i++) {\n          buffer[i] = 0xff;\n        }\n      }\n      this.buffer = buffer;\n    },\n    drawBitmap: function SimpleSegmentVisitor_drawBitmap(regionInfo, bitmap) {\n      var pageInfo = this.currentPageInfo;\n      var width = regionInfo.width,\n        height = regionInfo.height;\n      var rowSize = (pageInfo.width + 7) >> 3;\n      var combinationOperator = pageInfo.combinationOperatorOverride\n        ? regionInfo.combinationOperator\n        : pageInfo.combinationOperator;\n      var buffer = this.buffer;\n      var mask0 = 128 >> (regionInfo.x & 7);\n      var offset0 = regionInfo.y * rowSize + (regionInfo.x >> 3);\n      var i, j, mask, offset;\n      switch (combinationOperator) {\n        case 0: // OR\n          for (i = 0; i < height; i++) {\n            mask = mask0;\n            offset = offset0;\n            for (j = 0; j < width; j++) {\n              if (bitmap[i][j]) {\n                buffer[offset] |= mask;\n              }\n              mask >>= 1;\n              if (!mask) {\n                mask = 128;\n                offset++;\n              }\n            }\n            offset0 += rowSize;\n          }\n          break;\n        case 2: // XOR\n          for (i = 0; i < height; i++) {\n            mask = mask0;\n            offset = offset0;\n            for (j = 0; j < width; j++) {\n              if (bitmap[i][j]) {\n                buffer[offset] ^= mask;\n              }\n              mask >>= 1;\n              if (!mask) {\n                mask = 128;\n                offset++;\n              }\n            }\n            offset0 += rowSize;\n          }\n          break;\n        default:\n          throw new Jbig2Error(\n            `operator ${combinationOperator} is not supported`\n          );\n      }\n    },\n    onImmediateGenericRegion: function SimpleSegmentVisitor_onImmediateGenericRegion(\n      region,\n      data,\n      start,\n      end\n    ) {\n      var regionInfo = region.info;\n      var decodingContext = new DecodingContext(data, start, end);\n      var bitmap = decodeBitmap(\n        region.mmr,\n        regionInfo.width,\n        regionInfo.height,\n        region.template,\n        region.prediction,\n        null,\n        region.at,\n        decodingContext\n      );\n      this.drawBitmap(regionInfo, bitmap);\n    },\n    onImmediateLosslessGenericRegion: function SimpleSegmentVisitor_onImmediateLosslessGenericRegion() {\n      this.onImmediateGenericRegion.apply(this, arguments);\n    },\n    onSymbolDictionary: function SimpleSegmentVisitor_onSymbolDictionary(\n      dictionary,\n      currentSegment,\n      referredSegments,\n      data,\n      start,\n      end\n    ) {\n      let huffmanTables, huffmanInput;\n      if (dictionary.huffman) {\n        huffmanTables = getSymbolDictionaryHuffmanTables(\n          dictionary,\n          referredSegments,\n          this.customTables\n        );\n        huffmanInput = new Reader(data, start, end);\n      }\n\n      // Combines exported symbols from all referred segments\n      var symbols = this.symbols;\n      if (!symbols) {\n        this.symbols = symbols = {};\n      }\n\n      var inputSymbols = [];\n      for (var i = 0, ii = referredSegments.length; i < ii; i++) {\n        const referredSymbols = symbols[referredSegments[i]];\n        // referredSymbols is undefined when we have a reference to a Tables\n        // segment instead of a SymbolDictionary.\n        if (referredSymbols) {\n          inputSymbols = inputSymbols.concat(referredSymbols);\n        }\n      }\n\n      var decodingContext = new DecodingContext(data, start, end);\n      symbols[currentSegment] = decodeSymbolDictionary(\n        dictionary.huffman,\n        dictionary.refinement,\n        inputSymbols,\n        dictionary.numberOfNewSymbols,\n        dictionary.numberOfExportedSymbols,\n        huffmanTables,\n        dictionary.template,\n        dictionary.at,\n        dictionary.refinementTemplate,\n        dictionary.refinementAt,\n        decodingContext,\n        huffmanInput\n      );\n    },\n    onImmediateTextRegion: function SimpleSegmentVisitor_onImmediateTextRegion(\n      region,\n      referredSegments,\n      data,\n      start,\n      end\n    ) {\n      var regionInfo = region.info;\n      let huffmanTables, huffmanInput;\n\n      // Combines exported symbols from all referred segments\n      var symbols = this.symbols;\n      var inputSymbols = [];\n      for (var i = 0, ii = referredSegments.length; i < ii; i++) {\n        const referredSymbols = symbols[referredSegments[i]];\n        // referredSymbols is undefined when we have a reference to a Tables\n        // segment instead of a SymbolDictionary.\n        if (referredSymbols) {\n          inputSymbols = inputSymbols.concat(referredSymbols);\n        }\n      }\n      var symbolCodeLength = log2(inputSymbols.length);\n      if (region.huffman) {\n        huffmanInput = new Reader(data, start, end);\n        huffmanTables = getTextRegionHuffmanTables(\n          region,\n          referredSegments,\n          this.customTables,\n          inputSymbols.length,\n          huffmanInput\n        );\n      }\n\n      var decodingContext = new DecodingContext(data, start, end);\n      var bitmap = decodeTextRegion(\n        region.huffman,\n        region.refinement,\n        regionInfo.width,\n        regionInfo.height,\n        region.defaultPixelValue,\n        region.numberOfSymbolInstances,\n        region.stripSize,\n        inputSymbols,\n        symbolCodeLength,\n        region.transposed,\n        region.dsOffset,\n        region.referenceCorner,\n        region.combinationOperator,\n        huffmanTables,\n        region.refinementTemplate,\n        region.refinementAt,\n        decodingContext,\n        region.logStripSize,\n        huffmanInput\n      );\n      this.drawBitmap(regionInfo, bitmap);\n    },\n    onImmediateLosslessTextRegion: function SimpleSegmentVisitor_onImmediateLosslessTextRegion() {\n      this.onImmediateTextRegion.apply(this, arguments);\n    },\n    onPatternDictionary(dictionary, currentSegment, data, start, end) {\n      let patterns = this.patterns;\n      if (!patterns) {\n        this.patterns = patterns = {};\n      }\n      const decodingContext = new DecodingContext(data, start, end);\n      patterns[currentSegment] = decodePatternDictionary(\n        dictionary.mmr,\n        dictionary.patternWidth,\n        dictionary.patternHeight,\n        dictionary.maxPatternIndex,\n        dictionary.template,\n        decodingContext\n      );\n    },\n    onImmediateHalftoneRegion(region, referredSegments, data, start, end) {\n      // HalftoneRegion refers to exactly one PatternDictionary.\n      const patterns = this.patterns[referredSegments[0]];\n      const regionInfo = region.info;\n      const decodingContext = new DecodingContext(data, start, end);\n      const bitmap = decodeHalftoneRegion(\n        region.mmr,\n        patterns,\n        region.template,\n        regionInfo.width,\n        regionInfo.height,\n        region.defaultPixelValue,\n        region.enableSkip,\n        region.combinationOperator,\n        region.gridWidth,\n        region.gridHeight,\n        region.gridOffsetX,\n        region.gridOffsetY,\n        region.gridVectorX,\n        region.gridVectorY,\n        decodingContext\n      );\n      this.drawBitmap(regionInfo, bitmap);\n    },\n    onImmediateLosslessHalftoneRegion() {\n      this.onImmediateHalftoneRegion.apply(this, arguments);\n    },\n    onTables(currentSegment, data, start, end) {\n      let customTables = this.customTables;\n      if (!customTables) {\n        this.customTables = customTables = {};\n      }\n      customTables[currentSegment] = decodeTablesSegment(data, start, end);\n    },\n  };\n\n  function HuffmanLine(lineData) {\n    if (lineData.length === 2) {\n      // OOB line.\n      this.isOOB = true;\n      this.rangeLow = 0;\n      this.prefixLength = lineData[0];\n      this.rangeLength = 0;\n      this.prefixCode = lineData[1];\n      this.isLowerRange = false;\n    } else {\n      // Normal, upper range or lower range line.\n      // Upper range lines are processed like normal lines.\n      this.isOOB = false;\n      this.rangeLow = lineData[0];\n      this.prefixLength = lineData[1];\n      this.rangeLength = lineData[2];\n      this.prefixCode = lineData[3];\n      this.isLowerRange = lineData[4] === \"lower\";\n    }\n  }\n\n  function HuffmanTreeNode(line) {\n    this.children = [];\n    if (line) {\n      // Leaf node\n      this.isLeaf = true;\n      this.rangeLength = line.rangeLength;\n      this.rangeLow = line.rangeLow;\n      this.isLowerRange = line.isLowerRange;\n      this.isOOB = line.isOOB;\n    } else {\n      // Intermediate or root node\n      this.isLeaf = false;\n    }\n  }\n\n  HuffmanTreeNode.prototype = {\n    buildTree(line, shift) {\n      const bit = (line.prefixCode >> shift) & 1;\n      if (shift <= 0) {\n        // Create a leaf node.\n        this.children[bit] = new HuffmanTreeNode(line);\n      } else {\n        // Create an intermediate node and continue recursively.\n        let node = this.children[bit];\n        if (!node) {\n          this.children[bit] = node = new HuffmanTreeNode(null);\n        }\n        node.buildTree(line, shift - 1);\n      }\n    },\n    decodeNode(reader) {\n      if (this.isLeaf) {\n        if (this.isOOB) {\n          return null;\n        }\n        const htOffset = reader.readBits(this.rangeLength);\n        return this.rangeLow + (this.isLowerRange ? -htOffset : htOffset);\n      }\n      const node = this.children[reader.readBit()];\n      if (!node) {\n        throw new Jbig2Error(\"invalid Huffman data\");\n      }\n      return node.decodeNode(reader);\n    },\n  };\n\n  function HuffmanTable(lines, prefixCodesDone) {\n    if (!prefixCodesDone) {\n      this.assignPrefixCodes(lines);\n    }\n    // Create Huffman tree.\n    this.rootNode = new HuffmanTreeNode(null);\n    for (let i = 0, ii = lines.length; i < ii; i++) {\n      const line = lines[i];\n      if (line.prefixLength > 0) {\n        this.rootNode.buildTree(line, line.prefixLength - 1);\n      }\n    }\n  }\n\n  HuffmanTable.prototype = {\n    decode(reader) {\n      return this.rootNode.decodeNode(reader);\n    },\n    assignPrefixCodes(lines) {\n      // Annex B.3 Assigning the prefix codes.\n      const linesLength = lines.length;\n      let prefixLengthMax = 0;\n      for (let i = 0; i < linesLength; i++) {\n        prefixLengthMax = Math.max(prefixLengthMax, lines[i].prefixLength);\n      }\n\n      const histogram = new Uint32Array(prefixLengthMax + 1);\n      for (let i = 0; i < linesLength; i++) {\n        histogram[lines[i].prefixLength]++;\n      }\n      let currentLength = 1,\n        firstCode = 0,\n        currentCode,\n        currentTemp,\n        line;\n      histogram[0] = 0;\n\n      while (currentLength <= prefixLengthMax) {\n        firstCode = (firstCode + histogram[currentLength - 1]) << 1;\n        currentCode = firstCode;\n        currentTemp = 0;\n        while (currentTemp < linesLength) {\n          line = lines[currentTemp];\n          if (line.prefixLength === currentLength) {\n            line.prefixCode = currentCode;\n            currentCode++;\n          }\n          currentTemp++;\n        }\n        currentLength++;\n      }\n    },\n  };\n\n  function decodeTablesSegment(data, start, end) {\n    // Decodes a Tables segment, i.e., a custom Huffman table.\n    // Annex B.2 Code table structure.\n    const flags = data[start];\n    const lowestValue = readUint32(data, start + 1) & 0xffffffff;\n    const highestValue = readUint32(data, start + 5) & 0xffffffff;\n    const reader = new Reader(data, start + 9, end);\n\n    const prefixSizeBits = ((flags >> 1) & 7) + 1;\n    const rangeSizeBits = ((flags >> 4) & 7) + 1;\n    const lines = [];\n    let prefixLength,\n      rangeLength,\n      currentRangeLow = lowestValue;\n\n    // Normal table lines\n    do {\n      prefixLength = reader.readBits(prefixSizeBits);\n      rangeLength = reader.readBits(rangeSizeBits);\n      lines.push(\n        new HuffmanLine([currentRangeLow, prefixLength, rangeLength, 0])\n      );\n      currentRangeLow += 1 << rangeLength;\n    } while (currentRangeLow < highestValue);\n\n    // Lower range table line\n    prefixLength = reader.readBits(prefixSizeBits);\n    lines.push(\n      new HuffmanLine([lowestValue - 1, prefixLength, 32, 0, \"lower\"])\n    );\n\n    // Upper range table line\n    prefixLength = reader.readBits(prefixSizeBits);\n    lines.push(new HuffmanLine([highestValue, prefixLength, 32, 0]));\n\n    if (flags & 1) {\n      // Out-of-band table line\n      prefixLength = reader.readBits(prefixSizeBits);\n      lines.push(new HuffmanLine([prefixLength, 0]));\n    }\n\n    return new HuffmanTable(lines, false);\n  }\n\n  const standardTablesCache = {};\n\n  function getStandardTable(number) {\n    // Annex B.5 Standard Huffman tables.\n    let table = standardTablesCache[number];\n    if (table) {\n      return table;\n    }\n    let lines;\n    switch (number) {\n      case 1:\n        lines = [\n          [0, 1, 4, 0x0],\n          [16, 2, 8, 0x2],\n          [272, 3, 16, 0x6],\n          [65808, 3, 32, 0x7], // upper\n        ];\n        break;\n      case 2:\n        lines = [\n          [0, 1, 0, 0x0],\n          [1, 2, 0, 0x2],\n          [2, 3, 0, 0x6],\n          [3, 4, 3, 0xe],\n          [11, 5, 6, 0x1e],\n          [75, 6, 32, 0x3e], // upper\n          [6, 0x3f], // OOB\n        ];\n        break;\n      case 3:\n        lines = [\n          [-256, 8, 8, 0xfe],\n          [0, 1, 0, 0x0],\n          [1, 2, 0, 0x2],\n          [2, 3, 0, 0x6],\n          [3, 4, 3, 0xe],\n          [11, 5, 6, 0x1e],\n          [-257, 8, 32, 0xff, \"lower\"],\n          [75, 7, 32, 0x7e], // upper\n          [6, 0x3e], // OOB\n        ];\n        break;\n      case 4:\n        lines = [\n          [1, 1, 0, 0x0],\n          [2, 2, 0, 0x2],\n          [3, 3, 0, 0x6],\n          [4, 4, 3, 0xe],\n          [12, 5, 6, 0x1e],\n          [76, 5, 32, 0x1f], // upper\n        ];\n        break;\n      case 5:\n        lines = [\n          [-255, 7, 8, 0x7e],\n          [1, 1, 0, 0x0],\n          [2, 2, 0, 0x2],\n          [3, 3, 0, 0x6],\n          [4, 4, 3, 0xe],\n          [12, 5, 6, 0x1e],\n          [-256, 7, 32, 0x7f, \"lower\"],\n          [76, 6, 32, 0x3e], // upper\n        ];\n        break;\n      case 6:\n        lines = [\n          [-2048, 5, 10, 0x1c],\n          [-1024, 4, 9, 0x8],\n          [-512, 4, 8, 0x9],\n          [-256, 4, 7, 0xa],\n          [-128, 5, 6, 0x1d],\n          [-64, 5, 5, 0x1e],\n          [-32, 4, 5, 0xb],\n          [0, 2, 7, 0x0],\n          [128, 3, 7, 0x2],\n          [256, 3, 8, 0x3],\n          [512, 4, 9, 0xc],\n          [1024, 4, 10, 0xd],\n          [-2049, 6, 32, 0x3e, \"lower\"],\n          [2048, 6, 32, 0x3f], // upper\n        ];\n        break;\n      case 7:\n        lines = [\n          [-1024, 4, 9, 0x8],\n          [-512, 3, 8, 0x0],\n          [-256, 4, 7, 0x9],\n          [-128, 5, 6, 0x1a],\n          [-64, 5, 5, 0x1b],\n          [-32, 4, 5, 0xa],\n          [0, 4, 5, 0xb],\n          [32, 5, 5, 0x1c],\n          [64, 5, 6, 0x1d],\n          [128, 4, 7, 0xc],\n          [256, 3, 8, 0x1],\n          [512, 3, 9, 0x2],\n          [1024, 3, 10, 0x3],\n          [-1025, 5, 32, 0x1e, \"lower\"],\n          [2048, 5, 32, 0x1f], // upper\n        ];\n        break;\n      case 8:\n        lines = [\n          [-15, 8, 3, 0xfc],\n          [-7, 9, 1, 0x1fc],\n          [-5, 8, 1, 0xfd],\n          [-3, 9, 0, 0x1fd],\n          [-2, 7, 0, 0x7c],\n          [-1, 4, 0, 0xa],\n          [0, 2, 1, 0x0],\n          [2, 5, 0, 0x1a],\n          [3, 6, 0, 0x3a],\n          [4, 3, 4, 0x4],\n          [20, 6, 1, 0x3b],\n          [22, 4, 4, 0xb],\n          [38, 4, 5, 0xc],\n          [70, 5, 6, 0x1b],\n          [134, 5, 7, 0x1c],\n          [262, 6, 7, 0x3c],\n          [390, 7, 8, 0x7d],\n          [646, 6, 10, 0x3d],\n          [-16, 9, 32, 0x1fe, \"lower\"],\n          [1670, 9, 32, 0x1ff], // upper\n          [2, 0x1], // OOB\n        ];\n        break;\n      case 9:\n        lines = [\n          [-31, 8, 4, 0xfc],\n          [-15, 9, 2, 0x1fc],\n          [-11, 8, 2, 0xfd],\n          [-7, 9, 1, 0x1fd],\n          [-5, 7, 1, 0x7c],\n          [-3, 4, 1, 0xa],\n          [-1, 3, 1, 0x2],\n          [1, 3, 1, 0x3],\n          [3, 5, 1, 0x1a],\n          [5, 6, 1, 0x3a],\n          [7, 3, 5, 0x4],\n          [39, 6, 2, 0x3b],\n          [43, 4, 5, 0xb],\n          [75, 4, 6, 0xc],\n          [139, 5, 7, 0x1b],\n          [267, 5, 8, 0x1c],\n          [523, 6, 8, 0x3c],\n          [779, 7, 9, 0x7d],\n          [1291, 6, 11, 0x3d],\n          [-32, 9, 32, 0x1fe, \"lower\"],\n          [3339, 9, 32, 0x1ff], // upper\n          [2, 0x0], // OOB\n        ];\n        break;\n      case 10:\n        lines = [\n          [-21, 7, 4, 0x7a],\n          [-5, 8, 0, 0xfc],\n          [-4, 7, 0, 0x7b],\n          [-3, 5, 0, 0x18],\n          [-2, 2, 2, 0x0],\n          [2, 5, 0, 0x19],\n          [3, 6, 0, 0x36],\n          [4, 7, 0, 0x7c],\n          [5, 8, 0, 0xfd],\n          [6, 2, 6, 0x1],\n          [70, 5, 5, 0x1a],\n          [102, 6, 5, 0x37],\n          [134, 6, 6, 0x38],\n          [198, 6, 7, 0x39],\n          [326, 6, 8, 0x3a],\n          [582, 6, 9, 0x3b],\n          [1094, 6, 10, 0x3c],\n          [2118, 7, 11, 0x7d],\n          [-22, 8, 32, 0xfe, \"lower\"],\n          [4166, 8, 32, 0xff], // upper\n          [2, 0x2], // OOB\n        ];\n        break;\n      case 11:\n        lines = [\n          [1, 1, 0, 0x0],\n          [2, 2, 1, 0x2],\n          [4, 4, 0, 0xc],\n          [5, 4, 1, 0xd],\n          [7, 5, 1, 0x1c],\n          [9, 5, 2, 0x1d],\n          [13, 6, 2, 0x3c],\n          [17, 7, 2, 0x7a],\n          [21, 7, 3, 0x7b],\n          [29, 7, 4, 0x7c],\n          [45, 7, 5, 0x7d],\n          [77, 7, 6, 0x7e],\n          [141, 7, 32, 0x7f], // upper\n        ];\n        break;\n      case 12:\n        lines = [\n          [1, 1, 0, 0x0],\n          [2, 2, 0, 0x2],\n          [3, 3, 1, 0x6],\n          [5, 5, 0, 0x1c],\n          [6, 5, 1, 0x1d],\n          [8, 6, 1, 0x3c],\n          [10, 7, 0, 0x7a],\n          [11, 7, 1, 0x7b],\n          [13, 7, 2, 0x7c],\n          [17, 7, 3, 0x7d],\n          [25, 7, 4, 0x7e],\n          [41, 8, 5, 0xfe],\n          [73, 8, 32, 0xff], // upper\n        ];\n        break;\n      case 13:\n        lines = [\n          [1, 1, 0, 0x0],\n          [2, 3, 0, 0x4],\n          [3, 4, 0, 0xc],\n          [4, 5, 0, 0x1c],\n          [5, 4, 1, 0xd],\n          [7, 3, 3, 0x5],\n          [15, 6, 1, 0x3a],\n          [17, 6, 2, 0x3b],\n          [21, 6, 3, 0x3c],\n          [29, 6, 4, 0x3d],\n          [45, 6, 5, 0x3e],\n          [77, 7, 6, 0x7e],\n          [141, 7, 32, 0x7f], // upper\n        ];\n        break;\n      case 14:\n        lines = [\n          [-2, 3, 0, 0x4],\n          [-1, 3, 0, 0x5],\n          [0, 1, 0, 0x0],\n          [1, 3, 0, 0x6],\n          [2, 3, 0, 0x7],\n        ];\n        break;\n      case 15:\n        lines = [\n          [-24, 7, 4, 0x7c],\n          [-8, 6, 2, 0x3c],\n          [-4, 5, 1, 0x1c],\n          [-2, 4, 0, 0xc],\n          [-1, 3, 0, 0x4],\n          [0, 1, 0, 0x0],\n          [1, 3, 0, 0x5],\n          [2, 4, 0, 0xd],\n          [3, 5, 1, 0x1d],\n          [5, 6, 2, 0x3d],\n          [9, 7, 4, 0x7d],\n          [-25, 7, 32, 0x7e, \"lower\"],\n          [25, 7, 32, 0x7f], // upper\n        ];\n        break;\n      default:\n        throw new Jbig2Error(`standard table B.${number} does not exist`);\n    }\n\n    for (let i = 0, ii = lines.length; i < ii; i++) {\n      lines[i] = new HuffmanLine(lines[i]);\n    }\n    table = new HuffmanTable(lines, true);\n    standardTablesCache[number] = table;\n    return table;\n  }\n\n  function Reader(data, start, end) {\n    this.data = data;\n    this.start = start;\n    this.end = end;\n    this.position = start;\n    this.shift = -1;\n    this.currentByte = 0;\n  }\n\n  Reader.prototype = {\n    readBit() {\n      if (this.shift < 0) {\n        if (this.position >= this.end) {\n          throw new Jbig2Error(\"end of data while reading bit\");\n        }\n        this.currentByte = this.data[this.position++];\n        this.shift = 7;\n      }\n      const bit = (this.currentByte >> this.shift) & 1;\n      this.shift--;\n      return bit;\n    },\n\n    readBits(numBits) {\n      let result = 0,\n        i;\n      for (i = numBits - 1; i >= 0; i--) {\n        result |= this.readBit() << i;\n      }\n      return result;\n    },\n\n    byteAlign() {\n      this.shift = -1;\n    },\n\n    next() {\n      if (this.position >= this.end) {\n        return -1;\n      }\n      return this.data[this.position++];\n    },\n  };\n\n  function getCustomHuffmanTable(index, referredTo, customTables) {\n    // Returns a Tables segment that has been earlier decoded.\n    // See 7.4.2.1.6 (symbol dictionary) or 7.4.3.1.6 (text region).\n    let currentIndex = 0;\n    for (let i = 0, ii = referredTo.length; i < ii; i++) {\n      const table = customTables[referredTo[i]];\n      if (table) {\n        if (index === currentIndex) {\n          return table;\n        }\n        currentIndex++;\n      }\n    }\n    throw new Jbig2Error(\"can't find custom Huffman table\");\n  }\n\n  function getTextRegionHuffmanTables(\n    textRegion,\n    referredTo,\n    customTables,\n    numberOfSymbols,\n    reader\n  ) {\n    // 7.4.3.1.7 Symbol ID Huffman table decoding\n\n    // Read code lengths for RUNCODEs 0...34.\n    const codes = [];\n    for (let i = 0; i <= 34; i++) {\n      const codeLength = reader.readBits(4);\n      codes.push(new HuffmanLine([i, codeLength, 0, 0]));\n    }\n    // Assign Huffman codes for RUNCODEs.\n    const runCodesTable = new HuffmanTable(codes, false);\n\n    // Read a Huffman code using the assignment above.\n    // Interpret the RUNCODE codes and the additional bits (if any).\n    codes.length = 0;\n    for (let i = 0; i < numberOfSymbols; ) {\n      const codeLength = runCodesTable.decode(reader);\n      if (codeLength >= 32) {\n        let repeatedLength, numberOfRepeats, j;\n        switch (codeLength) {\n          case 32:\n            if (i === 0) {\n              throw new Jbig2Error(\"no previous value in symbol ID table\");\n            }\n            numberOfRepeats = reader.readBits(2) + 3;\n            repeatedLength = codes[i - 1].prefixLength;\n            break;\n          case 33:\n            numberOfRepeats = reader.readBits(3) + 3;\n            repeatedLength = 0;\n            break;\n          case 34:\n            numberOfRepeats = reader.readBits(7) + 11;\n            repeatedLength = 0;\n            break;\n          default:\n            throw new Jbig2Error(\"invalid code length in symbol ID table\");\n        }\n        for (j = 0; j < numberOfRepeats; j++) {\n          codes.push(new HuffmanLine([i, repeatedLength, 0, 0]));\n          i++;\n        }\n      } else {\n        codes.push(new HuffmanLine([i, codeLength, 0, 0]));\n        i++;\n      }\n    }\n    reader.byteAlign();\n    const symbolIDTable = new HuffmanTable(codes, false);\n\n    // 7.4.3.1.6 Text region segment Huffman table selection\n\n    let customIndex = 0,\n      tableFirstS,\n      tableDeltaS,\n      tableDeltaT;\n\n    switch (textRegion.huffmanFS) {\n      case 0:\n      case 1:\n        tableFirstS = getStandardTable(textRegion.huffmanFS + 6);\n        break;\n      case 3:\n        tableFirstS = getCustomHuffmanTable(\n          customIndex,\n          referredTo,\n          customTables\n        );\n        customIndex++;\n        break;\n      default:\n        throw new Jbig2Error(\"invalid Huffman FS selector\");\n    }\n\n    switch (textRegion.huffmanDS) {\n      case 0:\n      case 1:\n      case 2:\n        tableDeltaS = getStandardTable(textRegion.huffmanDS + 8);\n        break;\n      case 3:\n        tableDeltaS = getCustomHuffmanTable(\n          customIndex,\n          referredTo,\n          customTables\n        );\n        customIndex++;\n        break;\n      default:\n        throw new Jbig2Error(\"invalid Huffman DS selector\");\n    }\n\n    switch (textRegion.huffmanDT) {\n      case 0:\n      case 1:\n      case 2:\n        tableDeltaT = getStandardTable(textRegion.huffmanDT + 11);\n        break;\n      case 3:\n        tableDeltaT = getCustomHuffmanTable(\n          customIndex,\n          referredTo,\n          customTables\n        );\n        customIndex++;\n        break;\n      default:\n        throw new Jbig2Error(\"invalid Huffman DT selector\");\n    }\n\n    if (textRegion.refinement) {\n      // Load tables RDW, RDH, RDX and RDY.\n      throw new Jbig2Error(\"refinement with Huffman is not supported\");\n    }\n\n    return {\n      symbolIDTable,\n      tableFirstS,\n      tableDeltaS,\n      tableDeltaT,\n    };\n  }\n\n  function getSymbolDictionaryHuffmanTables(\n    dictionary,\n    referredTo,\n    customTables\n  ) {\n    // 7.4.2.1.6 Symbol dictionary segment Huffman table selection\n\n    let customIndex = 0,\n      tableDeltaHeight,\n      tableDeltaWidth;\n    switch (dictionary.huffmanDHSelector) {\n      case 0:\n      case 1:\n        tableDeltaHeight = getStandardTable(dictionary.huffmanDHSelector + 4);\n        break;\n      case 3:\n        tableDeltaHeight = getCustomHuffmanTable(\n          customIndex,\n          referredTo,\n          customTables\n        );\n        customIndex++;\n        break;\n      default:\n        throw new Jbig2Error(\"invalid Huffman DH selector\");\n    }\n\n    switch (dictionary.huffmanDWSelector) {\n      case 0:\n      case 1:\n        tableDeltaWidth = getStandardTable(dictionary.huffmanDWSelector + 2);\n        break;\n      case 3:\n        tableDeltaWidth = getCustomHuffmanTable(\n          customIndex,\n          referredTo,\n          customTables\n        );\n        customIndex++;\n        break;\n      default:\n        throw new Jbig2Error(\"invalid Huffman DW selector\");\n    }\n\n    let tableBitmapSize, tableAggregateInstances;\n    if (dictionary.bitmapSizeSelector) {\n      tableBitmapSize = getCustomHuffmanTable(\n        customIndex,\n        referredTo,\n        customTables\n      );\n      customIndex++;\n    } else {\n      tableBitmapSize = getStandardTable(1);\n    }\n\n    if (dictionary.aggregationInstancesSelector) {\n      tableAggregateInstances = getCustomHuffmanTable(\n        customIndex,\n        referredTo,\n        customTables\n      );\n    } else {\n      tableAggregateInstances = getStandardTable(1);\n    }\n\n    return {\n      tableDeltaHeight,\n      tableDeltaWidth,\n      tableBitmapSize,\n      tableAggregateInstances,\n    };\n  }\n\n  function readUncompressedBitmap(reader, width, height) {\n    const bitmap = [];\n    for (let y = 0; y < height; y++) {\n      const row = new Uint8Array(width);\n      bitmap.push(row);\n      for (let x = 0; x < width; x++) {\n        row[x] = reader.readBit();\n      }\n      reader.byteAlign();\n    }\n    return bitmap;\n  }\n\n  function decodeMMRBitmap(input, width, height, endOfBlock) {\n    // MMR is the same compression algorithm as the PDF filter\n    // CCITTFaxDecode with /K -1.\n    const params = {\n      K: -1,\n      Columns: width,\n      Rows: height,\n      BlackIs1: true,\n      EndOfBlock: endOfBlock,\n    };\n    const decoder = new CCITTFaxDecoder(input, params);\n    const bitmap = [];\n    let currentByte,\n      eof = false;\n\n    for (let y = 0; y < height; y++) {\n      const row = new Uint8Array(width);\n      bitmap.push(row);\n      let shift = -1;\n      for (let x = 0; x < width; x++) {\n        if (shift < 0) {\n          currentByte = decoder.readNextChar();\n          if (currentByte === -1) {\n            // Set the rest of the bits to zero.\n            currentByte = 0;\n            eof = true;\n          }\n          shift = 7;\n        }\n        row[x] = (currentByte >> shift) & 1;\n        shift--;\n      }\n    }\n\n    if (endOfBlock && !eof) {\n      // Read until EOFB has been consumed.\n      const lookForEOFLimit = 5;\n      for (let i = 0; i < lookForEOFLimit; i++) {\n        if (decoder.readNextChar() === -1) {\n          break;\n        }\n      }\n    }\n\n    return bitmap;\n  }\n\n  // eslint-disable-next-line no-shadow\n  function Jbig2Image() {}\n\n  Jbig2Image.prototype = {\n    parseChunks(chunks) {\n      return parseJbig2Chunks(chunks);\n    },\n\n    parse(data) {\n      const { imgData, width, height } = parseJbig2(data);\n      this.width = width;\n      this.height = height;\n      return imgData;\n    },\n  };\n\n  return Jbig2Image;\n})();\n\nexport { Jbig2Image };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\n// Table C-2\nconst QeTable = [\n  { qe: 0x5601, nmps: 1, nlps: 1, switchFlag: 1 },\n  { qe: 0x3401, nmps: 2, nlps: 6, switchFlag: 0 },\n  { qe: 0x1801, nmps: 3, nlps: 9, switchFlag: 0 },\n  { qe: 0x0ac1, nmps: 4, nlps: 12, switchFlag: 0 },\n  { qe: 0x0521, nmps: 5, nlps: 29, switchFlag: 0 },\n  { qe: 0x0221, nmps: 38, nlps: 33, switchFlag: 0 },\n  { qe: 0x5601, nmps: 7, nlps: 6, switchFlag: 1 },\n  { qe: 0x5401, nmps: 8, nlps: 14, switchFlag: 0 },\n  { qe: 0x4801, nmps: 9, nlps: 14, switchFlag: 0 },\n  { qe: 0x3801, nmps: 10, nlps: 14, switchFlag: 0 },\n  { qe: 0x3001, nmps: 11, nlps: 17, switchFlag: 0 },\n  { qe: 0x2401, nmps: 12, nlps: 18, switchFlag: 0 },\n  { qe: 0x1c01, nmps: 13, nlps: 20, switchFlag: 0 },\n  { qe: 0x1601, nmps: 29, nlps: 21, switchFlag: 0 },\n  { qe: 0x5601, nmps: 15, nlps: 14, switchFlag: 1 },\n  { qe: 0x5401, nmps: 16, nlps: 14, switchFlag: 0 },\n  { qe: 0x5101, nmps: 17, nlps: 15, switchFlag: 0 },\n  { qe: 0x4801, nmps: 18, nlps: 16, switchFlag: 0 },\n  { qe: 0x3801, nmps: 19, nlps: 17, switchFlag: 0 },\n  { qe: 0x3401, nmps: 20, nlps: 18, switchFlag: 0 },\n  { qe: 0x3001, nmps: 21, nlps: 19, switchFlag: 0 },\n  { qe: 0x2801, nmps: 22, nlps: 19, switchFlag: 0 },\n  { qe: 0x2401, nmps: 23, nlps: 20, switchFlag: 0 },\n  { qe: 0x2201, nmps: 24, nlps: 21, switchFlag: 0 },\n  { qe: 0x1c01, nmps: 25, nlps: 22, switchFlag: 0 },\n  { qe: 0x1801, nmps: 26, nlps: 23, switchFlag: 0 },\n  { qe: 0x1601, nmps: 27, nlps: 24, switchFlag: 0 },\n  { qe: 0x1401, nmps: 28, nlps: 25, switchFlag: 0 },\n  { qe: 0x1201, nmps: 29, nlps: 26, switchFlag: 0 },\n  { qe: 0x1101, nmps: 30, nlps: 27, switchFlag: 0 },\n  { qe: 0x0ac1, nmps: 31, nlps: 28, switchFlag: 0 },\n  { qe: 0x09c1, nmps: 32, nlps: 29, switchFlag: 0 },\n  { qe: 0x08a1, nmps: 33, nlps: 30, switchFlag: 0 },\n  { qe: 0x0521, nmps: 34, nlps: 31, switchFlag: 0 },\n  { qe: 0x0441, nmps: 35, nlps: 32, switchFlag: 0 },\n  { qe: 0x02a1, nmps: 36, nlps: 33, switchFlag: 0 },\n  { qe: 0x0221, nmps: 37, nlps: 34, switchFlag: 0 },\n  { qe: 0x0141, nmps: 38, nlps: 35, switchFlag: 0 },\n  { qe: 0x0111, nmps: 39, nlps: 36, switchFlag: 0 },\n  { qe: 0x0085, nmps: 40, nlps: 37, switchFlag: 0 },\n  { qe: 0x0049, nmps: 41, nlps: 38, switchFlag: 0 },\n  { qe: 0x0025, nmps: 42, nlps: 39, switchFlag: 0 },\n  { qe: 0x0015, nmps: 43, nlps: 40, switchFlag: 0 },\n  { qe: 0x0009, nmps: 44, nlps: 41, switchFlag: 0 },\n  { qe: 0x0005, nmps: 45, nlps: 42, switchFlag: 0 },\n  { qe: 0x0001, nmps: 45, nlps: 43, switchFlag: 0 },\n  { qe: 0x5601, nmps: 46, nlps: 46, switchFlag: 0 },\n];\n\n/**\n * This class implements the QM Coder decoding as defined in\n *   JPEG 2000 Part I Final Committee Draft Version 1.0\n *   Annex C.3 Arithmetic decoding procedure\n * available at http://www.jpeg.org/public/fcd15444-1.pdf\n *\n * The arithmetic decoder is used in conjunction with context models to decode\n * JPEG2000 and JBIG2 streams.\n */\nclass ArithmeticDecoder {\n  // C.3.5 Initialisation of the decoder (INITDEC)\n  constructor(data, start, end) {\n    this.data = data;\n    this.bp = start;\n    this.dataEnd = end;\n\n    this.chigh = data[start];\n    this.clow = 0;\n\n    this.byteIn();\n\n    this.chigh = ((this.chigh << 7) & 0xffff) | ((this.clow >> 9) & 0x7f);\n    this.clow = (this.clow << 7) & 0xffff;\n    this.ct -= 7;\n    this.a = 0x8000;\n  }\n\n  // C.3.4 Compressed data input (BYTEIN)\n  byteIn() {\n    const data = this.data;\n    let bp = this.bp;\n\n    if (data[bp] === 0xff) {\n      if (data[bp + 1] > 0x8f) {\n        this.clow += 0xff00;\n        this.ct = 8;\n      } else {\n        bp++;\n        this.clow += data[bp] << 9;\n        this.ct = 7;\n        this.bp = bp;\n      }\n    } else {\n      bp++;\n      this.clow += bp < this.dataEnd ? data[bp] << 8 : 0xff00;\n      this.ct = 8;\n      this.bp = bp;\n    }\n    if (this.clow > 0xffff) {\n      this.chigh += this.clow >> 16;\n      this.clow &= 0xffff;\n    }\n  }\n\n  // C.3.2 Decoding a decision (DECODE)\n  readBit(contexts, pos) {\n    // Contexts are packed into 1 byte:\n    // highest 7 bits carry cx.index, lowest bit carries cx.mps\n    let cx_index = contexts[pos] >> 1,\n      cx_mps = contexts[pos] & 1;\n    const qeTableIcx = QeTable[cx_index];\n    const qeIcx = qeTableIcx.qe;\n    let d;\n    let a = this.a - qeIcx;\n\n    if (this.chigh < qeIcx) {\n      // exchangeLps\n      if (a < qeIcx) {\n        a = qeIcx;\n        d = cx_mps;\n        cx_index = qeTableIcx.nmps;\n      } else {\n        a = qeIcx;\n        d = 1 ^ cx_mps;\n        if (qeTableIcx.switchFlag === 1) {\n          cx_mps = d;\n        }\n        cx_index = qeTableIcx.nlps;\n      }\n    } else {\n      this.chigh -= qeIcx;\n      if ((a & 0x8000) !== 0) {\n        this.a = a;\n        return cx_mps;\n      }\n      // exchangeMps\n      if (a < qeIcx) {\n        d = 1 ^ cx_mps;\n        if (qeTableIcx.switchFlag === 1) {\n          cx_mps = d;\n        }\n        cx_index = qeTableIcx.nlps;\n      } else {\n        d = cx_mps;\n        cx_index = qeTableIcx.nmps;\n      }\n    }\n    // C.3.3 renormD;\n    do {\n      if (this.ct === 0) {\n        this.byteIn();\n      }\n\n      a <<= 1;\n      this.chigh = ((this.chigh << 1) & 0xffff) | ((this.clow >> 15) & 1);\n      this.clow = (this.clow << 1) & 0xffff;\n      this.ct--;\n    } while ((a & 0x8000) === 0);\n    this.a = a;\n\n    contexts[pos] = (cx_index << 1) | cx_mps;\n    return d;\n  }\n}\n\nexport { ArithmeticDecoder };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./stream.js\";\nimport { isDict } from \"./primitives.js\";\nimport { JpegImage } from \"./jpg.js\";\nimport { shadow } from \"../shared/util.js\";\n\n/**\n * For JPEG's we use a library to decode these images and the stream behaves\n * like all the other DecodeStreams.\n */\nconst JpegStream = (function JpegStreamClosure() {\n  // eslint-disable-next-line no-shadow\n  function JpegStream(stream, maybeLength, dict, params) {\n    // Some images may contain 'junk' before the SOI (start-of-image) marker.\n    // Note: this seems to mainly affect inline images.\n    let ch;\n    while ((ch = stream.getByte()) !== -1) {\n      // Find the first byte of the SOI marker (0xFFD8).\n      if (ch === 0xff) {\n        stream.skip(-1); // Reset the stream position to the SOI.\n        break;\n      }\n    }\n    this.stream = stream;\n    this.maybeLength = maybeLength;\n    this.dict = dict;\n    this.params = params;\n\n    DecodeStream.call(this, maybeLength);\n  }\n\n  JpegStream.prototype = Object.create(DecodeStream.prototype);\n\n  Object.defineProperty(JpegStream.prototype, \"bytes\", {\n    get: function JpegStream_bytes() {\n      // If `this.maybeLength` is null, we'll get the entire stream.\n      return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n    },\n    configurable: true,\n  });\n\n  JpegStream.prototype.ensureBuffer = function (requested) {\n    // No-op, since `this.readBlock` will always parse the entire image and\n    // directly insert all of its data into `this.buffer`.\n  };\n\n  JpegStream.prototype.readBlock = function () {\n    if (this.eof) {\n      return;\n    }\n    const jpegOptions = {\n      decodeTransform: undefined,\n      colorTransform: undefined,\n    };\n\n    // Checking if values need to be transformed before conversion.\n    const decodeArr = this.dict.getArray(\"Decode\", \"D\");\n    if (this.forceRGB && Array.isArray(decodeArr)) {\n      const bitsPerComponent = this.dict.get(\"BitsPerComponent\") || 8;\n      const decodeArrLength = decodeArr.length;\n      const transform = new Int32Array(decodeArrLength);\n      let transformNeeded = false;\n      const maxValue = (1 << bitsPerComponent) - 1;\n      for (let i = 0; i < decodeArrLength; i += 2) {\n        transform[i] = ((decodeArr[i + 1] - decodeArr[i]) * 256) | 0;\n        transform[i + 1] = (decodeArr[i] * maxValue) | 0;\n        if (transform[i] !== 256 || transform[i + 1] !== 0) {\n          transformNeeded = true;\n        }\n      }\n      if (transformNeeded) {\n        jpegOptions.decodeTransform = transform;\n      }\n    }\n    // Fetching the 'ColorTransform' entry, if it exists.\n    if (isDict(this.params)) {\n      const colorTransform = this.params.get(\"ColorTransform\");\n      if (Number.isInteger(colorTransform)) {\n        jpegOptions.colorTransform = colorTransform;\n      }\n    }\n    const jpegImage = new JpegImage(jpegOptions);\n\n    jpegImage.parse(this.bytes);\n    const data = jpegImage.getData({\n      width: this.drawWidth,\n      height: this.drawHeight,\n      forceRGB: this.forceRGB,\n      isSourcePDF: true,\n    });\n    this.buffer = data;\n    this.bufferLength = data.length;\n    this.eof = true;\n  };\n\n  return JpegStream;\n})();\n\nexport { JpegStream };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, BaseException, warn } from \"../shared/util.js\";\nimport { readUint16 } from \"./core_utils.js\";\n\nclass JpegError extends BaseException {\n  constructor(msg) {\n    super(`JPEG error: ${msg}`);\n  }\n}\n\nclass DNLMarkerError extends BaseException {\n  constructor(message, scanLines) {\n    super(message);\n    this.scanLines = scanLines;\n  }\n}\n\nclass EOIMarkerError extends BaseException {}\n\n/**\n * This code was forked from https://github.com/notmasteryet/jpgjs.\n * The original version was created by GitHub user notmasteryet.\n *\n * - The JPEG specification can be found in the ITU CCITT Recommendation T.81\n *   (www.w3.org/Graphics/JPEG/itu-t81.pdf)\n * - The JFIF specification can be found in the JPEG File Interchange Format\n *   (www.w3.org/Graphics/JPEG/jfif3.pdf)\n * - The Adobe Application-Specific JPEG markers in the\n *   Supporting the DCT Filters in PostScript Level 2, Technical Note #5116\n *   (partners.adobe.com/public/developer/en/ps/sdk/5116.DCT_Filter.pdf)\n */\n\nvar JpegImage = (function JpegImageClosure() {\n  // prettier-ignore\n  var dctZigZag = new Uint8Array([\n     0,\n     1,  8,\n    16,  9,  2,\n     3, 10, 17, 24,\n    32, 25, 18, 11, 4,\n     5, 12, 19, 26, 33, 40,\n    48, 41, 34, 27, 20, 13,  6,\n     7, 14, 21, 28, 35, 42, 49, 56,\n    57, 50, 43, 36, 29, 22, 15,\n    23, 30, 37, 44, 51, 58,\n    59, 52, 45, 38, 31,\n    39, 46, 53, 60,\n    61, 54, 47,\n    55, 62,\n    63\n  ]);\n\n  var dctCos1 = 4017; // cos(pi/16)\n  var dctSin1 = 799; // sin(pi/16)\n  var dctCos3 = 3406; // cos(3*pi/16)\n  var dctSin3 = 2276; // sin(3*pi/16)\n  var dctCos6 = 1567; // cos(6*pi/16)\n  var dctSin6 = 3784; // sin(6*pi/16)\n  var dctSqrt2 = 5793; // sqrt(2)\n  var dctSqrt1d2 = 2896; // sqrt(2) / 2\n\n  // eslint-disable-next-line no-shadow\n  function JpegImage({ decodeTransform = null, colorTransform = -1 } = {}) {\n    this._decodeTransform = decodeTransform;\n    this._colorTransform = colorTransform;\n  }\n\n  function buildHuffmanTable(codeLengths, values) {\n    var k = 0,\n      code = [],\n      i,\n      j,\n      length = 16;\n    while (length > 0 && !codeLengths[length - 1]) {\n      length--;\n    }\n    code.push({ children: [], index: 0 });\n    var p = code[0],\n      q;\n    for (i = 0; i < length; i++) {\n      for (j = 0; j < codeLengths[i]; j++) {\n        p = code.pop();\n        p.children[p.index] = values[k];\n        while (p.index > 0) {\n          p = code.pop();\n        }\n        p.index++;\n        code.push(p);\n        while (code.length <= i) {\n          code.push((q = { children: [], index: 0 }));\n          p.children[p.index] = q.children;\n          p = q;\n        }\n        k++;\n      }\n      if (i + 1 < length) {\n        // p here points to last code\n        code.push((q = { children: [], index: 0 }));\n        p.children[p.index] = q.children;\n        p = q;\n      }\n    }\n    return code[0].children;\n  }\n\n  function getBlockBufferOffset(component, row, col) {\n    return 64 * ((component.blocksPerLine + 1) * row + col);\n  }\n\n  function decodeScan(\n    data,\n    offset,\n    frame,\n    components,\n    resetInterval,\n    spectralStart,\n    spectralEnd,\n    successivePrev,\n    successive,\n    parseDNLMarker = false\n  ) {\n    var mcusPerLine = frame.mcusPerLine;\n    var progressive = frame.progressive;\n\n    const startOffset = offset;\n    let bitsData = 0,\n      bitsCount = 0;\n\n    function readBit() {\n      if (bitsCount > 0) {\n        bitsCount--;\n        return (bitsData >> bitsCount) & 1;\n      }\n      bitsData = data[offset++];\n      if (bitsData === 0xff) {\n        var nextByte = data[offset++];\n        if (nextByte) {\n          if (nextByte === /* DNL = */ 0xdc && parseDNLMarker) {\n            offset += 2; // Skip marker length.\n\n            const scanLines = readUint16(data, offset);\n            offset += 2;\n            if (scanLines > 0 && scanLines !== frame.scanLines) {\n              throw new DNLMarkerError(\n                \"Found DNL marker (0xFFDC) while parsing scan data\",\n                scanLines\n              );\n            }\n          } else if (nextByte === /* EOI = */ 0xd9) {\n            if (parseDNLMarker) {\n              // NOTE: only 8-bit JPEG images are supported in this decoder.\n              const maybeScanLines = blockRow * (frame.precision === 8 ? 8 : 0);\n              // Heuristic to attempt to handle corrupt JPEG images with too\n              // large `scanLines` parameter, by falling back to the currently\n              // parsed number of scanLines when it's at least (approximately)\n              // one order of magnitude smaller than expected (fixes\n              // issue10880.pdf and issue10989.pdf).\n              if (\n                maybeScanLines > 0 &&\n                Math.round(frame.scanLines / maybeScanLines) >= 10\n              ) {\n                throw new DNLMarkerError(\n                  \"Found EOI marker (0xFFD9) while parsing scan data, \" +\n                    \"possibly caused by incorrect `scanLines` parameter\",\n                  maybeScanLines\n                );\n              }\n            }\n            throw new EOIMarkerError(\n              \"Found EOI marker (0xFFD9) while parsing scan data\"\n            );\n          }\n          throw new JpegError(\n            `unexpected marker ${((bitsData << 8) | nextByte).toString(16)}`\n          );\n        }\n        // unstuff 0\n      }\n      bitsCount = 7;\n      return bitsData >>> 7;\n    }\n\n    function decodeHuffman(tree) {\n      var node = tree;\n      while (true) {\n        node = node[readBit()];\n        switch (typeof node) {\n          case \"number\":\n            return node;\n          case \"object\":\n            continue;\n        }\n        throw new JpegError(\"invalid huffman sequence\");\n      }\n    }\n\n    function receive(length) {\n      var n = 0;\n      while (length > 0) {\n        n = (n << 1) | readBit();\n        length--;\n      }\n      return n;\n    }\n\n    function receiveAndExtend(length) {\n      if (length === 1) {\n        return readBit() === 1 ? 1 : -1;\n      }\n      var n = receive(length);\n      if (n >= 1 << (length - 1)) {\n        return n;\n      }\n      return n + (-1 << length) + 1;\n    }\n\n    function decodeBaseline(component, blockOffset) {\n      var t = decodeHuffman(component.huffmanTableDC);\n      var diff = t === 0 ? 0 : receiveAndExtend(t);\n      component.blockData[blockOffset] = component.pred += diff;\n      var k = 1;\n      while (k < 64) {\n        var rs = decodeHuffman(component.huffmanTableAC);\n        var s = rs & 15,\n          r = rs >> 4;\n        if (s === 0) {\n          if (r < 15) {\n            break;\n          }\n          k += 16;\n          continue;\n        }\n        k += r;\n        var z = dctZigZag[k];\n        component.blockData[blockOffset + z] = receiveAndExtend(s);\n        k++;\n      }\n    }\n\n    function decodeDCFirst(component, blockOffset) {\n      var t = decodeHuffman(component.huffmanTableDC);\n      var diff = t === 0 ? 0 : receiveAndExtend(t) << successive;\n      component.blockData[blockOffset] = component.pred += diff;\n    }\n\n    function decodeDCSuccessive(component, blockOffset) {\n      component.blockData[blockOffset] |= readBit() << successive;\n    }\n\n    var eobrun = 0;\n    function decodeACFirst(component, blockOffset) {\n      if (eobrun > 0) {\n        eobrun--;\n        return;\n      }\n      var k = spectralStart,\n        e = spectralEnd;\n      while (k <= e) {\n        var rs = decodeHuffman(component.huffmanTableAC);\n        var s = rs & 15,\n          r = rs >> 4;\n        if (s === 0) {\n          if (r < 15) {\n            eobrun = receive(r) + (1 << r) - 1;\n            break;\n          }\n          k += 16;\n          continue;\n        }\n        k += r;\n        var z = dctZigZag[k];\n        component.blockData[blockOffset + z] =\n          receiveAndExtend(s) * (1 << successive);\n        k++;\n      }\n    }\n\n    var successiveACState = 0,\n      successiveACNextValue;\n    function decodeACSuccessive(component, blockOffset) {\n      var k = spectralStart;\n      var e = spectralEnd;\n      var r = 0;\n      var s;\n      var rs;\n      while (k <= e) {\n        const offsetZ = blockOffset + dctZigZag[k];\n        const sign = component.blockData[offsetZ] < 0 ? -1 : 1;\n        switch (successiveACState) {\n          case 0: // initial state\n            rs = decodeHuffman(component.huffmanTableAC);\n            s = rs & 15;\n            r = rs >> 4;\n            if (s === 0) {\n              if (r < 15) {\n                eobrun = receive(r) + (1 << r);\n                successiveACState = 4;\n              } else {\n                r = 16;\n                successiveACState = 1;\n              }\n            } else {\n              if (s !== 1) {\n                throw new JpegError(\"invalid ACn encoding\");\n              }\n              successiveACNextValue = receiveAndExtend(s);\n              successiveACState = r ? 2 : 3;\n            }\n            continue;\n          case 1: // skipping r zero items\n          case 2:\n            if (component.blockData[offsetZ]) {\n              component.blockData[offsetZ] += sign * (readBit() << successive);\n            } else {\n              r--;\n              if (r === 0) {\n                successiveACState = successiveACState === 2 ? 3 : 0;\n              }\n            }\n            break;\n          case 3: // set value for a zero item\n            if (component.blockData[offsetZ]) {\n              component.blockData[offsetZ] += sign * (readBit() << successive);\n            } else {\n              component.blockData[offsetZ] =\n                successiveACNextValue << successive;\n              successiveACState = 0;\n            }\n            break;\n          case 4: // eob\n            if (component.blockData[offsetZ]) {\n              component.blockData[offsetZ] += sign * (readBit() << successive);\n            }\n            break;\n        }\n        k++;\n      }\n      if (successiveACState === 4) {\n        eobrun--;\n        if (eobrun === 0) {\n          successiveACState = 0;\n        }\n      }\n    }\n\n    let blockRow = 0;\n    function decodeMcu(component, decode, mcu, row, col) {\n      var mcuRow = (mcu / mcusPerLine) | 0;\n      var mcuCol = mcu % mcusPerLine;\n      blockRow = mcuRow * component.v + row;\n      var blockCol = mcuCol * component.h + col;\n      const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n      decode(component, blockOffset);\n    }\n\n    function decodeBlock(component, decode, mcu) {\n      blockRow = (mcu / component.blocksPerLine) | 0;\n      var blockCol = mcu % component.blocksPerLine;\n      const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n      decode(component, blockOffset);\n    }\n\n    var componentsLength = components.length;\n    var component, i, j, k, n;\n    var decodeFn;\n    if (progressive) {\n      if (spectralStart === 0) {\n        decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive;\n      } else {\n        decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive;\n      }\n    } else {\n      decodeFn = decodeBaseline;\n    }\n\n    var mcu = 0,\n      fileMarker;\n    var mcuExpected;\n    if (componentsLength === 1) {\n      mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn;\n    } else {\n      mcuExpected = mcusPerLine * frame.mcusPerColumn;\n    }\n\n    var h, v;\n    while (mcu <= mcuExpected) {\n      // reset interval stuff\n      var mcuToRead = resetInterval\n        ? Math.min(mcuExpected - mcu, resetInterval)\n        : mcuExpected;\n\n      // The `mcuToRead === 0` case should only occur when all of the expected\n      // MCU data has been already parsed, i.e. when `mcu === mcuExpected`, but\n      // some corrupt JPEG images contain more data than intended and we thus\n      // want to skip over any extra RSTx markers below (fixes issue11794.pdf).\n      if (mcuToRead > 0) {\n        for (i = 0; i < componentsLength; i++) {\n          components[i].pred = 0;\n        }\n        eobrun = 0;\n\n        if (componentsLength === 1) {\n          component = components[0];\n          for (n = 0; n < mcuToRead; n++) {\n            decodeBlock(component, decodeFn, mcu);\n            mcu++;\n          }\n        } else {\n          for (n = 0; n < mcuToRead; n++) {\n            for (i = 0; i < componentsLength; i++) {\n              component = components[i];\n              h = component.h;\n              v = component.v;\n              for (j = 0; j < v; j++) {\n                for (k = 0; k < h; k++) {\n                  decodeMcu(component, decodeFn, mcu, j, k);\n                }\n              }\n            }\n            mcu++;\n          }\n        }\n      }\n\n      // find marker\n      bitsCount = 0;\n      fileMarker = findNextFileMarker(data, offset);\n      if (!fileMarker) {\n        break; // Reached the end of the image data without finding any marker.\n      }\n      if (fileMarker.invalid) {\n        // Some bad images seem to pad Scan blocks with e.g. zero bytes, skip\n        // past those to attempt to find a valid marker (fixes issue4090.pdf).\n        const partialMsg = mcuToRead > 0 ? \"unexpected\" : \"excessive\";\n        warn(\n          `decodeScan - ${partialMsg} MCU data, current marker is: ${fileMarker.invalid}`\n        );\n        offset = fileMarker.offset;\n      }\n      if (fileMarker.marker >= 0xffd0 && fileMarker.marker <= 0xffd7) {\n        // RSTx\n        offset += 2;\n      } else {\n        break;\n      }\n    }\n\n    return offset - startOffset;\n  }\n\n  // A port of poppler's IDCT method which in turn is taken from:\n  //   Christoph Loeffler, Adriaan Ligtenberg, George S. Moschytz,\n  //   'Practical Fast 1-D DCT Algorithms with 11 Multiplications',\n  //   IEEE Intl. Conf. on Acoustics, Speech & Signal Processing, 1989,\n  //   988-991.\n  function quantizeAndInverse(component, blockBufferOffset, p) {\n    var qt = component.quantizationTable,\n      blockData = component.blockData;\n    var v0, v1, v2, v3, v4, v5, v6, v7;\n    var p0, p1, p2, p3, p4, p5, p6, p7;\n    var t;\n\n    if (!qt) {\n      throw new JpegError(\"missing required Quantization Table.\");\n    }\n\n    // inverse DCT on rows\n    for (var row = 0; row < 64; row += 8) {\n      // gather block data\n      p0 = blockData[blockBufferOffset + row];\n      p1 = blockData[blockBufferOffset + row + 1];\n      p2 = blockData[blockBufferOffset + row + 2];\n      p3 = blockData[blockBufferOffset + row + 3];\n      p4 = blockData[blockBufferOffset + row + 4];\n      p5 = blockData[blockBufferOffset + row + 5];\n      p6 = blockData[blockBufferOffset + row + 6];\n      p7 = blockData[blockBufferOffset + row + 7];\n\n      // dequant p0\n      p0 *= qt[row];\n\n      // check for all-zero AC coefficients\n      if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n        t = (dctSqrt2 * p0 + 512) >> 10;\n        p[row] = t;\n        p[row + 1] = t;\n        p[row + 2] = t;\n        p[row + 3] = t;\n        p[row + 4] = t;\n        p[row + 5] = t;\n        p[row + 6] = t;\n        p[row + 7] = t;\n        continue;\n      }\n      // dequant p1 ... p7\n      p1 *= qt[row + 1];\n      p2 *= qt[row + 2];\n      p3 *= qt[row + 3];\n      p4 *= qt[row + 4];\n      p5 *= qt[row + 5];\n      p6 *= qt[row + 6];\n      p7 *= qt[row + 7];\n\n      // stage 4\n      v0 = (dctSqrt2 * p0 + 128) >> 8;\n      v1 = (dctSqrt2 * p4 + 128) >> 8;\n      v2 = p2;\n      v3 = p6;\n      v4 = (dctSqrt1d2 * (p1 - p7) + 128) >> 8;\n      v7 = (dctSqrt1d2 * (p1 + p7) + 128) >> 8;\n      v5 = p3 << 4;\n      v6 = p5 << 4;\n\n      // stage 3\n      v0 = (v0 + v1 + 1) >> 1;\n      v1 = v0 - v1;\n      t = (v2 * dctSin6 + v3 * dctCos6 + 128) >> 8;\n      v2 = (v2 * dctCos6 - v3 * dctSin6 + 128) >> 8;\n      v3 = t;\n      v4 = (v4 + v6 + 1) >> 1;\n      v6 = v4 - v6;\n      v7 = (v7 + v5 + 1) >> 1;\n      v5 = v7 - v5;\n\n      // stage 2\n      v0 = (v0 + v3 + 1) >> 1;\n      v3 = v0 - v3;\n      v1 = (v1 + v2 + 1) >> 1;\n      v2 = v1 - v2;\n      t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n      v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n      v7 = t;\n      t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n      v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n      v6 = t;\n\n      // stage 1\n      p[row] = v0 + v7;\n      p[row + 7] = v0 - v7;\n      p[row + 1] = v1 + v6;\n      p[row + 6] = v1 - v6;\n      p[row + 2] = v2 + v5;\n      p[row + 5] = v2 - v5;\n      p[row + 3] = v3 + v4;\n      p[row + 4] = v3 - v4;\n    }\n\n    // inverse DCT on columns\n    for (var col = 0; col < 8; ++col) {\n      p0 = p[col];\n      p1 = p[col + 8];\n      p2 = p[col + 16];\n      p3 = p[col + 24];\n      p4 = p[col + 32];\n      p5 = p[col + 40];\n      p6 = p[col + 48];\n      p7 = p[col + 56];\n\n      // check for all-zero AC coefficients\n      if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n        t = (dctSqrt2 * p0 + 8192) >> 14;\n        // Convert to 8-bit.\n        if (t < -2040) {\n          t = 0;\n        } else if (t >= 2024) {\n          t = 255;\n        } else {\n          t = (t + 2056) >> 4;\n        }\n        blockData[blockBufferOffset + col] = t;\n        blockData[blockBufferOffset + col + 8] = t;\n        blockData[blockBufferOffset + col + 16] = t;\n        blockData[blockBufferOffset + col + 24] = t;\n        blockData[blockBufferOffset + col + 32] = t;\n        blockData[blockBufferOffset + col + 40] = t;\n        blockData[blockBufferOffset + col + 48] = t;\n        blockData[blockBufferOffset + col + 56] = t;\n        continue;\n      }\n\n      // stage 4\n      v0 = (dctSqrt2 * p0 + 2048) >> 12;\n      v1 = (dctSqrt2 * p4 + 2048) >> 12;\n      v2 = p2;\n      v3 = p6;\n      v4 = (dctSqrt1d2 * (p1 - p7) + 2048) >> 12;\n      v7 = (dctSqrt1d2 * (p1 + p7) + 2048) >> 12;\n      v5 = p3;\n      v6 = p5;\n\n      // stage 3\n      // Shift v0 by 128.5 << 5 here, so we don't need to shift p0...p7 when\n      // converting to UInt8 range later.\n      v0 = ((v0 + v1 + 1) >> 1) + 4112;\n      v1 = v0 - v1;\n      t = (v2 * dctSin6 + v3 * dctCos6 + 2048) >> 12;\n      v2 = (v2 * dctCos6 - v3 * dctSin6 + 2048) >> 12;\n      v3 = t;\n      v4 = (v4 + v6 + 1) >> 1;\n      v6 = v4 - v6;\n      v7 = (v7 + v5 + 1) >> 1;\n      v5 = v7 - v5;\n\n      // stage 2\n      v0 = (v0 + v3 + 1) >> 1;\n      v3 = v0 - v3;\n      v1 = (v1 + v2 + 1) >> 1;\n      v2 = v1 - v2;\n      t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n      v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n      v7 = t;\n      t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n      v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n      v6 = t;\n\n      // stage 1\n      p0 = v0 + v7;\n      p7 = v0 - v7;\n      p1 = v1 + v6;\n      p6 = v1 - v6;\n      p2 = v2 + v5;\n      p5 = v2 - v5;\n      p3 = v3 + v4;\n      p4 = v3 - v4;\n\n      // Convert to 8-bit integers.\n      if (p0 < 16) {\n        p0 = 0;\n      } else if (p0 >= 4080) {\n        p0 = 255;\n      } else {\n        p0 >>= 4;\n      }\n      if (p1 < 16) {\n        p1 = 0;\n      } else if (p1 >= 4080) {\n        p1 = 255;\n      } else {\n        p1 >>= 4;\n      }\n      if (p2 < 16) {\n        p2 = 0;\n      } else if (p2 >= 4080) {\n        p2 = 255;\n      } else {\n        p2 >>= 4;\n      }\n      if (p3 < 16) {\n        p3 = 0;\n      } else if (p3 >= 4080) {\n        p3 = 255;\n      } else {\n        p3 >>= 4;\n      }\n      if (p4 < 16) {\n        p4 = 0;\n      } else if (p4 >= 4080) {\n        p4 = 255;\n      } else {\n        p4 >>= 4;\n      }\n      if (p5 < 16) {\n        p5 = 0;\n      } else if (p5 >= 4080) {\n        p5 = 255;\n      } else {\n        p5 >>= 4;\n      }\n      if (p6 < 16) {\n        p6 = 0;\n      } else if (p6 >= 4080) {\n        p6 = 255;\n      } else {\n        p6 >>= 4;\n      }\n      if (p7 < 16) {\n        p7 = 0;\n      } else if (p7 >= 4080) {\n        p7 = 255;\n      } else {\n        p7 >>= 4;\n      }\n\n      // store block data\n      blockData[blockBufferOffset + col] = p0;\n      blockData[blockBufferOffset + col + 8] = p1;\n      blockData[blockBufferOffset + col + 16] = p2;\n      blockData[blockBufferOffset + col + 24] = p3;\n      blockData[blockBufferOffset + col + 32] = p4;\n      blockData[blockBufferOffset + col + 40] = p5;\n      blockData[blockBufferOffset + col + 48] = p6;\n      blockData[blockBufferOffset + col + 56] = p7;\n    }\n  }\n\n  function buildComponentData(frame, component) {\n    var blocksPerLine = component.blocksPerLine;\n    var blocksPerColumn = component.blocksPerColumn;\n    var computationBuffer = new Int16Array(64);\n\n    for (var blockRow = 0; blockRow < blocksPerColumn; blockRow++) {\n      for (var blockCol = 0; blockCol < blocksPerLine; blockCol++) {\n        var offset = getBlockBufferOffset(component, blockRow, blockCol);\n        quantizeAndInverse(component, offset, computationBuffer);\n      }\n    }\n    return component.blockData;\n  }\n\n  function findNextFileMarker(data, currentPos, startPos = currentPos) {\n    const maxPos = data.length - 1;\n    var newPos = startPos < currentPos ? startPos : currentPos;\n\n    if (currentPos >= maxPos) {\n      return null; // Don't attempt to read non-existent data and just return.\n    }\n    var currentMarker = readUint16(data, currentPos);\n    if (currentMarker >= 0xffc0 && currentMarker <= 0xfffe) {\n      return {\n        invalid: null,\n        marker: currentMarker,\n        offset: currentPos,\n      };\n    }\n    var newMarker = readUint16(data, newPos);\n    while (!(newMarker >= 0xffc0 && newMarker <= 0xfffe)) {\n      if (++newPos >= maxPos) {\n        return null; // Don't attempt to read non-existent data and just return.\n      }\n      newMarker = readUint16(data, newPos);\n    }\n    return {\n      invalid: currentMarker.toString(16),\n      marker: newMarker,\n      offset: newPos,\n    };\n  }\n\n  JpegImage.prototype = {\n    parse(data, { dnlScanLines = null } = {}) {\n      function readDataBlock() {\n        const length = readUint16(data, offset);\n        offset += 2;\n        let endOffset = offset + length - 2;\n\n        var fileMarker = findNextFileMarker(data, endOffset, offset);\n        if (fileMarker && fileMarker.invalid) {\n          warn(\n            \"readDataBlock - incorrect length, current marker is: \" +\n              fileMarker.invalid\n          );\n          endOffset = fileMarker.offset;\n        }\n\n        var array = data.subarray(offset, endOffset);\n        offset += array.length;\n        return array;\n      }\n\n      function prepareComponents(frame) {\n        var mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH);\n        var mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV);\n        for (var i = 0; i < frame.components.length; i++) {\n          component = frame.components[i];\n          var blocksPerLine = Math.ceil(\n            (Math.ceil(frame.samplesPerLine / 8) * component.h) / frame.maxH\n          );\n          var blocksPerColumn = Math.ceil(\n            (Math.ceil(frame.scanLines / 8) * component.v) / frame.maxV\n          );\n          var blocksPerLineForMcu = mcusPerLine * component.h;\n          var blocksPerColumnForMcu = mcusPerColumn * component.v;\n\n          var blocksBufferSize =\n            64 * blocksPerColumnForMcu * (blocksPerLineForMcu + 1);\n          component.blockData = new Int16Array(blocksBufferSize);\n          component.blocksPerLine = blocksPerLine;\n          component.blocksPerColumn = blocksPerColumn;\n        }\n        frame.mcusPerLine = mcusPerLine;\n        frame.mcusPerColumn = mcusPerColumn;\n      }\n\n      var offset = 0;\n      var jfif = null;\n      var adobe = null;\n      var frame, resetInterval;\n      let numSOSMarkers = 0;\n      var quantizationTables = [];\n      var huffmanTablesAC = [],\n        huffmanTablesDC = [];\n\n      let fileMarker = readUint16(data, offset);\n      offset += 2;\n      if (fileMarker !== /* SOI (Start of Image) = */ 0xffd8) {\n        throw new JpegError(\"SOI not found\");\n      }\n      fileMarker = readUint16(data, offset);\n      offset += 2;\n\n      markerLoop: while (fileMarker !== /* EOI (End of Image) = */ 0xffd9) {\n        var i, j, l;\n        switch (fileMarker) {\n          case 0xffe0: // APP0 (Application Specific)\n          case 0xffe1: // APP1\n          case 0xffe2: // APP2\n          case 0xffe3: // APP3\n          case 0xffe4: // APP4\n          case 0xffe5: // APP5\n          case 0xffe6: // APP6\n          case 0xffe7: // APP7\n          case 0xffe8: // APP8\n          case 0xffe9: // APP9\n          case 0xffea: // APP10\n          case 0xffeb: // APP11\n          case 0xffec: // APP12\n          case 0xffed: // APP13\n          case 0xffee: // APP14\n          case 0xffef: // APP15\n          case 0xfffe: // COM (Comment)\n            var appData = readDataBlock();\n\n            if (fileMarker === 0xffe0) {\n              // 'JFIF\\x00'\n              if (\n                appData[0] === 0x4a &&\n                appData[1] === 0x46 &&\n                appData[2] === 0x49 &&\n                appData[3] === 0x46 &&\n                appData[4] === 0\n              ) {\n                jfif = {\n                  version: { major: appData[5], minor: appData[6] },\n                  densityUnits: appData[7],\n                  xDensity: (appData[8] << 8) | appData[9],\n                  yDensity: (appData[10] << 8) | appData[11],\n                  thumbWidth: appData[12],\n                  thumbHeight: appData[13],\n                  thumbData: appData.subarray(\n                    14,\n                    14 + 3 * appData[12] * appData[13]\n                  ),\n                };\n              }\n            }\n            // TODO APP1 - Exif\n            if (fileMarker === 0xffee) {\n              // 'Adobe'\n              if (\n                appData[0] === 0x41 &&\n                appData[1] === 0x64 &&\n                appData[2] === 0x6f &&\n                appData[3] === 0x62 &&\n                appData[4] === 0x65\n              ) {\n                adobe = {\n                  version: (appData[5] << 8) | appData[6],\n                  flags0: (appData[7] << 8) | appData[8],\n                  flags1: (appData[9] << 8) | appData[10],\n                  transformCode: appData[11],\n                };\n              }\n            }\n            break;\n\n          case 0xffdb: // DQT (Define Quantization Tables)\n            const quantizationTablesLength = readUint16(data, offset);\n            offset += 2;\n            var quantizationTablesEnd = quantizationTablesLength + offset - 2;\n            var z;\n            while (offset < quantizationTablesEnd) {\n              var quantizationTableSpec = data[offset++];\n              var tableData = new Uint16Array(64);\n              if (quantizationTableSpec >> 4 === 0) {\n                // 8 bit values\n                for (j = 0; j < 64; j++) {\n                  z = dctZigZag[j];\n                  tableData[z] = data[offset++];\n                }\n              } else if (quantizationTableSpec >> 4 === 1) {\n                // 16 bit values\n                for (j = 0; j < 64; j++) {\n                  z = dctZigZag[j];\n                  tableData[z] = readUint16(data, offset);\n                  offset += 2;\n                }\n              } else {\n                throw new JpegError(\"DQT - invalid table spec\");\n              }\n              quantizationTables[quantizationTableSpec & 15] = tableData;\n            }\n            break;\n\n          case 0xffc0: // SOF0 (Start of Frame, Baseline DCT)\n          case 0xffc1: // SOF1 (Start of Frame, Extended DCT)\n          case 0xffc2: // SOF2 (Start of Frame, Progressive DCT)\n            if (frame) {\n              throw new JpegError(\"Only single frame JPEGs supported\");\n            }\n            offset += 2; // Skip marker length.\n\n            frame = {};\n            frame.extended = fileMarker === 0xffc1;\n            frame.progressive = fileMarker === 0xffc2;\n            frame.precision = data[offset++];\n            const sofScanLines = readUint16(data, offset);\n            offset += 2;\n            frame.scanLines = dnlScanLines || sofScanLines;\n            frame.samplesPerLine = readUint16(data, offset);\n            offset += 2;\n            frame.components = [];\n            frame.componentIds = {};\n            var componentsCount = data[offset++],\n              componentId;\n            var maxH = 0,\n              maxV = 0;\n            for (i = 0; i < componentsCount; i++) {\n              componentId = data[offset];\n              var h = data[offset + 1] >> 4;\n              var v = data[offset + 1] & 15;\n              if (maxH < h) {\n                maxH = h;\n              }\n              if (maxV < v) {\n                maxV = v;\n              }\n              var qId = data[offset + 2];\n              l = frame.components.push({\n                h,\n                v,\n                quantizationId: qId,\n                quantizationTable: null, // See comment below.\n              });\n              frame.componentIds[componentId] = l - 1;\n              offset += 3;\n            }\n            frame.maxH = maxH;\n            frame.maxV = maxV;\n            prepareComponents(frame);\n            break;\n\n          case 0xffc4: // DHT (Define Huffman Tables)\n            const huffmanLength = readUint16(data, offset);\n            offset += 2;\n            for (i = 2; i < huffmanLength; ) {\n              var huffmanTableSpec = data[offset++];\n              var codeLengths = new Uint8Array(16);\n              var codeLengthSum = 0;\n              for (j = 0; j < 16; j++, offset++) {\n                codeLengthSum += codeLengths[j] = data[offset];\n              }\n              var huffmanValues = new Uint8Array(codeLengthSum);\n              for (j = 0; j < codeLengthSum; j++, offset++) {\n                huffmanValues[j] = data[offset];\n              }\n              i += 17 + codeLengthSum;\n\n              (huffmanTableSpec >> 4 === 0 ? huffmanTablesDC : huffmanTablesAC)[\n                huffmanTableSpec & 15\n              ] = buildHuffmanTable(codeLengths, huffmanValues);\n            }\n            break;\n\n          case 0xffdd: // DRI (Define Restart Interval)\n            offset += 2; // Skip marker length.\n\n            resetInterval = readUint16(data, offset);\n            offset += 2;\n            break;\n\n          case 0xffda: // SOS (Start of Scan)\n            // A DNL marker (0xFFDC), if it exists, is only allowed at the end\n            // of the first scan segment and may only occur once in an image.\n            // Furthermore, to prevent an infinite loop, do *not* attempt to\n            // parse DNL markers during re-parsing of the JPEG scan data.\n            const parseDNLMarker = ++numSOSMarkers === 1 && !dnlScanLines;\n\n            offset += 2; // Skip marker length.\n\n            var selectorsCount = data[offset++];\n            var components = [],\n              component;\n            for (i = 0; i < selectorsCount; i++) {\n              const index = data[offset++];\n              var componentIndex = frame.componentIds[index];\n              component = frame.components[componentIndex];\n              component.index = index;\n              var tableSpec = data[offset++];\n              component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4];\n              component.huffmanTableAC = huffmanTablesAC[tableSpec & 15];\n              components.push(component);\n            }\n            var spectralStart = data[offset++];\n            var spectralEnd = data[offset++];\n            var successiveApproximation = data[offset++];\n            try {\n              var processed = decodeScan(\n                data,\n                offset,\n                frame,\n                components,\n                resetInterval,\n                spectralStart,\n                spectralEnd,\n                successiveApproximation >> 4,\n                successiveApproximation & 15,\n                parseDNLMarker\n              );\n              offset += processed;\n            } catch (ex) {\n              if (ex instanceof DNLMarkerError) {\n                warn(`${ex.message} -- attempting to re-parse the JPEG image.`);\n                return this.parse(data, { dnlScanLines: ex.scanLines });\n              } else if (ex instanceof EOIMarkerError) {\n                warn(`${ex.message} -- ignoring the rest of the image data.`);\n                break markerLoop;\n              }\n              throw ex;\n            }\n            break;\n\n          case 0xffdc: // DNL (Define Number of Lines)\n            // Ignore the marker, since it's being handled in `decodeScan`.\n            offset += 4;\n            break;\n\n          case 0xffff: // Fill bytes\n            if (data[offset] !== 0xff) {\n              // Avoid skipping a valid marker.\n              offset--;\n            }\n            break;\n\n          default:\n            // Could be incorrect encoding -- the last 0xFF byte of the previous\n            // block could have been eaten by the encoder, hence we fallback to\n            // `startPos = offset - 3` when looking for the next valid marker.\n            const nextFileMarker = findNextFileMarker(\n              data,\n              /* currentPos = */ offset - 2,\n              /* startPos = */ offset - 3\n            );\n            if (nextFileMarker && nextFileMarker.invalid) {\n              warn(\n                \"JpegImage.parse - unexpected data, current marker is: \" +\n                  nextFileMarker.invalid\n              );\n              offset = nextFileMarker.offset;\n              break;\n            }\n            if (offset >= data.length - 1) {\n              warn(\n                \"JpegImage.parse - reached the end of the image data \" +\n                  \"without finding an EOI marker (0xFFD9).\"\n              );\n              break markerLoop;\n            }\n            throw new JpegError(\n              \"JpegImage.parse - unknown marker: \" + fileMarker.toString(16)\n            );\n        }\n        fileMarker = readUint16(data, offset);\n        offset += 2;\n      }\n\n      this.width = frame.samplesPerLine;\n      this.height = frame.scanLines;\n      this.jfif = jfif;\n      this.adobe = adobe;\n      this.components = [];\n      for (i = 0; i < frame.components.length; i++) {\n        component = frame.components[i];\n\n        // Prevent errors when DQT markers are placed after SOF{n} markers,\n        // by assigning the `quantizationTable` entry after the entire image\n        // has been parsed (fixes issue7406.pdf).\n        var quantizationTable = quantizationTables[component.quantizationId];\n        if (quantizationTable) {\n          component.quantizationTable = quantizationTable;\n        }\n\n        this.components.push({\n          index: component.index,\n          output: buildComponentData(frame, component),\n          scaleX: component.h / frame.maxH,\n          scaleY: component.v / frame.maxV,\n          blocksPerLine: component.blocksPerLine,\n          blocksPerColumn: component.blocksPerColumn,\n        });\n      }\n      this.numComponents = this.components.length;\n      return undefined;\n    },\n\n    _getLinearizedBlockData(width, height, isSourcePDF = false) {\n      var scaleX = this.width / width,\n        scaleY = this.height / height;\n\n      var component, componentScaleX, componentScaleY, blocksPerScanline;\n      var x, y, i, j, k;\n      var index;\n      var offset = 0;\n      var output;\n      var numComponents = this.components.length;\n      var dataLength = width * height * numComponents;\n      var data = new Uint8ClampedArray(dataLength);\n      var xScaleBlockOffset = new Uint32Array(width);\n      var mask3LSB = 0xfffffff8; // used to clear the 3 LSBs\n      let lastComponentScaleX;\n\n      for (i = 0; i < numComponents; i++) {\n        component = this.components[i];\n        componentScaleX = component.scaleX * scaleX;\n        componentScaleY = component.scaleY * scaleY;\n        offset = i;\n        output = component.output;\n        blocksPerScanline = (component.blocksPerLine + 1) << 3;\n        // Precalculate the `xScaleBlockOffset`. Since it doesn't depend on the\n        // component data, that's only necessary when `componentScaleX` changes.\n        if (componentScaleX !== lastComponentScaleX) {\n          for (x = 0; x < width; x++) {\n            j = 0 | (x * componentScaleX);\n            xScaleBlockOffset[x] = ((j & mask3LSB) << 3) | (j & 7);\n          }\n          lastComponentScaleX = componentScaleX;\n        }\n        // linearize the blocks of the component\n        for (y = 0; y < height; y++) {\n          j = 0 | (y * componentScaleY);\n          index = (blocksPerScanline * (j & mask3LSB)) | ((j & 7) << 3);\n          for (x = 0; x < width; x++) {\n            data[offset] = output[index + xScaleBlockOffset[x]];\n            offset += numComponents;\n          }\n        }\n      }\n\n      // decodeTransform contains pairs of multiplier (-256..256) and additive\n      let transform = this._decodeTransform;\n\n      // In PDF files, JPEG images with CMYK colour spaces are usually inverted\n      // (this can be observed by extracting the raw image data).\n      // Since the conversion algorithms (see below) were written primarily for\n      // the PDF use-cases, attempting to use `JpegImage` to parse standalone\n      // JPEG (CMYK) images may thus result in inverted images (see issue 9513).\n      //\n      // Unfortunately it's not (always) possible to tell, from the image data\n      // alone, if it needs to be inverted. Thus in an attempt to provide better\n      // out-of-box behaviour when `JpegImage` is used standalone, default to\n      // inverting JPEG (CMYK) images if and only if the image data does *not*\n      // come from a PDF file and no `decodeTransform` was passed by the user.\n      if (!isSourcePDF && numComponents === 4 && !transform) {\n        // prettier-ignore\n        transform = new Int32Array([\n          -256, 255, -256, 255, -256, 255, -256, 255]);\n      }\n\n      if (transform) {\n        for (i = 0; i < dataLength; ) {\n          for (j = 0, k = 0; j < numComponents; j++, i++, k += 2) {\n            data[i] = ((data[i] * transform[k]) >> 8) + transform[k + 1];\n          }\n        }\n      }\n      return data;\n    },\n\n    get _isColorConversionNeeded() {\n      if (this.adobe) {\n        // The adobe transform marker overrides any previous setting.\n        return !!this.adobe.transformCode;\n      }\n      if (this.numComponents === 3) {\n        if (this._colorTransform === 0) {\n          // If the Adobe transform marker is not present and the image\n          // dictionary has a 'ColorTransform' entry, explicitly set to `0`,\n          // then the colours should *not* be transformed.\n          return false;\n        } else if (\n          this.components[0].index === /* \"R\" = */ 0x52 &&\n          this.components[1].index === /* \"G\" = */ 0x47 &&\n          this.components[2].index === /* \"B\" = */ 0x42\n        ) {\n          // If the three components are indexed as RGB in ASCII\n          // then the colours should *not* be transformed.\n          return false;\n        }\n        return true;\n      }\n      // `this.numComponents !== 3`\n      if (this._colorTransform === 1) {\n        // If the Adobe transform marker is not present and the image\n        // dictionary has a 'ColorTransform' entry, explicitly set to `1`,\n        // then the colours should be transformed.\n        return true;\n      }\n      return false;\n    },\n\n    _convertYccToRgb: function convertYccToRgb(data) {\n      var Y, Cb, Cr;\n      for (var i = 0, length = data.length; i < length; i += 3) {\n        Y = data[i];\n        Cb = data[i + 1];\n        Cr = data[i + 2];\n        data[i] = Y - 179.456 + 1.402 * Cr;\n        data[i + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr;\n        data[i + 2] = Y - 226.816 + 1.772 * Cb;\n      }\n      return data;\n    },\n\n    _convertYcckToRgb: function convertYcckToRgb(data) {\n      var Y, Cb, Cr, k;\n      var offset = 0;\n      for (var i = 0, length = data.length; i < length; i += 4) {\n        Y = data[i];\n        Cb = data[i + 1];\n        Cr = data[i + 2];\n        k = data[i + 3];\n\n        data[offset++] =\n          -122.67195406894 +\n          Cb *\n            (-6.60635669420364e-5 * Cb +\n              0.000437130475926232 * Cr -\n              5.4080610064599e-5 * Y +\n              0.00048449797120281 * k -\n              0.154362151871126) +\n          Cr *\n            (-0.000957964378445773 * Cr +\n              0.000817076911346625 * Y -\n              0.00477271405408747 * k +\n              1.53380253221734) +\n          Y *\n            (0.000961250184130688 * Y -\n              0.00266257332283933 * k +\n              0.48357088451265) +\n          k * (-0.000336197177618394 * k + 0.484791561490776);\n\n        data[offset++] =\n          107.268039397724 +\n          Cb *\n            (2.19927104525741e-5 * Cb -\n              0.000640992018297945 * Cr +\n              0.000659397001245577 * Y +\n              0.000426105652938837 * k -\n              0.176491792462875) +\n          Cr *\n            (-0.000778269941513683 * Cr +\n              0.00130872261408275 * Y +\n              0.000770482631801132 * k -\n              0.151051492775562) +\n          Y *\n            (0.00126935368114843 * Y -\n              0.00265090189010898 * k +\n              0.25802910206845) +\n          k * (-0.000318913117588328 * k - 0.213742400323665);\n\n        data[offset++] =\n          -20.810012546947 +\n          Cb *\n            (-0.000570115196973677 * Cb -\n              2.63409051004589e-5 * Cr +\n              0.0020741088115012 * Y -\n              0.00288260236853442 * k +\n              0.814272968359295) +\n          Cr *\n            (-1.53496057440975e-5 * Cr -\n              0.000132689043961446 * Y +\n              0.000560833691242812 * k -\n              0.195152027534049) +\n          Y *\n            (0.00174418132927582 * Y -\n              0.00255243321439347 * k +\n              0.116935020465145) +\n          k * (-0.000343531996510555 * k + 0.24165260232407);\n      }\n      // Ensure that only the converted RGB data is returned.\n      return data.subarray(0, offset);\n    },\n\n    _convertYcckToCmyk: function convertYcckToCmyk(data) {\n      var Y, Cb, Cr;\n      for (var i = 0, length = data.length; i < length; i += 4) {\n        Y = data[i];\n        Cb = data[i + 1];\n        Cr = data[i + 2];\n        data[i] = 434.456 - Y - 1.402 * Cr;\n        data[i + 1] = 119.541 - Y + 0.344 * Cb + 0.714 * Cr;\n        data[i + 2] = 481.816 - Y - 1.772 * Cb;\n        // K in data[i + 3] is unchanged\n      }\n      return data;\n    },\n\n    _convertCmykToRgb: function convertCmykToRgb(data) {\n      var c, m, y, k;\n      var offset = 0;\n      for (var i = 0, length = data.length; i < length; i += 4) {\n        c = data[i];\n        m = data[i + 1];\n        y = data[i + 2];\n        k = data[i + 3];\n\n        data[offset++] =\n          255 +\n          c *\n            (-0.00006747147073602441 * c +\n              0.0008379262121013727 * m +\n              0.0002894718188643294 * y +\n              0.003264231057537806 * k -\n              1.1185611867203937) +\n          m *\n            (0.000026374107616089405 * m -\n              0.00008626949158638572 * y -\n              0.0002748769067499491 * k -\n              0.02155688794978967) +\n          y *\n            (-0.00003878099212869363 * y -\n              0.0003267808279485286 * k +\n              0.0686742238595345) -\n          k * (0.0003361971776183937 * k + 0.7430659151342254);\n\n        data[offset++] =\n          255 +\n          c *\n            (0.00013596372813588848 * c +\n              0.000924537132573585 * m +\n              0.00010567359618683593 * y +\n              0.0004791864687436512 * k -\n              0.3109689587515875) +\n          m *\n            (-0.00023545346108370344 * m +\n              0.0002702845253534714 * y +\n              0.0020200308977307156 * k -\n              0.7488052167015494) +\n          y *\n            (0.00006834815998235662 * y +\n              0.00015168452363460973 * k -\n              0.09751927774728933) -\n          k * (0.00031891311758832814 * k + 0.7364883807733168);\n\n        data[offset++] =\n          255 +\n          c *\n            (0.000013598650411385307 * c +\n              0.00012423956175490851 * m +\n              0.0004751985097583589 * y -\n              0.0000036729317476630422 * k -\n              0.05562186980264034) +\n          m *\n            (0.00016141380598724676 * m +\n              0.0009692239130725186 * y +\n              0.0007782692450036253 * k -\n              0.44015232367526463) +\n          y *\n            (5.068882914068769e-7 * y +\n              0.0017778369011375071 * k -\n              0.7591454649749609) -\n          k * (0.0003435319965105553 * k + 0.7063770186160144);\n      }\n      // Ensure that only the converted RGB data is returned.\n      return data.subarray(0, offset);\n    },\n\n    getData({ width, height, forceRGB = false, isSourcePDF = false }) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          isSourcePDF === true,\n          'JpegImage.getData: Unexpected \"isSourcePDF\" value for PDF files.'\n        );\n      }\n      if (this.numComponents > 4) {\n        throw new JpegError(\"Unsupported color mode\");\n      }\n      // Type of data: Uint8ClampedArray(width * height * numComponents)\n      var data = this._getLinearizedBlockData(width, height, isSourcePDF);\n\n      if (this.numComponents === 1 && forceRGB) {\n        var dataLength = data.length;\n        var rgbData = new Uint8ClampedArray(dataLength * 3);\n        var offset = 0;\n        for (var i = 0; i < dataLength; i++) {\n          var grayColor = data[i];\n          rgbData[offset++] = grayColor;\n          rgbData[offset++] = grayColor;\n          rgbData[offset++] = grayColor;\n        }\n        return rgbData;\n      } else if (this.numComponents === 3 && this._isColorConversionNeeded) {\n        return this._convertYccToRgb(data);\n      } else if (this.numComponents === 4) {\n        if (this._isColorConversionNeeded) {\n          if (forceRGB) {\n            return this._convertYcckToRgb(data);\n          }\n          return this._convertYcckToCmyk(data);\n        } else if (forceRGB) {\n          return this._convertCmykToRgb(data);\n        }\n      }\n      return data;\n    },\n  };\n\n  return JpegImage;\n})();\n\nexport { JpegImage };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./stream.js\";\nimport { JpxImage } from \"./jpx.js\";\nimport { shadow } from \"../shared/util.js\";\n\n/**\n * For JPEG 2000's we use a library to decode these images and\n * the stream behaves like all the other DecodeStreams.\n */\nconst JpxStream = (function JpxStreamClosure() {\n  // eslint-disable-next-line no-shadow\n  function JpxStream(stream, maybeLength, dict, params) {\n    this.stream = stream;\n    this.maybeLength = maybeLength;\n    this.dict = dict;\n    this.params = params;\n\n    DecodeStream.call(this, maybeLength);\n  }\n\n  JpxStream.prototype = Object.create(DecodeStream.prototype);\n\n  Object.defineProperty(JpxStream.prototype, \"bytes\", {\n    get: function JpxStream_bytes() {\n      // If `this.maybeLength` is null, we'll get the entire stream.\n      return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n    },\n    configurable: true,\n  });\n\n  JpxStream.prototype.ensureBuffer = function (requested) {\n    // No-op, since `this.readBlock` will always parse the entire image and\n    // directly insert all of its data into `this.buffer`.\n  };\n\n  JpxStream.prototype.readBlock = function () {\n    if (this.eof) {\n      return;\n    }\n    const jpxImage = new JpxImage();\n    jpxImage.parse(this.bytes);\n\n    const width = jpxImage.width;\n    const height = jpxImage.height;\n    const componentsCount = jpxImage.componentsCount;\n    const tileCount = jpxImage.tiles.length;\n    if (tileCount === 1) {\n      this.buffer = jpxImage.tiles[0].items;\n    } else {\n      const data = new Uint8ClampedArray(width * height * componentsCount);\n\n      for (let k = 0; k < tileCount; k++) {\n        const tileComponents = jpxImage.tiles[k];\n        const tileWidth = tileComponents.width;\n        const tileHeight = tileComponents.height;\n        const tileLeft = tileComponents.left;\n        const tileTop = tileComponents.top;\n\n        const src = tileComponents.items;\n        let srcPosition = 0;\n        let dataPosition = (width * tileTop + tileLeft) * componentsCount;\n        const imgRowSize = width * componentsCount;\n        const tileRowSize = tileWidth * componentsCount;\n\n        for (let j = 0; j < tileHeight; j++) {\n          const rowBytes = src.subarray(srcPosition, srcPosition + tileRowSize);\n          data.set(rowBytes, dataPosition);\n          srcPosition += tileRowSize;\n          dataPosition += imgRowSize;\n        }\n      }\n      this.buffer = data;\n    }\n    this.bufferLength = this.buffer.length;\n    this.eof = true;\n  };\n\n  return JpxStream;\n})();\n\nexport { JpxStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseException, info, warn } from \"../shared/util.js\";\nimport { log2, readUint16, readUint32 } from \"./core_utils.js\";\nimport { ArithmeticDecoder } from \"./arithmetic_decoder.js\";\n\nclass JpxError extends BaseException {\n  constructor(msg) {\n    super(`JPX error: ${msg}`);\n  }\n}\n\nvar JpxImage = (function JpxImageClosure() {\n  // Table E.1\n  var SubbandsGainLog2 = {\n    LL: 0,\n    LH: 1,\n    HL: 1,\n    HH: 2,\n  };\n\n  // eslint-disable-next-line no-shadow\n  function JpxImage() {\n    this.failOnCorruptedImage = false;\n  }\n  JpxImage.prototype = {\n    parse: function JpxImage_parse(data) {\n      var head = readUint16(data, 0);\n      // No box header, immediate start of codestream (SOC)\n      if (head === 0xff4f) {\n        this.parseCodestream(data, 0, data.length);\n        return;\n      }\n\n      var position = 0,\n        length = data.length;\n      while (position < length) {\n        var headerSize = 8;\n        var lbox = readUint32(data, position);\n        var tbox = readUint32(data, position + 4);\n        position += headerSize;\n        if (lbox === 1) {\n          // XLBox: read UInt64 according to spec.\n          // JavaScript's int precision of 53 bit should be sufficient here.\n          lbox =\n            readUint32(data, position) * 4294967296 +\n            readUint32(data, position + 4);\n          position += 8;\n          headerSize += 8;\n        }\n        if (lbox === 0) {\n          lbox = length - position + headerSize;\n        }\n        if (lbox < headerSize) {\n          throw new JpxError(\"Invalid box field size\");\n        }\n        var dataLength = lbox - headerSize;\n        var jumpDataLength = true;\n        switch (tbox) {\n          case 0x6a703268: // 'jp2h'\n            jumpDataLength = false; // parsing child boxes\n            break;\n          case 0x636f6c72: // 'colr'\n            // Colorspaces are not used, the CS from the PDF is used.\n            var method = data[position];\n            if (method === 1) {\n              // enumerated colorspace\n              var colorspace = readUint32(data, position + 3);\n              switch (colorspace) {\n                case 16: // this indicates a sRGB colorspace\n                case 17: // this indicates a grayscale colorspace\n                case 18: // this indicates a YUV colorspace\n                  break;\n                default:\n                  warn(\"Unknown colorspace \" + colorspace);\n                  break;\n              }\n            } else if (method === 2) {\n              info(\"ICC profile not supported\");\n            }\n            break;\n          case 0x6a703263: // 'jp2c'\n            this.parseCodestream(data, position, position + dataLength);\n            break;\n          case 0x6a502020: // 'jP\\024\\024'\n            if (readUint32(data, position) !== 0x0d0a870a) {\n              warn(\"Invalid JP2 signature\");\n            }\n            break;\n          // The following header types are valid but currently not used:\n          case 0x6a501a1a: // 'jP\\032\\032'\n          case 0x66747970: // 'ftyp'\n          case 0x72726571: // 'rreq'\n          case 0x72657320: // 'res '\n          case 0x69686472: // 'ihdr'\n            break;\n          default:\n            var headerType = String.fromCharCode(\n              (tbox >> 24) & 0xff,\n              (tbox >> 16) & 0xff,\n              (tbox >> 8) & 0xff,\n              tbox & 0xff\n            );\n            warn(\"Unsupported header type \" + tbox + \" (\" + headerType + \")\");\n            break;\n        }\n        if (jumpDataLength) {\n          position += dataLength;\n        }\n      }\n    },\n    parseImageProperties: function JpxImage_parseImageProperties(stream) {\n      var newByte = stream.getByte();\n      while (newByte >= 0) {\n        var oldByte = newByte;\n        newByte = stream.getByte();\n        var code = (oldByte << 8) | newByte;\n        // Image and tile size (SIZ)\n        if (code === 0xff51) {\n          stream.skip(4);\n          var Xsiz = stream.getInt32() >>> 0; // Byte 4\n          var Ysiz = stream.getInt32() >>> 0; // Byte 8\n          var XOsiz = stream.getInt32() >>> 0; // Byte 12\n          var YOsiz = stream.getInt32() >>> 0; // Byte 16\n          stream.skip(16);\n          var Csiz = stream.getUint16(); // Byte 36\n          this.width = Xsiz - XOsiz;\n          this.height = Ysiz - YOsiz;\n          this.componentsCount = Csiz;\n          // Results are always returned as `Uint8ClampedArray`s.\n          this.bitsPerComponent = 8;\n          return;\n        }\n      }\n      throw new JpxError(\"No size marker found in JPX stream\");\n    },\n    parseCodestream: function JpxImage_parseCodestream(data, start, end) {\n      var context = {};\n      var doNotRecover = false;\n      try {\n        var position = start;\n        while (position + 1 < end) {\n          var code = readUint16(data, position);\n          position += 2;\n\n          var length = 0,\n            j,\n            sqcd,\n            spqcds,\n            spqcdSize,\n            scalarExpounded,\n            tile;\n          switch (code) {\n            case 0xff4f: // Start of codestream (SOC)\n              context.mainHeader = true;\n              break;\n            case 0xffd9: // End of codestream (EOC)\n              break;\n            case 0xff51: // Image and tile size (SIZ)\n              length = readUint16(data, position);\n              var siz = {};\n              siz.Xsiz = readUint32(data, position + 4);\n              siz.Ysiz = readUint32(data, position + 8);\n              siz.XOsiz = readUint32(data, position + 12);\n              siz.YOsiz = readUint32(data, position + 16);\n              siz.XTsiz = readUint32(data, position + 20);\n              siz.YTsiz = readUint32(data, position + 24);\n              siz.XTOsiz = readUint32(data, position + 28);\n              siz.YTOsiz = readUint32(data, position + 32);\n              var componentsCount = readUint16(data, position + 36);\n              siz.Csiz = componentsCount;\n              var components = [];\n              j = position + 38;\n              for (var i = 0; i < componentsCount; i++) {\n                var component = {\n                  precision: (data[j] & 0x7f) + 1,\n                  isSigned: !!(data[j] & 0x80),\n                  XRsiz: data[j + 1],\n                  YRsiz: data[j + 2],\n                };\n                j += 3;\n                calculateComponentDimensions(component, siz);\n                components.push(component);\n              }\n              context.SIZ = siz;\n              context.components = components;\n              calculateTileGrids(context, components);\n              context.QCC = [];\n              context.COC = [];\n              break;\n            case 0xff5c: // Quantization default (QCD)\n              length = readUint16(data, position);\n              var qcd = {};\n              j = position + 2;\n              sqcd = data[j++];\n              switch (sqcd & 0x1f) {\n                case 0:\n                  spqcdSize = 8;\n                  scalarExpounded = true;\n                  break;\n                case 1:\n                  spqcdSize = 16;\n                  scalarExpounded = false;\n                  break;\n                case 2:\n                  spqcdSize = 16;\n                  scalarExpounded = true;\n                  break;\n                default:\n                  throw new Error(\"Invalid SQcd value \" + sqcd);\n              }\n              qcd.noQuantization = spqcdSize === 8;\n              qcd.scalarExpounded = scalarExpounded;\n              qcd.guardBits = sqcd >> 5;\n              spqcds = [];\n              while (j < length + position) {\n                var spqcd = {};\n                if (spqcdSize === 8) {\n                  spqcd.epsilon = data[j++] >> 3;\n                  spqcd.mu = 0;\n                } else {\n                  spqcd.epsilon = data[j] >> 3;\n                  spqcd.mu = ((data[j] & 0x7) << 8) | data[j + 1];\n                  j += 2;\n                }\n                spqcds.push(spqcd);\n              }\n              qcd.SPqcds = spqcds;\n              if (context.mainHeader) {\n                context.QCD = qcd;\n              } else {\n                context.currentTile.QCD = qcd;\n                context.currentTile.QCC = [];\n              }\n              break;\n            case 0xff5d: // Quantization component (QCC)\n              length = readUint16(data, position);\n              var qcc = {};\n              j = position + 2;\n              var cqcc;\n              if (context.SIZ.Csiz < 257) {\n                cqcc = data[j++];\n              } else {\n                cqcc = readUint16(data, j);\n                j += 2;\n              }\n              sqcd = data[j++];\n              switch (sqcd & 0x1f) {\n                case 0:\n                  spqcdSize = 8;\n                  scalarExpounded = true;\n                  break;\n                case 1:\n                  spqcdSize = 16;\n                  scalarExpounded = false;\n                  break;\n                case 2:\n                  spqcdSize = 16;\n                  scalarExpounded = true;\n                  break;\n                default:\n                  throw new Error(\"Invalid SQcd value \" + sqcd);\n              }\n              qcc.noQuantization = spqcdSize === 8;\n              qcc.scalarExpounded = scalarExpounded;\n              qcc.guardBits = sqcd >> 5;\n              spqcds = [];\n              while (j < length + position) {\n                spqcd = {};\n                if (spqcdSize === 8) {\n                  spqcd.epsilon = data[j++] >> 3;\n                  spqcd.mu = 0;\n                } else {\n                  spqcd.epsilon = data[j] >> 3;\n                  spqcd.mu = ((data[j] & 0x7) << 8) | data[j + 1];\n                  j += 2;\n                }\n                spqcds.push(spqcd);\n              }\n              qcc.SPqcds = spqcds;\n              if (context.mainHeader) {\n                context.QCC[cqcc] = qcc;\n              } else {\n                context.currentTile.QCC[cqcc] = qcc;\n              }\n              break;\n            case 0xff52: // Coding style default (COD)\n              length = readUint16(data, position);\n              var cod = {};\n              j = position + 2;\n              var scod = data[j++];\n              cod.entropyCoderWithCustomPrecincts = !!(scod & 1);\n              cod.sopMarkerUsed = !!(scod & 2);\n              cod.ephMarkerUsed = !!(scod & 4);\n              cod.progressionOrder = data[j++];\n              cod.layersCount = readUint16(data, j);\n              j += 2;\n              cod.multipleComponentTransform = data[j++];\n\n              cod.decompositionLevelsCount = data[j++];\n              cod.xcb = (data[j++] & 0xf) + 2;\n              cod.ycb = (data[j++] & 0xf) + 2;\n              var blockStyle = data[j++];\n              cod.selectiveArithmeticCodingBypass = !!(blockStyle & 1);\n              cod.resetContextProbabilities = !!(blockStyle & 2);\n              cod.terminationOnEachCodingPass = !!(blockStyle & 4);\n              cod.verticallyStripe = !!(blockStyle & 8);\n              cod.predictableTermination = !!(blockStyle & 16);\n              cod.segmentationSymbolUsed = !!(blockStyle & 32);\n              cod.reversibleTransformation = data[j++];\n              if (cod.entropyCoderWithCustomPrecincts) {\n                var precinctsSizes = [];\n                while (j < length + position) {\n                  var precinctsSize = data[j++];\n                  precinctsSizes.push({\n                    PPx: precinctsSize & 0xf,\n                    PPy: precinctsSize >> 4,\n                  });\n                }\n                cod.precinctsSizes = precinctsSizes;\n              }\n              var unsupported = [];\n              if (cod.selectiveArithmeticCodingBypass) {\n                unsupported.push(\"selectiveArithmeticCodingBypass\");\n              }\n              if (cod.resetContextProbabilities) {\n                unsupported.push(\"resetContextProbabilities\");\n              }\n              if (cod.terminationOnEachCodingPass) {\n                unsupported.push(\"terminationOnEachCodingPass\");\n              }\n              if (cod.verticallyStripe) {\n                unsupported.push(\"verticallyStripe\");\n              }\n              if (cod.predictableTermination) {\n                unsupported.push(\"predictableTermination\");\n              }\n              if (unsupported.length > 0) {\n                doNotRecover = true;\n                throw new Error(\n                  \"Unsupported COD options (\" + unsupported.join(\", \") + \")\"\n                );\n              }\n              if (context.mainHeader) {\n                context.COD = cod;\n              } else {\n                context.currentTile.COD = cod;\n                context.currentTile.COC = [];\n              }\n              break;\n            case 0xff90: // Start of tile-part (SOT)\n              length = readUint16(data, position);\n              tile = {};\n              tile.index = readUint16(data, position + 2);\n              tile.length = readUint32(data, position + 4);\n              tile.dataEnd = tile.length + position - 2;\n              tile.partIndex = data[position + 8];\n              tile.partsCount = data[position + 9];\n\n              context.mainHeader = false;\n              if (tile.partIndex === 0) {\n                // reset component specific settings\n                tile.COD = context.COD;\n                tile.COC = context.COC.slice(0); // clone of the global COC\n                tile.QCD = context.QCD;\n                tile.QCC = context.QCC.slice(0); // clone of the global COC\n              }\n              context.currentTile = tile;\n              break;\n            case 0xff93: // Start of data (SOD)\n              tile = context.currentTile;\n              if (tile.partIndex === 0) {\n                initializeTile(context, tile.index);\n                buildPackets(context);\n              }\n\n              // moving to the end of the data\n              length = tile.dataEnd - position;\n              parseTilePackets(context, data, position, length);\n              break;\n            case 0xff55: // Tile-part lengths, main header (TLM)\n            case 0xff57: // Packet length, main header (PLM)\n            case 0xff58: // Packet length, tile-part header (PLT)\n            case 0xff64: // Comment (COM)\n              length = readUint16(data, position);\n              // skipping content\n              break;\n            case 0xff53: // Coding style component (COC)\n              throw new Error(\n                \"Codestream code 0xFF53 (COC) is not implemented\"\n              );\n            default:\n              throw new Error(\"Unknown codestream code: \" + code.toString(16));\n          }\n          position += length;\n        }\n      } catch (e) {\n        if (doNotRecover || this.failOnCorruptedImage) {\n          throw new JpxError(e.message);\n        } else {\n          warn(\"JPX: Trying to recover from: \" + e.message);\n        }\n      }\n      this.tiles = transformComponents(context);\n      this.width = context.SIZ.Xsiz - context.SIZ.XOsiz;\n      this.height = context.SIZ.Ysiz - context.SIZ.YOsiz;\n      this.componentsCount = context.SIZ.Csiz;\n    },\n  };\n  function calculateComponentDimensions(component, siz) {\n    // Section B.2 Component mapping\n    component.x0 = Math.ceil(siz.XOsiz / component.XRsiz);\n    component.x1 = Math.ceil(siz.Xsiz / component.XRsiz);\n    component.y0 = Math.ceil(siz.YOsiz / component.YRsiz);\n    component.y1 = Math.ceil(siz.Ysiz / component.YRsiz);\n    component.width = component.x1 - component.x0;\n    component.height = component.y1 - component.y0;\n  }\n  function calculateTileGrids(context, components) {\n    var siz = context.SIZ;\n    // Section B.3 Division into tile and tile-components\n    var tile,\n      tiles = [];\n    var numXtiles = Math.ceil((siz.Xsiz - siz.XTOsiz) / siz.XTsiz);\n    var numYtiles = Math.ceil((siz.Ysiz - siz.YTOsiz) / siz.YTsiz);\n    for (var q = 0; q < numYtiles; q++) {\n      for (var p = 0; p < numXtiles; p++) {\n        tile = {};\n        tile.tx0 = Math.max(siz.XTOsiz + p * siz.XTsiz, siz.XOsiz);\n        tile.ty0 = Math.max(siz.YTOsiz + q * siz.YTsiz, siz.YOsiz);\n        tile.tx1 = Math.min(siz.XTOsiz + (p + 1) * siz.XTsiz, siz.Xsiz);\n        tile.ty1 = Math.min(siz.YTOsiz + (q + 1) * siz.YTsiz, siz.Ysiz);\n        tile.width = tile.tx1 - tile.tx0;\n        tile.height = tile.ty1 - tile.ty0;\n        tile.components = [];\n        tiles.push(tile);\n      }\n    }\n    context.tiles = tiles;\n\n    var componentsCount = siz.Csiz;\n    for (var i = 0, ii = componentsCount; i < ii; i++) {\n      var component = components[i];\n      for (var j = 0, jj = tiles.length; j < jj; j++) {\n        var tileComponent = {};\n        tile = tiles[j];\n        tileComponent.tcx0 = Math.ceil(tile.tx0 / component.XRsiz);\n        tileComponent.tcy0 = Math.ceil(tile.ty0 / component.YRsiz);\n        tileComponent.tcx1 = Math.ceil(tile.tx1 / component.XRsiz);\n        tileComponent.tcy1 = Math.ceil(tile.ty1 / component.YRsiz);\n        tileComponent.width = tileComponent.tcx1 - tileComponent.tcx0;\n        tileComponent.height = tileComponent.tcy1 - tileComponent.tcy0;\n        tile.components[i] = tileComponent;\n      }\n    }\n  }\n  function getBlocksDimensions(context, component, r) {\n    var codOrCoc = component.codingStyleParameters;\n    var result = {};\n    if (!codOrCoc.entropyCoderWithCustomPrecincts) {\n      result.PPx = 15;\n      result.PPy = 15;\n    } else {\n      result.PPx = codOrCoc.precinctsSizes[r].PPx;\n      result.PPy = codOrCoc.precinctsSizes[r].PPy;\n    }\n    // calculate codeblock size as described in section B.7\n    result.xcb_ =\n      r > 0\n        ? Math.min(codOrCoc.xcb, result.PPx - 1)\n        : Math.min(codOrCoc.xcb, result.PPx);\n    result.ycb_ =\n      r > 0\n        ? Math.min(codOrCoc.ycb, result.PPy - 1)\n        : Math.min(codOrCoc.ycb, result.PPy);\n    return result;\n  }\n  function buildPrecincts(context, resolution, dimensions) {\n    // Section B.6 Division resolution to precincts\n    var precinctWidth = 1 << dimensions.PPx;\n    var precinctHeight = 1 << dimensions.PPy;\n    // Jasper introduces codeblock groups for mapping each subband codeblocks\n    // to precincts. Precinct partition divides a resolution according to width\n    // and height parameters. The subband that belongs to the resolution level\n    // has a different size than the level, unless it is the zero resolution.\n\n    // From Jasper documentation: jpeg2000.pdf, section K: Tier-2 coding:\n    // The precinct partitioning for a particular subband is derived from a\n    // partitioning of its parent LL band (i.e., the LL band at the next higher\n    // resolution level)... The LL band associated with each resolution level is\n    // divided into precincts... Each of the resulting precinct regions is then\n    // mapped into its child subbands (if any) at the next lower resolution\n    // level. This is accomplished by using the coordinate transformation\n    // (u, v) = (ceil(x/2), ceil(y/2)) where (x, y) and (u, v) are the\n    // coordinates of a point in the LL band and child subband, respectively.\n    var isZeroRes = resolution.resLevel === 0;\n    var precinctWidthInSubband = 1 << (dimensions.PPx + (isZeroRes ? 0 : -1));\n    var precinctHeightInSubband = 1 << (dimensions.PPy + (isZeroRes ? 0 : -1));\n    var numprecinctswide =\n      resolution.trx1 > resolution.trx0\n        ? Math.ceil(resolution.trx1 / precinctWidth) -\n          Math.floor(resolution.trx0 / precinctWidth)\n        : 0;\n    var numprecinctshigh =\n      resolution.try1 > resolution.try0\n        ? Math.ceil(resolution.try1 / precinctHeight) -\n          Math.floor(resolution.try0 / precinctHeight)\n        : 0;\n    var numprecincts = numprecinctswide * numprecinctshigh;\n\n    resolution.precinctParameters = {\n      precinctWidth,\n      precinctHeight,\n      numprecinctswide,\n      numprecinctshigh,\n      numprecincts,\n      precinctWidthInSubband,\n      precinctHeightInSubband,\n    };\n  }\n  function buildCodeblocks(context, subband, dimensions) {\n    // Section B.7 Division sub-band into code-blocks\n    var xcb_ = dimensions.xcb_;\n    var ycb_ = dimensions.ycb_;\n    var codeblockWidth = 1 << xcb_;\n    var codeblockHeight = 1 << ycb_;\n    var cbx0 = subband.tbx0 >> xcb_;\n    var cby0 = subband.tby0 >> ycb_;\n    var cbx1 = (subband.tbx1 + codeblockWidth - 1) >> xcb_;\n    var cby1 = (subband.tby1 + codeblockHeight - 1) >> ycb_;\n    var precinctParameters = subband.resolution.precinctParameters;\n    var codeblocks = [];\n    var precincts = [];\n    var i, j, codeblock, precinctNumber;\n    for (j = cby0; j < cby1; j++) {\n      for (i = cbx0; i < cbx1; i++) {\n        codeblock = {\n          cbx: i,\n          cby: j,\n          tbx0: codeblockWidth * i,\n          tby0: codeblockHeight * j,\n          tbx1: codeblockWidth * (i + 1),\n          tby1: codeblockHeight * (j + 1),\n        };\n\n        codeblock.tbx0_ = Math.max(subband.tbx0, codeblock.tbx0);\n        codeblock.tby0_ = Math.max(subband.tby0, codeblock.tby0);\n        codeblock.tbx1_ = Math.min(subband.tbx1, codeblock.tbx1);\n        codeblock.tby1_ = Math.min(subband.tby1, codeblock.tby1);\n\n        // Calculate precinct number for this codeblock, codeblock position\n        // should be relative to its subband, use actual dimension and position\n        // See comment about codeblock group width and height\n        var pi = Math.floor(\n          (codeblock.tbx0_ - subband.tbx0) /\n            precinctParameters.precinctWidthInSubband\n        );\n        var pj = Math.floor(\n          (codeblock.tby0_ - subband.tby0) /\n            precinctParameters.precinctHeightInSubband\n        );\n        precinctNumber = pi + pj * precinctParameters.numprecinctswide;\n\n        codeblock.precinctNumber = precinctNumber;\n        codeblock.subbandType = subband.type;\n        codeblock.Lblock = 3;\n\n        if (\n          codeblock.tbx1_ <= codeblock.tbx0_ ||\n          codeblock.tby1_ <= codeblock.tby0_\n        ) {\n          continue;\n        }\n        codeblocks.push(codeblock);\n        // building precinct for the sub-band\n        var precinct = precincts[precinctNumber];\n        if (precinct !== undefined) {\n          if (i < precinct.cbxMin) {\n            precinct.cbxMin = i;\n          } else if (i > precinct.cbxMax) {\n            precinct.cbxMax = i;\n          }\n          if (j < precinct.cbyMin) {\n            precinct.cbxMin = j;\n          } else if (j > precinct.cbyMax) {\n            precinct.cbyMax = j;\n          }\n        } else {\n          precincts[precinctNumber] = precinct = {\n            cbxMin: i,\n            cbyMin: j,\n            cbxMax: i,\n            cbyMax: j,\n          };\n        }\n        codeblock.precinct = precinct;\n      }\n    }\n    subband.codeblockParameters = {\n      codeblockWidth: xcb_,\n      codeblockHeight: ycb_,\n      numcodeblockwide: cbx1 - cbx0 + 1,\n      numcodeblockhigh: cby1 - cby0 + 1,\n    };\n    subband.codeblocks = codeblocks;\n    subband.precincts = precincts;\n  }\n  function createPacket(resolution, precinctNumber, layerNumber) {\n    var precinctCodeblocks = [];\n    // Section B.10.8 Order of info in packet\n    var subbands = resolution.subbands;\n    // sub-bands already ordered in 'LL', 'HL', 'LH', and 'HH' sequence\n    for (var i = 0, ii = subbands.length; i < ii; i++) {\n      var subband = subbands[i];\n      var codeblocks = subband.codeblocks;\n      for (var j = 0, jj = codeblocks.length; j < jj; j++) {\n        var codeblock = codeblocks[j];\n        if (codeblock.precinctNumber !== precinctNumber) {\n          continue;\n        }\n        precinctCodeblocks.push(codeblock);\n      }\n    }\n    return {\n      layerNumber,\n      codeblocks: precinctCodeblocks,\n    };\n  }\n  function LayerResolutionComponentPositionIterator(context) {\n    var siz = context.SIZ;\n    var tileIndex = context.currentTile.index;\n    var tile = context.tiles[tileIndex];\n    var layersCount = tile.codingStyleDefaultParameters.layersCount;\n    var componentsCount = siz.Csiz;\n    var maxDecompositionLevelsCount = 0;\n    for (var q = 0; q < componentsCount; q++) {\n      maxDecompositionLevelsCount = Math.max(\n        maxDecompositionLevelsCount,\n        tile.components[q].codingStyleParameters.decompositionLevelsCount\n      );\n    }\n\n    var l = 0,\n      r = 0,\n      i = 0,\n      k = 0;\n\n    this.nextPacket = function JpxImage_nextPacket() {\n      // Section B.12.1.1 Layer-resolution-component-position\n      for (; l < layersCount; l++) {\n        for (; r <= maxDecompositionLevelsCount; r++) {\n          for (; i < componentsCount; i++) {\n            var component = tile.components[i];\n            if (r > component.codingStyleParameters.decompositionLevelsCount) {\n              continue;\n            }\n\n            var resolution = component.resolutions[r];\n            var numprecincts = resolution.precinctParameters.numprecincts;\n            for (; k < numprecincts; ) {\n              var packet = createPacket(resolution, k, l);\n              k++;\n              return packet;\n            }\n            k = 0;\n          }\n          i = 0;\n        }\n        r = 0;\n      }\n      throw new JpxError(\"Out of packets\");\n    };\n  }\n  function ResolutionLayerComponentPositionIterator(context) {\n    var siz = context.SIZ;\n    var tileIndex = context.currentTile.index;\n    var tile = context.tiles[tileIndex];\n    var layersCount = tile.codingStyleDefaultParameters.layersCount;\n    var componentsCount = siz.Csiz;\n    var maxDecompositionLevelsCount = 0;\n    for (var q = 0; q < componentsCount; q++) {\n      maxDecompositionLevelsCount = Math.max(\n        maxDecompositionLevelsCount,\n        tile.components[q].codingStyleParameters.decompositionLevelsCount\n      );\n    }\n\n    var r = 0,\n      l = 0,\n      i = 0,\n      k = 0;\n\n    this.nextPacket = function JpxImage_nextPacket() {\n      // Section B.12.1.2 Resolution-layer-component-position\n      for (; r <= maxDecompositionLevelsCount; r++) {\n        for (; l < layersCount; l++) {\n          for (; i < componentsCount; i++) {\n            var component = tile.components[i];\n            if (r > component.codingStyleParameters.decompositionLevelsCount) {\n              continue;\n            }\n\n            var resolution = component.resolutions[r];\n            var numprecincts = resolution.precinctParameters.numprecincts;\n            for (; k < numprecincts; ) {\n              var packet = createPacket(resolution, k, l);\n              k++;\n              return packet;\n            }\n            k = 0;\n          }\n          i = 0;\n        }\n        l = 0;\n      }\n      throw new JpxError(\"Out of packets\");\n    };\n  }\n  function ResolutionPositionComponentLayerIterator(context) {\n    var siz = context.SIZ;\n    var tileIndex = context.currentTile.index;\n    var tile = context.tiles[tileIndex];\n    var layersCount = tile.codingStyleDefaultParameters.layersCount;\n    var componentsCount = siz.Csiz;\n    var l, r, c, p;\n    var maxDecompositionLevelsCount = 0;\n    for (c = 0; c < componentsCount; c++) {\n      const component = tile.components[c];\n      maxDecompositionLevelsCount = Math.max(\n        maxDecompositionLevelsCount,\n        component.codingStyleParameters.decompositionLevelsCount\n      );\n    }\n    var maxNumPrecinctsInLevel = new Int32Array(\n      maxDecompositionLevelsCount + 1\n    );\n    for (r = 0; r <= maxDecompositionLevelsCount; ++r) {\n      var maxNumPrecincts = 0;\n      for (c = 0; c < componentsCount; ++c) {\n        var resolutions = tile.components[c].resolutions;\n        if (r < resolutions.length) {\n          maxNumPrecincts = Math.max(\n            maxNumPrecincts,\n            resolutions[r].precinctParameters.numprecincts\n          );\n        }\n      }\n      maxNumPrecinctsInLevel[r] = maxNumPrecincts;\n    }\n    l = 0;\n    r = 0;\n    c = 0;\n    p = 0;\n\n    this.nextPacket = function JpxImage_nextPacket() {\n      // Section B.12.1.3 Resolution-position-component-layer\n      for (; r <= maxDecompositionLevelsCount; r++) {\n        for (; p < maxNumPrecinctsInLevel[r]; p++) {\n          for (; c < componentsCount; c++) {\n            const component = tile.components[c];\n            if (r > component.codingStyleParameters.decompositionLevelsCount) {\n              continue;\n            }\n            var resolution = component.resolutions[r];\n            var numprecincts = resolution.precinctParameters.numprecincts;\n            if (p >= numprecincts) {\n              continue;\n            }\n            for (; l < layersCount; ) {\n              var packet = createPacket(resolution, p, l);\n              l++;\n              return packet;\n            }\n            l = 0;\n          }\n          c = 0;\n        }\n        p = 0;\n      }\n      throw new JpxError(\"Out of packets\");\n    };\n  }\n  function PositionComponentResolutionLayerIterator(context) {\n    var siz = context.SIZ;\n    var tileIndex = context.currentTile.index;\n    var tile = context.tiles[tileIndex];\n    var layersCount = tile.codingStyleDefaultParameters.layersCount;\n    var componentsCount = siz.Csiz;\n    var precinctsSizes = getPrecinctSizesInImageScale(tile);\n    var precinctsIterationSizes = precinctsSizes;\n    var l = 0,\n      r = 0,\n      c = 0,\n      px = 0,\n      py = 0;\n\n    this.nextPacket = function JpxImage_nextPacket() {\n      // Section B.12.1.4 Position-component-resolution-layer\n      for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n        for (; px < precinctsIterationSizes.maxNumWide; px++) {\n          for (; c < componentsCount; c++) {\n            var component = tile.components[c];\n            var decompositionLevelsCount =\n              component.codingStyleParameters.decompositionLevelsCount;\n            for (; r <= decompositionLevelsCount; r++) {\n              var resolution = component.resolutions[r];\n              var sizeInImageScale =\n                precinctsSizes.components[c].resolutions[r];\n              var k = getPrecinctIndexIfExist(\n                px,\n                py,\n                sizeInImageScale,\n                precinctsIterationSizes,\n                resolution\n              );\n              if (k === null) {\n                continue;\n              }\n              for (; l < layersCount; ) {\n                var packet = createPacket(resolution, k, l);\n                l++;\n                return packet;\n              }\n              l = 0;\n            }\n            r = 0;\n          }\n          c = 0;\n        }\n        px = 0;\n      }\n      throw new JpxError(\"Out of packets\");\n    };\n  }\n  function ComponentPositionResolutionLayerIterator(context) {\n    var siz = context.SIZ;\n    var tileIndex = context.currentTile.index;\n    var tile = context.tiles[tileIndex];\n    var layersCount = tile.codingStyleDefaultParameters.layersCount;\n    var componentsCount = siz.Csiz;\n    var precinctsSizes = getPrecinctSizesInImageScale(tile);\n    var l = 0,\n      r = 0,\n      c = 0,\n      px = 0,\n      py = 0;\n\n    this.nextPacket = function JpxImage_nextPacket() {\n      // Section B.12.1.5 Component-position-resolution-layer\n      for (; c < componentsCount; ++c) {\n        var component = tile.components[c];\n        var precinctsIterationSizes = precinctsSizes.components[c];\n        var decompositionLevelsCount =\n          component.codingStyleParameters.decompositionLevelsCount;\n        for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n          for (; px < precinctsIterationSizes.maxNumWide; px++) {\n            for (; r <= decompositionLevelsCount; r++) {\n              var resolution = component.resolutions[r];\n              var sizeInImageScale = precinctsIterationSizes.resolutions[r];\n              var k = getPrecinctIndexIfExist(\n                px,\n                py,\n                sizeInImageScale,\n                precinctsIterationSizes,\n                resolution\n              );\n              if (k === null) {\n                continue;\n              }\n              for (; l < layersCount; ) {\n                var packet = createPacket(resolution, k, l);\n                l++;\n                return packet;\n              }\n              l = 0;\n            }\n            r = 0;\n          }\n          px = 0;\n        }\n        py = 0;\n      }\n      throw new JpxError(\"Out of packets\");\n    };\n  }\n  function getPrecinctIndexIfExist(\n    pxIndex,\n    pyIndex,\n    sizeInImageScale,\n    precinctIterationSizes,\n    resolution\n  ) {\n    var posX = pxIndex * precinctIterationSizes.minWidth;\n    var posY = pyIndex * precinctIterationSizes.minHeight;\n    if (\n      posX % sizeInImageScale.width !== 0 ||\n      posY % sizeInImageScale.height !== 0\n    ) {\n      return null;\n    }\n    var startPrecinctRowIndex =\n      (posY / sizeInImageScale.width) *\n      resolution.precinctParameters.numprecinctswide;\n    return posX / sizeInImageScale.height + startPrecinctRowIndex;\n  }\n  function getPrecinctSizesInImageScale(tile) {\n    var componentsCount = tile.components.length;\n    var minWidth = Number.MAX_VALUE;\n    var minHeight = Number.MAX_VALUE;\n    var maxNumWide = 0;\n    var maxNumHigh = 0;\n    var sizePerComponent = new Array(componentsCount);\n    for (var c = 0; c < componentsCount; c++) {\n      var component = tile.components[c];\n      var decompositionLevelsCount =\n        component.codingStyleParameters.decompositionLevelsCount;\n      var sizePerResolution = new Array(decompositionLevelsCount + 1);\n      var minWidthCurrentComponent = Number.MAX_VALUE;\n      var minHeightCurrentComponent = Number.MAX_VALUE;\n      var maxNumWideCurrentComponent = 0;\n      var maxNumHighCurrentComponent = 0;\n      var scale = 1;\n      for (var r = decompositionLevelsCount; r >= 0; --r) {\n        var resolution = component.resolutions[r];\n        var widthCurrentResolution =\n          scale * resolution.precinctParameters.precinctWidth;\n        var heightCurrentResolution =\n          scale * resolution.precinctParameters.precinctHeight;\n        minWidthCurrentComponent = Math.min(\n          minWidthCurrentComponent,\n          widthCurrentResolution\n        );\n        minHeightCurrentComponent = Math.min(\n          minHeightCurrentComponent,\n          heightCurrentResolution\n        );\n        maxNumWideCurrentComponent = Math.max(\n          maxNumWideCurrentComponent,\n          resolution.precinctParameters.numprecinctswide\n        );\n        maxNumHighCurrentComponent = Math.max(\n          maxNumHighCurrentComponent,\n          resolution.precinctParameters.numprecinctshigh\n        );\n        sizePerResolution[r] = {\n          width: widthCurrentResolution,\n          height: heightCurrentResolution,\n        };\n        scale <<= 1;\n      }\n      minWidth = Math.min(minWidth, minWidthCurrentComponent);\n      minHeight = Math.min(minHeight, minHeightCurrentComponent);\n      maxNumWide = Math.max(maxNumWide, maxNumWideCurrentComponent);\n      maxNumHigh = Math.max(maxNumHigh, maxNumHighCurrentComponent);\n      sizePerComponent[c] = {\n        resolutions: sizePerResolution,\n        minWidth: minWidthCurrentComponent,\n        minHeight: minHeightCurrentComponent,\n        maxNumWide: maxNumWideCurrentComponent,\n        maxNumHigh: maxNumHighCurrentComponent,\n      };\n    }\n    return {\n      components: sizePerComponent,\n      minWidth,\n      minHeight,\n      maxNumWide,\n      maxNumHigh,\n    };\n  }\n  function buildPackets(context) {\n    var siz = context.SIZ;\n    var tileIndex = context.currentTile.index;\n    var tile = context.tiles[tileIndex];\n    var componentsCount = siz.Csiz;\n    // Creating resolutions and sub-bands for each component\n    for (var c = 0; c < componentsCount; c++) {\n      var component = tile.components[c];\n      var decompositionLevelsCount =\n        component.codingStyleParameters.decompositionLevelsCount;\n      // Section B.5 Resolution levels and sub-bands\n      var resolutions = [];\n      var subbands = [];\n      for (var r = 0; r <= decompositionLevelsCount; r++) {\n        var blocksDimensions = getBlocksDimensions(context, component, r);\n        var resolution = {};\n        var scale = 1 << (decompositionLevelsCount - r);\n        resolution.trx0 = Math.ceil(component.tcx0 / scale);\n        resolution.try0 = Math.ceil(component.tcy0 / scale);\n        resolution.trx1 = Math.ceil(component.tcx1 / scale);\n        resolution.try1 = Math.ceil(component.tcy1 / scale);\n        resolution.resLevel = r;\n        buildPrecincts(context, resolution, blocksDimensions);\n        resolutions.push(resolution);\n\n        var subband;\n        if (r === 0) {\n          // one sub-band (LL) with last decomposition\n          subband = {};\n          subband.type = \"LL\";\n          subband.tbx0 = Math.ceil(component.tcx0 / scale);\n          subband.tby0 = Math.ceil(component.tcy0 / scale);\n          subband.tbx1 = Math.ceil(component.tcx1 / scale);\n          subband.tby1 = Math.ceil(component.tcy1 / scale);\n          subband.resolution = resolution;\n          buildCodeblocks(context, subband, blocksDimensions);\n          subbands.push(subband);\n          resolution.subbands = [subband];\n        } else {\n          var bscale = 1 << (decompositionLevelsCount - r + 1);\n          var resolutionSubbands = [];\n          // three sub-bands (HL, LH and HH) with rest of decompositions\n          subband = {};\n          subband.type = \"HL\";\n          subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);\n          subband.tby0 = Math.ceil(component.tcy0 / bscale);\n          subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);\n          subband.tby1 = Math.ceil(component.tcy1 / bscale);\n          subband.resolution = resolution;\n          buildCodeblocks(context, subband, blocksDimensions);\n          subbands.push(subband);\n          resolutionSubbands.push(subband);\n\n          subband = {};\n          subband.type = \"LH\";\n          subband.tbx0 = Math.ceil(component.tcx0 / bscale);\n          subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);\n          subband.tbx1 = Math.ceil(component.tcx1 / bscale);\n          subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);\n          subband.resolution = resolution;\n          buildCodeblocks(context, subband, blocksDimensions);\n          subbands.push(subband);\n          resolutionSubbands.push(subband);\n\n          subband = {};\n          subband.type = \"HH\";\n          subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);\n          subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);\n          subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);\n          subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);\n          subband.resolution = resolution;\n          buildCodeblocks(context, subband, blocksDimensions);\n          subbands.push(subband);\n          resolutionSubbands.push(subband);\n\n          resolution.subbands = resolutionSubbands;\n        }\n      }\n      component.resolutions = resolutions;\n      component.subbands = subbands;\n    }\n    // Generate the packets sequence\n    var progressionOrder = tile.codingStyleDefaultParameters.progressionOrder;\n    switch (progressionOrder) {\n      case 0:\n        tile.packetsIterator = new LayerResolutionComponentPositionIterator(\n          context\n        );\n        break;\n      case 1:\n        tile.packetsIterator = new ResolutionLayerComponentPositionIterator(\n          context\n        );\n        break;\n      case 2:\n        tile.packetsIterator = new ResolutionPositionComponentLayerIterator(\n          context\n        );\n        break;\n      case 3:\n        tile.packetsIterator = new PositionComponentResolutionLayerIterator(\n          context\n        );\n        break;\n      case 4:\n        tile.packetsIterator = new ComponentPositionResolutionLayerIterator(\n          context\n        );\n        break;\n      default:\n        throw new JpxError(`Unsupported progression order ${progressionOrder}`);\n    }\n  }\n  function parseTilePackets(context, data, offset, dataLength) {\n    var position = 0;\n    var buffer,\n      bufferSize = 0,\n      skipNextBit = false;\n    function readBits(count) {\n      while (bufferSize < count) {\n        var b = data[offset + position];\n        position++;\n        if (skipNextBit) {\n          buffer = (buffer << 7) | b;\n          bufferSize += 7;\n          skipNextBit = false;\n        } else {\n          buffer = (buffer << 8) | b;\n          bufferSize += 8;\n        }\n        if (b === 0xff) {\n          skipNextBit = true;\n        }\n      }\n      bufferSize -= count;\n      return (buffer >>> bufferSize) & ((1 << count) - 1);\n    }\n    function skipMarkerIfEqual(value) {\n      if (\n        data[offset + position - 1] === 0xff &&\n        data[offset + position] === value\n      ) {\n        skipBytes(1);\n        return true;\n      } else if (\n        data[offset + position] === 0xff &&\n        data[offset + position + 1] === value\n      ) {\n        skipBytes(2);\n        return true;\n      }\n      return false;\n    }\n    function skipBytes(count) {\n      position += count;\n    }\n    function alignToByte() {\n      bufferSize = 0;\n      if (skipNextBit) {\n        position++;\n        skipNextBit = false;\n      }\n    }\n    function readCodingpasses() {\n      if (readBits(1) === 0) {\n        return 1;\n      }\n      if (readBits(1) === 0) {\n        return 2;\n      }\n      var value = readBits(2);\n      if (value < 3) {\n        return value + 3;\n      }\n      value = readBits(5);\n      if (value < 31) {\n        return value + 6;\n      }\n      value = readBits(7);\n      return value + 37;\n    }\n    var tileIndex = context.currentTile.index;\n    var tile = context.tiles[tileIndex];\n    var sopMarkerUsed = context.COD.sopMarkerUsed;\n    var ephMarkerUsed = context.COD.ephMarkerUsed;\n    var packetsIterator = tile.packetsIterator;\n    while (position < dataLength) {\n      alignToByte();\n      if (sopMarkerUsed && skipMarkerIfEqual(0x91)) {\n        // Skip also marker segment length and packet sequence ID\n        skipBytes(4);\n      }\n      var packet = packetsIterator.nextPacket();\n      if (!readBits(1)) {\n        continue;\n      }\n      var layerNumber = packet.layerNumber;\n      var queue = [],\n        codeblock;\n      for (var i = 0, ii = packet.codeblocks.length; i < ii; i++) {\n        codeblock = packet.codeblocks[i];\n        var precinct = codeblock.precinct;\n        var codeblockColumn = codeblock.cbx - precinct.cbxMin;\n        var codeblockRow = codeblock.cby - precinct.cbyMin;\n        var codeblockIncluded = false;\n        var firstTimeInclusion = false;\n        var valueReady;\n        if (codeblock.included !== undefined) {\n          codeblockIncluded = !!readBits(1);\n        } else {\n          // reading inclusion tree\n          precinct = codeblock.precinct;\n          var inclusionTree, zeroBitPlanesTree;\n          if (precinct.inclusionTree !== undefined) {\n            inclusionTree = precinct.inclusionTree;\n          } else {\n            // building inclusion and zero bit-planes trees\n            var width = precinct.cbxMax - precinct.cbxMin + 1;\n            var height = precinct.cbyMax - precinct.cbyMin + 1;\n            inclusionTree = new InclusionTree(width, height, layerNumber);\n            zeroBitPlanesTree = new TagTree(width, height);\n            precinct.inclusionTree = inclusionTree;\n            precinct.zeroBitPlanesTree = zeroBitPlanesTree;\n          }\n\n          if (inclusionTree.reset(codeblockColumn, codeblockRow, layerNumber)) {\n            while (true) {\n              if (readBits(1)) {\n                valueReady = !inclusionTree.nextLevel();\n                if (valueReady) {\n                  codeblock.included = true;\n                  codeblockIncluded = firstTimeInclusion = true;\n                  break;\n                }\n              } else {\n                inclusionTree.incrementValue(layerNumber);\n                break;\n              }\n            }\n          }\n        }\n        if (!codeblockIncluded) {\n          continue;\n        }\n        if (firstTimeInclusion) {\n          zeroBitPlanesTree = precinct.zeroBitPlanesTree;\n          zeroBitPlanesTree.reset(codeblockColumn, codeblockRow);\n          while (true) {\n            if (readBits(1)) {\n              valueReady = !zeroBitPlanesTree.nextLevel();\n              if (valueReady) {\n                break;\n              }\n            } else {\n              zeroBitPlanesTree.incrementValue();\n            }\n          }\n          codeblock.zeroBitPlanes = zeroBitPlanesTree.value;\n        }\n        var codingpasses = readCodingpasses();\n        while (readBits(1)) {\n          codeblock.Lblock++;\n        }\n        var codingpassesLog2 = log2(codingpasses);\n        // rounding down log2\n        var bits =\n          (codingpasses < 1 << codingpassesLog2\n            ? codingpassesLog2 - 1\n            : codingpassesLog2) + codeblock.Lblock;\n        var codedDataLength = readBits(bits);\n        queue.push({\n          codeblock,\n          codingpasses,\n          dataLength: codedDataLength,\n        });\n      }\n      alignToByte();\n      if (ephMarkerUsed) {\n        skipMarkerIfEqual(0x92);\n      }\n      while (queue.length > 0) {\n        var packetItem = queue.shift();\n        codeblock = packetItem.codeblock;\n        if (codeblock.data === undefined) {\n          codeblock.data = [];\n        }\n        codeblock.data.push({\n          data,\n          start: offset + position,\n          end: offset + position + packetItem.dataLength,\n          codingpasses: packetItem.codingpasses,\n        });\n        position += packetItem.dataLength;\n      }\n    }\n    return position;\n  }\n  function copyCoefficients(\n    coefficients,\n    levelWidth,\n    levelHeight,\n    subband,\n    delta,\n    mb,\n    reversible,\n    segmentationSymbolUsed\n  ) {\n    var x0 = subband.tbx0;\n    var y0 = subband.tby0;\n    var width = subband.tbx1 - subband.tbx0;\n    var codeblocks = subband.codeblocks;\n    var right = subband.type.charAt(0) === \"H\" ? 1 : 0;\n    var bottom = subband.type.charAt(1) === \"H\" ? levelWidth : 0;\n\n    for (var i = 0, ii = codeblocks.length; i < ii; ++i) {\n      var codeblock = codeblocks[i];\n      var blockWidth = codeblock.tbx1_ - codeblock.tbx0_;\n      var blockHeight = codeblock.tby1_ - codeblock.tby0_;\n      if (blockWidth === 0 || blockHeight === 0) {\n        continue;\n      }\n      if (codeblock.data === undefined) {\n        continue;\n      }\n\n      var bitModel, currentCodingpassType;\n      bitModel = new BitModel(\n        blockWidth,\n        blockHeight,\n        codeblock.subbandType,\n        codeblock.zeroBitPlanes,\n        mb\n      );\n      currentCodingpassType = 2; // first bit plane starts from cleanup\n\n      // collect data\n      var data = codeblock.data,\n        totalLength = 0,\n        codingpasses = 0;\n      var j, jj, dataItem;\n      for (j = 0, jj = data.length; j < jj; j++) {\n        dataItem = data[j];\n        totalLength += dataItem.end - dataItem.start;\n        codingpasses += dataItem.codingpasses;\n      }\n      var encodedData = new Uint8Array(totalLength);\n      var position = 0;\n      for (j = 0, jj = data.length; j < jj; j++) {\n        dataItem = data[j];\n        var chunk = dataItem.data.subarray(dataItem.start, dataItem.end);\n        encodedData.set(chunk, position);\n        position += chunk.length;\n      }\n      // decoding the item\n      var decoder = new ArithmeticDecoder(encodedData, 0, totalLength);\n      bitModel.setDecoder(decoder);\n\n      for (j = 0; j < codingpasses; j++) {\n        switch (currentCodingpassType) {\n          case 0:\n            bitModel.runSignificancePropagationPass();\n            break;\n          case 1:\n            bitModel.runMagnitudeRefinementPass();\n            break;\n          case 2:\n            bitModel.runCleanupPass();\n            if (segmentationSymbolUsed) {\n              bitModel.checkSegmentationSymbol();\n            }\n            break;\n        }\n        currentCodingpassType = (currentCodingpassType + 1) % 3;\n      }\n\n      var offset = codeblock.tbx0_ - x0 + (codeblock.tby0_ - y0) * width;\n      var sign = bitModel.coefficentsSign;\n      var magnitude = bitModel.coefficentsMagnitude;\n      var bitsDecoded = bitModel.bitsDecoded;\n      var magnitudeCorrection = reversible ? 0 : 0.5;\n      var k, n, nb;\n      position = 0;\n      // Do the interleaving of Section F.3.3 here, so we do not need\n      // to copy later. LL level is not interleaved, just copied.\n      var interleave = subband.type !== \"LL\";\n      for (j = 0; j < blockHeight; j++) {\n        var row = (offset / width) | 0; // row in the non-interleaved subband\n        var levelOffset = 2 * row * (levelWidth - width) + right + bottom;\n        for (k = 0; k < blockWidth; k++) {\n          n = magnitude[position];\n          if (n !== 0) {\n            n = (n + magnitudeCorrection) * delta;\n            if (sign[position] !== 0) {\n              n = -n;\n            }\n            nb = bitsDecoded[position];\n            var pos = interleave ? levelOffset + (offset << 1) : offset;\n            if (reversible && nb >= mb) {\n              coefficients[pos] = n;\n            } else {\n              coefficients[pos] = n * (1 << (mb - nb));\n            }\n          }\n          offset++;\n          position++;\n        }\n        offset += width - blockWidth;\n      }\n    }\n  }\n  function transformTile(context, tile, c) {\n    var component = tile.components[c];\n    var codingStyleParameters = component.codingStyleParameters;\n    var quantizationParameters = component.quantizationParameters;\n    var decompositionLevelsCount =\n      codingStyleParameters.decompositionLevelsCount;\n    var spqcds = quantizationParameters.SPqcds;\n    var scalarExpounded = quantizationParameters.scalarExpounded;\n    var guardBits = quantizationParameters.guardBits;\n    var segmentationSymbolUsed = codingStyleParameters.segmentationSymbolUsed;\n    var precision = context.components[c].precision;\n\n    var reversible = codingStyleParameters.reversibleTransformation;\n    var transform = reversible\n      ? new ReversibleTransform()\n      : new IrreversibleTransform();\n\n    var subbandCoefficients = [];\n    var b = 0;\n    for (var i = 0; i <= decompositionLevelsCount; i++) {\n      var resolution = component.resolutions[i];\n\n      var width = resolution.trx1 - resolution.trx0;\n      var height = resolution.try1 - resolution.try0;\n      // Allocate space for the whole sublevel.\n      var coefficients = new Float32Array(width * height);\n\n      for (var j = 0, jj = resolution.subbands.length; j < jj; j++) {\n        var mu, epsilon;\n        if (!scalarExpounded) {\n          // formula E-5\n          mu = spqcds[0].mu;\n          epsilon = spqcds[0].epsilon + (i > 0 ? 1 - i : 0);\n        } else {\n          mu = spqcds[b].mu;\n          epsilon = spqcds[b].epsilon;\n          b++;\n        }\n\n        var subband = resolution.subbands[j];\n        var gainLog2 = SubbandsGainLog2[subband.type];\n\n        // calculate quantization coefficient (Section E.1.1.1)\n        var delta = reversible\n          ? 1\n          : 2 ** (precision + gainLog2 - epsilon) * (1 + mu / 2048);\n        var mb = guardBits + epsilon - 1;\n\n        // In the first resolution level, copyCoefficients will fill the\n        // whole array with coefficients. In the succeeding passes,\n        // copyCoefficients will consecutively fill in the values that belong\n        // to the interleaved positions of the HL, LH, and HH coefficients.\n        // The LL coefficients will then be interleaved in Transform.iterate().\n        copyCoefficients(\n          coefficients,\n          width,\n          height,\n          subband,\n          delta,\n          mb,\n          reversible,\n          segmentationSymbolUsed\n        );\n      }\n      subbandCoefficients.push({\n        width,\n        height,\n        items: coefficients,\n      });\n    }\n\n    var result = transform.calculate(\n      subbandCoefficients,\n      component.tcx0,\n      component.tcy0\n    );\n    return {\n      left: component.tcx0,\n      top: component.tcy0,\n      width: result.width,\n      height: result.height,\n      items: result.items,\n    };\n  }\n  function transformComponents(context) {\n    var siz = context.SIZ;\n    var components = context.components;\n    var componentsCount = siz.Csiz;\n    var resultImages = [];\n    for (var i = 0, ii = context.tiles.length; i < ii; i++) {\n      var tile = context.tiles[i];\n      var transformedTiles = [];\n      var c;\n      for (c = 0; c < componentsCount; c++) {\n        transformedTiles[c] = transformTile(context, tile, c);\n      }\n      var tile0 = transformedTiles[0];\n      var out = new Uint8ClampedArray(tile0.items.length * componentsCount);\n      var result = {\n        left: tile0.left,\n        top: tile0.top,\n        width: tile0.width,\n        height: tile0.height,\n        items: out,\n      };\n\n      // Section G.2.2 Inverse multi component transform\n      var shift, offset;\n      var pos = 0,\n        j,\n        jj,\n        y0,\n        y1,\n        y2;\n      if (tile.codingStyleDefaultParameters.multipleComponentTransform) {\n        var fourComponents = componentsCount === 4;\n        var y0items = transformedTiles[0].items;\n        var y1items = transformedTiles[1].items;\n        var y2items = transformedTiles[2].items;\n        var y3items = fourComponents ? transformedTiles[3].items : null;\n\n        // HACK: The multiple component transform formulas below assume that\n        // all components have the same precision. With this in mind, we\n        // compute shift and offset only once.\n        shift = components[0].precision - 8;\n        offset = (128 << shift) + 0.5;\n\n        var component0 = tile.components[0];\n        var alpha01 = componentsCount - 3;\n        jj = y0items.length;\n        if (!component0.codingStyleParameters.reversibleTransformation) {\n          // inverse irreversible multiple component transform\n          for (j = 0; j < jj; j++, pos += alpha01) {\n            y0 = y0items[j] + offset;\n            y1 = y1items[j];\n            y2 = y2items[j];\n            out[pos++] = (y0 + 1.402 * y2) >> shift;\n            out[pos++] = (y0 - 0.34413 * y1 - 0.71414 * y2) >> shift;\n            out[pos++] = (y0 + 1.772 * y1) >> shift;\n          }\n        } else {\n          // inverse reversible multiple component transform\n          for (j = 0; j < jj; j++, pos += alpha01) {\n            y0 = y0items[j] + offset;\n            y1 = y1items[j];\n            y2 = y2items[j];\n            const g = y0 - ((y2 + y1) >> 2);\n\n            out[pos++] = (g + y2) >> shift;\n            out[pos++] = g >> shift;\n            out[pos++] = (g + y1) >> shift;\n          }\n        }\n        if (fourComponents) {\n          for (j = 0, pos = 3; j < jj; j++, pos += 4) {\n            out[pos] = (y3items[j] + offset) >> shift;\n          }\n        }\n      } else {\n        // no multi-component transform\n        for (c = 0; c < componentsCount; c++) {\n          var items = transformedTiles[c].items;\n          shift = components[c].precision - 8;\n          offset = (128 << shift) + 0.5;\n          for (pos = c, j = 0, jj = items.length; j < jj; j++) {\n            out[pos] = (items[j] + offset) >> shift;\n            pos += componentsCount;\n          }\n        }\n      }\n      resultImages.push(result);\n    }\n    return resultImages;\n  }\n  function initializeTile(context, tileIndex) {\n    var siz = context.SIZ;\n    var componentsCount = siz.Csiz;\n    var tile = context.tiles[tileIndex];\n    for (var c = 0; c < componentsCount; c++) {\n      var component = tile.components[c];\n      var qcdOrQcc =\n        context.currentTile.QCC[c] !== undefined\n          ? context.currentTile.QCC[c]\n          : context.currentTile.QCD;\n      component.quantizationParameters = qcdOrQcc;\n      var codOrCoc =\n        context.currentTile.COC[c] !== undefined\n          ? context.currentTile.COC[c]\n          : context.currentTile.COD;\n      component.codingStyleParameters = codOrCoc;\n    }\n    tile.codingStyleDefaultParameters = context.currentTile.COD;\n  }\n\n  // Section B.10.2 Tag trees\n  var TagTree = (function TagTreeClosure() {\n    // eslint-disable-next-line no-shadow\n    function TagTree(width, height) {\n      var levelsLength = log2(Math.max(width, height)) + 1;\n      this.levels = [];\n      for (var i = 0; i < levelsLength; i++) {\n        var level = {\n          width,\n          height,\n          items: [],\n        };\n        this.levels.push(level);\n        width = Math.ceil(width / 2);\n        height = Math.ceil(height / 2);\n      }\n    }\n    TagTree.prototype = {\n      reset: function TagTree_reset(i, j) {\n        var currentLevel = 0,\n          value = 0,\n          level;\n        while (currentLevel < this.levels.length) {\n          level = this.levels[currentLevel];\n          var index = i + j * level.width;\n          if (level.items[index] !== undefined) {\n            value = level.items[index];\n            break;\n          }\n          level.index = index;\n          i >>= 1;\n          j >>= 1;\n          currentLevel++;\n        }\n        currentLevel--;\n        level = this.levels[currentLevel];\n        level.items[level.index] = value;\n        this.currentLevel = currentLevel;\n        delete this.value;\n      },\n      incrementValue: function TagTree_incrementValue() {\n        var level = this.levels[this.currentLevel];\n        level.items[level.index]++;\n      },\n      nextLevel: function TagTree_nextLevel() {\n        var currentLevel = this.currentLevel;\n        var level = this.levels[currentLevel];\n        var value = level.items[level.index];\n        currentLevel--;\n        if (currentLevel < 0) {\n          this.value = value;\n          return false;\n        }\n\n        this.currentLevel = currentLevel;\n        level = this.levels[currentLevel];\n        level.items[level.index] = value;\n        return true;\n      },\n    };\n    return TagTree;\n  })();\n\n  var InclusionTree = (function InclusionTreeClosure() {\n    // eslint-disable-next-line no-shadow\n    function InclusionTree(width, height, defaultValue) {\n      var levelsLength = log2(Math.max(width, height)) + 1;\n      this.levels = [];\n      for (var i = 0; i < levelsLength; i++) {\n        var items = new Uint8Array(width * height);\n        for (var j = 0, jj = items.length; j < jj; j++) {\n          items[j] = defaultValue;\n        }\n\n        var level = {\n          width,\n          height,\n          items,\n        };\n        this.levels.push(level);\n\n        width = Math.ceil(width / 2);\n        height = Math.ceil(height / 2);\n      }\n    }\n    InclusionTree.prototype = {\n      reset: function InclusionTree_reset(i, j, stopValue) {\n        var currentLevel = 0;\n        while (currentLevel < this.levels.length) {\n          var level = this.levels[currentLevel];\n          var index = i + j * level.width;\n          level.index = index;\n          var value = level.items[index];\n\n          if (value === 0xff) {\n            break;\n          }\n\n          if (value > stopValue) {\n            this.currentLevel = currentLevel;\n            // already know about this one, propagating the value to top levels\n            this.propagateValues();\n            return false;\n          }\n\n          i >>= 1;\n          j >>= 1;\n          currentLevel++;\n        }\n        this.currentLevel = currentLevel - 1;\n        return true;\n      },\n      incrementValue: function InclusionTree_incrementValue(stopValue) {\n        var level = this.levels[this.currentLevel];\n        level.items[level.index] = stopValue + 1;\n        this.propagateValues();\n      },\n      propagateValues: function InclusionTree_propagateValues() {\n        var levelIndex = this.currentLevel;\n        var level = this.levels[levelIndex];\n        var currentValue = level.items[level.index];\n        while (--levelIndex >= 0) {\n          level = this.levels[levelIndex];\n          level.items[level.index] = currentValue;\n        }\n      },\n      nextLevel: function InclusionTree_nextLevel() {\n        var currentLevel = this.currentLevel;\n        var level = this.levels[currentLevel];\n        var value = level.items[level.index];\n        level.items[level.index] = 0xff;\n        currentLevel--;\n        if (currentLevel < 0) {\n          return false;\n        }\n\n        this.currentLevel = currentLevel;\n        level = this.levels[currentLevel];\n        level.items[level.index] = value;\n        return true;\n      },\n    };\n    return InclusionTree;\n  })();\n\n  // Section D. Coefficient bit modeling\n  var BitModel = (function BitModelClosure() {\n    var UNIFORM_CONTEXT = 17;\n    var RUNLENGTH_CONTEXT = 18;\n    // Table D-1\n    // The index is binary presentation: 0dddvvhh, ddd - sum of Di (0..4),\n    // vv - sum of Vi (0..2), and hh - sum of Hi (0..2)\n    // prettier-ignore\n    var LLAndLHContextsLabel = new Uint8Array([\n      0, 5, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 1, 6, 8, 0, 3, 7, 8, 0, 4,\n      7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6,\n      8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8\n    ]);\n    // prettier-ignore\n    var HLContextLabel = new Uint8Array([\n      0, 3, 4, 0, 5, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 1, 3, 4, 0, 6, 7, 7, 0, 8,\n      8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3,\n      4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8\n    ]);\n    // prettier-ignore\n    var HHContextLabel = new Uint8Array([\n      0, 1, 2, 0, 1, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 3, 4, 5, 0, 4, 5, 5, 0, 5,\n      5, 5, 0, 0, 0, 0, 0, 6, 7, 7, 0, 7, 7, 7, 0, 7, 7, 7, 0, 0, 0, 0, 0, 8, 8,\n      8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 0, 0, 0, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8\n    ]);\n\n    // eslint-disable-next-line no-shadow\n    function BitModel(width, height, subband, zeroBitPlanes, mb) {\n      this.width = width;\n      this.height = height;\n\n      let contextLabelTable;\n      if (subband === \"HH\") {\n        contextLabelTable = HHContextLabel;\n      } else if (subband === \"HL\") {\n        contextLabelTable = HLContextLabel;\n      } else {\n        contextLabelTable = LLAndLHContextsLabel;\n      }\n      this.contextLabelTable = contextLabelTable;\n\n      var coefficientCount = width * height;\n\n      // coefficients outside the encoding region treated as insignificant\n      // add border state cells for significanceState\n      this.neighborsSignificance = new Uint8Array(coefficientCount);\n      this.coefficentsSign = new Uint8Array(coefficientCount);\n      let coefficentsMagnitude;\n      if (mb > 14) {\n        coefficentsMagnitude = new Uint32Array(coefficientCount);\n      } else if (mb > 6) {\n        coefficentsMagnitude = new Uint16Array(coefficientCount);\n      } else {\n        coefficentsMagnitude = new Uint8Array(coefficientCount);\n      }\n      this.coefficentsMagnitude = coefficentsMagnitude;\n      this.processingFlags = new Uint8Array(coefficientCount);\n\n      var bitsDecoded = new Uint8Array(coefficientCount);\n      if (zeroBitPlanes !== 0) {\n        for (var i = 0; i < coefficientCount; i++) {\n          bitsDecoded[i] = zeroBitPlanes;\n        }\n      }\n      this.bitsDecoded = bitsDecoded;\n\n      this.reset();\n    }\n\n    BitModel.prototype = {\n      setDecoder: function BitModel_setDecoder(decoder) {\n        this.decoder = decoder;\n      },\n      reset: function BitModel_reset() {\n        // We have 17 contexts that are accessed via context labels,\n        // plus the uniform and runlength context.\n        this.contexts = new Int8Array(19);\n\n        // Contexts are packed into 1 byte:\n        // highest 7 bits carry the index, lowest bit carries mps\n        this.contexts[0] = (4 << 1) | 0;\n        this.contexts[UNIFORM_CONTEXT] = (46 << 1) | 0;\n        this.contexts[RUNLENGTH_CONTEXT] = (3 << 1) | 0;\n      },\n      setNeighborsSignificance: function BitModel_setNeighborsSignificance(\n        row,\n        column,\n        index\n      ) {\n        var neighborsSignificance = this.neighborsSignificance;\n        var width = this.width,\n          height = this.height;\n        var left = column > 0;\n        var right = column + 1 < width;\n        var i;\n\n        if (row > 0) {\n          i = index - width;\n          if (left) {\n            neighborsSignificance[i - 1] += 0x10;\n          }\n          if (right) {\n            neighborsSignificance[i + 1] += 0x10;\n          }\n          neighborsSignificance[i] += 0x04;\n        }\n\n        if (row + 1 < height) {\n          i = index + width;\n          if (left) {\n            neighborsSignificance[i - 1] += 0x10;\n          }\n          if (right) {\n            neighborsSignificance[i + 1] += 0x10;\n          }\n          neighborsSignificance[i] += 0x04;\n        }\n\n        if (left) {\n          neighborsSignificance[index - 1] += 0x01;\n        }\n        if (right) {\n          neighborsSignificance[index + 1] += 0x01;\n        }\n        neighborsSignificance[index] |= 0x80;\n      },\n      runSignificancePropagationPass: function BitModel_runSignificancePropagationPass() {\n        var decoder = this.decoder;\n        var width = this.width,\n          height = this.height;\n        var coefficentsMagnitude = this.coefficentsMagnitude;\n        var coefficentsSign = this.coefficentsSign;\n        var neighborsSignificance = this.neighborsSignificance;\n        var processingFlags = this.processingFlags;\n        var contexts = this.contexts;\n        var labels = this.contextLabelTable;\n        var bitsDecoded = this.bitsDecoded;\n        var processedInverseMask = ~1;\n        var processedMask = 1;\n        var firstMagnitudeBitMask = 2;\n\n        for (var i0 = 0; i0 < height; i0 += 4) {\n          for (var j = 0; j < width; j++) {\n            var index = i0 * width + j;\n            for (var i1 = 0; i1 < 4; i1++, index += width) {\n              var i = i0 + i1;\n              if (i >= height) {\n                break;\n              }\n              // clear processed flag first\n              processingFlags[index] &= processedInverseMask;\n\n              if (\n                coefficentsMagnitude[index] ||\n                !neighborsSignificance[index]\n              ) {\n                continue;\n              }\n\n              var contextLabel = labels[neighborsSignificance[index]];\n              var decision = decoder.readBit(contexts, contextLabel);\n              if (decision) {\n                var sign = this.decodeSignBit(i, j, index);\n                coefficentsSign[index] = sign;\n                coefficentsMagnitude[index] = 1;\n                this.setNeighborsSignificance(i, j, index);\n                processingFlags[index] |= firstMagnitudeBitMask;\n              }\n              bitsDecoded[index]++;\n              processingFlags[index] |= processedMask;\n            }\n          }\n        }\n      },\n      decodeSignBit: function BitModel_decodeSignBit(row, column, index) {\n        var width = this.width,\n          height = this.height;\n        var coefficentsMagnitude = this.coefficentsMagnitude;\n        var coefficentsSign = this.coefficentsSign;\n        var contribution, sign0, sign1, significance1;\n        var contextLabel, decoded;\n\n        // calculate horizontal contribution\n        significance1 = column > 0 && coefficentsMagnitude[index - 1] !== 0;\n        if (column + 1 < width && coefficentsMagnitude[index + 1] !== 0) {\n          sign1 = coefficentsSign[index + 1];\n          if (significance1) {\n            sign0 = coefficentsSign[index - 1];\n            contribution = 1 - sign1 - sign0;\n          } else {\n            contribution = 1 - sign1 - sign1;\n          }\n        } else if (significance1) {\n          sign0 = coefficentsSign[index - 1];\n          contribution = 1 - sign0 - sign0;\n        } else {\n          contribution = 0;\n        }\n        var horizontalContribution = 3 * contribution;\n\n        // calculate vertical contribution and combine with the horizontal\n        significance1 = row > 0 && coefficentsMagnitude[index - width] !== 0;\n        if (row + 1 < height && coefficentsMagnitude[index + width] !== 0) {\n          sign1 = coefficentsSign[index + width];\n          if (significance1) {\n            sign0 = coefficentsSign[index - width];\n            contribution = 1 - sign1 - sign0 + horizontalContribution;\n          } else {\n            contribution = 1 - sign1 - sign1 + horizontalContribution;\n          }\n        } else if (significance1) {\n          sign0 = coefficentsSign[index - width];\n          contribution = 1 - sign0 - sign0 + horizontalContribution;\n        } else {\n          contribution = horizontalContribution;\n        }\n\n        if (contribution >= 0) {\n          contextLabel = 9 + contribution;\n          decoded = this.decoder.readBit(this.contexts, contextLabel);\n        } else {\n          contextLabel = 9 - contribution;\n          decoded = this.decoder.readBit(this.contexts, contextLabel) ^ 1;\n        }\n        return decoded;\n      },\n      runMagnitudeRefinementPass: function BitModel_runMagnitudeRefinementPass() {\n        var decoder = this.decoder;\n        var width = this.width,\n          height = this.height;\n        var coefficentsMagnitude = this.coefficentsMagnitude;\n        var neighborsSignificance = this.neighborsSignificance;\n        var contexts = this.contexts;\n        var bitsDecoded = this.bitsDecoded;\n        var processingFlags = this.processingFlags;\n        var processedMask = 1;\n        var firstMagnitudeBitMask = 2;\n        var length = width * height;\n        var width4 = width * 4;\n\n        for (var index0 = 0, indexNext; index0 < length; index0 = indexNext) {\n          indexNext = Math.min(length, index0 + width4);\n          for (var j = 0; j < width; j++) {\n            for (var index = index0 + j; index < indexNext; index += width) {\n              // significant but not those that have just become\n              if (\n                !coefficentsMagnitude[index] ||\n                (processingFlags[index] & processedMask) !== 0\n              ) {\n                continue;\n              }\n\n              var contextLabel = 16;\n              if ((processingFlags[index] & firstMagnitudeBitMask) !== 0) {\n                processingFlags[index] ^= firstMagnitudeBitMask;\n                // first refinement\n                var significance = neighborsSignificance[index] & 127;\n                contextLabel = significance === 0 ? 15 : 14;\n              }\n\n              var bit = decoder.readBit(contexts, contextLabel);\n              coefficentsMagnitude[index] =\n                (coefficentsMagnitude[index] << 1) | bit;\n              bitsDecoded[index]++;\n              processingFlags[index] |= processedMask;\n            }\n          }\n        }\n      },\n      runCleanupPass: function BitModel_runCleanupPass() {\n        var decoder = this.decoder;\n        var width = this.width,\n          height = this.height;\n        var neighborsSignificance = this.neighborsSignificance;\n        var coefficentsMagnitude = this.coefficentsMagnitude;\n        var coefficentsSign = this.coefficentsSign;\n        var contexts = this.contexts;\n        var labels = this.contextLabelTable;\n        var bitsDecoded = this.bitsDecoded;\n        var processingFlags = this.processingFlags;\n        var processedMask = 1;\n        var firstMagnitudeBitMask = 2;\n        var oneRowDown = width;\n        var twoRowsDown = width * 2;\n        var threeRowsDown = width * 3;\n        var iNext;\n        for (var i0 = 0; i0 < height; i0 = iNext) {\n          iNext = Math.min(i0 + 4, height);\n          var indexBase = i0 * width;\n          var checkAllEmpty = i0 + 3 < height;\n          for (var j = 0; j < width; j++) {\n            var index0 = indexBase + j;\n            // using the property: labels[neighborsSignificance[index]] === 0\n            // when neighborsSignificance[index] === 0\n            var allEmpty =\n              checkAllEmpty &&\n              processingFlags[index0] === 0 &&\n              processingFlags[index0 + oneRowDown] === 0 &&\n              processingFlags[index0 + twoRowsDown] === 0 &&\n              processingFlags[index0 + threeRowsDown] === 0 &&\n              neighborsSignificance[index0] === 0 &&\n              neighborsSignificance[index0 + oneRowDown] === 0 &&\n              neighborsSignificance[index0 + twoRowsDown] === 0 &&\n              neighborsSignificance[index0 + threeRowsDown] === 0;\n            var i1 = 0,\n              index = index0;\n            var i = i0,\n              sign;\n            if (allEmpty) {\n              var hasSignificantCoefficent = decoder.readBit(\n                contexts,\n                RUNLENGTH_CONTEXT\n              );\n              if (!hasSignificantCoefficent) {\n                bitsDecoded[index0]++;\n                bitsDecoded[index0 + oneRowDown]++;\n                bitsDecoded[index0 + twoRowsDown]++;\n                bitsDecoded[index0 + threeRowsDown]++;\n                continue; // next column\n              }\n              i1 =\n                (decoder.readBit(contexts, UNIFORM_CONTEXT) << 1) |\n                decoder.readBit(contexts, UNIFORM_CONTEXT);\n              if (i1 !== 0) {\n                i = i0 + i1;\n                index += i1 * width;\n              }\n\n              sign = this.decodeSignBit(i, j, index);\n              coefficentsSign[index] = sign;\n              coefficentsMagnitude[index] = 1;\n              this.setNeighborsSignificance(i, j, index);\n              processingFlags[index] |= firstMagnitudeBitMask;\n\n              index = index0;\n              for (var i2 = i0; i2 <= i; i2++, index += width) {\n                bitsDecoded[index]++;\n              }\n\n              i1++;\n            }\n            for (i = i0 + i1; i < iNext; i++, index += width) {\n              if (\n                coefficentsMagnitude[index] ||\n                (processingFlags[index] & processedMask) !== 0\n              ) {\n                continue;\n              }\n\n              var contextLabel = labels[neighborsSignificance[index]];\n              var decision = decoder.readBit(contexts, contextLabel);\n              if (decision === 1) {\n                sign = this.decodeSignBit(i, j, index);\n                coefficentsSign[index] = sign;\n                coefficentsMagnitude[index] = 1;\n                this.setNeighborsSignificance(i, j, index);\n                processingFlags[index] |= firstMagnitudeBitMask;\n              }\n              bitsDecoded[index]++;\n            }\n          }\n        }\n      },\n      checkSegmentationSymbol: function BitModel_checkSegmentationSymbol() {\n        var decoder = this.decoder;\n        var contexts = this.contexts;\n        var symbol =\n          (decoder.readBit(contexts, UNIFORM_CONTEXT) << 3) |\n          (decoder.readBit(contexts, UNIFORM_CONTEXT) << 2) |\n          (decoder.readBit(contexts, UNIFORM_CONTEXT) << 1) |\n          decoder.readBit(contexts, UNIFORM_CONTEXT);\n        if (symbol !== 0xa) {\n          throw new JpxError(\"Invalid segmentation symbol\");\n        }\n      },\n    };\n\n    return BitModel;\n  })();\n\n  // Section F, Discrete wavelet transformation\n  var Transform = (function TransformClosure() {\n    // eslint-disable-next-line no-shadow\n    function Transform() {}\n\n    Transform.prototype.calculate = function transformCalculate(\n      subbands,\n      u0,\n      v0\n    ) {\n      var ll = subbands[0];\n      for (var i = 1, ii = subbands.length; i < ii; i++) {\n        ll = this.iterate(ll, subbands[i], u0, v0);\n      }\n      return ll;\n    };\n    Transform.prototype.extend = function extend(buffer, offset, size) {\n      // Section F.3.7 extending... using max extension of 4\n      var i1 = offset - 1,\n        j1 = offset + 1;\n      var i2 = offset + size - 2,\n        j2 = offset + size;\n      buffer[i1--] = buffer[j1++];\n      buffer[j2++] = buffer[i2--];\n      buffer[i1--] = buffer[j1++];\n      buffer[j2++] = buffer[i2--];\n      buffer[i1--] = buffer[j1++];\n      buffer[j2++] = buffer[i2--];\n      buffer[i1] = buffer[j1];\n      buffer[j2] = buffer[i2];\n    };\n    Transform.prototype.iterate = function Transform_iterate(\n      ll,\n      hl_lh_hh,\n      u0,\n      v0\n    ) {\n      var llWidth = ll.width,\n        llHeight = ll.height,\n        llItems = ll.items;\n      var width = hl_lh_hh.width;\n      var height = hl_lh_hh.height;\n      var items = hl_lh_hh.items;\n      var i, j, k, l, u, v;\n\n      // Interleave LL according to Section F.3.3\n      for (k = 0, i = 0; i < llHeight; i++) {\n        l = i * 2 * width;\n        for (j = 0; j < llWidth; j++, k++, l += 2) {\n          items[l] = llItems[k];\n        }\n      }\n      // The LL band is not needed anymore.\n      llItems = ll.items = null;\n\n      var bufferPadding = 4;\n      var rowBuffer = new Float32Array(width + 2 * bufferPadding);\n\n      // Section F.3.4 HOR_SR\n      if (width === 1) {\n        // if width = 1, when u0 even keep items as is, when odd divide by 2\n        if ((u0 & 1) !== 0) {\n          for (v = 0, k = 0; v < height; v++, k += width) {\n            items[k] *= 0.5;\n          }\n        }\n      } else {\n        for (v = 0, k = 0; v < height; v++, k += width) {\n          rowBuffer.set(items.subarray(k, k + width), bufferPadding);\n\n          this.extend(rowBuffer, bufferPadding, width);\n          this.filter(rowBuffer, bufferPadding, width);\n\n          items.set(\n            rowBuffer.subarray(bufferPadding, bufferPadding + width),\n            k\n          );\n        }\n      }\n\n      // Accesses to the items array can take long, because it may not fit into\n      // CPU cache and has to be fetched from main memory. Since subsequent\n      // accesses to the items array are not local when reading columns, we\n      // have a cache miss every time. To reduce cache misses, get up to\n      // 'numBuffers' items at a time and store them into the individual\n      // buffers. The colBuffers should be small enough to fit into CPU cache.\n      var numBuffers = 16;\n      var colBuffers = [];\n      for (i = 0; i < numBuffers; i++) {\n        colBuffers.push(new Float32Array(height + 2 * bufferPadding));\n      }\n      var b,\n        currentBuffer = 0;\n      ll = bufferPadding + height;\n\n      // Section F.3.5 VER_SR\n      if (height === 1) {\n        // if height = 1, when v0 even keep items as is, when odd divide by 2\n        if ((v0 & 1) !== 0) {\n          for (u = 0; u < width; u++) {\n            items[u] *= 0.5;\n          }\n        }\n      } else {\n        for (u = 0; u < width; u++) {\n          // if we ran out of buffers, copy several image columns at once\n          if (currentBuffer === 0) {\n            numBuffers = Math.min(width - u, numBuffers);\n            for (k = u, l = bufferPadding; l < ll; k += width, l++) {\n              for (b = 0; b < numBuffers; b++) {\n                colBuffers[b][l] = items[k + b];\n              }\n            }\n            currentBuffer = numBuffers;\n          }\n\n          currentBuffer--;\n          var buffer = colBuffers[currentBuffer];\n          this.extend(buffer, bufferPadding, height);\n          this.filter(buffer, bufferPadding, height);\n\n          // If this is last buffer in this group of buffers, flush all buffers.\n          if (currentBuffer === 0) {\n            k = u - numBuffers + 1;\n            for (l = bufferPadding; l < ll; k += width, l++) {\n              for (b = 0; b < numBuffers; b++) {\n                items[k + b] = colBuffers[b][l];\n              }\n            }\n          }\n        }\n      }\n\n      return {\n        width,\n        height,\n        items,\n      };\n    };\n    return Transform;\n  })();\n\n  // Section 3.8.2 Irreversible 9-7 filter\n  var IrreversibleTransform = (function IrreversibleTransformClosure() {\n    // eslint-disable-next-line no-shadow\n    function IrreversibleTransform() {\n      Transform.call(this);\n    }\n\n    IrreversibleTransform.prototype = Object.create(Transform.prototype);\n    IrreversibleTransform.prototype.filter = function irreversibleTransformFilter(\n      x,\n      offset,\n      length\n    ) {\n      var len = length >> 1;\n      offset = offset | 0;\n      var j, n, current, next;\n\n      var alpha = -1.586134342059924;\n      var beta = -0.052980118572961;\n      var gamma = 0.882911075530934;\n      var delta = 0.443506852043971;\n      var K = 1.230174104914001;\n      var K_ = 1 / K;\n\n      // step 1 is combined with step 3\n\n      // step 2\n      j = offset - 3;\n      for (n = len + 4; n--; j += 2) {\n        x[j] *= K_;\n      }\n\n      // step 1 & 3\n      j = offset - 2;\n      current = delta * x[j - 1];\n      for (n = len + 3; n--; j += 2) {\n        next = delta * x[j + 1];\n        x[j] = K * x[j] - current - next;\n        if (n--) {\n          j += 2;\n          current = delta * x[j + 1];\n          x[j] = K * x[j] - current - next;\n        } else {\n          break;\n        }\n      }\n\n      // step 4\n      j = offset - 1;\n      current = gamma * x[j - 1];\n      for (n = len + 2; n--; j += 2) {\n        next = gamma * x[j + 1];\n        x[j] -= current + next;\n        if (n--) {\n          j += 2;\n          current = gamma * x[j + 1];\n          x[j] -= current + next;\n        } else {\n          break;\n        }\n      }\n\n      // step 5\n      j = offset;\n      current = beta * x[j - 1];\n      for (n = len + 1; n--; j += 2) {\n        next = beta * x[j + 1];\n        x[j] -= current + next;\n        if (n--) {\n          j += 2;\n          current = beta * x[j + 1];\n          x[j] -= current + next;\n        } else {\n          break;\n        }\n      }\n\n      // step 6\n      if (len !== 0) {\n        j = offset + 1;\n        current = alpha * x[j - 1];\n        for (n = len; n--; j += 2) {\n          next = alpha * x[j + 1];\n          x[j] -= current + next;\n          if (n--) {\n            j += 2;\n            current = alpha * x[j + 1];\n            x[j] -= current + next;\n          } else {\n            break;\n          }\n        }\n      }\n    };\n\n    return IrreversibleTransform;\n  })();\n\n  // Section 3.8.1 Reversible 5-3 filter\n  var ReversibleTransform = (function ReversibleTransformClosure() {\n    // eslint-disable-next-line no-shadow\n    function ReversibleTransform() {\n      Transform.call(this);\n    }\n\n    ReversibleTransform.prototype = Object.create(Transform.prototype);\n    ReversibleTransform.prototype.filter = function reversibleTransformFilter(\n      x,\n      offset,\n      length\n    ) {\n      var len = length >> 1;\n      offset = offset | 0;\n      var j, n;\n\n      for (j = offset, n = len + 1; n--; j += 2) {\n        x[j] -= (x[j - 1] + x[j + 1] + 2) >> 2;\n      }\n\n      for (j = offset + 1, n = len; n--; j += 2) {\n        x[j] += (x[j - 1] + x[j + 1]) >> 1;\n      }\n    };\n\n    return ReversibleTransform;\n  })();\n\n  return JpxImage;\n})();\n\nexport { JpxImage };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  bytesToString,\n  FormatError,\n  PasswordException,\n  PasswordResponses,\n  stringToBytes,\n  unreachable,\n  utf8StringToString,\n  warn,\n} from \"../shared/util.js\";\nimport { isDict, isName, Name } from \"./primitives.js\";\nimport { DecryptStream } from \"./stream.js\";\n\nvar ARCFourCipher = (function ARCFourCipherClosure() {\n  // eslint-disable-next-line no-shadow\n  function ARCFourCipher(key) {\n    this.a = 0;\n    this.b = 0;\n    var s = new Uint8Array(256);\n    var i,\n      j = 0,\n      tmp,\n      keyLength = key.length;\n    for (i = 0; i < 256; ++i) {\n      s[i] = i;\n    }\n    for (i = 0; i < 256; ++i) {\n      tmp = s[i];\n      j = (j + tmp + key[i % keyLength]) & 0xff;\n      s[i] = s[j];\n      s[j] = tmp;\n    }\n    this.s = s;\n  }\n\n  ARCFourCipher.prototype = {\n    encryptBlock: function ARCFourCipher_encryptBlock(data) {\n      var i,\n        n = data.length,\n        tmp,\n        tmp2;\n      var a = this.a,\n        b = this.b,\n        s = this.s;\n      var output = new Uint8Array(n);\n      for (i = 0; i < n; ++i) {\n        a = (a + 1) & 0xff;\n        tmp = s[a];\n        b = (b + tmp) & 0xff;\n        tmp2 = s[b];\n        s[a] = tmp2;\n        s[b] = tmp;\n        output[i] = data[i] ^ s[(tmp + tmp2) & 0xff];\n      }\n      this.a = a;\n      this.b = b;\n      return output;\n    },\n  };\n  ARCFourCipher.prototype.decryptBlock = ARCFourCipher.prototype.encryptBlock;\n  ARCFourCipher.prototype.encrypt = ARCFourCipher.prototype.encryptBlock;\n\n  return ARCFourCipher;\n})();\n\nvar calculateMD5 = (function calculateMD5Closure() {\n  // prettier-ignore\n  var r = new Uint8Array([\n    7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22,\n    5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20,\n    4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23,\n    6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21]);\n\n  // prettier-ignore\n  var k = new Int32Array([\n    -680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426,\n    -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162,\n    1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632,\n    643717713, -373897302, -701558691, 38016083, -660478335, -405537848,\n    568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784,\n    1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556,\n    -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222,\n    -722521979, 76029189, -640364487, -421815835, 530742520, -995338651,\n    -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606,\n    -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649,\n    -145523070, -1120210379, 718787259, -343485551]);\n\n  function hash(data, offset, length) {\n    var h0 = 1732584193,\n      h1 = -271733879,\n      h2 = -1732584194,\n      h3 = 271733878;\n    // pre-processing\n    var paddedLength = (length + 72) & ~63; // data + 9 extra bytes\n    var padded = new Uint8Array(paddedLength);\n    var i, j, n;\n    for (i = 0; i < length; ++i) {\n      padded[i] = data[offset++];\n    }\n    padded[i++] = 0x80;\n    n = paddedLength - 8;\n    while (i < n) {\n      padded[i++] = 0;\n    }\n    padded[i++] = (length << 3) & 0xff;\n    padded[i++] = (length >> 5) & 0xff;\n    padded[i++] = (length >> 13) & 0xff;\n    padded[i++] = (length >> 21) & 0xff;\n    padded[i++] = (length >>> 29) & 0xff;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    var w = new Int32Array(16);\n    for (i = 0; i < paddedLength; ) {\n      for (j = 0; j < 16; ++j, i += 4) {\n        w[j] =\n          padded[i] |\n          (padded[i + 1] << 8) |\n          (padded[i + 2] << 16) |\n          (padded[i + 3] << 24);\n      }\n      var a = h0,\n        b = h1,\n        c = h2,\n        d = h3,\n        f,\n        g;\n      for (j = 0; j < 64; ++j) {\n        if (j < 16) {\n          f = (b & c) | (~b & d);\n          g = j;\n        } else if (j < 32) {\n          f = (d & b) | (~d & c);\n          g = (5 * j + 1) & 15;\n        } else if (j < 48) {\n          f = b ^ c ^ d;\n          g = (3 * j + 5) & 15;\n        } else {\n          f = c ^ (b | ~d);\n          g = (7 * j) & 15;\n        }\n        var tmp = d,\n          rotateArg = (a + f + k[j] + w[g]) | 0,\n          rotate = r[j];\n        d = c;\n        c = b;\n        b = (b + ((rotateArg << rotate) | (rotateArg >>> (32 - rotate)))) | 0;\n        a = tmp;\n      }\n      h0 = (h0 + a) | 0;\n      h1 = (h1 + b) | 0;\n      h2 = (h2 + c) | 0;\n      h3 = (h3 + d) | 0;\n    }\n    // prettier-ignore\n    return new Uint8Array([\n      h0 & 0xFF, (h0 >> 8) & 0xFF, (h0 >> 16) & 0xFF, (h0 >>> 24) & 0xFF,\n      h1 & 0xFF, (h1 >> 8) & 0xFF, (h1 >> 16) & 0xFF, (h1 >>> 24) & 0xFF,\n      h2 & 0xFF, (h2 >> 8) & 0xFF, (h2 >> 16) & 0xFF, (h2 >>> 24) & 0xFF,\n      h3 & 0xFF, (h3 >> 8) & 0xFF, (h3 >> 16) & 0xFF, (h3 >>> 24) & 0xFF\n    ]);\n  }\n\n  return hash;\n})();\nvar Word64 = (function Word64Closure() {\n  // eslint-disable-next-line no-shadow\n  function Word64(highInteger, lowInteger) {\n    this.high = highInteger | 0;\n    this.low = lowInteger | 0;\n  }\n  Word64.prototype = {\n    and: function Word64_and(word) {\n      this.high &= word.high;\n      this.low &= word.low;\n    },\n    xor: function Word64_xor(word) {\n      this.high ^= word.high;\n      this.low ^= word.low;\n    },\n\n    or: function Word64_or(word) {\n      this.high |= word.high;\n      this.low |= word.low;\n    },\n\n    shiftRight: function Word64_shiftRight(places) {\n      if (places >= 32) {\n        this.low = (this.high >>> (places - 32)) | 0;\n        this.high = 0;\n      } else {\n        this.low = (this.low >>> places) | (this.high << (32 - places));\n        this.high = (this.high >>> places) | 0;\n      }\n    },\n\n    shiftLeft: function Word64_shiftLeft(places) {\n      if (places >= 32) {\n        this.high = this.low << (places - 32);\n        this.low = 0;\n      } else {\n        this.high = (this.high << places) | (this.low >>> (32 - places));\n        this.low = this.low << places;\n      }\n    },\n\n    rotateRight: function Word64_rotateRight(places) {\n      var low, high;\n      if (places & 32) {\n        high = this.low;\n        low = this.high;\n      } else {\n        low = this.low;\n        high = this.high;\n      }\n      places &= 31;\n      this.low = (low >>> places) | (high << (32 - places));\n      this.high = (high >>> places) | (low << (32 - places));\n    },\n\n    not: function Word64_not() {\n      this.high = ~this.high;\n      this.low = ~this.low;\n    },\n\n    add: function Word64_add(word) {\n      var lowAdd = (this.low >>> 0) + (word.low >>> 0);\n      var highAdd = (this.high >>> 0) + (word.high >>> 0);\n      if (lowAdd > 0xffffffff) {\n        highAdd += 1;\n      }\n      this.low = lowAdd | 0;\n      this.high = highAdd | 0;\n    },\n\n    copyTo: function Word64_copyTo(bytes, offset) {\n      bytes[offset] = (this.high >>> 24) & 0xff;\n      bytes[offset + 1] = (this.high >> 16) & 0xff;\n      bytes[offset + 2] = (this.high >> 8) & 0xff;\n      bytes[offset + 3] = this.high & 0xff;\n      bytes[offset + 4] = (this.low >>> 24) & 0xff;\n      bytes[offset + 5] = (this.low >> 16) & 0xff;\n      bytes[offset + 6] = (this.low >> 8) & 0xff;\n      bytes[offset + 7] = this.low & 0xff;\n    },\n\n    assign: function Word64_assign(word) {\n      this.high = word.high;\n      this.low = word.low;\n    },\n  };\n  return Word64;\n})();\n\nvar calculateSHA256 = (function calculateSHA256Closure() {\n  function rotr(x, n) {\n    return (x >>> n) | (x << (32 - n));\n  }\n\n  function ch(x, y, z) {\n    return (x & y) ^ (~x & z);\n  }\n\n  function maj(x, y, z) {\n    return (x & y) ^ (x & z) ^ (y & z);\n  }\n\n  function sigma(x) {\n    return rotr(x, 2) ^ rotr(x, 13) ^ rotr(x, 22);\n  }\n\n  function sigmaPrime(x) {\n    return rotr(x, 6) ^ rotr(x, 11) ^ rotr(x, 25);\n  }\n\n  function littleSigma(x) {\n    return rotr(x, 7) ^ rotr(x, 18) ^ (x >>> 3);\n  }\n\n  function littleSigmaPrime(x) {\n    return rotr(x, 17) ^ rotr(x, 19) ^ (x >>> 10);\n  }\n\n  // prettier-ignore\n  var k = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n           0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n           0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n           0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n           0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n           0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n           0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n           0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n           0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n           0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n           0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n           0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n           0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n           0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n           0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n           0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2];\n\n  function hash(data, offset, length) {\n    // initial hash values\n    var h0 = 0x6a09e667,\n      h1 = 0xbb67ae85,\n      h2 = 0x3c6ef372,\n      h3 = 0xa54ff53a,\n      h4 = 0x510e527f,\n      h5 = 0x9b05688c,\n      h6 = 0x1f83d9ab,\n      h7 = 0x5be0cd19;\n    // pre-processing\n    var paddedLength = Math.ceil((length + 9) / 64) * 64;\n    var padded = new Uint8Array(paddedLength);\n    var i, j, n;\n    for (i = 0; i < length; ++i) {\n      padded[i] = data[offset++];\n    }\n    padded[i++] = 0x80;\n    n = paddedLength - 8;\n    while (i < n) {\n      padded[i++] = 0;\n    }\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = (length >>> 29) & 0xff;\n    padded[i++] = (length >> 21) & 0xff;\n    padded[i++] = (length >> 13) & 0xff;\n    padded[i++] = (length >> 5) & 0xff;\n    padded[i++] = (length << 3) & 0xff;\n    var w = new Uint32Array(64);\n    // for each 512 bit block\n    for (i = 0; i < paddedLength; ) {\n      for (j = 0; j < 16; ++j) {\n        w[j] =\n          (padded[i] << 24) |\n          (padded[i + 1] << 16) |\n          (padded[i + 2] << 8) |\n          padded[i + 3];\n        i += 4;\n      }\n\n      for (j = 16; j < 64; ++j) {\n        w[j] =\n          (littleSigmaPrime(w[j - 2]) +\n            w[j - 7] +\n            littleSigma(w[j - 15]) +\n            w[j - 16]) |\n          0;\n      }\n      var a = h0,\n        b = h1,\n        c = h2,\n        d = h3,\n        e = h4,\n        f = h5,\n        g = h6,\n        h = h7,\n        t1,\n        t2;\n      for (j = 0; j < 64; ++j) {\n        t1 = h + sigmaPrime(e) + ch(e, f, g) + k[j] + w[j];\n        t2 = sigma(a) + maj(a, b, c);\n        h = g;\n        g = f;\n        f = e;\n        e = (d + t1) | 0;\n        d = c;\n        c = b;\n        b = a;\n        a = (t1 + t2) | 0;\n      }\n      h0 = (h0 + a) | 0;\n      h1 = (h1 + b) | 0;\n      h2 = (h2 + c) | 0;\n      h3 = (h3 + d) | 0;\n      h4 = (h4 + e) | 0;\n      h5 = (h5 + f) | 0;\n      h6 = (h6 + g) | 0;\n      h7 = (h7 + h) | 0;\n    }\n    // prettier-ignore\n    return new Uint8Array([\n      (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, (h0) & 0xFF,\n      (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, (h1) & 0xFF,\n      (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, (h2) & 0xFF,\n      (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, (h3) & 0xFF,\n      (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, (h4) & 0xFF,\n      (h5 >> 24) & 0xFF, (h5 >> 16) & 0xFF, (h5 >> 8) & 0xFF, (h5) & 0xFF,\n      (h6 >> 24) & 0xFF, (h6 >> 16) & 0xFF, (h6 >> 8) & 0xFF, (h6) & 0xFF,\n      (h7 >> 24) & 0xFF, (h7 >> 16) & 0xFF, (h7 >> 8) & 0xFF, (h7) & 0xFF\n    ]);\n  }\n\n  return hash;\n})();\n\nvar calculateSHA512 = (function calculateSHA512Closure() {\n  function ch(result, x, y, z, tmp) {\n    result.assign(x);\n    result.and(y);\n    tmp.assign(x);\n    tmp.not();\n    tmp.and(z);\n    result.xor(tmp);\n  }\n\n  function maj(result, x, y, z, tmp) {\n    result.assign(x);\n    result.and(y);\n    tmp.assign(x);\n    tmp.and(z);\n    result.xor(tmp);\n    tmp.assign(y);\n    tmp.and(z);\n    result.xor(tmp);\n  }\n\n  function sigma(result, x, tmp) {\n    result.assign(x);\n    result.rotateRight(28);\n    tmp.assign(x);\n    tmp.rotateRight(34);\n    result.xor(tmp);\n    tmp.assign(x);\n    tmp.rotateRight(39);\n    result.xor(tmp);\n  }\n\n  function sigmaPrime(result, x, tmp) {\n    result.assign(x);\n    result.rotateRight(14);\n    tmp.assign(x);\n    tmp.rotateRight(18);\n    result.xor(tmp);\n    tmp.assign(x);\n    tmp.rotateRight(41);\n    result.xor(tmp);\n  }\n\n  function littleSigma(result, x, tmp) {\n    result.assign(x);\n    result.rotateRight(1);\n    tmp.assign(x);\n    tmp.rotateRight(8);\n    result.xor(tmp);\n    tmp.assign(x);\n    tmp.shiftRight(7);\n    result.xor(tmp);\n  }\n\n  function littleSigmaPrime(result, x, tmp) {\n    result.assign(x);\n    result.rotateRight(19);\n    tmp.assign(x);\n    tmp.rotateRight(61);\n    result.xor(tmp);\n    tmp.assign(x);\n    tmp.shiftRight(6);\n    result.xor(tmp);\n  }\n\n  // prettier-ignore\n  var k = [\n    new Word64(0x428a2f98, 0xd728ae22), new Word64(0x71374491, 0x23ef65cd),\n    new Word64(0xb5c0fbcf, 0xec4d3b2f), new Word64(0xe9b5dba5, 0x8189dbbc),\n    new Word64(0x3956c25b, 0xf348b538), new Word64(0x59f111f1, 0xb605d019),\n    new Word64(0x923f82a4, 0xaf194f9b), new Word64(0xab1c5ed5, 0xda6d8118),\n    new Word64(0xd807aa98, 0xa3030242), new Word64(0x12835b01, 0x45706fbe),\n    new Word64(0x243185be, 0x4ee4b28c), new Word64(0x550c7dc3, 0xd5ffb4e2),\n    new Word64(0x72be5d74, 0xf27b896f), new Word64(0x80deb1fe, 0x3b1696b1),\n    new Word64(0x9bdc06a7, 0x25c71235), new Word64(0xc19bf174, 0xcf692694),\n    new Word64(0xe49b69c1, 0x9ef14ad2), new Word64(0xefbe4786, 0x384f25e3),\n    new Word64(0x0fc19dc6, 0x8b8cd5b5), new Word64(0x240ca1cc, 0x77ac9c65),\n    new Word64(0x2de92c6f, 0x592b0275), new Word64(0x4a7484aa, 0x6ea6e483),\n    new Word64(0x5cb0a9dc, 0xbd41fbd4), new Word64(0x76f988da, 0x831153b5),\n    new Word64(0x983e5152, 0xee66dfab), new Word64(0xa831c66d, 0x2db43210),\n    new Word64(0xb00327c8, 0x98fb213f), new Word64(0xbf597fc7, 0xbeef0ee4),\n    new Word64(0xc6e00bf3, 0x3da88fc2), new Word64(0xd5a79147, 0x930aa725),\n    new Word64(0x06ca6351, 0xe003826f), new Word64(0x14292967, 0x0a0e6e70),\n    new Word64(0x27b70a85, 0x46d22ffc), new Word64(0x2e1b2138, 0x5c26c926),\n    new Word64(0x4d2c6dfc, 0x5ac42aed), new Word64(0x53380d13, 0x9d95b3df),\n    new Word64(0x650a7354, 0x8baf63de), new Word64(0x766a0abb, 0x3c77b2a8),\n    new Word64(0x81c2c92e, 0x47edaee6), new Word64(0x92722c85, 0x1482353b),\n    new Word64(0xa2bfe8a1, 0x4cf10364), new Word64(0xa81a664b, 0xbc423001),\n    new Word64(0xc24b8b70, 0xd0f89791), new Word64(0xc76c51a3, 0x0654be30),\n    new Word64(0xd192e819, 0xd6ef5218), new Word64(0xd6990624, 0x5565a910),\n    new Word64(0xf40e3585, 0x5771202a), new Word64(0x106aa070, 0x32bbd1b8),\n    new Word64(0x19a4c116, 0xb8d2d0c8), new Word64(0x1e376c08, 0x5141ab53),\n    new Word64(0x2748774c, 0xdf8eeb99), new Word64(0x34b0bcb5, 0xe19b48a8),\n    new Word64(0x391c0cb3, 0xc5c95a63), new Word64(0x4ed8aa4a, 0xe3418acb),\n    new Word64(0x5b9cca4f, 0x7763e373), new Word64(0x682e6ff3, 0xd6b2b8a3),\n    new Word64(0x748f82ee, 0x5defb2fc), new Word64(0x78a5636f, 0x43172f60),\n    new Word64(0x84c87814, 0xa1f0ab72), new Word64(0x8cc70208, 0x1a6439ec),\n    new Word64(0x90befffa, 0x23631e28), new Word64(0xa4506ceb, 0xde82bde9),\n    new Word64(0xbef9a3f7, 0xb2c67915), new Word64(0xc67178f2, 0xe372532b),\n    new Word64(0xca273ece, 0xea26619c), new Word64(0xd186b8c7, 0x21c0c207),\n    new Word64(0xeada7dd6, 0xcde0eb1e), new Word64(0xf57d4f7f, 0xee6ed178),\n    new Word64(0x06f067aa, 0x72176fba), new Word64(0x0a637dc5, 0xa2c898a6),\n    new Word64(0x113f9804, 0xbef90dae), new Word64(0x1b710b35, 0x131c471b),\n    new Word64(0x28db77f5, 0x23047d84), new Word64(0x32caab7b, 0x40c72493),\n    new Word64(0x3c9ebe0a, 0x15c9bebc), new Word64(0x431d67c4, 0x9c100d4c),\n    new Word64(0x4cc5d4be, 0xcb3e42b6), new Word64(0x597f299c, 0xfc657e2a),\n    new Word64(0x5fcb6fab, 0x3ad6faec), new Word64(0x6c44198c, 0x4a475817)];\n\n  function hash(data, offset, length, mode384) {\n    mode384 = !!mode384;\n    // initial hash values\n    var h0, h1, h2, h3, h4, h5, h6, h7;\n    if (!mode384) {\n      h0 = new Word64(0x6a09e667, 0xf3bcc908);\n      h1 = new Word64(0xbb67ae85, 0x84caa73b);\n      h2 = new Word64(0x3c6ef372, 0xfe94f82b);\n      h3 = new Word64(0xa54ff53a, 0x5f1d36f1);\n      h4 = new Word64(0x510e527f, 0xade682d1);\n      h5 = new Word64(0x9b05688c, 0x2b3e6c1f);\n      h6 = new Word64(0x1f83d9ab, 0xfb41bd6b);\n      h7 = new Word64(0x5be0cd19, 0x137e2179);\n    } else {\n      // SHA384 is exactly the same\n      // except with different starting values and a trimmed result\n      h0 = new Word64(0xcbbb9d5d, 0xc1059ed8);\n      h1 = new Word64(0x629a292a, 0x367cd507);\n      h2 = new Word64(0x9159015a, 0x3070dd17);\n      h3 = new Word64(0x152fecd8, 0xf70e5939);\n      h4 = new Word64(0x67332667, 0xffc00b31);\n      h5 = new Word64(0x8eb44a87, 0x68581511);\n      h6 = new Word64(0xdb0c2e0d, 0x64f98fa7);\n      h7 = new Word64(0x47b5481d, 0xbefa4fa4);\n    }\n\n    // pre-processing\n    var paddedLength = Math.ceil((length + 17) / 128) * 128;\n    var padded = new Uint8Array(paddedLength);\n    var i, j, n;\n    for (i = 0; i < length; ++i) {\n      padded[i] = data[offset++];\n    }\n    padded[i++] = 0x80;\n    n = paddedLength - 16;\n    while (i < n) {\n      padded[i++] = 0;\n    }\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = (length >>> 29) & 0xff;\n    padded[i++] = (length >> 21) & 0xff;\n    padded[i++] = (length >> 13) & 0xff;\n    padded[i++] = (length >> 5) & 0xff;\n    padded[i++] = (length << 3) & 0xff;\n\n    var w = new Array(80);\n    for (i = 0; i < 80; i++) {\n      w[i] = new Word64(0, 0);\n    }\n    var a = new Word64(0, 0),\n      b = new Word64(0, 0),\n      c = new Word64(0, 0);\n    var d = new Word64(0, 0),\n      e = new Word64(0, 0),\n      f = new Word64(0, 0);\n    var g = new Word64(0, 0),\n      h = new Word64(0, 0);\n    var t1 = new Word64(0, 0),\n      t2 = new Word64(0, 0);\n    var tmp1 = new Word64(0, 0),\n      tmp2 = new Word64(0, 0),\n      tmp3;\n\n    // for each 1024 bit block\n    for (i = 0; i < paddedLength; ) {\n      for (j = 0; j < 16; ++j) {\n        w[j].high =\n          (padded[i] << 24) |\n          (padded[i + 1] << 16) |\n          (padded[i + 2] << 8) |\n          padded[i + 3];\n        w[j].low =\n          (padded[i + 4] << 24) |\n          (padded[i + 5] << 16) |\n          (padded[i + 6] << 8) |\n          padded[i + 7];\n        i += 8;\n      }\n      for (j = 16; j < 80; ++j) {\n        tmp3 = w[j];\n        littleSigmaPrime(tmp3, w[j - 2], tmp2);\n        tmp3.add(w[j - 7]);\n        littleSigma(tmp1, w[j - 15], tmp2);\n        tmp3.add(tmp1);\n        tmp3.add(w[j - 16]);\n      }\n\n      a.assign(h0);\n      b.assign(h1);\n      c.assign(h2);\n      d.assign(h3);\n      e.assign(h4);\n      f.assign(h5);\n      g.assign(h6);\n      h.assign(h7);\n      for (j = 0; j < 80; ++j) {\n        t1.assign(h);\n        sigmaPrime(tmp1, e, tmp2);\n        t1.add(tmp1);\n        ch(tmp1, e, f, g, tmp2);\n        t1.add(tmp1);\n        t1.add(k[j]);\n        t1.add(w[j]);\n\n        sigma(t2, a, tmp2);\n        maj(tmp1, a, b, c, tmp2);\n        t2.add(tmp1);\n\n        tmp3 = h;\n        h = g;\n        g = f;\n        f = e;\n        d.add(t1);\n        e = d;\n        d = c;\n        c = b;\n        b = a;\n        tmp3.assign(t1);\n        tmp3.add(t2);\n        a = tmp3;\n      }\n      h0.add(a);\n      h1.add(b);\n      h2.add(c);\n      h3.add(d);\n      h4.add(e);\n      h5.add(f);\n      h6.add(g);\n      h7.add(h);\n    }\n\n    var result;\n    if (!mode384) {\n      result = new Uint8Array(64);\n      h0.copyTo(result, 0);\n      h1.copyTo(result, 8);\n      h2.copyTo(result, 16);\n      h3.copyTo(result, 24);\n      h4.copyTo(result, 32);\n      h5.copyTo(result, 40);\n      h6.copyTo(result, 48);\n      h7.copyTo(result, 56);\n    } else {\n      result = new Uint8Array(48);\n      h0.copyTo(result, 0);\n      h1.copyTo(result, 8);\n      h2.copyTo(result, 16);\n      h3.copyTo(result, 24);\n      h4.copyTo(result, 32);\n      h5.copyTo(result, 40);\n    }\n    return result;\n  }\n\n  return hash;\n})();\nvar calculateSHA384 = (function calculateSHA384Closure() {\n  function hash(data, offset, length) {\n    return calculateSHA512(data, offset, length, true);\n  }\n\n  return hash;\n})();\nvar NullCipher = (function NullCipherClosure() {\n  // eslint-disable-next-line no-shadow\n  function NullCipher() {}\n\n  NullCipher.prototype = {\n    decryptBlock: function NullCipher_decryptBlock(data) {\n      return data;\n    },\n    encrypt: function NullCipher_encrypt(data) {\n      return data;\n    },\n  };\n\n  return NullCipher;\n})();\n\nclass AESBaseCipher {\n  constructor() {\n    if (this.constructor === AESBaseCipher) {\n      unreachable(\"Cannot initialize AESBaseCipher.\");\n    }\n\n    // prettier-ignore\n    this._s = new Uint8Array([\n      0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b,\n      0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0,\n      0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26,\n      0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15,\n      0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2,\n      0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0,\n      0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed,\n      0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf,\n      0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f,\n      0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5,\n      0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec,\n      0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73,\n      0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14,\n      0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c,\n      0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d,\n      0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08,\n      0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f,\n      0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e,\n      0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11,\n      0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf,\n      0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f,\n      0xb0, 0x54, 0xbb, 0x16,\n    ]);\n\n    // prettier-ignore\n    this._inv_s = new Uint8Array([\n      0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e,\n      0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87,\n      0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32,\n      0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e,\n      0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49,\n      0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16,\n      0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50,\n      0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84,\n      0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05,\n      0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02,\n      0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41,\n      0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73,\n      0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8,\n      0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89,\n      0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b,\n      0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4,\n      0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59,\n      0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d,\n      0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d,\n      0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61,\n      0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63,\n      0x55, 0x21, 0x0c, 0x7d,\n    ]);\n\n    // prettier-ignore\n    this._mix = new Uint32Array([\n      0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927,\n      0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45,\n      0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb,\n      0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381,\n      0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf,\n      0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66,\n      0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28,\n      0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012,\n      0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec,\n      0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e,\n      0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd,\n      0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7,\n      0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89,\n      0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b,\n      0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815,\n      0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f,\n      0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa,\n      0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8,\n      0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36,\n      0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c,\n      0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742,\n      0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea,\n      0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4,\n      0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e,\n      0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360,\n      0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502,\n      0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87,\n      0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd,\n      0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3,\n      0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621,\n      0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f,\n      0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55,\n      0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26,\n      0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844,\n      0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba,\n      0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480,\n      0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce,\n      0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67,\n      0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929,\n      0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713,\n      0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed,\n      0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f,\n      0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3,\n    ]);\n\n    this._mixCol = new Uint8Array(256);\n    for (let i = 0; i < 256; i++) {\n      if (i < 128) {\n        this._mixCol[i] = i << 1;\n      } else {\n        this._mixCol[i] = (i << 1) ^ 0x1b;\n      }\n    }\n\n    this.buffer = new Uint8Array(16);\n    this.bufferPosition = 0;\n  }\n\n  _expandKey(cipherKey) {\n    unreachable(\"Cannot call `_expandKey` on the base class\");\n  }\n\n  _decrypt(input, key) {\n    let t, u, v;\n    const state = new Uint8Array(16);\n    state.set(input);\n\n    // AddRoundKey\n    for (let j = 0, k = this._keySize; j < 16; ++j, ++k) {\n      state[j] ^= key[k];\n    }\n    for (let i = this._cyclesOfRepetition - 1; i >= 1; --i) {\n      // InvShiftRows\n      t = state[13];\n      state[13] = state[9];\n      state[9] = state[5];\n      state[5] = state[1];\n      state[1] = t;\n      t = state[14];\n      u = state[10];\n      state[14] = state[6];\n      state[10] = state[2];\n      state[6] = t;\n      state[2] = u;\n      t = state[15];\n      u = state[11];\n      v = state[7];\n      state[15] = state[3];\n      state[11] = t;\n      state[7] = u;\n      state[3] = v;\n      // InvSubBytes\n      for (let j = 0; j < 16; ++j) {\n        state[j] = this._inv_s[state[j]];\n      }\n      // AddRoundKey\n      for (let j = 0, k = i * 16; j < 16; ++j, ++k) {\n        state[j] ^= key[k];\n      }\n      // InvMixColumns\n      for (let j = 0; j < 16; j += 4) {\n        const s0 = this._mix[state[j]];\n        const s1 = this._mix[state[j + 1]];\n        const s2 = this._mix[state[j + 2]];\n        const s3 = this._mix[state[j + 3]];\n        t =\n          s0 ^\n          (s1 >>> 8) ^\n          (s1 << 24) ^\n          (s2 >>> 16) ^\n          (s2 << 16) ^\n          (s3 >>> 24) ^\n          (s3 << 8);\n        state[j] = (t >>> 24) & 0xff;\n        state[j + 1] = (t >> 16) & 0xff;\n        state[j + 2] = (t >> 8) & 0xff;\n        state[j + 3] = t & 0xff;\n      }\n    }\n    // InvShiftRows\n    t = state[13];\n    state[13] = state[9];\n    state[9] = state[5];\n    state[5] = state[1];\n    state[1] = t;\n    t = state[14];\n    u = state[10];\n    state[14] = state[6];\n    state[10] = state[2];\n    state[6] = t;\n    state[2] = u;\n    t = state[15];\n    u = state[11];\n    v = state[7];\n    state[15] = state[3];\n    state[11] = t;\n    state[7] = u;\n    state[3] = v;\n    for (let j = 0; j < 16; ++j) {\n      // InvSubBytes\n      state[j] = this._inv_s[state[j]];\n      // AddRoundKey\n      state[j] ^= key[j];\n    }\n    return state;\n  }\n\n  _encrypt(input, key) {\n    const s = this._s;\n\n    let t, u, v;\n    const state = new Uint8Array(16);\n    state.set(input);\n\n    for (let j = 0; j < 16; ++j) {\n      // AddRoundKey\n      state[j] ^= key[j];\n    }\n\n    for (let i = 1; i < this._cyclesOfRepetition; i++) {\n      // SubBytes\n      for (let j = 0; j < 16; ++j) {\n        state[j] = s[state[j]];\n      }\n      // ShiftRows\n      v = state[1];\n      state[1] = state[5];\n      state[5] = state[9];\n      state[9] = state[13];\n      state[13] = v;\n      v = state[2];\n      u = state[6];\n      state[2] = state[10];\n      state[6] = state[14];\n      state[10] = v;\n      state[14] = u;\n      v = state[3];\n      u = state[7];\n      t = state[11];\n      state[3] = state[15];\n      state[7] = v;\n      state[11] = u;\n      state[15] = t;\n      // MixColumns\n      for (let j = 0; j < 16; j += 4) {\n        const s0 = state[j + 0];\n        const s1 = state[j + 1];\n        const s2 = state[j + 2];\n        const s3 = state[j + 3];\n        t = s0 ^ s1 ^ s2 ^ s3;\n        state[j + 0] ^= t ^ this._mixCol[s0 ^ s1];\n        state[j + 1] ^= t ^ this._mixCol[s1 ^ s2];\n        state[j + 2] ^= t ^ this._mixCol[s2 ^ s3];\n        state[j + 3] ^= t ^ this._mixCol[s3 ^ s0];\n      }\n      // AddRoundKey\n      for (let j = 0, k = i * 16; j < 16; ++j, ++k) {\n        state[j] ^= key[k];\n      }\n    }\n\n    // SubBytes\n    for (let j = 0; j < 16; ++j) {\n      state[j] = s[state[j]];\n    }\n    // ShiftRows\n    v = state[1];\n    state[1] = state[5];\n    state[5] = state[9];\n    state[9] = state[13];\n    state[13] = v;\n    v = state[2];\n    u = state[6];\n    state[2] = state[10];\n    state[6] = state[14];\n    state[10] = v;\n    state[14] = u;\n    v = state[3];\n    u = state[7];\n    t = state[11];\n    state[3] = state[15];\n    state[7] = v;\n    state[11] = u;\n    state[15] = t;\n    // AddRoundKey\n    for (let j = 0, k = this._keySize; j < 16; ++j, ++k) {\n      state[j] ^= key[k];\n    }\n    return state;\n  }\n\n  _decryptBlock2(data, finalize) {\n    const sourceLength = data.length;\n    let buffer = this.buffer,\n      bufferLength = this.bufferPosition;\n    const result = [];\n    let iv = this.iv;\n\n    for (let i = 0; i < sourceLength; ++i) {\n      buffer[bufferLength] = data[i];\n      ++bufferLength;\n      if (bufferLength < 16) {\n        continue;\n      }\n      // buffer is full, decrypting\n      const plain = this._decrypt(buffer, this._key);\n      // xor-ing the IV vector to get plain text\n      for (let j = 0; j < 16; ++j) {\n        plain[j] ^= iv[j];\n      }\n      iv = buffer;\n      result.push(plain);\n      buffer = new Uint8Array(16);\n      bufferLength = 0;\n    }\n    // saving incomplete buffer\n    this.buffer = buffer;\n    this.bufferLength = bufferLength;\n    this.iv = iv;\n    if (result.length === 0) {\n      return new Uint8Array(0);\n    }\n    // combining plain text blocks into one\n    let outputLength = 16 * result.length;\n    if (finalize) {\n      // undo a padding that is described in RFC 2898\n      const lastBlock = result[result.length - 1];\n      let psLen = lastBlock[15];\n      if (psLen <= 16) {\n        for (let i = 15, ii = 16 - psLen; i >= ii; --i) {\n          if (lastBlock[i] !== psLen) {\n            // Invalid padding, assume that the block has no padding.\n            psLen = 0;\n            break;\n          }\n        }\n        outputLength -= psLen;\n        result[result.length - 1] = lastBlock.subarray(0, 16 - psLen);\n      }\n    }\n    const output = new Uint8Array(outputLength);\n    for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {\n      output.set(result[i], j);\n    }\n    return output;\n  }\n\n  decryptBlock(data, finalize, iv = null) {\n    const sourceLength = data.length;\n    const buffer = this.buffer;\n    let bufferLength = this.bufferPosition;\n    // If an IV is not supplied, wait for IV values. They are at the start\n    // of the stream.\n    if (iv) {\n      this.iv = iv;\n    } else {\n      for (\n        let i = 0;\n        bufferLength < 16 && i < sourceLength;\n        ++i, ++bufferLength\n      ) {\n        buffer[bufferLength] = data[i];\n      }\n      if (bufferLength < 16) {\n        // Need more data.\n        this.bufferLength = bufferLength;\n        return new Uint8Array(0);\n      }\n      this.iv = buffer;\n      data = data.subarray(16);\n    }\n    this.buffer = new Uint8Array(16);\n    this.bufferLength = 0;\n    // starting decryption\n    this.decryptBlock = this._decryptBlock2;\n    return this.decryptBlock(data, finalize);\n  }\n\n  encrypt(data, iv) {\n    const sourceLength = data.length;\n    let buffer = this.buffer,\n      bufferLength = this.bufferPosition;\n    const result = [];\n\n    if (!iv) {\n      iv = new Uint8Array(16);\n    }\n    for (let i = 0; i < sourceLength; ++i) {\n      buffer[bufferLength] = data[i];\n      ++bufferLength;\n      if (bufferLength < 16) {\n        continue;\n      }\n\n      for (let j = 0; j < 16; ++j) {\n        buffer[j] ^= iv[j];\n      }\n\n      // buffer is full, encrypting\n      const cipher = this._encrypt(buffer, this._key);\n      iv = cipher;\n      result.push(cipher);\n      buffer = new Uint8Array(16);\n      bufferLength = 0;\n    }\n    // saving incomplete buffer\n    this.buffer = buffer;\n    this.bufferLength = bufferLength;\n    this.iv = iv;\n    if (result.length === 0) {\n      return new Uint8Array(0);\n    }\n    // combining plain text blocks into one\n    const outputLength = 16 * result.length;\n    const output = new Uint8Array(outputLength);\n    for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {\n      output.set(result[i], j);\n    }\n    return output;\n  }\n}\n\nclass AES128Cipher extends AESBaseCipher {\n  constructor(key) {\n    super();\n\n    this._cyclesOfRepetition = 10;\n    this._keySize = 160; // bits\n\n    // prettier-ignore\n    this._rcon = new Uint8Array([\n      0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c,\n      0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a,\n      0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd,\n      0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a,\n      0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,\n      0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6,\n      0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72,\n      0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc,\n      0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10,\n      0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e,\n      0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5,\n      0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94,\n      0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02,\n      0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d,\n      0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d,\n      0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f,\n      0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb,\n      0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c,\n      0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a,\n      0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd,\n      0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a,\n      0x74, 0xe8, 0xcb, 0x8d,\n    ]);\n\n    this._key = this._expandKey(key);\n  }\n\n  _expandKey(cipherKey) {\n    const b = 176;\n    const s = this._s;\n    const rcon = this._rcon;\n\n    const result = new Uint8Array(b);\n    result.set(cipherKey);\n\n    for (let j = 16, i = 1; j < b; ++i) {\n      // RotWord\n      let t1 = result[j - 3];\n      let t2 = result[j - 2];\n      let t3 = result[j - 1];\n      let t4 = result[j - 4];\n      // SubWord\n      t1 = s[t1];\n      t2 = s[t2];\n      t3 = s[t3];\n      t4 = s[t4];\n      // Rcon\n      t1 = t1 ^ rcon[i];\n      for (let n = 0; n < 4; ++n) {\n        result[j] = t1 ^= result[j - 16];\n        j++;\n        result[j] = t2 ^= result[j - 16];\n        j++;\n        result[j] = t3 ^= result[j - 16];\n        j++;\n        result[j] = t4 ^= result[j - 16];\n        j++;\n      }\n    }\n    return result;\n  }\n}\n\nclass AES256Cipher extends AESBaseCipher {\n  constructor(key) {\n    super();\n\n    this._cyclesOfRepetition = 14;\n    this._keySize = 224; // bits\n\n    this._key = this._expandKey(key);\n  }\n\n  _expandKey(cipherKey) {\n    const b = 240;\n    const s = this._s;\n\n    const result = new Uint8Array(b);\n    result.set(cipherKey);\n\n    let r = 1;\n    let t1, t2, t3, t4;\n    for (let j = 32, i = 1; j < b; ++i) {\n      if (j % 32 === 16) {\n        t1 = s[t1];\n        t2 = s[t2];\n        t3 = s[t3];\n        t4 = s[t4];\n      } else if (j % 32 === 0) {\n        // RotWord\n        t1 = result[j - 3];\n        t2 = result[j - 2];\n        t3 = result[j - 1];\n        t4 = result[j - 4];\n        // SubWord\n        t1 = s[t1];\n        t2 = s[t2];\n        t3 = s[t3];\n        t4 = s[t4];\n        // Rcon\n        t1 = t1 ^ r;\n        if ((r <<= 1) >= 256) {\n          r = (r ^ 0x1b) & 0xff;\n        }\n      }\n\n      for (let n = 0; n < 4; ++n) {\n        result[j] = t1 ^= result[j - 32];\n        j++;\n        result[j] = t2 ^= result[j - 32];\n        j++;\n        result[j] = t3 ^= result[j - 32];\n        j++;\n        result[j] = t4 ^= result[j - 32];\n        j++;\n      }\n    }\n    return result;\n  }\n}\n\nvar PDF17 = (function PDF17Closure() {\n  function compareByteArrays(array1, array2) {\n    if (array1.length !== array2.length) {\n      return false;\n    }\n    for (var i = 0; i < array1.length; i++) {\n      if (array1[i] !== array2[i]) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  // eslint-disable-next-line no-shadow\n  function PDF17() {}\n\n  PDF17.prototype = {\n    checkOwnerPassword: function PDF17_checkOwnerPassword(\n      password,\n      ownerValidationSalt,\n      userBytes,\n      ownerPassword\n    ) {\n      var hashData = new Uint8Array(password.length + 56);\n      hashData.set(password, 0);\n      hashData.set(ownerValidationSalt, password.length);\n      hashData.set(userBytes, password.length + ownerValidationSalt.length);\n      var result = calculateSHA256(hashData, 0, hashData.length);\n      return compareByteArrays(result, ownerPassword);\n    },\n    checkUserPassword: function PDF17_checkUserPassword(\n      password,\n      userValidationSalt,\n      userPassword\n    ) {\n      var hashData = new Uint8Array(password.length + 8);\n      hashData.set(password, 0);\n      hashData.set(userValidationSalt, password.length);\n      var result = calculateSHA256(hashData, 0, hashData.length);\n      return compareByteArrays(result, userPassword);\n    },\n    getOwnerKey: function PDF17_getOwnerKey(\n      password,\n      ownerKeySalt,\n      userBytes,\n      ownerEncryption\n    ) {\n      var hashData = new Uint8Array(password.length + 56);\n      hashData.set(password, 0);\n      hashData.set(ownerKeySalt, password.length);\n      hashData.set(userBytes, password.length + ownerKeySalt.length);\n      var key = calculateSHA256(hashData, 0, hashData.length);\n      var cipher = new AES256Cipher(key);\n      return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\n    },\n    getUserKey: function PDF17_getUserKey(\n      password,\n      userKeySalt,\n      userEncryption\n    ) {\n      var hashData = new Uint8Array(password.length + 8);\n      hashData.set(password, 0);\n      hashData.set(userKeySalt, password.length);\n      // `key` is the decryption key for the UE string.\n      var key = calculateSHA256(hashData, 0, hashData.length);\n      var cipher = new AES256Cipher(key);\n      return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\n    },\n  };\n  return PDF17;\n})();\n\nvar PDF20 = (function PDF20Closure() {\n  function concatArrays(array1, array2) {\n    var t = new Uint8Array(array1.length + array2.length);\n    t.set(array1, 0);\n    t.set(array2, array1.length);\n    return t;\n  }\n\n  function calculatePDF20Hash(password, input, userBytes) {\n    // This refers to Algorithm 2.B as defined in ISO 32000-2.\n    var k = calculateSHA256(input, 0, input.length).subarray(0, 32);\n    var e = [0];\n    var i = 0;\n    while (i < 64 || e[e.length - 1] > i - 32) {\n      var arrayLength = password.length + k.length + userBytes.length;\n\n      var k1 = new Uint8Array(arrayLength * 64);\n      var array = concatArrays(password, k);\n      array = concatArrays(array, userBytes);\n      for (var j = 0, pos = 0; j < 64; j++, pos += arrayLength) {\n        k1.set(array, pos);\n      }\n      // AES128 CBC NO PADDING with first 16 bytes of k as the key\n      // and the second 16 as the iv.\n      var cipher = new AES128Cipher(k.subarray(0, 16));\n      e = cipher.encrypt(k1, k.subarray(16, 32));\n      // Now we have to take the first 16 bytes of an unsigned big endian\n      // integer and compute the remainder modulo 3. That is a fairly large\n      // number and JavaScript isn't going to handle that well, so we're using\n      // a trick that allows us to perform modulo math byte by byte.\n      var remainder = 0;\n      for (var z = 0; z < 16; z++) {\n        remainder *= 256 % 3;\n        remainder %= 3;\n        remainder += (e[z] >>> 0) % 3;\n        remainder %= 3;\n      }\n      if (remainder === 0) {\n        k = calculateSHA256(e, 0, e.length);\n      } else if (remainder === 1) {\n        k = calculateSHA384(e, 0, e.length);\n      } else if (remainder === 2) {\n        k = calculateSHA512(e, 0, e.length);\n      }\n      i++;\n    }\n    return k.subarray(0, 32);\n  }\n\n  // eslint-disable-next-line no-shadow\n  function PDF20() {}\n\n  function compareByteArrays(array1, array2) {\n    if (array1.length !== array2.length) {\n      return false;\n    }\n    for (var i = 0; i < array1.length; i++) {\n      if (array1[i] !== array2[i]) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  PDF20.prototype = {\n    hash: function PDF20_hash(password, concatBytes, userBytes) {\n      return calculatePDF20Hash(password, concatBytes, userBytes);\n    },\n    checkOwnerPassword: function PDF20_checkOwnerPassword(\n      password,\n      ownerValidationSalt,\n      userBytes,\n      ownerPassword\n    ) {\n      var hashData = new Uint8Array(password.length + 56);\n      hashData.set(password, 0);\n      hashData.set(ownerValidationSalt, password.length);\n      hashData.set(userBytes, password.length + ownerValidationSalt.length);\n      var result = calculatePDF20Hash(password, hashData, userBytes);\n      return compareByteArrays(result, ownerPassword);\n    },\n    checkUserPassword: function PDF20_checkUserPassword(\n      password,\n      userValidationSalt,\n      userPassword\n    ) {\n      var hashData = new Uint8Array(password.length + 8);\n      hashData.set(password, 0);\n      hashData.set(userValidationSalt, password.length);\n      var result = calculatePDF20Hash(password, hashData, []);\n      return compareByteArrays(result, userPassword);\n    },\n    getOwnerKey: function PDF20_getOwnerKey(\n      password,\n      ownerKeySalt,\n      userBytes,\n      ownerEncryption\n    ) {\n      var hashData = new Uint8Array(password.length + 56);\n      hashData.set(password, 0);\n      hashData.set(ownerKeySalt, password.length);\n      hashData.set(userBytes, password.length + ownerKeySalt.length);\n      var key = calculatePDF20Hash(password, hashData, userBytes);\n      var cipher = new AES256Cipher(key);\n      return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\n    },\n    getUserKey: function PDF20_getUserKey(\n      password,\n      userKeySalt,\n      userEncryption\n    ) {\n      var hashData = new Uint8Array(password.length + 8);\n      hashData.set(password, 0);\n      hashData.set(userKeySalt, password.length);\n      // `key` is the decryption key for the UE string.\n      var key = calculatePDF20Hash(password, hashData, []);\n      var cipher = new AES256Cipher(key);\n      return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\n    },\n  };\n  return PDF20;\n})();\n\nvar CipherTransform = (function CipherTransformClosure() {\n  // eslint-disable-next-line no-shadow\n  function CipherTransform(stringCipherConstructor, streamCipherConstructor) {\n    this.StringCipherConstructor = stringCipherConstructor;\n    this.StreamCipherConstructor = streamCipherConstructor;\n  }\n\n  CipherTransform.prototype = {\n    createStream: function CipherTransform_createStream(stream, length) {\n      var cipher = new this.StreamCipherConstructor();\n      return new DecryptStream(\n        stream,\n        length,\n        function cipherTransformDecryptStream(data, finalize) {\n          return cipher.decryptBlock(data, finalize);\n        }\n      );\n    },\n    decryptString: function CipherTransform_decryptString(s) {\n      var cipher = new this.StringCipherConstructor();\n      var data = stringToBytes(s);\n      data = cipher.decryptBlock(data, true);\n      return bytesToString(data);\n    },\n    encryptString: function CipherTransform_encryptString(s) {\n      const cipher = new this.StringCipherConstructor();\n      if (cipher instanceof AESBaseCipher) {\n        // Append some chars equal to \"16 - (M mod 16)\"\n        // where M is the string length (see section 7.6.2 in PDF specification)\n        // to have a final string where the length is a multiple of 16.\n        const strLen = s.length;\n        const pad = 16 - (strLen % 16);\n        if (pad !== 16) {\n          s = s.padEnd(16 * Math.ceil(strLen / 16), String.fromCharCode(pad));\n        }\n\n        // Generate an initialization vector\n        const iv = new Uint8Array(16);\n        if (typeof crypto !== \"undefined\") {\n          crypto.getRandomValues(iv);\n        } else {\n          for (let i = 0; i < 16; i++) {\n            iv[i] = Math.floor(256 * Math.random());\n          }\n        }\n\n        let data = stringToBytes(s);\n        data = cipher.encrypt(data, iv);\n\n        const buf = new Uint8Array(16 + data.length);\n        buf.set(iv);\n        buf.set(data, 16);\n\n        return bytesToString(buf);\n      }\n\n      let data = stringToBytes(s);\n      data = cipher.encrypt(data);\n      return bytesToString(data);\n    },\n  };\n  return CipherTransform;\n})();\n\nvar CipherTransformFactory = (function CipherTransformFactoryClosure() {\n  // prettier-ignore\n  var defaultPasswordBytes = new Uint8Array([\n    0x28, 0xBF, 0x4E, 0x5E, 0x4E, 0x75, 0x8A, 0x41,\n    0x64, 0x00, 0x4E, 0x56, 0xFF, 0xFA, 0x01, 0x08,\n    0x2E, 0x2E, 0x00, 0xB6, 0xD0, 0x68, 0x3E, 0x80,\n    0x2F, 0x0C, 0xA9, 0xFE, 0x64, 0x53, 0x69, 0x7A]);\n\n  function createEncryptionKey20(\n    revision,\n    password,\n    ownerPassword,\n    ownerValidationSalt,\n    ownerKeySalt,\n    uBytes,\n    userPassword,\n    userValidationSalt,\n    userKeySalt,\n    ownerEncryption,\n    userEncryption,\n    perms\n  ) {\n    if (password) {\n      var passwordLength = Math.min(127, password.length);\n      password = password.subarray(0, passwordLength);\n    } else {\n      password = [];\n    }\n    var pdfAlgorithm;\n    if (revision === 6) {\n      pdfAlgorithm = new PDF20();\n    } else {\n      pdfAlgorithm = new PDF17();\n    }\n\n    if (\n      pdfAlgorithm.checkUserPassword(password, userValidationSalt, userPassword)\n    ) {\n      return pdfAlgorithm.getUserKey(password, userKeySalt, userEncryption);\n    } else if (\n      password.length &&\n      pdfAlgorithm.checkOwnerPassword(\n        password,\n        ownerValidationSalt,\n        uBytes,\n        ownerPassword\n      )\n    ) {\n      return pdfAlgorithm.getOwnerKey(\n        password,\n        ownerKeySalt,\n        uBytes,\n        ownerEncryption\n      );\n    }\n\n    return null;\n  }\n\n  function prepareKeyData(\n    fileId,\n    password,\n    ownerPassword,\n    userPassword,\n    flags,\n    revision,\n    keyLength,\n    encryptMetadata\n  ) {\n    var hashDataSize = 40 + ownerPassword.length + fileId.length;\n    var hashData = new Uint8Array(hashDataSize),\n      i = 0,\n      j,\n      n;\n    if (password) {\n      n = Math.min(32, password.length);\n      for (; i < n; ++i) {\n        hashData[i] = password[i];\n      }\n    }\n    j = 0;\n    while (i < 32) {\n      hashData[i++] = defaultPasswordBytes[j++];\n    }\n    // as now the padded password in the hashData[0..i]\n    for (j = 0, n = ownerPassword.length; j < n; ++j) {\n      hashData[i++] = ownerPassword[j];\n    }\n    hashData[i++] = flags & 0xff;\n    hashData[i++] = (flags >> 8) & 0xff;\n    hashData[i++] = (flags >> 16) & 0xff;\n    hashData[i++] = (flags >>> 24) & 0xff;\n    for (j = 0, n = fileId.length; j < n; ++j) {\n      hashData[i++] = fileId[j];\n    }\n    if (revision >= 4 && !encryptMetadata) {\n      hashData[i++] = 0xff;\n      hashData[i++] = 0xff;\n      hashData[i++] = 0xff;\n      hashData[i++] = 0xff;\n    }\n    var hash = calculateMD5(hashData, 0, i);\n    var keyLengthInBytes = keyLength >> 3;\n    if (revision >= 3) {\n      for (j = 0; j < 50; ++j) {\n        hash = calculateMD5(hash, 0, keyLengthInBytes);\n      }\n    }\n    var encryptionKey = hash.subarray(0, keyLengthInBytes);\n    var cipher, checkData;\n\n    if (revision >= 3) {\n      for (i = 0; i < 32; ++i) {\n        hashData[i] = defaultPasswordBytes[i];\n      }\n      for (j = 0, n = fileId.length; j < n; ++j) {\n        hashData[i++] = fileId[j];\n      }\n      cipher = new ARCFourCipher(encryptionKey);\n      checkData = cipher.encryptBlock(calculateMD5(hashData, 0, i));\n      n = encryptionKey.length;\n      var derivedKey = new Uint8Array(n),\n        k;\n      for (j = 1; j <= 19; ++j) {\n        for (k = 0; k < n; ++k) {\n          derivedKey[k] = encryptionKey[k] ^ j;\n        }\n        cipher = new ARCFourCipher(derivedKey);\n        checkData = cipher.encryptBlock(checkData);\n      }\n      for (j = 0, n = checkData.length; j < n; ++j) {\n        if (userPassword[j] !== checkData[j]) {\n          return null;\n        }\n      }\n    } else {\n      cipher = new ARCFourCipher(encryptionKey);\n      checkData = cipher.encryptBlock(defaultPasswordBytes);\n      for (j = 0, n = checkData.length; j < n; ++j) {\n        if (userPassword[j] !== checkData[j]) {\n          return null;\n        }\n      }\n    }\n    return encryptionKey;\n  }\n\n  function decodeUserPassword(password, ownerPassword, revision, keyLength) {\n    var hashData = new Uint8Array(32),\n      i = 0,\n      j,\n      n;\n    n = Math.min(32, password.length);\n    for (; i < n; ++i) {\n      hashData[i] = password[i];\n    }\n    j = 0;\n    while (i < 32) {\n      hashData[i++] = defaultPasswordBytes[j++];\n    }\n    var hash = calculateMD5(hashData, 0, i);\n    var keyLengthInBytes = keyLength >> 3;\n    if (revision >= 3) {\n      for (j = 0; j < 50; ++j) {\n        hash = calculateMD5(hash, 0, hash.length);\n      }\n    }\n\n    var cipher, userPassword;\n    if (revision >= 3) {\n      userPassword = ownerPassword;\n      var derivedKey = new Uint8Array(keyLengthInBytes),\n        k;\n      for (j = 19; j >= 0; j--) {\n        for (k = 0; k < keyLengthInBytes; ++k) {\n          derivedKey[k] = hash[k] ^ j;\n        }\n        cipher = new ARCFourCipher(derivedKey);\n        userPassword = cipher.encryptBlock(userPassword);\n      }\n    } else {\n      cipher = new ARCFourCipher(hash.subarray(0, keyLengthInBytes));\n      userPassword = cipher.encryptBlock(ownerPassword);\n    }\n    return userPassword;\n  }\n\n  var identityName = Name.get(\"Identity\");\n\n  // eslint-disable-next-line no-shadow\n  function CipherTransformFactory(dict, fileId, password) {\n    var filter = dict.get(\"Filter\");\n    if (!isName(filter, \"Standard\")) {\n      throw new FormatError(\"unknown encryption method\");\n    }\n    this.dict = dict;\n    var algorithm = dict.get(\"V\");\n    if (\n      !Number.isInteger(algorithm) ||\n      (algorithm !== 1 && algorithm !== 2 && algorithm !== 4 && algorithm !== 5)\n    ) {\n      throw new FormatError(\"unsupported encryption algorithm\");\n    }\n    this.algorithm = algorithm;\n    var keyLength = dict.get(\"Length\");\n    if (!keyLength) {\n      // Spec asks to rely on encryption dictionary's Length entry, however\n      // some PDFs don't have it. Trying to recover.\n      if (algorithm <= 3) {\n        // For 1 and 2 it's fixed to 40-bit, for 3 40-bit is a minimal value.\n        keyLength = 40;\n      } else {\n        // Trying to find default handler -- it usually has Length.\n        var cfDict = dict.get(\"CF\");\n        var streamCryptoName = dict.get(\"StmF\");\n        if (isDict(cfDict) && isName(streamCryptoName)) {\n          cfDict.suppressEncryption = true; // See comment below.\n          var handlerDict = cfDict.get(streamCryptoName.name);\n          keyLength = (handlerDict && handlerDict.get(\"Length\")) || 128;\n          if (keyLength < 40) {\n            // Sometimes it's incorrect value of bits, generators specify bytes.\n            keyLength <<= 3;\n          }\n        }\n      }\n    }\n    if (!Number.isInteger(keyLength) || keyLength < 40 || keyLength % 8 !== 0) {\n      throw new FormatError(\"invalid key length\");\n    }\n\n    // prepare keys\n    var ownerPassword = stringToBytes(dict.get(\"O\")).subarray(0, 32);\n    var userPassword = stringToBytes(dict.get(\"U\")).subarray(0, 32);\n    var flags = dict.get(\"P\");\n    var revision = dict.get(\"R\");\n    // meaningful when V is 4 or 5\n    var encryptMetadata =\n      (algorithm === 4 || algorithm === 5) &&\n      dict.get(\"EncryptMetadata\") !== false;\n    this.encryptMetadata = encryptMetadata;\n\n    var fileIdBytes = stringToBytes(fileId);\n    var passwordBytes;\n    if (password) {\n      if (revision === 6) {\n        try {\n          password = utf8StringToString(password);\n        } catch (ex) {\n          warn(\n            \"CipherTransformFactory: \" +\n              \"Unable to convert UTF8 encoded password.\"\n          );\n        }\n      }\n      passwordBytes = stringToBytes(password);\n    }\n\n    var encryptionKey;\n    if (algorithm !== 5) {\n      encryptionKey = prepareKeyData(\n        fileIdBytes,\n        passwordBytes,\n        ownerPassword,\n        userPassword,\n        flags,\n        revision,\n        keyLength,\n        encryptMetadata\n      );\n    } else {\n      var ownerValidationSalt = stringToBytes(dict.get(\"O\")).subarray(32, 40);\n      var ownerKeySalt = stringToBytes(dict.get(\"O\")).subarray(40, 48);\n      var uBytes = stringToBytes(dict.get(\"U\")).subarray(0, 48);\n      var userValidationSalt = stringToBytes(dict.get(\"U\")).subarray(32, 40);\n      var userKeySalt = stringToBytes(dict.get(\"U\")).subarray(40, 48);\n      var ownerEncryption = stringToBytes(dict.get(\"OE\"));\n      var userEncryption = stringToBytes(dict.get(\"UE\"));\n      var perms = stringToBytes(dict.get(\"Perms\"));\n      encryptionKey = createEncryptionKey20(\n        revision,\n        passwordBytes,\n        ownerPassword,\n        ownerValidationSalt,\n        ownerKeySalt,\n        uBytes,\n        userPassword,\n        userValidationSalt,\n        userKeySalt,\n        ownerEncryption,\n        userEncryption,\n        perms\n      );\n    }\n    if (!encryptionKey && !password) {\n      throw new PasswordException(\n        \"No password given\",\n        PasswordResponses.NEED_PASSWORD\n      );\n    } else if (!encryptionKey && password) {\n      // Attempting use the password as an owner password\n      var decodedPassword = decodeUserPassword(\n        passwordBytes,\n        ownerPassword,\n        revision,\n        keyLength\n      );\n      encryptionKey = prepareKeyData(\n        fileIdBytes,\n        decodedPassword,\n        ownerPassword,\n        userPassword,\n        flags,\n        revision,\n        keyLength,\n        encryptMetadata\n      );\n    }\n\n    if (!encryptionKey) {\n      throw new PasswordException(\n        \"Incorrect Password\",\n        PasswordResponses.INCORRECT_PASSWORD\n      );\n    }\n\n    this.encryptionKey = encryptionKey;\n\n    if (algorithm >= 4) {\n      var cf = dict.get(\"CF\");\n      if (isDict(cf)) {\n        // The 'CF' dictionary itself should not be encrypted, and by setting\n        // `suppressEncryption` we can prevent an infinite loop inside of\n        // `XRef_fetchUncompressed` if the dictionary contains indirect objects\n        // (fixes issue7665.pdf).\n        cf.suppressEncryption = true;\n      }\n      this.cf = cf;\n      this.stmf = dict.get(\"StmF\") || identityName;\n      this.strf = dict.get(\"StrF\") || identityName;\n      this.eff = dict.get(\"EFF\") || this.stmf;\n    }\n  }\n\n  function buildObjectKey(num, gen, encryptionKey, isAes) {\n    var key = new Uint8Array(encryptionKey.length + 9),\n      i,\n      n;\n    for (i = 0, n = encryptionKey.length; i < n; ++i) {\n      key[i] = encryptionKey[i];\n    }\n    key[i++] = num & 0xff;\n    key[i++] = (num >> 8) & 0xff;\n    key[i++] = (num >> 16) & 0xff;\n    key[i++] = gen & 0xff;\n    key[i++] = (gen >> 8) & 0xff;\n    if (isAes) {\n      key[i++] = 0x73;\n      key[i++] = 0x41;\n      key[i++] = 0x6c;\n      key[i++] = 0x54;\n    }\n    var hash = calculateMD5(key, 0, i);\n    return hash.subarray(0, Math.min(encryptionKey.length + 5, 16));\n  }\n\n  function buildCipherConstructor(cf, name, num, gen, key) {\n    if (!isName(name)) {\n      throw new FormatError(\"Invalid crypt filter name.\");\n    }\n    var cryptFilter = cf.get(name.name);\n    var cfm;\n    if (cryptFilter !== null && cryptFilter !== undefined) {\n      cfm = cryptFilter.get(\"CFM\");\n    }\n    if (!cfm || cfm.name === \"None\") {\n      return function cipherTransformFactoryBuildCipherConstructorNone() {\n        return new NullCipher();\n      };\n    }\n    if (cfm.name === \"V2\") {\n      return function cipherTransformFactoryBuildCipherConstructorV2() {\n        return new ARCFourCipher(buildObjectKey(num, gen, key, false));\n      };\n    }\n    if (cfm.name === \"AESV2\") {\n      return function cipherTransformFactoryBuildCipherConstructorAESV2() {\n        return new AES128Cipher(buildObjectKey(num, gen, key, true));\n      };\n    }\n    if (cfm.name === \"AESV3\") {\n      return function cipherTransformFactoryBuildCipherConstructorAESV3() {\n        return new AES256Cipher(key);\n      };\n    }\n    throw new FormatError(\"Unknown crypto method\");\n  }\n\n  CipherTransformFactory.prototype = {\n    createCipherTransform: function CipherTransformFactory_createCipherTransform(\n      num,\n      gen\n    ) {\n      if (this.algorithm === 4 || this.algorithm === 5) {\n        return new CipherTransform(\n          buildCipherConstructor(\n            this.cf,\n            this.stmf,\n            num,\n            gen,\n            this.encryptionKey\n          ),\n          buildCipherConstructor(\n            this.cf,\n            this.strf,\n            num,\n            gen,\n            this.encryptionKey\n          )\n        );\n      }\n      // algorithms 1 and 2\n      var key = buildObjectKey(num, gen, this.encryptionKey, false);\n      var cipherConstructor = function buildCipherCipherConstructor() {\n        return new ARCFourCipher(key);\n      };\n      return new CipherTransform(cipherConstructor, cipherConstructor);\n    },\n  };\n\n  return CipherTransformFactory;\n})();\n\nexport {\n  AES128Cipher,\n  AES256Cipher,\n  ARCFourCipher,\n  CipherTransformFactory,\n  PDF17,\n  PDF20,\n  calculateMD5,\n  calculateSHA256,\n  calculateSHA384,\n  calculateSHA512,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  assert,\n  FormatError,\n  info,\n  shadow,\n  unreachable,\n  warn,\n} from \"../shared/util.js\";\nimport { isDict, isName, isStream, Name, Ref } from \"./primitives.js\";\nimport { MissingDataException } from \"./core_utils.js\";\n\n/**\n * Resizes an RGB image with 3 components.\n * @param {TypedArray} src - The source buffer.\n * @param {TypedArray} dest - The destination buffer.\n * @param {number} w1 - Original width.\n * @param {number} h1 - Original height.\n * @param {number} w2 - New width.\n * @param {number} h2 - New height.\n * @param {number} alpha01 - Size reserved for the alpha channel.\n */\nfunction resizeRgbImage(src, dest, w1, h1, w2, h2, alpha01) {\n  const COMPONENTS = 3;\n  alpha01 = alpha01 !== 1 ? 0 : alpha01;\n  const xRatio = w1 / w2;\n  const yRatio = h1 / h2;\n  let newIndex = 0,\n    oldIndex;\n  const xScaled = new Uint16Array(w2);\n  const w1Scanline = w1 * COMPONENTS;\n\n  for (let i = 0; i < w2; i++) {\n    xScaled[i] = Math.floor(i * xRatio) * COMPONENTS;\n  }\n  for (let i = 0; i < h2; i++) {\n    const py = Math.floor(i * yRatio) * w1Scanline;\n    for (let j = 0; j < w2; j++) {\n      oldIndex = py + xScaled[j];\n      dest[newIndex++] = src[oldIndex++];\n      dest[newIndex++] = src[oldIndex++];\n      dest[newIndex++] = src[oldIndex++];\n      newIndex += alpha01;\n    }\n  }\n}\n\nclass ColorSpace {\n  constructor(name, numComps) {\n    if (this.constructor === ColorSpace) {\n      unreachable(\"Cannot initialize ColorSpace.\");\n    }\n    this.name = name;\n    this.numComps = numComps;\n  }\n\n  /**\n   * Converts the color value to the RGB color. The color components are\n   * located in the src array starting from the srcOffset. Returns the array\n   * of the rgb components, each value ranging from [0,255].\n   */\n  getRgb(src, srcOffset) {\n    const rgb = new Uint8ClampedArray(3);\n    this.getRgbItem(src, srcOffset, rgb, 0);\n    return rgb;\n  }\n\n  /**\n   * Converts the color value to the RGB color, similar to the getRgb method.\n   * The result placed into the dest array starting from the destOffset.\n   */\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    unreachable(\"Should not call ColorSpace.getRgbItem\");\n  }\n\n  /**\n   * Converts the specified number of the color values to the RGB colors.\n   * The colors are located in the src array starting from the srcOffset.\n   * The result is placed into the dest array starting from the destOffset.\n   * The src array items shall be in [0,2^bits) range, the dest array items\n   * will be in [0,255] range. alpha01 indicates how many alpha components\n   * there are in the dest array; it will be either 0 (RGB array) or 1 (RGBA\n   * array).\n   */\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    unreachable(\"Should not call ColorSpace.getRgbBuffer\");\n  }\n\n  /**\n   * Determines the number of bytes required to store the result of the\n   * conversion done by the getRgbBuffer method. As in getRgbBuffer,\n   * |alpha01| is either 0 (RGB output) or 1 (RGBA output).\n   */\n  getOutputLength(inputLength, alpha01) {\n    unreachable(\"Should not call ColorSpace.getOutputLength\");\n  }\n\n  /**\n   * Returns true if source data will be equal the result/output data.\n   */\n  isPassthrough(bits) {\n    return false;\n  }\n\n  /**\n   * Refer to the static `ColorSpace.isDefaultDecode` method below.\n   */\n  isDefaultDecode(decodeMap, bpc) {\n    return ColorSpace.isDefaultDecode(decodeMap, this.numComps);\n  }\n\n  /**\n   * Fills in the RGB colors in the destination buffer.  alpha01 indicates\n   * how many alpha components there are in the dest array; it will be either\n   * 0 (RGB array) or 1 (RGBA array).\n   */\n  fillRgb(\n    dest,\n    originalWidth,\n    originalHeight,\n    width,\n    height,\n    actualHeight,\n    bpc,\n    comps,\n    alpha01\n  ) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'ColorSpace.fillRgb: Unsupported \"dest\" type.'\n      );\n    }\n    const count = originalWidth * originalHeight;\n    let rgbBuf = null;\n    const numComponentColors = 1 << bpc;\n    const needsResizing = originalHeight !== height || originalWidth !== width;\n\n    if (this.isPassthrough(bpc)) {\n      rgbBuf = comps;\n    } else if (\n      this.numComps === 1 &&\n      count > numComponentColors &&\n      this.name !== \"DeviceGray\" &&\n      this.name !== \"DeviceRGB\"\n    ) {\n      // Optimization: create a color map when there is just one component and\n      // we are converting more colors than the size of the color map. We\n      // don't build the map if the colorspace is gray or rgb since those\n      // methods are faster than building a map. This mainly offers big speed\n      // ups for indexed and alternate colorspaces.\n      //\n      // TODO it may be worth while to cache the color map. While running\n      // testing I never hit a cache so I will leave that out for now (perhaps\n      // we are reparsing colorspaces too much?).\n      const allColors =\n        bpc <= 8\n          ? new Uint8Array(numComponentColors)\n          : new Uint16Array(numComponentColors);\n      for (let i = 0; i < numComponentColors; i++) {\n        allColors[i] = i;\n      }\n      const colorMap = new Uint8ClampedArray(numComponentColors * 3);\n      this.getRgbBuffer(\n        allColors,\n        0,\n        numComponentColors,\n        colorMap,\n        0,\n        bpc,\n        /* alpha01 = */ 0\n      );\n\n      if (!needsResizing) {\n        // Fill in the RGB values directly into |dest|.\n        let destPos = 0;\n        for (let i = 0; i < count; ++i) {\n          const key = comps[i] * 3;\n          dest[destPos++] = colorMap[key];\n          dest[destPos++] = colorMap[key + 1];\n          dest[destPos++] = colorMap[key + 2];\n          destPos += alpha01;\n        }\n      } else {\n        rgbBuf = new Uint8Array(count * 3);\n        let rgbPos = 0;\n        for (let i = 0; i < count; ++i) {\n          const key = comps[i] * 3;\n          rgbBuf[rgbPos++] = colorMap[key];\n          rgbBuf[rgbPos++] = colorMap[key + 1];\n          rgbBuf[rgbPos++] = colorMap[key + 2];\n        }\n      }\n    } else {\n      if (!needsResizing) {\n        // Fill in the RGB values directly into |dest|.\n        this.getRgbBuffer(\n          comps,\n          0,\n          width * actualHeight,\n          dest,\n          0,\n          bpc,\n          alpha01\n        );\n      } else {\n        rgbBuf = new Uint8ClampedArray(count * 3);\n        this.getRgbBuffer(comps, 0, count, rgbBuf, 0, bpc, /* alpha01 = */ 0);\n      }\n    }\n\n    if (rgbBuf) {\n      if (needsResizing) {\n        resizeRgbImage(\n          rgbBuf,\n          dest,\n          originalWidth,\n          originalHeight,\n          width,\n          height,\n          alpha01\n        );\n      } else {\n        let destPos = 0,\n          rgbPos = 0;\n        for (let i = 0, ii = width * actualHeight; i < ii; i++) {\n          dest[destPos++] = rgbBuf[rgbPos++];\n          dest[destPos++] = rgbBuf[rgbPos++];\n          dest[destPos++] = rgbBuf[rgbPos++];\n          destPos += alpha01;\n        }\n      }\n    }\n  }\n\n  /**\n   * True if the colorspace has components in the default range of [0, 1].\n   * This should be true for all colorspaces except for lab color spaces\n   * which are [0,100], [-128, 127], [-128, 127].\n   */\n  get usesZeroToOneRange() {\n    return shadow(this, \"usesZeroToOneRange\", true);\n  }\n\n  /**\n   * @private\n   */\n  static _cache(cacheKey, xref, localColorSpaceCache, parsedColorSpace) {\n    if (!localColorSpaceCache) {\n      throw new Error(\n        'ColorSpace._cache - expected \"localColorSpaceCache\" argument.'\n      );\n    }\n    if (!parsedColorSpace) {\n      throw new Error(\n        'ColorSpace._cache - expected \"parsedColorSpace\" argument.'\n      );\n    }\n    let csName, csRef;\n    if (cacheKey instanceof Ref) {\n      csRef = cacheKey;\n\n      // If parsing succeeded, we know that this call cannot throw.\n      cacheKey = xref.fetch(cacheKey);\n    }\n    if (cacheKey instanceof Name) {\n      csName = cacheKey.name;\n    }\n    if (csName || csRef) {\n      localColorSpaceCache.set(csName, csRef, parsedColorSpace);\n    }\n  }\n\n  static getCached(cacheKey, xref, localColorSpaceCache) {\n    if (!localColorSpaceCache) {\n      throw new Error(\n        'ColorSpace.getCached - expected \"localColorSpaceCache\" argument.'\n      );\n    }\n    if (cacheKey instanceof Ref) {\n      const localColorSpace = localColorSpaceCache.getByRef(cacheKey);\n      if (localColorSpace) {\n        return localColorSpace;\n      }\n\n      try {\n        cacheKey = xref.fetch(cacheKey);\n      } catch (ex) {\n        if (ex instanceof MissingDataException) {\n          throw ex;\n        }\n        // Any errors should be handled during parsing, rather than here.\n      }\n    }\n    if (cacheKey instanceof Name) {\n      const localColorSpace = localColorSpaceCache.getByName(cacheKey.name);\n      if (localColorSpace) {\n        return localColorSpace;\n      }\n    }\n    return null;\n  }\n\n  static async parseAsync({\n    cs,\n    xref,\n    resources = null,\n    pdfFunctionFactory,\n    localColorSpaceCache,\n  }) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        !this.getCached(cs, xref, localColorSpaceCache),\n        \"Expected `ColorSpace.getCached` to have been manually checked \" +\n          \"before calling `ColorSpace.parseAsync`.\"\n      );\n    }\n    const parsedColorSpace = this._parse(\n      cs,\n      xref,\n      resources,\n      pdfFunctionFactory\n    );\n\n    // Attempt to cache the parsed ColorSpace, by name and/or reference.\n    this._cache(cs, xref, localColorSpaceCache, parsedColorSpace);\n\n    return parsedColorSpace;\n  }\n\n  static parse({\n    cs,\n    xref,\n    resources = null,\n    pdfFunctionFactory,\n    localColorSpaceCache,\n  }) {\n    const cachedColorSpace = this.getCached(cs, xref, localColorSpaceCache);\n    if (cachedColorSpace) {\n      return cachedColorSpace;\n    }\n    const parsedColorSpace = this._parse(\n      cs,\n      xref,\n      resources,\n      pdfFunctionFactory\n    );\n\n    // Attempt to cache the parsed ColorSpace, by name and/or reference.\n    this._cache(cs, xref, localColorSpaceCache, parsedColorSpace);\n\n    return parsedColorSpace;\n  }\n\n  /**\n   * @private\n   */\n  static _parse(cs, xref, resources = null, pdfFunctionFactory) {\n    cs = xref.fetchIfRef(cs);\n    if (isName(cs)) {\n      switch (cs.name) {\n        case \"DeviceGray\":\n        case \"G\":\n          return this.singletons.gray;\n        case \"DeviceRGB\":\n        case \"RGB\":\n          return this.singletons.rgb;\n        case \"DeviceCMYK\":\n        case \"CMYK\":\n          return this.singletons.cmyk;\n        case \"Pattern\":\n          return new PatternCS(/* baseCS = */ null);\n        default:\n          if (isDict(resources)) {\n            const colorSpaces = resources.get(\"ColorSpace\");\n            if (isDict(colorSpaces)) {\n              const resourcesCS = colorSpaces.get(cs.name);\n              if (resourcesCS) {\n                if (isName(resourcesCS)) {\n                  return this._parse(\n                    resourcesCS,\n                    xref,\n                    resources,\n                    pdfFunctionFactory\n                  );\n                }\n                cs = resourcesCS;\n                break;\n              }\n            }\n          }\n          throw new FormatError(`Unrecognized ColorSpace: ${cs.name}`);\n      }\n    }\n    if (Array.isArray(cs)) {\n      const mode = xref.fetchIfRef(cs[0]).name;\n      let params, numComps, baseCS, whitePoint, blackPoint, gamma;\n\n      switch (mode) {\n        case \"DeviceGray\":\n        case \"G\":\n          return this.singletons.gray;\n        case \"DeviceRGB\":\n        case \"RGB\":\n          return this.singletons.rgb;\n        case \"DeviceCMYK\":\n        case \"CMYK\":\n          return this.singletons.cmyk;\n        case \"CalGray\":\n          params = xref.fetchIfRef(cs[1]);\n          whitePoint = params.getArray(\"WhitePoint\");\n          blackPoint = params.getArray(\"BlackPoint\");\n          gamma = params.get(\"Gamma\");\n          return new CalGrayCS(whitePoint, blackPoint, gamma);\n        case \"CalRGB\":\n          params = xref.fetchIfRef(cs[1]);\n          whitePoint = params.getArray(\"WhitePoint\");\n          blackPoint = params.getArray(\"BlackPoint\");\n          gamma = params.getArray(\"Gamma\");\n          const matrix = params.getArray(\"Matrix\");\n          return new CalRGBCS(whitePoint, blackPoint, gamma, matrix);\n        case \"ICCBased\":\n          const stream = xref.fetchIfRef(cs[1]);\n          const dict = stream.dict;\n          numComps = dict.get(\"N\");\n          const alt = dict.get(\"Alternate\");\n          if (alt) {\n            const altCS = this._parse(alt, xref, resources, pdfFunctionFactory);\n            // Ensure that the number of components are correct,\n            // and also (indirectly) that it is not a PatternCS.\n            if (altCS.numComps === numComps) {\n              return altCS;\n            }\n            warn(\"ICCBased color space: Ignoring incorrect /Alternate entry.\");\n          }\n          if (numComps === 1) {\n            return this.singletons.gray;\n          } else if (numComps === 3) {\n            return this.singletons.rgb;\n          } else if (numComps === 4) {\n            return this.singletons.cmyk;\n          }\n          break;\n        case \"Pattern\":\n          baseCS = cs[1] || null;\n          if (baseCS) {\n            baseCS = this._parse(baseCS, xref, resources, pdfFunctionFactory);\n          }\n          return new PatternCS(baseCS);\n        case \"Indexed\":\n        case \"I\":\n          baseCS = this._parse(cs[1], xref, resources, pdfFunctionFactory);\n          const hiVal = xref.fetchIfRef(cs[2]) + 1;\n          const lookup = xref.fetchIfRef(cs[3]);\n          return new IndexedCS(baseCS, hiVal, lookup);\n        case \"Separation\":\n        case \"DeviceN\":\n          const name = xref.fetchIfRef(cs[1]);\n          numComps = Array.isArray(name) ? name.length : 1;\n          baseCS = this._parse(cs[2], xref, resources, pdfFunctionFactory);\n          const tintFn = pdfFunctionFactory.create(cs[3]);\n          return new AlternateCS(numComps, baseCS, tintFn);\n        case \"Lab\":\n          params = xref.fetchIfRef(cs[1]);\n          whitePoint = params.getArray(\"WhitePoint\");\n          blackPoint = params.getArray(\"BlackPoint\");\n          const range = params.getArray(\"Range\");\n          return new LabCS(whitePoint, blackPoint, range);\n        default:\n          throw new FormatError(`Unimplemented ColorSpace object: ${mode}`);\n      }\n    }\n    throw new FormatError(`Unrecognized ColorSpace object: ${cs}`);\n  }\n\n  /**\n   * Checks if a decode map matches the default decode map for a color space.\n   * This handles the general decode maps where there are two values per\n   * component, e.g. [0, 1, 0, 1, 0, 1] for a RGB color.\n   * This does not handle Lab, Indexed, or Pattern decode maps since they are\n   * slightly different.\n   * @param {Array} decode - Decode map (usually from an image).\n   * @param {number} numComps - Number of components the color space has.\n   */\n  static isDefaultDecode(decode, numComps) {\n    if (!Array.isArray(decode)) {\n      return true;\n    }\n    if (numComps * 2 !== decode.length) {\n      warn(\"The decode map is not the correct length\");\n      return true;\n    }\n    for (let i = 0, ii = decode.length; i < ii; i += 2) {\n      if (decode[i] !== 0 || decode[i + 1] !== 1) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  static get singletons() {\n    return shadow(this, \"singletons\", {\n      get gray() {\n        return shadow(this, \"gray\", new DeviceGrayCS());\n      },\n      get rgb() {\n        return shadow(this, \"rgb\", new DeviceRgbCS());\n      },\n      get cmyk() {\n        return shadow(this, \"cmyk\", new DeviceCmykCS());\n      },\n    });\n  }\n}\n\n/**\n * Alternate color space handles both Separation and DeviceN color spaces.  A\n * Separation color space is actually just a DeviceN with one color component.\n * Both color spaces use a tinting function to convert colors to a base color\n * space.\n *\n * The default color is `new Float32Array(new Array(numComps).fill(1))`.\n */\nclass AlternateCS extends ColorSpace {\n  constructor(numComps, base, tintFn) {\n    super(\"Alternate\", numComps);\n    this.base = base;\n    this.tintFn = tintFn;\n    this.tmpBuf = new Float32Array(base.numComps);\n  }\n\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'AlternateCS.getRgbItem: Unsupported \"dest\" type.'\n      );\n    }\n    const tmpBuf = this.tmpBuf;\n    this.tintFn(src, srcOffset, tmpBuf, 0);\n    this.base.getRgbItem(tmpBuf, 0, dest, destOffset);\n  }\n\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'AlternateCS.getRgbBuffer: Unsupported \"dest\" type.'\n      );\n    }\n    const tintFn = this.tintFn;\n    const base = this.base;\n    const scale = 1 / ((1 << bits) - 1);\n    const baseNumComps = base.numComps;\n    const usesZeroToOneRange = base.usesZeroToOneRange;\n    const isPassthrough =\n      (base.isPassthrough(8) || !usesZeroToOneRange) && alpha01 === 0;\n    let pos = isPassthrough ? destOffset : 0;\n    const baseBuf = isPassthrough\n      ? dest\n      : new Uint8ClampedArray(baseNumComps * count);\n    const numComps = this.numComps;\n\n    const scaled = new Float32Array(numComps);\n    const tinted = new Float32Array(baseNumComps);\n    let i, j;\n\n    for (i = 0; i < count; i++) {\n      for (j = 0; j < numComps; j++) {\n        scaled[j] = src[srcOffset++] * scale;\n      }\n      tintFn(scaled, 0, tinted, 0);\n      if (usesZeroToOneRange) {\n        for (j = 0; j < baseNumComps; j++) {\n          baseBuf[pos++] = tinted[j] * 255;\n        }\n      } else {\n        base.getRgbItem(tinted, 0, baseBuf, pos);\n        pos += baseNumComps;\n      }\n    }\n\n    if (!isPassthrough) {\n      base.getRgbBuffer(baseBuf, 0, count, dest, destOffset, 8, alpha01);\n    }\n  }\n\n  getOutputLength(inputLength, alpha01) {\n    return this.base.getOutputLength(\n      (inputLength * this.base.numComps) / this.numComps,\n      alpha01\n    );\n  }\n}\n\nclass PatternCS extends ColorSpace {\n  constructor(baseCS) {\n    super(\"Pattern\", null);\n    this.base = baseCS;\n  }\n\n  isDefaultDecode(decodeMap, bpc) {\n    unreachable(\"Should not call PatternCS.isDefaultDecode\");\n  }\n}\n\n/**\n * The default color is `new Uint8Array([0])`.\n */\nclass IndexedCS extends ColorSpace {\n  constructor(base, highVal, lookup) {\n    super(\"Indexed\", 1);\n    this.base = base;\n    this.highVal = highVal;\n\n    const length = base.numComps * highVal;\n    this.lookup = new Uint8Array(length);\n\n    if (isStream(lookup)) {\n      const bytes = lookup.getBytes(length);\n      this.lookup.set(bytes);\n    } else if (typeof lookup === \"string\") {\n      for (let i = 0; i < length; ++i) {\n        this.lookup[i] = lookup.charCodeAt(i) & 0xff;\n      }\n    } else {\n      throw new FormatError(`IndexedCS - unrecognized lookup table: ${lookup}`);\n    }\n  }\n\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'IndexedCS.getRgbItem: Unsupported \"dest\" type.'\n      );\n    }\n    const numComps = this.base.numComps;\n    const start = src[srcOffset] * numComps;\n    this.base.getRgbBuffer(this.lookup, start, 1, dest, destOffset, 8, 0);\n  }\n\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'IndexedCS.getRgbBuffer: Unsupported \"dest\" type.'\n      );\n    }\n    const base = this.base;\n    const numComps = base.numComps;\n    const outputDelta = base.getOutputLength(numComps, alpha01);\n    const lookup = this.lookup;\n\n    for (let i = 0; i < count; ++i) {\n      const lookupPos = src[srcOffset++] * numComps;\n      base.getRgbBuffer(lookup, lookupPos, 1, dest, destOffset, 8, alpha01);\n      destOffset += outputDelta;\n    }\n  }\n\n  getOutputLength(inputLength, alpha01) {\n    return this.base.getOutputLength(inputLength * this.base.numComps, alpha01);\n  }\n\n  isDefaultDecode(decodeMap, bpc) {\n    if (!Array.isArray(decodeMap)) {\n      return true;\n    }\n    if (decodeMap.length !== 2) {\n      warn(\"Decode map length is not correct\");\n      return true;\n    }\n    if (!Number.isInteger(bpc) || bpc < 1) {\n      warn(\"Bits per component is not correct\");\n      return true;\n    }\n    return decodeMap[0] === 0 && decodeMap[1] === (1 << bpc) - 1;\n  }\n}\n\n/**\n * The default color is `new Float32Array([0])`.\n */\nclass DeviceGrayCS extends ColorSpace {\n  constructor() {\n    super(\"DeviceGray\", 1);\n  }\n\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'DeviceGrayCS.getRgbItem: Unsupported \"dest\" type.'\n      );\n    }\n    const c = src[srcOffset] * 255;\n    dest[destOffset] = dest[destOffset + 1] = dest[destOffset + 2] = c;\n  }\n\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'DeviceGrayCS.getRgbBuffer: Unsupported \"dest\" type.'\n      );\n    }\n    const scale = 255 / ((1 << bits) - 1);\n    let j = srcOffset,\n      q = destOffset;\n    for (let i = 0; i < count; ++i) {\n      const c = scale * src[j++];\n      dest[q++] = c;\n      dest[q++] = c;\n      dest[q++] = c;\n      q += alpha01;\n    }\n  }\n\n  getOutputLength(inputLength, alpha01) {\n    return inputLength * (3 + alpha01);\n  }\n}\n\n/**\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nclass DeviceRgbCS extends ColorSpace {\n  constructor() {\n    super(\"DeviceRGB\", 3);\n  }\n\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'DeviceRgbCS.getRgbItem: Unsupported \"dest\" type.'\n      );\n    }\n    dest[destOffset] = src[srcOffset] * 255;\n    dest[destOffset + 1] = src[srcOffset + 1] * 255;\n    dest[destOffset + 2] = src[srcOffset + 2] * 255;\n  }\n\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'DeviceRgbCS.getRgbBuffer: Unsupported \"dest\" type.'\n      );\n    }\n    if (bits === 8 && alpha01 === 0) {\n      dest.set(src.subarray(srcOffset, srcOffset + count * 3), destOffset);\n      return;\n    }\n    const scale = 255 / ((1 << bits) - 1);\n    let j = srcOffset,\n      q = destOffset;\n    for (let i = 0; i < count; ++i) {\n      dest[q++] = scale * src[j++];\n      dest[q++] = scale * src[j++];\n      dest[q++] = scale * src[j++];\n      q += alpha01;\n    }\n  }\n\n  getOutputLength(inputLength, alpha01) {\n    return ((inputLength * (3 + alpha01)) / 3) | 0;\n  }\n\n  isPassthrough(bits) {\n    return bits === 8;\n  }\n}\n\n/**\n * The default color is `new Float32Array([0, 0, 0, 1])`.\n */\nconst DeviceCmykCS = (function DeviceCmykCSClosure() {\n  // The coefficients below was found using numerical analysis: the method of\n  // steepest descent for the sum((f_i - color_value_i)^2) for r/g/b colors,\n  // where color_value is the tabular value from the table of sampled RGB colors\n  // from CMYK US Web Coated (SWOP) colorspace, and f_i is the corresponding\n  // CMYK color conversion using the estimation below:\n  //   f(A, B,.. N) = Acc+Bcm+Ccy+Dck+c+Fmm+Gmy+Hmk+Im+Jyy+Kyk+Ly+Mkk+Nk+255\n  function convertToRgb(src, srcOffset, srcScale, dest, destOffset) {\n    const c = src[srcOffset] * srcScale;\n    const m = src[srcOffset + 1] * srcScale;\n    const y = src[srcOffset + 2] * srcScale;\n    const k = src[srcOffset + 3] * srcScale;\n\n    dest[destOffset] =\n      255 +\n      c *\n        (-4.387332384609988 * c +\n          54.48615194189176 * m +\n          18.82290502165302 * y +\n          212.25662451639585 * k +\n          -285.2331026137004) +\n      m *\n        (1.7149763477362134 * m -\n          5.6096736904047315 * y +\n          -17.873870861415444 * k -\n          5.497006427196366) +\n      y *\n        (-2.5217340131683033 * y - 21.248923337353073 * k + 17.5119270841813) +\n      k * (-21.86122147463605 * k - 189.48180835922747);\n\n    dest[destOffset + 1] =\n      255 +\n      c *\n        (8.841041422036149 * c +\n          60.118027045597366 * m +\n          6.871425592049007 * y +\n          31.159100130055922 * k +\n          -79.2970844816548) +\n      m *\n        (-15.310361306967817 * m +\n          17.575251261109482 * y +\n          131.35250912493976 * k -\n          190.9453302588951) +\n      y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) +\n      k * (-20.737325471181034 * k - 187.80453709719578);\n\n    dest[destOffset + 2] =\n      255 +\n      c *\n        (0.8842522430003296 * c +\n          8.078677503112928 * m +\n          30.89978309703729 * y -\n          0.23883238689178934 * k +\n          -14.183576799673286) +\n      m *\n        (10.49593273432072 * m +\n          63.02378494754052 * y +\n          50.606957656360734 * k -\n          112.23884253719248) +\n      y *\n        (0.03296041114873217 * y +\n          115.60384449646641 * k +\n          -193.58209356861505) +\n      k * (-22.33816807309886 * k - 180.12613974708367);\n  }\n\n  // eslint-disable-next-line no-shadow\n  class DeviceCmykCS extends ColorSpace {\n    constructor() {\n      super(\"DeviceCMYK\", 4);\n    }\n\n    getRgbItem(src, srcOffset, dest, destOffset) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'DeviceCmykCS.getRgbItem: Unsupported \"dest\" type.'\n        );\n      }\n      convertToRgb(src, srcOffset, 1, dest, destOffset);\n    }\n\n    getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'DeviceCmykCS.getRgbBuffer: Unsupported \"dest\" type.'\n        );\n      }\n      const scale = 1 / ((1 << bits) - 1);\n      for (let i = 0; i < count; i++) {\n        convertToRgb(src, srcOffset, scale, dest, destOffset);\n        srcOffset += 4;\n        destOffset += 3 + alpha01;\n      }\n    }\n\n    getOutputLength(inputLength, alpha01) {\n      return ((inputLength / 4) * (3 + alpha01)) | 0;\n    }\n  }\n  return DeviceCmykCS;\n})();\n\n/**\n * CalGrayCS: Based on \"PDF Reference, Sixth Ed\", p.245\n *\n * The default color is `new Float32Array([0])`.\n */\nconst CalGrayCS = (function CalGrayCSClosure() {\n  function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {\n    // A represents a gray component of a calibrated gray space.\n    // A <---> AG in the spec\n    const A = src[srcOffset] * scale;\n    const AG = A ** cs.G;\n\n    // Computes L as per spec. ( = cs.YW * AG )\n    // Except if other than default BlackPoint values are used.\n    const L = cs.YW * AG;\n    // http://www.poynton.com/notes/colour_and_gamma/ColorFAQ.html, Ch 4.\n    // Convert values to rgb range [0, 255].\n    const val = Math.max(295.8 * L ** 0.333333333333333333 - 40.8, 0);\n    dest[destOffset] = val;\n    dest[destOffset + 1] = val;\n    dest[destOffset + 2] = val;\n  }\n\n  // eslint-disable-next-line no-shadow\n  class CalGrayCS extends ColorSpace {\n    constructor(whitePoint, blackPoint, gamma) {\n      super(\"CalGray\", 1);\n\n      if (!whitePoint) {\n        throw new FormatError(\n          \"WhitePoint missing - required for color space CalGray\"\n        );\n      }\n      blackPoint = blackPoint || [0, 0, 0];\n      gamma = gamma || 1;\n\n      // Translate arguments to spec variables.\n      this.XW = whitePoint[0];\n      this.YW = whitePoint[1];\n      this.ZW = whitePoint[2];\n\n      this.XB = blackPoint[0];\n      this.YB = blackPoint[1];\n      this.ZB = blackPoint[2];\n\n      this.G = gamma;\n\n      // Validate variables as per spec.\n      if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n        throw new FormatError(\n          `Invalid WhitePoint components for ${this.name}` +\n            \", no fallback available\"\n        );\n      }\n\n      if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {\n        info(`Invalid BlackPoint for ${this.name}, falling back to default.`);\n        this.XB = this.YB = this.ZB = 0;\n      }\n\n      if (this.XB !== 0 || this.YB !== 0 || this.ZB !== 0) {\n        warn(\n          `${this.name}, BlackPoint: XB: ${this.XB}, YB: ${this.YB}, ` +\n            `ZB: ${this.ZB}, only default values are supported.`\n        );\n      }\n\n      if (this.G < 1) {\n        info(\n          `Invalid Gamma: ${this.G} for ${this.name}, ` +\n            \"falling back to default.\"\n        );\n        this.G = 1;\n      }\n    }\n\n    getRgbItem(src, srcOffset, dest, destOffset) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'CalGrayCS.getRgbItem: Unsupported \"dest\" type.'\n        );\n      }\n      convertToRgb(this, src, srcOffset, dest, destOffset, 1);\n    }\n\n    getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'CalGrayCS.getRgbBuffer: Unsupported \"dest\" type.'\n        );\n      }\n      const scale = 1 / ((1 << bits) - 1);\n\n      for (let i = 0; i < count; ++i) {\n        convertToRgb(this, src, srcOffset, dest, destOffset, scale);\n        srcOffset += 1;\n        destOffset += 3 + alpha01;\n      }\n    }\n\n    getOutputLength(inputLength, alpha01) {\n      return inputLength * (3 + alpha01);\n    }\n  }\n  return CalGrayCS;\n})();\n\n/**\n * CalRGBCS: Based on \"PDF Reference, Sixth Ed\", p.247\n *\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nconst CalRGBCS = (function CalRGBCSClosure() {\n  // See http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html for these\n  // matrices.\n  // prettier-ignore\n  const BRADFORD_SCALE_MATRIX = new Float32Array([\n    0.8951, 0.2664, -0.1614,\n    -0.7502, 1.7135, 0.0367,\n    0.0389, -0.0685, 1.0296]);\n\n  // prettier-ignore\n  const BRADFORD_SCALE_INVERSE_MATRIX = new Float32Array([\n    0.9869929, -0.1470543, 0.1599627,\n    0.4323053, 0.5183603, 0.0492912,\n    -0.0085287, 0.0400428, 0.9684867]);\n\n  // See http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html.\n  // prettier-ignore\n  const SRGB_D65_XYZ_TO_RGB_MATRIX = new Float32Array([\n    3.2404542, -1.5371385, -0.4985314,\n    -0.9692660, 1.8760108, 0.0415560,\n    0.0556434, -0.2040259, 1.0572252]);\n\n  const FLAT_WHITEPOINT_MATRIX = new Float32Array([1, 1, 1]);\n\n  const tempNormalizeMatrix = new Float32Array(3);\n  const tempConvertMatrix1 = new Float32Array(3);\n  const tempConvertMatrix2 = new Float32Array(3);\n\n  const DECODE_L_CONSTANT = ((8 + 16) / 116) ** 3 / 8.0;\n\n  function matrixProduct(a, b, result) {\n    result[0] = a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n    result[1] = a[3] * b[0] + a[4] * b[1] + a[5] * b[2];\n    result[2] = a[6] * b[0] + a[7] * b[1] + a[8] * b[2];\n  }\n\n  function convertToFlat(sourceWhitePoint, LMS, result) {\n    result[0] = (LMS[0] * 1) / sourceWhitePoint[0];\n    result[1] = (LMS[1] * 1) / sourceWhitePoint[1];\n    result[2] = (LMS[2] * 1) / sourceWhitePoint[2];\n  }\n\n  function convertToD65(sourceWhitePoint, LMS, result) {\n    const D65X = 0.95047;\n    const D65Y = 1;\n    const D65Z = 1.08883;\n\n    result[0] = (LMS[0] * D65X) / sourceWhitePoint[0];\n    result[1] = (LMS[1] * D65Y) / sourceWhitePoint[1];\n    result[2] = (LMS[2] * D65Z) / sourceWhitePoint[2];\n  }\n\n  function sRGBTransferFunction(color) {\n    // See http://en.wikipedia.org/wiki/SRGB.\n    if (color <= 0.0031308) {\n      return adjustToRange(0, 1, 12.92 * color);\n    }\n    // Optimization:\n    // If color is close enough to 1, skip calling the following transform\n    // since calling Math.pow is expensive. If color is larger than\n    // the threshold, the final result is larger than 254.5 since\n    // ((1 + 0.055) * 0.99554525 ** (1 / 2.4) - 0.055) * 255 ===\n    // 254.50000003134699\n    if (color >= 0.99554525) {\n      return 1;\n    }\n    return adjustToRange(0, 1, (1 + 0.055) * color ** (1 / 2.4) - 0.055);\n  }\n\n  function adjustToRange(min, max, value) {\n    return Math.max(min, Math.min(max, value));\n  }\n\n  function decodeL(L) {\n    if (L < 0) {\n      return -decodeL(-L);\n    }\n    if (L > 8.0) {\n      return ((L + 16) / 116) ** 3;\n    }\n    return L * DECODE_L_CONSTANT;\n  }\n\n  function compensateBlackPoint(sourceBlackPoint, XYZ_Flat, result) {\n    // In case the blackPoint is already the default blackPoint then there is\n    // no need to do compensation.\n    if (\n      sourceBlackPoint[0] === 0 &&\n      sourceBlackPoint[1] === 0 &&\n      sourceBlackPoint[2] === 0\n    ) {\n      result[0] = XYZ_Flat[0];\n      result[1] = XYZ_Flat[1];\n      result[2] = XYZ_Flat[2];\n      return;\n    }\n\n    // For the blackPoint calculation details, please see\n    // http://www.adobe.com/content/dam/Adobe/en/devnet/photoshop/sdk/\n    // AdobeBPC.pdf.\n    // The destination blackPoint is the default blackPoint [0, 0, 0].\n    const zeroDecodeL = decodeL(0);\n\n    const X_DST = zeroDecodeL;\n    const X_SRC = decodeL(sourceBlackPoint[0]);\n\n    const Y_DST = zeroDecodeL;\n    const Y_SRC = decodeL(sourceBlackPoint[1]);\n\n    const Z_DST = zeroDecodeL;\n    const Z_SRC = decodeL(sourceBlackPoint[2]);\n\n    const X_Scale = (1 - X_DST) / (1 - X_SRC);\n    const X_Offset = 1 - X_Scale;\n\n    const Y_Scale = (1 - Y_DST) / (1 - Y_SRC);\n    const Y_Offset = 1 - Y_Scale;\n\n    const Z_Scale = (1 - Z_DST) / (1 - Z_SRC);\n    const Z_Offset = 1 - Z_Scale;\n\n    result[0] = XYZ_Flat[0] * X_Scale + X_Offset;\n    result[1] = XYZ_Flat[1] * Y_Scale + Y_Offset;\n    result[2] = XYZ_Flat[2] * Z_Scale + Z_Offset;\n  }\n\n  function normalizeWhitePointToFlat(sourceWhitePoint, XYZ_In, result) {\n    // In case the whitePoint is already flat then there is no need to do\n    // normalization.\n    if (sourceWhitePoint[0] === 1 && sourceWhitePoint[2] === 1) {\n      result[0] = XYZ_In[0];\n      result[1] = XYZ_In[1];\n      result[2] = XYZ_In[2];\n      return;\n    }\n\n    const LMS = result;\n    matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n\n    const LMS_Flat = tempNormalizeMatrix;\n    convertToFlat(sourceWhitePoint, LMS, LMS_Flat);\n\n    matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_Flat, result);\n  }\n\n  function normalizeWhitePointToD65(sourceWhitePoint, XYZ_In, result) {\n    const LMS = result;\n    matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n\n    const LMS_D65 = tempNormalizeMatrix;\n    convertToD65(sourceWhitePoint, LMS, LMS_D65);\n\n    matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_D65, result);\n  }\n\n  function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {\n    // A, B and C represent a red, green and blue components of a calibrated\n    // rgb space.\n    const A = adjustToRange(0, 1, src[srcOffset] * scale);\n    const B = adjustToRange(0, 1, src[srcOffset + 1] * scale);\n    const C = adjustToRange(0, 1, src[srcOffset + 2] * scale);\n\n    // A <---> AGR in the spec\n    // B <---> BGG in the spec\n    // C <---> CGB in the spec\n    const AGR = A === 1 ? 1 : A ** cs.GR;\n    const BGG = B === 1 ? 1 : B ** cs.GG;\n    const CGB = C === 1 ? 1 : C ** cs.GB;\n\n    // Computes intermediate variables L, M, N as per spec.\n    // To decode X, Y, Z values map L, M, N directly to them.\n    const X = cs.MXA * AGR + cs.MXB * BGG + cs.MXC * CGB;\n    const Y = cs.MYA * AGR + cs.MYB * BGG + cs.MYC * CGB;\n    const Z = cs.MZA * AGR + cs.MZB * BGG + cs.MZC * CGB;\n\n    // The following calculations are based on this document:\n    // http://www.adobe.com/content/dam/Adobe/en/devnet/photoshop/sdk/\n    // AdobeBPC.pdf.\n    const XYZ = tempConvertMatrix1;\n    XYZ[0] = X;\n    XYZ[1] = Y;\n    XYZ[2] = Z;\n    const XYZ_Flat = tempConvertMatrix2;\n\n    normalizeWhitePointToFlat(cs.whitePoint, XYZ, XYZ_Flat);\n\n    const XYZ_Black = tempConvertMatrix1;\n    compensateBlackPoint(cs.blackPoint, XYZ_Flat, XYZ_Black);\n\n    const XYZ_D65 = tempConvertMatrix2;\n    normalizeWhitePointToD65(FLAT_WHITEPOINT_MATRIX, XYZ_Black, XYZ_D65);\n\n    const SRGB = tempConvertMatrix1;\n    matrixProduct(SRGB_D65_XYZ_TO_RGB_MATRIX, XYZ_D65, SRGB);\n\n    // Convert the values to rgb range [0, 255].\n    dest[destOffset] = sRGBTransferFunction(SRGB[0]) * 255;\n    dest[destOffset + 1] = sRGBTransferFunction(SRGB[1]) * 255;\n    dest[destOffset + 2] = sRGBTransferFunction(SRGB[2]) * 255;\n  }\n\n  // eslint-disable-next-line no-shadow\n  class CalRGBCS extends ColorSpace {\n    constructor(whitePoint, blackPoint, gamma, matrix) {\n      super(\"CalRGB\", 3);\n\n      if (!whitePoint) {\n        throw new FormatError(\n          \"WhitePoint missing - required for color space CalRGB\"\n        );\n      }\n      blackPoint = blackPoint || new Float32Array(3);\n      gamma = gamma || new Float32Array([1, 1, 1]);\n      matrix = matrix || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);\n\n      // Translate arguments to spec variables.\n      const XW = whitePoint[0];\n      const YW = whitePoint[1];\n      const ZW = whitePoint[2];\n      this.whitePoint = whitePoint;\n\n      const XB = blackPoint[0];\n      const YB = blackPoint[1];\n      const ZB = blackPoint[2];\n      this.blackPoint = blackPoint;\n\n      this.GR = gamma[0];\n      this.GG = gamma[1];\n      this.GB = gamma[2];\n\n      this.MXA = matrix[0];\n      this.MYA = matrix[1];\n      this.MZA = matrix[2];\n      this.MXB = matrix[3];\n      this.MYB = matrix[4];\n      this.MZB = matrix[5];\n      this.MXC = matrix[6];\n      this.MYC = matrix[7];\n      this.MZC = matrix[8];\n\n      // Validate variables as per spec.\n      if (XW < 0 || ZW < 0 || YW !== 1) {\n        throw new FormatError(\n          `Invalid WhitePoint components for ${this.name}` +\n            \", no fallback available\"\n        );\n      }\n\n      if (XB < 0 || YB < 0 || ZB < 0) {\n        info(\n          `Invalid BlackPoint for ${this.name} [${XB}, ${YB}, ${ZB}], ` +\n            \"falling back to default.\"\n        );\n        this.blackPoint = new Float32Array(3);\n      }\n\n      if (this.GR < 0 || this.GG < 0 || this.GB < 0) {\n        info(\n          `Invalid Gamma [${this.GR}, ${this.GG}, ${this.GB}] for ` +\n            `${this.name}, falling back to default.`\n        );\n        this.GR = this.GG = this.GB = 1;\n      }\n    }\n\n    getRgbItem(src, srcOffset, dest, destOffset) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'CalRGBCS.getRgbItem: Unsupported \"dest\" type.'\n        );\n      }\n      convertToRgb(this, src, srcOffset, dest, destOffset, 1);\n    }\n\n    getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'CalRGBCS.getRgbBuffer: Unsupported \"dest\" type.'\n        );\n      }\n      const scale = 1 / ((1 << bits) - 1);\n\n      for (let i = 0; i < count; ++i) {\n        convertToRgb(this, src, srcOffset, dest, destOffset, scale);\n        srcOffset += 3;\n        destOffset += 3 + alpha01;\n      }\n    }\n\n    getOutputLength(inputLength, alpha01) {\n      return ((inputLength * (3 + alpha01)) / 3) | 0;\n    }\n  }\n  return CalRGBCS;\n})();\n\n/**\n * LabCS: Based on \"PDF Reference, Sixth Ed\", p.250\n *\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nconst LabCS = (function LabCSClosure() {\n  // Function g(x) from spec\n  function fn_g(x) {\n    let result;\n    if (x >= 6 / 29) {\n      result = x * x * x;\n    } else {\n      result = (108 / 841) * (x - 4 / 29);\n    }\n    return result;\n  }\n\n  function decode(value, high1, low2, high2) {\n    return low2 + (value * (high2 - low2)) / high1;\n  }\n\n  // If decoding is needed maxVal should be 2^bits per component - 1.\n  function convertToRgb(cs, src, srcOffset, maxVal, dest, destOffset) {\n    // XXX: Lab input is in the range of [0, 100], [amin, amax], [bmin, bmax]\n    // not the usual [0, 1]. If a command like setFillColor is used the src\n    // values will already be within the correct range. However, if we are\n    // converting an image we have to map the values to the correct range given\n    // above.\n    // Ls,as,bs <---> L*,a*,b* in the spec\n    let Ls = src[srcOffset];\n    let as = src[srcOffset + 1];\n    let bs = src[srcOffset + 2];\n    if (maxVal !== false) {\n      Ls = decode(Ls, maxVal, 0, 100);\n      as = decode(as, maxVal, cs.amin, cs.amax);\n      bs = decode(bs, maxVal, cs.bmin, cs.bmax);\n    }\n\n    // Adjust limits of 'as' and 'bs'\n    if (as > cs.amax) {\n      as = cs.amax;\n    } else if (as < cs.amin) {\n      as = cs.amin;\n    }\n    if (bs > cs.bmax) {\n      bs = cs.bmax;\n    } else if (bs < cs.bmin) {\n      bs = cs.bmin;\n    }\n\n    // Computes intermediate variables X,Y,Z as per spec\n    const M = (Ls + 16) / 116;\n    const L = M + as / 500;\n    const N = M - bs / 200;\n\n    const X = cs.XW * fn_g(L);\n    const Y = cs.YW * fn_g(M);\n    const Z = cs.ZW * fn_g(N);\n\n    let r, g, b;\n    // Using different conversions for D50 and D65 white points,\n    // per http://www.color.org/srgb.pdf\n    if (cs.ZW < 1) {\n      // Assuming D50 (X=0.9642, Y=1.00, Z=0.8249)\n      r = X * 3.1339 + Y * -1.617 + Z * -0.4906;\n      g = X * -0.9785 + Y * 1.916 + Z * 0.0333;\n      b = X * 0.072 + Y * -0.229 + Z * 1.4057;\n    } else {\n      // Assuming D65 (X=0.9505, Y=1.00, Z=1.0888)\n      r = X * 3.2406 + Y * -1.5372 + Z * -0.4986;\n      g = X * -0.9689 + Y * 1.8758 + Z * 0.0415;\n      b = X * 0.0557 + Y * -0.204 + Z * 1.057;\n    }\n    // Convert the color values to the [0,255] range (clamping is automatic).\n    dest[destOffset] = Math.sqrt(r) * 255;\n    dest[destOffset + 1] = Math.sqrt(g) * 255;\n    dest[destOffset + 2] = Math.sqrt(b) * 255;\n  }\n\n  // eslint-disable-next-line no-shadow\n  class LabCS extends ColorSpace {\n    constructor(whitePoint, blackPoint, range) {\n      super(\"Lab\", 3);\n\n      if (!whitePoint) {\n        throw new FormatError(\n          \"WhitePoint missing - required for color space Lab\"\n        );\n      }\n      blackPoint = blackPoint || [0, 0, 0];\n      range = range || [-100, 100, -100, 100];\n\n      // Translate args to spec variables\n      this.XW = whitePoint[0];\n      this.YW = whitePoint[1];\n      this.ZW = whitePoint[2];\n      this.amin = range[0];\n      this.amax = range[1];\n      this.bmin = range[2];\n      this.bmax = range[3];\n\n      // These are here just for completeness - the spec doesn't offer any\n      // formulas that use BlackPoint in Lab\n      this.XB = blackPoint[0];\n      this.YB = blackPoint[1];\n      this.ZB = blackPoint[2];\n\n      // Validate vars as per spec\n      if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n        throw new FormatError(\n          \"Invalid WhitePoint components, no fallback available\"\n        );\n      }\n\n      if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {\n        info(\"Invalid BlackPoint, falling back to default\");\n        this.XB = this.YB = this.ZB = 0;\n      }\n\n      if (this.amin > this.amax || this.bmin > this.bmax) {\n        info(\"Invalid Range, falling back to defaults\");\n        this.amin = -100;\n        this.amax = 100;\n        this.bmin = -100;\n        this.bmax = 100;\n      }\n    }\n\n    getRgbItem(src, srcOffset, dest, destOffset) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'LabCS.getRgbItem: Unsupported \"dest\" type.'\n        );\n      }\n      convertToRgb(this, src, srcOffset, false, dest, destOffset);\n    }\n\n    getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'LabCS.getRgbBuffer: Unsupported \"dest\" type.'\n        );\n      }\n      const maxVal = (1 << bits) - 1;\n      for (let i = 0; i < count; i++) {\n        convertToRgb(this, src, srcOffset, maxVal, dest, destOffset);\n        srcOffset += 3;\n        destOffset += 3 + alpha01;\n      }\n    }\n\n    getOutputLength(inputLength, alpha01) {\n      return ((inputLength * (3 + alpha01)) / 3) | 0;\n    }\n\n    isDefaultDecode(decodeMap, bpc) {\n      // XXX: Decoding is handled with the lab conversion because of the strange\n      // ranges that are used.\n      return true;\n    }\n\n    get usesZeroToOneRange() {\n      return shadow(this, \"usesZeroToOneRange\", false);\n    }\n  }\n  return LabCS;\n})();\n\nexport { ColorSpace };\n","/* Copyright 2019 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\nimport { assert, info, shadow, unreachable } from \"../shared/util.js\";\nimport { RefSetCache } from \"./primitives.js\";\n\nclass BaseLocalCache {\n  constructor(options) {\n    if (this.constructor === BaseLocalCache) {\n      unreachable(\"Cannot initialize BaseLocalCache.\");\n    }\n    if (!options || !options.onlyRefs) {\n      this._nameRefMap = new Map();\n      this._imageMap = new Map();\n    }\n    this._imageCache = new RefSetCache();\n  }\n\n  getByName(name) {\n    const ref = this._nameRefMap.get(name);\n    if (ref) {\n      return this.getByRef(ref);\n    }\n    return this._imageMap.get(name) || null;\n  }\n\n  getByRef(ref) {\n    return this._imageCache.get(ref) || null;\n  }\n\n  set(name, ref, data) {\n    unreachable(\"Abstract method `set` called.\");\n  }\n}\n\nclass LocalImageCache extends BaseLocalCache {\n  set(name, ref = null, data) {\n    if (!name) {\n      throw new Error('LocalImageCache.set - expected \"name\" argument.');\n    }\n    if (ref) {\n      if (this._imageCache.has(ref)) {\n        return;\n      }\n      this._nameRefMap.set(name, ref);\n      this._imageCache.put(ref, data);\n      return;\n    }\n    // name\n    if (this._imageMap.has(name)) {\n      return;\n    }\n    this._imageMap.set(name, data);\n  }\n}\n\nclass LocalColorSpaceCache extends BaseLocalCache {\n  set(name = null, ref = null, data) {\n    if (!name && !ref) {\n      throw new Error(\n        'LocalColorSpaceCache.set - expected \"name\" and/or \"ref\" argument.'\n      );\n    }\n    if (ref) {\n      if (this._imageCache.has(ref)) {\n        return;\n      }\n      if (name) {\n        // Optional when `ref` is defined.\n        this._nameRefMap.set(name, ref);\n      }\n      this._imageCache.put(ref, data);\n      return;\n    }\n    // name\n    if (this._imageMap.has(name)) {\n      return;\n    }\n    this._imageMap.set(name, data);\n  }\n}\n\nclass LocalFunctionCache extends BaseLocalCache {\n  constructor(options) {\n    super({ onlyRefs: true });\n  }\n\n  getByName(name) {\n    unreachable(\"Should not call `getByName` method.\");\n  }\n\n  set(name = null, ref, data) {\n    if (!ref) {\n      throw new Error('LocalFunctionCache.set - expected \"ref\" argument.');\n    }\n    if (this._imageCache.has(ref)) {\n      return;\n    }\n    this._imageCache.put(ref, data);\n  }\n}\n\nclass LocalGStateCache extends BaseLocalCache {\n  set(name, ref = null, data) {\n    if (!name) {\n      throw new Error('LocalGStateCache.set - expected \"name\" argument.');\n    }\n    if (ref) {\n      if (this._imageCache.has(ref)) {\n        return;\n      }\n      this._nameRefMap.set(name, ref);\n      this._imageCache.put(ref, data);\n      return;\n    }\n    // name\n    if (this._imageMap.has(name)) {\n      return;\n    }\n    this._imageMap.set(name, data);\n  }\n}\n\nclass GlobalImageCache {\n  static get NUM_PAGES_THRESHOLD() {\n    return shadow(this, \"NUM_PAGES_THRESHOLD\", 2);\n  }\n\n  static get MAX_IMAGES_TO_CACHE() {\n    return shadow(this, \"MAX_IMAGES_TO_CACHE\", 10);\n  }\n\n  constructor() {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        GlobalImageCache.NUM_PAGES_THRESHOLD > 1,\n        \"GlobalImageCache - invalid NUM_PAGES_THRESHOLD constant.\"\n      );\n    }\n    this._refCache = new RefSetCache();\n    this._imageCache = new RefSetCache();\n  }\n\n  shouldCache(ref, pageIndex) {\n    const pageIndexSet = this._refCache.get(ref);\n    const numPages = pageIndexSet\n      ? pageIndexSet.size + (pageIndexSet.has(pageIndex) ? 0 : 1)\n      : 1;\n\n    if (numPages < GlobalImageCache.NUM_PAGES_THRESHOLD) {\n      return false;\n    }\n    if (\n      !this._imageCache.has(ref) &&\n      this._imageCache.size >= GlobalImageCache.MAX_IMAGES_TO_CACHE\n    ) {\n      return false;\n    }\n    return true;\n  }\n\n  addPageIndex(ref, pageIndex) {\n    let pageIndexSet = this._refCache.get(ref);\n    if (!pageIndexSet) {\n      pageIndexSet = new Set();\n      this._refCache.put(ref, pageIndexSet);\n    }\n    pageIndexSet.add(pageIndex);\n  }\n\n  getData(ref, pageIndex) {\n    const pageIndexSet = this._refCache.get(ref);\n    if (!pageIndexSet) {\n      return null;\n    }\n    if (pageIndexSet.size < GlobalImageCache.NUM_PAGES_THRESHOLD) {\n      return null;\n    }\n    if (!this._imageCache.has(ref)) {\n      return null;\n    }\n    // Ensure that we keep track of all pages containing the image reference.\n    pageIndexSet.add(pageIndex);\n\n    return this._imageCache.get(ref);\n  }\n\n  setData(ref, data) {\n    if (!this._refCache.has(ref)) {\n      throw new Error(\n        'GlobalImageCache.setData - expected \"addPageIndex\" to have been called.'\n      );\n    }\n    if (this._imageCache.has(ref)) {\n      return;\n    }\n    if (this._imageCache.size >= GlobalImageCache.MAX_IMAGES_TO_CACHE) {\n      info(\n        \"GlobalImageCache.setData - ignoring image above MAX_IMAGES_TO_CACHE.\"\n      );\n      return;\n    }\n    this._imageCache.put(ref, data);\n  }\n\n  clear(onlyData = false) {\n    if (!onlyData) {\n      this._refCache.clear();\n    }\n    this._imageCache.clear();\n  }\n}\n\nexport {\n  LocalImageCache,\n  LocalColorSpaceCache,\n  LocalFunctionCache,\n  LocalGStateCache,\n  GlobalImageCache,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\nimport {\n  AnnotationBorderStyleType,\n  AnnotationFieldFlag,\n  AnnotationFlag,\n  AnnotationReplyType,\n  AnnotationType,\n  assert,\n  escapeString,\n  getModificationDate,\n  isString,\n  OPS,\n  stringToPDFString,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport { Catalog, FileSpec, ObjectLoader } from \"./obj.js\";\nimport { Dict, isDict, isName, isRef, isStream, Name } from \"./primitives.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { getInheritableProperty } from \"./core_utils.js\";\nimport { OperatorList } from \"./operator_list.js\";\nimport { StringStream } from \"./stream.js\";\nimport { writeDict } from \"./writer.js\";\n\nclass AnnotationFactory {\n  /**\n   * Create an `Annotation` object of the correct type for the given reference\n   * to an annotation dictionary. This yields a promise that is resolved when\n   * the `Annotation` object is constructed.\n   *\n   * @param {XRef} xref\n   * @param {Object} ref\n   * @param {PDFManager} pdfManager\n   * @param {Object} idFactory\n   * @returns {Promise} A promise that is resolved with an {Annotation}\n   *   instance.\n   */\n  static create(xref, ref, pdfManager, idFactory) {\n    return pdfManager.ensureCatalog(\"acroForm\").then(acroForm => {\n      return pdfManager.ensure(this, \"_create\", [\n        xref,\n        ref,\n        pdfManager,\n        idFactory,\n        acroForm,\n      ]);\n    });\n  }\n\n  /**\n   * @private\n   */\n  static _create(xref, ref, pdfManager, idFactory, acroForm) {\n    const dict = xref.fetchIfRef(ref);\n    if (!isDict(dict)) {\n      return undefined;\n    }\n\n    const id = isRef(ref) ? ref.toString() : `annot_${idFactory.createObjId()}`;\n\n    // Determine the annotation's subtype.\n    let subtype = dict.get(\"Subtype\");\n    subtype = isName(subtype) ? subtype.name : null;\n\n    // Return the right annotation object based on the subtype and field type.\n    const parameters = {\n      xref,\n      ref,\n      dict,\n      subtype,\n      id,\n      pdfManager,\n      acroForm: acroForm instanceof Dict ? acroForm : Dict.empty,\n    };\n\n    switch (subtype) {\n      case \"Link\":\n        return new LinkAnnotation(parameters);\n\n      case \"Text\":\n        return new TextAnnotation(parameters);\n\n      case \"Widget\":\n        let fieldType = getInheritableProperty({ dict, key: \"FT\" });\n        fieldType = isName(fieldType) ? fieldType.name : null;\n\n        switch (fieldType) {\n          case \"Tx\":\n            return new TextWidgetAnnotation(parameters);\n          case \"Btn\":\n            return new ButtonWidgetAnnotation(parameters);\n          case \"Ch\":\n            return new ChoiceWidgetAnnotation(parameters);\n        }\n        warn(\n          'Unimplemented widget field type \"' +\n            fieldType +\n            '\", ' +\n            \"falling back to base field type.\"\n        );\n        return new WidgetAnnotation(parameters);\n\n      case \"Popup\":\n        return new PopupAnnotation(parameters);\n\n      case \"FreeText\":\n        return new FreeTextAnnotation(parameters);\n\n      case \"Line\":\n        return new LineAnnotation(parameters);\n\n      case \"Square\":\n        return new SquareAnnotation(parameters);\n\n      case \"Circle\":\n        return new CircleAnnotation(parameters);\n\n      case \"PolyLine\":\n        return new PolylineAnnotation(parameters);\n\n      case \"Polygon\":\n        return new PolygonAnnotation(parameters);\n\n      case \"Caret\":\n        return new CaretAnnotation(parameters);\n\n      case \"Ink\":\n        return new InkAnnotation(parameters);\n\n      case \"Highlight\":\n        return new HighlightAnnotation(parameters);\n\n      case \"Underline\":\n        return new UnderlineAnnotation(parameters);\n\n      case \"Squiggly\":\n        return new SquigglyAnnotation(parameters);\n\n      case \"StrikeOut\":\n        return new StrikeOutAnnotation(parameters);\n\n      case \"Stamp\":\n        return new StampAnnotation(parameters);\n\n      case \"FileAttachment\":\n        return new FileAttachmentAnnotation(parameters);\n\n      default:\n        if (!subtype) {\n          warn(\"Annotation is missing the required /Subtype.\");\n        } else {\n          warn(\n            'Unimplemented annotation type \"' +\n              subtype +\n              '\", ' +\n              \"falling back to base annotation.\"\n          );\n        }\n        return new Annotation(parameters);\n    }\n  }\n}\n\nfunction getQuadPoints(dict, rect) {\n  if (!dict.has(\"QuadPoints\")) {\n    return null;\n  }\n\n  // The region is described as a number of quadrilaterals.\n  // Each quadrilateral must consist of eight coordinates.\n  const quadPoints = dict.getArray(\"QuadPoints\");\n  if (!Array.isArray(quadPoints) || quadPoints.length % 8 > 0) {\n    return null;\n  }\n\n  const quadPointsLists = [];\n  for (let i = 0, ii = quadPoints.length / 8; i < ii; i++) {\n    // Each series of eight numbers represents the coordinates for one\n    // quadrilateral in the order [x1, y1, x2, y2, x3, y3, x4, y4].\n    // Convert this to an array of objects with x and y coordinates.\n    quadPointsLists.push([]);\n    for (let j = i * 8, jj = i * 8 + 8; j < jj; j += 2) {\n      const x = quadPoints[j];\n      const y = quadPoints[j + 1];\n\n      // The quadpoints should be ignored if any coordinate in the array\n      // lies outside the region specified by the rectangle.\n      if (x < rect[0] || x > rect[2] || y < rect[1] || y > rect[3]) {\n        return null;\n      }\n      quadPointsLists[i].push({ x, y });\n    }\n  }\n  return quadPointsLists;\n}\n\nfunction getTransformMatrix(rect, bbox, matrix) {\n  // 12.5.5: Algorithm: Appearance streams\n  const [minX, minY, maxX, maxY] = Util.getAxialAlignedBoundingBox(\n    bbox,\n    matrix\n  );\n  if (minX === maxX || minY === maxY) {\n    // From real-life file, bbox was [0, 0, 0, 0]. In this case,\n    // just apply the transform for rect\n    return [1, 0, 0, 1, rect[0], rect[1]];\n  }\n\n  const xRatio = (rect[2] - rect[0]) / (maxX - minX);\n  const yRatio = (rect[3] - rect[1]) / (maxY - minY);\n  return [\n    xRatio,\n    0,\n    0,\n    yRatio,\n    rect[0] - minX * xRatio,\n    rect[1] - minY * yRatio,\n  ];\n}\n\nclass Annotation {\n  constructor(params) {\n    const dict = params.dict;\n\n    this.setContents(dict.get(\"Contents\"));\n    this.setModificationDate(dict.get(\"M\"));\n    this.setFlags(dict.get(\"F\"));\n    this.setRectangle(dict.getArray(\"Rect\"));\n    this.setColor(dict.getArray(\"C\"));\n    this.setBorderStyle(dict);\n    this.setAppearance(dict);\n\n    // Expose public properties using a data object.\n    this.data = {\n      annotationFlags: this.flags,\n      borderStyle: this.borderStyle,\n      color: this.color,\n      contents: this.contents,\n      hasAppearance: !!this.appearance,\n      id: params.id,\n      modificationDate: this.modificationDate,\n      rect: this.rectangle,\n      subtype: params.subtype,\n    };\n  }\n\n  /**\n   * @private\n   */\n  _hasFlag(flags, flag) {\n    return !!(flags & flag);\n  }\n\n  /**\n   * @private\n   */\n  _isViewable(flags) {\n    return (\n      !this._hasFlag(flags, AnnotationFlag.INVISIBLE) &&\n      !this._hasFlag(flags, AnnotationFlag.HIDDEN) &&\n      !this._hasFlag(flags, AnnotationFlag.NOVIEW)\n    );\n  }\n\n  /**\n   * @private\n   */\n  _isPrintable(flags) {\n    return (\n      this._hasFlag(flags, AnnotationFlag.PRINT) &&\n      !this._hasFlag(flags, AnnotationFlag.INVISIBLE) &&\n      !this._hasFlag(flags, AnnotationFlag.HIDDEN)\n    );\n  }\n\n  /**\n   * @type {boolean}\n   */\n  get viewable() {\n    if (this.flags === 0) {\n      return true;\n    }\n    return this._isViewable(this.flags);\n  }\n\n  /**\n   * @type {boolean}\n   */\n  get printable() {\n    if (this.flags === 0) {\n      return false;\n    }\n    return this._isPrintable(this.flags);\n  }\n\n  /**\n   * Set the contents.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {string} contents - Text to display for the annotation or, if the\n   *                            type of annotation does not display text, a\n   *                            description of the annotation's contents\n   */\n  setContents(contents) {\n    this.contents = stringToPDFString(contents || \"\");\n  }\n\n  /**\n   * Set the modification date.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {string} modificationDate - PDF date string that indicates when the\n   *                                    annotation was last modified\n   */\n  setModificationDate(modificationDate) {\n    this.modificationDate = isString(modificationDate)\n      ? modificationDate\n      : null;\n  }\n\n  /**\n   * Set the flags.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {number} flags - Unsigned 32-bit integer specifying annotation\n   *                         characteristics\n   * @see {@link shared/util.js}\n   */\n  setFlags(flags) {\n    this.flags = Number.isInteger(flags) && flags > 0 ? flags : 0;\n  }\n\n  /**\n   * Check if a provided flag is set.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {number} flag - Hexadecimal representation for an annotation\n   *                        characteristic\n   * @returns {boolean}\n   * @see {@link shared/util.js}\n   */\n  hasFlag(flag) {\n    return this._hasFlag(this.flags, flag);\n  }\n\n  /**\n   * Set the rectangle.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {Array} rectangle - The rectangle array with exactly four entries\n   */\n  setRectangle(rectangle) {\n    if (Array.isArray(rectangle) && rectangle.length === 4) {\n      this.rectangle = Util.normalizeRect(rectangle);\n    } else {\n      this.rectangle = [0, 0, 0, 0];\n    }\n  }\n\n  /**\n   * Set the color and take care of color space conversion.\n   * The default value is black, in RGB color space.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {Array} color - The color array containing either 0\n   *                        (transparent), 1 (grayscale), 3 (RGB) or\n   *                        4 (CMYK) elements\n   */\n  setColor(color) {\n    const rgbColor = new Uint8ClampedArray(3);\n    if (!Array.isArray(color)) {\n      this.color = rgbColor;\n      return;\n    }\n\n    switch (color.length) {\n      case 0: // Transparent, which we indicate with a null value\n        this.color = null;\n        break;\n\n      case 1: // Convert grayscale to RGB\n        ColorSpace.singletons.gray.getRgbItem(color, 0, rgbColor, 0);\n        this.color = rgbColor;\n        break;\n\n      case 3: // Convert RGB percentages to RGB\n        ColorSpace.singletons.rgb.getRgbItem(color, 0, rgbColor, 0);\n        this.color = rgbColor;\n        break;\n\n      case 4: // Convert CMYK to RGB\n        ColorSpace.singletons.cmyk.getRgbItem(color, 0, rgbColor, 0);\n        this.color = rgbColor;\n        break;\n\n      default:\n        this.color = rgbColor;\n        break;\n    }\n  }\n\n  /**\n   * Set the border style (as AnnotationBorderStyle object).\n   *\n   * @public\n   * @memberof Annotation\n   * @param {Dict} borderStyle - The border style dictionary\n   */\n  setBorderStyle(borderStyle) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(this.rectangle, \"setRectangle must have been called previously.\");\n    }\n\n    this.borderStyle = new AnnotationBorderStyle();\n    if (!isDict(borderStyle)) {\n      return;\n    }\n    if (borderStyle.has(\"BS\")) {\n      const dict = borderStyle.get(\"BS\");\n      const dictType = dict.get(\"Type\");\n\n      if (!dictType || isName(dictType, \"Border\")) {\n        this.borderStyle.setWidth(dict.get(\"W\"), this.rectangle);\n        this.borderStyle.setStyle(dict.get(\"S\"));\n        this.borderStyle.setDashArray(dict.getArray(\"D\"));\n      }\n    } else if (borderStyle.has(\"Border\")) {\n      const array = borderStyle.getArray(\"Border\");\n      if (Array.isArray(array) && array.length >= 3) {\n        this.borderStyle.setHorizontalCornerRadius(array[0]);\n        this.borderStyle.setVerticalCornerRadius(array[1]);\n        this.borderStyle.setWidth(array[2], this.rectangle);\n\n        if (array.length === 4) {\n          // Dash array available\n          this.borderStyle.setDashArray(array[3]);\n        }\n      }\n    } else {\n      // There are no border entries in the dictionary. According to the\n      // specification, we should draw a solid border of width 1 in that\n      // case, but Adobe Reader did not implement that part of the\n      // specification and instead draws no border at all, so we do the same.\n      // See also https://github.com/mozilla/pdf.js/issues/6179.\n      this.borderStyle.setWidth(0);\n    }\n  }\n\n  /**\n   * Set the (normal) appearance.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {Dict} dict - The annotation's data dictionary\n   */\n  setAppearance(dict) {\n    this.appearance = null;\n\n    const appearanceStates = dict.get(\"AP\");\n    if (!isDict(appearanceStates)) {\n      return;\n    }\n\n    // In case the normal appearance is a stream, then it is used directly.\n    const normalAppearanceState = appearanceStates.get(\"N\");\n    if (isStream(normalAppearanceState)) {\n      this.appearance = normalAppearanceState;\n      return;\n    }\n    if (!isDict(normalAppearanceState)) {\n      return;\n    }\n\n    // In case the normal appearance is a dictionary, the `AS` entry provides\n    // the key of the stream in this dictionary.\n    const as = dict.get(\"AS\");\n    if (!isName(as) || !normalAppearanceState.has(as.name)) {\n      return;\n    }\n    this.appearance = normalAppearanceState.get(as.name);\n  }\n\n  loadResources(keys) {\n    return this.appearance.dict.getAsync(\"Resources\").then(resources => {\n      if (!resources) {\n        return undefined;\n      }\n\n      const objectLoader = new ObjectLoader(resources, keys, resources.xref);\n      return objectLoader.load().then(function () {\n        return resources;\n      });\n    });\n  }\n\n  getOperatorList(evaluator, task, renderForms, annotationStorage) {\n    if (!this.appearance) {\n      return Promise.resolve(new OperatorList());\n    }\n\n    const appearance = this.appearance;\n    const data = this.data;\n    const appearanceDict = appearance.dict;\n    const resourcesPromise = this.loadResources([\n      \"ExtGState\",\n      \"ColorSpace\",\n      \"Pattern\",\n      \"Shading\",\n      \"XObject\",\n      \"Font\",\n    ]);\n    const bbox = appearanceDict.getArray(\"BBox\") || [0, 0, 1, 1];\n    const matrix = appearanceDict.getArray(\"Matrix\") || [1, 0, 0, 1, 0, 0];\n    const transform = getTransformMatrix(data.rect, bbox, matrix);\n\n    return resourcesPromise.then(resources => {\n      const opList = new OperatorList();\n      opList.addOp(OPS.beginAnnotation, [data.rect, transform, matrix]);\n      return evaluator\n        .getOperatorList({\n          stream: appearance,\n          task,\n          resources,\n          operatorList: opList,\n        })\n        .then(() => {\n          opList.addOp(OPS.endAnnotation, []);\n          appearance.reset();\n          return opList;\n        });\n    });\n  }\n\n  async save(evaluator, task, annotationStorage) {\n    return null;\n  }\n}\n\n/**\n * Contains all data regarding an annotation's border style.\n */\nclass AnnotationBorderStyle {\n  constructor() {\n    this.width = 1;\n    this.style = AnnotationBorderStyleType.SOLID;\n    this.dashArray = [3];\n    this.horizontalCornerRadius = 0;\n    this.verticalCornerRadius = 0;\n  }\n\n  /**\n   * Set the width.\n   *\n   * @public\n   * @memberof AnnotationBorderStyle\n   * @param {number} width - The width.\n   * @param {Array} rect - The annotation `Rect` entry.\n   */\n  setWidth(width, rect = [0, 0, 0, 0]) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        Array.isArray(rect) && rect.length === 4,\n        \"A valid `rect` parameter must be provided.\"\n      );\n    }\n\n    // Some corrupt PDF generators may provide the width as a `Name`,\n    // rather than as a number (fixes issue 10385).\n    if (isName(width)) {\n      this.width = 0; // This is consistent with the behaviour in Adobe Reader.\n      return;\n    }\n    if (Number.isInteger(width)) {\n      if (width > 0) {\n        const maxWidth = (rect[2] - rect[0]) / 2;\n        const maxHeight = (rect[3] - rect[1]) / 2;\n\n        // Ignore large `width`s, since they lead to the Annotation overflowing\n        // the size set by the `Rect` entry thus causing the `annotationLayer`\n        // to render it over the surrounding document (fixes bug1552113.pdf).\n        if (\n          maxWidth > 0 &&\n          maxHeight > 0 &&\n          (width > maxWidth || width > maxHeight)\n        ) {\n          warn(`AnnotationBorderStyle.setWidth - ignoring width: ${width}`);\n          width = 1;\n        }\n      }\n      this.width = width;\n    }\n  }\n\n  /**\n   * Set the style.\n   *\n   * @public\n   * @memberof AnnotationBorderStyle\n   * @param {Name} style - The annotation style.\n   * @see {@link shared/util.js}\n   */\n  setStyle(style) {\n    if (!isName(style)) {\n      return;\n    }\n    switch (style.name) {\n      case \"S\":\n        this.style = AnnotationBorderStyleType.SOLID;\n        break;\n\n      case \"D\":\n        this.style = AnnotationBorderStyleType.DASHED;\n        break;\n\n      case \"B\":\n        this.style = AnnotationBorderStyleType.BEVELED;\n        break;\n\n      case \"I\":\n        this.style = AnnotationBorderStyleType.INSET;\n        break;\n\n      case \"U\":\n        this.style = AnnotationBorderStyleType.UNDERLINE;\n        break;\n\n      default:\n        break;\n    }\n  }\n\n  /**\n   * Set the dash array.\n   *\n   * @public\n   * @memberof AnnotationBorderStyle\n   * @param {Array} dashArray - The dash array with at least one element\n   */\n  setDashArray(dashArray) {\n    // We validate the dash array, but we do not use it because CSS does not\n    // allow us to change spacing of dashes. For more information, visit\n    // http://www.w3.org/TR/css3-background/#the-border-style.\n    if (Array.isArray(dashArray) && dashArray.length > 0) {\n      // According to the PDF specification: the elements in `dashArray`\n      // shall be numbers that are nonnegative and not all equal to zero.\n      let isValid = true;\n      let allZeros = true;\n      for (const element of dashArray) {\n        const validNumber = +element >= 0;\n        if (!validNumber) {\n          isValid = false;\n          break;\n        } else if (element > 0) {\n          allZeros = false;\n        }\n      }\n      if (isValid && !allZeros) {\n        this.dashArray = dashArray;\n      } else {\n        this.width = 0; // Adobe behavior when the array is invalid.\n      }\n    } else if (dashArray) {\n      this.width = 0; // Adobe behavior when the array is invalid.\n    }\n  }\n\n  /**\n   * Set the horizontal corner radius (from a Border dictionary).\n   *\n   * @public\n   * @memberof AnnotationBorderStyle\n   * @param {number} radius - The horizontal corner radius.\n   */\n  setHorizontalCornerRadius(radius) {\n    if (Number.isInteger(radius)) {\n      this.horizontalCornerRadius = radius;\n    }\n  }\n\n  /**\n   * Set the vertical corner radius (from a Border dictionary).\n   *\n   * @public\n   * @memberof AnnotationBorderStyle\n   * @param {number} radius - The vertical corner radius.\n   */\n  setVerticalCornerRadius(radius) {\n    if (Number.isInteger(radius)) {\n      this.verticalCornerRadius = radius;\n    }\n  }\n}\n\nclass MarkupAnnotation extends Annotation {\n  constructor(parameters) {\n    super(parameters);\n\n    const dict = parameters.dict;\n\n    if (dict.has(\"IRT\")) {\n      const rawIRT = dict.getRaw(\"IRT\");\n      this.data.inReplyTo = isRef(rawIRT) ? rawIRT.toString() : null;\n\n      const rt = dict.get(\"RT\");\n      this.data.replyType = isName(rt) ? rt.name : AnnotationReplyType.REPLY;\n    }\n\n    if (this.data.replyType === AnnotationReplyType.GROUP) {\n      // Subordinate annotations in a group should inherit\n      // the group attributes from the primary annotation.\n      const parent = dict.get(\"IRT\");\n\n      this.data.title = stringToPDFString(parent.get(\"T\") || \"\");\n\n      this.setContents(parent.get(\"Contents\"));\n      this.data.contents = this.contents;\n\n      if (!parent.has(\"CreationDate\")) {\n        this.data.creationDate = null;\n      } else {\n        this.setCreationDate(parent.get(\"CreationDate\"));\n        this.data.creationDate = this.creationDate;\n      }\n\n      if (!parent.has(\"M\")) {\n        this.data.modificationDate = null;\n      } else {\n        this.setModificationDate(parent.get(\"M\"));\n        this.data.modificationDate = this.modificationDate;\n      }\n\n      this.data.hasPopup = parent.has(\"Popup\");\n\n      if (!parent.has(\"C\")) {\n        // Fall back to the default background color.\n        this.data.color = null;\n      } else {\n        this.setColor(parent.getArray(\"C\"));\n        this.data.color = this.color;\n      }\n    } else {\n      this.data.title = stringToPDFString(dict.get(\"T\") || \"\");\n\n      this.setCreationDate(dict.get(\"CreationDate\"));\n      this.data.creationDate = this.creationDate;\n\n      this.data.hasPopup = dict.has(\"Popup\");\n\n      if (!dict.has(\"C\")) {\n        // Fall back to the default background color.\n        this.data.color = null;\n      }\n    }\n  }\n\n  /**\n   * Set the creation date.\n   *\n   * @public\n   * @memberof MarkupAnnotation\n   * @param {string} creationDate - PDF date string that indicates when the\n   *                                annotation was originally created\n   */\n  setCreationDate(creationDate) {\n    this.creationDate = isString(creationDate) ? creationDate : null;\n  }\n}\n\nclass WidgetAnnotation extends Annotation {\n  constructor(params) {\n    super(params);\n\n    const dict = params.dict;\n    const data = this.data;\n    this.ref = params.ref;\n\n    data.annotationType = AnnotationType.WIDGET;\n    data.fieldName = this._constructFieldName(dict);\n\n    const fieldValue = getInheritableProperty({\n      dict,\n      key: \"V\",\n      getArray: true,\n    });\n    data.fieldValue = this._decodeFormValue(fieldValue);\n\n    data.alternativeText = stringToPDFString(dict.get(\"TU\") || \"\");\n    data.defaultAppearance =\n      getInheritableProperty({ dict, key: \"DA\" }) ||\n      params.acroForm.get(\"DA\") ||\n      \"\";\n    const fieldType = getInheritableProperty({ dict, key: \"FT\" });\n    data.fieldType = isName(fieldType) ? fieldType.name : null;\n    this.fieldResources =\n      getInheritableProperty({ dict, key: \"DR\" }) ||\n      params.acroForm.get(\"DR\") ||\n      Dict.empty;\n\n    data.fieldFlags = getInheritableProperty({ dict, key: \"Ff\" });\n    if (!Number.isInteger(data.fieldFlags) || data.fieldFlags < 0) {\n      data.fieldFlags = 0;\n    }\n\n    data.readOnly = this.hasFieldFlag(AnnotationFieldFlag.READONLY);\n\n    // Hide signatures because we cannot validate them, and unset the fieldValue\n    // since it's (most likely) a `Dict` which is non-serializable and will thus\n    // cause errors when sending annotations to the main-thread (issue 10347).\n    if (data.fieldType === \"Sig\") {\n      data.fieldValue = null;\n      this.setFlags(AnnotationFlag.HIDDEN);\n    }\n  }\n\n  /**\n   * Construct the (fully qualified) field name from the (partial) field\n   * names of the field and its ancestors.\n   *\n   * @private\n   * @memberof WidgetAnnotation\n   * @param {Dict} dict - Complete widget annotation dictionary\n   * @returns {string}\n   */\n  _constructFieldName(dict) {\n    // Both the `Parent` and `T` fields are optional. While at least one of\n    // them should be provided, bad PDF generators may fail to do so.\n    if (!dict.has(\"T\") && !dict.has(\"Parent\")) {\n      warn(\"Unknown field name, falling back to empty field name.\");\n      return \"\";\n    }\n\n    // If no parent exists, the partial and fully qualified names are equal.\n    if (!dict.has(\"Parent\")) {\n      return stringToPDFString(dict.get(\"T\"));\n    }\n\n    // Form the fully qualified field name by appending the partial name to\n    // the parent's fully qualified name, separated by a period.\n    const fieldName = [];\n    if (dict.has(\"T\")) {\n      fieldName.unshift(stringToPDFString(dict.get(\"T\")));\n    }\n\n    let loopDict = dict;\n    while (loopDict.has(\"Parent\")) {\n      loopDict = loopDict.get(\"Parent\");\n      if (!isDict(loopDict)) {\n        // Even though it is not allowed according to the PDF specification,\n        // bad PDF generators may provide a `Parent` entry that is not a\n        // dictionary, but `null` for example (issue 8143).\n        break;\n      }\n\n      if (loopDict.has(\"T\")) {\n        fieldName.unshift(stringToPDFString(loopDict.get(\"T\")));\n      }\n    }\n    return fieldName.join(\".\");\n  }\n\n  /**\n   * Decode the given form value.\n   *\n   * @private\n   * @memberof WidgetAnnotation\n   * @param {Array<string>|Name|string} formValue - The (possibly encoded)\n   *   form value.\n   * @returns {Array<string>|string|null}\n   */\n  _decodeFormValue(formValue) {\n    if (Array.isArray(formValue)) {\n      return formValue\n        .filter(item => isString(item))\n        .map(item => stringToPDFString(item));\n    } else if (isName(formValue)) {\n      return stringToPDFString(formValue.name);\n    } else if (isString(formValue)) {\n      return stringToPDFString(formValue);\n    }\n    return null;\n  }\n\n  /**\n   * Check if a provided field flag is set.\n   *\n   * @public\n   * @memberof WidgetAnnotation\n   * @param {number} flag - Hexadecimal representation for an annotation\n   *                        field characteristic\n   * @returns {boolean}\n   * @see {@link shared/util.js}\n   */\n  hasFieldFlag(flag) {\n    return !!(this.data.fieldFlags & flag);\n  }\n\n  getOperatorList(evaluator, task, renderForms, annotationStorage) {\n    // Do not render form elements on the canvas when interactive forms are\n    // enabled. The display layer is responsible for rendering them instead.\n    if (renderForms) {\n      return Promise.resolve(new OperatorList());\n    }\n\n    if (!this._hasText) {\n      return super.getOperatorList(\n        evaluator,\n        task,\n        renderForms,\n        annotationStorage\n      );\n    }\n\n    return this._getAppearance(evaluator, task, annotationStorage).then(\n      content => {\n        if (this.appearance && content === null) {\n          return super.getOperatorList(\n            evaluator,\n            task,\n            renderForms,\n            annotationStorage\n          );\n        }\n\n        const operatorList = new OperatorList();\n\n        // Even if there is an appearance stream, ignore it. This is the\n        // behaviour used by Adobe Reader.\n        if (!this.data.defaultAppearance || content === null) {\n          return operatorList;\n        }\n\n        const matrix = [1, 0, 0, 1, 0, 0];\n        const bbox = [\n          0,\n          0,\n          this.data.rect[2] - this.data.rect[0],\n          this.data.rect[3] - this.data.rect[1],\n        ];\n\n        const transform = getTransformMatrix(this.data.rect, bbox, matrix);\n        operatorList.addOp(OPS.beginAnnotation, [\n          this.data.rect,\n          transform,\n          matrix,\n        ]);\n\n        const stream = new StringStream(content);\n        return evaluator\n          .getOperatorList({\n            stream,\n            task,\n            resources: this.fieldResources,\n            operatorList,\n          })\n          .then(function () {\n            operatorList.addOp(OPS.endAnnotation, []);\n            return operatorList;\n          });\n      }\n    );\n  }\n\n  async save(evaluator, task, annotationStorage) {\n    if (this.data.fieldValue === annotationStorage[this.data.id]) {\n      return null;\n    }\n\n    let appearance = await this._getAppearance(\n      evaluator,\n      task,\n      annotationStorage\n    );\n    if (appearance === null) {\n      return null;\n    }\n\n    const dict = evaluator.xref.fetchIfRef(this.ref);\n    if (!isDict(dict)) {\n      return null;\n    }\n\n    const bbox = [\n      0,\n      0,\n      this.data.rect[2] - this.data.rect[0],\n      this.data.rect[3] - this.data.rect[1],\n    ];\n\n    const newRef = evaluator.xref.getNewRef();\n    const AP = new Dict(evaluator.xref);\n    AP.set(\"N\", newRef);\n\n    const value = annotationStorage[this.data.id];\n    const encrypt = evaluator.xref.encrypt;\n    let originalTransform = null;\n    let newTransform = null;\n    if (encrypt) {\n      originalTransform = encrypt.createCipherTransform(\n        this.ref.num,\n        this.ref.gen\n      );\n      newTransform = encrypt.createCipherTransform(newRef.num, newRef.gen);\n      appearance = newTransform.encryptString(appearance);\n    }\n\n    dict.set(\"V\", value);\n    dict.set(\"AP\", AP);\n    dict.set(\"M\", `D:${getModificationDate()}`);\n\n    const appearanceDict = new Dict(evaluator.xref);\n    appearanceDict.set(\"Length\", appearance.length);\n    appearanceDict.set(\"Subtype\", Name.get(\"Form\"));\n    appearanceDict.set(\"Resources\", this.fieldResources);\n    appearanceDict.set(\"BBox\", bbox);\n\n    const bufferOriginal = [`${this.ref.num} ${this.ref.gen} obj\\n`];\n    writeDict(dict, bufferOriginal, originalTransform);\n    bufferOriginal.push(\"\\nendobj\\n\");\n\n    const bufferNew = [`${newRef.num} ${newRef.gen} obj\\n`];\n    writeDict(appearanceDict, bufferNew, newTransform);\n    bufferNew.push(\" stream\\n\");\n    bufferNew.push(appearance);\n    bufferNew.push(\"\\nendstream\\nendobj\\n\");\n\n    return [\n      // data for the original object\n      // V field changed + reference for new AP\n      { ref: this.ref, data: bufferOriginal.join(\"\") },\n      // data for the new AP\n      { ref: newRef, data: bufferNew.join(\"\") },\n    ];\n  }\n\n  async _getAppearance(evaluator, task, annotationStorage) {\n    const isPassword = this.hasFieldFlag(AnnotationFieldFlag.PASSWORD);\n    if (!annotationStorage || isPassword) {\n      return null;\n    }\n    const value = annotationStorage[this.data.id];\n    if (value === \"\") {\n      return \"\";\n    }\n\n    const defaultPadding = 2;\n    const hPadding = defaultPadding;\n    const totalHeight = this.data.rect[3] - this.data.rect[1];\n    const totalWidth = this.data.rect[2] - this.data.rect[0];\n\n    const fontInfo = await this._getFontData(evaluator, task);\n    const [font, fontName] = fontInfo;\n    let fontSize = fontInfo[2];\n\n    fontSize = this._computeFontSize(font, fontName, fontSize, totalHeight);\n\n    let descent = font.descent;\n    if (isNaN(descent)) {\n      descent = 0;\n    }\n\n    const vPadding = defaultPadding + Math.abs(descent) * fontSize;\n    const defaultAppearance = this.data.defaultAppearance;\n    const alignment = this.data.textAlignment;\n\n    if (this.data.comb) {\n      return this._getCombAppearance(\n        defaultAppearance,\n        value,\n        totalWidth,\n        hPadding,\n        vPadding\n      );\n    }\n\n    if (this.data.multiLine) {\n      return this._getMultilineAppearance(\n        defaultAppearance,\n        value,\n        font,\n        fontSize,\n        totalWidth,\n        totalHeight,\n        alignment,\n        hPadding,\n        vPadding\n      );\n    }\n\n    if (alignment === 0 || alignment > 2) {\n      // Left alignment: nothing to do\n      return (\n        \"/Tx BMC q BT \" +\n        defaultAppearance +\n        ` 1 0 0 1 ${hPadding} ${vPadding} Tm (${escapeString(value)}) Tj` +\n        \" ET Q EMC\"\n      );\n    }\n\n    const renderedText = this._renderText(\n      value,\n      font,\n      fontSize,\n      totalWidth,\n      alignment,\n      hPadding,\n      vPadding\n    );\n    return (\n      \"/Tx BMC q BT \" +\n      defaultAppearance +\n      ` 1 0 0 1 0 0 Tm ${renderedText}` +\n      \" ET Q EMC\"\n    );\n  }\n\n  async _getFontData(evaluator, task) {\n    const operatorList = new OperatorList();\n    const initialState = {\n      fontSize: 0,\n      font: null,\n      fontName: null,\n      clone() {\n        return this;\n      },\n    };\n\n    await evaluator.getOperatorList({\n      stream: new StringStream(this.data.defaultAppearance),\n      task,\n      resources: this.fieldResources,\n      operatorList,\n      initialState,\n    });\n\n    return [initialState.font, initialState.fontName, initialState.fontSize];\n  }\n\n  _computeFontSize(font, fontName, fontSize, height) {\n    if (fontSize === null || fontSize === 0) {\n      const em = font.charsToGlyphs(\"M\", true)[0].width / 1000;\n      // According to https://en.wikipedia.org/wiki/Em_(typography)\n      // an average cap height should be 70% of 1em\n      const capHeight = 0.7 * em;\n      // 1.5 * capHeight * fontSize seems to be a good value for lineHeight\n      fontSize = Math.max(1, Math.floor(height / (1.5 * capHeight)));\n\n      let fontRegex = new RegExp(`/${fontName}\\\\s+[0-9\\.]+\\\\s+Tf`);\n      if (this.data.defaultAppearance.search(fontRegex) === -1) {\n        // The font size is missing\n        fontRegex = new RegExp(`/${fontName}\\\\s+Tf`);\n      }\n      this.data.defaultAppearance = this.data.defaultAppearance.replace(\n        fontRegex,\n        `/${fontName} ${fontSize} Tf`\n      );\n    }\n    return fontSize;\n  }\n\n  _renderText(text, font, fontSize, totalWidth, alignment, hPadding, vPadding) {\n    // We need to get the width of the text in order to align it correctly\n    const glyphs = font.charsToGlyphs(text);\n    const scale = fontSize / 1000;\n    let width = 0;\n    for (const glyph of glyphs) {\n      width += glyph.width * scale;\n    }\n\n    let shift;\n    if (alignment === 1) {\n      // Center\n      shift = (totalWidth - width) / 2;\n    } else if (alignment === 2) {\n      // Right\n      shift = totalWidth - width - hPadding;\n    } else {\n      shift = hPadding;\n    }\n    shift = shift.toFixed(2);\n    vPadding = vPadding.toFixed(2);\n\n    return `${shift} ${vPadding} Td (${escapeString(text)}) Tj`;\n  }\n}\n\nclass TextWidgetAnnotation extends WidgetAnnotation {\n  constructor(params) {\n    super(params);\n\n    this._hasText = true;\n\n    const dict = params.dict;\n\n    // The field value is always a string.\n    if (!isString(this.data.fieldValue)) {\n      this.data.fieldValue = \"\";\n    }\n\n    // Determine the alignment of text in the field.\n    let alignment = getInheritableProperty({ dict, key: \"Q\" });\n    if (!Number.isInteger(alignment) || alignment < 0 || alignment > 2) {\n      alignment = null;\n    }\n    this.data.textAlignment = alignment;\n\n    // Determine the maximum length of text in the field.\n    let maximumLength = getInheritableProperty({ dict, key: \"MaxLen\" });\n    if (!Number.isInteger(maximumLength) || maximumLength < 0) {\n      maximumLength = null;\n    }\n    this.data.maxLen = maximumLength;\n\n    // Process field flags for the display layer.\n    this.data.multiLine = this.hasFieldFlag(AnnotationFieldFlag.MULTILINE);\n    this.data.comb =\n      this.hasFieldFlag(AnnotationFieldFlag.COMB) &&\n      !this.hasFieldFlag(AnnotationFieldFlag.MULTILINE) &&\n      !this.hasFieldFlag(AnnotationFieldFlag.PASSWORD) &&\n      !this.hasFieldFlag(AnnotationFieldFlag.FILESELECT) &&\n      this.data.maxLen !== null;\n  }\n\n  _getCombAppearance(defaultAppearance, text, width, hPadding, vPadding) {\n    const combWidth = (width / this.data.maxLen).toFixed(2);\n    const buf = [];\n    for (const character of text) {\n      buf.push(`(${escapeString(character)}) Tj`);\n    }\n\n    const renderedComb = buf.join(` ${combWidth} 0 Td `);\n    return (\n      \"/Tx BMC q BT \" +\n      defaultAppearance +\n      ` 1 0 0 1 ${hPadding} ${vPadding} Tm ${renderedComb}` +\n      \" ET Q EMC\"\n    );\n  }\n\n  _getMultilineAppearance(\n    defaultAppearance,\n    text,\n    font,\n    fontSize,\n    width,\n    height,\n    alignment,\n    hPadding,\n    vPadding\n  ) {\n    const lines = text.split(/\\r\\n|\\r|\\n/);\n    const buf = [];\n    const totalWidth = width - 2 * hPadding;\n    for (const line of lines) {\n      const chunks = this._splitLine(line, font, fontSize, totalWidth);\n      for (const chunk of chunks) {\n        const padding = buf.length === 0 ? hPadding : 0;\n        buf.push(\n          this._renderText(\n            chunk,\n            font,\n            fontSize,\n            width,\n            alignment,\n            padding,\n            -fontSize // <0 because a line is below the previous one\n          )\n        );\n      }\n    }\n\n    const renderedText = buf.join(\"\\n\");\n    return (\n      \"/Tx BMC q BT \" +\n      defaultAppearance +\n      ` 1 0 0 1 0 ${height} Tm ${renderedText}` +\n      \" ET Q EMC\"\n    );\n  }\n\n  _splitLine(line, font, fontSize, width) {\n    if (line.length <= 1) {\n      // Nothing to split\n      return [line];\n    }\n\n    const scale = fontSize / 1000;\n    const whitespace = font.charsToGlyphs(\" \", true)[0].width * scale;\n    const chunks = [];\n\n    let lastSpacePos = -1,\n      startChunk = 0,\n      currentWidth = 0;\n\n    for (let i = 0, ii = line.length; i < ii; i++) {\n      const character = line.charAt(i);\n      if (character === \" \") {\n        if (currentWidth + whitespace > width) {\n          // We can break here\n          chunks.push(line.substring(startChunk, i));\n          startChunk = i;\n          currentWidth = whitespace;\n          lastSpacePos = -1;\n        } else {\n          currentWidth += whitespace;\n          lastSpacePos = i;\n        }\n      } else {\n        const charWidth = font.charsToGlyphs(character, false)[0].width * scale;\n        if (currentWidth + charWidth > width) {\n          // We must break to the last white position (if available)\n          if (lastSpacePos !== -1) {\n            chunks.push(line.substring(startChunk, lastSpacePos + 1));\n            startChunk = i = lastSpacePos + 1;\n            lastSpacePos = -1;\n            currentWidth = 0;\n          } else {\n            // Just break in the middle of the word\n            chunks.push(line.substring(startChunk, i));\n            startChunk = i;\n            currentWidth = charWidth;\n          }\n        } else {\n          currentWidth += charWidth;\n        }\n      }\n    }\n\n    if (startChunk < line.length) {\n      chunks.push(line.substring(startChunk, line.length));\n    }\n\n    return chunks;\n  }\n}\n\nclass ButtonWidgetAnnotation extends WidgetAnnotation {\n  constructor(params) {\n    super(params);\n\n    this.checkedAppearance = null;\n    this.uncheckedAppearance = null;\n\n    this.data.checkBox =\n      !this.hasFieldFlag(AnnotationFieldFlag.RADIO) &&\n      !this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n    this.data.radioButton =\n      this.hasFieldFlag(AnnotationFieldFlag.RADIO) &&\n      !this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n    this.data.pushButton = this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n\n    if (this.data.checkBox) {\n      this._processCheckBox(params);\n    } else if (this.data.radioButton) {\n      this._processRadioButton(params);\n    } else if (this.data.pushButton) {\n      this._processPushButton(params);\n    } else {\n      warn(\"Invalid field flags for button widget annotation\");\n    }\n  }\n\n  getOperatorList(evaluator, task, renderForms, annotationStorage) {\n    if (this.data.pushButton) {\n      return super.getOperatorList(\n        evaluator,\n        task,\n        false, // we use normalAppearance to render the button\n        annotationStorage\n      );\n    }\n\n    if (annotationStorage) {\n      const value = annotationStorage[this.data.id] || false;\n      let appearance;\n      if (value) {\n        appearance = this.checkedAppearance;\n      } else {\n        appearance = this.uncheckedAppearance;\n      }\n\n      if (appearance) {\n        const savedAppearance = this.appearance;\n        this.appearance = appearance;\n        const operatorList = super.getOperatorList(\n          evaluator,\n          task,\n          renderForms,\n          annotationStorage\n        );\n        this.appearance = savedAppearance;\n        return operatorList;\n      }\n\n      // No appearance\n      return Promise.resolve(new OperatorList());\n    }\n    return super.getOperatorList(\n      evaluator,\n      task,\n      renderForms,\n      annotationStorage\n    );\n  }\n\n  async save(evaluator, task, annotationStorage) {\n    if (this.data.checkBox) {\n      return this._saveCheckbox(evaluator, task, annotationStorage);\n    }\n\n    if (this.data.radioButton) {\n      return this._saveRadioButton(evaluator, task, annotationStorage);\n    }\n\n    return super.save(evaluator, task, annotationStorage);\n  }\n\n  async _saveCheckbox(evaluator, task, annotationStorage) {\n    const defaultValue = this.data.fieldValue && this.data.fieldValue !== \"Off\";\n    const value = annotationStorage[this.data.id];\n\n    if (defaultValue === value) {\n      return null;\n    }\n\n    const dict = evaluator.xref.fetchIfRef(this.ref);\n    if (!isDict(dict)) {\n      return null;\n    }\n\n    const name = Name.get(value ? this.data.exportValue : \"Off\");\n    dict.set(\"V\", name);\n    dict.set(\"AS\", name);\n    dict.set(\"M\", `D:${getModificationDate()}`);\n\n    const encrypt = evaluator.xref.encrypt;\n    let originalTransform = null;\n    if (encrypt) {\n      originalTransform = encrypt.createCipherTransform(\n        this.ref.num,\n        this.ref.gen\n      );\n    }\n\n    const buffer = [`${this.ref.num} ${this.ref.gen} obj\\n`];\n    writeDict(dict, buffer, originalTransform);\n    buffer.push(\"\\nendobj\\n\");\n\n    return [{ ref: this.ref, data: buffer.join(\"\") }];\n  }\n\n  async _saveRadioButton(evaluator, task, annotationStorage) {\n    const defaultValue = this.data.fieldValue === this.data.buttonValue;\n    const value = annotationStorage[this.data.id];\n\n    if (defaultValue === value) {\n      return null;\n    }\n\n    const dict = evaluator.xref.fetchIfRef(this.ref);\n    if (!isDict(dict)) {\n      return null;\n    }\n\n    const name = Name.get(value ? this.data.buttonValue : \"Off\");\n    let parentBuffer = null;\n    const encrypt = evaluator.xref.encrypt;\n\n    if (value) {\n      if (isRef(this.parent)) {\n        const parent = evaluator.xref.fetch(this.parent);\n        let parentTransform = null;\n        if (encrypt) {\n          parentTransform = encrypt.createCipherTransform(\n            this.parent.num,\n            this.parent.gen\n          );\n        }\n        parent.set(\"V\", name);\n        parentBuffer = [`${this.parent.num} ${this.parent.gen} obj\\n`];\n        writeDict(parent, parentBuffer, parentTransform);\n        parentBuffer.push(\"\\nendobj\\n\");\n      } else if (isDict(this.parent)) {\n        this.parent.set(\"V\", name);\n      }\n    }\n\n    dict.set(\"AS\", name);\n    dict.set(\"M\", `D:${getModificationDate()}`);\n\n    let originalTransform = null;\n    if (encrypt) {\n      originalTransform = encrypt.createCipherTransform(\n        this.ref.num,\n        this.ref.gen\n      );\n    }\n\n    const buffer = [`${this.ref.num} ${this.ref.gen} obj\\n`];\n    writeDict(dict, buffer, originalTransform);\n    buffer.push(\"\\nendobj\\n\");\n\n    const newRefs = [{ ref: this.ref, data: buffer.join(\"\") }];\n    if (parentBuffer !== null) {\n      newRefs.push({ ref: this.parent, data: parentBuffer.join(\"\") });\n    }\n\n    return newRefs;\n  }\n\n  _processCheckBox(params) {\n    const customAppearance = params.dict.get(\"AP\");\n    if (!isDict(customAppearance)) {\n      return;\n    }\n\n    const normalAppearance = customAppearance.get(\"N\");\n    if (!isDict(normalAppearance)) {\n      return;\n    }\n\n    const exportValues = normalAppearance.getKeys();\n    if (!exportValues.includes(\"Off\")) {\n      // The /Off appearance is optional.\n      exportValues.push(\"Off\");\n    }\n    if (exportValues.length !== 2) {\n      return;\n    }\n\n    this.data.exportValue =\n      exportValues[0] === \"Off\" ? exportValues[1] : exportValues[0];\n\n    this.checkedAppearance = normalAppearance.get(this.data.exportValue);\n    this.uncheckedAppearance = normalAppearance.get(\"Off\") || null;\n  }\n\n  _processRadioButton(params) {\n    this.data.fieldValue = this.data.buttonValue = null;\n\n    // The parent field's `V` entry holds a `Name` object with the appearance\n    // state of whichever child field is currently in the \"on\" state.\n    const fieldParent = params.dict.get(\"Parent\");\n    if (isDict(fieldParent) && fieldParent.has(\"V\")) {\n      const fieldParentValue = fieldParent.get(\"V\");\n      if (isName(fieldParentValue)) {\n        this.parent = params.dict.getRaw(\"Parent\");\n        this.data.fieldValue = this._decodeFormValue(fieldParentValue);\n      }\n    }\n\n    // The button's value corresponds to its appearance state.\n    const appearanceStates = params.dict.get(\"AP\");\n    if (!isDict(appearanceStates)) {\n      return;\n    }\n    const normalAppearance = appearanceStates.get(\"N\");\n    if (!isDict(normalAppearance)) {\n      return;\n    }\n    for (const key of normalAppearance.getKeys()) {\n      if (key !== \"Off\") {\n        this.data.buttonValue = key;\n        break;\n      }\n    }\n\n    this.checkedAppearance = normalAppearance.get(this.data.buttonValue);\n    this.uncheckedAppearance = normalAppearance.get(\"Off\") || null;\n  }\n\n  _processPushButton(params) {\n    if (!params.dict.has(\"A\")) {\n      warn(\"Push buttons without action dictionaries are not supported\");\n      return;\n    }\n\n    Catalog.parseDestDictionary({\n      destDict: params.dict,\n      resultObj: this.data,\n      docBaseUrl: params.pdfManager.docBaseUrl,\n    });\n  }\n}\n\nclass ChoiceWidgetAnnotation extends WidgetAnnotation {\n  constructor(params) {\n    super(params);\n\n    // Determine the options. The options array may consist of strings or\n    // arrays. If the array consists of arrays, then the first element of\n    // each array is the export value and the second element of each array is\n    // the display value. If the array consists of strings, then these\n    // represent both the export and display value. In this case, we convert\n    // it to an array of arrays as well for convenience in the display layer.\n    // Note that the specification does not state that the `Opt` field is\n    // inheritable, but in practice PDF generators do make annotations\n    // inherit the options from a parent annotation (issue 8094).\n    this.data.options = [];\n\n    const options = getInheritableProperty({ dict: params.dict, key: \"Opt\" });\n    if (Array.isArray(options)) {\n      const xref = params.xref;\n      for (let i = 0, ii = options.length; i < ii; i++) {\n        const option = xref.fetchIfRef(options[i]);\n        const isOptionArray = Array.isArray(option);\n\n        this.data.options[i] = {\n          exportValue: this._decodeFormValue(\n            isOptionArray ? xref.fetchIfRef(option[0]) : option\n          ),\n          displayValue: this._decodeFormValue(\n            isOptionArray ? xref.fetchIfRef(option[1]) : option\n          ),\n        };\n      }\n    }\n\n    // The field value can be `null` if no item is selected, a string if one\n    // item is selected or an array of strings if multiple items are selected.\n    // For consistency in the API and convenience in the display layer, we\n    // always make the field value an array with zero, one or multiple items.\n    if (isString(this.data.fieldValue)) {\n      this.data.fieldValue = [this.data.fieldValue];\n    } else if (!this.data.fieldValue) {\n      this.data.fieldValue = [];\n    }\n\n    // Process field flags for the display layer.\n    this.data.combo = this.hasFieldFlag(AnnotationFieldFlag.COMBO);\n    this.data.multiSelect = this.hasFieldFlag(AnnotationFieldFlag.MULTISELECT);\n    this._hasText = true;\n  }\n}\n\nclass TextAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    const DEFAULT_ICON_SIZE = 22; // px\n\n    super(parameters);\n\n    const dict = parameters.dict;\n    this.data.annotationType = AnnotationType.TEXT;\n\n    if (this.data.hasAppearance) {\n      this.data.name = \"NoIcon\";\n    } else {\n      this.data.rect[1] = this.data.rect[3] - DEFAULT_ICON_SIZE;\n      this.data.rect[2] = this.data.rect[0] + DEFAULT_ICON_SIZE;\n      this.data.name = dict.has(\"Name\") ? dict.get(\"Name\").name : \"Note\";\n    }\n\n    if (dict.has(\"State\")) {\n      this.data.state = dict.get(\"State\") || null;\n      this.data.stateModel = dict.get(\"StateModel\") || null;\n    } else {\n      this.data.state = null;\n      this.data.stateModel = null;\n    }\n  }\n}\n\nclass LinkAnnotation extends Annotation {\n  constructor(params) {\n    super(params);\n\n    this.data.annotationType = AnnotationType.LINK;\n\n    const quadPoints = getQuadPoints(params.dict, this.rectangle);\n    if (quadPoints) {\n      this.data.quadPoints = quadPoints;\n    }\n\n    Catalog.parseDestDictionary({\n      destDict: params.dict,\n      resultObj: this.data,\n      docBaseUrl: params.pdfManager.docBaseUrl,\n    });\n  }\n}\n\nclass PopupAnnotation extends Annotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.POPUP;\n\n    let parentItem = parameters.dict.get(\"Parent\");\n    if (!parentItem) {\n      warn(\"Popup annotation has a missing or invalid parent annotation.\");\n      return;\n    }\n\n    const parentSubtype = parentItem.get(\"Subtype\");\n    this.data.parentType = isName(parentSubtype) ? parentSubtype.name : null;\n    const rawParent = parameters.dict.getRaw(\"Parent\");\n    this.data.parentId = isRef(rawParent) ? rawParent.toString() : null;\n\n    const rt = parentItem.get(\"RT\");\n    if (isName(rt, AnnotationReplyType.GROUP)) {\n      // Subordinate annotations in a group should inherit\n      // the group attributes from the primary annotation.\n      parentItem = parentItem.get(\"IRT\");\n    }\n\n    if (!parentItem.has(\"M\")) {\n      this.data.modificationDate = null;\n    } else {\n      this.setModificationDate(parentItem.get(\"M\"));\n      this.data.modificationDate = this.modificationDate;\n    }\n\n    if (!parentItem.has(\"C\")) {\n      // Fall back to the default background color.\n      this.data.color = null;\n    } else {\n      this.setColor(parentItem.getArray(\"C\"));\n      this.data.color = this.color;\n    }\n\n    // If the Popup annotation is not viewable, but the parent annotation is,\n    // that is most likely a bug. Fallback to inherit the flags from the parent\n    // annotation (this is consistent with the behaviour in Adobe Reader).\n    if (!this.viewable) {\n      const parentFlags = parentItem.get(\"F\");\n      if (this._isViewable(parentFlags)) {\n        this.setFlags(parentFlags);\n      }\n    }\n\n    this.data.title = stringToPDFString(parentItem.get(\"T\") || \"\");\n    this.data.contents = stringToPDFString(parentItem.get(\"Contents\") || \"\");\n  }\n}\n\nclass FreeTextAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.FREETEXT;\n  }\n}\n\nclass LineAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.LINE;\n\n    this.data.lineCoordinates = Util.normalizeRect(\n      parameters.dict.getArray(\"L\")\n    );\n  }\n}\n\nclass SquareAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.SQUARE;\n  }\n}\n\nclass CircleAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.CIRCLE;\n  }\n}\n\nclass PolylineAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.POLYLINE;\n\n    // The vertices array is an array of numbers representing the alternating\n    // horizontal and vertical coordinates, respectively, of each vertex.\n    // Convert this to an array of objects with x and y coordinates.\n    const rawVertices = parameters.dict.getArray(\"Vertices\");\n    this.data.vertices = [];\n    for (let i = 0, ii = rawVertices.length; i < ii; i += 2) {\n      this.data.vertices.push({\n        x: rawVertices[i],\n        y: rawVertices[i + 1],\n      });\n    }\n  }\n}\n\nclass PolygonAnnotation extends PolylineAnnotation {\n  constructor(parameters) {\n    // Polygons are specific forms of polylines, so reuse their logic.\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.POLYGON;\n  }\n}\n\nclass CaretAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.CARET;\n  }\n}\n\nclass InkAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.INK;\n\n    const xref = parameters.xref;\n    const originalInkLists = parameters.dict.getArray(\"InkList\");\n    this.data.inkLists = [];\n    for (let i = 0, ii = originalInkLists.length; i < ii; ++i) {\n      // The raw ink lists array contains arrays of numbers representing\n      // the alternating horizontal and vertical coordinates, respectively,\n      // of each vertex. Convert this to an array of objects with x and y\n      // coordinates.\n      this.data.inkLists.push([]);\n      for (let j = 0, jj = originalInkLists[i].length; j < jj; j += 2) {\n        this.data.inkLists[i].push({\n          x: xref.fetchIfRef(originalInkLists[i][j]),\n          y: xref.fetchIfRef(originalInkLists[i][j + 1]),\n        });\n      }\n    }\n  }\n}\n\nclass HighlightAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.HIGHLIGHT;\n\n    const quadPoints = getQuadPoints(parameters.dict, this.rectangle);\n    if (quadPoints) {\n      this.data.quadPoints = quadPoints;\n    }\n  }\n}\n\nclass UnderlineAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.UNDERLINE;\n\n    const quadPoints = getQuadPoints(parameters.dict, this.rectangle);\n    if (quadPoints) {\n      this.data.quadPoints = quadPoints;\n    }\n  }\n}\n\nclass SquigglyAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.SQUIGGLY;\n\n    const quadPoints = getQuadPoints(parameters.dict, this.rectangle);\n    if (quadPoints) {\n      this.data.quadPoints = quadPoints;\n    }\n  }\n}\n\nclass StrikeOutAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.STRIKEOUT;\n\n    const quadPoints = getQuadPoints(parameters.dict, this.rectangle);\n    if (quadPoints) {\n      this.data.quadPoints = quadPoints;\n    }\n  }\n}\n\nclass StampAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.STAMP;\n  }\n}\n\nclass FileAttachmentAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    const file = new FileSpec(parameters.dict.get(\"FS\"), parameters.xref);\n\n    this.data.annotationType = AnnotationType.FILEATTACHMENT;\n    this.data.file = file.serializable;\n  }\n}\n\nexport {\n  Annotation,\n  AnnotationBorderStyle,\n  AnnotationFactory,\n  MarkupAnnotation,\n  getQuadPoints,\n};\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, ImageKind, OPS, warn } from \"../shared/util.js\";\n\nvar QueueOptimizer = (function QueueOptimizerClosure() {\n  function addState(parentState, pattern, checkFn, iterateFn, processFn) {\n    var state = parentState;\n    for (var i = 0, ii = pattern.length - 1; i < ii; i++) {\n      var item = pattern[i];\n      state = state[item] || (state[item] = []);\n    }\n    state[pattern[pattern.length - 1]] = {\n      checkFn,\n      iterateFn,\n      processFn,\n    };\n  }\n\n  function handlePaintSolidColorImageMask(\n    iFirstSave,\n    count,\n    fnArray,\n    argsArray\n  ) {\n    // Handles special case of mainly LaTeX documents which use image masks to\n    // draw lines with the current fill style.\n    // 'count' groups of (save, transform, paintImageMaskXObject, restore)+\n    // have been found at iFirstSave.\n    var iFirstPIMXO = iFirstSave + 2;\n    for (var i = 0; i < count; i++) {\n      var arg = argsArray[iFirstPIMXO + 4 * i];\n      var imageMask = arg.length === 1 && arg[0];\n      if (\n        imageMask &&\n        imageMask.width === 1 &&\n        imageMask.height === 1 &&\n        (!imageMask.data.length ||\n          (imageMask.data.length === 1 && imageMask.data[0] === 0))\n      ) {\n        fnArray[iFirstPIMXO + 4 * i] = OPS.paintSolidColorImageMask;\n        continue;\n      }\n      break;\n    }\n    return count - i;\n  }\n\n  var InitialState = [];\n\n  // This replaces (save, transform, paintInlineImageXObject, restore)+\n  // sequences with one |paintInlineImageXObjectGroup| operation.\n  addState(\n    InitialState,\n    [OPS.save, OPS.transform, OPS.paintInlineImageXObject, OPS.restore],\n    null,\n    function iterateInlineImageGroup(context, i) {\n      var fnArray = context.fnArray;\n      var iFirstSave = context.iCurr - 3;\n      var pos = (i - iFirstSave) % 4;\n      switch (pos) {\n        case 0:\n          return fnArray[i] === OPS.save;\n        case 1:\n          return fnArray[i] === OPS.transform;\n        case 2:\n          return fnArray[i] === OPS.paintInlineImageXObject;\n        case 3:\n          return fnArray[i] === OPS.restore;\n      }\n      throw new Error(`iterateInlineImageGroup - invalid pos: ${pos}`);\n    },\n    function foundInlineImageGroup(context, i) {\n      var MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10;\n      var MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200;\n      var MAX_WIDTH = 1000;\n      var IMAGE_PADDING = 1;\n\n      var fnArray = context.fnArray,\n        argsArray = context.argsArray;\n      var curr = context.iCurr;\n      var iFirstSave = curr - 3;\n      var iFirstTransform = curr - 2;\n      var iFirstPIIXO = curr - 1;\n\n      var count = Math.min(\n        Math.floor((i - iFirstSave) / 4),\n        MAX_IMAGES_IN_INLINE_IMAGES_BLOCK\n      );\n      if (count < MIN_IMAGES_IN_INLINE_IMAGES_BLOCK) {\n        return i - ((i - iFirstSave) % 4);\n      }\n\n      // assuming that heights of those image is too small (~1 pixel)\n      // packing as much as possible by lines\n      var maxX = 0;\n      var map = [],\n        maxLineHeight = 0;\n      var currentX = IMAGE_PADDING,\n        currentY = IMAGE_PADDING;\n      var q;\n      for (q = 0; q < count; q++) {\n        var transform = argsArray[iFirstTransform + (q << 2)];\n        var img = argsArray[iFirstPIIXO + (q << 2)][0];\n        if (currentX + img.width > MAX_WIDTH) {\n          // starting new line\n          maxX = Math.max(maxX, currentX);\n          currentY += maxLineHeight + 2 * IMAGE_PADDING;\n          currentX = 0;\n          maxLineHeight = 0;\n        }\n        map.push({\n          transform,\n          x: currentX,\n          y: currentY,\n          w: img.width,\n          h: img.height,\n        });\n        currentX += img.width + 2 * IMAGE_PADDING;\n        maxLineHeight = Math.max(maxLineHeight, img.height);\n      }\n      var imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING;\n      var imgHeight = currentY + maxLineHeight + IMAGE_PADDING;\n      var imgData = new Uint8ClampedArray(imgWidth * imgHeight * 4);\n      var imgRowSize = imgWidth << 2;\n      for (q = 0; q < count; q++) {\n        var data = argsArray[iFirstPIIXO + (q << 2)][0].data;\n        // Copy image by lines and extends pixels into padding.\n        var rowSize = map[q].w << 2;\n        var dataOffset = 0;\n        var offset = (map[q].x + map[q].y * imgWidth) << 2;\n        imgData.set(data.subarray(0, rowSize), offset - imgRowSize);\n        for (var k = 0, kk = map[q].h; k < kk; k++) {\n          imgData.set(data.subarray(dataOffset, dataOffset + rowSize), offset);\n          dataOffset += rowSize;\n          offset += imgRowSize;\n        }\n        imgData.set(data.subarray(dataOffset - rowSize, dataOffset), offset);\n        while (offset >= 0) {\n          data[offset - 4] = data[offset];\n          data[offset - 3] = data[offset + 1];\n          data[offset - 2] = data[offset + 2];\n          data[offset - 1] = data[offset + 3];\n          data[offset + rowSize] = data[offset + rowSize - 4];\n          data[offset + rowSize + 1] = data[offset + rowSize - 3];\n          data[offset + rowSize + 2] = data[offset + rowSize - 2];\n          data[offset + rowSize + 3] = data[offset + rowSize - 1];\n          offset -= imgRowSize;\n        }\n      }\n\n      // Replace queue items.\n      fnArray.splice(iFirstSave, count * 4, OPS.paintInlineImageXObjectGroup);\n      argsArray.splice(iFirstSave, count * 4, [\n        {\n          width: imgWidth,\n          height: imgHeight,\n          kind: ImageKind.RGBA_32BPP,\n          data: imgData,\n        },\n        map,\n      ]);\n\n      return iFirstSave + 1;\n    }\n  );\n\n  // This replaces (save, transform, paintImageMaskXObject, restore)+\n  // sequences with one |paintImageMaskXObjectGroup| or one\n  // |paintImageMaskXObjectRepeat| operation.\n  addState(\n    InitialState,\n    [OPS.save, OPS.transform, OPS.paintImageMaskXObject, OPS.restore],\n    null,\n    function iterateImageMaskGroup(context, i) {\n      var fnArray = context.fnArray;\n      var iFirstSave = context.iCurr - 3;\n      var pos = (i - iFirstSave) % 4;\n      switch (pos) {\n        case 0:\n          return fnArray[i] === OPS.save;\n        case 1:\n          return fnArray[i] === OPS.transform;\n        case 2:\n          return fnArray[i] === OPS.paintImageMaskXObject;\n        case 3:\n          return fnArray[i] === OPS.restore;\n      }\n      throw new Error(`iterateImageMaskGroup - invalid pos: ${pos}`);\n    },\n    function foundImageMaskGroup(context, i) {\n      var MIN_IMAGES_IN_MASKS_BLOCK = 10;\n      var MAX_IMAGES_IN_MASKS_BLOCK = 100;\n      var MAX_SAME_IMAGES_IN_MASKS_BLOCK = 1000;\n\n      var fnArray = context.fnArray,\n        argsArray = context.argsArray;\n      var curr = context.iCurr;\n      var iFirstSave = curr - 3;\n      var iFirstTransform = curr - 2;\n      var iFirstPIMXO = curr - 1;\n\n      // At this point, i is the index of the first op past the last valid\n      // quartet.\n      var count = Math.floor((i - iFirstSave) / 4);\n      count = handlePaintSolidColorImageMask(\n        iFirstSave,\n        count,\n        fnArray,\n        argsArray\n      );\n      if (count < MIN_IMAGES_IN_MASKS_BLOCK) {\n        return i - ((i - iFirstSave) % 4);\n      }\n\n      var q;\n      var isSameImage = false;\n      var iTransform, transformArgs;\n      var firstPIMXOArg0 = argsArray[iFirstPIMXO][0];\n      const firstTransformArg0 = argsArray[iFirstTransform][0],\n        firstTransformArg1 = argsArray[iFirstTransform][1],\n        firstTransformArg2 = argsArray[iFirstTransform][2],\n        firstTransformArg3 = argsArray[iFirstTransform][3];\n\n      if (firstTransformArg1 === firstTransformArg2) {\n        isSameImage = true;\n        iTransform = iFirstTransform + 4;\n        var iPIMXO = iFirstPIMXO + 4;\n        for (q = 1; q < count; q++, iTransform += 4, iPIMXO += 4) {\n          transformArgs = argsArray[iTransform];\n          if (\n            argsArray[iPIMXO][0] !== firstPIMXOArg0 ||\n            transformArgs[0] !== firstTransformArg0 ||\n            transformArgs[1] !== firstTransformArg1 ||\n            transformArgs[2] !== firstTransformArg2 ||\n            transformArgs[3] !== firstTransformArg3\n          ) {\n            if (q < MIN_IMAGES_IN_MASKS_BLOCK) {\n              isSameImage = false;\n            } else {\n              count = q;\n            }\n            break; // different image or transform\n          }\n        }\n      }\n\n      if (isSameImage) {\n        count = Math.min(count, MAX_SAME_IMAGES_IN_MASKS_BLOCK);\n        var positions = new Float32Array(count * 2);\n        iTransform = iFirstTransform;\n        for (q = 0; q < count; q++, iTransform += 4) {\n          transformArgs = argsArray[iTransform];\n          positions[q << 1] = transformArgs[4];\n          positions[(q << 1) + 1] = transformArgs[5];\n        }\n\n        // Replace queue items.\n        fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectRepeat);\n        argsArray.splice(iFirstSave, count * 4, [\n          firstPIMXOArg0,\n          firstTransformArg0,\n          firstTransformArg1,\n          firstTransformArg2,\n          firstTransformArg3,\n          positions,\n        ]);\n      } else {\n        count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK);\n        var images = [];\n        for (q = 0; q < count; q++) {\n          transformArgs = argsArray[iFirstTransform + (q << 2)];\n          var maskParams = argsArray[iFirstPIMXO + (q << 2)][0];\n          images.push({\n            data: maskParams.data,\n            width: maskParams.width,\n            height: maskParams.height,\n            transform: transformArgs,\n          });\n        }\n\n        // Replace queue items.\n        fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectGroup);\n        argsArray.splice(iFirstSave, count * 4, [images]);\n      }\n\n      return iFirstSave + 1;\n    }\n  );\n\n  // This replaces (save, transform, paintImageXObject, restore)+ sequences\n  // with one paintImageXObjectRepeat operation, if the |transform| and\n  // |paintImageXObjectRepeat| ops are appropriate.\n  addState(\n    InitialState,\n    [OPS.save, OPS.transform, OPS.paintImageXObject, OPS.restore],\n    function (context) {\n      var argsArray = context.argsArray;\n      var iFirstTransform = context.iCurr - 2;\n      return (\n        argsArray[iFirstTransform][1] === 0 &&\n        argsArray[iFirstTransform][2] === 0\n      );\n    },\n    function iterateImageGroup(context, i) {\n      var fnArray = context.fnArray,\n        argsArray = context.argsArray;\n      var iFirstSave = context.iCurr - 3;\n      var pos = (i - iFirstSave) % 4;\n      switch (pos) {\n        case 0:\n          return fnArray[i] === OPS.save;\n        case 1:\n          if (fnArray[i] !== OPS.transform) {\n            return false;\n          }\n          var iFirstTransform = context.iCurr - 2;\n          var firstTransformArg0 = argsArray[iFirstTransform][0];\n          var firstTransformArg3 = argsArray[iFirstTransform][3];\n          if (\n            argsArray[i][0] !== firstTransformArg0 ||\n            argsArray[i][1] !== 0 ||\n            argsArray[i][2] !== 0 ||\n            argsArray[i][3] !== firstTransformArg3\n          ) {\n            return false; // transforms don't match\n          }\n          return true;\n        case 2:\n          if (fnArray[i] !== OPS.paintImageXObject) {\n            return false;\n          }\n          var iFirstPIXO = context.iCurr - 1;\n          var firstPIXOArg0 = argsArray[iFirstPIXO][0];\n          if (argsArray[i][0] !== firstPIXOArg0) {\n            return false; // images don't match\n          }\n          return true;\n        case 3:\n          return fnArray[i] === OPS.restore;\n      }\n      throw new Error(`iterateImageGroup - invalid pos: ${pos}`);\n    },\n    function (context, i) {\n      var MIN_IMAGES_IN_BLOCK = 3;\n      var MAX_IMAGES_IN_BLOCK = 1000;\n\n      var fnArray = context.fnArray,\n        argsArray = context.argsArray;\n      var curr = context.iCurr;\n      var iFirstSave = curr - 3;\n      var iFirstTransform = curr - 2;\n      var iFirstPIXO = curr - 1;\n      var firstPIXOArg0 = argsArray[iFirstPIXO][0];\n      var firstTransformArg0 = argsArray[iFirstTransform][0];\n      var firstTransformArg3 = argsArray[iFirstTransform][3];\n\n      // At this point, i is the index of the first op past the last valid\n      // quartet.\n      var count = Math.min(\n        Math.floor((i - iFirstSave) / 4),\n        MAX_IMAGES_IN_BLOCK\n      );\n      if (count < MIN_IMAGES_IN_BLOCK) {\n        return i - ((i - iFirstSave) % 4);\n      }\n\n      // Extract the (x,y) positions from all of the matching transforms.\n      var positions = new Float32Array(count * 2);\n      var iTransform = iFirstTransform;\n      for (var q = 0; q < count; q++, iTransform += 4) {\n        var transformArgs = argsArray[iTransform];\n        positions[q << 1] = transformArgs[4];\n        positions[(q << 1) + 1] = transformArgs[5];\n      }\n\n      // Replace queue items.\n      var args = [\n        firstPIXOArg0,\n        firstTransformArg0,\n        firstTransformArg3,\n        positions,\n      ];\n      fnArray.splice(iFirstSave, count * 4, OPS.paintImageXObjectRepeat);\n      argsArray.splice(iFirstSave, count * 4, args);\n\n      return iFirstSave + 1;\n    }\n  );\n\n  // This replaces (beginText, setFont, setTextMatrix, showText, endText)+\n  // sequences with (beginText, setFont, (setTextMatrix, showText)+, endText)+\n  // sequences, if the font for each one is the same.\n  addState(\n    InitialState,\n    [OPS.beginText, OPS.setFont, OPS.setTextMatrix, OPS.showText, OPS.endText],\n    null,\n    function iterateShowTextGroup(context, i) {\n      var fnArray = context.fnArray,\n        argsArray = context.argsArray;\n      var iFirstSave = context.iCurr - 4;\n      var pos = (i - iFirstSave) % 5;\n      switch (pos) {\n        case 0:\n          return fnArray[i] === OPS.beginText;\n        case 1:\n          return fnArray[i] === OPS.setFont;\n        case 2:\n          return fnArray[i] === OPS.setTextMatrix;\n        case 3:\n          if (fnArray[i] !== OPS.showText) {\n            return false;\n          }\n          var iFirstSetFont = context.iCurr - 3;\n          var firstSetFontArg0 = argsArray[iFirstSetFont][0];\n          var firstSetFontArg1 = argsArray[iFirstSetFont][1];\n          if (\n            argsArray[i][0] !== firstSetFontArg0 ||\n            argsArray[i][1] !== firstSetFontArg1\n          ) {\n            return false; // fonts don't match\n          }\n          return true;\n        case 4:\n          return fnArray[i] === OPS.endText;\n      }\n      throw new Error(`iterateShowTextGroup - invalid pos: ${pos}`);\n    },\n    function (context, i) {\n      var MIN_CHARS_IN_BLOCK = 3;\n      var MAX_CHARS_IN_BLOCK = 1000;\n\n      var fnArray = context.fnArray,\n        argsArray = context.argsArray;\n      var curr = context.iCurr;\n      var iFirstBeginText = curr - 4;\n      var iFirstSetFont = curr - 3;\n      var iFirstSetTextMatrix = curr - 2;\n      var iFirstShowText = curr - 1;\n      var iFirstEndText = curr;\n      var firstSetFontArg0 = argsArray[iFirstSetFont][0];\n      var firstSetFontArg1 = argsArray[iFirstSetFont][1];\n\n      // At this point, i is the index of the first op past the last valid\n      // quintet.\n      var count = Math.min(\n        Math.floor((i - iFirstBeginText) / 5),\n        MAX_CHARS_IN_BLOCK\n      );\n      if (count < MIN_CHARS_IN_BLOCK) {\n        return i - ((i - iFirstBeginText) % 5);\n      }\n\n      // If the preceding quintet is (<something>, setFont, setTextMatrix,\n      // showText, endText), include that as well. (E.g. <something> might be\n      // |dependency|.)\n      var iFirst = iFirstBeginText;\n      if (\n        iFirstBeginText >= 4 &&\n        fnArray[iFirstBeginText - 4] === fnArray[iFirstSetFont] &&\n        fnArray[iFirstBeginText - 3] === fnArray[iFirstSetTextMatrix] &&\n        fnArray[iFirstBeginText - 2] === fnArray[iFirstShowText] &&\n        fnArray[iFirstBeginText - 1] === fnArray[iFirstEndText] &&\n        argsArray[iFirstBeginText - 4][0] === firstSetFontArg0 &&\n        argsArray[iFirstBeginText - 4][1] === firstSetFontArg1\n      ) {\n        count++;\n        iFirst -= 5;\n      }\n\n      // Remove (endText, beginText, setFont) trios.\n      var iEndText = iFirst + 4;\n      for (var q = 1; q < count; q++) {\n        fnArray.splice(iEndText, 3);\n        argsArray.splice(iEndText, 3);\n        iEndText += 2;\n      }\n\n      return iEndText + 1;\n    }\n  );\n\n  // eslint-disable-next-line no-shadow\n  function QueueOptimizer(queue) {\n    this.queue = queue;\n    this.state = null;\n    this.context = {\n      iCurr: 0,\n      fnArray: queue.fnArray,\n      argsArray: queue.argsArray,\n    };\n    this.match = null;\n    this.lastProcessed = 0;\n  }\n\n  QueueOptimizer.prototype = {\n    _optimize() {\n      // Process new fnArray item(s) chunk.\n      const fnArray = this.queue.fnArray;\n      let i = this.lastProcessed,\n        ii = fnArray.length;\n      let state = this.state;\n      let match = this.match;\n      if (!state && !match && i + 1 === ii && !InitialState[fnArray[i]]) {\n        // Micro-optimization for the common case: last item is not\n        // optimizable, just skipping it.\n        this.lastProcessed = ii;\n        return;\n      }\n\n      const context = this.context;\n      while (i < ii) {\n        if (match) {\n          // Already find a block of potentially optimizable items, iterating...\n          const iterate = (0, match.iterateFn)(context, i);\n          if (iterate) {\n            i++;\n            continue;\n          }\n          // Found last items for the block, processing...\n          i = (0, match.processFn)(context, i + 1);\n          ii = fnArray.length;\n          match = null;\n          state = null;\n          if (i >= ii) {\n            break;\n          }\n        }\n        // Find the potentially optimizable items.\n        state = (state || InitialState)[fnArray[i]];\n        if (!state || Array.isArray(state)) {\n          i++;\n          continue;\n        }\n        // Found a start of the block based on addState rules.\n        context.iCurr = i;\n        i++;\n        if (state.checkFn && !(0, state.checkFn)(context)) {\n          // Check failed, continue search...\n          state = null;\n          continue;\n        }\n        match = state;\n        state = null;\n      }\n      this.state = state;\n      this.match = match;\n      this.lastProcessed = i;\n    },\n\n    push(fn, args) {\n      this.queue.fnArray.push(fn);\n      this.queue.argsArray.push(args);\n      this._optimize();\n    },\n\n    flush() {\n      while (this.match) {\n        const length = this.queue.fnArray.length;\n        this.lastProcessed = (0, this.match.processFn)(this.context, length);\n        this.match = null;\n        this.state = null;\n        // Repeat optimization until all chunks are exhausted.\n        this._optimize();\n      }\n    },\n\n    reset() {\n      this.state = null;\n      this.match = null;\n      this.lastProcessed = 0;\n    },\n  };\n  return QueueOptimizer;\n})();\n\nvar NullOptimizer = (function NullOptimizerClosure() {\n  // eslint-disable-next-line no-shadow\n  function NullOptimizer(queue) {\n    this.queue = queue;\n  }\n\n  NullOptimizer.prototype = {\n    push(fn, args) {\n      this.queue.fnArray.push(fn);\n      this.queue.argsArray.push(args);\n    },\n\n    flush() {},\n\n    reset() {},\n  };\n\n  return NullOptimizer;\n})();\n\nvar OperatorList = (function OperatorListClosure() {\n  var CHUNK_SIZE = 1000;\n  var CHUNK_SIZE_ABOUT = CHUNK_SIZE - 5; // close to chunk size\n\n  // eslint-disable-next-line no-shadow\n  function OperatorList(intent, streamSink) {\n    this._streamSink = streamSink;\n    this.fnArray = [];\n    this.argsArray = [];\n    if (streamSink && intent !== \"oplist\") {\n      this.optimizer = new QueueOptimizer(this);\n    } else {\n      this.optimizer = new NullOptimizer(this);\n    }\n    this.dependencies = new Set();\n    this._totalLength = 0;\n    this.weight = 0;\n    this._resolved = streamSink ? null : Promise.resolve();\n  }\n\n  OperatorList.prototype = {\n    get length() {\n      return this.argsArray.length;\n    },\n\n    get ready() {\n      return this._resolved || this._streamSink.ready;\n    },\n\n    /**\n     * @type {number} The total length of the entire operator list, since\n     *                `this.length === 0` after flushing.\n     */\n    get totalLength() {\n      return this._totalLength + this.length;\n    },\n\n    addOp(fn, args) {\n      this.optimizer.push(fn, args);\n      this.weight++;\n      if (this._streamSink) {\n        if (this.weight >= CHUNK_SIZE) {\n          this.flush();\n        } else if (\n          this.weight >= CHUNK_SIZE_ABOUT &&\n          (fn === OPS.restore || fn === OPS.endText)\n        ) {\n          // heuristic to flush on boundary of restore or endText\n          this.flush();\n        }\n      }\n    },\n\n    addDependency(dependency) {\n      if (this.dependencies.has(dependency)) {\n        return;\n      }\n      this.dependencies.add(dependency);\n      this.addOp(OPS.dependency, [dependency]);\n    },\n\n    addDependencies(dependencies) {\n      for (const dependency of dependencies) {\n        this.addDependency(dependency);\n      }\n    },\n\n    addOpList(opList) {\n      if (!(opList instanceof OperatorList)) {\n        warn('addOpList - ignoring invalid \"opList\" parameter.');\n        return;\n      }\n      for (const dependency of opList.dependencies) {\n        this.dependencies.add(dependency);\n      }\n      for (var i = 0, ii = opList.length; i < ii; i++) {\n        this.addOp(opList.fnArray[i], opList.argsArray[i]);\n      }\n    },\n\n    getIR() {\n      return {\n        fnArray: this.fnArray,\n        argsArray: this.argsArray,\n        length: this.length,\n      };\n    },\n\n    get _transfers() {\n      const transfers = [];\n      const { fnArray, argsArray, length } = this;\n      for (let i = 0; i < length; i++) {\n        switch (fnArray[i]) {\n          case OPS.paintInlineImageXObject:\n          case OPS.paintInlineImageXObjectGroup:\n          case OPS.paintImageMaskXObject:\n            const arg = argsArray[i][0]; // first param in imgData\n\n            if (\n              typeof PDFJSDev === \"undefined\" ||\n              PDFJSDev.test(\"!PRODUCTION || TESTING\")\n            ) {\n              assert(\n                arg.data instanceof Uint8ClampedArray,\n                'OperatorList._transfers: Unsupported \"arg.data\" type.'\n              );\n            }\n            if (!arg.cached) {\n              transfers.push(arg.data.buffer);\n            }\n            break;\n        }\n      }\n      return transfers;\n    },\n\n    flush(lastChunk = false) {\n      this.optimizer.flush();\n      const length = this.length;\n      this._totalLength += length;\n\n      this._streamSink.enqueue(\n        {\n          fnArray: this.fnArray,\n          argsArray: this.argsArray,\n          lastChunk,\n          length,\n        },\n        1,\n        this._transfers\n      );\n\n      this.dependencies.clear();\n      this.fnArray.length = 0;\n      this.argsArray.length = 0;\n      this.weight = 0;\n      this.optimizer.reset();\n    },\n  };\n\n  return OperatorList;\n})();\n\nexport { OperatorList };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\nimport { bytesToString, escapeString } from \"../shared/util.js\";\nimport { Dict, isDict, isName, isRef, isStream, Name } from \"./primitives.js\";\nimport { calculateMD5 } from \"./crypto.js\";\n\nfunction writeDict(dict, buffer, transform) {\n  buffer.push(\"<<\");\n  for (const key of dict.getKeys()) {\n    buffer.push(` /${key} `);\n    writeValue(dict.getRaw(key), buffer, transform);\n  }\n  buffer.push(\">>\");\n}\n\nfunction writeStream(stream, buffer, transform) {\n  writeDict(stream.dict, buffer, transform);\n  buffer.push(\" stream\\n\");\n  let string = bytesToString(stream.getBytes());\n  if (transform !== null) {\n    string = transform.encryptString(string);\n  }\n  buffer.push(string);\n  buffer.push(\"\\nendstream\\n\");\n}\n\nfunction writeArray(array, buffer, transform) {\n  buffer.push(\"[\");\n  let first = true;\n  for (const val of array) {\n    if (!first) {\n      buffer.push(\" \");\n    } else {\n      first = false;\n    }\n    writeValue(val, buffer, transform);\n  }\n  buffer.push(\"]\");\n}\n\nfunction numberToString(value) {\n  if (Number.isInteger(value)) {\n    return value.toString();\n  }\n\n  const roundedValue = Math.round(value * 100);\n  if (roundedValue % 100 === 0) {\n    return (roundedValue / 100).toString();\n  }\n\n  if (roundedValue % 10 === 0) {\n    return value.toFixed(1);\n  }\n\n  return value.toFixed(2);\n}\n\nfunction writeValue(value, buffer, transform) {\n  if (isName(value)) {\n    buffer.push(`/${value.name}`);\n  } else if (isRef(value)) {\n    buffer.push(`${value.num} ${value.gen} R`);\n  } else if (Array.isArray(value)) {\n    writeArray(value, buffer, transform);\n  } else if (typeof value === \"string\") {\n    if (transform !== null) {\n      value = transform.encryptString(value);\n    }\n    buffer.push(`(${escapeString(value)})`);\n  } else if (typeof value === \"number\") {\n    buffer.push(numberToString(value));\n  } else if (isDict(value)) {\n    writeDict(value, buffer, transform);\n  } else if (isStream(value)) {\n    writeStream(value, buffer, transform);\n  }\n}\n\nfunction writeInt(number, size, offset, buffer) {\n  for (let i = size + offset - 1; i > offset - 1; i--) {\n    buffer[i] = number & 0xff;\n    number >>= 8;\n  }\n  return offset + size;\n}\n\nfunction writeString(string, offset, buffer) {\n  for (let i = 0, len = string.length; i < len; i++) {\n    buffer[offset + i] = string.charCodeAt(i) & 0xff;\n  }\n}\n\nfunction computeMD5(filesize, xrefInfo) {\n  const time = Math.floor(Date.now() / 1000);\n  const filename = xrefInfo.filename || \"\";\n  const md5Buffer = [time.toString(), filename, filesize.toString()];\n  let md5BufferLen = md5Buffer.reduce((a, str) => a + str.length, 0);\n  for (const value of Object.values(xrefInfo.info)) {\n    md5Buffer.push(value);\n    md5BufferLen += value.length;\n  }\n\n  const array = new Uint8Array(md5BufferLen);\n  let offset = 0;\n  for (const str of md5Buffer) {\n    writeString(str, offset, array);\n    offset += str.length;\n  }\n  return bytesToString(calculateMD5(array));\n}\n\nfunction incrementalUpdate(originalData, xrefInfo, newRefs) {\n  const newXref = new Dict(null);\n  const refForXrefTable = xrefInfo.newRef;\n\n  let buffer, baseOffset;\n  const lastByte = originalData[originalData.length - 1];\n  if (lastByte === /* \\n */ 0x0a || lastByte === /* \\r */ 0x0d) {\n    buffer = [];\n    baseOffset = originalData.length;\n  } else {\n    // Avoid to concatenate %%EOF with an object definition\n    buffer = [\"\\n\"];\n    baseOffset = originalData.length + 1;\n  }\n\n  newXref.set(\"Size\", refForXrefTable.num + 1);\n  newXref.set(\"Prev\", xrefInfo.startXRef);\n  newXref.set(\"Type\", Name.get(\"XRef\"));\n\n  if (xrefInfo.rootRef !== null) {\n    newXref.set(\"Root\", xrefInfo.rootRef);\n  }\n  if (xrefInfo.infoRef !== null) {\n    newXref.set(\"Info\", xrefInfo.infoRef);\n  }\n  if (xrefInfo.encrypt !== null) {\n    newXref.set(\"Encrypt\", xrefInfo.encrypt);\n  }\n\n  // Add a ref for the new xref and sort them\n  newRefs.push({ ref: refForXrefTable, data: \"\" });\n  newRefs = newRefs.sort((a, b) => {\n    // compare the refs\n    return a.ref.num - b.ref.num;\n  });\n\n  const xrefTableData = [[0, 1, 0xffff]];\n  const indexes = [0, 1];\n  let maxOffset = 0;\n  for (const { ref, data } of newRefs) {\n    maxOffset = Math.max(maxOffset, baseOffset);\n    xrefTableData.push([1, baseOffset, Math.min(ref.gen, 0xffff)]);\n    baseOffset += data.length;\n    indexes.push(ref.num);\n    indexes.push(1);\n    buffer.push(data);\n  }\n\n  newXref.set(\"Index\", indexes);\n\n  if (xrefInfo.fileIds.length !== 0) {\n    const md5 = computeMD5(baseOffset, xrefInfo);\n    newXref.set(\"ID\", [xrefInfo.fileIds[0], md5]);\n  }\n\n  const offsetSize = Math.ceil(Math.log2(maxOffset) / 8);\n  const sizes = [1, offsetSize, 2];\n  const structSize = sizes[0] + sizes[1] + sizes[2];\n  const tableLength = structSize * xrefTableData.length;\n  newXref.set(\"W\", sizes);\n  newXref.set(\"Length\", tableLength);\n\n  buffer.push(`${refForXrefTable.num} ${refForXrefTable.gen} obj\\n`);\n  writeDict(newXref, buffer, null);\n  buffer.push(\" stream\\n\");\n\n  const bufferLen = buffer.reduce((a, str) => a + str.length, 0);\n  const footer = `\\nendstream\\nendobj\\nstartxref\\n${baseOffset}\\n%%EOF\\n`;\n  const array = new Uint8Array(\n    originalData.length + bufferLen + tableLength + footer.length\n  );\n\n  // Original data\n  array.set(originalData);\n  let offset = originalData.length;\n\n  // New data\n  for (const str of buffer) {\n    writeString(str, offset, array);\n    offset += str.length;\n  }\n\n  // New xref table\n  for (const [type, objOffset, gen] of xrefTableData) {\n    offset = writeInt(type, sizes[0], offset, array);\n    offset = writeInt(objOffset, sizes[1], offset, array);\n    offset = writeInt(gen, sizes[2], offset, array);\n  }\n\n  // Add the footer\n  writeString(footer, offset, array);\n\n  return array;\n}\n\nexport { writeDict, incrementalUpdate };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  AbortException,\n  assert,\n  CMapCompressionType,\n  createPromiseCapability,\n  FONT_IDENTITY_MATRIX,\n  FormatError,\n  IDENTITY_MATRIX,\n  info,\n  isArrayEqual,\n  isNum,\n  isString,\n  OPS,\n  shadow,\n  stringToPDFString,\n  TextRenderingMode,\n  UNSUPPORTED_FEATURES,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport { CMapFactory, IdentityCMap } from \"./cmap.js\";\nimport {\n  Cmd,\n  Dict,\n  EOF,\n  isDict,\n  isName,\n  isRef,\n  isStream,\n  Name,\n  Ref,\n  RefSet,\n} from \"./primitives.js\";\nimport {\n  ErrorFont,\n  Font,\n  FontFlags,\n  getFontType,\n  IdentityToUnicodeMap,\n  ToUnicodeMap,\n} from \"./fonts.js\";\nimport {\n  getEncoding,\n  MacRomanEncoding,\n  StandardEncoding,\n  SymbolSetEncoding,\n  WinAnsiEncoding,\n  ZapfDingbatsEncoding,\n} from \"./encodings.js\";\nimport { getLookupTableFactory, MissingDataException } from \"./core_utils.js\";\nimport {\n  getNormalizedUnicodes,\n  getUnicodeForGlyph,\n  reverseIfRtl,\n} from \"./unicode.js\";\nimport {\n  getSerifFonts,\n  getStdFontMap,\n  getSymbolsFonts,\n} from \"./standard_fonts.js\";\nimport { getTilingPatternIR, Pattern } from \"./pattern.js\";\nimport { isPDFFunction, PDFFunctionFactory } from \"./function.js\";\nimport { Lexer, Parser } from \"./parser.js\";\nimport {\n  LocalColorSpaceCache,\n  LocalGStateCache,\n  LocalImageCache,\n} from \"./image_utils.js\";\nimport { bidi } from \"./bidi.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { DecodeStream } from \"./stream.js\";\nimport { getGlyphsUnicode } from \"./glyphlist.js\";\nimport { getMetrics } from \"./metrics.js\";\nimport { MurmurHash3_64 } from \"./murmurhash3.js\";\nimport { OperatorList } from \"./operator_list.js\";\nimport { PDFImage } from \"./image.js\";\n\nconst DefaultPartialEvaluatorOptions = Object.freeze({\n  maxImageSize: -1,\n  disableFontFace: false,\n  ignoreErrors: false,\n  isEvalSupported: true,\n  fontExtraProperties: false,\n});\n\nconst PatternType = {\n  TILING: 1,\n  SHADING: 2,\n};\n\nconst deferred = Promise.resolve();\n\n// Convert PDF blend mode names to HTML5 blend mode names.\nfunction normalizeBlendMode(value, parsingArray = false) {\n  if (Array.isArray(value)) {\n    // Use the first *supported* BM value in the Array (fixes issue11279.pdf).\n    for (let i = 0, ii = value.length; i < ii; i++) {\n      const maybeBM = normalizeBlendMode(value[i], /* parsingArray = */ true);\n      if (maybeBM) {\n        return maybeBM;\n      }\n    }\n    warn(`Unsupported blend mode Array: ${value}`);\n    return \"source-over\";\n  }\n\n  if (!isName(value)) {\n    if (parsingArray) {\n      return null;\n    }\n    return \"source-over\";\n  }\n  switch (value.name) {\n    case \"Normal\":\n    case \"Compatible\":\n      return \"source-over\";\n    case \"Multiply\":\n      return \"multiply\";\n    case \"Screen\":\n      return \"screen\";\n    case \"Overlay\":\n      return \"overlay\";\n    case \"Darken\":\n      return \"darken\";\n    case \"Lighten\":\n      return \"lighten\";\n    case \"ColorDodge\":\n      return \"color-dodge\";\n    case \"ColorBurn\":\n      return \"color-burn\";\n    case \"HardLight\":\n      return \"hard-light\";\n    case \"SoftLight\":\n      return \"soft-light\";\n    case \"Difference\":\n      return \"difference\";\n    case \"Exclusion\":\n      return \"exclusion\";\n    case \"Hue\":\n      return \"hue\";\n    case \"Saturation\":\n      return \"saturation\";\n    case \"Color\":\n      return \"color\";\n    case \"Luminosity\":\n      return \"luminosity\";\n  }\n  if (parsingArray) {\n    return null;\n  }\n  warn(`Unsupported blend mode: ${value.name}`);\n  return \"source-over\";\n}\n\n// Trying to minimize Date.now() usage and check every 100 time.\nclass TimeSlotManager {\n  static get TIME_SLOT_DURATION_MS() {\n    return shadow(this, \"TIME_SLOT_DURATION_MS\", 20);\n  }\n\n  static get CHECK_TIME_EVERY() {\n    return shadow(this, \"CHECK_TIME_EVERY\", 100);\n  }\n\n  constructor() {\n    this.reset();\n  }\n\n  check() {\n    if (++this.checked < TimeSlotManager.CHECK_TIME_EVERY) {\n      return false;\n    }\n    this.checked = 0;\n    return this.endTime <= Date.now();\n  }\n\n  reset() {\n    this.endTime = Date.now() + TimeSlotManager.TIME_SLOT_DURATION_MS;\n    this.checked = 0;\n  }\n}\n\nclass PartialEvaluator {\n  constructor({\n    xref,\n    handler,\n    pageIndex,\n    idFactory,\n    fontCache,\n    builtInCMapCache,\n    globalImageCache,\n    options = null,\n  }) {\n    this.xref = xref;\n    this.handler = handler;\n    this.pageIndex = pageIndex;\n    this.idFactory = idFactory;\n    this.fontCache = fontCache;\n    this.builtInCMapCache = builtInCMapCache;\n    this.globalImageCache = globalImageCache;\n    this.options = options || DefaultPartialEvaluatorOptions;\n    this.parsingType3Font = false;\n\n    this._fetchBuiltInCMapBound = this.fetchBuiltInCMap.bind(this);\n  }\n\n  /**\n   * Since Functions are only cached (locally) by reference, we can share one\n   * `PDFFunctionFactory` instance within this `PartialEvaluator` instance.\n   */\n  get _pdfFunctionFactory() {\n    const pdfFunctionFactory = new PDFFunctionFactory({\n      xref: this.xref,\n      isEvalSupported: this.options.isEvalSupported,\n    });\n    return shadow(this, \"_pdfFunctionFactory\", pdfFunctionFactory);\n  }\n\n  clone(newOptions = DefaultPartialEvaluatorOptions) {\n    var newEvaluator = Object.create(this);\n    newEvaluator.options = newOptions;\n    return newEvaluator;\n  }\n\n  hasBlendModes(resources) {\n    if (!(resources instanceof Dict)) {\n      return false;\n    }\n\n    const processed = new RefSet();\n    if (resources.objId) {\n      processed.put(resources.objId);\n    }\n\n    var nodes = [resources],\n      xref = this.xref;\n    while (nodes.length) {\n      var node = nodes.shift();\n      // First check the current resources for blend modes.\n      var graphicStates = node.get(\"ExtGState\");\n      if (graphicStates instanceof Dict) {\n        for (let graphicState of graphicStates.getRawValues()) {\n          if (graphicState instanceof Ref) {\n            if (processed.has(graphicState)) {\n              continue; // The ExtGState has already been processed.\n            }\n            try {\n              graphicState = xref.fetch(graphicState);\n            } catch (ex) {\n              if (ex instanceof MissingDataException) {\n                throw ex;\n              }\n              // Avoid parsing a corrupt ExtGState more than once.\n              processed.put(graphicState);\n\n              info(`hasBlendModes - ignoring ExtGState: \"${ex}\".`);\n              continue;\n            }\n          }\n          if (!(graphicState instanceof Dict)) {\n            continue;\n          }\n          if (graphicState.objId) {\n            processed.put(graphicState.objId);\n          }\n\n          const bm = graphicState.get(\"BM\");\n          if (bm instanceof Name) {\n            if (bm.name !== \"Normal\") {\n              return true;\n            }\n            continue;\n          }\n          if (bm !== undefined && Array.isArray(bm)) {\n            for (const element of bm) {\n              if (element instanceof Name && element.name !== \"Normal\") {\n                return true;\n              }\n            }\n          }\n        }\n      }\n      // Descend into the XObjects to look for more resources and blend modes.\n      var xObjects = node.get(\"XObject\");\n      if (!(xObjects instanceof Dict)) {\n        continue;\n      }\n      for (let xObject of xObjects.getRawValues()) {\n        if (xObject instanceof Ref) {\n          if (processed.has(xObject)) {\n            // The XObject has already been processed, and by avoiding a\n            // redundant `xref.fetch` we can *significantly* reduce the load\n            // time for badly generated PDF files (fixes issue6961.pdf).\n            continue;\n          }\n          try {\n            xObject = xref.fetch(xObject);\n          } catch (ex) {\n            if (ex instanceof MissingDataException) {\n              throw ex;\n            }\n            // Avoid parsing a corrupt XObject more than once.\n            processed.put(xObject);\n\n            info(`hasBlendModes - ignoring XObject: \"${ex}\".`);\n            continue;\n          }\n        }\n        if (!isStream(xObject)) {\n          continue;\n        }\n        if (xObject.dict.objId) {\n          processed.put(xObject.dict.objId);\n        }\n        var xResources = xObject.dict.get(\"Resources\");\n        if (!(xResources instanceof Dict)) {\n          continue;\n        }\n        // Checking objId to detect an infinite loop.\n        if (xResources.objId && processed.has(xResources.objId)) {\n          continue;\n        }\n\n        nodes.push(xResources);\n        if (xResources.objId) {\n          processed.put(xResources.objId);\n        }\n      }\n    }\n    return false;\n  }\n\n  async fetchBuiltInCMap(name) {\n    const cachedData = this.builtInCMapCache.get(name);\n    if (cachedData) {\n      return cachedData;\n    }\n    const readableStream = this.handler.sendWithStream(\"FetchBuiltInCMap\", {\n      name,\n    });\n    const reader = readableStream.getReader();\n\n    const data = await new Promise(function (resolve, reject) {\n      function pump() {\n        reader.read().then(function ({ value, done }) {\n          if (done) {\n            return;\n          }\n          resolve(value);\n          pump();\n        }, reject);\n      }\n      pump();\n    });\n\n    if (data.compressionType !== CMapCompressionType.NONE) {\n      // Given the size of uncompressed CMaps, only cache compressed ones.\n      this.builtInCMapCache.set(name, data);\n    }\n    return data;\n  }\n\n  async buildFormXObject(\n    resources,\n    xobj,\n    smask,\n    operatorList,\n    task,\n    initialState,\n    localColorSpaceCache\n  ) {\n    var dict = xobj.dict;\n    var matrix = dict.getArray(\"Matrix\");\n    var bbox = dict.getArray(\"BBox\");\n    if (Array.isArray(bbox) && bbox.length === 4) {\n      bbox = Util.normalizeRect(bbox);\n    } else {\n      bbox = null;\n    }\n    let optionalContent = null;\n    if (dict.has(\"OC\")) {\n      optionalContent = await this.parseMarkedContentProps(\n        dict.get(\"OC\"),\n        resources\n      );\n      operatorList.addOp(OPS.beginMarkedContentProps, [\"OC\", optionalContent]);\n    }\n    var group = dict.get(\"Group\");\n    if (group) {\n      var groupOptions = {\n        matrix,\n        bbox,\n        smask,\n        isolated: false,\n        knockout: false,\n      };\n\n      var groupSubtype = group.get(\"S\");\n      var colorSpace = null;\n      if (isName(groupSubtype, \"Transparency\")) {\n        groupOptions.isolated = group.get(\"I\") || false;\n        groupOptions.knockout = group.get(\"K\") || false;\n        if (group.has(\"CS\")) {\n          const cs = group.getRaw(\"CS\");\n\n          const cachedColorSpace = ColorSpace.getCached(\n            cs,\n            this.xref,\n            localColorSpaceCache\n          );\n          if (cachedColorSpace) {\n            colorSpace = cachedColorSpace;\n          } else {\n            colorSpace = await this.parseColorSpace({\n              cs,\n              resources,\n              localColorSpaceCache,\n            });\n          }\n        }\n      }\n\n      if (smask && smask.backdrop) {\n        colorSpace = colorSpace || ColorSpace.singletons.rgb;\n        smask.backdrop = colorSpace.getRgb(smask.backdrop, 0);\n      }\n\n      operatorList.addOp(OPS.beginGroup, [groupOptions]);\n    }\n\n    operatorList.addOp(OPS.paintFormXObjectBegin, [matrix, bbox]);\n\n    return this.getOperatorList({\n      stream: xobj,\n      task,\n      resources: dict.get(\"Resources\") || resources,\n      operatorList,\n      initialState,\n    }).then(function () {\n      operatorList.addOp(OPS.paintFormXObjectEnd, []);\n\n      if (group) {\n        operatorList.addOp(OPS.endGroup, [groupOptions]);\n      }\n\n      if (optionalContent) {\n        operatorList.addOp(OPS.endMarkedContent, []);\n      }\n    });\n  }\n\n  _sendImgData(objId, imgData, cacheGlobally = false) {\n    const transfers = imgData ? [imgData.data.buffer] : null;\n\n    if (this.parsingType3Font || cacheGlobally) {\n      return this.handler.send(\n        \"commonobj\",\n        [objId, \"Image\", imgData],\n        transfers\n      );\n    }\n    return this.handler.send(\n      \"obj\",\n      [objId, this.pageIndex, \"Image\", imgData],\n      transfers\n    );\n  }\n\n  async buildPaintImageXObject({\n    resources,\n    image,\n    isInline = false,\n    operatorList,\n    cacheKey,\n    localImageCache,\n    localColorSpaceCache,\n  }) {\n    var dict = image.dict;\n    const imageRef = dict.objId;\n    var w = dict.get(\"Width\", \"W\");\n    var h = dict.get(\"Height\", \"H\");\n\n    if (!(w && isNum(w)) || !(h && isNum(h))) {\n      warn(\"Image dimensions are missing, or not numbers.\");\n      return undefined;\n    }\n    var maxImageSize = this.options.maxImageSize;\n    if (maxImageSize !== -1 && w * h > maxImageSize) {\n      warn(\"Image exceeded maximum allowed size and was removed.\");\n      return undefined;\n    }\n\n    var imageMask = dict.get(\"ImageMask\", \"IM\") || false;\n    var imgData, args;\n    if (imageMask) {\n      // This depends on a tmpCanvas being filled with the\n      // current fillStyle, such that processing the pixel\n      // data can't be done here. Instead of creating a\n      // complete PDFImage, only read the information needed\n      // for later.\n\n      var width = dict.get(\"Width\", \"W\");\n      var height = dict.get(\"Height\", \"H\");\n      var bitStrideLength = (width + 7) >> 3;\n      var imgArray = image.getBytes(\n        bitStrideLength * height,\n        /* forceClamped = */ true\n      );\n      var decode = dict.getArray(\"Decode\", \"D\");\n\n      imgData = PDFImage.createMask({\n        imgArray,\n        width,\n        height,\n        imageIsFromDecodeStream: image instanceof DecodeStream,\n        inverseDecode: !!decode && decode[0] > 0,\n      });\n      imgData.cached = !!cacheKey;\n      args = [imgData];\n\n      operatorList.addOp(OPS.paintImageMaskXObject, args);\n      if (cacheKey) {\n        localImageCache.set(cacheKey, imageRef, {\n          fn: OPS.paintImageMaskXObject,\n          args,\n        });\n      }\n      return undefined;\n    }\n\n    var softMask = dict.get(\"SMask\", \"SM\") || false;\n    var mask = dict.get(\"Mask\") || false;\n\n    var SMALL_IMAGE_DIMENSIONS = 200;\n    // Inlining small images into the queue as RGB data\n    if (isInline && !softMask && !mask && w + h < SMALL_IMAGE_DIMENSIONS) {\n      const imageObj = new PDFImage({\n        xref: this.xref,\n        res: resources,\n        image,\n        isInline,\n        pdfFunctionFactory: this._pdfFunctionFactory,\n        localColorSpaceCache,\n      });\n      // We force the use of RGBA_32BPP images here, because we can't handle\n      // any other kind.\n      imgData = imageObj.createImageData(/* forceRGBA = */ true);\n      operatorList.addOp(OPS.paintInlineImageXObject, [imgData]);\n      return undefined;\n    }\n\n    // If there is no imageMask, create the PDFImage and a lot\n    // of image processing can be done here.\n    let objId = `img_${this.idFactory.createObjId()}`,\n      cacheGlobally = false;\n\n    if (this.parsingType3Font) {\n      objId = `${this.idFactory.getDocId()}_type3_${objId}`;\n    } else if (imageRef) {\n      cacheGlobally = this.globalImageCache.shouldCache(\n        imageRef,\n        this.pageIndex\n      );\n\n      if (cacheGlobally) {\n        objId = `${this.idFactory.getDocId()}_${objId}`;\n      }\n    }\n\n    // Ensure that the dependency is added before the image is decoded.\n    operatorList.addDependency(objId);\n    args = [objId, w, h];\n\n    PDFImage.buildImage({\n      xref: this.xref,\n      res: resources,\n      image,\n      isInline,\n      pdfFunctionFactory: this._pdfFunctionFactory,\n      localColorSpaceCache,\n    })\n      .then(imageObj => {\n        imgData = imageObj.createImageData(/* forceRGBA = */ false);\n\n        return this._sendImgData(objId, imgData, cacheGlobally);\n      })\n      .catch(reason => {\n        warn(`Unable to decode image \"${objId}\": \"${reason}\".`);\n\n        return this._sendImgData(objId, /* imgData = */ null, cacheGlobally);\n      });\n\n    operatorList.addOp(OPS.paintImageXObject, args);\n    if (cacheKey) {\n      localImageCache.set(cacheKey, imageRef, {\n        fn: OPS.paintImageXObject,\n        args,\n      });\n\n      if (imageRef) {\n        assert(!isInline, \"Cannot cache an inline image globally.\");\n        this.globalImageCache.addPageIndex(imageRef, this.pageIndex);\n\n        if (cacheGlobally) {\n          this.globalImageCache.setData(imageRef, {\n            objId,\n            fn: OPS.paintImageXObject,\n            args,\n          });\n        }\n      }\n    }\n    return undefined;\n  }\n\n  handleSMask(\n    smask,\n    resources,\n    operatorList,\n    task,\n    stateManager,\n    localColorSpaceCache\n  ) {\n    var smaskContent = smask.get(\"G\");\n    var smaskOptions = {\n      subtype: smask.get(\"S\").name,\n      backdrop: smask.get(\"BC\"),\n    };\n\n    // The SMask might have a alpha/luminosity value transfer function --\n    // we will build a map of integer values in range 0..255 to be fast.\n    var transferObj = smask.get(\"TR\");\n    if (isPDFFunction(transferObj)) {\n      const transferFn = this._pdfFunctionFactory.create(transferObj);\n      var transferMap = new Uint8Array(256);\n      var tmp = new Float32Array(1);\n      for (var i = 0; i < 256; i++) {\n        tmp[0] = i / 255;\n        transferFn(tmp, 0, tmp, 0);\n        transferMap[i] = (tmp[0] * 255) | 0;\n      }\n      smaskOptions.transferMap = transferMap;\n    }\n\n    return this.buildFormXObject(\n      resources,\n      smaskContent,\n      smaskOptions,\n      operatorList,\n      task,\n      stateManager.state.clone(),\n      localColorSpaceCache\n    );\n  }\n\n  handleTransferFunction(tr) {\n    let transferArray;\n    if (Array.isArray(tr)) {\n      transferArray = tr;\n    } else if (isPDFFunction(tr)) {\n      transferArray = [tr];\n    } else {\n      return null; // Not a valid transfer function entry.\n    }\n\n    const transferMaps = [];\n    let numFns = 0,\n      numEffectfulFns = 0;\n    for (const entry of transferArray) {\n      const transferObj = this.xref.fetchIfRef(entry);\n      numFns++;\n\n      if (isName(transferObj, \"Identity\")) {\n        transferMaps.push(null);\n        continue;\n      } else if (!isPDFFunction(transferObj)) {\n        return null; // Not a valid transfer function object.\n      }\n\n      const transferFn = this._pdfFunctionFactory.create(transferObj);\n      const transferMap = new Uint8Array(256),\n        tmp = new Float32Array(1);\n      for (let j = 0; j < 256; j++) {\n        tmp[0] = j / 255;\n        transferFn(tmp, 0, tmp, 0);\n        transferMap[j] = (tmp[0] * 255) | 0;\n      }\n      transferMaps.push(transferMap);\n      numEffectfulFns++;\n    }\n\n    if (!(numFns === 1 || numFns === 4)) {\n      return null; // Only 1 or 4 functions are supported, by the specification.\n    }\n    if (numEffectfulFns === 0) {\n      return null; // Only /Identity transfer functions found, which are no-ops.\n    }\n    return transferMaps;\n  }\n\n  handleTilingType(\n    fn,\n    args,\n    resources,\n    pattern,\n    patternDict,\n    operatorList,\n    task\n  ) {\n    // Create an IR of the pattern code.\n    const tilingOpList = new OperatorList();\n    // Merge the available resources, to prevent issues when the patternDict\n    // is missing some /Resources entries (fixes issue6541.pdf).\n    const patternResources = Dict.merge({\n      xref: this.xref,\n      dictArray: [patternDict.get(\"Resources\"), resources],\n    });\n\n    return this.getOperatorList({\n      stream: pattern,\n      task,\n      resources: patternResources,\n      operatorList: tilingOpList,\n    })\n      .then(function () {\n        return getTilingPatternIR(\n          {\n            fnArray: tilingOpList.fnArray,\n            argsArray: tilingOpList.argsArray,\n          },\n          patternDict,\n          args\n        );\n      })\n      .then(\n        function (tilingPatternIR) {\n          // Add the dependencies to the parent operator list so they are\n          // resolved before the sub operator list is executed synchronously.\n          operatorList.addDependencies(tilingOpList.dependencies);\n          operatorList.addOp(fn, tilingPatternIR);\n        },\n        reason => {\n          if (reason instanceof AbortException) {\n            return;\n          }\n          if (this.options.ignoreErrors) {\n            // Error(s) in the TilingPattern -- sending unsupported feature\n            // notification and allow rendering to continue.\n            this.handler.send(\"UnsupportedFeature\", {\n              featureId: UNSUPPORTED_FEATURES.errorTilingPattern,\n            });\n            warn(`handleTilingType - ignoring pattern: \"${reason}\".`);\n            return;\n          }\n          throw reason;\n        }\n      );\n  }\n\n  handleSetFont(resources, fontArgs, fontRef, operatorList, task, state) {\n    // TODO(mack): Not needed?\n    var fontName,\n      fontSize = 0;\n    if (fontArgs) {\n      fontArgs = fontArgs.slice();\n      fontName = fontArgs[0].name;\n      fontSize = fontArgs[1];\n    }\n\n    return this.loadFont(fontName, fontRef, resources)\n      .then(translated => {\n        if (!translated.font.isType3Font) {\n          return translated;\n        }\n        return translated\n          .loadType3Data(this, resources, task)\n          .then(function () {\n            // Add the dependencies to the parent operatorList so they are\n            // resolved before Type3 operatorLists are executed synchronously.\n            operatorList.addDependencies(translated.type3Dependencies);\n\n            return translated;\n          })\n          .catch(reason => {\n            // Error in the font data -- sending unsupported feature\n            // notification.\n            this.handler.send(\"UnsupportedFeature\", {\n              featureId: UNSUPPORTED_FEATURES.errorFontLoadType3,\n            });\n            return new TranslatedFont({\n              loadedName: \"g_font_error\",\n              font: new ErrorFont(`Type3 font load error: ${reason}`),\n              dict: translated.font,\n              extraProperties: this.options.fontExtraProperties,\n            });\n          });\n      })\n      .then(translated => {\n        state.font = translated.font;\n        state.fontSize = fontSize;\n        state.fontName = fontName;\n        translated.send(this.handler);\n        return translated.loadedName;\n      });\n  }\n\n  handleText(chars, state) {\n    const font = state.font;\n    const glyphs = font.charsToGlyphs(chars);\n\n    if (font.data) {\n      const isAddToPathSet = !!(\n        state.textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG\n      );\n      if (\n        isAddToPathSet ||\n        state.fillColorSpace.name === \"Pattern\" ||\n        font.disableFontFace ||\n        this.options.disableFontFace\n      ) {\n        PartialEvaluator.buildFontPaths(font, glyphs, this.handler);\n      }\n    }\n    return glyphs;\n  }\n\n  ensureStateFont(state) {\n    if (state.font) {\n      return;\n    }\n    const reason = new FormatError(\n      \"Missing setFont (Tf) operator before text rendering operator.\"\n    );\n\n    if (this.options.ignoreErrors) {\n      // Missing setFont operator before text rendering operator -- sending\n      // unsupported feature notification and allow rendering to continue.\n      this.handler.send(\"UnsupportedFeature\", {\n        featureId: UNSUPPORTED_FEATURES.errorFontState,\n      });\n      warn(`ensureStateFont: \"${reason}\".`);\n      return;\n    }\n    throw reason;\n  }\n\n  async setGState({\n    resources,\n    gState,\n    operatorList,\n    cacheKey,\n    task,\n    stateManager,\n    localGStateCache,\n    localColorSpaceCache,\n  }) {\n    const gStateRef = gState.objId;\n    let isSimpleGState = true;\n    // This array holds the converted/processed state data.\n    var gStateObj = [];\n    var gStateKeys = gState.getKeys();\n    var promise = Promise.resolve();\n    for (var i = 0, ii = gStateKeys.length; i < ii; i++) {\n      const key = gStateKeys[i];\n      const value = gState.get(key);\n      switch (key) {\n        case \"Type\":\n          break;\n        case \"LW\":\n        case \"LC\":\n        case \"LJ\":\n        case \"ML\":\n        case \"D\":\n        case \"RI\":\n        case \"FL\":\n        case \"CA\":\n        case \"ca\":\n          gStateObj.push([key, value]);\n          break;\n        case \"Font\":\n          isSimpleGState = false;\n\n          promise = promise.then(() => {\n            return this.handleSetFont(\n              resources,\n              null,\n              value[0],\n              operatorList,\n              task,\n              stateManager.state\n            ).then(function (loadedName) {\n              operatorList.addDependency(loadedName);\n              gStateObj.push([key, [loadedName, value[1]]]);\n            });\n          });\n          break;\n        case \"BM\":\n          gStateObj.push([key, normalizeBlendMode(value)]);\n          break;\n        case \"SMask\":\n          if (isName(value, \"None\")) {\n            gStateObj.push([key, false]);\n            break;\n          }\n          if (isDict(value)) {\n            isSimpleGState = false;\n\n            promise = promise.then(() => {\n              return this.handleSMask(\n                value,\n                resources,\n                operatorList,\n                task,\n                stateManager,\n                localColorSpaceCache\n              );\n            });\n            gStateObj.push([key, true]);\n          } else {\n            warn(\"Unsupported SMask type\");\n          }\n          break;\n        case \"TR\":\n          const transferMaps = this.handleTransferFunction(value);\n          gStateObj.push([key, transferMaps]);\n          break;\n        // Only generate info log messages for the following since\n        // they are unlikely to have a big impact on the rendering.\n        case \"OP\":\n        case \"op\":\n        case \"OPM\":\n        case \"BG\":\n        case \"BG2\":\n        case \"UCR\":\n        case \"UCR2\":\n        case \"TR2\":\n        case \"HT\":\n        case \"SM\":\n        case \"SA\":\n        case \"AIS\":\n        case \"TK\":\n          // TODO implement these operators.\n          info(\"graphic state operator \" + key);\n          break;\n        default:\n          info(\"Unknown graphic state operator \" + key);\n          break;\n      }\n    }\n    return promise.then(function () {\n      if (gStateObj.length > 0) {\n        operatorList.addOp(OPS.setGState, [gStateObj]);\n      }\n\n      if (isSimpleGState) {\n        localGStateCache.set(cacheKey, gStateRef, gStateObj);\n      }\n    });\n  }\n\n  loadFont(fontName, font, resources) {\n    const errorFont = () => {\n      return Promise.resolve(\n        new TranslatedFont({\n          loadedName: \"g_font_error\",\n          font: new ErrorFont(`Font \"${fontName}\" is not available.`),\n          dict: font,\n          extraProperties: this.options.fontExtraProperties,\n        })\n      );\n    };\n\n    var fontRef,\n      xref = this.xref;\n    if (font) {\n      // Loading by ref.\n      if (!isRef(font)) {\n        throw new FormatError('The \"font\" object should be a reference.');\n      }\n      fontRef = font;\n    } else {\n      // Loading by name.\n      var fontRes = resources.get(\"Font\");\n      if (fontRes) {\n        fontRef = fontRes.getRaw(fontName);\n      }\n    }\n    if (!fontRef) {\n      const partialMsg = `Font \"${\n        fontName || (font && font.toString())\n      }\" is not available`;\n\n      if (!this.options.ignoreErrors && !this.parsingType3Font) {\n        warn(`${partialMsg}.`);\n        return errorFont();\n      }\n      // Font not found -- sending unsupported feature notification.\n      this.handler.send(\"UnsupportedFeature\", {\n        featureId: UNSUPPORTED_FEATURES.errorFontMissing,\n      });\n      warn(`${partialMsg} -- attempting to fallback to a default font.`);\n\n      // Falling back to a default font to avoid completely broken rendering,\n      // but note that there're no guarantees that things will look \"correct\".\n      fontRef = PartialEvaluator.fallbackFontDict;\n    }\n\n    if (this.fontCache.has(fontRef)) {\n      return this.fontCache.get(fontRef);\n    }\n\n    font = xref.fetchIfRef(fontRef);\n    if (!isDict(font)) {\n      return errorFont();\n    }\n\n    // We are holding `font.translated` references just for `fontRef`s that\n    // are not actually `Ref`s, but rather `Dict`s. See explanation below.\n    if (font.translated) {\n      return font.translated;\n    }\n\n    var fontCapability = createPromiseCapability();\n\n    var preEvaluatedFont = this.preEvaluateFont(font);\n    const { descriptor, hash } = preEvaluatedFont;\n\n    var fontRefIsRef = isRef(fontRef),\n      fontID;\n    if (fontRefIsRef) {\n      fontID = `f${fontRef.toString()}`;\n    }\n\n    if (hash && isDict(descriptor)) {\n      if (!descriptor.fontAliases) {\n        descriptor.fontAliases = Object.create(null);\n      }\n      var fontAliases = descriptor.fontAliases;\n\n      if (fontAliases[hash]) {\n        var aliasFontRef = fontAliases[hash].aliasRef;\n        if (fontRefIsRef && aliasFontRef && this.fontCache.has(aliasFontRef)) {\n          this.fontCache.putAlias(fontRef, aliasFontRef);\n          return this.fontCache.get(fontRef);\n        }\n      } else {\n        fontAliases[hash] = {\n          fontID: this.idFactory.createFontId(),\n        };\n      }\n\n      if (fontRefIsRef) {\n        fontAliases[hash].aliasRef = fontRef;\n      }\n      fontID = fontAliases[hash].fontID;\n    }\n\n    // Workaround for bad PDF generators that reference fonts incorrectly,\n    // where `fontRef` is a `Dict` rather than a `Ref` (fixes bug946506.pdf).\n    // In this case we should not put the font into `this.fontCache` (which is\n    // a `RefSetCache`), since it's not meaningful to use a `Dict` as a key.\n    //\n    // However, if we don't cache the font it's not possible to remove it\n    // when `cleanup` is triggered from the API, which causes issues on\n    // subsequent rendering operations (see issue7403.pdf).\n    // A simple workaround would be to just not hold `font.translated`\n    // references in this case, but this would force us to unnecessarily load\n    // the same fonts over and over.\n    //\n    // Instead, we cheat a bit by attempting to use a modified `fontID` as a\n    // key in `this.fontCache`, to allow the font to be cached.\n    // NOTE: This works because `RefSetCache` calls `toString()` on provided\n    //       keys. Also, since `fontRef` is used when getting cached fonts,\n    //       we'll not accidentally match fonts cached with the `fontID`.\n    if (fontRefIsRef) {\n      this.fontCache.put(fontRef, fontCapability.promise);\n    } else {\n      if (!fontID) {\n        fontID = this.idFactory.createFontId();\n      }\n      this.fontCache.put(`id_${fontID}`, fontCapability.promise);\n    }\n    assert(\n      fontID && fontID.startsWith(\"f\"),\n      'The \"fontID\" must be (correctly) defined.'\n    );\n\n    // Keep track of each font we translated so the caller can\n    // load them asynchronously before calling display on a page.\n    font.loadedName = `${this.idFactory.getDocId()}_${fontID}`;\n\n    font.translated = fontCapability.promise;\n\n    // TODO move promises into translate font\n    var translatedPromise;\n    try {\n      translatedPromise = this.translateFont(preEvaluatedFont);\n    } catch (e) {\n      translatedPromise = Promise.reject(e);\n    }\n\n    translatedPromise\n      .then(translatedFont => {\n        if (translatedFont.fontType !== undefined) {\n          var xrefFontStats = xref.stats.fontTypes;\n          xrefFontStats[translatedFont.fontType] = true;\n        }\n\n        fontCapability.resolve(\n          new TranslatedFont({\n            loadedName: font.loadedName,\n            font: translatedFont,\n            dict: font,\n            extraProperties: this.options.fontExtraProperties,\n          })\n        );\n      })\n      .catch(reason => {\n        // TODO fontCapability.reject?\n        // Error in the font data -- sending unsupported feature notification.\n        this.handler.send(\"UnsupportedFeature\", {\n          featureId: UNSUPPORTED_FEATURES.errorFontTranslate,\n        });\n\n        try {\n          // error, but it's still nice to have font type reported\n          var fontFile3 = descriptor && descriptor.get(\"FontFile3\");\n          var subtype = fontFile3 && fontFile3.get(\"Subtype\");\n          var fontType = getFontType(\n            preEvaluatedFont.type,\n            subtype && subtype.name\n          );\n          var xrefFontStats = xref.stats.fontTypes;\n          xrefFontStats[fontType] = true;\n        } catch (ex) {}\n\n        fontCapability.resolve(\n          new TranslatedFont({\n            loadedName: font.loadedName,\n            font: new ErrorFont(\n              reason instanceof Error ? reason.message : reason\n            ),\n            dict: font,\n            extraProperties: this.options.fontExtraProperties,\n          })\n        );\n      });\n    return fontCapability.promise;\n  }\n\n  buildPath(operatorList, fn, args, parsingText = false) {\n    var lastIndex = operatorList.length - 1;\n    if (!args) {\n      args = [];\n    }\n    if (\n      lastIndex < 0 ||\n      operatorList.fnArray[lastIndex] !== OPS.constructPath\n    ) {\n      // Handle corrupt PDF documents that contains path operators inside of\n      // text objects, which may shift subsequent text, by enclosing the path\n      // operator in save/restore operators (fixes issue10542_reduced.pdf).\n      //\n      // Note that this will effectively disable the optimization in the\n      // `else` branch below, but given that this type of corruption is\n      // *extremely* rare that shouldn't really matter much in practice.\n      if (parsingText) {\n        warn(`Encountered path operator \"${fn}\" inside of a text object.`);\n        operatorList.addOp(OPS.save, null);\n      }\n\n      operatorList.addOp(OPS.constructPath, [[fn], args]);\n\n      if (parsingText) {\n        operatorList.addOp(OPS.restore, null);\n      }\n    } else {\n      var opArgs = operatorList.argsArray[lastIndex];\n      opArgs[0].push(fn);\n      Array.prototype.push.apply(opArgs[1], args);\n    }\n  }\n\n  parseColorSpace({ cs, resources, localColorSpaceCache }) {\n    return ColorSpace.parseAsync({\n      cs,\n      xref: this.xref,\n      resources,\n      pdfFunctionFactory: this._pdfFunctionFactory,\n      localColorSpaceCache,\n    }).catch(reason => {\n      if (reason instanceof AbortException) {\n        return null;\n      }\n      if (this.options.ignoreErrors) {\n        // Error(s) in the ColorSpace -- sending unsupported feature\n        // notification and allow rendering to continue.\n        this.handler.send(\"UnsupportedFeature\", {\n          featureId: UNSUPPORTED_FEATURES.errorColorSpace,\n        });\n        warn(`parseColorSpace - ignoring ColorSpace: \"${reason}\".`);\n        return null;\n      }\n      throw reason;\n    });\n  }\n\n  async handleColorN(\n    operatorList,\n    fn,\n    args,\n    cs,\n    patterns,\n    resources,\n    task,\n    localColorSpaceCache\n  ) {\n    // compile tiling patterns\n    var patternName = args[args.length - 1];\n    // SCN/scn applies patterns along with normal colors\n    var pattern;\n    if (isName(patternName) && (pattern = patterns.get(patternName.name))) {\n      var dict = isStream(pattern) ? pattern.dict : pattern;\n      var typeNum = dict.get(\"PatternType\");\n\n      if (typeNum === PatternType.TILING) {\n        var color = cs.base ? cs.base.getRgb(args, 0) : null;\n        return this.handleTilingType(\n          fn,\n          color,\n          resources,\n          pattern,\n          dict,\n          operatorList,\n          task\n        );\n      } else if (typeNum === PatternType.SHADING) {\n        var shading = dict.get(\"Shading\");\n        var matrix = dict.getArray(\"Matrix\");\n        pattern = Pattern.parseShading(\n          shading,\n          matrix,\n          this.xref,\n          resources,\n          this.handler,\n          this._pdfFunctionFactory,\n          localColorSpaceCache\n        );\n        operatorList.addOp(fn, pattern.getIR());\n        return undefined;\n      }\n      throw new FormatError(`Unknown PatternType: ${typeNum}`);\n    }\n    throw new FormatError(`Unknown PatternName: ${patternName}`);\n  }\n\n  async parseMarkedContentProps(contentProperties, resources) {\n    let optionalContent;\n    if (isName(contentProperties)) {\n      const properties = resources.get(\"Properties\");\n      optionalContent = properties.get(contentProperties.name);\n    } else if (isDict(contentProperties)) {\n      optionalContent = contentProperties;\n    } else {\n      throw new FormatError(\"Optional content properties malformed.\");\n    }\n\n    const optionalContentType = optionalContent.get(\"Type\").name;\n    if (optionalContentType === \"OCG\") {\n      return {\n        type: optionalContentType,\n        id: optionalContent.objId,\n      };\n    } else if (optionalContentType === \"OCMD\") {\n      const optionalContentGroups = optionalContent.get(\"OCGs\");\n      if (\n        Array.isArray(optionalContentGroups) ||\n        isDict(optionalContentGroups)\n      ) {\n        const groupIds = [];\n        if (Array.isArray(optionalContentGroups)) {\n          optionalContent.get(\"OCGs\").forEach(ocg => {\n            groupIds.push(ocg.toString());\n          });\n        } else {\n          // Dictionary, just use the obj id.\n          groupIds.push(optionalContentGroups.objId);\n        }\n\n        let expression = null;\n        if (optionalContent.get(\"VE\")) {\n          // TODO support visibility expression.\n          expression = true;\n        }\n\n        return {\n          type: optionalContentType,\n          ids: groupIds,\n          policy: isName(optionalContent.get(\"P\"))\n            ? optionalContent.get(\"P\").name\n            : null,\n          expression,\n        };\n      } else if (isRef(optionalContentGroups)) {\n        return {\n          type: optionalContentType,\n          id: optionalContentGroups.toString(),\n        };\n      }\n    }\n    return null;\n  }\n\n  getOperatorList({\n    stream,\n    task,\n    resources,\n    operatorList,\n    initialState = null,\n  }) {\n    // Ensure that `resources`/`initialState` is correctly initialized,\n    // even if the provided parameter is e.g. `null`.\n    resources = resources || Dict.empty;\n    initialState = initialState || new EvalState();\n\n    if (!operatorList) {\n      throw new Error('getOperatorList: missing \"operatorList\" parameter');\n    }\n\n    var self = this;\n    var xref = this.xref;\n    let parsingText = false;\n    const localImageCache = new LocalImageCache();\n    const localColorSpaceCache = new LocalColorSpaceCache();\n    const localGStateCache = new LocalGStateCache();\n\n    var xobjs = resources.get(\"XObject\") || Dict.empty;\n    var patterns = resources.get(\"Pattern\") || Dict.empty;\n    var stateManager = new StateManager(initialState);\n    var preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n    var timeSlotManager = new TimeSlotManager();\n\n    function closePendingRestoreOPS(argument) {\n      for (var i = 0, ii = preprocessor.savedStatesDepth; i < ii; i++) {\n        operatorList.addOp(OPS.restore, []);\n      }\n    }\n\n    return new Promise(function promiseBody(resolve, reject) {\n      const next = function (promise) {\n        Promise.all([promise, operatorList.ready]).then(function () {\n          try {\n            promiseBody(resolve, reject);\n          } catch (ex) {\n            reject(ex);\n          }\n        }, reject);\n      };\n      task.ensureNotTerminated();\n      timeSlotManager.reset();\n      var stop,\n        operation = {},\n        i,\n        ii,\n        cs,\n        name;\n      while (!(stop = timeSlotManager.check())) {\n        // The arguments parsed by read() are used beyond this loop, so we\n        // cannot reuse the same array on each iteration. Therefore we pass\n        // in |null| as the initial value (see the comment on\n        // EvaluatorPreprocessor_read() for why).\n        operation.args = null;\n        if (!preprocessor.read(operation)) {\n          break;\n        }\n        var args = operation.args;\n        var fn = operation.fn;\n\n        switch (fn | 0) {\n          case OPS.paintXObject:\n            // eagerly compile XForm objects\n            name = args[0].name;\n            if (name) {\n              const localImage = localImageCache.getByName(name);\n              if (localImage) {\n                operatorList.addOp(localImage.fn, localImage.args);\n                args = null;\n                continue;\n              }\n            }\n\n            next(\n              new Promise(function (resolveXObject, rejectXObject) {\n                if (!name) {\n                  throw new FormatError(\"XObject must be referred to by name.\");\n                }\n\n                let xobj = xobjs.getRaw(name);\n                if (xobj instanceof Ref) {\n                  const localImage = localImageCache.getByRef(xobj);\n                  if (localImage) {\n                    operatorList.addOp(localImage.fn, localImage.args);\n\n                    resolveXObject();\n                    return;\n                  }\n\n                  const globalImage = self.globalImageCache.getData(\n                    xobj,\n                    self.pageIndex\n                  );\n                  if (globalImage) {\n                    operatorList.addDependency(globalImage.objId);\n                    operatorList.addOp(globalImage.fn, globalImage.args);\n\n                    resolveXObject();\n                    return;\n                  }\n\n                  xobj = xref.fetch(xobj);\n                }\n\n                if (!isStream(xobj)) {\n                  throw new FormatError(\"XObject should be a stream\");\n                }\n\n                const type = xobj.dict.get(\"Subtype\");\n                if (!isName(type)) {\n                  throw new FormatError(\"XObject should have a Name subtype\");\n                }\n\n                if (type.name === \"Form\") {\n                  stateManager.save();\n                  self\n                    .buildFormXObject(\n                      resources,\n                      xobj,\n                      null,\n                      operatorList,\n                      task,\n                      stateManager.state.clone(),\n                      localColorSpaceCache\n                    )\n                    .then(function () {\n                      stateManager.restore();\n                      resolveXObject();\n                    }, rejectXObject);\n                  return;\n                } else if (type.name === \"Image\") {\n                  self\n                    .buildPaintImageXObject({\n                      resources,\n                      image: xobj,\n                      operatorList,\n                      cacheKey: name,\n                      localImageCache,\n                      localColorSpaceCache,\n                    })\n                    .then(resolveXObject, rejectXObject);\n                  return;\n                } else if (type.name === \"PS\") {\n                  // PostScript XObjects are unused when viewing documents.\n                  // See section 4.7.1 of Adobe's PDF reference.\n                  info(\"Ignored XObject subtype PS\");\n                } else {\n                  throw new FormatError(\n                    `Unhandled XObject subtype ${type.name}`\n                  );\n                }\n                resolveXObject();\n              }).catch(function (reason) {\n                if (reason instanceof AbortException) {\n                  return;\n                }\n                if (self.options.ignoreErrors) {\n                  // Error(s) in the XObject -- sending unsupported feature\n                  // notification and allow rendering to continue.\n                  self.handler.send(\"UnsupportedFeature\", {\n                    featureId: UNSUPPORTED_FEATURES.errorXObject,\n                  });\n                  warn(`getOperatorList - ignoring XObject: \"${reason}\".`);\n                  return;\n                }\n                throw reason;\n              })\n            );\n            return;\n          case OPS.setFont:\n            var fontSize = args[1];\n            // eagerly collect all fonts\n            next(\n              self\n                .handleSetFont(\n                  resources,\n                  args,\n                  null,\n                  operatorList,\n                  task,\n                  stateManager.state\n                )\n                .then(function (loadedName) {\n                  operatorList.addDependency(loadedName);\n                  operatorList.addOp(OPS.setFont, [loadedName, fontSize]);\n                })\n            );\n            return;\n          case OPS.beginText:\n            parsingText = true;\n            break;\n          case OPS.endText:\n            parsingText = false;\n            break;\n          case OPS.endInlineImage:\n            var cacheKey = args[0].cacheKey;\n            if (cacheKey) {\n              const localImage = localImageCache.getByName(cacheKey);\n              if (localImage) {\n                operatorList.addOp(localImage.fn, localImage.args);\n                args = null;\n                continue;\n              }\n            }\n            next(\n              self.buildPaintImageXObject({\n                resources,\n                image: args[0],\n                isInline: true,\n                operatorList,\n                cacheKey,\n                localImageCache,\n                localColorSpaceCache,\n              })\n            );\n            return;\n          case OPS.showText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n            args[0] = self.handleText(args[0], stateManager.state);\n            break;\n          case OPS.showSpacedText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n            var arr = args[0];\n            var combinedGlyphs = [];\n            var arrLength = arr.length;\n            var state = stateManager.state;\n            for (i = 0; i < arrLength; ++i) {\n              var arrItem = arr[i];\n              if (isString(arrItem)) {\n                Array.prototype.push.apply(\n                  combinedGlyphs,\n                  self.handleText(arrItem, state)\n                );\n              } else if (isNum(arrItem)) {\n                combinedGlyphs.push(arrItem);\n              }\n            }\n            args[0] = combinedGlyphs;\n            fn = OPS.showText;\n            break;\n          case OPS.nextLineShowText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n            operatorList.addOp(OPS.nextLine);\n            args[0] = self.handleText(args[0], stateManager.state);\n            fn = OPS.showText;\n            break;\n          case OPS.nextLineSetSpacingShowText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n            operatorList.addOp(OPS.nextLine);\n            operatorList.addOp(OPS.setWordSpacing, [args.shift()]);\n            operatorList.addOp(OPS.setCharSpacing, [args.shift()]);\n            args[0] = self.handleText(args[0], stateManager.state);\n            fn = OPS.showText;\n            break;\n          case OPS.setTextRenderingMode:\n            stateManager.state.textRenderingMode = args[0];\n            break;\n\n          case OPS.setFillColorSpace: {\n            const cachedColorSpace = ColorSpace.getCached(\n              args[0],\n              xref,\n              localColorSpaceCache\n            );\n            if (cachedColorSpace) {\n              stateManager.state.fillColorSpace = cachedColorSpace;\n              continue;\n            }\n\n            next(\n              self\n                .parseColorSpace({\n                  cs: args[0],\n                  resources,\n                  localColorSpaceCache,\n                })\n                .then(function (colorSpace) {\n                  if (colorSpace) {\n                    stateManager.state.fillColorSpace = colorSpace;\n                  }\n                })\n            );\n            return;\n          }\n          case OPS.setStrokeColorSpace: {\n            const cachedColorSpace = ColorSpace.getCached(\n              args[0],\n              xref,\n              localColorSpaceCache\n            );\n            if (cachedColorSpace) {\n              stateManager.state.strokeColorSpace = cachedColorSpace;\n              continue;\n            }\n\n            next(\n              self\n                .parseColorSpace({\n                  cs: args[0],\n                  resources,\n                  localColorSpaceCache,\n                })\n                .then(function (colorSpace) {\n                  if (colorSpace) {\n                    stateManager.state.strokeColorSpace = colorSpace;\n                  }\n                })\n            );\n            return;\n          }\n          case OPS.setFillColor:\n            cs = stateManager.state.fillColorSpace;\n            args = cs.getRgb(args, 0);\n            fn = OPS.setFillRGBColor;\n            break;\n          case OPS.setStrokeColor:\n            cs = stateManager.state.strokeColorSpace;\n            args = cs.getRgb(args, 0);\n            fn = OPS.setStrokeRGBColor;\n            break;\n          case OPS.setFillGray:\n            stateManager.state.fillColorSpace = ColorSpace.singletons.gray;\n            args = ColorSpace.singletons.gray.getRgb(args, 0);\n            fn = OPS.setFillRGBColor;\n            break;\n          case OPS.setStrokeGray:\n            stateManager.state.strokeColorSpace = ColorSpace.singletons.gray;\n            args = ColorSpace.singletons.gray.getRgb(args, 0);\n            fn = OPS.setStrokeRGBColor;\n            break;\n          case OPS.setFillCMYKColor:\n            stateManager.state.fillColorSpace = ColorSpace.singletons.cmyk;\n            args = ColorSpace.singletons.cmyk.getRgb(args, 0);\n            fn = OPS.setFillRGBColor;\n            break;\n          case OPS.setStrokeCMYKColor:\n            stateManager.state.strokeColorSpace = ColorSpace.singletons.cmyk;\n            args = ColorSpace.singletons.cmyk.getRgb(args, 0);\n            fn = OPS.setStrokeRGBColor;\n            break;\n          case OPS.setFillRGBColor:\n            stateManager.state.fillColorSpace = ColorSpace.singletons.rgb;\n            args = ColorSpace.singletons.rgb.getRgb(args, 0);\n            break;\n          case OPS.setStrokeRGBColor:\n            stateManager.state.strokeColorSpace = ColorSpace.singletons.rgb;\n            args = ColorSpace.singletons.rgb.getRgb(args, 0);\n            break;\n          case OPS.setFillColorN:\n            cs = stateManager.state.fillColorSpace;\n            if (cs.name === \"Pattern\") {\n              next(\n                self.handleColorN(\n                  operatorList,\n                  OPS.setFillColorN,\n                  args,\n                  cs,\n                  patterns,\n                  resources,\n                  task,\n                  localColorSpaceCache\n                )\n              );\n              return;\n            }\n            args = cs.getRgb(args, 0);\n            fn = OPS.setFillRGBColor;\n            break;\n          case OPS.setStrokeColorN:\n            cs = stateManager.state.strokeColorSpace;\n            if (cs.name === \"Pattern\") {\n              next(\n                self.handleColorN(\n                  operatorList,\n                  OPS.setStrokeColorN,\n                  args,\n                  cs,\n                  patterns,\n                  resources,\n                  task,\n                  localColorSpaceCache\n                )\n              );\n              return;\n            }\n            args = cs.getRgb(args, 0);\n            fn = OPS.setStrokeRGBColor;\n            break;\n\n          case OPS.shadingFill:\n            var shadingRes = resources.get(\"Shading\");\n            if (!shadingRes) {\n              throw new FormatError(\"No shading resource found\");\n            }\n\n            var shading = shadingRes.get(args[0].name);\n            if (!shading) {\n              throw new FormatError(\"No shading object found\");\n            }\n\n            var shadingFill = Pattern.parseShading(\n              shading,\n              null,\n              xref,\n              resources,\n              self.handler,\n              self._pdfFunctionFactory,\n              localColorSpaceCache\n            );\n            var patternIR = shadingFill.getIR();\n            args = [patternIR];\n            fn = OPS.shadingFill;\n            break;\n          case OPS.setGState:\n            name = args[0].name;\n            if (name) {\n              const localGStateObj = localGStateCache.getByName(name);\n              if (localGStateObj) {\n                if (localGStateObj.length > 0) {\n                  operatorList.addOp(OPS.setGState, [localGStateObj]);\n                }\n                args = null;\n                continue;\n              }\n            }\n\n            next(\n              new Promise(function (resolveGState, rejectGState) {\n                if (!name) {\n                  throw new FormatError(\"GState must be referred to by name.\");\n                }\n\n                const extGState = resources.get(\"ExtGState\");\n                if (!(extGState instanceof Dict)) {\n                  throw new FormatError(\"ExtGState should be a dictionary.\");\n                }\n\n                const gState = extGState.get(name);\n                // TODO: Attempt to lookup cached GStates by reference as well,\n                //       if and only if there are PDF documents where doing so\n                //       would significantly improve performance.\n                if (!(gState instanceof Dict)) {\n                  throw new FormatError(\"GState should be a dictionary.\");\n                }\n\n                self\n                  .setGState({\n                    resources,\n                    gState,\n                    operatorList,\n                    cacheKey: name,\n                    task,\n                    stateManager,\n                    localGStateCache,\n                    localColorSpaceCache,\n                  })\n                  .then(resolveGState, rejectGState);\n              }).catch(function (reason) {\n                if (reason instanceof AbortException) {\n                  return;\n                }\n                if (self.options.ignoreErrors) {\n                  // Error(s) in the ExtGState -- sending unsupported feature\n                  // notification and allow parsing/rendering to continue.\n                  self.handler.send(\"UnsupportedFeature\", {\n                    featureId: UNSUPPORTED_FEATURES.errorExtGState,\n                  });\n                  warn(`getOperatorList - ignoring ExtGState: \"${reason}\".`);\n                  return;\n                }\n                throw reason;\n              })\n            );\n            return;\n          case OPS.moveTo:\n          case OPS.lineTo:\n          case OPS.curveTo:\n          case OPS.curveTo2:\n          case OPS.curveTo3:\n          case OPS.closePath:\n          case OPS.rectangle:\n            self.buildPath(operatorList, fn, args, parsingText);\n            continue;\n          case OPS.markPoint:\n          case OPS.markPointProps:\n          case OPS.beginCompat:\n          case OPS.endCompat:\n            // Ignore operators where the corresponding handlers are known to\n            // be no-op in CanvasGraphics (display/canvas.js). This prevents\n            // serialization errors and is also a bit more efficient.\n            // We could also try to serialize all objects in a general way,\n            // e.g. as done in https://github.com/mozilla/pdf.js/pull/6266,\n            // but doing so is meaningless without knowing the semantics.\n            continue;\n          case OPS.beginMarkedContentProps:\n            if (!isName(args[0])) {\n              warn(`Expected name for beginMarkedContentProps arg0=${args[0]}`);\n              continue;\n            }\n            if (args[0].name === \"OC\") {\n              next(\n                self\n                  .parseMarkedContentProps(args[1], resources)\n                  .then(data => {\n                    operatorList.addOp(OPS.beginMarkedContentProps, [\n                      \"OC\",\n                      data,\n                    ]);\n                  })\n                  .catch(reason => {\n                    if (reason instanceof AbortException) {\n                      return;\n                    }\n                    if (self.options.ignoreErrors) {\n                      self.handler.send(\"UnsupportedFeature\", {\n                        featureId: UNSUPPORTED_FEATURES.errorMarkedContent,\n                      });\n                      warn(\n                        `getOperatorList - ignoring beginMarkedContentProps: \"${reason}\".`\n                      );\n                      return;\n                    }\n                    throw reason;\n                  })\n              );\n              return;\n            }\n            // Other marked content types aren't supported yet.\n            args = [args[0].name];\n\n            break;\n          case OPS.beginMarkedContent:\n          case OPS.endMarkedContent:\n          default:\n            // Note: Ignore the operator if it has `Dict` arguments, since\n            // those are non-serializable, otherwise postMessage will throw\n            // \"An object could not be cloned.\".\n            if (args !== null) {\n              for (i = 0, ii = args.length; i < ii; i++) {\n                if (args[i] instanceof Dict) {\n                  break;\n                }\n              }\n              if (i < ii) {\n                warn(\"getOperatorList - ignoring operator: \" + fn);\n                continue;\n              }\n            }\n        }\n        operatorList.addOp(fn, args);\n      }\n      if (stop) {\n        next(deferred);\n        return;\n      }\n      // Some PDFs don't close all restores inside object/form.\n      // Closing those for them.\n      closePendingRestoreOPS();\n      resolve();\n    }).catch(reason => {\n      if (reason instanceof AbortException) {\n        return;\n      }\n      if (this.options.ignoreErrors) {\n        // Error(s) in the OperatorList -- sending unsupported feature\n        // notification and allow rendering to continue.\n        this.handler.send(\"UnsupportedFeature\", {\n          featureId: UNSUPPORTED_FEATURES.errorOperatorList,\n        });\n        warn(\n          `getOperatorList - ignoring errors during \"${task.name}\" ` +\n            `task: \"${reason}\".`\n        );\n\n        closePendingRestoreOPS();\n        return;\n      }\n      throw reason;\n    });\n  }\n\n  getTextContent({\n    stream,\n    task,\n    resources,\n    stateManager = null,\n    normalizeWhitespace = false,\n    combineTextItems = false,\n    sink,\n    seenStyles = Object.create(null),\n  }) {\n    // Ensure that `resources`/`stateManager` is correctly initialized,\n    // even if the provided parameter is e.g. `null`.\n    resources = resources || Dict.empty;\n    stateManager = stateManager || new StateManager(new TextState());\n\n    var WhitespaceRegexp = /\\s/g;\n\n    var textContent = {\n      items: [],\n      styles: Object.create(null),\n    };\n    var textContentItem = {\n      initialized: false,\n      str: [],\n      width: 0,\n      height: 0,\n      vertical: false,\n      lastAdvanceWidth: 0,\n      lastAdvanceHeight: 0,\n      textAdvanceScale: 0,\n      spaceWidth: 0,\n      fakeSpaceMin: Infinity,\n      fakeMultiSpaceMin: Infinity,\n      fakeMultiSpaceMax: -0,\n      textRunBreakAllowed: false,\n      transform: null,\n      fontName: null,\n    };\n    var SPACE_FACTOR = 0.3;\n    var MULTI_SPACE_FACTOR = 1.5;\n    var MULTI_SPACE_FACTOR_MAX = 4;\n\n    var self = this;\n    var xref = this.xref;\n\n    // The xobj is parsed iff it's needed, e.g. if there is a `DO` cmd.\n    var xobjs = null;\n    const emptyXObjectCache = new LocalImageCache();\n    const emptyGStateCache = new LocalGStateCache();\n\n    var preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n\n    var textState;\n\n    function ensureTextContentItem() {\n      if (textContentItem.initialized) {\n        return textContentItem;\n      }\n      var font = textState.font;\n      if (!(font.loadedName in seenStyles)) {\n        seenStyles[font.loadedName] = true;\n        textContent.styles[font.loadedName] = {\n          fontFamily: font.fallbackName,\n          ascent: font.ascent,\n          descent: font.descent,\n          vertical: font.vertical,\n        };\n      }\n      textContentItem.fontName = font.loadedName;\n\n      // 9.4.4 Text Space Details\n      var tsm = [\n        textState.fontSize * textState.textHScale,\n        0,\n        0,\n        textState.fontSize,\n        0,\n        textState.textRise,\n      ];\n\n      if (\n        font.isType3Font &&\n        textState.fontSize <= 1 &&\n        !isArrayEqual(textState.fontMatrix, FONT_IDENTITY_MATRIX)\n      ) {\n        const glyphHeight = font.bbox[3] - font.bbox[1];\n        if (glyphHeight > 0) {\n          tsm[3] *= glyphHeight * textState.fontMatrix[3];\n        }\n      }\n\n      var trm = Util.transform(\n        textState.ctm,\n        Util.transform(textState.textMatrix, tsm)\n      );\n      textContentItem.transform = trm;\n      if (!font.vertical) {\n        textContentItem.width = 0;\n        textContentItem.height = Math.sqrt(trm[2] * trm[2] + trm[3] * trm[3]);\n        textContentItem.vertical = false;\n      } else {\n        textContentItem.width = Math.sqrt(trm[0] * trm[0] + trm[1] * trm[1]);\n        textContentItem.height = 0;\n        textContentItem.vertical = true;\n      }\n\n      var a = textState.textLineMatrix[0];\n      var b = textState.textLineMatrix[1];\n      var scaleLineX = Math.sqrt(a * a + b * b);\n      a = textState.ctm[0];\n      b = textState.ctm[1];\n      var scaleCtmX = Math.sqrt(a * a + b * b);\n      textContentItem.textAdvanceScale = scaleCtmX * scaleLineX;\n      textContentItem.lastAdvanceWidth = 0;\n      textContentItem.lastAdvanceHeight = 0;\n\n      var spaceWidth = (font.spaceWidth / 1000) * textState.fontSize;\n      if (spaceWidth) {\n        textContentItem.spaceWidth = spaceWidth;\n        textContentItem.fakeSpaceMin = spaceWidth * SPACE_FACTOR;\n        textContentItem.fakeMultiSpaceMin = spaceWidth * MULTI_SPACE_FACTOR;\n        textContentItem.fakeMultiSpaceMax = spaceWidth * MULTI_SPACE_FACTOR_MAX;\n        // It's okay for monospace fonts to fake as much space as needed.\n        textContentItem.textRunBreakAllowed = !font.isMonospace;\n      } else {\n        textContentItem.spaceWidth = 0;\n        textContentItem.fakeSpaceMin = Infinity;\n        textContentItem.fakeMultiSpaceMin = Infinity;\n        textContentItem.fakeMultiSpaceMax = 0;\n        textContentItem.textRunBreakAllowed = false;\n      }\n\n      textContentItem.initialized = true;\n      return textContentItem;\n    }\n\n    function replaceWhitespace(str) {\n      // Replaces all whitespaces with standard spaces (0x20), to avoid\n      // alignment issues between the textLayer and the canvas if the text\n      // contains e.g. tabs (fixes issue6612.pdf).\n      var i = 0,\n        ii = str.length,\n        code;\n      while (i < ii && (code = str.charCodeAt(i)) >= 0x20 && code <= 0x7f) {\n        i++;\n      }\n      return i < ii ? str.replace(WhitespaceRegexp, \" \") : str;\n    }\n\n    function runBidiTransform(textChunk) {\n      var str = textChunk.str.join(\"\");\n      var bidiResult = bidi(str, -1, textChunk.vertical);\n      return {\n        str: normalizeWhitespace\n          ? replaceWhitespace(bidiResult.str)\n          : bidiResult.str,\n        dir: bidiResult.dir,\n        width: textChunk.width,\n        height: textChunk.height,\n        transform: textChunk.transform,\n        fontName: textChunk.fontName,\n      };\n    }\n\n    function handleSetFont(fontName, fontRef) {\n      return self\n        .loadFont(fontName, fontRef, resources)\n        .then(function (translated) {\n          textState.font = translated.font;\n          textState.fontMatrix =\n            translated.font.fontMatrix || FONT_IDENTITY_MATRIX;\n        });\n    }\n\n    function buildTextContentItem(chars) {\n      var font = textState.font;\n      var textChunk = ensureTextContentItem();\n      var width = 0;\n      var height = 0;\n      var glyphs = font.charsToGlyphs(chars);\n      for (var i = 0; i < glyphs.length; i++) {\n        var glyph = glyphs[i];\n        var glyphWidth = null;\n        if (font.vertical && glyph.vmetric) {\n          glyphWidth = glyph.vmetric[0];\n        } else {\n          glyphWidth = glyph.width;\n        }\n\n        var glyphUnicode = glyph.unicode;\n        var NormalizedUnicodes = getNormalizedUnicodes();\n        if (NormalizedUnicodes[glyphUnicode] !== undefined) {\n          glyphUnicode = NormalizedUnicodes[glyphUnicode];\n        }\n        glyphUnicode = reverseIfRtl(glyphUnicode);\n\n        var charSpacing = textState.charSpacing;\n        if (glyph.isSpace) {\n          var wordSpacing = textState.wordSpacing;\n          charSpacing += wordSpacing;\n          if (wordSpacing > 0) {\n            addFakeSpaces(wordSpacing, textChunk.str);\n          }\n        }\n\n        var tx = 0;\n        var ty = 0;\n        if (!font.vertical) {\n          var w0 = glyphWidth * textState.fontMatrix[0];\n          tx = (w0 * textState.fontSize + charSpacing) * textState.textHScale;\n          width += tx;\n        } else {\n          var w1 = glyphWidth * textState.fontMatrix[0];\n          ty = w1 * textState.fontSize + charSpacing;\n          height += ty;\n        }\n        textState.translateTextMatrix(tx, ty);\n\n        textChunk.str.push(glyphUnicode);\n      }\n\n      if (!font.vertical) {\n        textChunk.lastAdvanceWidth = width;\n        textChunk.width += width;\n      } else {\n        textChunk.lastAdvanceHeight = height;\n        textChunk.height += Math.abs(height);\n      }\n\n      return textChunk;\n    }\n\n    function addFakeSpaces(width, strBuf) {\n      if (width < textContentItem.fakeSpaceMin) {\n        return;\n      }\n      if (width < textContentItem.fakeMultiSpaceMin) {\n        strBuf.push(\" \");\n        return;\n      }\n      var fakeSpaces = Math.round(width / textContentItem.spaceWidth);\n      while (fakeSpaces-- > 0) {\n        strBuf.push(\" \");\n      }\n    }\n\n    function flushTextContentItem() {\n      if (!textContentItem.initialized) {\n        return;\n      }\n\n      // Do final text scaling.\n      if (!textContentItem.vertical) {\n        textContentItem.width *= textContentItem.textAdvanceScale;\n      } else {\n        textContentItem.height *= textContentItem.textAdvanceScale;\n      }\n      textContent.items.push(runBidiTransform(textContentItem));\n\n      textContentItem.initialized = false;\n      textContentItem.str.length = 0;\n    }\n\n    function enqueueChunk() {\n      const length = textContent.items.length;\n      if (length > 0) {\n        sink.enqueue(textContent, length);\n        textContent.items = [];\n        textContent.styles = Object.create(null);\n      }\n    }\n\n    var timeSlotManager = new TimeSlotManager();\n\n    return new Promise(function promiseBody(resolve, reject) {\n      const next = function (promise) {\n        enqueueChunk();\n        Promise.all([promise, sink.ready]).then(function () {\n          try {\n            promiseBody(resolve, reject);\n          } catch (ex) {\n            reject(ex);\n          }\n        }, reject);\n      };\n      task.ensureNotTerminated();\n      timeSlotManager.reset();\n      var stop,\n        operation = {},\n        args = [];\n      while (!(stop = timeSlotManager.check())) {\n        // The arguments parsed by read() are not used beyond this loop, so\n        // we can reuse the same array on every iteration, thus avoiding\n        // unnecessary allocations.\n        args.length = 0;\n        operation.args = args;\n        if (!preprocessor.read(operation)) {\n          break;\n        }\n        textState = stateManager.state;\n        var fn = operation.fn;\n        args = operation.args;\n        var advance, diff;\n\n        switch (fn | 0) {\n          case OPS.setFont:\n            // Optimization to ignore multiple identical Tf commands.\n            var fontNameArg = args[0].name,\n              fontSizeArg = args[1];\n            if (\n              textState.font &&\n              fontNameArg === textState.fontName &&\n              fontSizeArg === textState.fontSize\n            ) {\n              break;\n            }\n\n            flushTextContentItem();\n            textState.fontName = fontNameArg;\n            textState.fontSize = fontSizeArg;\n            next(handleSetFont(fontNameArg, null));\n            return;\n          case OPS.setTextRise:\n            flushTextContentItem();\n            textState.textRise = args[0];\n            break;\n          case OPS.setHScale:\n            flushTextContentItem();\n            textState.textHScale = args[0] / 100;\n            break;\n          case OPS.setLeading:\n            flushTextContentItem();\n            textState.leading = args[0];\n            break;\n          case OPS.moveText:\n            // Optimization to treat same line movement as advance\n            var isSameTextLine = !textState.font\n              ? false\n              : (textState.font.vertical ? args[0] : args[1]) === 0;\n            advance = args[0] - args[1];\n            if (\n              combineTextItems &&\n              isSameTextLine &&\n              textContentItem.initialized &&\n              advance > 0 &&\n              advance <= textContentItem.fakeMultiSpaceMax\n            ) {\n              textState.translateTextLineMatrix(args[0], args[1]);\n              textContentItem.width +=\n                args[0] - textContentItem.lastAdvanceWidth;\n              textContentItem.height +=\n                args[1] - textContentItem.lastAdvanceHeight;\n              diff =\n                args[0] -\n                textContentItem.lastAdvanceWidth -\n                (args[1] - textContentItem.lastAdvanceHeight);\n              addFakeSpaces(diff, textContentItem.str);\n              break;\n            }\n\n            flushTextContentItem();\n            textState.translateTextLineMatrix(args[0], args[1]);\n            textState.textMatrix = textState.textLineMatrix.slice();\n            break;\n          case OPS.setLeadingMoveText:\n            flushTextContentItem();\n            textState.leading = -args[1];\n            textState.translateTextLineMatrix(args[0], args[1]);\n            textState.textMatrix = textState.textLineMatrix.slice();\n            break;\n          case OPS.nextLine:\n            flushTextContentItem();\n            textState.carriageReturn();\n            break;\n          case OPS.setTextMatrix:\n            // Optimization to treat same line movement as advance.\n            advance = textState.calcTextLineMatrixAdvance(\n              args[0],\n              args[1],\n              args[2],\n              args[3],\n              args[4],\n              args[5]\n            );\n            if (\n              combineTextItems &&\n              advance !== null &&\n              textContentItem.initialized &&\n              advance.value > 0 &&\n              advance.value <= textContentItem.fakeMultiSpaceMax\n            ) {\n              textState.translateTextLineMatrix(advance.width, advance.height);\n              textContentItem.width +=\n                advance.width - textContentItem.lastAdvanceWidth;\n              textContentItem.height +=\n                advance.height - textContentItem.lastAdvanceHeight;\n              diff =\n                advance.width -\n                textContentItem.lastAdvanceWidth -\n                (advance.height - textContentItem.lastAdvanceHeight);\n              addFakeSpaces(diff, textContentItem.str);\n              break;\n            }\n\n            flushTextContentItem();\n            textState.setTextMatrix(\n              args[0],\n              args[1],\n              args[2],\n              args[3],\n              args[4],\n              args[5]\n            );\n            textState.setTextLineMatrix(\n              args[0],\n              args[1],\n              args[2],\n              args[3],\n              args[4],\n              args[5]\n            );\n            break;\n          case OPS.setCharSpacing:\n            textState.charSpacing = args[0];\n            break;\n          case OPS.setWordSpacing:\n            textState.wordSpacing = args[0];\n            break;\n          case OPS.beginText:\n            flushTextContentItem();\n            textState.textMatrix = IDENTITY_MATRIX.slice();\n            textState.textLineMatrix = IDENTITY_MATRIX.slice();\n            break;\n          case OPS.showSpacedText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n            var items = args[0];\n            var offset;\n            for (var j = 0, jj = items.length; j < jj; j++) {\n              if (typeof items[j] === \"string\") {\n                buildTextContentItem(items[j]);\n              } else if (isNum(items[j])) {\n                ensureTextContentItem();\n\n                // PDF Specification 5.3.2 states:\n                // The number is expressed in thousandths of a unit of text\n                // space.\n                // This amount is subtracted from the current horizontal or\n                // vertical coordinate, depending on the writing mode.\n                // In the default coordinate system, a positive adjustment\n                // has the effect of moving the next glyph painted either to\n                // the left or down by the given amount.\n                advance = (items[j] * textState.fontSize) / 1000;\n                var breakTextRun = false;\n                if (textState.font.vertical) {\n                  offset = advance;\n                  textState.translateTextMatrix(0, offset);\n                  breakTextRun =\n                    textContentItem.textRunBreakAllowed &&\n                    advance > textContentItem.fakeMultiSpaceMax;\n                  if (!breakTextRun) {\n                    // Value needs to be added to height to paint down.\n                    textContentItem.height += offset;\n                  }\n                } else {\n                  advance = -advance;\n                  offset = advance * textState.textHScale;\n                  textState.translateTextMatrix(offset, 0);\n                  breakTextRun =\n                    textContentItem.textRunBreakAllowed &&\n                    advance > textContentItem.fakeMultiSpaceMax;\n                  if (!breakTextRun) {\n                    // Value needs to be subtracted from width to paint left.\n                    textContentItem.width += offset;\n                  }\n                }\n                if (breakTextRun) {\n                  flushTextContentItem();\n                } else if (advance > 0) {\n                  addFakeSpaces(advance, textContentItem.str);\n                }\n              }\n            }\n            break;\n          case OPS.showText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n            buildTextContentItem(args[0]);\n            break;\n          case OPS.nextLineShowText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n            flushTextContentItem();\n            textState.carriageReturn();\n            buildTextContentItem(args[0]);\n            break;\n          case OPS.nextLineSetSpacingShowText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n            flushTextContentItem();\n            textState.wordSpacing = args[0];\n            textState.charSpacing = args[1];\n            textState.carriageReturn();\n            buildTextContentItem(args[2]);\n            break;\n          case OPS.paintXObject:\n            flushTextContentItem();\n            if (!xobjs) {\n              xobjs = resources.get(\"XObject\") || Dict.empty;\n            }\n\n            var name = args[0].name;\n            if (name && emptyXObjectCache.getByName(name)) {\n              break;\n            }\n\n            next(\n              new Promise(function (resolveXObject, rejectXObject) {\n                if (!name) {\n                  throw new FormatError(\"XObject must be referred to by name.\");\n                }\n\n                let xobj = xobjs.getRaw(name);\n                if (xobj instanceof Ref) {\n                  if (emptyXObjectCache.getByRef(xobj)) {\n                    resolveXObject();\n                    return;\n                  }\n\n                  xobj = xref.fetch(xobj);\n                }\n\n                if (!isStream(xobj)) {\n                  throw new FormatError(\"XObject should be a stream\");\n                }\n\n                const type = xobj.dict.get(\"Subtype\");\n                if (!isName(type)) {\n                  throw new FormatError(\"XObject should have a Name subtype\");\n                }\n\n                if (type.name !== \"Form\") {\n                  emptyXObjectCache.set(name, xobj.dict.objId, true);\n\n                  resolveXObject();\n                  return;\n                }\n\n                // Use a new `StateManager` to prevent incorrect positioning\n                // of textItems *after* the Form XObject, since errors in the\n                // data can otherwise prevent `restore` operators from\n                // executing.\n                // NOTE: Only an issue when `options.ignoreErrors === true`.\n                const currentState = stateManager.state.clone();\n                const xObjStateManager = new StateManager(currentState);\n\n                const matrix = xobj.dict.getArray(\"Matrix\");\n                if (Array.isArray(matrix) && matrix.length === 6) {\n                  xObjStateManager.transform(matrix);\n                }\n\n                // Enqueue the `textContent` chunk before parsing the /Form\n                // XObject.\n                enqueueChunk();\n                const sinkWrapper = {\n                  enqueueInvoked: false,\n\n                  enqueue(chunk, size) {\n                    this.enqueueInvoked = true;\n                    sink.enqueue(chunk, size);\n                  },\n\n                  get desiredSize() {\n                    return sink.desiredSize;\n                  },\n\n                  get ready() {\n                    return sink.ready;\n                  },\n                };\n\n                self\n                  .getTextContent({\n                    stream: xobj,\n                    task,\n                    resources: xobj.dict.get(\"Resources\") || resources,\n                    stateManager: xObjStateManager,\n                    normalizeWhitespace,\n                    combineTextItems,\n                    sink: sinkWrapper,\n                    seenStyles,\n                  })\n                  .then(function () {\n                    if (!sinkWrapper.enqueueInvoked) {\n                      emptyXObjectCache.set(name, xobj.dict.objId, true);\n                    }\n                    resolveXObject();\n                  }, rejectXObject);\n              }).catch(function (reason) {\n                if (reason instanceof AbortException) {\n                  return;\n                }\n                if (self.options.ignoreErrors) {\n                  // Error(s) in the XObject -- allow text-extraction to\n                  // continue.\n                  warn(`getTextContent - ignoring XObject: \"${reason}\".`);\n                  return;\n                }\n                throw reason;\n              })\n            );\n            return;\n          case OPS.setGState:\n            name = args[0].name;\n            if (name && emptyGStateCache.getByName(name)) {\n              break;\n            }\n\n            next(\n              new Promise(function (resolveGState, rejectGState) {\n                if (!name) {\n                  throw new FormatError(\"GState must be referred to by name.\");\n                }\n\n                const extGState = resources.get(\"ExtGState\");\n                if (!(extGState instanceof Dict)) {\n                  throw new FormatError(\"ExtGState should be a dictionary.\");\n                }\n\n                const gState = extGState.get(name);\n                // TODO: Attempt to lookup cached GStates by reference as well,\n                //       if and only if there are PDF documents where doing so\n                //       would significantly improve performance.\n                if (!(gState instanceof Dict)) {\n                  throw new FormatError(\"GState should be a dictionary.\");\n                }\n\n                const gStateFont = gState.get(\"Font\");\n                if (!gStateFont) {\n                  emptyGStateCache.set(name, gState.objId, true);\n\n                  resolveGState();\n                  return;\n                }\n                flushTextContentItem();\n\n                textState.fontName = null;\n                textState.fontSize = gStateFont[1];\n                handleSetFont(null, gStateFont[0]).then(\n                  resolveGState,\n                  rejectGState\n                );\n              }).catch(function (reason) {\n                if (reason instanceof AbortException) {\n                  return;\n                }\n                if (self.options.ignoreErrors) {\n                  // Error(s) in the ExtGState -- allow text-extraction to\n                  // continue.\n                  warn(`getTextContent - ignoring ExtGState: \"${reason}\".`);\n                  return;\n                }\n                throw reason;\n              })\n            );\n            return;\n        } // switch\n        if (textContent.items.length >= sink.desiredSize) {\n          // Wait for ready, if we reach highWaterMark.\n          stop = true;\n          break;\n        }\n      } // while\n      if (stop) {\n        next(deferred);\n        return;\n      }\n      flushTextContentItem();\n      enqueueChunk();\n      resolve();\n    }).catch(reason => {\n      if (reason instanceof AbortException) {\n        return;\n      }\n      if (this.options.ignoreErrors) {\n        // Error(s) in the TextContent -- allow text-extraction to continue.\n        warn(\n          `getTextContent - ignoring errors during \"${task.name}\" ` +\n            `task: \"${reason}\".`\n        );\n\n        flushTextContentItem();\n        enqueueChunk();\n        return;\n      }\n      throw reason;\n    });\n  }\n\n  extractDataStructures(dict, baseDict, properties) {\n    const xref = this.xref;\n    let cidToGidBytes;\n    // 9.10.2\n    var toUnicode = dict.get(\"ToUnicode\") || baseDict.get(\"ToUnicode\");\n    var toUnicodePromise = toUnicode\n      ? this.readToUnicode(toUnicode)\n      : Promise.resolve(undefined);\n\n    if (properties.composite) {\n      // CIDSystemInfo helps to match CID to glyphs\n      var cidSystemInfo = dict.get(\"CIDSystemInfo\");\n      if (isDict(cidSystemInfo)) {\n        properties.cidSystemInfo = {\n          registry: stringToPDFString(cidSystemInfo.get(\"Registry\")),\n          ordering: stringToPDFString(cidSystemInfo.get(\"Ordering\")),\n          supplement: cidSystemInfo.get(\"Supplement\"),\n        };\n      }\n\n      var cidToGidMap = dict.get(\"CIDToGIDMap\");\n      if (isStream(cidToGidMap)) {\n        cidToGidBytes = cidToGidMap.getBytes();\n      }\n    }\n\n    // Based on 9.6.6 of the spec the encoding can come from multiple places\n    // and depends on the font type. The base encoding and differences are\n    // read here, but the encoding that is actually used is chosen during\n    // glyph mapping in the font.\n    // TODO: Loading the built in encoding in the font would allow the\n    // differences to be merged in here not require us to hold on to it.\n    var differences = [];\n    var baseEncodingName = null;\n    var encoding;\n    if (dict.has(\"Encoding\")) {\n      encoding = dict.get(\"Encoding\");\n      if (isDict(encoding)) {\n        baseEncodingName = encoding.get(\"BaseEncoding\");\n        baseEncodingName = isName(baseEncodingName)\n          ? baseEncodingName.name\n          : null;\n        // Load the differences between the base and original\n        if (encoding.has(\"Differences\")) {\n          var diffEncoding = encoding.get(\"Differences\");\n          var index = 0;\n          for (var j = 0, jj = diffEncoding.length; j < jj; j++) {\n            var data = xref.fetchIfRef(diffEncoding[j]);\n            if (isNum(data)) {\n              index = data;\n            } else if (isName(data)) {\n              differences[index++] = data.name;\n            } else {\n              throw new FormatError(\n                `Invalid entry in 'Differences' array: ${data}`\n              );\n            }\n          }\n        }\n      } else if (isName(encoding)) {\n        baseEncodingName = encoding.name;\n      } else {\n        throw new FormatError(\"Encoding is not a Name nor a Dict\");\n      }\n      // According to table 114 if the encoding is a named encoding it must be\n      // one of these predefined encodings.\n      if (\n        baseEncodingName !== \"MacRomanEncoding\" &&\n        baseEncodingName !== \"MacExpertEncoding\" &&\n        baseEncodingName !== \"WinAnsiEncoding\"\n      ) {\n        baseEncodingName = null;\n      }\n    }\n\n    if (baseEncodingName) {\n      properties.defaultEncoding = getEncoding(baseEncodingName).slice();\n    } else {\n      var isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n      var isNonsymbolicFont = !!(properties.flags & FontFlags.Nonsymbolic);\n      // According to \"Table 114\" in section \"9.6.6.1 General\" (under\n      // \"9.6.6 Character Encoding\") of the PDF specification, a Nonsymbolic\n      // font should use the `StandardEncoding` if no encoding is specified.\n      encoding = StandardEncoding;\n      if (properties.type === \"TrueType\" && !isNonsymbolicFont) {\n        encoding = WinAnsiEncoding;\n      }\n      // The Symbolic attribute can be misused for regular fonts\n      // Heuristic: we have to check if the font is a standard one also\n      if (isSymbolicFont) {\n        encoding = MacRomanEncoding;\n        if (!properties.file) {\n          if (/Symbol/i.test(properties.name)) {\n            encoding = SymbolSetEncoding;\n          } else if (/Dingbats|Wingdings/i.test(properties.name)) {\n            encoding = ZapfDingbatsEncoding;\n          }\n        }\n      }\n      properties.defaultEncoding = encoding;\n    }\n\n    properties.differences = differences;\n    properties.baseEncodingName = baseEncodingName;\n    properties.hasEncoding = !!baseEncodingName || differences.length > 0;\n    properties.dict = dict;\n    return toUnicodePromise\n      .then(readToUnicode => {\n        properties.toUnicode = readToUnicode;\n        return this.buildToUnicode(properties);\n      })\n      .then(builtToUnicode => {\n        properties.toUnicode = builtToUnicode;\n        if (cidToGidBytes) {\n          properties.cidToGidMap = this.readCidToGidMap(\n            cidToGidBytes,\n            builtToUnicode\n          );\n        }\n        return properties;\n      });\n  }\n\n  /**\n   * @returns {ToUnicodeMap}\n   * @private\n   */\n  _buildSimpleFontToUnicode(properties, forceGlyphs = false) {\n    assert(!properties.composite, \"Must be a simple font.\");\n\n    const toUnicode = [];\n    const encoding = properties.defaultEncoding.slice();\n    const baseEncodingName = properties.baseEncodingName;\n    // Merge in the differences array.\n    const differences = properties.differences;\n    for (const charcode in differences) {\n      const glyphName = differences[charcode];\n      if (glyphName === \".notdef\") {\n        // Skip .notdef to prevent rendering errors, e.g. boxes appearing\n        // where there should be spaces (fixes issue5256.pdf).\n        continue;\n      }\n      encoding[charcode] = glyphName;\n    }\n    const glyphsUnicodeMap = getGlyphsUnicode();\n    for (const charcode in encoding) {\n      // a) Map the character code to a character name.\n      let glyphName = encoding[charcode];\n      // b) Look up the character name in the Adobe Glyph List (see the\n      //    Bibliography) to obtain the corresponding Unicode value.\n      if (glyphName === \"\") {\n        continue;\n      } else if (glyphsUnicodeMap[glyphName] === undefined) {\n        // (undocumented) c) Few heuristics to recognize unknown glyphs\n        // NOTE: Adobe Reader does not do this step, but OSX Preview does\n        let code = 0;\n        switch (glyphName[0]) {\n          case \"G\": // Gxx glyph\n            if (glyphName.length === 3) {\n              code = parseInt(glyphName.substring(1), 16);\n            }\n            break;\n          case \"g\": // g00xx glyph\n            if (glyphName.length === 5) {\n              code = parseInt(glyphName.substring(1), 16);\n            }\n            break;\n          case \"C\": // Cdd{d} glyph\n          case \"c\": // cdd{d} glyph\n            if (glyphName.length >= 3 && glyphName.length <= 4) {\n              const codeStr = glyphName.substring(1);\n\n              if (forceGlyphs) {\n                code = parseInt(codeStr, 16);\n                break;\n              }\n              // Normally the Cdd{d}/cdd{d} glyphName format will contain\n              // regular, i.e. base 10, charCodes (see issue4550.pdf)...\n              code = +codeStr;\n\n              // ... however some PDF generators violate that assumption by\n              // containing glyph, i.e. base 16, codes instead.\n              // In that case we need to re-parse the *entire* encoding to\n              // prevent broken text-selection (fixes issue9655_reduced.pdf).\n              if (\n                Number.isNaN(code) &&\n                Number.isInteger(parseInt(codeStr, 16))\n              ) {\n                return this._buildSimpleFontToUnicode(\n                  properties,\n                  /* forceGlyphs */ true\n                );\n              }\n            }\n            break;\n          default:\n            // 'uniXXXX'/'uXXXX{XX}' glyphs\n            const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n            if (unicode !== -1) {\n              code = unicode;\n            }\n        }\n        if (code > 0 && code <= 0x10ffff && Number.isInteger(code)) {\n          // If `baseEncodingName` is one the predefined encodings, and `code`\n          // equals `charcode`, using the glyph defined in the baseEncoding\n          // seems to yield a better `toUnicode` mapping (fixes issue 5070).\n          if (baseEncodingName && code === +charcode) {\n            const baseEncoding = getEncoding(baseEncodingName);\n            if (baseEncoding && (glyphName = baseEncoding[charcode])) {\n              toUnicode[charcode] = String.fromCharCode(\n                glyphsUnicodeMap[glyphName]\n              );\n              continue;\n            }\n          }\n          toUnicode[charcode] = String.fromCodePoint(code);\n        }\n        continue;\n      }\n      toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]);\n    }\n    return new ToUnicodeMap(toUnicode);\n  }\n\n  /**\n   * Builds a char code to unicode map based on section 9.10 of the spec.\n   * @param {Object} properties Font properties object.\n   * @returns {Promise} A Promise that is resolved with a\n   *   {ToUnicodeMap|IdentityToUnicodeMap} object.\n   */\n  buildToUnicode(properties) {\n    properties.hasIncludedToUnicodeMap =\n      !!properties.toUnicode && properties.toUnicode.length > 0;\n\n    // Section 9.10.2 Mapping Character Codes to Unicode Values\n    if (properties.hasIncludedToUnicodeMap) {\n      // Some fonts contain incomplete ToUnicode data, causing issues with\n      // text-extraction. For simple fonts, containing encoding information,\n      // use a fallback ToUnicode map to improve this (fixes issue8229.pdf).\n      if (!properties.composite && properties.hasEncoding) {\n        properties.fallbackToUnicode = this._buildSimpleFontToUnicode(\n          properties\n        );\n      }\n\n      return Promise.resolve(properties.toUnicode);\n    }\n\n    // According to the spec if the font is a simple font we should only map\n    // to unicode if the base encoding is MacRoman, MacExpert, or WinAnsi or\n    // the differences array only contains adobe standard or symbol set names,\n    // in pratice it seems better to always try to create a toUnicode map\n    // based of the default encoding.\n    if (!properties.composite /* is simple font */) {\n      return Promise.resolve(this._buildSimpleFontToUnicode(properties));\n    }\n\n    // If the font is a composite font that uses one of the predefined CMaps\n    // listed in Table 118 (except Identity–H and Identity–V) or whose\n    // descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1, or\n    // Adobe-Korea1 character collection:\n    if (\n      properties.composite &&\n      ((properties.cMap.builtInCMap &&\n        !(properties.cMap instanceof IdentityCMap)) ||\n        (properties.cidSystemInfo.registry === \"Adobe\" &&\n          (properties.cidSystemInfo.ordering === \"GB1\" ||\n            properties.cidSystemInfo.ordering === \"CNS1\" ||\n            properties.cidSystemInfo.ordering === \"Japan1\" ||\n            properties.cidSystemInfo.ordering === \"Korea1\")))\n    ) {\n      // Then:\n      // a) Map the character code to a character identifier (CID) according\n      // to the font’s CMap.\n      // b) Obtain the registry and ordering of the character collection used\n      // by the font’s CMap (for example, Adobe and Japan1) from its\n      // CIDSystemInfo dictionary.\n      const registry = properties.cidSystemInfo.registry;\n      const ordering = properties.cidSystemInfo.ordering;\n      // c) Construct a second CMap name by concatenating the registry and\n      // ordering obtained in step (b) in the format registry–ordering–UCS2\n      // (for example, Adobe–Japan1–UCS2).\n      const ucs2CMapName = Name.get(registry + \"-\" + ordering + \"-UCS2\");\n      // d) Obtain the CMap with the name constructed in step (c) (available\n      // from the ASN Web site; see the Bibliography).\n      return CMapFactory.create({\n        encoding: ucs2CMapName,\n        fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n        useCMap: null,\n      }).then(function (ucs2CMap) {\n        const cMap = properties.cMap;\n        const toUnicode = [];\n        cMap.forEach(function (charcode, cid) {\n          if (cid > 0xffff) {\n            throw new FormatError(\"Max size of CID is 65,535\");\n          }\n          // e) Map the CID obtained in step (a) according to the CMap\n          // obtained in step (d), producing a Unicode value.\n          const ucs2 = ucs2CMap.lookup(cid);\n          if (ucs2) {\n            toUnicode[charcode] = String.fromCharCode(\n              (ucs2.charCodeAt(0) << 8) + ucs2.charCodeAt(1)\n            );\n          }\n        });\n        return new ToUnicodeMap(toUnicode);\n      });\n    }\n\n    // The viewer's choice, just use an identity map.\n    return Promise.resolve(\n      new IdentityToUnicodeMap(properties.firstChar, properties.lastChar)\n    );\n  }\n\n  readToUnicode(toUnicode) {\n    var cmapObj = toUnicode;\n    if (isName(cmapObj)) {\n      return CMapFactory.create({\n        encoding: cmapObj,\n        fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n        useCMap: null,\n      }).then(function (cmap) {\n        if (cmap instanceof IdentityCMap) {\n          return new IdentityToUnicodeMap(0, 0xffff);\n        }\n        return new ToUnicodeMap(cmap.getMap());\n      });\n    } else if (isStream(cmapObj)) {\n      return CMapFactory.create({\n        encoding: cmapObj,\n        fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n        useCMap: null,\n      }).then(\n        function (cmap) {\n          if (cmap instanceof IdentityCMap) {\n            return new IdentityToUnicodeMap(0, 0xffff);\n          }\n          var map = new Array(cmap.length);\n          // Convert UTF-16BE\n          // NOTE: cmap can be a sparse array, so use forEach instead of\n          // `for(;;)` to iterate over all keys.\n          cmap.forEach(function (charCode, token) {\n            var str = [];\n            for (var k = 0; k < token.length; k += 2) {\n              var w1 = (token.charCodeAt(k) << 8) | token.charCodeAt(k + 1);\n              if ((w1 & 0xf800) !== 0xd800) {\n                // w1 < 0xD800 || w1 > 0xDFFF\n                str.push(w1);\n                continue;\n              }\n              k += 2;\n              var w2 = (token.charCodeAt(k) << 8) | token.charCodeAt(k + 1);\n              str.push(((w1 & 0x3ff) << 10) + (w2 & 0x3ff) + 0x10000);\n            }\n            map[charCode] = String.fromCodePoint.apply(String, str);\n          });\n          return new ToUnicodeMap(map);\n        },\n        reason => {\n          if (reason instanceof AbortException) {\n            return null;\n          }\n          if (this.options.ignoreErrors) {\n            // Error in the ToUnicode data -- sending unsupported feature\n            // notification and allow font parsing to continue.\n            this.handler.send(\"UnsupportedFeature\", {\n              featureId: UNSUPPORTED_FEATURES.errorFontToUnicode,\n            });\n            warn(`readToUnicode - ignoring ToUnicode data: \"${reason}\".`);\n            return null;\n          }\n          throw reason;\n        }\n      );\n    }\n    return Promise.resolve(null);\n  }\n\n  readCidToGidMap(glyphsData, toUnicode) {\n    // Extract the encoding from the CIDToGIDMap\n\n    // Set encoding 0 to later verify the font has an encoding\n    var result = [];\n    for (var j = 0, jj = glyphsData.length; j < jj; j++) {\n      var glyphID = (glyphsData[j++] << 8) | glyphsData[j];\n      const code = j >> 1;\n      if (glyphID === 0 && !toUnicode.has(code)) {\n        continue;\n      }\n      result[code] = glyphID;\n    }\n    return result;\n  }\n\n  extractWidths(dict, descriptor, properties) {\n    var xref = this.xref;\n    var glyphsWidths = [];\n    var defaultWidth = 0;\n    var glyphsVMetrics = [];\n    var defaultVMetrics;\n    var i, ii, j, jj, start, code, widths;\n    if (properties.composite) {\n      defaultWidth = dict.has(\"DW\") ? dict.get(\"DW\") : 1000;\n\n      widths = dict.get(\"W\");\n      if (widths) {\n        for (i = 0, ii = widths.length; i < ii; i++) {\n          start = xref.fetchIfRef(widths[i++]);\n          code = xref.fetchIfRef(widths[i]);\n          if (Array.isArray(code)) {\n            for (j = 0, jj = code.length; j < jj; j++) {\n              glyphsWidths[start++] = xref.fetchIfRef(code[j]);\n            }\n          } else {\n            var width = xref.fetchIfRef(widths[++i]);\n            for (j = start; j <= code; j++) {\n              glyphsWidths[j] = width;\n            }\n          }\n        }\n      }\n\n      if (properties.vertical) {\n        var vmetrics = dict.getArray(\"DW2\") || [880, -1000];\n        defaultVMetrics = [vmetrics[1], defaultWidth * 0.5, vmetrics[0]];\n        vmetrics = dict.get(\"W2\");\n        if (vmetrics) {\n          for (i = 0, ii = vmetrics.length; i < ii; i++) {\n            start = xref.fetchIfRef(vmetrics[i++]);\n            code = xref.fetchIfRef(vmetrics[i]);\n            if (Array.isArray(code)) {\n              for (j = 0, jj = code.length; j < jj; j++) {\n                glyphsVMetrics[start++] = [\n                  xref.fetchIfRef(code[j++]),\n                  xref.fetchIfRef(code[j++]),\n                  xref.fetchIfRef(code[j]),\n                ];\n              }\n            } else {\n              var vmetric = [\n                xref.fetchIfRef(vmetrics[++i]),\n                xref.fetchIfRef(vmetrics[++i]),\n                xref.fetchIfRef(vmetrics[++i]),\n              ];\n              for (j = start; j <= code; j++) {\n                glyphsVMetrics[j] = vmetric;\n              }\n            }\n          }\n        }\n      }\n    } else {\n      var firstChar = properties.firstChar;\n      widths = dict.get(\"Widths\");\n      if (widths) {\n        j = firstChar;\n        for (i = 0, ii = widths.length; i < ii; i++) {\n          glyphsWidths[j++] = xref.fetchIfRef(widths[i]);\n        }\n        defaultWidth = parseFloat(descriptor.get(\"MissingWidth\")) || 0;\n      } else {\n        // Trying get the BaseFont metrics (see comment above).\n        var baseFontName = dict.get(\"BaseFont\");\n        if (isName(baseFontName)) {\n          var metrics = this.getBaseFontMetrics(baseFontName.name);\n\n          glyphsWidths = this.buildCharCodeToWidth(metrics.widths, properties);\n          defaultWidth = metrics.defaultWidth;\n        }\n      }\n    }\n\n    // Heuristic: detection of monospace font by checking all non-zero widths\n    var isMonospace = true;\n    var firstWidth = defaultWidth;\n    for (var glyph in glyphsWidths) {\n      var glyphWidth = glyphsWidths[glyph];\n      if (!glyphWidth) {\n        continue;\n      }\n      if (!firstWidth) {\n        firstWidth = glyphWidth;\n        continue;\n      }\n      if (firstWidth !== glyphWidth) {\n        isMonospace = false;\n        break;\n      }\n    }\n    if (isMonospace) {\n      properties.flags |= FontFlags.FixedPitch;\n    }\n\n    properties.defaultWidth = defaultWidth;\n    properties.widths = glyphsWidths;\n    properties.defaultVMetrics = defaultVMetrics;\n    properties.vmetrics = glyphsVMetrics;\n  }\n\n  isSerifFont(baseFontName) {\n    // Simulating descriptor flags attribute\n    var fontNameWoStyle = baseFontName.split(\"-\")[0];\n    return (\n      fontNameWoStyle in getSerifFonts() ||\n      fontNameWoStyle.search(/serif/gi) !== -1\n    );\n  }\n\n  getBaseFontMetrics(name) {\n    var defaultWidth = 0;\n    var widths = [];\n    var monospace = false;\n    var stdFontMap = getStdFontMap();\n    var lookupName = stdFontMap[name] || name;\n    var Metrics = getMetrics();\n\n    if (!(lookupName in Metrics)) {\n      // Use default fonts for looking up font metrics if the passed\n      // font is not a base font\n      if (this.isSerifFont(name)) {\n        lookupName = \"Times-Roman\";\n      } else {\n        lookupName = \"Helvetica\";\n      }\n    }\n    var glyphWidths = Metrics[lookupName];\n\n    if (isNum(glyphWidths)) {\n      defaultWidth = glyphWidths;\n      monospace = true;\n    } else {\n      widths = glyphWidths(); // expand lazy widths array\n    }\n\n    return {\n      defaultWidth,\n      monospace,\n      widths,\n    };\n  }\n\n  buildCharCodeToWidth(widthsByGlyphName, properties) {\n    var widths = Object.create(null);\n    var differences = properties.differences;\n    var encoding = properties.defaultEncoding;\n    for (var charCode = 0; charCode < 256; charCode++) {\n      if (charCode in differences && widthsByGlyphName[differences[charCode]]) {\n        widths[charCode] = widthsByGlyphName[differences[charCode]];\n        continue;\n      }\n      if (charCode in encoding && widthsByGlyphName[encoding[charCode]]) {\n        widths[charCode] = widthsByGlyphName[encoding[charCode]];\n        continue;\n      }\n    }\n    return widths;\n  }\n\n  preEvaluateFont(dict) {\n    var baseDict = dict;\n    var type = dict.get(\"Subtype\");\n    if (!isName(type)) {\n      throw new FormatError(\"invalid font Subtype\");\n    }\n\n    var composite = false;\n    var uint8array;\n    if (type.name === \"Type0\") {\n      // If font is a composite\n      //  - get the descendant font\n      //  - set the type according to the descendant font\n      //  - get the FontDescriptor from the descendant font\n      var df = dict.get(\"DescendantFonts\");\n      if (!df) {\n        throw new FormatError(\"Descendant fonts are not specified\");\n      }\n      dict = Array.isArray(df) ? this.xref.fetchIfRef(df[0]) : df;\n\n      type = dict.get(\"Subtype\");\n      if (!isName(type)) {\n        throw new FormatError(\"invalid font Subtype\");\n      }\n      composite = true;\n    }\n\n    var descriptor = dict.get(\"FontDescriptor\");\n    if (descriptor) {\n      var hash = new MurmurHash3_64();\n      var encoding = baseDict.getRaw(\"Encoding\");\n      if (isName(encoding)) {\n        hash.update(encoding.name);\n      } else if (isRef(encoding)) {\n        hash.update(encoding.toString());\n      } else if (isDict(encoding)) {\n        for (const entry of encoding.getRawValues()) {\n          if (isName(entry)) {\n            hash.update(entry.name);\n          } else if (isRef(entry)) {\n            hash.update(entry.toString());\n          } else if (Array.isArray(entry)) {\n            // 'Differences' array (fixes bug1157493.pdf).\n            var diffLength = entry.length,\n              diffBuf = new Array(diffLength);\n\n            for (var j = 0; j < diffLength; j++) {\n              var diffEntry = entry[j];\n              if (isName(diffEntry)) {\n                diffBuf[j] = diffEntry.name;\n              } else if (isNum(diffEntry) || isRef(diffEntry)) {\n                diffBuf[j] = diffEntry.toString();\n              }\n            }\n            hash.update(diffBuf.join());\n          }\n        }\n      }\n\n      const firstChar = dict.get(\"FirstChar\") || 0;\n      const lastChar = dict.get(\"LastChar\") || (composite ? 0xffff : 0xff);\n      hash.update(`${firstChar}-${lastChar}`);\n\n      var toUnicode = dict.get(\"ToUnicode\") || baseDict.get(\"ToUnicode\");\n      if (isStream(toUnicode)) {\n        var stream = toUnicode.str || toUnicode;\n        uint8array = stream.buffer\n          ? new Uint8Array(stream.buffer.buffer, 0, stream.bufferLength)\n          : new Uint8Array(\n              stream.bytes.buffer,\n              stream.start,\n              stream.end - stream.start\n            );\n        hash.update(uint8array);\n      } else if (isName(toUnicode)) {\n        hash.update(toUnicode.name);\n      }\n\n      var widths = dict.get(\"Widths\") || baseDict.get(\"Widths\");\n      if (widths) {\n        uint8array = new Uint8Array(new Uint32Array(widths).buffer);\n        hash.update(uint8array);\n      }\n    }\n\n    return {\n      descriptor,\n      dict,\n      baseDict,\n      composite,\n      type: type.name,\n      hash: hash ? hash.hexdigest() : \"\",\n    };\n  }\n\n  translateFont(preEvaluatedFont) {\n    var baseDict = preEvaluatedFont.baseDict;\n    var dict = preEvaluatedFont.dict;\n    var composite = preEvaluatedFont.composite;\n    var descriptor = preEvaluatedFont.descriptor;\n    var type = preEvaluatedFont.type;\n    var maxCharIndex = composite ? 0xffff : 0xff;\n    var properties;\n    const firstChar = dict.get(\"FirstChar\") || 0;\n    const lastChar = dict.get(\"LastChar\") || maxCharIndex;\n\n    if (!descriptor) {\n      if (type === \"Type3\") {\n        // FontDescriptor is only required for Type3 fonts when the document\n        // is a tagged pdf. Create a barbebones one to get by.\n        descriptor = new Dict(null);\n        descriptor.set(\"FontName\", Name.get(type));\n        descriptor.set(\"FontBBox\", dict.getArray(\"FontBBox\") || [0, 0, 0, 0]);\n      } else {\n        // Before PDF 1.5 if the font was one of the base 14 fonts, having a\n        // FontDescriptor was not required.\n        // This case is here for compatibility.\n        var baseFontName = dict.get(\"BaseFont\");\n        if (!isName(baseFontName)) {\n          throw new FormatError(\"Base font is not specified\");\n        }\n\n        // Using base font name as a font name.\n        baseFontName = baseFontName.name.replace(/[,_]/g, \"-\");\n        var metrics = this.getBaseFontMetrics(baseFontName);\n\n        // Simulating descriptor flags attribute\n        var fontNameWoStyle = baseFontName.split(\"-\")[0];\n        var flags =\n          (this.isSerifFont(fontNameWoStyle) ? FontFlags.Serif : 0) |\n          (metrics.monospace ? FontFlags.FixedPitch : 0) |\n          (getSymbolsFonts()[fontNameWoStyle]\n            ? FontFlags.Symbolic\n            : FontFlags.Nonsymbolic);\n\n        properties = {\n          type,\n          name: baseFontName,\n          widths: metrics.widths,\n          defaultWidth: metrics.defaultWidth,\n          flags,\n          firstChar,\n          lastChar,\n        };\n        const widths = dict.get(\"Widths\");\n        return this.extractDataStructures(dict, dict, properties).then(\n          newProperties => {\n            if (widths) {\n              const glyphWidths = [];\n              let j = firstChar;\n              for (let i = 0, ii = widths.length; i < ii; i++) {\n                glyphWidths[j++] = this.xref.fetchIfRef(widths[i]);\n              }\n              newProperties.widths = glyphWidths;\n            } else {\n              newProperties.widths = this.buildCharCodeToWidth(\n                metrics.widths,\n                newProperties\n              );\n            }\n            return new Font(baseFontName, null, newProperties);\n          }\n        );\n      }\n    }\n\n    // According to the spec if 'FontDescriptor' is declared, 'FirstChar',\n    // 'LastChar' and 'Widths' should exist too, but some PDF encoders seem\n    // to ignore this rule when a variant of a standard font is used.\n    // TODO Fill the width array depending on which of the base font this is\n    // a variant.\n\n    var fontName = descriptor.get(\"FontName\");\n    var baseFont = dict.get(\"BaseFont\");\n    // Some bad PDFs have a string as the font name.\n    if (isString(fontName)) {\n      fontName = Name.get(fontName);\n    }\n    if (isString(baseFont)) {\n      baseFont = Name.get(baseFont);\n    }\n\n    if (type !== \"Type3\") {\n      var fontNameStr = fontName && fontName.name;\n      var baseFontStr = baseFont && baseFont.name;\n      if (fontNameStr !== baseFontStr) {\n        info(\n          `The FontDescriptor\\'s FontName is \"${fontNameStr}\" but ` +\n            `should be the same as the Font\\'s BaseFont \"${baseFontStr}\".`\n        );\n        // Workaround for cases where e.g. fontNameStr = 'Arial' and\n        // baseFontStr = 'Arial,Bold' (needed when no font file is embedded).\n        if (fontNameStr && baseFontStr && baseFontStr.startsWith(fontNameStr)) {\n          fontName = baseFont;\n        }\n      }\n    }\n    fontName = fontName || baseFont;\n\n    if (!isName(fontName)) {\n      throw new FormatError(\"invalid font name\");\n    }\n\n    var fontFile = descriptor.get(\"FontFile\", \"FontFile2\", \"FontFile3\");\n    if (fontFile) {\n      if (fontFile.dict) {\n        var subtype = fontFile.dict.get(\"Subtype\");\n        if (subtype) {\n          subtype = subtype.name;\n        }\n        var length1 = fontFile.dict.get(\"Length1\");\n        var length2 = fontFile.dict.get(\"Length2\");\n        var length3 = fontFile.dict.get(\"Length3\");\n      }\n    }\n\n    properties = {\n      type,\n      name: fontName.name,\n      subtype,\n      file: fontFile,\n      length1,\n      length2,\n      length3,\n      loadedName: baseDict.loadedName,\n      composite,\n      fixedPitch: false,\n      fontMatrix: dict.getArray(\"FontMatrix\") || FONT_IDENTITY_MATRIX,\n      firstChar: firstChar || 0,\n      lastChar: lastChar || maxCharIndex,\n      bbox: descriptor.getArray(\"FontBBox\"),\n      ascent: descriptor.get(\"Ascent\"),\n      descent: descriptor.get(\"Descent\"),\n      xHeight: descriptor.get(\"XHeight\"),\n      capHeight: descriptor.get(\"CapHeight\"),\n      flags: descriptor.get(\"Flags\"),\n      italicAngle: descriptor.get(\"ItalicAngle\"),\n      isType3Font: false,\n    };\n\n    var cMapPromise;\n    if (composite) {\n      var cidEncoding = baseDict.get(\"Encoding\");\n      if (isName(cidEncoding)) {\n        properties.cidEncoding = cidEncoding.name;\n      }\n      cMapPromise = CMapFactory.create({\n        encoding: cidEncoding,\n        fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n        useCMap: null,\n      }).then(function (cMap) {\n        properties.cMap = cMap;\n        properties.vertical = properties.cMap.vertical;\n      });\n    } else {\n      cMapPromise = Promise.resolve(undefined);\n    }\n\n    return cMapPromise\n      .then(() => {\n        return this.extractDataStructures(dict, baseDict, properties);\n      })\n      .then(newProperties => {\n        this.extractWidths(dict, descriptor, newProperties);\n\n        if (type === \"Type3\") {\n          newProperties.isType3Font = true;\n        }\n        return new Font(fontName.name, fontFile, newProperties);\n      });\n  }\n\n  static buildFontPaths(font, glyphs, handler) {\n    function buildPath(fontChar) {\n      if (font.renderer.hasBuiltPath(fontChar)) {\n        return;\n      }\n      handler.send(\"commonobj\", [\n        `${font.loadedName}_path_${fontChar}`,\n        \"FontPath\",\n        font.renderer.getPathJs(fontChar),\n      ]);\n    }\n\n    for (const glyph of glyphs) {\n      buildPath(glyph.fontChar);\n\n      // If the glyph has an accent we need to build a path for its\n      // fontChar too, otherwise CanvasGraphics_paintChar will fail.\n      const accent = glyph.accent;\n      if (accent && accent.fontChar) {\n        buildPath(accent.fontChar);\n      }\n    }\n  }\n\n  static get fallbackFontDict() {\n    const dict = new Dict();\n    dict.set(\"BaseFont\", Name.get(\"PDFJS-FallbackFont\"));\n    dict.set(\"Type\", Name.get(\"FallbackType\"));\n    dict.set(\"Subtype\", Name.get(\"FallbackType\"));\n    dict.set(\"Encoding\", Name.get(\"WinAnsiEncoding\"));\n\n    return shadow(this, \"fallbackFontDict\", dict);\n  }\n}\n\nclass TranslatedFont {\n  constructor({ loadedName, font, dict, extraProperties = false }) {\n    this.loadedName = loadedName;\n    this.font = font;\n    this.dict = dict;\n    this._extraProperties = extraProperties;\n    this.type3Loaded = null;\n    this.type3Dependencies = font.isType3Font ? new Set() : null;\n    this.sent = false;\n  }\n\n  send(handler) {\n    if (this.sent) {\n      return;\n    }\n    this.sent = true;\n\n    handler.send(\"commonobj\", [\n      this.loadedName,\n      \"Font\",\n      this.font.exportData(this._extraProperties),\n    ]);\n  }\n\n  fallback(handler) {\n    if (!this.font.data) {\n      return;\n    }\n    // When font loading failed, fall back to the built-in font renderer.\n    this.font.disableFontFace = true;\n    // An arbitrary number of text rendering operators could have been\n    // encountered between the point in time when the 'Font' message was sent\n    // to the main-thread, and the point in time when the 'FontFallback'\n    // message was received on the worker-thread.\n    // To ensure that all 'FontPath's are available on the main-thread, when\n    // font loading failed, attempt to resend *all* previously parsed glyphs.\n    const glyphs = this.font.glyphCacheValues;\n    PartialEvaluator.buildFontPaths(this.font, glyphs, handler);\n  }\n\n  loadType3Data(evaluator, resources, task) {\n    if (this.type3Loaded) {\n      return this.type3Loaded;\n    }\n    if (!this.font.isType3Font) {\n      throw new Error(\"Must be a Type3 font.\");\n    }\n    // When parsing Type3 glyphs, always ignore them if there are errors.\n    // Compared to the parsing of e.g. an entire page, it doesn't really\n    // make sense to only be able to render a Type3 glyph partially.\n    var type3Options = Object.create(evaluator.options);\n    type3Options.ignoreErrors = false;\n    var type3Evaluator = evaluator.clone(type3Options);\n    type3Evaluator.parsingType3Font = true;\n\n    const translatedFont = this.font,\n      type3Dependencies = this.type3Dependencies;\n    var loadCharProcsPromise = Promise.resolve();\n    var charProcs = this.dict.get(\"CharProcs\");\n    var fontResources = this.dict.get(\"Resources\") || resources;\n    var charProcOperatorList = Object.create(null);\n\n    for (const key of charProcs.getKeys()) {\n      loadCharProcsPromise = loadCharProcsPromise.then(function () {\n        var glyphStream = charProcs.get(key);\n        var operatorList = new OperatorList();\n        return type3Evaluator\n          .getOperatorList({\n            stream: glyphStream,\n            task,\n            resources: fontResources,\n            operatorList,\n          })\n          .then(function () {\n            charProcOperatorList[key] = operatorList.getIR();\n\n            for (const dependency of operatorList.dependencies) {\n              type3Dependencies.add(dependency);\n            }\n          })\n          .catch(function (reason) {\n            warn(`Type3 font resource \"${key}\" is not available.`);\n            const dummyOperatorList = new OperatorList();\n            charProcOperatorList[key] = dummyOperatorList.getIR();\n          });\n      });\n    }\n    this.type3Loaded = loadCharProcsPromise.then(function () {\n      translatedFont.charProcOperatorList = charProcOperatorList;\n    });\n    return this.type3Loaded;\n  }\n}\n\nclass StateManager {\n  constructor(initialState) {\n    this.state = initialState;\n    this.stateStack = [];\n  }\n\n  save() {\n    var old = this.state;\n    this.stateStack.push(this.state);\n    this.state = old.clone();\n  }\n\n  restore() {\n    var prev = this.stateStack.pop();\n    if (prev) {\n      this.state = prev;\n    }\n  }\n\n  transform(args) {\n    this.state.ctm = Util.transform(this.state.ctm, args);\n  }\n}\n\nclass TextState {\n  constructor() {\n    this.ctm = new Float32Array(IDENTITY_MATRIX);\n    this.fontName = null;\n    this.fontSize = 0;\n    this.font = null;\n    this.fontMatrix = FONT_IDENTITY_MATRIX;\n    this.textMatrix = IDENTITY_MATRIX.slice();\n    this.textLineMatrix = IDENTITY_MATRIX.slice();\n    this.charSpacing = 0;\n    this.wordSpacing = 0;\n    this.leading = 0;\n    this.textHScale = 1;\n    this.textRise = 0;\n  }\n\n  setTextMatrix(a, b, c, d, e, f) {\n    var m = this.textMatrix;\n    m[0] = a;\n    m[1] = b;\n    m[2] = c;\n    m[3] = d;\n    m[4] = e;\n    m[5] = f;\n  }\n\n  setTextLineMatrix(a, b, c, d, e, f) {\n    var m = this.textLineMatrix;\n    m[0] = a;\n    m[1] = b;\n    m[2] = c;\n    m[3] = d;\n    m[4] = e;\n    m[5] = f;\n  }\n\n  translateTextMatrix(x, y) {\n    var m = this.textMatrix;\n    m[4] = m[0] * x + m[2] * y + m[4];\n    m[5] = m[1] * x + m[3] * y + m[5];\n  }\n\n  translateTextLineMatrix(x, y) {\n    var m = this.textLineMatrix;\n    m[4] = m[0] * x + m[2] * y + m[4];\n    m[5] = m[1] * x + m[3] * y + m[5];\n  }\n\n  calcTextLineMatrixAdvance(a, b, c, d, e, f) {\n    var font = this.font;\n    if (!font) {\n      return null;\n    }\n    var m = this.textLineMatrix;\n    if (!(a === m[0] && b === m[1] && c === m[2] && d === m[3])) {\n      return null;\n    }\n    var txDiff = e - m[4],\n      tyDiff = f - m[5];\n    if ((font.vertical && txDiff !== 0) || (!font.vertical && tyDiff !== 0)) {\n      return null;\n    }\n    var tx,\n      ty,\n      denominator = a * d - b * c;\n    if (font.vertical) {\n      tx = (-tyDiff * c) / denominator;\n      ty = (tyDiff * a) / denominator;\n    } else {\n      tx = (txDiff * d) / denominator;\n      ty = (-txDiff * b) / denominator;\n    }\n    return { width: tx, height: ty, value: font.vertical ? ty : tx };\n  }\n\n  calcRenderMatrix(ctm) {\n    // 9.4.4 Text Space Details\n    var tsm = [\n      this.fontSize * this.textHScale,\n      0,\n      0,\n      this.fontSize,\n      0,\n      this.textRise,\n    ];\n    return Util.transform(ctm, Util.transform(this.textMatrix, tsm));\n  }\n\n  carriageReturn() {\n    this.translateTextLineMatrix(0, -this.leading);\n    this.textMatrix = this.textLineMatrix.slice();\n  }\n\n  clone() {\n    var clone = Object.create(this);\n    clone.textMatrix = this.textMatrix.slice();\n    clone.textLineMatrix = this.textLineMatrix.slice();\n    clone.fontMatrix = this.fontMatrix.slice();\n    return clone;\n  }\n}\n\nclass EvalState {\n  constructor() {\n    this.ctm = new Float32Array(IDENTITY_MATRIX);\n    this.font = null;\n    this.textRenderingMode = TextRenderingMode.FILL;\n    this.fillColorSpace = ColorSpace.singletons.gray;\n    this.strokeColorSpace = ColorSpace.singletons.gray;\n  }\n\n  clone() {\n    return Object.create(this);\n  }\n}\n\nclass EvaluatorPreprocessor {\n  static get opMap() {\n    // Specifies properties for each command\n    //\n    // If variableArgs === true: [0, `numArgs`] expected\n    // If variableArgs === false: exactly `numArgs` expected\n    const getOPMap = getLookupTableFactory(function (t) {\n      // Graphic state\n      t.w = { id: OPS.setLineWidth, numArgs: 1, variableArgs: false };\n      t.J = { id: OPS.setLineCap, numArgs: 1, variableArgs: false };\n      t.j = { id: OPS.setLineJoin, numArgs: 1, variableArgs: false };\n      t.M = { id: OPS.setMiterLimit, numArgs: 1, variableArgs: false };\n      t.d = { id: OPS.setDash, numArgs: 2, variableArgs: false };\n      t.ri = { id: OPS.setRenderingIntent, numArgs: 1, variableArgs: false };\n      t.i = { id: OPS.setFlatness, numArgs: 1, variableArgs: false };\n      t.gs = { id: OPS.setGState, numArgs: 1, variableArgs: false };\n      t.q = { id: OPS.save, numArgs: 0, variableArgs: false };\n      t.Q = { id: OPS.restore, numArgs: 0, variableArgs: false };\n      t.cm = { id: OPS.transform, numArgs: 6, variableArgs: false };\n\n      // Path\n      t.m = { id: OPS.moveTo, numArgs: 2, variableArgs: false };\n      t.l = { id: OPS.lineTo, numArgs: 2, variableArgs: false };\n      t.c = { id: OPS.curveTo, numArgs: 6, variableArgs: false };\n      t.v = { id: OPS.curveTo2, numArgs: 4, variableArgs: false };\n      t.y = { id: OPS.curveTo3, numArgs: 4, variableArgs: false };\n      t.h = { id: OPS.closePath, numArgs: 0, variableArgs: false };\n      t.re = { id: OPS.rectangle, numArgs: 4, variableArgs: false };\n      t.S = { id: OPS.stroke, numArgs: 0, variableArgs: false };\n      t.s = { id: OPS.closeStroke, numArgs: 0, variableArgs: false };\n      t.f = { id: OPS.fill, numArgs: 0, variableArgs: false };\n      t.F = { id: OPS.fill, numArgs: 0, variableArgs: false };\n      t[\"f*\"] = { id: OPS.eoFill, numArgs: 0, variableArgs: false };\n      t.B = { id: OPS.fillStroke, numArgs: 0, variableArgs: false };\n      t[\"B*\"] = { id: OPS.eoFillStroke, numArgs: 0, variableArgs: false };\n      t.b = { id: OPS.closeFillStroke, numArgs: 0, variableArgs: false };\n      t[\"b*\"] = { id: OPS.closeEOFillStroke, numArgs: 0, variableArgs: false };\n      t.n = { id: OPS.endPath, numArgs: 0, variableArgs: false };\n\n      // Clipping\n      t.W = { id: OPS.clip, numArgs: 0, variableArgs: false };\n      t[\"W*\"] = { id: OPS.eoClip, numArgs: 0, variableArgs: false };\n\n      // Text\n      t.BT = { id: OPS.beginText, numArgs: 0, variableArgs: false };\n      t.ET = { id: OPS.endText, numArgs: 0, variableArgs: false };\n      t.Tc = { id: OPS.setCharSpacing, numArgs: 1, variableArgs: false };\n      t.Tw = { id: OPS.setWordSpacing, numArgs: 1, variableArgs: false };\n      t.Tz = { id: OPS.setHScale, numArgs: 1, variableArgs: false };\n      t.TL = { id: OPS.setLeading, numArgs: 1, variableArgs: false };\n      t.Tf = { id: OPS.setFont, numArgs: 2, variableArgs: false };\n      t.Tr = { id: OPS.setTextRenderingMode, numArgs: 1, variableArgs: false };\n      t.Ts = { id: OPS.setTextRise, numArgs: 1, variableArgs: false };\n      t.Td = { id: OPS.moveText, numArgs: 2, variableArgs: false };\n      t.TD = { id: OPS.setLeadingMoveText, numArgs: 2, variableArgs: false };\n      t.Tm = { id: OPS.setTextMatrix, numArgs: 6, variableArgs: false };\n      t[\"T*\"] = { id: OPS.nextLine, numArgs: 0, variableArgs: false };\n      t.Tj = { id: OPS.showText, numArgs: 1, variableArgs: false };\n      t.TJ = { id: OPS.showSpacedText, numArgs: 1, variableArgs: false };\n      t[\"'\"] = { id: OPS.nextLineShowText, numArgs: 1, variableArgs: false };\n      t['\"'] = {\n        id: OPS.nextLineSetSpacingShowText,\n        numArgs: 3,\n        variableArgs: false,\n      };\n\n      // Type3 fonts\n      t.d0 = { id: OPS.setCharWidth, numArgs: 2, variableArgs: false };\n      t.d1 = {\n        id: OPS.setCharWidthAndBounds,\n        numArgs: 6,\n        variableArgs: false,\n      };\n\n      // Color\n      t.CS = { id: OPS.setStrokeColorSpace, numArgs: 1, variableArgs: false };\n      t.cs = { id: OPS.setFillColorSpace, numArgs: 1, variableArgs: false };\n      t.SC = { id: OPS.setStrokeColor, numArgs: 4, variableArgs: true };\n      t.SCN = { id: OPS.setStrokeColorN, numArgs: 33, variableArgs: true };\n      t.sc = { id: OPS.setFillColor, numArgs: 4, variableArgs: true };\n      t.scn = { id: OPS.setFillColorN, numArgs: 33, variableArgs: true };\n      t.G = { id: OPS.setStrokeGray, numArgs: 1, variableArgs: false };\n      t.g = { id: OPS.setFillGray, numArgs: 1, variableArgs: false };\n      t.RG = { id: OPS.setStrokeRGBColor, numArgs: 3, variableArgs: false };\n      t.rg = { id: OPS.setFillRGBColor, numArgs: 3, variableArgs: false };\n      t.K = { id: OPS.setStrokeCMYKColor, numArgs: 4, variableArgs: false };\n      t.k = { id: OPS.setFillCMYKColor, numArgs: 4, variableArgs: false };\n\n      // Shading\n      t.sh = { id: OPS.shadingFill, numArgs: 1, variableArgs: false };\n\n      // Images\n      t.BI = { id: OPS.beginInlineImage, numArgs: 0, variableArgs: false };\n      t.ID = { id: OPS.beginImageData, numArgs: 0, variableArgs: false };\n      t.EI = { id: OPS.endInlineImage, numArgs: 1, variableArgs: false };\n\n      // XObjects\n      t.Do = { id: OPS.paintXObject, numArgs: 1, variableArgs: false };\n      t.MP = { id: OPS.markPoint, numArgs: 1, variableArgs: false };\n      t.DP = { id: OPS.markPointProps, numArgs: 2, variableArgs: false };\n      t.BMC = { id: OPS.beginMarkedContent, numArgs: 1, variableArgs: false };\n      t.BDC = {\n        id: OPS.beginMarkedContentProps,\n        numArgs: 2,\n        variableArgs: false,\n      };\n      t.EMC = { id: OPS.endMarkedContent, numArgs: 0, variableArgs: false };\n\n      // Compatibility\n      t.BX = { id: OPS.beginCompat, numArgs: 0, variableArgs: false };\n      t.EX = { id: OPS.endCompat, numArgs: 0, variableArgs: false };\n\n      // (reserved partial commands for the lexer)\n      t.BM = null;\n      t.BD = null;\n      t.true = null;\n      t.fa = null;\n      t.fal = null;\n      t.fals = null;\n      t.false = null;\n      t.nu = null;\n      t.nul = null;\n      t.null = null;\n    });\n\n    return shadow(this, \"opMap\", getOPMap());\n  }\n\n  static get MAX_INVALID_PATH_OPS() {\n    return shadow(this, \"MAX_INVALID_PATH_OPS\", 20);\n  }\n\n  constructor(stream, xref, stateManager) {\n    // TODO(mduan): pass array of knownCommands rather than this.opMap\n    // dictionary\n    this.parser = new Parser({\n      lexer: new Lexer(stream, EvaluatorPreprocessor.opMap),\n      xref,\n    });\n    this.stateManager = stateManager;\n    this.nonProcessedArgs = [];\n    this._numInvalidPathOPS = 0;\n  }\n\n  get savedStatesDepth() {\n    return this.stateManager.stateStack.length;\n  }\n\n  // |operation| is an object with two fields:\n  //\n  // - |fn| is an out param.\n  //\n  // - |args| is an inout param. On entry, it should have one of two values.\n  //\n  //   - An empty array. This indicates that the caller is providing the\n  //     array in which the args will be stored in. The caller should use\n  //     this value if it can reuse a single array for each call to read().\n  //\n  //   - |null|. This indicates that the caller needs this function to create\n  //     the array in which any args are stored in. If there are zero args,\n  //     this function will leave |operation.args| as |null| (thus avoiding\n  //     allocations that would occur if we used an empty array to represent\n  //     zero arguments). Otherwise, it will replace |null| with a new array\n  //     containing the arguments. The caller should use this value if it\n  //     cannot reuse an array for each call to read().\n  //\n  // These two modes are present because this function is very hot and so\n  // avoiding allocations where possible is worthwhile.\n  //\n  read(operation) {\n    var args = operation.args;\n    while (true) {\n      var obj = this.parser.getObj();\n      if (obj instanceof Cmd) {\n        var cmd = obj.cmd;\n        // Check that the command is valid\n        var opSpec = EvaluatorPreprocessor.opMap[cmd];\n        if (!opSpec) {\n          warn(`Unknown command \"${cmd}\".`);\n          continue;\n        }\n\n        var fn = opSpec.id;\n        var numArgs = opSpec.numArgs;\n        var argsLength = args !== null ? args.length : 0;\n\n        if (!opSpec.variableArgs) {\n          // Postscript commands can be nested, e.g. /F2 /GS2 gs 5.711 Tf\n          if (argsLength !== numArgs) {\n            var nonProcessedArgs = this.nonProcessedArgs;\n            while (argsLength > numArgs) {\n              nonProcessedArgs.push(args.shift());\n              argsLength--;\n            }\n            while (argsLength < numArgs && nonProcessedArgs.length !== 0) {\n              if (args === null) {\n                args = [];\n              }\n              args.unshift(nonProcessedArgs.pop());\n              argsLength++;\n            }\n          }\n\n          if (argsLength < numArgs) {\n            const partialMsg =\n              `command ${cmd}: expected ${numArgs} args, ` +\n              `but received ${argsLength} args.`;\n\n            // Incomplete path operators, in particular, can result in fairly\n            // chaotic rendering artifacts. Hence the following heuristics is\n            // used to error, rather than just warn, once a number of invalid\n            // path operators have been encountered (fixes bug1443140.pdf).\n            if (\n              fn >= OPS.moveTo &&\n              fn <= OPS.endPath && // Path operator\n              ++this._numInvalidPathOPS >\n                EvaluatorPreprocessor.MAX_INVALID_PATH_OPS\n            ) {\n              throw new FormatError(`Invalid ${partialMsg}`);\n            }\n            // If we receive too few arguments, it's not possible to execute\n            // the command, hence we skip the command.\n            warn(`Skipping ${partialMsg}`);\n            if (args !== null) {\n              args.length = 0;\n            }\n            continue;\n          }\n        } else if (argsLength > numArgs) {\n          info(\n            `Command ${cmd}: expected [0, ${numArgs}] args, ` +\n              `but received ${argsLength} args.`\n          );\n        }\n\n        // TODO figure out how to type-check vararg functions\n        this.preprocessCommand(fn, args);\n\n        operation.fn = fn;\n        operation.args = args;\n        return true;\n      }\n      if (obj === EOF) {\n        return false; // no more commands\n      }\n      // argument\n      if (obj !== null) {\n        if (args === null) {\n          args = [];\n        }\n        args.push(obj);\n        if (args.length > 33) {\n          throw new FormatError(\"Too many arguments\");\n        }\n      }\n    }\n  }\n\n  preprocessCommand(fn, args) {\n    switch (fn | 0) {\n      case OPS.save:\n        this.stateManager.save();\n        break;\n      case OPS.restore:\n        this.stateManager.restore();\n        break;\n      case OPS.transform:\n        this.stateManager.transform(args);\n        break;\n    }\n  }\n}\n\nexport { PartialEvaluator };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  CMapCompressionType,\n  FormatError,\n  isString,\n  unreachable,\n  warn,\n} from \"../shared/util.js\";\nimport { isCmd, isEOF, isName, isStream } from \"./primitives.js\";\nimport { Lexer } from \"./parser.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\n\nvar BUILT_IN_CMAPS = [\n  // << Start unicode maps.\n  \"Adobe-GB1-UCS2\",\n  \"Adobe-CNS1-UCS2\",\n  \"Adobe-Japan1-UCS2\",\n  \"Adobe-Korea1-UCS2\",\n  // >> End unicode maps.\n  \"78-EUC-H\",\n  \"78-EUC-V\",\n  \"78-H\",\n  \"78-RKSJ-H\",\n  \"78-RKSJ-V\",\n  \"78-V\",\n  \"78ms-RKSJ-H\",\n  \"78ms-RKSJ-V\",\n  \"83pv-RKSJ-H\",\n  \"90ms-RKSJ-H\",\n  \"90ms-RKSJ-V\",\n  \"90msp-RKSJ-H\",\n  \"90msp-RKSJ-V\",\n  \"90pv-RKSJ-H\",\n  \"90pv-RKSJ-V\",\n  \"Add-H\",\n  \"Add-RKSJ-H\",\n  \"Add-RKSJ-V\",\n  \"Add-V\",\n  \"Adobe-CNS1-0\",\n  \"Adobe-CNS1-1\",\n  \"Adobe-CNS1-2\",\n  \"Adobe-CNS1-3\",\n  \"Adobe-CNS1-4\",\n  \"Adobe-CNS1-5\",\n  \"Adobe-CNS1-6\",\n  \"Adobe-GB1-0\",\n  \"Adobe-GB1-1\",\n  \"Adobe-GB1-2\",\n  \"Adobe-GB1-3\",\n  \"Adobe-GB1-4\",\n  \"Adobe-GB1-5\",\n  \"Adobe-Japan1-0\",\n  \"Adobe-Japan1-1\",\n  \"Adobe-Japan1-2\",\n  \"Adobe-Japan1-3\",\n  \"Adobe-Japan1-4\",\n  \"Adobe-Japan1-5\",\n  \"Adobe-Japan1-6\",\n  \"Adobe-Korea1-0\",\n  \"Adobe-Korea1-1\",\n  \"Adobe-Korea1-2\",\n  \"B5-H\",\n  \"B5-V\",\n  \"B5pc-H\",\n  \"B5pc-V\",\n  \"CNS-EUC-H\",\n  \"CNS-EUC-V\",\n  \"CNS1-H\",\n  \"CNS1-V\",\n  \"CNS2-H\",\n  \"CNS2-V\",\n  \"ETHK-B5-H\",\n  \"ETHK-B5-V\",\n  \"ETen-B5-H\",\n  \"ETen-B5-V\",\n  \"ETenms-B5-H\",\n  \"ETenms-B5-V\",\n  \"EUC-H\",\n  \"EUC-V\",\n  \"Ext-H\",\n  \"Ext-RKSJ-H\",\n  \"Ext-RKSJ-V\",\n  \"Ext-V\",\n  \"GB-EUC-H\",\n  \"GB-EUC-V\",\n  \"GB-H\",\n  \"GB-V\",\n  \"GBK-EUC-H\",\n  \"GBK-EUC-V\",\n  \"GBK2K-H\",\n  \"GBK2K-V\",\n  \"GBKp-EUC-H\",\n  \"GBKp-EUC-V\",\n  \"GBT-EUC-H\",\n  \"GBT-EUC-V\",\n  \"GBT-H\",\n  \"GBT-V\",\n  \"GBTpc-EUC-H\",\n  \"GBTpc-EUC-V\",\n  \"GBpc-EUC-H\",\n  \"GBpc-EUC-V\",\n  \"H\",\n  \"HKdla-B5-H\",\n  \"HKdla-B5-V\",\n  \"HKdlb-B5-H\",\n  \"HKdlb-B5-V\",\n  \"HKgccs-B5-H\",\n  \"HKgccs-B5-V\",\n  \"HKm314-B5-H\",\n  \"HKm314-B5-V\",\n  \"HKm471-B5-H\",\n  \"HKm471-B5-V\",\n  \"HKscs-B5-H\",\n  \"HKscs-B5-V\",\n  \"Hankaku\",\n  \"Hiragana\",\n  \"KSC-EUC-H\",\n  \"KSC-EUC-V\",\n  \"KSC-H\",\n  \"KSC-Johab-H\",\n  \"KSC-Johab-V\",\n  \"KSC-V\",\n  \"KSCms-UHC-H\",\n  \"KSCms-UHC-HW-H\",\n  \"KSCms-UHC-HW-V\",\n  \"KSCms-UHC-V\",\n  \"KSCpc-EUC-H\",\n  \"KSCpc-EUC-V\",\n  \"Katakana\",\n  \"NWP-H\",\n  \"NWP-V\",\n  \"RKSJ-H\",\n  \"RKSJ-V\",\n  \"Roman\",\n  \"UniCNS-UCS2-H\",\n  \"UniCNS-UCS2-V\",\n  \"UniCNS-UTF16-H\",\n  \"UniCNS-UTF16-V\",\n  \"UniCNS-UTF32-H\",\n  \"UniCNS-UTF32-V\",\n  \"UniCNS-UTF8-H\",\n  \"UniCNS-UTF8-V\",\n  \"UniGB-UCS2-H\",\n  \"UniGB-UCS2-V\",\n  \"UniGB-UTF16-H\",\n  \"UniGB-UTF16-V\",\n  \"UniGB-UTF32-H\",\n  \"UniGB-UTF32-V\",\n  \"UniGB-UTF8-H\",\n  \"UniGB-UTF8-V\",\n  \"UniJIS-UCS2-H\",\n  \"UniJIS-UCS2-HW-H\",\n  \"UniJIS-UCS2-HW-V\",\n  \"UniJIS-UCS2-V\",\n  \"UniJIS-UTF16-H\",\n  \"UniJIS-UTF16-V\",\n  \"UniJIS-UTF32-H\",\n  \"UniJIS-UTF32-V\",\n  \"UniJIS-UTF8-H\",\n  \"UniJIS-UTF8-V\",\n  \"UniJIS2004-UTF16-H\",\n  \"UniJIS2004-UTF16-V\",\n  \"UniJIS2004-UTF32-H\",\n  \"UniJIS2004-UTF32-V\",\n  \"UniJIS2004-UTF8-H\",\n  \"UniJIS2004-UTF8-V\",\n  \"UniJISPro-UCS2-HW-V\",\n  \"UniJISPro-UCS2-V\",\n  \"UniJISPro-UTF8-V\",\n  \"UniJISX0213-UTF32-H\",\n  \"UniJISX0213-UTF32-V\",\n  \"UniJISX02132004-UTF32-H\",\n  \"UniJISX02132004-UTF32-V\",\n  \"UniKS-UCS2-H\",\n  \"UniKS-UCS2-V\",\n  \"UniKS-UTF16-H\",\n  \"UniKS-UTF16-V\",\n  \"UniKS-UTF32-H\",\n  \"UniKS-UTF32-V\",\n  \"UniKS-UTF8-H\",\n  \"UniKS-UTF8-V\",\n  \"V\",\n  \"WP-Symbol\",\n];\n\n// Heuristic to avoid hanging the worker-thread for CMap data with ridiculously\n// large ranges, such as e.g. 0xFFFFFFFF (fixes issue11922_reduced.pdf).\nconst MAX_MAP_RANGE = 2 ** 24 - 1; // = 0xFFFFFF\n\n// CMap, not to be confused with TrueType's cmap.\nclass CMap {\n  constructor(builtInCMap = false) {\n    // Codespace ranges are stored as follows:\n    // [[1BytePairs], [2BytePairs], [3BytePairs], [4BytePairs]]\n    // where nBytePairs are ranges e.g. [low1, high1, low2, high2, ...]\n    this.codespaceRanges = [[], [], [], []];\n    this.numCodespaceRanges = 0;\n    // Map entries have one of two forms.\n    // - cid chars are 16-bit unsigned integers, stored as integers.\n    // - bf chars are variable-length byte sequences, stored as strings, with\n    //   one byte per character.\n    this._map = [];\n    this.name = \"\";\n    this.vertical = false;\n    this.useCMap = null;\n    this.builtInCMap = builtInCMap;\n  }\n\n  addCodespaceRange(n, low, high) {\n    this.codespaceRanges[n - 1].push(low, high);\n    this.numCodespaceRanges++;\n  }\n\n  mapCidRange(low, high, dstLow) {\n    if (high - low > MAX_MAP_RANGE) {\n      throw new Error(\"mapCidRange - ignoring data above MAX_MAP_RANGE.\");\n    }\n    while (low <= high) {\n      this._map[low++] = dstLow++;\n    }\n  }\n\n  mapBfRange(low, high, dstLow) {\n    if (high - low > MAX_MAP_RANGE) {\n      throw new Error(\"mapBfRange - ignoring data above MAX_MAP_RANGE.\");\n    }\n    var lastByte = dstLow.length - 1;\n    while (low <= high) {\n      this._map[low++] = dstLow;\n      // Only the last byte has to be incremented.\n      dstLow =\n        dstLow.substring(0, lastByte) +\n        String.fromCharCode(dstLow.charCodeAt(lastByte) + 1);\n    }\n  }\n\n  mapBfRangeToArray(low, high, array) {\n    if (high - low > MAX_MAP_RANGE) {\n      throw new Error(\"mapBfRangeToArray - ignoring data above MAX_MAP_RANGE.\");\n    }\n    const ii = array.length;\n    let i = 0;\n    while (low <= high && i < ii) {\n      this._map[low] = array[i++];\n      ++low;\n    }\n  }\n\n  // This is used for both bf and cid chars.\n  mapOne(src, dst) {\n    this._map[src] = dst;\n  }\n\n  lookup(code) {\n    return this._map[code];\n  }\n\n  contains(code) {\n    return this._map[code] !== undefined;\n  }\n\n  forEach(callback) {\n    // Most maps have fewer than 65536 entries, and for those we use normal\n    // array iteration. But really sparse tables are possible -- e.g. with\n    // indices in the *billions*. For such tables we use for..in, which isn't\n    // ideal because it stringifies the indices for all present elements, but\n    // it does avoid iterating over every undefined entry.\n    const map = this._map;\n    const length = map.length;\n    if (length <= 0x10000) {\n      for (let i = 0; i < length; i++) {\n        if (map[i] !== undefined) {\n          callback(i, map[i]);\n        }\n      }\n    } else {\n      for (const i in map) {\n        callback(i, map[i]);\n      }\n    }\n  }\n\n  charCodeOf(value) {\n    // `Array.prototype.indexOf` is *extremely* inefficient for arrays which\n    // are both very sparse and very large (see issue8372.pdf).\n    const map = this._map;\n    if (map.length <= 0x10000) {\n      return map.indexOf(value);\n    }\n    for (const charCode in map) {\n      if (map[charCode] === value) {\n        return charCode | 0;\n      }\n    }\n    return -1;\n  }\n\n  getMap() {\n    return this._map;\n  }\n\n  readCharCode(str, offset, out) {\n    let c = 0;\n    const codespaceRanges = this.codespaceRanges;\n    // 9.7.6.2 CMap Mapping\n    // The code length is at most 4.\n    for (let n = 0, nn = codespaceRanges.length; n < nn; n++) {\n      c = ((c << 8) | str.charCodeAt(offset + n)) >>> 0;\n      // Check each codespace range to see if it falls within.\n      const codespaceRange = codespaceRanges[n];\n      for (let k = 0, kk = codespaceRange.length; k < kk; ) {\n        const low = codespaceRange[k++];\n        const high = codespaceRange[k++];\n        if (c >= low && c <= high) {\n          out.charcode = c;\n          out.length = n + 1;\n          return;\n        }\n      }\n    }\n    out.charcode = 0;\n    out.length = 1;\n  }\n\n  get length() {\n    return this._map.length;\n  }\n\n  get isIdentityCMap() {\n    if (!(this.name === \"Identity-H\" || this.name === \"Identity-V\")) {\n      return false;\n    }\n    if (this._map.length !== 0x10000) {\n      return false;\n    }\n    for (let i = 0; i < 0x10000; i++) {\n      if (this._map[i] !== i) {\n        return false;\n      }\n    }\n    return true;\n  }\n}\n\n// A special case of CMap, where the _map array implicitly has a length of\n// 65536 and each element is equal to its index.\nclass IdentityCMap extends CMap {\n  constructor(vertical, n) {\n    super();\n\n    this.vertical = vertical;\n    this.addCodespaceRange(n, 0, 0xffff);\n  }\n\n  mapCidRange(low, high, dstLow) {\n    unreachable(\"should not call mapCidRange\");\n  }\n\n  mapBfRange(low, high, dstLow) {\n    unreachable(\"should not call mapBfRange\");\n  }\n\n  mapBfRangeToArray(low, high, array) {\n    unreachable(\"should not call mapBfRangeToArray\");\n  }\n\n  mapOne(src, dst) {\n    unreachable(\"should not call mapCidOne\");\n  }\n\n  lookup(code) {\n    return Number.isInteger(code) && code <= 0xffff ? code : undefined;\n  }\n\n  contains(code) {\n    return Number.isInteger(code) && code <= 0xffff;\n  }\n\n  forEach(callback) {\n    for (let i = 0; i <= 0xffff; i++) {\n      callback(i, i);\n    }\n  }\n\n  charCodeOf(value) {\n    return Number.isInteger(value) && value <= 0xffff ? value : -1;\n  }\n\n  getMap() {\n    // Sometimes identity maps must be instantiated, but it's rare.\n    const map = new Array(0x10000);\n    for (let i = 0; i <= 0xffff; i++) {\n      map[i] = i;\n    }\n    return map;\n  }\n\n  get length() {\n    return 0x10000;\n  }\n\n  // eslint-disable-next-line getter-return\n  get isIdentityCMap() {\n    unreachable(\"should not access .isIdentityCMap\");\n  }\n}\n\nvar BinaryCMapReader = (function BinaryCMapReaderClosure() {\n  function hexToInt(a, size) {\n    var n = 0;\n    for (var i = 0; i <= size; i++) {\n      n = (n << 8) | a[i];\n    }\n    return n >>> 0;\n  }\n\n  function hexToStr(a, size) {\n    // This code is hot. Special-case some common values to avoid creating an\n    // object with subarray().\n    if (size === 1) {\n      return String.fromCharCode(a[0], a[1]);\n    }\n    if (size === 3) {\n      return String.fromCharCode(a[0], a[1], a[2], a[3]);\n    }\n    return String.fromCharCode.apply(null, a.subarray(0, size + 1));\n  }\n\n  function addHex(a, b, size) {\n    var c = 0;\n    for (var i = size; i >= 0; i--) {\n      c += a[i] + b[i];\n      a[i] = c & 255;\n      c >>= 8;\n    }\n  }\n\n  function incHex(a, size) {\n    var c = 1;\n    for (var i = size; i >= 0 && c > 0; i--) {\n      c += a[i];\n      a[i] = c & 255;\n      c >>= 8;\n    }\n  }\n\n  var MAX_NUM_SIZE = 16;\n  var MAX_ENCODED_NUM_SIZE = 19; // ceil(MAX_NUM_SIZE * 7 / 8)\n\n  function BinaryCMapStream(data) {\n    this.buffer = data;\n    this.pos = 0;\n    this.end = data.length;\n    this.tmpBuf = new Uint8Array(MAX_ENCODED_NUM_SIZE);\n  }\n\n  BinaryCMapStream.prototype = {\n    readByte() {\n      if (this.pos >= this.end) {\n        return -1;\n      }\n      return this.buffer[this.pos++];\n    },\n    readNumber() {\n      var n = 0;\n      var last;\n      do {\n        var b = this.readByte();\n        if (b < 0) {\n          throw new FormatError(\"unexpected EOF in bcmap\");\n        }\n        last = !(b & 0x80);\n        n = (n << 7) | (b & 0x7f);\n      } while (!last);\n      return n;\n    },\n    readSigned() {\n      var n = this.readNumber();\n      return n & 1 ? ~(n >>> 1) : n >>> 1;\n    },\n    readHex(num, size) {\n      num.set(this.buffer.subarray(this.pos, this.pos + size + 1));\n      this.pos += size + 1;\n    },\n    readHexNumber(num, size) {\n      var last;\n      var stack = this.tmpBuf,\n        sp = 0;\n      do {\n        var b = this.readByte();\n        if (b < 0) {\n          throw new FormatError(\"unexpected EOF in bcmap\");\n        }\n        last = !(b & 0x80);\n        stack[sp++] = b & 0x7f;\n      } while (!last);\n      var i = size,\n        buffer = 0,\n        bufferSize = 0;\n      while (i >= 0) {\n        while (bufferSize < 8 && stack.length > 0) {\n          buffer = (stack[--sp] << bufferSize) | buffer;\n          bufferSize += 7;\n        }\n        num[i] = buffer & 255;\n        i--;\n        buffer >>= 8;\n        bufferSize -= 8;\n      }\n    },\n    readHexSigned(num, size) {\n      this.readHexNumber(num, size);\n      var sign = num[size] & 1 ? 255 : 0;\n      var c = 0;\n      for (var i = 0; i <= size; i++) {\n        c = ((c & 1) << 8) | num[i];\n        num[i] = (c >> 1) ^ sign;\n      }\n    },\n    readString() {\n      var len = this.readNumber();\n      var s = \"\";\n      for (var i = 0; i < len; i++) {\n        s += String.fromCharCode(this.readNumber());\n      }\n      return s;\n    },\n  };\n\n  function processBinaryCMap(data, cMap, extend) {\n    return new Promise(function (resolve, reject) {\n      var stream = new BinaryCMapStream(data);\n      var header = stream.readByte();\n      cMap.vertical = !!(header & 1);\n\n      var useCMap = null;\n      var start = new Uint8Array(MAX_NUM_SIZE);\n      var end = new Uint8Array(MAX_NUM_SIZE);\n      var char = new Uint8Array(MAX_NUM_SIZE);\n      var charCode = new Uint8Array(MAX_NUM_SIZE);\n      var tmp = new Uint8Array(MAX_NUM_SIZE);\n      var code;\n\n      var b;\n      while ((b = stream.readByte()) >= 0) {\n        var type = b >> 5;\n        if (type === 7) {\n          // metadata, e.g. comment or usecmap\n          switch (b & 0x1f) {\n            case 0:\n              stream.readString(); // skipping comment\n              break;\n            case 1:\n              useCMap = stream.readString();\n              break;\n          }\n          continue;\n        }\n        var sequence = !!(b & 0x10);\n        var dataSize = b & 15;\n\n        if (dataSize + 1 > MAX_NUM_SIZE) {\n          throw new Error(\"processBinaryCMap: Invalid dataSize.\");\n        }\n\n        var ucs2DataSize = 1;\n        var subitemsCount = stream.readNumber();\n        var i;\n        switch (type) {\n          case 0: // codespacerange\n            stream.readHex(start, dataSize);\n            stream.readHexNumber(end, dataSize);\n            addHex(end, start, dataSize);\n            cMap.addCodespaceRange(\n              dataSize + 1,\n              hexToInt(start, dataSize),\n              hexToInt(end, dataSize)\n            );\n            for (i = 1; i < subitemsCount; i++) {\n              incHex(end, dataSize);\n              stream.readHexNumber(start, dataSize);\n              addHex(start, end, dataSize);\n              stream.readHexNumber(end, dataSize);\n              addHex(end, start, dataSize);\n              cMap.addCodespaceRange(\n                dataSize + 1,\n                hexToInt(start, dataSize),\n                hexToInt(end, dataSize)\n              );\n            }\n            break;\n          case 1: // notdefrange\n            stream.readHex(start, dataSize);\n            stream.readHexNumber(end, dataSize);\n            addHex(end, start, dataSize);\n            stream.readNumber(); // code\n            // undefined range, skipping\n            for (i = 1; i < subitemsCount; i++) {\n              incHex(end, dataSize);\n              stream.readHexNumber(start, dataSize);\n              addHex(start, end, dataSize);\n              stream.readHexNumber(end, dataSize);\n              addHex(end, start, dataSize);\n              stream.readNumber(); // code\n              // nop\n            }\n            break;\n          case 2: // cidchar\n            stream.readHex(char, dataSize);\n            code = stream.readNumber();\n            cMap.mapOne(hexToInt(char, dataSize), code);\n            for (i = 1; i < subitemsCount; i++) {\n              incHex(char, dataSize);\n              if (!sequence) {\n                stream.readHexNumber(tmp, dataSize);\n                addHex(char, tmp, dataSize);\n              }\n              code = stream.readSigned() + (code + 1);\n              cMap.mapOne(hexToInt(char, dataSize), code);\n            }\n            break;\n          case 3: // cidrange\n            stream.readHex(start, dataSize);\n            stream.readHexNumber(end, dataSize);\n            addHex(end, start, dataSize);\n            code = stream.readNumber();\n            cMap.mapCidRange(\n              hexToInt(start, dataSize),\n              hexToInt(end, dataSize),\n              code\n            );\n            for (i = 1; i < subitemsCount; i++) {\n              incHex(end, dataSize);\n              if (!sequence) {\n                stream.readHexNumber(start, dataSize);\n                addHex(start, end, dataSize);\n              } else {\n                start.set(end);\n              }\n              stream.readHexNumber(end, dataSize);\n              addHex(end, start, dataSize);\n              code = stream.readNumber();\n              cMap.mapCidRange(\n                hexToInt(start, dataSize),\n                hexToInt(end, dataSize),\n                code\n              );\n            }\n            break;\n          case 4: // bfchar\n            stream.readHex(char, ucs2DataSize);\n            stream.readHex(charCode, dataSize);\n            cMap.mapOne(\n              hexToInt(char, ucs2DataSize),\n              hexToStr(charCode, dataSize)\n            );\n            for (i = 1; i < subitemsCount; i++) {\n              incHex(char, ucs2DataSize);\n              if (!sequence) {\n                stream.readHexNumber(tmp, ucs2DataSize);\n                addHex(char, tmp, ucs2DataSize);\n              }\n              incHex(charCode, dataSize);\n              stream.readHexSigned(tmp, dataSize);\n              addHex(charCode, tmp, dataSize);\n              cMap.mapOne(\n                hexToInt(char, ucs2DataSize),\n                hexToStr(charCode, dataSize)\n              );\n            }\n            break;\n          case 5: // bfrange\n            stream.readHex(start, ucs2DataSize);\n            stream.readHexNumber(end, ucs2DataSize);\n            addHex(end, start, ucs2DataSize);\n            stream.readHex(charCode, dataSize);\n            cMap.mapBfRange(\n              hexToInt(start, ucs2DataSize),\n              hexToInt(end, ucs2DataSize),\n              hexToStr(charCode, dataSize)\n            );\n            for (i = 1; i < subitemsCount; i++) {\n              incHex(end, ucs2DataSize);\n              if (!sequence) {\n                stream.readHexNumber(start, ucs2DataSize);\n                addHex(start, end, ucs2DataSize);\n              } else {\n                start.set(end);\n              }\n              stream.readHexNumber(end, ucs2DataSize);\n              addHex(end, start, ucs2DataSize);\n              stream.readHex(charCode, dataSize);\n              cMap.mapBfRange(\n                hexToInt(start, ucs2DataSize),\n                hexToInt(end, ucs2DataSize),\n                hexToStr(charCode, dataSize)\n              );\n            }\n            break;\n          default:\n            reject(new Error(\"processBinaryCMap: Unknown type: \" + type));\n            return;\n        }\n      }\n\n      if (useCMap) {\n        resolve(extend(useCMap));\n        return;\n      }\n      resolve(cMap);\n    });\n  }\n\n  // eslint-disable-next-line no-shadow\n  function BinaryCMapReader() {}\n\n  BinaryCMapReader.prototype = {\n    process: processBinaryCMap,\n  };\n\n  return BinaryCMapReader;\n})();\n\nvar CMapFactory = (function CMapFactoryClosure() {\n  function strToInt(str) {\n    var a = 0;\n    for (var i = 0; i < str.length; i++) {\n      a = (a << 8) | str.charCodeAt(i);\n    }\n    return a >>> 0;\n  }\n\n  function expectString(obj) {\n    if (!isString(obj)) {\n      throw new FormatError(\"Malformed CMap: expected string.\");\n    }\n  }\n\n  function expectInt(obj) {\n    if (!Number.isInteger(obj)) {\n      throw new FormatError(\"Malformed CMap: expected int.\");\n    }\n  }\n\n  function parseBfChar(cMap, lexer) {\n    while (true) {\n      var obj = lexer.getObj();\n      if (isEOF(obj)) {\n        break;\n      }\n      if (isCmd(obj, \"endbfchar\")) {\n        return;\n      }\n      expectString(obj);\n      var src = strToInt(obj);\n      obj = lexer.getObj();\n      // TODO are /dstName used?\n      expectString(obj);\n      var dst = obj;\n      cMap.mapOne(src, dst);\n    }\n  }\n\n  function parseBfRange(cMap, lexer) {\n    while (true) {\n      var obj = lexer.getObj();\n      if (isEOF(obj)) {\n        break;\n      }\n      if (isCmd(obj, \"endbfrange\")) {\n        return;\n      }\n      expectString(obj);\n      var low = strToInt(obj);\n      obj = lexer.getObj();\n      expectString(obj);\n      var high = strToInt(obj);\n      obj = lexer.getObj();\n      if (Number.isInteger(obj) || isString(obj)) {\n        var dstLow = Number.isInteger(obj) ? String.fromCharCode(obj) : obj;\n        cMap.mapBfRange(low, high, dstLow);\n      } else if (isCmd(obj, \"[\")) {\n        obj = lexer.getObj();\n        var array = [];\n        while (!isCmd(obj, \"]\") && !isEOF(obj)) {\n          array.push(obj);\n          obj = lexer.getObj();\n        }\n        cMap.mapBfRangeToArray(low, high, array);\n      } else {\n        break;\n      }\n    }\n    throw new FormatError(\"Invalid bf range.\");\n  }\n\n  function parseCidChar(cMap, lexer) {\n    while (true) {\n      var obj = lexer.getObj();\n      if (isEOF(obj)) {\n        break;\n      }\n      if (isCmd(obj, \"endcidchar\")) {\n        return;\n      }\n      expectString(obj);\n      var src = strToInt(obj);\n      obj = lexer.getObj();\n      expectInt(obj);\n      var dst = obj;\n      cMap.mapOne(src, dst);\n    }\n  }\n\n  function parseCidRange(cMap, lexer) {\n    while (true) {\n      var obj = lexer.getObj();\n      if (isEOF(obj)) {\n        break;\n      }\n      if (isCmd(obj, \"endcidrange\")) {\n        return;\n      }\n      expectString(obj);\n      var low = strToInt(obj);\n      obj = lexer.getObj();\n      expectString(obj);\n      var high = strToInt(obj);\n      obj = lexer.getObj();\n      expectInt(obj);\n      var dstLow = obj;\n      cMap.mapCidRange(low, high, dstLow);\n    }\n  }\n\n  function parseCodespaceRange(cMap, lexer) {\n    while (true) {\n      var obj = lexer.getObj();\n      if (isEOF(obj)) {\n        break;\n      }\n      if (isCmd(obj, \"endcodespacerange\")) {\n        return;\n      }\n      if (!isString(obj)) {\n        break;\n      }\n      var low = strToInt(obj);\n      obj = lexer.getObj();\n      if (!isString(obj)) {\n        break;\n      }\n      var high = strToInt(obj);\n      cMap.addCodespaceRange(obj.length, low, high);\n    }\n    throw new FormatError(\"Invalid codespace range.\");\n  }\n\n  function parseWMode(cMap, lexer) {\n    var obj = lexer.getObj();\n    if (Number.isInteger(obj)) {\n      cMap.vertical = !!obj;\n    }\n  }\n\n  function parseCMapName(cMap, lexer) {\n    var obj = lexer.getObj();\n    if (isName(obj) && isString(obj.name)) {\n      cMap.name = obj.name;\n    }\n  }\n\n  function parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap) {\n    var previous;\n    var embeddedUseCMap;\n    objLoop: while (true) {\n      try {\n        var obj = lexer.getObj();\n        if (isEOF(obj)) {\n          break;\n        } else if (isName(obj)) {\n          if (obj.name === \"WMode\") {\n            parseWMode(cMap, lexer);\n          } else if (obj.name === \"CMapName\") {\n            parseCMapName(cMap, lexer);\n          }\n          previous = obj;\n        } else if (isCmd(obj)) {\n          switch (obj.cmd) {\n            case \"endcmap\":\n              break objLoop;\n            case \"usecmap\":\n              if (isName(previous)) {\n                embeddedUseCMap = previous.name;\n              }\n              break;\n            case \"begincodespacerange\":\n              parseCodespaceRange(cMap, lexer);\n              break;\n            case \"beginbfchar\":\n              parseBfChar(cMap, lexer);\n              break;\n            case \"begincidchar\":\n              parseCidChar(cMap, lexer);\n              break;\n            case \"beginbfrange\":\n              parseBfRange(cMap, lexer);\n              break;\n            case \"begincidrange\":\n              parseCidRange(cMap, lexer);\n              break;\n          }\n        }\n      } catch (ex) {\n        if (ex instanceof MissingDataException) {\n          throw ex;\n        }\n        warn(\"Invalid cMap data: \" + ex);\n        continue;\n      }\n    }\n\n    if (!useCMap && embeddedUseCMap) {\n      // Load the useCMap definition from the file only if there wasn't one\n      // specified.\n      useCMap = embeddedUseCMap;\n    }\n    if (useCMap) {\n      return extendCMap(cMap, fetchBuiltInCMap, useCMap);\n    }\n    return Promise.resolve(cMap);\n  }\n\n  function extendCMap(cMap, fetchBuiltInCMap, useCMap) {\n    return createBuiltInCMap(useCMap, fetchBuiltInCMap).then(function (\n      newCMap\n    ) {\n      cMap.useCMap = newCMap;\n      // If there aren't any code space ranges defined clone all the parent ones\n      // into this cMap.\n      if (cMap.numCodespaceRanges === 0) {\n        var useCodespaceRanges = cMap.useCMap.codespaceRanges;\n        for (var i = 0; i < useCodespaceRanges.length; i++) {\n          cMap.codespaceRanges[i] = useCodespaceRanges[i].slice();\n        }\n        cMap.numCodespaceRanges = cMap.useCMap.numCodespaceRanges;\n      }\n      // Merge the map into the current one, making sure not to override\n      // any previously defined entries.\n      cMap.useCMap.forEach(function (key, value) {\n        if (!cMap.contains(key)) {\n          cMap.mapOne(key, cMap.useCMap.lookup(key));\n        }\n      });\n\n      return cMap;\n    });\n  }\n\n  function createBuiltInCMap(name, fetchBuiltInCMap) {\n    if (name === \"Identity-H\") {\n      return Promise.resolve(new IdentityCMap(false, 2));\n    } else if (name === \"Identity-V\") {\n      return Promise.resolve(new IdentityCMap(true, 2));\n    }\n    if (!BUILT_IN_CMAPS.includes(name)) {\n      return Promise.reject(new Error(\"Unknown CMap name: \" + name));\n    }\n    if (!fetchBuiltInCMap) {\n      return Promise.reject(\n        new Error(\"Built-in CMap parameters are not provided.\")\n      );\n    }\n\n    return fetchBuiltInCMap(name).then(function (data) {\n      var cMapData = data.cMapData,\n        compressionType = data.compressionType;\n      var cMap = new CMap(true);\n\n      if (compressionType === CMapCompressionType.BINARY) {\n        return new BinaryCMapReader().process(cMapData, cMap, function (\n          useCMap\n        ) {\n          return extendCMap(cMap, fetchBuiltInCMap, useCMap);\n        });\n      }\n      if (compressionType === CMapCompressionType.NONE) {\n        var lexer = new Lexer(new Stream(cMapData));\n        return parseCMap(cMap, lexer, fetchBuiltInCMap, null);\n      }\n      return Promise.reject(\n        new Error(\n          \"TODO: Only BINARY/NONE CMap compression is currently supported.\"\n        )\n      );\n    });\n  }\n\n  return {\n    async create(params) {\n      var encoding = params.encoding;\n      var fetchBuiltInCMap = params.fetchBuiltInCMap;\n      var useCMap = params.useCMap;\n\n      if (isName(encoding)) {\n        return createBuiltInCMap(encoding.name, fetchBuiltInCMap);\n      } else if (isStream(encoding)) {\n        var cMap = new CMap();\n        var lexer = new Lexer(encoding);\n        return parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap).then(function (\n          parsedCMap\n        ) {\n          if (parsedCMap.isIdentityCMap) {\n            return createBuiltInCMap(parsedCMap.name, fetchBuiltInCMap);\n          }\n          return parsedCMap;\n        });\n      }\n      throw new Error(\"Encoding required.\");\n    },\n  };\n})();\n\nexport { CMap, IdentityCMap, CMapFactory };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  assert,\n  bytesToString,\n  FONT_IDENTITY_MATRIX,\n  FontType,\n  FormatError,\n  info,\n  isNum,\n  shadow,\n  string32,\n  unreachable,\n  warn,\n} from \"../shared/util.js\";\nimport {\n  CFF,\n  CFFCharset,\n  CFFCompiler,\n  CFFHeader,\n  CFFIndex,\n  CFFParser,\n  CFFPrivateDict,\n  CFFStandardStrings,\n  CFFStrings,\n  CFFTopDict,\n} from \"./cff_parser.js\";\nimport { getDingbatsGlyphsUnicode, getGlyphsUnicode } from \"./glyphlist.js\";\nimport {\n  getEncoding,\n  MacRomanEncoding,\n  StandardEncoding,\n  SymbolSetEncoding,\n  ZapfDingbatsEncoding,\n} from \"./encodings.js\";\nimport {\n  getGlyphMapForStandardFonts,\n  getNonStdFontMap,\n  getStdFontMap,\n  getSupplementalGlyphMapForArialBlack,\n  getSupplementalGlyphMapForCalibri,\n} from \"./standard_fonts.js\";\nimport {\n  getUnicodeForGlyph,\n  getUnicodeRangeFor,\n  mapSpecialUnicodeValues,\n} from \"./unicode.js\";\nimport {\n  isWhiteSpace,\n  MissingDataException,\n  readUint32,\n} from \"./core_utils.js\";\nimport { FontRendererFactory } from \"./font_renderer.js\";\nimport { IdentityCMap } from \"./cmap.js\";\nimport { Stream } from \"./stream.js\";\nimport { Type1Parser } from \"./type1_parser.js\";\n\n// Unicode Private Use Areas:\nconst PRIVATE_USE_AREAS = [\n  [0xe000, 0xf8ff], // BMP (0)\n  [0x100000, 0x10fffd], // PUP (16)\n];\n\n// PDF Glyph Space Units are one Thousandth of a TextSpace Unit\n// except for Type 3 fonts\nvar PDF_GLYPH_SPACE_UNITS = 1000;\n\n// Accented characters have issues on Windows and Linux. When this flag is\n// enabled glyphs that use seac and seac style endchar operators are truncated\n// and we instead just store the glyph id's of the base glyph and its accent to\n// be drawn individually.\n// Linux (freetype) requires that when a seac style endchar is used\n// that the charset must be a predefined one, however we build a\n// custom one. Windows just refuses to draw glyphs with seac operators.\nvar SEAC_ANALYSIS_ENABLED = true;\n\nconst EXPORT_DATA_PROPERTIES = [\n  \"ascent\",\n  \"bbox\",\n  \"black\",\n  \"bold\",\n  \"charProcOperatorList\",\n  \"composite\",\n  \"data\",\n  \"defaultVMetrics\",\n  \"defaultWidth\",\n  \"descent\",\n  \"fallbackName\",\n  \"fontMatrix\",\n  \"fontType\",\n  \"isMonospace\",\n  \"isSerifFont\",\n  \"isType3Font\",\n  \"italic\",\n  \"loadedName\",\n  \"mimetype\",\n  \"missingFile\",\n  \"name\",\n  \"remeasure\",\n  \"subtype\",\n  \"type\",\n  \"vertical\",\n];\n\nconst EXPORT_DATA_EXTRA_PROPERTIES = [\n  \"cMap\",\n  \"defaultEncoding\",\n  \"differences\",\n  \"isSymbolicFont\",\n  \"seacMap\",\n  \"toFontChar\",\n  \"toUnicode\",\n  \"vmetrics\",\n  \"widths\",\n];\n\nvar FontFlags = {\n  FixedPitch: 1,\n  Serif: 2,\n  Symbolic: 4,\n  Script: 8,\n  Nonsymbolic: 32,\n  Italic: 64,\n  AllCap: 65536,\n  SmallCap: 131072,\n  ForceBold: 262144,\n};\n\n// prettier-ignore\nvar MacStandardGlyphOrdering = [\n  \".notdef\", \".null\", \"nonmarkingreturn\", \"space\", \"exclam\", \"quotedbl\",\n  \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quotesingle\", \"parenleft\",\n  \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\",\n  \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\",\n  \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\",\n  \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\",\n  \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\",\n  \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\",\n  \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\",\n  \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\",\n  \"asciitilde\", \"Adieresis\", \"Aring\", \"Ccedilla\", \"Eacute\", \"Ntilde\",\n  \"Odieresis\", \"Udieresis\", \"aacute\", \"agrave\", \"acircumflex\", \"adieresis\",\n  \"atilde\", \"aring\", \"ccedilla\", \"eacute\", \"egrave\", \"ecircumflex\", \"edieresis\",\n  \"iacute\", \"igrave\", \"icircumflex\", \"idieresis\", \"ntilde\", \"oacute\", \"ograve\",\n  \"ocircumflex\", \"odieresis\", \"otilde\", \"uacute\", \"ugrave\", \"ucircumflex\",\n  \"udieresis\", \"dagger\", \"degree\", \"cent\", \"sterling\", \"section\", \"bullet\",\n  \"paragraph\", \"germandbls\", \"registered\", \"copyright\", \"trademark\", \"acute\",\n  \"dieresis\", \"notequal\", \"AE\", \"Oslash\", \"infinity\", \"plusminus\", \"lessequal\",\n  \"greaterequal\", \"yen\", \"mu\", \"partialdiff\", \"summation\", \"product\", \"pi\",\n  \"integral\", \"ordfeminine\", \"ordmasculine\", \"Omega\", \"ae\", \"oslash\",\n  \"questiondown\", \"exclamdown\", \"logicalnot\", \"radical\", \"florin\",\n  \"approxequal\", \"Delta\", \"guillemotleft\", \"guillemotright\", \"ellipsis\",\n  \"nonbreakingspace\", \"Agrave\", \"Atilde\", \"Otilde\", \"OE\", \"oe\", \"endash\",\n  \"emdash\", \"quotedblleft\", \"quotedblright\", \"quoteleft\", \"quoteright\",\n  \"divide\", \"lozenge\", \"ydieresis\", \"Ydieresis\", \"fraction\", \"currency\",\n  \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"daggerdbl\", \"periodcentered\",\n  \"quotesinglbase\", \"quotedblbase\", \"perthousand\", \"Acircumflex\",\n  \"Ecircumflex\", \"Aacute\", \"Edieresis\", \"Egrave\", \"Iacute\", \"Icircumflex\",\n  \"Idieresis\", \"Igrave\", \"Oacute\", \"Ocircumflex\", \"apple\", \"Ograve\", \"Uacute\",\n  \"Ucircumflex\", \"Ugrave\", \"dotlessi\", \"circumflex\", \"tilde\", \"macron\",\n  \"breve\", \"dotaccent\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\",\n  \"Lslash\", \"lslash\", \"Scaron\", \"scaron\", \"Zcaron\", \"zcaron\", \"brokenbar\",\n  \"Eth\", \"eth\", \"Yacute\", \"yacute\", \"Thorn\", \"thorn\", \"minus\", \"multiply\",\n  \"onesuperior\", \"twosuperior\", \"threesuperior\", \"onehalf\", \"onequarter\",\n  \"threequarters\", \"franc\", \"Gbreve\", \"gbreve\", \"Idotaccent\", \"Scedilla\",\n  \"scedilla\", \"Cacute\", \"cacute\", \"Ccaron\", \"ccaron\", \"dcroat\"];\n\nfunction adjustWidths(properties) {\n  if (!properties.fontMatrix) {\n    return;\n  }\n  if (properties.fontMatrix[0] === FONT_IDENTITY_MATRIX[0]) {\n    return;\n  }\n  // adjusting width to fontMatrix scale\n  var scale = 0.001 / properties.fontMatrix[0];\n  var glyphsWidths = properties.widths;\n  for (var glyph in glyphsWidths) {\n    glyphsWidths[glyph] *= scale;\n  }\n  properties.defaultWidth *= scale;\n}\n\nfunction adjustToUnicode(properties, builtInEncoding) {\n  if (properties.hasIncludedToUnicodeMap) {\n    return; // The font dictionary has a `ToUnicode` entry.\n  }\n  if (properties.hasEncoding) {\n    return; // The font dictionary has an `Encoding` entry.\n  }\n  if (builtInEncoding === properties.defaultEncoding) {\n    return; // No point in trying to adjust `toUnicode` if the encodings match.\n  }\n  if (properties.toUnicode instanceof IdentityToUnicodeMap) {\n    return;\n  }\n  var toUnicode = [],\n    glyphsUnicodeMap = getGlyphsUnicode();\n  for (var charCode in builtInEncoding) {\n    var glyphName = builtInEncoding[charCode];\n    var unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n    if (unicode !== -1) {\n      toUnicode[charCode] = String.fromCharCode(unicode);\n    }\n  }\n  properties.toUnicode.amend(toUnicode);\n}\n\nfunction getFontType(type, subtype) {\n  switch (type) {\n    case \"Type1\":\n      return subtype === \"Type1C\" ? FontType.TYPE1C : FontType.TYPE1;\n    case \"CIDFontType0\":\n      return subtype === \"CIDFontType0C\"\n        ? FontType.CIDFONTTYPE0C\n        : FontType.CIDFONTTYPE0;\n    case \"OpenType\":\n      return FontType.OPENTYPE;\n    case \"TrueType\":\n      return FontType.TRUETYPE;\n    case \"CIDFontType2\":\n      return FontType.CIDFONTTYPE2;\n    case \"MMType1\":\n      return FontType.MMTYPE1;\n    case \"Type0\":\n      return FontType.TYPE0;\n    default:\n      return FontType.UNKNOWN;\n  }\n}\n\n// Some bad PDF generators, e.g. Scribus PDF, include glyph names\n// in a 'uniXXXX' format -- attempting to recover proper ones.\nfunction recoverGlyphName(name, glyphsUnicodeMap) {\n  if (glyphsUnicodeMap[name] !== undefined) {\n    return name;\n  }\n  // The glyph name is non-standard, trying to recover.\n  var unicode = getUnicodeForGlyph(name, glyphsUnicodeMap);\n  if (unicode !== -1) {\n    for (var key in glyphsUnicodeMap) {\n      if (glyphsUnicodeMap[key] === unicode) {\n        return key;\n      }\n    }\n  }\n  info(\"Unable to recover a standard glyph name for: \" + name);\n  return name;\n}\n\nvar Glyph = (function GlyphClosure() {\n  // eslint-disable-next-line no-shadow\n  function Glyph(\n    fontChar,\n    unicode,\n    accent,\n    width,\n    vmetric,\n    operatorListId,\n    isSpace,\n    isInFont\n  ) {\n    this.fontChar = fontChar;\n    this.unicode = unicode;\n    this.accent = accent;\n    this.width = width;\n    this.vmetric = vmetric;\n    this.operatorListId = operatorListId;\n    this.isSpace = isSpace;\n    this.isInFont = isInFont;\n  }\n\n  Glyph.prototype.matchesForCache = function (\n    fontChar,\n    unicode,\n    accent,\n    width,\n    vmetric,\n    operatorListId,\n    isSpace,\n    isInFont\n  ) {\n    return (\n      this.fontChar === fontChar &&\n      this.unicode === unicode &&\n      this.accent === accent &&\n      this.width === width &&\n      this.vmetric === vmetric &&\n      this.operatorListId === operatorListId &&\n      this.isSpace === isSpace &&\n      this.isInFont === isInFont\n    );\n  };\n\n  return Glyph;\n})();\n\nvar ToUnicodeMap = (function ToUnicodeMapClosure() {\n  // eslint-disable-next-line no-shadow\n  function ToUnicodeMap(cmap = []) {\n    // The elements of this._map can be integers or strings, depending on how\n    // `cmap` was created.\n    this._map = cmap;\n  }\n\n  ToUnicodeMap.prototype = {\n    get length() {\n      return this._map.length;\n    },\n\n    forEach(callback) {\n      for (var charCode in this._map) {\n        callback(charCode, this._map[charCode].charCodeAt(0));\n      }\n    },\n\n    has(i) {\n      return this._map[i] !== undefined;\n    },\n\n    get(i) {\n      return this._map[i];\n    },\n\n    charCodeOf(value) {\n      // `Array.prototype.indexOf` is *extremely* inefficient for arrays which\n      // are both very sparse and very large (see issue8372.pdf).\n      const map = this._map;\n      if (map.length <= 0x10000) {\n        return map.indexOf(value);\n      }\n      for (const charCode in map) {\n        if (map[charCode] === value) {\n          return charCode | 0;\n        }\n      }\n      return -1;\n    },\n\n    amend(map) {\n      for (var charCode in map) {\n        this._map[charCode] = map[charCode];\n      }\n    },\n  };\n\n  return ToUnicodeMap;\n})();\n\nvar IdentityToUnicodeMap = (function IdentityToUnicodeMapClosure() {\n  // eslint-disable-next-line no-shadow\n  function IdentityToUnicodeMap(firstChar, lastChar) {\n    this.firstChar = firstChar;\n    this.lastChar = lastChar;\n  }\n\n  IdentityToUnicodeMap.prototype = {\n    get length() {\n      return this.lastChar + 1 - this.firstChar;\n    },\n\n    forEach(callback) {\n      for (var i = this.firstChar, ii = this.lastChar; i <= ii; i++) {\n        callback(i, i);\n      }\n    },\n\n    has(i) {\n      return this.firstChar <= i && i <= this.lastChar;\n    },\n\n    get(i) {\n      if (this.firstChar <= i && i <= this.lastChar) {\n        return String.fromCharCode(i);\n      }\n      return undefined;\n    },\n\n    charCodeOf(v) {\n      return Number.isInteger(v) && v >= this.firstChar && v <= this.lastChar\n        ? v\n        : -1;\n    },\n\n    amend(map) {\n      unreachable(\"Should not call amend()\");\n    },\n  };\n\n  return IdentityToUnicodeMap;\n})();\n\nvar OpenTypeFileBuilder = (function OpenTypeFileBuilderClosure() {\n  function writeInt16(dest, offset, num) {\n    dest[offset] = (num >> 8) & 0xff;\n    dest[offset + 1] = num & 0xff;\n  }\n\n  function writeInt32(dest, offset, num) {\n    dest[offset] = (num >> 24) & 0xff;\n    dest[offset + 1] = (num >> 16) & 0xff;\n    dest[offset + 2] = (num >> 8) & 0xff;\n    dest[offset + 3] = num & 0xff;\n  }\n\n  function writeData(dest, offset, data) {\n    var i, ii;\n    if (data instanceof Uint8Array) {\n      dest.set(data, offset);\n    } else if (typeof data === \"string\") {\n      for (i = 0, ii = data.length; i < ii; i++) {\n        dest[offset++] = data.charCodeAt(i) & 0xff;\n      }\n    } else {\n      // treating everything else as array\n      for (i = 0, ii = data.length; i < ii; i++) {\n        dest[offset++] = data[i] & 0xff;\n      }\n    }\n  }\n\n  // eslint-disable-next-line no-shadow\n  function OpenTypeFileBuilder(sfnt) {\n    this.sfnt = sfnt;\n    this.tables = Object.create(null);\n  }\n\n  OpenTypeFileBuilder.getSearchParams = function OpenTypeFileBuilder_getSearchParams(\n    entriesCount,\n    entrySize\n  ) {\n    var maxPower2 = 1,\n      log2 = 0;\n    while ((maxPower2 ^ entriesCount) > maxPower2) {\n      maxPower2 <<= 1;\n      log2++;\n    }\n    var searchRange = maxPower2 * entrySize;\n    return {\n      range: searchRange,\n      entry: log2,\n      rangeShift: entrySize * entriesCount - searchRange,\n    };\n  };\n\n  var OTF_HEADER_SIZE = 12;\n  var OTF_TABLE_ENTRY_SIZE = 16;\n\n  OpenTypeFileBuilder.prototype = {\n    toArray: function OpenTypeFileBuilder_toArray() {\n      var sfnt = this.sfnt;\n\n      // Tables needs to be written by ascendant alphabetic order\n      var tables = this.tables;\n      var tablesNames = Object.keys(tables);\n      tablesNames.sort();\n      var numTables = tablesNames.length;\n\n      var i, j, jj, table, tableName;\n      // layout the tables data\n      var offset = OTF_HEADER_SIZE + numTables * OTF_TABLE_ENTRY_SIZE;\n      var tableOffsets = [offset];\n      for (i = 0; i < numTables; i++) {\n        table = tables[tablesNames[i]];\n        var paddedLength = ((table.length + 3) & ~3) >>> 0;\n        offset += paddedLength;\n        tableOffsets.push(offset);\n      }\n\n      var file = new Uint8Array(offset);\n      // write the table data first (mostly for checksum)\n      for (i = 0; i < numTables; i++) {\n        table = tables[tablesNames[i]];\n        writeData(file, tableOffsets[i], table);\n      }\n\n      // sfnt version (4 bytes)\n      if (sfnt === \"true\") {\n        // Windows hates the Mac TrueType sfnt version number\n        sfnt = string32(0x00010000);\n      }\n      file[0] = sfnt.charCodeAt(0) & 0xff;\n      file[1] = sfnt.charCodeAt(1) & 0xff;\n      file[2] = sfnt.charCodeAt(2) & 0xff;\n      file[3] = sfnt.charCodeAt(3) & 0xff;\n\n      // numTables (2 bytes)\n      writeInt16(file, 4, numTables);\n\n      var searchParams = OpenTypeFileBuilder.getSearchParams(numTables, 16);\n\n      // searchRange (2 bytes)\n      writeInt16(file, 6, searchParams.range);\n      // entrySelector (2 bytes)\n      writeInt16(file, 8, searchParams.entry);\n      // rangeShift (2 bytes)\n      writeInt16(file, 10, searchParams.rangeShift);\n\n      offset = OTF_HEADER_SIZE;\n      // writing table entries\n      for (i = 0; i < numTables; i++) {\n        tableName = tablesNames[i];\n        file[offset] = tableName.charCodeAt(0) & 0xff;\n        file[offset + 1] = tableName.charCodeAt(1) & 0xff;\n        file[offset + 2] = tableName.charCodeAt(2) & 0xff;\n        file[offset + 3] = tableName.charCodeAt(3) & 0xff;\n\n        // checksum\n        var checksum = 0;\n        for (j = tableOffsets[i], jj = tableOffsets[i + 1]; j < jj; j += 4) {\n          var quad = readUint32(file, j);\n          checksum = (checksum + quad) >>> 0;\n        }\n        writeInt32(file, offset + 4, checksum);\n\n        // offset\n        writeInt32(file, offset + 8, tableOffsets[i]);\n        // length\n        writeInt32(file, offset + 12, tables[tableName].length);\n\n        offset += OTF_TABLE_ENTRY_SIZE;\n      }\n      return file;\n    },\n\n    addTable: function OpenTypeFileBuilder_addTable(tag, data) {\n      if (tag in this.tables) {\n        throw new Error(\"Table \" + tag + \" already exists\");\n      }\n      this.tables[tag] = data;\n    },\n  };\n\n  return OpenTypeFileBuilder;\n})();\n\n/**\n * 'Font' is the class the outside world should use, it encapsulate all the font\n * decoding logics whatever type it is (assuming the font type is supported).\n *\n * For example to read a Type1 font and to attach it to the document:\n *   var type1Font = new Font(\"MyFontName\", binaryFile, propertiesObject);\n *   type1Font.bind();\n */\nvar Font = (function FontClosure() {\n  // eslint-disable-next-line no-shadow\n  function Font(name, file, properties) {\n    var charCode;\n\n    this.name = name;\n    this.loadedName = properties.loadedName;\n    this.isType3Font = properties.isType3Font;\n    this.missingFile = false;\n\n    this.glyphCache = Object.create(null);\n\n    this.isSerifFont = !!(properties.flags & FontFlags.Serif);\n    this.isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n    this.isMonospace = !!(properties.flags & FontFlags.FixedPitch);\n\n    var type = properties.type;\n    var subtype = properties.subtype;\n    this.type = type;\n    this.subtype = subtype;\n\n    let fallbackName = \"sans-serif\";\n    if (this.isMonospace) {\n      fallbackName = \"monospace\";\n    } else if (this.isSerifFont) {\n      fallbackName = \"serif\";\n    }\n    this.fallbackName = fallbackName;\n\n    this.differences = properties.differences;\n    this.widths = properties.widths;\n    this.defaultWidth = properties.defaultWidth;\n    this.composite = properties.composite;\n    this.cMap = properties.cMap;\n    this.ascent = properties.ascent / PDF_GLYPH_SPACE_UNITS;\n    this.descent = properties.descent / PDF_GLYPH_SPACE_UNITS;\n    this.fontMatrix = properties.fontMatrix;\n    this.bbox = properties.bbox;\n    this.defaultEncoding = properties.defaultEncoding;\n\n    this.toUnicode = properties.toUnicode;\n    this.fallbackToUnicode = properties.fallbackToUnicode || new ToUnicodeMap();\n\n    this.toFontChar = [];\n\n    if (properties.type === \"Type3\") {\n      for (charCode = 0; charCode < 256; charCode++) {\n        this.toFontChar[charCode] =\n          this.differences[charCode] || properties.defaultEncoding[charCode];\n      }\n      this.fontType = FontType.TYPE3;\n      return;\n    }\n\n    this.cidEncoding = properties.cidEncoding;\n    this.vertical = !!properties.vertical;\n    if (this.vertical) {\n      this.vmetrics = properties.vmetrics;\n      this.defaultVMetrics = properties.defaultVMetrics;\n    }\n\n    if (!file || file.isEmpty) {\n      if (file) {\n        // Some bad PDF generators will include empty font files,\n        // attempting to recover by assuming that no file exists.\n        warn('Font file is empty in \"' + name + '\" (' + this.loadedName + \")\");\n      }\n      this.fallbackToSystemFont();\n      return;\n    }\n\n    // Parse the font file to determine the correct type/subtype, rather than\n    // relying on the (often incorrect) data in the font dictionary; (see e.g.\n    //  issue6782.pdf, issue7598.pdf, and issue9949.pdf).\n    [type, subtype] = getFontFileType(file, properties);\n\n    if (type !== this.type || subtype !== this.subtype) {\n      info(\n        \"Inconsistent font file Type/SubType, expected: \" +\n          `${this.type}/${this.subtype} but found: ${type}/${subtype}.`\n      );\n    }\n\n    try {\n      var data;\n      switch (type) {\n        case \"MMType1\":\n          info(\"MMType1 font (\" + name + \"), falling back to Type1.\");\n        /* falls through */\n        case \"Type1\":\n        case \"CIDFontType0\":\n          this.mimetype = \"font/opentype\";\n\n          var cff =\n            subtype === \"Type1C\" || subtype === \"CIDFontType0C\"\n              ? new CFFFont(file, properties)\n              : new Type1Font(name, file, properties);\n\n          adjustWidths(properties);\n\n          // Wrap the CFF data inside an OTF font file\n          data = this.convert(name, cff, properties);\n          break;\n\n        case \"OpenType\":\n        case \"TrueType\":\n        case \"CIDFontType2\":\n          this.mimetype = \"font/opentype\";\n\n          // Repair the TrueType file. It is can be damaged in the point of\n          // view of the sanitizer\n          data = this.checkAndRepair(name, file, properties);\n          if (this.isOpenType) {\n            adjustWidths(properties);\n\n            type = \"OpenType\";\n          }\n          break;\n\n        default:\n          throw new FormatError(`Font ${type} is not supported`);\n      }\n    } catch (e) {\n      warn(e);\n      this.fallbackToSystemFont();\n      return;\n    }\n\n    this.data = data;\n    this.fontType = getFontType(type, subtype);\n\n    // Transfer some properties again that could change during font conversion\n    this.fontMatrix = properties.fontMatrix;\n    this.widths = properties.widths;\n    this.defaultWidth = properties.defaultWidth;\n    this.toUnicode = properties.toUnicode;\n    this.seacMap = properties.seacMap;\n  }\n\n  function int16(b0, b1) {\n    return (b0 << 8) + b1;\n  }\n\n  function writeSignedInt16(bytes, index, value) {\n    bytes[index + 1] = value;\n    bytes[index] = value >>> 8;\n  }\n\n  function signedInt16(b0, b1) {\n    var value = (b0 << 8) + b1;\n    return value & (1 << 15) ? value - 0x10000 : value;\n  }\n\n  function int32(b0, b1, b2, b3) {\n    return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n  }\n\n  function string16(value) {\n    return String.fromCharCode((value >> 8) & 0xff, value & 0xff);\n  }\n\n  function safeString16(value) {\n    // clamp value to the 16-bit int range\n    if (value > 0x7fff) {\n      value = 0x7fff;\n    } else if (value < -0x8000) {\n      value = -0x8000;\n    }\n    return String.fromCharCode((value >> 8) & 0xff, value & 0xff);\n  }\n\n  function isTrueTypeFile(file) {\n    var header = file.peekBytes(4);\n    return (\n      readUint32(header, 0) === 0x00010000 || bytesToString(header) === \"true\"\n    );\n  }\n\n  function isTrueTypeCollectionFile(file) {\n    const header = file.peekBytes(4);\n    return bytesToString(header) === \"ttcf\";\n  }\n\n  function isOpenTypeFile(file) {\n    var header = file.peekBytes(4);\n    return bytesToString(header) === \"OTTO\";\n  }\n\n  function isType1File(file) {\n    var header = file.peekBytes(2);\n    // All Type1 font programs must begin with the comment '%!' (0x25 + 0x21).\n    if (header[0] === 0x25 && header[1] === 0x21) {\n      return true;\n    }\n    // ... obviously some fonts violate that part of the specification,\n    // please refer to the comment in |Type1Font| below (pfb file header).\n    if (header[0] === 0x80 && header[1] === 0x01) {\n      return true;\n    }\n    return false;\n  }\n\n  /**\n   * Compared to other font formats, the header in CFF files is not constant\n   * but contains version numbers. To reduce the possibility of misclassifying\n   * font files as CFF, it's recommended to check for other font formats first.\n   */\n  function isCFFFile(file) {\n    const header = file.peekBytes(4);\n    if (\n      /* major version, [1, 255] */ header[0] >= 1 &&\n      /* minor version, [0, 255]; header[1] */\n      /* header size, [0, 255]; header[2] */\n      /* offset(0) size, [1, 4] */ header[3] >= 1 &&\n      header[3] <= 4\n    ) {\n      return true;\n    }\n    return false;\n  }\n\n  function getFontFileType(file, { type, subtype, composite }) {\n    let fileType, fileSubtype;\n\n    if (isTrueTypeFile(file) || isTrueTypeCollectionFile(file)) {\n      if (composite) {\n        fileType = \"CIDFontType2\";\n      } else {\n        fileType = \"TrueType\";\n      }\n    } else if (isOpenTypeFile(file)) {\n      if (composite) {\n        fileType = \"CIDFontType2\";\n      } else {\n        fileType = \"OpenType\";\n      }\n    } else if (isType1File(file)) {\n      if (composite) {\n        fileType = \"CIDFontType0\";\n      } else {\n        fileType = type === \"MMType1\" ? \"MMType1\" : \"Type1\";\n      }\n    } else if (isCFFFile(file)) {\n      if (composite) {\n        fileType = \"CIDFontType0\";\n        fileSubtype = \"CIDFontType0C\";\n      } else {\n        fileType = type === \"MMType1\" ? \"MMType1\" : \"Type1\";\n        fileSubtype = \"Type1C\";\n      }\n    } else {\n      warn(\"getFontFileType: Unable to detect correct font file Type/Subtype.\");\n      fileType = type;\n      fileSubtype = subtype;\n    }\n\n    return [fileType, fileSubtype];\n  }\n\n  function buildToFontChar(encoding, glyphsUnicodeMap, differences) {\n    var toFontChar = [],\n      unicode;\n    for (var i = 0, ii = encoding.length; i < ii; i++) {\n      unicode = getUnicodeForGlyph(encoding[i], glyphsUnicodeMap);\n      if (unicode !== -1) {\n        toFontChar[i] = unicode;\n      }\n    }\n    for (var charCode in differences) {\n      unicode = getUnicodeForGlyph(differences[charCode], glyphsUnicodeMap);\n      if (unicode !== -1) {\n        toFontChar[+charCode] = unicode;\n      }\n    }\n    return toFontChar;\n  }\n\n  /**\n   * Rebuilds the char code to glyph ID map by moving all char codes to the\n   * private use area. This is done to avoid issues with various problematic\n   * unicode areas where either a glyph won't be drawn or is deformed by a\n   * shaper.\n   * @returns {Object} Two properties:\n   * 'toFontChar' - maps original char codes(the value that will be read\n   * from commands such as show text) to the char codes that will be used in the\n   * font that we build\n   * 'charCodeToGlyphId' - maps the new font char codes to glyph ids\n   */\n  function adjustMapping(charCodeToGlyphId, hasGlyph, newGlyphZeroId) {\n    var newMap = Object.create(null);\n    var toFontChar = [];\n    var privateUseAreaIndex = 0;\n    var nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\n    var privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n    for (var originalCharCode in charCodeToGlyphId) {\n      originalCharCode |= 0;\n      var glyphId = charCodeToGlyphId[originalCharCode];\n      // For missing glyphs don't create the mappings so the glyph isn't\n      // drawn.\n      if (!hasGlyph(glyphId)) {\n        continue;\n      }\n      if (nextAvailableFontCharCode > privateUseOffetEnd) {\n        privateUseAreaIndex++;\n        if (privateUseAreaIndex >= PRIVATE_USE_AREAS.length) {\n          warn(\"Ran out of space in font private use area.\");\n          break;\n        }\n        nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\n        privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n      }\n      var fontCharCode = nextAvailableFontCharCode++;\n      if (glyphId === 0) {\n        glyphId = newGlyphZeroId;\n      }\n\n      newMap[fontCharCode] = glyphId;\n      toFontChar[originalCharCode] = fontCharCode;\n    }\n    return {\n      toFontChar,\n      charCodeToGlyphId: newMap,\n      nextAvailableFontCharCode,\n    };\n  }\n\n  function getRanges(glyphs, numGlyphs) {\n    // Array.sort() sorts by characters, not numerically, so convert to an\n    // array of characters.\n    var codes = [];\n    for (var charCode in glyphs) {\n      // Remove an invalid glyph ID mappings to make OTS happy.\n      if (glyphs[charCode] >= numGlyphs) {\n        continue;\n      }\n      codes.push({ fontCharCode: charCode | 0, glyphId: glyphs[charCode] });\n    }\n    // Some fonts have zero glyphs and are used only for text selection, but\n    // there needs to be at least one to build a valid cmap table.\n    if (codes.length === 0) {\n      codes.push({ fontCharCode: 0, glyphId: 0 });\n    }\n    codes.sort(function fontGetRangesSort(a, b) {\n      return a.fontCharCode - b.fontCharCode;\n    });\n\n    // Split the sorted codes into ranges.\n    var ranges = [];\n    var length = codes.length;\n    for (var n = 0; n < length; ) {\n      var start = codes[n].fontCharCode;\n      var codeIndices = [codes[n].glyphId];\n      ++n;\n      var end = start;\n      while (n < length && end + 1 === codes[n].fontCharCode) {\n        codeIndices.push(codes[n].glyphId);\n        ++end;\n        ++n;\n        if (end === 0xffff) {\n          break;\n        }\n      }\n      ranges.push([start, end, codeIndices]);\n    }\n\n    return ranges;\n  }\n\n  function createCmapTable(glyphs, numGlyphs) {\n    var ranges = getRanges(glyphs, numGlyphs);\n    var numTables = ranges[ranges.length - 1][1] > 0xffff ? 2 : 1;\n    var cmap =\n      \"\\x00\\x00\" + // version\n      string16(numTables) + // numTables\n      \"\\x00\\x03\" + // platformID\n      \"\\x00\\x01\" + // encodingID\n      string32(4 + numTables * 8); // start of the table record\n\n    var i, ii, j, jj;\n    for (i = ranges.length - 1; i >= 0; --i) {\n      if (ranges[i][0] <= 0xffff) {\n        break;\n      }\n    }\n    var bmpLength = i + 1;\n\n    if (ranges[i][0] < 0xffff && ranges[i][1] === 0xffff) {\n      ranges[i][1] = 0xfffe;\n    }\n    var trailingRangesCount = ranges[i][1] < 0xffff ? 1 : 0;\n    var segCount = bmpLength + trailingRangesCount;\n    var searchParams = OpenTypeFileBuilder.getSearchParams(segCount, 2);\n\n    // Fill up the 4 parallel arrays describing the segments.\n    var startCount = \"\";\n    var endCount = \"\";\n    var idDeltas = \"\";\n    var idRangeOffsets = \"\";\n    var glyphsIds = \"\";\n    var bias = 0;\n\n    var range, start, end, codes;\n    for (i = 0, ii = bmpLength; i < ii; i++) {\n      range = ranges[i];\n      start = range[0];\n      end = range[1];\n      startCount += string16(start);\n      endCount += string16(end);\n      codes = range[2];\n      var contiguous = true;\n      for (j = 1, jj = codes.length; j < jj; ++j) {\n        if (codes[j] !== codes[j - 1] + 1) {\n          contiguous = false;\n          break;\n        }\n      }\n      if (!contiguous) {\n        var offset = (segCount - i) * 2 + bias * 2;\n        bias += end - start + 1;\n\n        idDeltas += string16(0);\n        idRangeOffsets += string16(offset);\n\n        for (j = 0, jj = codes.length; j < jj; ++j) {\n          glyphsIds += string16(codes[j]);\n        }\n      } else {\n        var startCode = codes[0];\n\n        idDeltas += string16((startCode - start) & 0xffff);\n        idRangeOffsets += string16(0);\n      }\n    }\n\n    if (trailingRangesCount > 0) {\n      endCount += \"\\xFF\\xFF\";\n      startCount += \"\\xFF\\xFF\";\n      idDeltas += \"\\x00\\x01\";\n      idRangeOffsets += \"\\x00\\x00\";\n    }\n\n    var format314 =\n      \"\\x00\\x00\" + // language\n      string16(2 * segCount) +\n      string16(searchParams.range) +\n      string16(searchParams.entry) +\n      string16(searchParams.rangeShift) +\n      endCount +\n      \"\\x00\\x00\" +\n      startCount +\n      idDeltas +\n      idRangeOffsets +\n      glyphsIds;\n\n    var format31012 = \"\";\n    var header31012 = \"\";\n    if (numTables > 1) {\n      cmap +=\n        \"\\x00\\x03\" + // platformID\n        \"\\x00\\x0A\" + // encodingID\n        string32(4 + numTables * 8 + 4 + format314.length); // start of the table record\n      format31012 = \"\";\n      for (i = 0, ii = ranges.length; i < ii; i++) {\n        range = ranges[i];\n        start = range[0];\n        codes = range[2];\n        var code = codes[0];\n        for (j = 1, jj = codes.length; j < jj; ++j) {\n          if (codes[j] !== codes[j - 1] + 1) {\n            end = range[0] + j - 1;\n            format31012 +=\n              string32(start) + // startCharCode\n              string32(end) + // endCharCode\n              string32(code); // startGlyphID\n            start = end + 1;\n            code = codes[j];\n          }\n        }\n        format31012 +=\n          string32(start) + // startCharCode\n          string32(range[1]) + // endCharCode\n          string32(code); // startGlyphID\n      }\n      header31012 =\n        \"\\x00\\x0C\" + // format\n        \"\\x00\\x00\" + // reserved\n        string32(format31012.length + 16) + // length\n        \"\\x00\\x00\\x00\\x00\" + // language\n        string32(format31012.length / 12); // nGroups\n    }\n\n    return (\n      cmap +\n      \"\\x00\\x04\" + // format\n      string16(format314.length + 4) + // length\n      format314 +\n      header31012 +\n      format31012\n    );\n  }\n\n  function validateOS2Table(os2, file) {\n    file.pos = (file.start || 0) + os2.offset;\n    var version = file.getUint16();\n    // TODO verify all OS/2 tables fields, but currently we validate only those\n    // that give us issues\n    file.skip(60); // skipping type, misc sizes, panose, unicode ranges\n    var selection = file.getUint16();\n    if (version < 4 && selection & 0x0300) {\n      return false;\n    }\n    var firstChar = file.getUint16();\n    var lastChar = file.getUint16();\n    if (firstChar > lastChar) {\n      return false;\n    }\n    file.skip(6); // skipping sTypoAscender/Descender/LineGap\n    var usWinAscent = file.getUint16();\n    if (usWinAscent === 0) {\n      // makes font unreadable by windows\n      return false;\n    }\n\n    // OS/2 appears to be valid, resetting some fields\n    os2.data[8] = os2.data[9] = 0; // IE rejects fonts if fsType != 0\n    return true;\n  }\n\n  function createOS2Table(properties, charstrings, override) {\n    override = override || {\n      unitsPerEm: 0,\n      yMax: 0,\n      yMin: 0,\n      ascent: 0,\n      descent: 0,\n    };\n\n    var ulUnicodeRange1 = 0;\n    var ulUnicodeRange2 = 0;\n    var ulUnicodeRange3 = 0;\n    var ulUnicodeRange4 = 0;\n\n    var firstCharIndex = null;\n    var lastCharIndex = 0;\n\n    if (charstrings) {\n      for (var code in charstrings) {\n        code |= 0;\n        if (firstCharIndex > code || !firstCharIndex) {\n          firstCharIndex = code;\n        }\n        if (lastCharIndex < code) {\n          lastCharIndex = code;\n        }\n\n        var position = getUnicodeRangeFor(code);\n        if (position < 32) {\n          ulUnicodeRange1 |= 1 << position;\n        } else if (position < 64) {\n          ulUnicodeRange2 |= 1 << (position - 32);\n        } else if (position < 96) {\n          ulUnicodeRange3 |= 1 << (position - 64);\n        } else if (position < 123) {\n          ulUnicodeRange4 |= 1 << (position - 96);\n        } else {\n          throw new FormatError(\n            \"Unicode ranges Bits > 123 are reserved for internal usage\"\n          );\n        }\n      }\n      if (lastCharIndex > 0xffff) {\n        // OS2 only supports a 16 bit int. The spec says if supplementary\n        // characters are used the field should just be set to 0xFFFF.\n        lastCharIndex = 0xffff;\n      }\n    } else {\n      // TODO\n      firstCharIndex = 0;\n      lastCharIndex = 255;\n    }\n\n    var bbox = properties.bbox || [0, 0, 0, 0];\n    var unitsPerEm =\n      override.unitsPerEm ||\n      1 / (properties.fontMatrix || FONT_IDENTITY_MATRIX)[0];\n\n    // if the font units differ to the PDF glyph space units\n    // then scale up the values\n    var scale = properties.ascentScaled\n      ? 1.0\n      : unitsPerEm / PDF_GLYPH_SPACE_UNITS;\n\n    var typoAscent =\n      override.ascent || Math.round(scale * (properties.ascent || bbox[3]));\n    var typoDescent =\n      override.descent || Math.round(scale * (properties.descent || bbox[1]));\n    if (typoDescent > 0 && properties.descent > 0 && bbox[1] < 0) {\n      typoDescent = -typoDescent; // fixing incorrect descent\n    }\n    var winAscent = override.yMax || typoAscent;\n    var winDescent = -override.yMin || -typoDescent;\n\n    return (\n      \"\\x00\\x03\" + // version\n      \"\\x02\\x24\" + // xAvgCharWidth\n      \"\\x01\\xF4\" + // usWeightClass\n      \"\\x00\\x05\" + // usWidthClass\n      \"\\x00\\x00\" + // fstype (0 to let the font loads via font-face on IE)\n      \"\\x02\\x8A\" + // ySubscriptXSize\n      \"\\x02\\xBB\" + // ySubscriptYSize\n      \"\\x00\\x00\" + // ySubscriptXOffset\n      \"\\x00\\x8C\" + // ySubscriptYOffset\n      \"\\x02\\x8A\" + // ySuperScriptXSize\n      \"\\x02\\xBB\" + // ySuperScriptYSize\n      \"\\x00\\x00\" + // ySuperScriptXOffset\n      \"\\x01\\xDF\" + // ySuperScriptYOffset\n      \"\\x00\\x31\" + // yStrikeOutSize\n      \"\\x01\\x02\" + // yStrikeOutPosition\n      \"\\x00\\x00\" + // sFamilyClass\n      \"\\x00\\x00\\x06\" +\n      String.fromCharCode(properties.fixedPitch ? 0x09 : 0x00) +\n      \"\\x00\\x00\\x00\\x00\\x00\\x00\" + // Panose\n      string32(ulUnicodeRange1) + // ulUnicodeRange1 (Bits 0-31)\n      string32(ulUnicodeRange2) + // ulUnicodeRange2 (Bits 32-63)\n      string32(ulUnicodeRange3) + // ulUnicodeRange3 (Bits 64-95)\n      string32(ulUnicodeRange4) + // ulUnicodeRange4 (Bits 96-127)\n      \"\\x2A\\x32\\x31\\x2A\" + // achVendID\n      string16(properties.italicAngle ? 1 : 0) + // fsSelection\n      string16(firstCharIndex || properties.firstChar) + // usFirstCharIndex\n      string16(lastCharIndex || properties.lastChar) + // usLastCharIndex\n      string16(typoAscent) + // sTypoAscender\n      string16(typoDescent) + // sTypoDescender\n      \"\\x00\\x64\" + // sTypoLineGap (7%-10% of the unitsPerEM value)\n      string16(winAscent) + // usWinAscent\n      string16(winDescent) + // usWinDescent\n      \"\\x00\\x00\\x00\\x00\" + // ulCodePageRange1 (Bits 0-31)\n      \"\\x00\\x00\\x00\\x00\" + // ulCodePageRange2 (Bits 32-63)\n      string16(properties.xHeight) + // sxHeight\n      string16(properties.capHeight) + // sCapHeight\n      string16(0) + // usDefaultChar\n      string16(firstCharIndex || properties.firstChar) + // usBreakChar\n      \"\\x00\\x03\"\n    ); // usMaxContext\n  }\n\n  function createPostTable(properties) {\n    var angle = Math.floor(properties.italicAngle * 2 ** 16);\n    return (\n      \"\\x00\\x03\\x00\\x00\" + // Version number\n      string32(angle) + // italicAngle\n      \"\\x00\\x00\" + // underlinePosition\n      \"\\x00\\x00\" + // underlineThickness\n      string32(properties.fixedPitch) + // isFixedPitch\n      \"\\x00\\x00\\x00\\x00\" + // minMemType42\n      \"\\x00\\x00\\x00\\x00\" + // maxMemType42\n      \"\\x00\\x00\\x00\\x00\" + // minMemType1\n      \"\\x00\\x00\\x00\\x00\"\n    ); // maxMemType1\n  }\n\n  function createNameTable(name, proto) {\n    if (!proto) {\n      proto = [[], []]; // no strings and unicode strings\n    }\n\n    var strings = [\n      proto[0][0] || \"Original licence\", // 0.Copyright\n      proto[0][1] || name, // 1.Font family\n      proto[0][2] || \"Unknown\", // 2.Font subfamily (font weight)\n      proto[0][3] || \"uniqueID\", // 3.Unique ID\n      proto[0][4] || name, // 4.Full font name\n      proto[0][5] || \"Version 0.11\", // 5.Version\n      proto[0][6] || \"\", // 6.Postscript name\n      proto[0][7] || \"Unknown\", // 7.Trademark\n      proto[0][8] || \"Unknown\", // 8.Manufacturer\n      proto[0][9] || \"Unknown\", // 9.Designer\n    ];\n\n    // Mac want 1-byte per character strings while Windows want\n    // 2-bytes per character, so duplicate the names table\n    var stringsUnicode = [];\n    var i, ii, j, jj, str;\n    for (i = 0, ii = strings.length; i < ii; i++) {\n      str = proto[1][i] || strings[i];\n\n      var strBufUnicode = [];\n      for (j = 0, jj = str.length; j < jj; j++) {\n        strBufUnicode.push(string16(str.charCodeAt(j)));\n      }\n      stringsUnicode.push(strBufUnicode.join(\"\"));\n    }\n\n    var names = [strings, stringsUnicode];\n    var platforms = [\"\\x00\\x01\", \"\\x00\\x03\"];\n    var encodings = [\"\\x00\\x00\", \"\\x00\\x01\"];\n    var languages = [\"\\x00\\x00\", \"\\x04\\x09\"];\n\n    var namesRecordCount = strings.length * platforms.length;\n    var nameTable =\n      \"\\x00\\x00\" + // format\n      string16(namesRecordCount) + // Number of names Record\n      string16(namesRecordCount * 12 + 6); // Storage\n\n    // Build the name records field\n    var strOffset = 0;\n    for (i = 0, ii = platforms.length; i < ii; i++) {\n      var strs = names[i];\n      for (j = 0, jj = strs.length; j < jj; j++) {\n        str = strs[j];\n        var nameRecord =\n          platforms[i] + // platform ID\n          encodings[i] + // encoding ID\n          languages[i] + // language ID\n          string16(j) + // name ID\n          string16(str.length) +\n          string16(strOffset);\n        nameTable += nameRecord;\n        strOffset += str.length;\n      }\n    }\n\n    nameTable += strings.join(\"\") + stringsUnicode.join(\"\");\n    return nameTable;\n  }\n\n  Font.prototype = {\n    name: null,\n    font: null,\n    mimetype: null,\n    disableFontFace: false,\n\n    get renderer() {\n      var renderer = FontRendererFactory.create(this, SEAC_ANALYSIS_ENABLED);\n      return shadow(this, \"renderer\", renderer);\n    },\n\n    exportData(extraProperties = false) {\n      const exportDataProperties = extraProperties\n        ? [...EXPORT_DATA_PROPERTIES, ...EXPORT_DATA_EXTRA_PROPERTIES]\n        : EXPORT_DATA_PROPERTIES;\n\n      const data = Object.create(null);\n      let property, value;\n      for (property of exportDataProperties) {\n        value = this[property];\n        // Ignore properties that haven't been explicitly set.\n        if (value !== undefined) {\n          data[property] = value;\n        }\n      }\n      return data;\n    },\n\n    fallbackToSystemFont: function Font_fallbackToSystemFont() {\n      this.missingFile = true;\n      // The file data is not specified. Trying to fix the font name\n      // to be used with the canvas.font.\n      var name = this.name;\n      var type = this.type;\n      var subtype = this.subtype;\n      let fontName = name.replace(/[,_]/g, \"-\").replace(/\\s/g, \"\");\n      var stdFontMap = getStdFontMap(),\n        nonStdFontMap = getNonStdFontMap();\n      var isStandardFont =\n        !!stdFontMap[fontName] ||\n        !!(nonStdFontMap[fontName] && stdFontMap[nonStdFontMap[fontName]]);\n      fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName;\n\n      this.bold = fontName.search(/bold/gi) !== -1;\n      this.italic =\n        fontName.search(/oblique/gi) !== -1 ||\n        fontName.search(/italic/gi) !== -1;\n\n      // Use 'name' instead of 'fontName' here because the original\n      // name ArialBlack for example will be replaced by Helvetica.\n      this.black = name.search(/Black/g) !== -1;\n\n      // if at least one width is present, remeasure all chars when exists\n      this.remeasure = Object.keys(this.widths).length > 0;\n      if (\n        isStandardFont &&\n        type === \"CIDFontType2\" &&\n        this.cidEncoding.startsWith(\"Identity-\")\n      ) {\n        const GlyphMapForStandardFonts = getGlyphMapForStandardFonts();\n        // Standard fonts might be embedded as CID font without glyph mapping.\n        // Building one based on GlyphMapForStandardFonts.\n        const map = [];\n        for (const charCode in GlyphMapForStandardFonts) {\n          map[+charCode] = GlyphMapForStandardFonts[charCode];\n        }\n        if (/Arial-?Black/i.test(name)) {\n          var SupplementalGlyphMapForArialBlack = getSupplementalGlyphMapForArialBlack();\n          for (const charCode in SupplementalGlyphMapForArialBlack) {\n            map[+charCode] = SupplementalGlyphMapForArialBlack[charCode];\n          }\n        } else if (/Calibri/i.test(name)) {\n          const SupplementalGlyphMapForCalibri = getSupplementalGlyphMapForCalibri();\n          for (const charCode in SupplementalGlyphMapForCalibri) {\n            map[+charCode] = SupplementalGlyphMapForCalibri[charCode];\n          }\n        }\n\n        var isIdentityUnicode = this.toUnicode instanceof IdentityToUnicodeMap;\n        if (!isIdentityUnicode) {\n          this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n            map[+charCode] = unicodeCharCode;\n          });\n        }\n        this.toFontChar = map;\n        this.toUnicode = new ToUnicodeMap(map);\n      } else if (/Symbol/i.test(fontName)) {\n        this.toFontChar = buildToFontChar(\n          SymbolSetEncoding,\n          getGlyphsUnicode(),\n          this.differences\n        );\n      } else if (/Dingbats/i.test(fontName)) {\n        if (/Wingdings/i.test(name)) {\n          warn(\"Non-embedded Wingdings font, falling back to ZapfDingbats.\");\n        }\n        this.toFontChar = buildToFontChar(\n          ZapfDingbatsEncoding,\n          getDingbatsGlyphsUnicode(),\n          this.differences\n        );\n      } else if (isStandardFont) {\n        this.toFontChar = buildToFontChar(\n          this.defaultEncoding,\n          getGlyphsUnicode(),\n          this.differences\n        );\n      } else {\n        const glyphsUnicodeMap = getGlyphsUnicode();\n        const map = [];\n        this.toUnicode.forEach((charCode, unicodeCharCode) => {\n          if (!this.composite) {\n            var glyphName =\n              this.differences[charCode] || this.defaultEncoding[charCode];\n            const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n            if (unicode !== -1) {\n              unicodeCharCode = unicode;\n            }\n          }\n          map[+charCode] = unicodeCharCode;\n        });\n\n        // Attempt to improve the glyph mapping for (some) composite fonts that\n        // appear to lack meaningful ToUnicode data.\n        if (this.composite && this.toUnicode instanceof IdentityToUnicodeMap) {\n          if (/Verdana/i.test(name)) {\n            // Fixes issue11242_reduced.pdf\n            const GlyphMapForStandardFonts = getGlyphMapForStandardFonts();\n            for (const charCode in GlyphMapForStandardFonts) {\n              map[+charCode] = GlyphMapForStandardFonts[charCode];\n            }\n          }\n        }\n        this.toFontChar = map;\n      }\n      this.loadedName = fontName.split(\"-\")[0];\n      this.fontType = getFontType(type, subtype);\n    },\n\n    checkAndRepair: function Font_checkAndRepair(name, font, properties) {\n      const VALID_TABLES = [\n        \"OS/2\",\n        \"cmap\",\n        \"head\",\n        \"hhea\",\n        \"hmtx\",\n        \"maxp\",\n        \"name\",\n        \"post\",\n        \"loca\",\n        \"glyf\",\n        \"fpgm\",\n        \"prep\",\n        \"cvt \",\n        \"CFF \",\n      ];\n\n      function readTables(file, numTables) {\n        const tables = Object.create(null);\n        tables[\"OS/2\"] = null;\n        tables.cmap = null;\n        tables.head = null;\n        tables.hhea = null;\n        tables.hmtx = null;\n        tables.maxp = null;\n        tables.name = null;\n        tables.post = null;\n\n        for (let i = 0; i < numTables; i++) {\n          const table = readTableEntry(file);\n          if (!VALID_TABLES.includes(table.tag)) {\n            continue; // skipping table if it's not a required or optional table\n          }\n          if (table.length === 0) {\n            continue; // skipping empty tables\n          }\n          tables[table.tag] = table;\n        }\n        return tables;\n      }\n\n      function readTableEntry(file) {\n        var tag = bytesToString(file.getBytes(4));\n\n        var checksum = file.getInt32() >>> 0;\n        var offset = file.getInt32() >>> 0;\n        var length = file.getInt32() >>> 0;\n\n        // Read the table associated data\n        var previousPosition = file.pos;\n        file.pos = file.start ? file.start : 0;\n        file.skip(offset);\n        var data = file.getBytes(length);\n        file.pos = previousPosition;\n\n        if (tag === \"head\") {\n          // clearing checksum adjustment\n          data[8] = data[9] = data[10] = data[11] = 0;\n          data[17] |= 0x20; // Set font optimized for cleartype flag.\n        }\n\n        return {\n          tag,\n          checksum,\n          length,\n          offset,\n          data,\n        };\n      }\n\n      function readOpenTypeHeader(ttf) {\n        return {\n          version: bytesToString(ttf.getBytes(4)),\n          numTables: ttf.getUint16(),\n          searchRange: ttf.getUint16(),\n          entrySelector: ttf.getUint16(),\n          rangeShift: ttf.getUint16(),\n        };\n      }\n\n      function readTrueTypeCollectionHeader(ttc) {\n        const ttcTag = bytesToString(ttc.getBytes(4));\n        assert(ttcTag === \"ttcf\", \"Must be a TrueType Collection font.\");\n\n        const majorVersion = ttc.getUint16();\n        const minorVersion = ttc.getUint16();\n        const numFonts = ttc.getInt32() >>> 0;\n        const offsetTable = [];\n        for (let i = 0; i < numFonts; i++) {\n          offsetTable.push(ttc.getInt32() >>> 0);\n        }\n\n        const header = {\n          ttcTag,\n          majorVersion,\n          minorVersion,\n          numFonts,\n          offsetTable,\n        };\n        switch (majorVersion) {\n          case 1:\n            return header;\n          case 2:\n            header.dsigTag = ttc.getInt32() >>> 0;\n            header.dsigLength = ttc.getInt32() >>> 0;\n            header.dsigOffset = ttc.getInt32() >>> 0;\n            return header;\n        }\n        throw new FormatError(\n          `Invalid TrueType Collection majorVersion: ${majorVersion}.`\n        );\n      }\n\n      function readTrueTypeCollectionData(ttc, fontName) {\n        const { numFonts, offsetTable } = readTrueTypeCollectionHeader(ttc);\n\n        for (let i = 0; i < numFonts; i++) {\n          ttc.pos = (ttc.start || 0) + offsetTable[i];\n          const potentialHeader = readOpenTypeHeader(ttc);\n          const potentialTables = readTables(ttc, potentialHeader.numTables);\n\n          if (!potentialTables.name) {\n            throw new FormatError(\n              'TrueType Collection font must contain a \"name\" table.'\n            );\n          }\n          const nameTable = readNameTable(potentialTables.name);\n\n          for (let j = 0, jj = nameTable.length; j < jj; j++) {\n            for (let k = 0, kk = nameTable[j].length; k < kk; k++) {\n              const nameEntry = nameTable[j][k];\n              if (nameEntry && nameEntry.replace(/\\s/g, \"\") === fontName) {\n                return {\n                  header: potentialHeader,\n                  tables: potentialTables,\n                };\n              }\n            }\n          }\n        }\n        throw new FormatError(\n          `TrueType Collection does not contain \"${fontName}\" font.`\n        );\n      }\n\n      /**\n       * Read the appropriate subtable from the cmap according to 9.6.6.4 from\n       * PDF spec\n       */\n      function readCmapTable(cmap, file, isSymbolicFont, hasEncoding) {\n        if (!cmap) {\n          warn(\"No cmap table available.\");\n          return {\n            platformId: -1,\n            encodingId: -1,\n            mappings: [],\n            hasShortCmap: false,\n          };\n        }\n        var segment;\n        var start = (file.start ? file.start : 0) + cmap.offset;\n        file.pos = start;\n\n        file.skip(2); // version\n        var numTables = file.getUint16();\n\n        var potentialTable;\n        var canBreak = false;\n        // There's an order of preference in terms of which cmap subtable to\n        // use:\n        // - non-symbolic fonts the preference is a 3,1 table then a 1,0 table\n        // - symbolic fonts the preference is a 3,0 table then a 1,0 table\n        // The following takes advantage of the fact that the tables are sorted\n        // to work.\n        for (var i = 0; i < numTables; i++) {\n          var platformId = file.getUint16();\n          var encodingId = file.getUint16();\n          var offset = file.getInt32() >>> 0;\n          var useTable = false;\n\n          // Sometimes there are multiple of the same type of table. Default\n          // to choosing the first table and skip the rest.\n          if (\n            potentialTable &&\n            potentialTable.platformId === platformId &&\n            potentialTable.encodingId === encodingId\n          ) {\n            continue;\n          }\n\n          if (\n            platformId === 0 &&\n            (encodingId === /* Unicode Default */ 0 ||\n              encodingId === /* Unicode 1.1 */ 1 ||\n              encodingId === /* Unicode BMP */ 3)\n          ) {\n            useTable = true;\n            // Continue the loop since there still may be a higher priority\n            // table.\n          } else if (platformId === 1 && encodingId === 0) {\n            useTable = true;\n            // Continue the loop since there still may be a higher priority\n            // table.\n          } else if (\n            platformId === 3 &&\n            encodingId === 1 &&\n            (hasEncoding || !potentialTable)\n          ) {\n            useTable = true;\n            if (!isSymbolicFont) {\n              canBreak = true;\n            }\n          } else if (isSymbolicFont && platformId === 3 && encodingId === 0) {\n            useTable = true;\n            canBreak = true;\n          }\n\n          if (useTable) {\n            potentialTable = {\n              platformId,\n              encodingId,\n              offset,\n            };\n          }\n          if (canBreak) {\n            break;\n          }\n        }\n\n        if (potentialTable) {\n          file.pos = start + potentialTable.offset;\n        }\n        if (!potentialTable || file.peekByte() === -1) {\n          warn(\"Could not find a preferred cmap table.\");\n          return {\n            platformId: -1,\n            encodingId: -1,\n            mappings: [],\n            hasShortCmap: false,\n          };\n        }\n\n        var format = file.getUint16();\n        file.skip(2 + 2); // length + language\n\n        var hasShortCmap = false;\n        var mappings = [];\n        var j, glyphId;\n\n        // TODO(mack): refactor this cmap subtable reading logic out\n        if (format === 0) {\n          for (j = 0; j < 256; j++) {\n            var index = file.getByte();\n            if (!index) {\n              continue;\n            }\n            mappings.push({\n              charCode: j,\n              glyphId: index,\n            });\n          }\n          hasShortCmap = true;\n        } else if (format === 4) {\n          // re-creating the table in format 4 since the encoding\n          // might be changed\n          var segCount = file.getUint16() >> 1;\n          file.skip(6); // skipping range fields\n          var segIndex,\n            segments = [];\n          for (segIndex = 0; segIndex < segCount; segIndex++) {\n            segments.push({ end: file.getUint16() });\n          }\n          file.skip(2);\n          for (segIndex = 0; segIndex < segCount; segIndex++) {\n            segments[segIndex].start = file.getUint16();\n          }\n\n          for (segIndex = 0; segIndex < segCount; segIndex++) {\n            segments[segIndex].delta = file.getUint16();\n          }\n\n          var offsetsCount = 0;\n          for (segIndex = 0; segIndex < segCount; segIndex++) {\n            segment = segments[segIndex];\n            var rangeOffset = file.getUint16();\n            if (!rangeOffset) {\n              segment.offsetIndex = -1;\n              continue;\n            }\n\n            var offsetIndex = (rangeOffset >> 1) - (segCount - segIndex);\n            segment.offsetIndex = offsetIndex;\n            offsetsCount = Math.max(\n              offsetsCount,\n              offsetIndex + segment.end - segment.start + 1\n            );\n          }\n\n          var offsets = [];\n          for (j = 0; j < offsetsCount; j++) {\n            offsets.push(file.getUint16());\n          }\n\n          for (segIndex = 0; segIndex < segCount; segIndex++) {\n            segment = segments[segIndex];\n            start = segment.start;\n            var end = segment.end;\n            var delta = segment.delta;\n            offsetIndex = segment.offsetIndex;\n\n            for (j = start; j <= end; j++) {\n              if (j === 0xffff) {\n                continue;\n              }\n\n              glyphId = offsetIndex < 0 ? j : offsets[offsetIndex + j - start];\n              glyphId = (glyphId + delta) & 0xffff;\n              mappings.push({\n                charCode: j,\n                glyphId,\n              });\n            }\n          }\n        } else if (format === 6) {\n          // Format 6 is a 2-bytes dense mapping, which means the font data\n          // lives glue together even if they are pretty far in the unicode\n          // table. (This looks weird, so I can have missed something), this\n          // works on Linux but seems to fails on Mac so let's rewrite the\n          // cmap table to a 3-1-4 style\n          var firstCode = file.getUint16();\n          var entryCount = file.getUint16();\n\n          for (j = 0; j < entryCount; j++) {\n            glyphId = file.getUint16();\n            var charCode = firstCode + j;\n\n            mappings.push({\n              charCode,\n              glyphId,\n            });\n          }\n        } else {\n          warn(\"cmap table has unsupported format: \" + format);\n          return {\n            platformId: -1,\n            encodingId: -1,\n            mappings: [],\n            hasShortCmap: false,\n          };\n        }\n\n        // removing duplicate entries\n        mappings.sort(function (a, b) {\n          return a.charCode - b.charCode;\n        });\n        for (i = 1; i < mappings.length; i++) {\n          if (mappings[i - 1].charCode === mappings[i].charCode) {\n            mappings.splice(i, 1);\n            i--;\n          }\n        }\n\n        return {\n          platformId: potentialTable.platformId,\n          encodingId: potentialTable.encodingId,\n          mappings,\n          hasShortCmap,\n        };\n      }\n\n      function sanitizeMetrics(\n        file,\n        header,\n        metrics,\n        numGlyphs,\n        dupFirstEntry\n      ) {\n        if (!header) {\n          if (metrics) {\n            metrics.data = null;\n          }\n          return;\n        }\n\n        file.pos = (file.start ? file.start : 0) + header.offset;\n        file.pos += 4; // version\n        file.pos += 2; // ascent\n        file.pos += 2; // descent\n        file.pos += 2; // linegap\n        file.pos += 2; // adv_width_max\n        file.pos += 2; // min_sb1\n        file.pos += 2; // min_sb2\n        file.pos += 2; // max_extent\n        file.pos += 2; // caret_slope_rise\n        file.pos += 2; // caret_slope_run\n        file.pos += 2; // caret_offset\n        file.pos += 8; // reserved\n        file.pos += 2; // format\n        var numOfMetrics = file.getUint16();\n\n        if (numOfMetrics > numGlyphs) {\n          info(\n            \"The numOfMetrics (\" +\n              numOfMetrics +\n              \") should not be \" +\n              \"greater than the numGlyphs (\" +\n              numGlyphs +\n              \")\"\n          );\n          // Reduce numOfMetrics if it is greater than numGlyphs\n          numOfMetrics = numGlyphs;\n          header.data[34] = (numOfMetrics & 0xff00) >> 8;\n          header.data[35] = numOfMetrics & 0x00ff;\n        }\n\n        var numOfSidebearings = numGlyphs - numOfMetrics;\n        var numMissing =\n          numOfSidebearings - ((metrics.length - numOfMetrics * 4) >> 1);\n\n        if (numMissing > 0) {\n          // For each missing glyph, we set both the width and lsb to 0 (zero).\n          // Since we need to add two properties for each glyph, this explains\n          // the use of |numMissing * 2| when initializing the typed array.\n          var entries = new Uint8Array(metrics.length + numMissing * 2);\n          entries.set(metrics.data);\n          if (dupFirstEntry) {\n            // Set the sidebearing value of the duplicated glyph.\n            entries[metrics.length] = metrics.data[2];\n            entries[metrics.length + 1] = metrics.data[3];\n          }\n          metrics.data = entries;\n        }\n      }\n\n      function sanitizeGlyph(\n        source,\n        sourceStart,\n        sourceEnd,\n        dest,\n        destStart,\n        hintsValid\n      ) {\n        var glyphProfile = {\n          length: 0,\n          sizeOfInstructions: 0,\n        };\n        if (sourceEnd - sourceStart <= 12) {\n          // glyph with data less than 12 is invalid one\n          return glyphProfile;\n        }\n        var glyf = source.subarray(sourceStart, sourceEnd);\n        var contoursCount = signedInt16(glyf[0], glyf[1]);\n        if (contoursCount < 0) {\n          // OTS doesn't like contour count to be less than -1.\n          contoursCount = -1;\n          writeSignedInt16(glyf, 0, contoursCount);\n          // complex glyph, writing as is\n          dest.set(glyf, destStart);\n          glyphProfile.length = glyf.length;\n          return glyphProfile;\n        }\n\n        var i,\n          j = 10,\n          flagsCount = 0;\n        for (i = 0; i < contoursCount; i++) {\n          var endPoint = (glyf[j] << 8) | glyf[j + 1];\n          flagsCount = endPoint + 1;\n          j += 2;\n        }\n        // skipping instructions\n        var instructionsStart = j;\n        var instructionsLength = (glyf[j] << 8) | glyf[j + 1];\n        glyphProfile.sizeOfInstructions = instructionsLength;\n        j += 2 + instructionsLength;\n        var instructionsEnd = j;\n        // validating flags\n        var coordinatesLength = 0;\n        for (i = 0; i < flagsCount; i++) {\n          var flag = glyf[j++];\n          if (flag & 0xc0) {\n            // reserved flags must be zero, cleaning up\n            glyf[j - 1] = flag & 0x3f;\n          }\n          let xLength = 2;\n          if (flag & 2) {\n            xLength = 1;\n          } else if (flag & 16) {\n            xLength = 0;\n          }\n          let yLength = 2;\n          if (flag & 4) {\n            yLength = 1;\n          } else if (flag & 32) {\n            yLength = 0;\n          }\n          const xyLength = xLength + yLength;\n          coordinatesLength += xyLength;\n          if (flag & 8) {\n            var repeat = glyf[j++];\n            i += repeat;\n            coordinatesLength += repeat * xyLength;\n          }\n        }\n        // glyph without coordinates will be rejected\n        if (coordinatesLength === 0) {\n          return glyphProfile;\n        }\n        var glyphDataLength = j + coordinatesLength;\n        if (glyphDataLength > glyf.length) {\n          // not enough data for coordinates\n          return glyphProfile;\n        }\n        if (!hintsValid && instructionsLength > 0) {\n          dest.set(glyf.subarray(0, instructionsStart), destStart);\n          dest.set([0, 0], destStart + instructionsStart);\n          dest.set(\n            glyf.subarray(instructionsEnd, glyphDataLength),\n            destStart + instructionsStart + 2\n          );\n          glyphDataLength -= instructionsLength;\n          if (glyf.length - glyphDataLength > 3) {\n            glyphDataLength = (glyphDataLength + 3) & ~3;\n          }\n          glyphProfile.length = glyphDataLength;\n          return glyphProfile;\n        }\n        if (glyf.length - glyphDataLength > 3) {\n          // truncating and aligning to 4 bytes the long glyph data\n          glyphDataLength = (glyphDataLength + 3) & ~3;\n          dest.set(glyf.subarray(0, glyphDataLength), destStart);\n          glyphProfile.length = glyphDataLength;\n          return glyphProfile;\n        }\n        // glyph data is fine\n        dest.set(glyf, destStart);\n        glyphProfile.length = glyf.length;\n        return glyphProfile;\n      }\n\n      function sanitizeHead(head, numGlyphs, locaLength) {\n        var data = head.data;\n\n        // Validate version:\n        // Should always be 0x00010000\n        var version = int32(data[0], data[1], data[2], data[3]);\n        if (version >> 16 !== 1) {\n          info(\"Attempting to fix invalid version in head table: \" + version);\n          data[0] = 0;\n          data[1] = 1;\n          data[2] = 0;\n          data[3] = 0;\n        }\n\n        var indexToLocFormat = int16(data[50], data[51]);\n        if (indexToLocFormat < 0 || indexToLocFormat > 1) {\n          info(\n            \"Attempting to fix invalid indexToLocFormat in head table: \" +\n              indexToLocFormat\n          );\n\n          // The value of indexToLocFormat should be 0 if the loca table\n          // consists of short offsets, and should be 1 if the loca table\n          // consists of long offsets.\n          //\n          // The number of entries in the loca table should be numGlyphs + 1.\n          //\n          // Using this information, we can work backwards to deduce if the\n          // size of each offset in the loca table, and thus figure out the\n          // appropriate value for indexToLocFormat.\n\n          var numGlyphsPlusOne = numGlyphs + 1;\n          if (locaLength === numGlyphsPlusOne << 1) {\n            // 0x0000 indicates the loca table consists of short offsets\n            data[50] = 0;\n            data[51] = 0;\n          } else if (locaLength === numGlyphsPlusOne << 2) {\n            // 0x0001 indicates the loca table consists of long offsets\n            data[50] = 0;\n            data[51] = 1;\n          } else {\n            throw new FormatError(\n              \"Could not fix indexToLocFormat: \" + indexToLocFormat\n            );\n          }\n        }\n      }\n\n      function sanitizeGlyphLocations(\n        loca,\n        glyf,\n        numGlyphs,\n        isGlyphLocationsLong,\n        hintsValid,\n        dupFirstEntry,\n        maxSizeOfInstructions\n      ) {\n        var itemSize, itemDecode, itemEncode;\n        if (isGlyphLocationsLong) {\n          itemSize = 4;\n          itemDecode = function fontItemDecodeLong(data, offset) {\n            return (\n              (data[offset] << 24) |\n              (data[offset + 1] << 16) |\n              (data[offset + 2] << 8) |\n              data[offset + 3]\n            );\n          };\n          itemEncode = function fontItemEncodeLong(data, offset, value) {\n            data[offset] = (value >>> 24) & 0xff;\n            data[offset + 1] = (value >> 16) & 0xff;\n            data[offset + 2] = (value >> 8) & 0xff;\n            data[offset + 3] = value & 0xff;\n          };\n        } else {\n          itemSize = 2;\n          itemDecode = function fontItemDecode(data, offset) {\n            return (data[offset] << 9) | (data[offset + 1] << 1);\n          };\n          itemEncode = function fontItemEncode(data, offset, value) {\n            data[offset] = (value >> 9) & 0xff;\n            data[offset + 1] = (value >> 1) & 0xff;\n          };\n        }\n        // The first glyph is duplicated.\n        var numGlyphsOut = dupFirstEntry ? numGlyphs + 1 : numGlyphs;\n        var locaDataSize = itemSize * (1 + numGlyphsOut);\n        // Resize loca table to account for duplicated glyph.\n        var locaData = new Uint8Array(locaDataSize);\n        locaData.set(loca.data.subarray(0, locaDataSize));\n        loca.data = locaData;\n        // removing the invalid glyphs\n        var oldGlyfData = glyf.data;\n        var oldGlyfDataLength = oldGlyfData.length;\n        var newGlyfData = new Uint8Array(oldGlyfDataLength);\n\n        // The spec says the offsets should be in ascending order, however\n        // this is not true for some fonts or they use the offset of 0 to mark a\n        // glyph as missing. OTS requires the offsets to be in order and not to\n        // be zero, so we must sort and rebuild the loca table and potentially\n        // re-arrange the glyf data.\n        var i, j;\n        const locaEntries = [];\n        // There are numGlyphs + 1 loca table entries.\n        for (i = 0, j = 0; i < numGlyphs + 1; i++, j += itemSize) {\n          let offset = itemDecode(locaData, j);\n          if (offset > oldGlyfDataLength) {\n            offset = oldGlyfDataLength;\n          }\n          locaEntries.push({\n            index: i,\n            offset,\n            endOffset: 0,\n          });\n        }\n        locaEntries.sort((a, b) => {\n          return a.offset - b.offset;\n        });\n        // Now the offsets are sorted, calculate the end offset of each glyph.\n        // The last loca entry's endOffset is not calculated since it's the end\n        // of the data and will be stored on the previous entry's endOffset.\n        for (i = 0; i < numGlyphs; i++) {\n          locaEntries[i].endOffset = locaEntries[i + 1].offset;\n        }\n        // Re-sort so glyphs aren't out of order.\n        locaEntries.sort((a, b) => {\n          return a.index - b.index;\n        });\n\n        var missingGlyphs = Object.create(null);\n        var writeOffset = 0;\n        itemEncode(locaData, 0, writeOffset);\n        for (i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize) {\n          var glyphProfile = sanitizeGlyph(\n            oldGlyfData,\n            locaEntries[i].offset,\n            locaEntries[i].endOffset,\n            newGlyfData,\n            writeOffset,\n            hintsValid\n          );\n          var newLength = glyphProfile.length;\n          if (newLength === 0) {\n            missingGlyphs[i] = true;\n          }\n          if (glyphProfile.sizeOfInstructions > maxSizeOfInstructions) {\n            maxSizeOfInstructions = glyphProfile.sizeOfInstructions;\n          }\n          writeOffset += newLength;\n          itemEncode(locaData, j, writeOffset);\n        }\n\n        if (writeOffset === 0) {\n          // glyf table cannot be empty -- redoing the glyf and loca tables\n          // to have single glyph with one point\n          var simpleGlyph = new Uint8Array([\n            0,\n            1,\n            0,\n            0,\n            0,\n            0,\n            0,\n            0,\n            0,\n            0,\n            0,\n            0,\n            0,\n            0,\n            49,\n            0,\n          ]);\n          for (i = 0, j = itemSize; i < numGlyphsOut; i++, j += itemSize) {\n            itemEncode(locaData, j, simpleGlyph.length);\n          }\n          glyf.data = simpleGlyph;\n        } else if (dupFirstEntry) {\n          // Browsers will not display a glyph at position 0. Typically glyph 0\n          // is notdef, but a number of fonts put a valid glyph there so it must\n          // be duplicated and appended.\n          var firstEntryLength = itemDecode(locaData, itemSize);\n          if (newGlyfData.length > firstEntryLength + writeOffset) {\n            glyf.data = newGlyfData.subarray(0, firstEntryLength + writeOffset);\n          } else {\n            glyf.data = new Uint8Array(firstEntryLength + writeOffset);\n            glyf.data.set(newGlyfData.subarray(0, writeOffset));\n          }\n          glyf.data.set(newGlyfData.subarray(0, firstEntryLength), writeOffset);\n          itemEncode(\n            loca.data,\n            locaData.length - itemSize,\n            writeOffset + firstEntryLength\n          );\n        } else {\n          glyf.data = newGlyfData.subarray(0, writeOffset);\n        }\n        return {\n          missingGlyphs,\n          maxSizeOfInstructions,\n        };\n      }\n\n      function readPostScriptTable(post, propertiesObj, maxpNumGlyphs) {\n        var start = (font.start ? font.start : 0) + post.offset;\n        font.pos = start;\n\n        var length = post.length,\n          end = start + length;\n        var version = font.getInt32();\n        // skip rest to the tables\n        font.skip(28);\n\n        var glyphNames;\n        var valid = true;\n        var i;\n\n        switch (version) {\n          case 0x00010000:\n            glyphNames = MacStandardGlyphOrdering;\n            break;\n          case 0x00020000:\n            var numGlyphs = font.getUint16();\n            if (numGlyphs !== maxpNumGlyphs) {\n              valid = false;\n              break;\n            }\n            var glyphNameIndexes = [];\n            for (i = 0; i < numGlyphs; ++i) {\n              var index = font.getUint16();\n              if (index >= 32768) {\n                valid = false;\n                break;\n              }\n              glyphNameIndexes.push(index);\n            }\n            if (!valid) {\n              break;\n            }\n            var customNames = [];\n            var strBuf = [];\n            while (font.pos < end) {\n              var stringLength = font.getByte();\n              strBuf.length = stringLength;\n              for (i = 0; i < stringLength; ++i) {\n                strBuf[i] = String.fromCharCode(font.getByte());\n              }\n              customNames.push(strBuf.join(\"\"));\n            }\n            glyphNames = [];\n            for (i = 0; i < numGlyphs; ++i) {\n              var j = glyphNameIndexes[i];\n              if (j < 258) {\n                glyphNames.push(MacStandardGlyphOrdering[j]);\n                continue;\n              }\n              glyphNames.push(customNames[j - 258]);\n            }\n            break;\n          case 0x00030000:\n            break;\n          default:\n            warn(\"Unknown/unsupported post table version \" + version);\n            valid = false;\n            if (propertiesObj.defaultEncoding) {\n              glyphNames = propertiesObj.defaultEncoding;\n            }\n            break;\n        }\n        propertiesObj.glyphNames = glyphNames;\n        return valid;\n      }\n\n      function readNameTable(nameTable) {\n        var start = (font.start ? font.start : 0) + nameTable.offset;\n        font.pos = start;\n\n        var names = [[], []];\n        var length = nameTable.length,\n          end = start + length;\n        var format = font.getUint16();\n        var FORMAT_0_HEADER_LENGTH = 6;\n        if (format !== 0 || length < FORMAT_0_HEADER_LENGTH) {\n          // unsupported name table format or table \"too\" small\n          return names;\n        }\n        var numRecords = font.getUint16();\n        var stringsStart = font.getUint16();\n        var records = [];\n        var NAME_RECORD_LENGTH = 12;\n        var i, ii;\n\n        for (\n          i = 0;\n          i < numRecords && font.pos + NAME_RECORD_LENGTH <= end;\n          i++\n        ) {\n          var r = {\n            platform: font.getUint16(),\n            encoding: font.getUint16(),\n            language: font.getUint16(),\n            name: font.getUint16(),\n            length: font.getUint16(),\n            offset: font.getUint16(),\n          };\n          // using only Macintosh and Windows platform/encoding names\n          if (\n            (r.platform === 1 && r.encoding === 0 && r.language === 0) ||\n            (r.platform === 3 && r.encoding === 1 && r.language === 0x409)\n          ) {\n            records.push(r);\n          }\n        }\n        for (i = 0, ii = records.length; i < ii; i++) {\n          var record = records[i];\n          if (record.length <= 0) {\n            continue; // Nothing to process, ignoring.\n          }\n          var pos = start + stringsStart + record.offset;\n          if (pos + record.length > end) {\n            continue; // outside of name table, ignoring\n          }\n          font.pos = pos;\n          var nameIndex = record.name;\n          if (record.encoding) {\n            // unicode\n            var str = \"\";\n            for (var j = 0, jj = record.length; j < jj; j += 2) {\n              str += String.fromCharCode(font.getUint16());\n            }\n            names[1][nameIndex] = str;\n          } else {\n            names[0][nameIndex] = bytesToString(font.getBytes(record.length));\n          }\n        }\n        return names;\n      }\n\n      // prettier-ignore\n      var TTOpsStackDeltas = [\n        0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, 0, 0, -2, -5,\n        -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1,\n        1, -1, -999, 0, 1, 0, -1, -2, 0, -1, -2, -1, -1, 0, -1, -1,\n        0, 0, -999, -999, -1, -1, -1, -1, -2, -999, -2, -2, -999, 0, -2, -2,\n        0, 0, -2, 0, -2, 0, 0, 0, -2, -1, -1, 1, 1, 0, 0, -1,\n        -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, -999, -1, -1,\n        -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n        -2, -999, -999, -999, -999, -999, -1, -1, -2, -2, 0, 0, 0, 0, -1, -1,\n        -999, -2, -2, 0, 0, -1, -2, -2, 0, 0, 0, -1, -1, -1, -2];\n      // 0xC0-DF == -1 and 0xE0-FF == -2\n\n      function sanitizeTTProgram(table, ttContext) {\n        var data = table.data;\n        var i = 0,\n          j,\n          n,\n          b,\n          funcId,\n          pc,\n          lastEndf = 0,\n          lastDeff = 0;\n        var stack = [];\n        var callstack = [];\n        var functionsCalled = [];\n        var tooComplexToFollowFunctions = ttContext.tooComplexToFollowFunctions;\n        var inFDEF = false,\n          ifLevel = 0,\n          inELSE = 0;\n        for (var ii = data.length; i < ii; ) {\n          var op = data[i++];\n          // The TrueType instruction set docs can be found at\n          // https://developer.apple.com/fonts/TTRefMan/RM05/Chap5.html\n          if (op === 0x40) {\n            // NPUSHB - pushes n bytes\n            n = data[i++];\n            if (inFDEF || inELSE) {\n              i += n;\n            } else {\n              for (j = 0; j < n; j++) {\n                stack.push(data[i++]);\n              }\n            }\n          } else if (op === 0x41) {\n            // NPUSHW - pushes n words\n            n = data[i++];\n            if (inFDEF || inELSE) {\n              i += n * 2;\n            } else {\n              for (j = 0; j < n; j++) {\n                b = data[i++];\n                stack.push((b << 8) | data[i++]);\n              }\n            }\n          } else if ((op & 0xf8) === 0xb0) {\n            // PUSHB - pushes bytes\n            n = op - 0xb0 + 1;\n            if (inFDEF || inELSE) {\n              i += n;\n            } else {\n              for (j = 0; j < n; j++) {\n                stack.push(data[i++]);\n              }\n            }\n          } else if ((op & 0xf8) === 0xb8) {\n            // PUSHW - pushes words\n            n = op - 0xb8 + 1;\n            if (inFDEF || inELSE) {\n              i += n * 2;\n            } else {\n              for (j = 0; j < n; j++) {\n                b = data[i++];\n                stack.push((b << 8) | data[i++]);\n              }\n            }\n          } else if (op === 0x2b && !tooComplexToFollowFunctions) {\n            // CALL\n            if (!inFDEF && !inELSE) {\n              // collecting information about which functions are used\n              funcId = stack[stack.length - 1];\n              if (isNaN(funcId)) {\n                info(\"TT: CALL empty stack (or invalid entry).\");\n              } else {\n                ttContext.functionsUsed[funcId] = true;\n                if (funcId in ttContext.functionsStackDeltas) {\n                  const newStackLength =\n                    stack.length + ttContext.functionsStackDeltas[funcId];\n                  if (newStackLength < 0) {\n                    warn(\"TT: CALL invalid functions stack delta.\");\n                    ttContext.hintsValid = false;\n                    return;\n                  }\n                  stack.length = newStackLength;\n                } else if (\n                  funcId in ttContext.functionsDefined &&\n                  !functionsCalled.includes(funcId)\n                ) {\n                  callstack.push({ data, i, stackTop: stack.length - 1 });\n                  functionsCalled.push(funcId);\n                  pc = ttContext.functionsDefined[funcId];\n                  if (!pc) {\n                    warn(\"TT: CALL non-existent function\");\n                    ttContext.hintsValid = false;\n                    return;\n                  }\n                  data = pc.data;\n                  i = pc.i;\n                }\n              }\n            }\n          } else if (op === 0x2c && !tooComplexToFollowFunctions) {\n            // FDEF\n            if (inFDEF || inELSE) {\n              warn(\"TT: nested FDEFs not allowed\");\n              tooComplexToFollowFunctions = true;\n            }\n            inFDEF = true;\n            // collecting information about which functions are defined\n            lastDeff = i;\n            funcId = stack.pop();\n            ttContext.functionsDefined[funcId] = { data, i };\n          } else if (op === 0x2d) {\n            // ENDF - end of function\n            if (inFDEF) {\n              inFDEF = false;\n              lastEndf = i;\n            } else {\n              pc = callstack.pop();\n              if (!pc) {\n                warn(\"TT: ENDF bad stack\");\n                ttContext.hintsValid = false;\n                return;\n              }\n              funcId = functionsCalled.pop();\n              data = pc.data;\n              i = pc.i;\n              ttContext.functionsStackDeltas[funcId] =\n                stack.length - pc.stackTop;\n            }\n          } else if (op === 0x89) {\n            // IDEF - instruction definition\n            if (inFDEF || inELSE) {\n              warn(\"TT: nested IDEFs not allowed\");\n              tooComplexToFollowFunctions = true;\n            }\n            inFDEF = true;\n            // recording it as a function to track ENDF\n            lastDeff = i;\n          } else if (op === 0x58) {\n            // IF\n            ++ifLevel;\n          } else if (op === 0x1b) {\n            // ELSE\n            inELSE = ifLevel;\n          } else if (op === 0x59) {\n            // EIF\n            if (inELSE === ifLevel) {\n              inELSE = 0;\n            }\n            --ifLevel;\n          } else if (op === 0x1c) {\n            // JMPR\n            if (!inFDEF && !inELSE) {\n              var offset = stack[stack.length - 1];\n              // only jumping forward to prevent infinite loop\n              if (offset > 0) {\n                i += offset - 1;\n              }\n            }\n          }\n          // Adjusting stack not extactly, but just enough to get function id\n          if (!inFDEF && !inELSE) {\n            let stackDelta = 0;\n            if (op <= 0x8e) {\n              stackDelta = TTOpsStackDeltas[op];\n            } else if (op >= 0xc0 && op <= 0xdf) {\n              stackDelta = -1;\n            } else if (op >= 0xe0) {\n              stackDelta = -2;\n            }\n            if (op >= 0x71 && op <= 0x75) {\n              n = stack.pop();\n              if (!isNaN(n)) {\n                stackDelta = -n * 2;\n              }\n            }\n            while (stackDelta < 0 && stack.length > 0) {\n              stack.pop();\n              stackDelta++;\n            }\n            while (stackDelta > 0) {\n              stack.push(NaN); // pushing any number into stack\n              stackDelta--;\n            }\n          }\n        }\n        ttContext.tooComplexToFollowFunctions = tooComplexToFollowFunctions;\n        var content = [data];\n        if (i > data.length) {\n          content.push(new Uint8Array(i - data.length));\n        }\n        if (lastDeff > lastEndf) {\n          warn(\"TT: complementing a missing function tail\");\n          // new function definition started, but not finished\n          // complete function by [CLEAR, ENDF]\n          content.push(new Uint8Array([0x22, 0x2d]));\n        }\n        foldTTTable(table, content);\n      }\n\n      function checkInvalidFunctions(ttContext, maxFunctionDefs) {\n        if (ttContext.tooComplexToFollowFunctions) {\n          return;\n        }\n        if (ttContext.functionsDefined.length > maxFunctionDefs) {\n          warn(\"TT: more functions defined than expected\");\n          ttContext.hintsValid = false;\n          return;\n        }\n        for (var j = 0, jj = ttContext.functionsUsed.length; j < jj; j++) {\n          if (j > maxFunctionDefs) {\n            warn(\"TT: invalid function id: \" + j);\n            ttContext.hintsValid = false;\n            return;\n          }\n          if (ttContext.functionsUsed[j] && !ttContext.functionsDefined[j]) {\n            warn(\"TT: undefined function: \" + j);\n            ttContext.hintsValid = false;\n            return;\n          }\n        }\n      }\n\n      function foldTTTable(table, content) {\n        if (content.length > 1) {\n          // concatenating the content items\n          var newLength = 0;\n          var j, jj;\n          for (j = 0, jj = content.length; j < jj; j++) {\n            newLength += content[j].length;\n          }\n          newLength = (newLength + 3) & ~3;\n          var result = new Uint8Array(newLength);\n          var pos = 0;\n          for (j = 0, jj = content.length; j < jj; j++) {\n            result.set(content[j], pos);\n            pos += content[j].length;\n          }\n          table.data = result;\n          table.length = newLength;\n        }\n      }\n\n      function sanitizeTTPrograms(fpgm, prep, cvt, maxFunctionDefs) {\n        var ttContext = {\n          functionsDefined: [],\n          functionsUsed: [],\n          functionsStackDeltas: [],\n          tooComplexToFollowFunctions: false,\n          hintsValid: true,\n        };\n        if (fpgm) {\n          sanitizeTTProgram(fpgm, ttContext);\n        }\n        if (prep) {\n          sanitizeTTProgram(prep, ttContext);\n        }\n        if (fpgm) {\n          checkInvalidFunctions(ttContext, maxFunctionDefs);\n        }\n        if (cvt && cvt.length & 1) {\n          var cvtData = new Uint8Array(cvt.length + 1);\n          cvtData.set(cvt.data);\n          cvt.data = cvtData;\n        }\n        return ttContext.hintsValid;\n      }\n\n      // The following steps modify the original font data, making copy\n      font = new Stream(new Uint8Array(font.getBytes()));\n\n      let header, tables;\n      if (isTrueTypeCollectionFile(font)) {\n        const ttcData = readTrueTypeCollectionData(font, this.name);\n        header = ttcData.header;\n        tables = ttcData.tables;\n      } else {\n        header = readOpenTypeHeader(font);\n        tables = readTables(font, header.numTables);\n      }\n      let cff, cffFile;\n\n      var isTrueType = !tables[\"CFF \"];\n      if (!isTrueType) {\n        const isComposite =\n          properties.composite &&\n          ((properties.cidToGidMap || []).length > 0 ||\n            !(properties.cMap instanceof IdentityCMap));\n        // OpenType font (skip composite fonts with non-default glyph mapping).\n        if (\n          (header.version === \"OTTO\" && !isComposite) ||\n          !tables.head ||\n          !tables.hhea ||\n          !tables.maxp ||\n          !tables.post\n        ) {\n          // No major tables: throwing everything at `CFFFont`.\n          cffFile = new Stream(tables[\"CFF \"].data);\n          cff = new CFFFont(cffFile, properties);\n\n          adjustWidths(properties);\n\n          return this.convert(name, cff, properties);\n        }\n\n        delete tables.glyf;\n        delete tables.loca;\n        delete tables.fpgm;\n        delete tables.prep;\n        delete tables[\"cvt \"];\n        this.isOpenType = true;\n      } else {\n        if (!tables.loca) {\n          throw new FormatError('Required \"loca\" table is not found');\n        }\n        if (!tables.glyf) {\n          warn('Required \"glyf\" table is not found -- trying to recover.');\n          // Note: We use `sanitizeGlyphLocations` to add dummy glyf data below.\n          tables.glyf = {\n            tag: \"glyf\",\n            data: new Uint8Array(0),\n          };\n        }\n        this.isOpenType = false;\n      }\n\n      if (!tables.maxp) {\n        throw new FormatError('Required \"maxp\" table is not found');\n      }\n\n      font.pos = (font.start || 0) + tables.maxp.offset;\n      var version = font.getInt32();\n      const numGlyphs = font.getUint16();\n      // Glyph 0 is duplicated and appended.\n      let numGlyphsOut = numGlyphs + 1;\n      let dupFirstEntry = true;\n      if (numGlyphsOut > 0xffff) {\n        dupFirstEntry = false;\n        numGlyphsOut = numGlyphs;\n        warn(\"Not enough space in glyfs to duplicate first glyph.\");\n      }\n      var maxFunctionDefs = 0;\n      var maxSizeOfInstructions = 0;\n      if (version >= 0x00010000 && tables.maxp.length >= 22) {\n        // maxZones can be invalid\n        font.pos += 8;\n        var maxZones = font.getUint16();\n        if (maxZones > 2) {\n          // reset to 2 if font has invalid maxZones\n          tables.maxp.data[14] = 0;\n          tables.maxp.data[15] = 2;\n        }\n        font.pos += 4;\n        maxFunctionDefs = font.getUint16();\n        font.pos += 4;\n        maxSizeOfInstructions = font.getUint16();\n      }\n\n      tables.maxp.data[4] = numGlyphsOut >> 8;\n      tables.maxp.data[5] = numGlyphsOut & 255;\n\n      var hintsValid = sanitizeTTPrograms(\n        tables.fpgm,\n        tables.prep,\n        tables[\"cvt \"],\n        maxFunctionDefs\n      );\n      if (!hintsValid) {\n        delete tables.fpgm;\n        delete tables.prep;\n        delete tables[\"cvt \"];\n      }\n\n      // Ensure the hmtx table contains the advance width and\n      // sidebearings information for numGlyphs in the maxp table\n      sanitizeMetrics(\n        font,\n        tables.hhea,\n        tables.hmtx,\n        numGlyphsOut,\n        dupFirstEntry\n      );\n\n      if (!tables.head) {\n        throw new FormatError('Required \"head\" table is not found');\n      }\n\n      sanitizeHead(tables.head, numGlyphs, isTrueType ? tables.loca.length : 0);\n\n      var missingGlyphs = Object.create(null);\n      if (isTrueType) {\n        var isGlyphLocationsLong = int16(\n          tables.head.data[50],\n          tables.head.data[51]\n        );\n        var glyphsInfo = sanitizeGlyphLocations(\n          tables.loca,\n          tables.glyf,\n          numGlyphs,\n          isGlyphLocationsLong,\n          hintsValid,\n          dupFirstEntry,\n          maxSizeOfInstructions\n        );\n        missingGlyphs = glyphsInfo.missingGlyphs;\n\n        // Some fonts have incorrect maxSizeOfInstructions values, so we use\n        // the computed value instead.\n        if (version >= 0x00010000 && tables.maxp.length >= 22) {\n          tables.maxp.data[26] = glyphsInfo.maxSizeOfInstructions >> 8;\n          tables.maxp.data[27] = glyphsInfo.maxSizeOfInstructions & 255;\n        }\n      }\n      if (!tables.hhea) {\n        throw new FormatError('Required \"hhea\" table is not found');\n      }\n\n      // Sanitizer reduces the glyph advanceWidth to the maxAdvanceWidth\n      // Sometimes it's 0. That needs to be fixed\n      if (tables.hhea.data[10] === 0 && tables.hhea.data[11] === 0) {\n        tables.hhea.data[10] = 0xff;\n        tables.hhea.data[11] = 0xff;\n      }\n\n      // Extract some more font properties from the OpenType head and\n      // hhea tables; yMin and descent value are always negative.\n      var metricsOverride = {\n        unitsPerEm: int16(tables.head.data[18], tables.head.data[19]),\n        yMax: int16(tables.head.data[42], tables.head.data[43]),\n        yMin: signedInt16(tables.head.data[38], tables.head.data[39]),\n        ascent: int16(tables.hhea.data[4], tables.hhea.data[5]),\n        descent: signedInt16(tables.hhea.data[6], tables.hhea.data[7]),\n      };\n\n      // PDF FontDescriptor metrics lie -- using data from actual font.\n      this.ascent = metricsOverride.ascent / metricsOverride.unitsPerEm;\n      this.descent = metricsOverride.descent / metricsOverride.unitsPerEm;\n\n      // The 'post' table has glyphs names.\n      if (tables.post) {\n        readPostScriptTable(tables.post, properties, numGlyphs);\n      }\n\n      // The original 'post' table is not needed, replace it.\n      tables.post = {\n        tag: \"post\",\n        data: createPostTable(properties),\n      };\n\n      const charCodeToGlyphId = [];\n\n      // Helper function to try to skip mapping of empty glyphs.\n      function hasGlyph(glyphId) {\n        return !missingGlyphs[glyphId];\n      }\n\n      if (properties.composite) {\n        var cidToGidMap = properties.cidToGidMap || [];\n        var isCidToGidMapEmpty = cidToGidMap.length === 0;\n\n        properties.cMap.forEach(function (charCode, cid) {\n          if (cid > 0xffff) {\n            throw new FormatError(\"Max size of CID is 65,535\");\n          }\n          var glyphId = -1;\n          if (isCidToGidMapEmpty) {\n            glyphId = cid;\n          } else if (cidToGidMap[cid] !== undefined) {\n            glyphId = cidToGidMap[cid];\n          }\n\n          if (glyphId >= 0 && glyphId < numGlyphs && hasGlyph(glyphId)) {\n            charCodeToGlyphId[charCode] = glyphId;\n          }\n        });\n      } else {\n        // Most of the following logic in this code branch is based on the\n        // 9.6.6.4 of the PDF spec.\n        var cmapTable = readCmapTable(\n          tables.cmap,\n          font,\n          this.isSymbolicFont,\n          properties.hasEncoding\n        );\n        var cmapPlatformId = cmapTable.platformId;\n        var cmapEncodingId = cmapTable.encodingId;\n        var cmapMappings = cmapTable.mappings;\n        var cmapMappingsLength = cmapMappings.length;\n        let baseEncoding = [];\n        if (\n          properties.hasEncoding &&\n          (properties.baseEncodingName === \"MacRomanEncoding\" ||\n            properties.baseEncodingName === \"WinAnsiEncoding\")\n        ) {\n          baseEncoding = getEncoding(properties.baseEncodingName);\n        }\n\n        // If the font has an encoding and is not symbolic then follow the\n        // rules in section 9.6.6.4 of the spec on how to map 3,1 and 1,0\n        // cmaps.\n        if (\n          properties.hasEncoding &&\n          !this.isSymbolicFont &&\n          ((cmapPlatformId === 3 && cmapEncodingId === 1) ||\n            (cmapPlatformId === 1 && cmapEncodingId === 0))\n        ) {\n          var glyphsUnicodeMap = getGlyphsUnicode();\n          for (let charCode = 0; charCode < 256; charCode++) {\n            var glyphName, standardGlyphName;\n            if (this.differences && charCode in this.differences) {\n              glyphName = this.differences[charCode];\n            } else if (\n              charCode in baseEncoding &&\n              baseEncoding[charCode] !== \"\"\n            ) {\n              glyphName = baseEncoding[charCode];\n            } else {\n              glyphName = StandardEncoding[charCode];\n            }\n            if (!glyphName) {\n              continue;\n            }\n            // Ensure that non-standard glyph names are resolved to valid ones.\n            standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap);\n\n            var unicodeOrCharCode;\n            if (cmapPlatformId === 3 && cmapEncodingId === 1) {\n              unicodeOrCharCode = glyphsUnicodeMap[standardGlyphName];\n            } else if (cmapPlatformId === 1 && cmapEncodingId === 0) {\n              // TODO: the encoding needs to be updated with mac os table.\n              unicodeOrCharCode = MacRomanEncoding.indexOf(standardGlyphName);\n            }\n\n            for (let i = 0; i < cmapMappingsLength; ++i) {\n              if (cmapMappings[i].charCode !== unicodeOrCharCode) {\n                continue;\n              }\n              charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;\n              break;\n            }\n          }\n        } else if (cmapPlatformId === 0) {\n          // Default Unicode semantics, use the charcodes as is.\n          for (let i = 0; i < cmapMappingsLength; ++i) {\n            charCodeToGlyphId[cmapMappings[i].charCode] =\n              cmapMappings[i].glyphId;\n          }\n        } else {\n          // When there is only a (1, 0) cmap table, the char code is a single\n          // byte and it is used directly as the char code.\n\n          // When a (3, 0) cmap table is present, it is used instead but the\n          // spec has special rules for char codes in the range of 0xF000 to\n          // 0xF0FF and it says the (3, 0) table should map the values from\n          // the (1, 0) table by prepending 0xF0 to the char codes. To reverse\n          // this, the upper bits of the char code are cleared, but only for the\n          // special range since some PDFs have char codes outside of this range\n          // (e.g. 0x2013) which when masked would overwrite other values in the\n          // cmap.\n          for (let i = 0; i < cmapMappingsLength; ++i) {\n            let charCode = cmapMappings[i].charCode;\n            if (\n              cmapPlatformId === 3 &&\n              charCode >= 0xf000 &&\n              charCode <= 0xf0ff\n            ) {\n              charCode &= 0xff;\n            }\n            charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;\n          }\n        }\n\n        // Last, try to map any missing charcodes using the post table.\n        if (properties.glyphNames && baseEncoding.length) {\n          for (let i = 0; i < 256; ++i) {\n            if (charCodeToGlyphId[i] === undefined && baseEncoding[i]) {\n              glyphName = baseEncoding[i];\n              const glyphId = properties.glyphNames.indexOf(glyphName);\n              if (glyphId > 0 && hasGlyph(glyphId)) {\n                charCodeToGlyphId[i] = glyphId;\n              }\n            }\n          }\n        }\n      }\n\n      if (charCodeToGlyphId.length === 0) {\n        // defines at least one glyph\n        charCodeToGlyphId[0] = 0;\n      }\n\n      // Typically glyph 0 is duplicated and the mapping must be updated, but if\n      // there isn't enough room to duplicate, the glyph id is left the same. In\n      // this case, glyph 0 may not work correctly, but that is better than\n      // having the whole font fail.\n      let glyphZeroId = numGlyphsOut - 1;\n      if (!dupFirstEntry) {\n        glyphZeroId = 0;\n      }\n\n      // Converting glyphs and ids into font's cmap table\n      var newMapping = adjustMapping(charCodeToGlyphId, hasGlyph, glyphZeroId);\n      this.toFontChar = newMapping.toFontChar;\n      tables.cmap = {\n        tag: \"cmap\",\n        data: createCmapTable(newMapping.charCodeToGlyphId, numGlyphsOut),\n      };\n\n      if (!tables[\"OS/2\"] || !validateOS2Table(tables[\"OS/2\"], font)) {\n        tables[\"OS/2\"] = {\n          tag: \"OS/2\",\n          data: createOS2Table(\n            properties,\n            newMapping.charCodeToGlyphId,\n            metricsOverride\n          ),\n        };\n      }\n\n      if (!isTrueType) {\n        try {\n          // Trying to repair CFF file\n          cffFile = new Stream(tables[\"CFF \"].data);\n          var parser = new CFFParser(\n            cffFile,\n            properties,\n            SEAC_ANALYSIS_ENABLED\n          );\n          cff = parser.parse();\n          cff.duplicateFirstGlyph();\n          var compiler = new CFFCompiler(cff);\n          tables[\"CFF \"].data = compiler.compile();\n        } catch (e) {\n          warn(\"Failed to compile font \" + properties.loadedName);\n        }\n      }\n\n      // Re-creating 'name' table\n      if (!tables.name) {\n        tables.name = {\n          tag: \"name\",\n          data: createNameTable(this.name),\n        };\n      } else {\n        // ... using existing 'name' table as prototype\n        var namePrototype = readNameTable(tables.name);\n        tables.name.data = createNameTable(name, namePrototype);\n      }\n\n      var builder = new OpenTypeFileBuilder(header.version);\n      for (var tableTag in tables) {\n        builder.addTable(tableTag, tables[tableTag].data);\n      }\n      return builder.toArray();\n    },\n\n    convert: function Font_convert(fontName, font, properties) {\n      // TODO: Check the charstring widths to determine this.\n      properties.fixedPitch = false;\n\n      if (properties.builtInEncoding) {\n        // For Type1 fonts that do not include either `ToUnicode` or `Encoding`\n        // data, attempt to use the `builtInEncoding` to improve text selection.\n        adjustToUnicode(properties, properties.builtInEncoding);\n      }\n\n      // Type 1 fonts have a notdef inserted at the beginning, so glyph 0\n      // becomes glyph 1. In a CFF font glyph 0 is appended to the end of the\n      // char strings.\n      let glyphZeroId = 1;\n      if (font instanceof CFFFont) {\n        glyphZeroId = font.numGlyphs - 1;\n      }\n      var mapping = font.getGlyphMapping(properties);\n      var newMapping = adjustMapping(\n        mapping,\n        font.hasGlyphId.bind(font),\n        glyphZeroId\n      );\n      this.toFontChar = newMapping.toFontChar;\n      var numGlyphs = font.numGlyphs;\n\n      function getCharCodes(charCodeToGlyphId, glyphId) {\n        var charCodes = null;\n        for (var charCode in charCodeToGlyphId) {\n          if (glyphId === charCodeToGlyphId[charCode]) {\n            if (!charCodes) {\n              charCodes = [];\n            }\n            charCodes.push(charCode | 0);\n          }\n        }\n        return charCodes;\n      }\n\n      function createCharCode(charCodeToGlyphId, glyphId) {\n        for (var charCode in charCodeToGlyphId) {\n          if (glyphId === charCodeToGlyphId[charCode]) {\n            return charCode | 0;\n          }\n        }\n        newMapping.charCodeToGlyphId[\n          newMapping.nextAvailableFontCharCode\n        ] = glyphId;\n        return newMapping.nextAvailableFontCharCode++;\n      }\n\n      var seacs = font.seacs;\n      if (SEAC_ANALYSIS_ENABLED && seacs && seacs.length) {\n        var matrix = properties.fontMatrix || FONT_IDENTITY_MATRIX;\n        var charset = font.getCharset();\n        var seacMap = Object.create(null);\n        for (var glyphId in seacs) {\n          glyphId |= 0;\n          var seac = seacs[glyphId];\n          var baseGlyphName = StandardEncoding[seac[2]];\n          var accentGlyphName = StandardEncoding[seac[3]];\n          var baseGlyphId = charset.indexOf(baseGlyphName);\n          var accentGlyphId = charset.indexOf(accentGlyphName);\n          if (baseGlyphId < 0 || accentGlyphId < 0) {\n            continue;\n          }\n          var accentOffset = {\n            x: seac[0] * matrix[0] + seac[1] * matrix[2] + matrix[4],\n            y: seac[0] * matrix[1] + seac[1] * matrix[3] + matrix[5],\n          };\n\n          var charCodes = getCharCodes(mapping, glyphId);\n          if (!charCodes) {\n            // There's no point in mapping it if the char code was never mapped\n            // to begin with.\n            continue;\n          }\n          for (let i = 0, ii = charCodes.length; i < ii; i++) {\n            var charCode = charCodes[i];\n            // Find a fontCharCode that maps to the base and accent glyphs.\n            // If one doesn't exists, create it.\n            var charCodeToGlyphId = newMapping.charCodeToGlyphId;\n            var baseFontCharCode = createCharCode(\n              charCodeToGlyphId,\n              baseGlyphId\n            );\n            var accentFontCharCode = createCharCode(\n              charCodeToGlyphId,\n              accentGlyphId\n            );\n            seacMap[charCode] = {\n              baseFontCharCode,\n              accentFontCharCode,\n              accentOffset,\n            };\n          }\n        }\n        properties.seacMap = seacMap;\n      }\n\n      var unitsPerEm = 1 / (properties.fontMatrix || FONT_IDENTITY_MATRIX)[0];\n\n      var builder = new OpenTypeFileBuilder(\"\\x4F\\x54\\x54\\x4F\");\n      // PostScript Font Program\n      builder.addTable(\"CFF \", font.data);\n      // OS/2 and Windows Specific metrics\n      builder.addTable(\n        \"OS/2\",\n        createOS2Table(properties, newMapping.charCodeToGlyphId)\n      );\n      // Character to glyphs mapping\n      builder.addTable(\n        \"cmap\",\n        createCmapTable(newMapping.charCodeToGlyphId, numGlyphs)\n      );\n      // Font header\n      builder.addTable(\n        \"head\",\n        \"\\x00\\x01\\x00\\x00\" + // Version number\n        \"\\x00\\x00\\x10\\x00\" + // fontRevision\n        \"\\x00\\x00\\x00\\x00\" + // checksumAdjustement\n        \"\\x5F\\x0F\\x3C\\xF5\" + // magicNumber\n        \"\\x00\\x00\" + // Flags\n        safeString16(unitsPerEm) + // unitsPerEM\n        \"\\x00\\x00\\x00\\x00\\x9e\\x0b\\x7e\\x27\" + // creation date\n        \"\\x00\\x00\\x00\\x00\\x9e\\x0b\\x7e\\x27\" + // modifification date\n        \"\\x00\\x00\" + // xMin\n        safeString16(properties.descent) + // yMin\n        \"\\x0F\\xFF\" + // xMax\n        safeString16(properties.ascent) + // yMax\n        string16(properties.italicAngle ? 2 : 0) + // macStyle\n        \"\\x00\\x11\" + // lowestRecPPEM\n        \"\\x00\\x00\" + // fontDirectionHint\n        \"\\x00\\x00\" + // indexToLocFormat\n          \"\\x00\\x00\"\n      ); // glyphDataFormat\n\n      // Horizontal header\n      builder.addTable(\n        \"hhea\",\n        \"\\x00\\x01\\x00\\x00\" + // Version number\n        safeString16(properties.ascent) + // Typographic Ascent\n        safeString16(properties.descent) + // Typographic Descent\n        \"\\x00\\x00\" + // Line Gap\n        \"\\xFF\\xFF\" + // advanceWidthMax\n        \"\\x00\\x00\" + // minLeftSidebearing\n        \"\\x00\\x00\" + // minRightSidebearing\n        \"\\x00\\x00\" + // xMaxExtent\n        safeString16(properties.capHeight) + // caretSlopeRise\n        safeString16(Math.tan(properties.italicAngle) * properties.xHeight) + // caretSlopeRun\n        \"\\x00\\x00\" + // caretOffset\n        \"\\x00\\x00\" + // -reserved-\n        \"\\x00\\x00\" + // -reserved-\n        \"\\x00\\x00\" + // -reserved-\n        \"\\x00\\x00\" + // -reserved-\n        \"\\x00\\x00\" + // metricDataFormat\n          string16(numGlyphs)\n      ); // Number of HMetrics\n\n      // Horizontal metrics\n      builder.addTable(\n        \"hmtx\",\n        (function fontFieldsHmtx() {\n          var charstrings = font.charstrings;\n          var cffWidths = font.cff ? font.cff.widths : null;\n          var hmtx = \"\\x00\\x00\\x00\\x00\"; // Fake .notdef\n          for (let i = 1, ii = numGlyphs; i < ii; i++) {\n            var width = 0;\n            if (charstrings) {\n              var charstring = charstrings[i - 1];\n              width = \"width\" in charstring ? charstring.width : 0;\n            } else if (cffWidths) {\n              width = Math.ceil(cffWidths[i] || 0);\n            }\n            hmtx += string16(width) + string16(0);\n          }\n          return hmtx;\n        })()\n      );\n\n      // Maximum profile\n      builder.addTable(\n        \"maxp\",\n        \"\\x00\\x00\\x50\\x00\" + string16(numGlyphs) // Version number\n      ); // Num of glyphs\n\n      // Naming tables\n      builder.addTable(\"name\", createNameTable(fontName));\n\n      // PostScript information\n      builder.addTable(\"post\", createPostTable(properties));\n\n      return builder.toArray();\n    },\n\n    get spaceWidth() {\n      // trying to estimate space character width\n      var possibleSpaceReplacements = [\"space\", \"minus\", \"one\", \"i\", \"I\"];\n      var width;\n      for (var i = 0, ii = possibleSpaceReplacements.length; i < ii; i++) {\n        var glyphName = possibleSpaceReplacements[i];\n        // if possible, getting width by glyph name\n        if (glyphName in this.widths) {\n          width = this.widths[glyphName];\n          break;\n        }\n        var glyphsUnicodeMap = getGlyphsUnicode();\n        var glyphUnicode = glyphsUnicodeMap[glyphName];\n        // finding the charcode via unicodeToCID map\n        var charcode = 0;\n        if (this.composite && this.cMap.contains(glyphUnicode)) {\n          charcode = this.cMap.lookup(glyphUnicode);\n        }\n        // ... via toUnicode map\n        if (!charcode && this.toUnicode) {\n          charcode = this.toUnicode.charCodeOf(glyphUnicode);\n        }\n        // setting it to unicode if negative or undefined\n        if (charcode <= 0) {\n          charcode = glyphUnicode;\n        }\n        // trying to get width via charcode\n        width = this.widths[charcode];\n        if (width) {\n          break; // the non-zero width found\n        }\n      }\n      width = width || this.defaultWidth;\n      return shadow(this, \"spaceWidth\", width);\n    },\n\n    charToGlyph: function Font_charToGlyph(charcode, isSpace) {\n      var fontCharCode, width, operatorListId;\n\n      var widthCode = charcode;\n      if (this.cMap && this.cMap.contains(charcode)) {\n        widthCode = this.cMap.lookup(charcode);\n      }\n      width = this.widths[widthCode];\n      width = isNum(width) ? width : this.defaultWidth;\n      var vmetric = this.vmetrics && this.vmetrics[widthCode];\n\n      let unicode =\n        this.toUnicode.get(charcode) ||\n        this.fallbackToUnicode.get(charcode) ||\n        charcode;\n      if (typeof unicode === \"number\") {\n        unicode = String.fromCharCode(unicode);\n      }\n\n      var isInFont = charcode in this.toFontChar;\n      // First try the toFontChar map, if it's not there then try falling\n      // back to the char code.\n      fontCharCode = this.toFontChar[charcode] || charcode;\n      if (this.missingFile) {\n        const glyphName =\n          this.differences[charcode] || this.defaultEncoding[charcode];\n        if (\n          (glyphName === \".notdef\" || glyphName === \"\") &&\n          this.type === \"Type1\"\n        ) {\n          // .notdef glyphs should be invisible in non-embedded Type1 fonts, so\n          // replace them with spaces.\n          fontCharCode = 0x20;\n        }\n        fontCharCode = mapSpecialUnicodeValues(fontCharCode);\n      }\n\n      if (this.isType3Font) {\n        // Font char code in this case is actually a glyph name.\n        operatorListId = fontCharCode;\n      }\n\n      var accent = null;\n      if (this.seacMap && this.seacMap[charcode]) {\n        isInFont = true;\n        var seac = this.seacMap[charcode];\n        fontCharCode = seac.baseFontCharCode;\n        accent = {\n          fontChar: String.fromCodePoint(seac.accentFontCharCode),\n          offset: seac.accentOffset,\n        };\n      }\n\n      let fontChar = \"\";\n      if (typeof fontCharCode === \"number\") {\n        if (fontCharCode <= 0x10ffff) {\n          fontChar = String.fromCodePoint(fontCharCode);\n        } else {\n          warn(`charToGlyph - invalid fontCharCode: ${fontCharCode}`);\n        }\n      }\n\n      var glyph = this.glyphCache[charcode];\n      if (\n        !glyph ||\n        !glyph.matchesForCache(\n          fontChar,\n          unicode,\n          accent,\n          width,\n          vmetric,\n          operatorListId,\n          isSpace,\n          isInFont\n        )\n      ) {\n        glyph = new Glyph(\n          fontChar,\n          unicode,\n          accent,\n          width,\n          vmetric,\n          operatorListId,\n          isSpace,\n          isInFont\n        );\n        this.glyphCache[charcode] = glyph;\n      }\n      return glyph;\n    },\n\n    charsToGlyphs: function Font_charsToGlyphs(chars) {\n      var charsCache = this.charsCache;\n      var glyphs, glyph, charcode;\n\n      // if we translated this string before, just grab it from the cache\n      if (charsCache) {\n        glyphs = charsCache[chars];\n        if (glyphs) {\n          return glyphs;\n        }\n      }\n\n      // lazily create the translation cache\n      if (!charsCache) {\n        charsCache = this.charsCache = Object.create(null);\n      }\n\n      glyphs = [];\n      var charsCacheKey = chars;\n      var i = 0,\n        ii;\n\n      if (this.cMap) {\n        // composite fonts have multi-byte strings convert the string from\n        // single-byte to multi-byte\n        var c = Object.create(null);\n        while (i < chars.length) {\n          this.cMap.readCharCode(chars, i, c);\n          charcode = c.charcode;\n          var length = c.length;\n          i += length;\n          // Space is char with code 0x20 and length 1 in multiple-byte codes.\n          var isSpace = length === 1 && chars.charCodeAt(i - 1) === 0x20;\n          glyph = this.charToGlyph(charcode, isSpace);\n          glyphs.push(glyph);\n        }\n      } else {\n        for (i = 0, ii = chars.length; i < ii; ++i) {\n          charcode = chars.charCodeAt(i);\n          glyph = this.charToGlyph(charcode, charcode === 0x20);\n          glyphs.push(glyph);\n        }\n      }\n\n      // Enter the translated string into the cache\n      return (charsCache[charsCacheKey] = glyphs);\n    },\n\n    get glyphCacheValues() {\n      return Object.values(this.glyphCache);\n    },\n  };\n\n  return Font;\n})();\n\nvar ErrorFont = (function ErrorFontClosure() {\n  // eslint-disable-next-line no-shadow\n  function ErrorFont(error) {\n    this.error = error;\n    this.loadedName = \"g_font_error\";\n    this.missingFile = true;\n  }\n\n  ErrorFont.prototype = {\n    charsToGlyphs: function ErrorFont_charsToGlyphs() {\n      return [];\n    },\n    exportData(extraProperties = false) {\n      return { error: this.error };\n    },\n  };\n\n  return ErrorFont;\n})();\n\n/**\n * Shared logic for building a char code to glyph id mapping for Type1 and\n * simple CFF fonts. See section 9.6.6.2 of the spec.\n * @param {Object} properties Font properties object.\n * @param {Object} builtInEncoding The encoding contained within the actual font\n * data.\n * @param {Array} glyphNames Array of glyph names where the index is the\n * glyph ID.\n * @returns {Object} A char code to glyph ID map.\n */\nfunction type1FontGlyphMapping(properties, builtInEncoding, glyphNames) {\n  var charCodeToGlyphId = Object.create(null);\n  var glyphId, charCode, baseEncoding;\n  var isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n\n  if (properties.baseEncodingName) {\n    // If a valid base encoding name was used, the mapping is initialized with\n    // that.\n    baseEncoding = getEncoding(properties.baseEncodingName);\n    for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n      glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n      if (glyphId >= 0) {\n        charCodeToGlyphId[charCode] = glyphId;\n      } else {\n        charCodeToGlyphId[charCode] = 0; // notdef\n      }\n    }\n  } else if (isSymbolicFont) {\n    // For a symbolic font the encoding should be the fonts built-in encoding.\n    for (charCode in builtInEncoding) {\n      charCodeToGlyphId[charCode] = builtInEncoding[charCode];\n    }\n  } else {\n    // For non-symbolic fonts that don't have a base encoding the standard\n    // encoding should be used.\n    baseEncoding = StandardEncoding;\n    for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n      glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n      if (glyphId >= 0) {\n        charCodeToGlyphId[charCode] = glyphId;\n      } else {\n        charCodeToGlyphId[charCode] = 0; // notdef\n      }\n    }\n  }\n\n  // Lastly, merge in the differences.\n  var differences = properties.differences,\n    glyphsUnicodeMap;\n  if (differences) {\n    for (charCode in differences) {\n      var glyphName = differences[charCode];\n      glyphId = glyphNames.indexOf(glyphName);\n\n      if (glyphId === -1) {\n        if (!glyphsUnicodeMap) {\n          glyphsUnicodeMap = getGlyphsUnicode();\n        }\n        var standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap);\n        if (standardGlyphName !== glyphName) {\n          glyphId = glyphNames.indexOf(standardGlyphName);\n        }\n      }\n      if (glyphId >= 0) {\n        charCodeToGlyphId[charCode] = glyphId;\n      } else {\n        charCodeToGlyphId[charCode] = 0; // notdef\n      }\n    }\n  }\n  return charCodeToGlyphId;\n}\n\n// Type1Font is also a CIDFontType0.\nvar Type1Font = (function Type1FontClosure() {\n  function findBlock(streamBytes, signature, startIndex) {\n    var streamBytesLength = streamBytes.length;\n    var signatureLength = signature.length;\n    var scanLength = streamBytesLength - signatureLength;\n\n    var i = startIndex,\n      j,\n      found = false;\n    while (i < scanLength) {\n      j = 0;\n      while (j < signatureLength && streamBytes[i + j] === signature[j]) {\n        j++;\n      }\n      if (j >= signatureLength) {\n        // `signature` found, skip over whitespace.\n        i += j;\n        while (i < streamBytesLength && isWhiteSpace(streamBytes[i])) {\n          i++;\n        }\n        found = true;\n        break;\n      }\n      i++;\n    }\n    return {\n      found,\n      length: i,\n    };\n  }\n\n  function getHeaderBlock(stream, suggestedLength) {\n    var EEXEC_SIGNATURE = [0x65, 0x65, 0x78, 0x65, 0x63];\n\n    var streamStartPos = stream.pos; // Save the initial stream position.\n    var headerBytes, headerBytesLength, block;\n    try {\n      headerBytes = stream.getBytes(suggestedLength);\n      headerBytesLength = headerBytes.length;\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      // Ignore errors if the `suggestedLength` is huge enough that a Uint8Array\n      // cannot hold the result of `getBytes`, and fallback to simply checking\n      // the entire stream (fixes issue3928.pdf).\n    }\n\n    if (headerBytesLength === suggestedLength) {\n      // Most of the time `suggestedLength` is correct, so to speed things up we\n      // initially only check the last few bytes to see if the header was found.\n      // Otherwise we (potentially) check the entire stream to prevent errors in\n      // `Type1Parser` (fixes issue5686.pdf).\n      block = findBlock(\n        headerBytes,\n        EEXEC_SIGNATURE,\n        suggestedLength - 2 * EEXEC_SIGNATURE.length\n      );\n\n      if (block.found && block.length === suggestedLength) {\n        return {\n          stream: new Stream(headerBytes),\n          length: suggestedLength,\n        };\n      }\n    }\n    warn('Invalid \"Length1\" property in Type1 font -- trying to recover.');\n    stream.pos = streamStartPos; // Reset the stream position.\n\n    var SCAN_BLOCK_LENGTH = 2048;\n    var actualLength;\n    while (true) {\n      var scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\n      block = findBlock(scanBytes, EEXEC_SIGNATURE, 0);\n\n      if (block.length === 0) {\n        break;\n      }\n      stream.pos += block.length; // Update the stream position.\n\n      if (block.found) {\n        actualLength = stream.pos - streamStartPos;\n        break;\n      }\n    }\n    stream.pos = streamStartPos; // Reset the stream position.\n\n    if (actualLength) {\n      return {\n        stream: new Stream(stream.getBytes(actualLength)),\n        length: actualLength,\n      };\n    }\n    warn('Unable to recover \"Length1\" property in Type1 font -- using as is.');\n    return {\n      stream: new Stream(stream.getBytes(suggestedLength)),\n      length: suggestedLength,\n    };\n  }\n\n  function getEexecBlock(stream, suggestedLength) {\n    // We should ideally parse the eexec block to ensure that `suggestedLength`\n    // is correct, so we don't truncate the block data if it's too small.\n    // However, this would also require checking if the fixed-content portion\n    // exists (using the 'Length3' property), and ensuring that it's valid.\n    //\n    // Given that `suggestedLength` almost always is correct, all the validation\n    // would require a great deal of unnecessary parsing for most fonts.\n    // To save time, we always fetch the entire stream instead, which also avoid\n    // issues if `suggestedLength` is huge (see comment in `getHeaderBlock`).\n    //\n    // NOTE: This means that the function can include the fixed-content portion\n    // in the returned eexec block. In practice this does *not* seem to matter,\n    // since `Type1Parser_extractFontProgram` will skip over any non-commands.\n    var eexecBytes = stream.getBytes();\n    return {\n      stream: new Stream(eexecBytes),\n      length: eexecBytes.length,\n    };\n  }\n\n  // eslint-disable-next-line no-shadow\n  function Type1Font(name, file, properties) {\n    // Some bad generators embed pfb file as is, we have to strip 6-byte header.\n    // Also, length1 and length2 might be off by 6 bytes as well.\n    // http://www.math.ubc.ca/~cass/piscript/type1.pdf\n    var PFB_HEADER_SIZE = 6;\n    var headerBlockLength = properties.length1;\n    var eexecBlockLength = properties.length2;\n    var pfbHeader = file.peekBytes(PFB_HEADER_SIZE);\n    var pfbHeaderPresent = pfbHeader[0] === 0x80 && pfbHeader[1] === 0x01;\n    if (pfbHeaderPresent) {\n      file.skip(PFB_HEADER_SIZE);\n      headerBlockLength =\n        (pfbHeader[5] << 24) |\n        (pfbHeader[4] << 16) |\n        (pfbHeader[3] << 8) |\n        pfbHeader[2];\n    }\n\n    // Get the data block containing glyphs and subrs information\n    var headerBlock = getHeaderBlock(file, headerBlockLength);\n    var headerBlockParser = new Type1Parser(\n      headerBlock.stream,\n      false,\n      SEAC_ANALYSIS_ENABLED\n    );\n    headerBlockParser.extractFontHeader(properties);\n\n    if (pfbHeaderPresent) {\n      pfbHeader = file.getBytes(PFB_HEADER_SIZE);\n      eexecBlockLength =\n        (pfbHeader[5] << 24) |\n        (pfbHeader[4] << 16) |\n        (pfbHeader[3] << 8) |\n        pfbHeader[2];\n    }\n\n    // Decrypt the data blocks and retrieve it's content\n    var eexecBlock = getEexecBlock(file, eexecBlockLength);\n    var eexecBlockParser = new Type1Parser(\n      eexecBlock.stream,\n      true,\n      SEAC_ANALYSIS_ENABLED\n    );\n    var data = eexecBlockParser.extractFontProgram(properties);\n    for (const key in data.properties) {\n      properties[key] = data.properties[key];\n    }\n\n    var charstrings = data.charstrings;\n    var type2Charstrings = this.getType2Charstrings(charstrings);\n    var subrs = this.getType2Subrs(data.subrs);\n\n    this.charstrings = charstrings;\n    this.data = this.wrap(\n      name,\n      type2Charstrings,\n      this.charstrings,\n      subrs,\n      properties\n    );\n    this.seacs = this.getSeacs(data.charstrings);\n  }\n\n  Type1Font.prototype = {\n    get numGlyphs() {\n      return this.charstrings.length + 1;\n    },\n\n    getCharset: function Type1Font_getCharset() {\n      var charset = [\".notdef\"];\n      var charstrings = this.charstrings;\n      for (var glyphId = 0; glyphId < charstrings.length; glyphId++) {\n        charset.push(charstrings[glyphId].glyphName);\n      }\n      return charset;\n    },\n\n    getGlyphMapping: function Type1Font_getGlyphMapping(properties) {\n      var charstrings = this.charstrings;\n\n      if (properties.composite) {\n        const charCodeToGlyphId = Object.create(null);\n        // Map CIDs directly to GIDs.\n        for (\n          let glyphId = 0, charstringsLen = charstrings.length;\n          glyphId < charstringsLen;\n          glyphId++\n        ) {\n          const charCode = properties.cMap.charCodeOf(glyphId);\n          // Add 1 because glyph 0 is duplicated.\n          charCodeToGlyphId[charCode] = glyphId + 1;\n        }\n        return charCodeToGlyphId;\n      }\n\n      var glyphNames = [\".notdef\"],\n        glyphId;\n      for (glyphId = 0; glyphId < charstrings.length; glyphId++) {\n        glyphNames.push(charstrings[glyphId].glyphName);\n      }\n      var encoding = properties.builtInEncoding;\n      if (encoding) {\n        var builtInEncoding = Object.create(null);\n        for (var charCode in encoding) {\n          glyphId = glyphNames.indexOf(encoding[charCode]);\n          if (glyphId >= 0) {\n            builtInEncoding[charCode] = glyphId;\n          }\n        }\n      }\n\n      return type1FontGlyphMapping(properties, builtInEncoding, glyphNames);\n    },\n\n    hasGlyphId: function Type1Font_hasGlyphID(id) {\n      if (id < 0 || id >= this.numGlyphs) {\n        return false;\n      }\n      if (id === 0) {\n        // notdef is always defined.\n        return true;\n      }\n      var glyph = this.charstrings[id - 1];\n      return glyph.charstring.length > 0;\n    },\n\n    getSeacs: function Type1Font_getSeacs(charstrings) {\n      var i, ii;\n      var seacMap = [];\n      for (i = 0, ii = charstrings.length; i < ii; i++) {\n        var charstring = charstrings[i];\n        if (charstring.seac) {\n          // Offset by 1 for .notdef\n          seacMap[i + 1] = charstring.seac;\n        }\n      }\n      return seacMap;\n    },\n\n    getType2Charstrings: function Type1Font_getType2Charstrings(\n      type1Charstrings\n    ) {\n      var type2Charstrings = [];\n      for (var i = 0, ii = type1Charstrings.length; i < ii; i++) {\n        type2Charstrings.push(type1Charstrings[i].charstring);\n      }\n      return type2Charstrings;\n    },\n\n    getType2Subrs: function Type1Font_getType2Subrs(type1Subrs) {\n      var bias = 0;\n      var count = type1Subrs.length;\n      if (count < 1133) {\n        bias = 107;\n      } else if (count < 33769) {\n        bias = 1131;\n      } else {\n        bias = 32768;\n      }\n\n      // Add a bunch of empty subrs to deal with the Type2 bias\n      var type2Subrs = [];\n      var i;\n      for (i = 0; i < bias; i++) {\n        type2Subrs.push([0x0b]);\n      }\n\n      for (i = 0; i < count; i++) {\n        type2Subrs.push(type1Subrs[i]);\n      }\n\n      return type2Subrs;\n    },\n\n    wrap: function Type1Font_wrap(\n      name,\n      glyphs,\n      charstrings,\n      subrs,\n      properties\n    ) {\n      var cff = new CFF();\n      cff.header = new CFFHeader(1, 0, 4, 4);\n\n      cff.names = [name];\n\n      var topDict = new CFFTopDict();\n      // CFF strings IDs 0...390 are predefined names, so refering\n      // to entries in our own String INDEX starts at SID 391.\n      topDict.setByName(\"version\", 391);\n      topDict.setByName(\"Notice\", 392);\n      topDict.setByName(\"FullName\", 393);\n      topDict.setByName(\"FamilyName\", 394);\n      topDict.setByName(\"Weight\", 395);\n      topDict.setByName(\"Encoding\", null); // placeholder\n      topDict.setByName(\"FontMatrix\", properties.fontMatrix);\n      topDict.setByName(\"FontBBox\", properties.bbox);\n      topDict.setByName(\"charset\", null); // placeholder\n      topDict.setByName(\"CharStrings\", null); // placeholder\n      topDict.setByName(\"Private\", null); // placeholder\n      cff.topDict = topDict;\n\n      var strings = new CFFStrings();\n      strings.add(\"Version 0.11\"); // Version\n      strings.add(\"See original notice\"); // Notice\n      strings.add(name); // FullName\n      strings.add(name); // FamilyName\n      strings.add(\"Medium\"); // Weight\n      cff.strings = strings;\n\n      cff.globalSubrIndex = new CFFIndex();\n\n      var count = glyphs.length;\n      var charsetArray = [\".notdef\"];\n      var i, ii;\n      for (i = 0; i < count; i++) {\n        const glyphName = charstrings[i].glyphName;\n        const index = CFFStandardStrings.indexOf(glyphName);\n        if (index === -1) {\n          strings.add(glyphName);\n        }\n        charsetArray.push(glyphName);\n      }\n      cff.charset = new CFFCharset(false, 0, charsetArray);\n\n      var charStringsIndex = new CFFIndex();\n      charStringsIndex.add([0x8b, 0x0e]); // .notdef\n      for (i = 0; i < count; i++) {\n        charStringsIndex.add(glyphs[i]);\n      }\n      cff.charStrings = charStringsIndex;\n\n      var privateDict = new CFFPrivateDict();\n      privateDict.setByName(\"Subrs\", null); // placeholder\n      var fields = [\n        \"BlueValues\",\n        \"OtherBlues\",\n        \"FamilyBlues\",\n        \"FamilyOtherBlues\",\n        \"StemSnapH\",\n        \"StemSnapV\",\n        \"BlueShift\",\n        \"BlueFuzz\",\n        \"BlueScale\",\n        \"LanguageGroup\",\n        \"ExpansionFactor\",\n        \"ForceBold\",\n        \"StdHW\",\n        \"StdVW\",\n      ];\n      for (i = 0, ii = fields.length; i < ii; i++) {\n        var field = fields[i];\n        if (!(field in properties.privateData)) {\n          continue;\n        }\n        var value = properties.privateData[field];\n        if (Array.isArray(value)) {\n          // All of the private dictionary array data in CFF must be stored as\n          // \"delta-encoded\" numbers.\n          for (var j = value.length - 1; j > 0; j--) {\n            value[j] -= value[j - 1]; // ... difference from previous value\n          }\n        }\n        privateDict.setByName(field, value);\n      }\n      cff.topDict.privateDict = privateDict;\n\n      var subrIndex = new CFFIndex();\n      for (i = 0, ii = subrs.length; i < ii; i++) {\n        subrIndex.add(subrs[i]);\n      }\n      privateDict.subrsIndex = subrIndex;\n\n      var compiler = new CFFCompiler(cff);\n      return compiler.compile();\n    },\n  };\n\n  return Type1Font;\n})();\n\nvar CFFFont = (function CFFFontClosure() {\n  // eslint-disable-next-line no-shadow\n  function CFFFont(file, properties) {\n    this.properties = properties;\n\n    var parser = new CFFParser(file, properties, SEAC_ANALYSIS_ENABLED);\n    this.cff = parser.parse();\n    this.cff.duplicateFirstGlyph();\n    var compiler = new CFFCompiler(this.cff);\n    this.seacs = this.cff.seacs;\n    try {\n      this.data = compiler.compile();\n    } catch (e) {\n      warn(\"Failed to compile font \" + properties.loadedName);\n      // There may have just been an issue with the compiler, set the data\n      // anyway and hope the font loaded.\n      this.data = file;\n    }\n  }\n\n  CFFFont.prototype = {\n    get numGlyphs() {\n      return this.cff.charStrings.count;\n    },\n    getCharset: function CFFFont_getCharset() {\n      return this.cff.charset.charset;\n    },\n    getGlyphMapping: function CFFFont_getGlyphMapping() {\n      var cff = this.cff;\n      var properties = this.properties;\n      var charsets = cff.charset.charset;\n      var charCodeToGlyphId;\n      var glyphId;\n\n      if (properties.composite) {\n        charCodeToGlyphId = Object.create(null);\n        let charCode;\n        if (cff.isCIDFont) {\n          // If the font is actually a CID font then we should use the charset\n          // to map CIDs to GIDs.\n          for (glyphId = 0; glyphId < charsets.length; glyphId++) {\n            var cid = charsets[glyphId];\n            charCode = properties.cMap.charCodeOf(cid);\n            charCodeToGlyphId[charCode] = glyphId;\n          }\n        } else {\n          // If it is NOT actually a CID font then CIDs should be mapped\n          // directly to GIDs.\n          for (glyphId = 0; glyphId < cff.charStrings.count; glyphId++) {\n            charCode = properties.cMap.charCodeOf(glyphId);\n            charCodeToGlyphId[charCode] = glyphId;\n          }\n        }\n        return charCodeToGlyphId;\n      }\n\n      var encoding = cff.encoding ? cff.encoding.encoding : null;\n      charCodeToGlyphId = type1FontGlyphMapping(properties, encoding, charsets);\n      return charCodeToGlyphId;\n    },\n    hasGlyphId: function CFFFont_hasGlyphID(id) {\n      return this.cff.hasGlyphId(id);\n    },\n  };\n\n  return CFFFont;\n})();\n\nexport {\n  SEAC_ANALYSIS_ENABLED,\n  ErrorFont,\n  Font,\n  FontFlags,\n  ToUnicodeMap,\n  IdentityToUnicodeMap,\n  getFontType,\n};\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  bytesToString,\n  FormatError,\n  info,\n  shadow,\n  stringToBytes,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport {\n  ExpertCharset,\n  ExpertSubsetCharset,\n  ISOAdobeCharset,\n} from \"./charsets.js\";\nimport { ExpertEncoding, StandardEncoding } from \"./encodings.js\";\n\n// Maximum subroutine call depth of type 2 chartrings. Matches OTS.\nvar MAX_SUBR_NESTING = 10;\n\n/**\n * The CFF class takes a Type1 file and wrap it into a\n * 'Compact Font Format' which itself embed Type2 charstrings.\n */\n// prettier-ignore\nvar CFFStandardStrings = [\n  \".notdef\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n  \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n  \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\",\n  \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\",\n  \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\",\n  \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\",\n  \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\",\n  \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\",\n  \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\",\n  \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"exclamdown\", \"cent\",\n  \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\",\n  \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\",\n  \"guilsinglright\", \"fi\", \"fl\", \"endash\", \"dagger\", \"daggerdbl\",\n  \"periodcentered\", \"paragraph\", \"bullet\", \"quotesinglbase\", \"quotedblbase\",\n  \"quotedblright\", \"guillemotright\", \"ellipsis\", \"perthousand\", \"questiondown\",\n  \"grave\", \"acute\", \"circumflex\", \"tilde\", \"macron\", \"breve\", \"dotaccent\",\n  \"dieresis\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\",\n  \"AE\", \"ordfeminine\", \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"ae\",\n  \"dotlessi\", \"lslash\", \"oslash\", \"oe\", \"germandbls\", \"onesuperior\",\n  \"logicalnot\", \"mu\", \"trademark\", \"Eth\", \"onehalf\", \"plusminus\", \"Thorn\",\n  \"onequarter\", \"divide\", \"brokenbar\", \"degree\", \"thorn\", \"threequarters\",\n  \"twosuperior\", \"registered\", \"minus\", \"eth\", \"multiply\", \"threesuperior\",\n  \"copyright\", \"Aacute\", \"Acircumflex\", \"Adieresis\", \"Agrave\", \"Aring\",\n  \"Atilde\", \"Ccedilla\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Egrave\",\n  \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Ntilde\", \"Oacute\",\n  \"Ocircumflex\", \"Odieresis\", \"Ograve\", \"Otilde\", \"Scaron\", \"Uacute\",\n  \"Ucircumflex\", \"Udieresis\", \"Ugrave\", \"Yacute\", \"Ydieresis\", \"Zcaron\",\n  \"aacute\", \"acircumflex\", \"adieresis\", \"agrave\", \"aring\", \"atilde\",\n  \"ccedilla\", \"eacute\", \"ecircumflex\", \"edieresis\", \"egrave\", \"iacute\",\n  \"icircumflex\", \"idieresis\", \"igrave\", \"ntilde\", \"oacute\", \"ocircumflex\",\n  \"odieresis\", \"ograve\", \"otilde\", \"scaron\", \"uacute\", \"ucircumflex\",\n  \"udieresis\", \"ugrave\", \"yacute\", \"ydieresis\", \"zcaron\", \"exclamsmall\",\n  \"Hungarumlautsmall\", \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\",\n  \"Acutesmall\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\",\n  \"onedotenleader\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\",\n  \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\",\n  \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"commasuperior\",\n  \"threequartersemdash\", \"periodsuperior\", \"questionsmall\", \"asuperior\",\n  \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\",\n  \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\",\n  \"tsuperior\", \"ff\", \"ffi\", \"ffl\", \"parenleftinferior\", \"parenrightinferior\",\n  \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\", \"Asmall\", \"Bsmall\",\n  \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\",\n  \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\",\n  \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\",\n  \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\",\n  \"Tildesmall\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\",\n  \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\", \"Caronsmall\",\n  \"Dotaccentsmall\", \"Macronsmall\", \"figuredash\", \"hypheninferior\",\n  \"Ogoneksmall\", \"Ringsmall\", \"Cedillasmall\", \"questiondownsmall\", \"oneeighth\",\n  \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\",\n  \"zerosuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\",\n  \"sevensuperior\", \"eightsuperior\", \"ninesuperior\", \"zeroinferior\",\n  \"oneinferior\", \"twoinferior\", \"threeinferior\", \"fourinferior\",\n  \"fiveinferior\", \"sixinferior\", \"seveninferior\", \"eightinferior\",\n  \"nineinferior\", \"centinferior\", \"dollarinferior\", \"periodinferior\",\n  \"commainferior\", \"Agravesmall\", \"Aacutesmall\", \"Acircumflexsmall\",\n  \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\",\n  \"Egravesmall\", \"Eacutesmall\", \"Ecircumflexsmall\", \"Edieresissmall\",\n  \"Igravesmall\", \"Iacutesmall\", \"Icircumflexsmall\", \"Idieresissmall\",\n  \"Ethsmall\", \"Ntildesmall\", \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\",\n  \"Otildesmall\", \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\",\n  \"Uacutesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\",\n  \"Thornsmall\", \"Ydieresissmall\", \"001.000\", \"001.001\", \"001.002\", \"001.003\",\n  \"Black\", \"Bold\", \"Book\", \"Light\", \"Medium\", \"Regular\", \"Roman\", \"Semibold\"\n];\n\nconst NUM_STANDARD_CFF_STRINGS = 391;\n\nvar CFFParser = (function CFFParserClosure() {\n  var CharstringValidationData = [\n    null,\n    { id: \"hstem\", min: 2, stackClearing: true, stem: true },\n    null,\n    { id: \"vstem\", min: 2, stackClearing: true, stem: true },\n    { id: \"vmoveto\", min: 1, stackClearing: true },\n    { id: \"rlineto\", min: 2, resetStack: true },\n    { id: \"hlineto\", min: 1, resetStack: true },\n    { id: \"vlineto\", min: 1, resetStack: true },\n    { id: \"rrcurveto\", min: 6, resetStack: true },\n    null,\n    { id: \"callsubr\", min: 1, undefStack: true },\n    { id: \"return\", min: 0, undefStack: true },\n    null, // 12\n    null,\n    { id: \"endchar\", min: 0, stackClearing: true },\n    null,\n    null,\n    null,\n    { id: \"hstemhm\", min: 2, stackClearing: true, stem: true },\n    { id: \"hintmask\", min: 0, stackClearing: true },\n    { id: \"cntrmask\", min: 0, stackClearing: true },\n    { id: \"rmoveto\", min: 2, stackClearing: true },\n    { id: \"hmoveto\", min: 1, stackClearing: true },\n    { id: \"vstemhm\", min: 2, stackClearing: true, stem: true },\n    { id: \"rcurveline\", min: 8, resetStack: true },\n    { id: \"rlinecurve\", min: 8, resetStack: true },\n    { id: \"vvcurveto\", min: 4, resetStack: true },\n    { id: \"hhcurveto\", min: 4, resetStack: true },\n    null, // shortint\n    { id: \"callgsubr\", min: 1, undefStack: true },\n    { id: \"vhcurveto\", min: 4, resetStack: true },\n    { id: \"hvcurveto\", min: 4, resetStack: true },\n  ];\n  var CharstringValidationData12 = [\n    null,\n    null,\n    null,\n    { id: \"and\", min: 2, stackDelta: -1 },\n    { id: \"or\", min: 2, stackDelta: -1 },\n    { id: \"not\", min: 1, stackDelta: 0 },\n    null,\n    null,\n    null,\n    { id: \"abs\", min: 1, stackDelta: 0 },\n    {\n      id: \"add\",\n      min: 2,\n      stackDelta: -1,\n      stackFn: function stack_div(stack, index) {\n        stack[index - 2] = stack[index - 2] + stack[index - 1];\n      },\n    },\n    {\n      id: \"sub\",\n      min: 2,\n      stackDelta: -1,\n      stackFn: function stack_div(stack, index) {\n        stack[index - 2] = stack[index - 2] - stack[index - 1];\n      },\n    },\n    {\n      id: \"div\",\n      min: 2,\n      stackDelta: -1,\n      stackFn: function stack_div(stack, index) {\n        stack[index - 2] = stack[index - 2] / stack[index - 1];\n      },\n    },\n    null,\n    {\n      id: \"neg\",\n      min: 1,\n      stackDelta: 0,\n      stackFn: function stack_div(stack, index) {\n        stack[index - 1] = -stack[index - 1];\n      },\n    },\n    { id: \"eq\", min: 2, stackDelta: -1 },\n    null,\n    null,\n    { id: \"drop\", min: 1, stackDelta: -1 },\n    null,\n    { id: \"put\", min: 2, stackDelta: -2 },\n    { id: \"get\", min: 1, stackDelta: 0 },\n    { id: \"ifelse\", min: 4, stackDelta: -3 },\n    { id: \"random\", min: 0, stackDelta: 1 },\n    {\n      id: \"mul\",\n      min: 2,\n      stackDelta: -1,\n      stackFn: function stack_div(stack, index) {\n        stack[index - 2] = stack[index - 2] * stack[index - 1];\n      },\n    },\n    null,\n    { id: \"sqrt\", min: 1, stackDelta: 0 },\n    { id: \"dup\", min: 1, stackDelta: 1 },\n    { id: \"exch\", min: 2, stackDelta: 0 },\n    { id: \"index\", min: 2, stackDelta: 0 },\n    { id: \"roll\", min: 3, stackDelta: -2 },\n    null,\n    null,\n    null,\n    { id: \"hflex\", min: 7, resetStack: true },\n    { id: \"flex\", min: 13, resetStack: true },\n    { id: \"hflex1\", min: 9, resetStack: true },\n    { id: \"flex1\", min: 11, resetStack: true },\n  ];\n\n  // eslint-disable-next-line no-shadow\n  class CFFParser {\n    constructor(file, properties, seacAnalysisEnabled) {\n      this.bytes = file.getBytes();\n      this.properties = properties;\n      this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n    }\n\n    parse() {\n      var properties = this.properties;\n      var cff = new CFF();\n      this.cff = cff;\n\n      // The first five sections must be in order, all the others are reached\n      // via offsets contained in one of the below.\n      var header = this.parseHeader();\n      var nameIndex = this.parseIndex(header.endPos);\n      var topDictIndex = this.parseIndex(nameIndex.endPos);\n      var stringIndex = this.parseIndex(topDictIndex.endPos);\n      var globalSubrIndex = this.parseIndex(stringIndex.endPos);\n\n      var topDictParsed = this.parseDict(topDictIndex.obj.get(0));\n      var topDict = this.createDict(CFFTopDict, topDictParsed, cff.strings);\n\n      cff.header = header.obj;\n      cff.names = this.parseNameIndex(nameIndex.obj);\n      cff.strings = this.parseStringIndex(stringIndex.obj);\n      cff.topDict = topDict;\n      cff.globalSubrIndex = globalSubrIndex.obj;\n\n      this.parsePrivateDict(cff.topDict);\n\n      cff.isCIDFont = topDict.hasName(\"ROS\");\n\n      var charStringOffset = topDict.getByName(\"CharStrings\");\n      var charStringIndex = this.parseIndex(charStringOffset).obj;\n\n      var fontMatrix = topDict.getByName(\"FontMatrix\");\n      if (fontMatrix) {\n        properties.fontMatrix = fontMatrix;\n      }\n\n      var fontBBox = topDict.getByName(\"FontBBox\");\n      if (fontBBox) {\n        // adjusting ascent/descent\n        properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n        properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n        properties.ascentScaled = true;\n      }\n\n      var charset, encoding;\n      if (cff.isCIDFont) {\n        var fdArrayIndex = this.parseIndex(topDict.getByName(\"FDArray\")).obj;\n        for (var i = 0, ii = fdArrayIndex.count; i < ii; ++i) {\n          var dictRaw = fdArrayIndex.get(i);\n          var fontDict = this.createDict(\n            CFFTopDict,\n            this.parseDict(dictRaw),\n            cff.strings\n          );\n          this.parsePrivateDict(fontDict);\n          cff.fdArray.push(fontDict);\n        }\n        // cid fonts don't have an encoding\n        encoding = null;\n        charset = this.parseCharsets(\n          topDict.getByName(\"charset\"),\n          charStringIndex.count,\n          cff.strings,\n          true\n        );\n        cff.fdSelect = this.parseFDSelect(\n          topDict.getByName(\"FDSelect\"),\n          charStringIndex.count\n        );\n      } else {\n        charset = this.parseCharsets(\n          topDict.getByName(\"charset\"),\n          charStringIndex.count,\n          cff.strings,\n          false\n        );\n        encoding = this.parseEncoding(\n          topDict.getByName(\"Encoding\"),\n          properties,\n          cff.strings,\n          charset.charset\n        );\n      }\n\n      cff.charset = charset;\n      cff.encoding = encoding;\n\n      var charStringsAndSeacs = this.parseCharStrings({\n        charStrings: charStringIndex,\n        localSubrIndex: topDict.privateDict.subrsIndex,\n        globalSubrIndex: globalSubrIndex.obj,\n        fdSelect: cff.fdSelect,\n        fdArray: cff.fdArray,\n        privateDict: topDict.privateDict,\n      });\n      cff.charStrings = charStringsAndSeacs.charStrings;\n      cff.seacs = charStringsAndSeacs.seacs;\n      cff.widths = charStringsAndSeacs.widths;\n\n      return cff;\n    }\n\n    parseHeader() {\n      var bytes = this.bytes;\n      var bytesLength = bytes.length;\n      var offset = 0;\n\n      // Prevent an infinite loop, by checking that the offset is within the\n      // bounds of the bytes array. Necessary in empty, or invalid, font files.\n      while (offset < bytesLength && bytes[offset] !== 1) {\n        ++offset;\n      }\n      if (offset >= bytesLength) {\n        throw new FormatError(\"Invalid CFF header\");\n      }\n      if (offset !== 0) {\n        info(\"cff data is shifted\");\n        bytes = bytes.subarray(offset);\n        this.bytes = bytes;\n      }\n      var major = bytes[0];\n      var minor = bytes[1];\n      var hdrSize = bytes[2];\n      var offSize = bytes[3];\n      var header = new CFFHeader(major, minor, hdrSize, offSize);\n      return { obj: header, endPos: hdrSize };\n    }\n\n    parseDict(dict) {\n      var pos = 0;\n\n      function parseOperand() {\n        var value = dict[pos++];\n        if (value === 30) {\n          return parseFloatOperand();\n        } else if (value === 28) {\n          value = dict[pos++];\n          value = ((value << 24) | (dict[pos++] << 16)) >> 16;\n          return value;\n        } else if (value === 29) {\n          value = dict[pos++];\n          value = (value << 8) | dict[pos++];\n          value = (value << 8) | dict[pos++];\n          value = (value << 8) | dict[pos++];\n          return value;\n        } else if (value >= 32 && value <= 246) {\n          return value - 139;\n        } else if (value >= 247 && value <= 250) {\n          return (value - 247) * 256 + dict[pos++] + 108;\n        } else if (value >= 251 && value <= 254) {\n          return -((value - 251) * 256) - dict[pos++] - 108;\n        }\n        warn('CFFParser_parseDict: \"' + value + '\" is a reserved command.');\n        return NaN;\n      }\n\n      function parseFloatOperand() {\n        var str = \"\";\n        var eof = 15;\n        // prettier-ignore\n        const lookup = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\",\n                        \"9\", \".\", \"E\", \"E-\", null, \"-\"];\n        var length = dict.length;\n        while (pos < length) {\n          var b = dict[pos++];\n          var b1 = b >> 4;\n          var b2 = b & 15;\n\n          if (b1 === eof) {\n            break;\n          }\n          str += lookup[b1];\n\n          if (b2 === eof) {\n            break;\n          }\n          str += lookup[b2];\n        }\n        return parseFloat(str);\n      }\n\n      var operands = [];\n      var entries = [];\n\n      pos = 0;\n      var end = dict.length;\n      while (pos < end) {\n        var b = dict[pos];\n        if (b <= 21) {\n          if (b === 12) {\n            b = (b << 8) | dict[++pos];\n          }\n          entries.push([b, operands]);\n          operands = [];\n          ++pos;\n        } else {\n          operands.push(parseOperand());\n        }\n      }\n      return entries;\n    }\n\n    parseIndex(pos) {\n      var cffIndex = new CFFIndex();\n      var bytes = this.bytes;\n      var count = (bytes[pos++] << 8) | bytes[pos++];\n      var offsets = [];\n      var end = pos;\n      var i, ii;\n\n      if (count !== 0) {\n        var offsetSize = bytes[pos++];\n        // add 1 for offset to determine size of last object\n        var startPos = pos + (count + 1) * offsetSize - 1;\n\n        for (i = 0, ii = count + 1; i < ii; ++i) {\n          var offset = 0;\n          for (var j = 0; j < offsetSize; ++j) {\n            offset <<= 8;\n            offset += bytes[pos++];\n          }\n          offsets.push(startPos + offset);\n        }\n        end = offsets[count];\n      }\n      for (i = 0, ii = offsets.length - 1; i < ii; ++i) {\n        var offsetStart = offsets[i];\n        var offsetEnd = offsets[i + 1];\n        cffIndex.add(bytes.subarray(offsetStart, offsetEnd));\n      }\n      return { obj: cffIndex, endPos: end };\n    }\n\n    parseNameIndex(index) {\n      var names = [];\n      for (var i = 0, ii = index.count; i < ii; ++i) {\n        var name = index.get(i);\n        names.push(bytesToString(name));\n      }\n      return names;\n    }\n\n    parseStringIndex(index) {\n      var strings = new CFFStrings();\n      for (var i = 0, ii = index.count; i < ii; ++i) {\n        var data = index.get(i);\n        strings.add(bytesToString(data));\n      }\n      return strings;\n    }\n\n    createDict(Type, dict, strings) {\n      var cffDict = new Type(strings);\n      for (var i = 0, ii = dict.length; i < ii; ++i) {\n        var pair = dict[i];\n        var key = pair[0];\n        var value = pair[1];\n        cffDict.setByKey(key, value);\n      }\n      return cffDict;\n    }\n\n    parseCharString(state, data, localSubrIndex, globalSubrIndex) {\n      if (!data || state.callDepth > MAX_SUBR_NESTING) {\n        return false;\n      }\n      var stackSize = state.stackSize;\n      var stack = state.stack;\n\n      var length = data.length;\n\n      for (var j = 0; j < length; ) {\n        var value = data[j++];\n        var validationCommand = null;\n        if (value === 12) {\n          var q = data[j++];\n          if (q === 0) {\n            // The CFF specification state that the 'dotsection' command\n            // (12, 0) is deprecated and treated as a no-op, but all Type2\n            // charstrings processors should support them. Unfortunately\n            // the font sanitizer don't. As a workaround the sequence (12, 0)\n            // is replaced by a useless (0, hmoveto).\n            data[j - 2] = 139;\n            data[j - 1] = 22;\n            stackSize = 0;\n          } else {\n            validationCommand = CharstringValidationData12[q];\n          }\n        } else if (value === 28) {\n          // number (16 bit)\n          stack[stackSize] = ((data[j] << 24) | (data[j + 1] << 16)) >> 16;\n          j += 2;\n          stackSize++;\n        } else if (value === 14) {\n          if (stackSize >= 4) {\n            stackSize -= 4;\n            if (this.seacAnalysisEnabled) {\n              state.seac = stack.slice(stackSize, stackSize + 4);\n              return false;\n            }\n          }\n          validationCommand = CharstringValidationData[value];\n        } else if (value >= 32 && value <= 246) {\n          // number\n          stack[stackSize] = value - 139;\n          stackSize++;\n        } else if (value >= 247 && value <= 254) {\n          // number (+1 bytes)\n          stack[stackSize] =\n            value < 251\n              ? ((value - 247) << 8) + data[j] + 108\n              : -((value - 251) << 8) - data[j] - 108;\n          j++;\n          stackSize++;\n        } else if (value === 255) {\n          // number (32 bit)\n          stack[stackSize] =\n            ((data[j] << 24) |\n              (data[j + 1] << 16) |\n              (data[j + 2] << 8) |\n              data[j + 3]) /\n            65536;\n          j += 4;\n          stackSize++;\n        } else if (value === 19 || value === 20) {\n          state.hints += stackSize >> 1;\n          // skipping right amount of hints flag data\n          j += (state.hints + 7) >> 3;\n          stackSize %= 2;\n          validationCommand = CharstringValidationData[value];\n        } else if (value === 10 || value === 29) {\n          var subrsIndex;\n          if (value === 10) {\n            subrsIndex = localSubrIndex;\n          } else {\n            subrsIndex = globalSubrIndex;\n          }\n          if (!subrsIndex) {\n            validationCommand = CharstringValidationData[value];\n            warn(\"Missing subrsIndex for \" + validationCommand.id);\n            return false;\n          }\n          var bias = 32768;\n          if (subrsIndex.count < 1240) {\n            bias = 107;\n          } else if (subrsIndex.count < 33900) {\n            bias = 1131;\n          }\n          var subrNumber = stack[--stackSize] + bias;\n          if (\n            subrNumber < 0 ||\n            subrNumber >= subrsIndex.count ||\n            isNaN(subrNumber)\n          ) {\n            validationCommand = CharstringValidationData[value];\n            warn(\"Out of bounds subrIndex for \" + validationCommand.id);\n            return false;\n          }\n          state.stackSize = stackSize;\n          state.callDepth++;\n          var valid = this.parseCharString(\n            state,\n            subrsIndex.get(subrNumber),\n            localSubrIndex,\n            globalSubrIndex\n          );\n          if (!valid) {\n            return false;\n          }\n          state.callDepth--;\n          stackSize = state.stackSize;\n          continue;\n        } else if (value === 11) {\n          state.stackSize = stackSize;\n          return true;\n        } else {\n          validationCommand = CharstringValidationData[value];\n        }\n        if (validationCommand) {\n          if (validationCommand.stem) {\n            state.hints += stackSize >> 1;\n            if (value === 3 || value === 23) {\n              // vstem or vstemhm.\n              state.hasVStems = true;\n            } else if (state.hasVStems && (value === 1 || value === 18)) {\n              // Some browsers don't draw glyphs that specify vstems before\n              // hstems. As a workaround, replace hstem (1) and hstemhm (18)\n              // with a pointless vstem (3) or vstemhm (23).\n              warn(\"CFF stem hints are in wrong order\");\n              data[j - 1] = value === 1 ? 3 : 23;\n            }\n          }\n          if (\"min\" in validationCommand) {\n            if (!state.undefStack && stackSize < validationCommand.min) {\n              warn(\n                \"Not enough parameters for \" +\n                  validationCommand.id +\n                  \"; actual: \" +\n                  stackSize +\n                  \", expected: \" +\n                  validationCommand.min\n              );\n              return false;\n            }\n          }\n          if (state.firstStackClearing && validationCommand.stackClearing) {\n            state.firstStackClearing = false;\n            // the optional character width can be found before the first\n            // stack-clearing command arguments\n            stackSize -= validationCommand.min;\n            if (stackSize >= 2 && validationCommand.stem) {\n              // there are even amount of arguments for stem commands\n              stackSize %= 2;\n            } else if (stackSize > 1) {\n              warn(\"Found too many parameters for stack-clearing command\");\n            }\n            if (stackSize > 0 && stack[stackSize - 1] >= 0) {\n              state.width = stack[stackSize - 1];\n            }\n          }\n          if (\"stackDelta\" in validationCommand) {\n            if (\"stackFn\" in validationCommand) {\n              validationCommand.stackFn(stack, stackSize);\n            }\n            stackSize += validationCommand.stackDelta;\n          } else if (validationCommand.stackClearing) {\n            stackSize = 0;\n          } else if (validationCommand.resetStack) {\n            stackSize = 0;\n            state.undefStack = false;\n          } else if (validationCommand.undefStack) {\n            stackSize = 0;\n            state.undefStack = true;\n            state.firstStackClearing = false;\n          }\n        }\n      }\n      state.stackSize = stackSize;\n      return true;\n    }\n\n    parseCharStrings({\n      charStrings,\n      localSubrIndex,\n      globalSubrIndex,\n      fdSelect,\n      fdArray,\n      privateDict,\n    }) {\n      var seacs = [];\n      var widths = [];\n      var count = charStrings.count;\n      for (var i = 0; i < count; i++) {\n        var charstring = charStrings.get(i);\n        var state = {\n          callDepth: 0,\n          stackSize: 0,\n          stack: [],\n          undefStack: true,\n          hints: 0,\n          firstStackClearing: true,\n          seac: null,\n          width: null,\n          hasVStems: false,\n        };\n        var valid = true;\n        var localSubrToUse = null;\n        var privateDictToUse = privateDict;\n        if (fdSelect && fdArray.length) {\n          var fdIndex = fdSelect.getFDIndex(i);\n          if (fdIndex === -1) {\n            warn(\"Glyph index is not in fd select.\");\n            valid = false;\n          }\n          if (fdIndex >= fdArray.length) {\n            warn(\"Invalid fd index for glyph index.\");\n            valid = false;\n          }\n          if (valid) {\n            privateDictToUse = fdArray[fdIndex].privateDict;\n            localSubrToUse = privateDictToUse.subrsIndex;\n          }\n        } else if (localSubrIndex) {\n          localSubrToUse = localSubrIndex;\n        }\n        if (valid) {\n          valid = this.parseCharString(\n            state,\n            charstring,\n            localSubrToUse,\n            globalSubrIndex\n          );\n        }\n        if (state.width !== null) {\n          const nominalWidth = privateDictToUse.getByName(\"nominalWidthX\");\n          widths[i] = nominalWidth + state.width;\n        } else {\n          const defaultWidth = privateDictToUse.getByName(\"defaultWidthX\");\n          widths[i] = defaultWidth;\n        }\n        if (state.seac !== null) {\n          seacs[i] = state.seac;\n        }\n        if (!valid) {\n          // resetting invalid charstring to single 'endchar'\n          charStrings.set(i, new Uint8Array([14]));\n        }\n      }\n      return { charStrings, seacs, widths };\n    }\n\n    emptyPrivateDictionary(parentDict) {\n      var privateDict = this.createDict(CFFPrivateDict, [], parentDict.strings);\n      parentDict.setByKey(18, [0, 0]);\n      parentDict.privateDict = privateDict;\n    }\n\n    parsePrivateDict(parentDict) {\n      // no private dict, do nothing\n      if (!parentDict.hasName(\"Private\")) {\n        this.emptyPrivateDictionary(parentDict);\n        return;\n      }\n      var privateOffset = parentDict.getByName(\"Private\");\n      // make sure the params are formatted correctly\n      if (!Array.isArray(privateOffset) || privateOffset.length !== 2) {\n        parentDict.removeByName(\"Private\");\n        return;\n      }\n      var size = privateOffset[0];\n      var offset = privateOffset[1];\n      // remove empty dicts or ones that refer to invalid location\n      if (size === 0 || offset >= this.bytes.length) {\n        this.emptyPrivateDictionary(parentDict);\n        return;\n      }\n\n      var privateDictEnd = offset + size;\n      var dictData = this.bytes.subarray(offset, privateDictEnd);\n      var dict = this.parseDict(dictData);\n      var privateDict = this.createDict(\n        CFFPrivateDict,\n        dict,\n        parentDict.strings\n      );\n      parentDict.privateDict = privateDict;\n\n      // Parse the Subrs index also since it's relative to the private dict.\n      if (!privateDict.getByName(\"Subrs\")) {\n        return;\n      }\n      var subrsOffset = privateDict.getByName(\"Subrs\");\n      var relativeOffset = offset + subrsOffset;\n      // Validate the offset.\n      if (subrsOffset === 0 || relativeOffset >= this.bytes.length) {\n        this.emptyPrivateDictionary(parentDict);\n        return;\n      }\n      var subrsIndex = this.parseIndex(relativeOffset);\n      privateDict.subrsIndex = subrsIndex.obj;\n    }\n\n    parseCharsets(pos, length, strings, cid) {\n      if (pos === 0) {\n        return new CFFCharset(\n          true,\n          CFFCharsetPredefinedTypes.ISO_ADOBE,\n          ISOAdobeCharset\n        );\n      } else if (pos === 1) {\n        return new CFFCharset(\n          true,\n          CFFCharsetPredefinedTypes.EXPERT,\n          ExpertCharset\n        );\n      } else if (pos === 2) {\n        return new CFFCharset(\n          true,\n          CFFCharsetPredefinedTypes.EXPERT_SUBSET,\n          ExpertSubsetCharset\n        );\n      }\n\n      var bytes = this.bytes;\n      var start = pos;\n      var format = bytes[pos++];\n      const charset = [cid ? 0 : \".notdef\"];\n      var id, count, i;\n\n      // subtract 1 for the .notdef glyph\n      length -= 1;\n\n      switch (format) {\n        case 0:\n          for (i = 0; i < length; i++) {\n            id = (bytes[pos++] << 8) | bytes[pos++];\n            charset.push(cid ? id : strings.get(id));\n          }\n          break;\n        case 1:\n          while (charset.length <= length) {\n            id = (bytes[pos++] << 8) | bytes[pos++];\n            count = bytes[pos++];\n            for (i = 0; i <= count; i++) {\n              charset.push(cid ? id++ : strings.get(id++));\n            }\n          }\n          break;\n        case 2:\n          while (charset.length <= length) {\n            id = (bytes[pos++] << 8) | bytes[pos++];\n            count = (bytes[pos++] << 8) | bytes[pos++];\n            for (i = 0; i <= count; i++) {\n              charset.push(cid ? id++ : strings.get(id++));\n            }\n          }\n          break;\n        default:\n          throw new FormatError(\"Unknown charset format\");\n      }\n      // Raw won't be needed if we actually compile the charset.\n      var end = pos;\n      var raw = bytes.subarray(start, end);\n\n      return new CFFCharset(false, format, charset, raw);\n    }\n\n    parseEncoding(pos, properties, strings, charset) {\n      var encoding = Object.create(null);\n      var bytes = this.bytes;\n      var predefined = false;\n      var format, i, ii;\n      var raw = null;\n\n      function readSupplement() {\n        var supplementsCount = bytes[pos++];\n        for (i = 0; i < supplementsCount; i++) {\n          var code = bytes[pos++];\n          var sid = (bytes[pos++] << 8) + (bytes[pos++] & 0xff);\n          encoding[code] = charset.indexOf(strings.get(sid));\n        }\n      }\n\n      if (pos === 0 || pos === 1) {\n        predefined = true;\n        format = pos;\n        var baseEncoding = pos ? ExpertEncoding : StandardEncoding;\n        for (i = 0, ii = charset.length; i < ii; i++) {\n          var index = baseEncoding.indexOf(charset[i]);\n          if (index !== -1) {\n            encoding[index] = i;\n          }\n        }\n      } else {\n        var dataStart = pos;\n        format = bytes[pos++];\n        switch (format & 0x7f) {\n          case 0:\n            var glyphsCount = bytes[pos++];\n            for (i = 1; i <= glyphsCount; i++) {\n              encoding[bytes[pos++]] = i;\n            }\n            break;\n\n          case 1:\n            var rangesCount = bytes[pos++];\n            var gid = 1;\n            for (i = 0; i < rangesCount; i++) {\n              var start = bytes[pos++];\n              var left = bytes[pos++];\n              for (var j = start; j <= start + left; j++) {\n                encoding[j] = gid++;\n              }\n            }\n            break;\n\n          default:\n            throw new FormatError(`Unknown encoding format: ${format} in CFF`);\n        }\n        var dataEnd = pos;\n        if (format & 0x80) {\n          // hasSupplement\n          // The font sanitizer does not support CFF encoding with a\n          // supplement, since the encoding is not really used to map\n          // between gid to glyph, let's overwrite what is declared in\n          // the top dictionary to let the sanitizer think the font use\n          // StandardEncoding, that's a lie but that's ok.\n          bytes[dataStart] &= 0x7f;\n          readSupplement();\n        }\n        raw = bytes.subarray(dataStart, dataEnd);\n      }\n      format = format & 0x7f;\n      return new CFFEncoding(predefined, format, encoding, raw);\n    }\n\n    parseFDSelect(pos, length) {\n      var bytes = this.bytes;\n      var format = bytes[pos++];\n      var fdSelect = [];\n      var i;\n\n      switch (format) {\n        case 0:\n          for (i = 0; i < length; ++i) {\n            var id = bytes[pos++];\n            fdSelect.push(id);\n          }\n          break;\n        case 3:\n          var rangesCount = (bytes[pos++] << 8) | bytes[pos++];\n          for (i = 0; i < rangesCount; ++i) {\n            var first = (bytes[pos++] << 8) | bytes[pos++];\n            if (i === 0 && first !== 0) {\n              warn(\n                \"parseFDSelect: The first range must have a first GID of 0\" +\n                  \" -- trying to recover.\"\n              );\n              first = 0;\n            }\n            var fdIndex = bytes[pos++];\n            var next = (bytes[pos] << 8) | bytes[pos + 1];\n            for (var j = first; j < next; ++j) {\n              fdSelect.push(fdIndex);\n            }\n          }\n          // Advance past the sentinel(next).\n          pos += 2;\n          break;\n        default:\n          throw new FormatError(`parseFDSelect: Unknown format \"${format}\".`);\n      }\n      if (fdSelect.length !== length) {\n        throw new FormatError(\"parseFDSelect: Invalid font data.\");\n      }\n\n      return new CFFFDSelect(format, fdSelect);\n    }\n  }\n  return CFFParser;\n})();\n\n// Compact Font Format\nclass CFF {\n  constructor() {\n    this.header = null;\n    this.names = [];\n    this.topDict = null;\n    this.strings = new CFFStrings();\n    this.globalSubrIndex = null;\n\n    // The following could really be per font, but since we only have one font\n    // store them here.\n    this.encoding = null;\n    this.charset = null;\n    this.charStrings = null;\n    this.fdArray = [];\n    this.fdSelect = null;\n\n    this.isCIDFont = false;\n  }\n\n  duplicateFirstGlyph() {\n    // Browsers will not display a glyph at position 0. Typically glyph 0 is\n    // notdef, but a number of fonts put a valid glyph there so it must be\n    // duplicated and appended.\n    if (this.charStrings.count >= 65535) {\n      warn(\"Not enough space in charstrings to duplicate first glyph.\");\n      return;\n    }\n    var glyphZero = this.charStrings.get(0);\n    this.charStrings.add(glyphZero);\n    if (this.isCIDFont) {\n      this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0]);\n    }\n  }\n\n  hasGlyphId(id) {\n    if (id < 0 || id >= this.charStrings.count) {\n      return false;\n    }\n    var glyph = this.charStrings.get(id);\n    return glyph.length > 0;\n  }\n}\n\nclass CFFHeader {\n  constructor(major, minor, hdrSize, offSize) {\n    this.major = major;\n    this.minor = minor;\n    this.hdrSize = hdrSize;\n    this.offSize = offSize;\n  }\n}\n\nclass CFFStrings {\n  constructor() {\n    this.strings = [];\n  }\n\n  get(index) {\n    if (index >= 0 && index <= NUM_STANDARD_CFF_STRINGS - 1) {\n      return CFFStandardStrings[index];\n    }\n    if (index - NUM_STANDARD_CFF_STRINGS <= this.strings.length) {\n      return this.strings[index - NUM_STANDARD_CFF_STRINGS];\n    }\n    return CFFStandardStrings[0];\n  }\n\n  getSID(str) {\n    let index = CFFStandardStrings.indexOf(str);\n    if (index !== -1) {\n      return index;\n    }\n    index = this.strings.indexOf(str);\n    if (index !== -1) {\n      return index + NUM_STANDARD_CFF_STRINGS;\n    }\n    return -1;\n  }\n\n  add(value) {\n    this.strings.push(value);\n  }\n\n  get count() {\n    return this.strings.length;\n  }\n}\n\nclass CFFIndex {\n  constructor() {\n    this.objects = [];\n    this.length = 0;\n  }\n\n  add(data) {\n    this.length += data.length;\n    this.objects.push(data);\n  }\n\n  set(index, data) {\n    this.length += data.length - this.objects[index].length;\n    this.objects[index] = data;\n  }\n\n  get(index) {\n    return this.objects[index];\n  }\n\n  get count() {\n    return this.objects.length;\n  }\n}\n\nclass CFFDict {\n  constructor(tables, strings) {\n    this.keyToNameMap = tables.keyToNameMap;\n    this.nameToKeyMap = tables.nameToKeyMap;\n    this.defaults = tables.defaults;\n    this.types = tables.types;\n    this.opcodes = tables.opcodes;\n    this.order = tables.order;\n    this.strings = strings;\n    this.values = Object.create(null);\n  }\n\n  // value should always be an array\n  setByKey(key, value) {\n    if (!(key in this.keyToNameMap)) {\n      return false;\n    }\n    var valueLength = value.length;\n    // ignore empty values\n    if (valueLength === 0) {\n      return true;\n    }\n    // Ignore invalid values (fixes bug1068432.pdf and bug1308536.pdf).\n    for (var i = 0; i < valueLength; i++) {\n      if (isNaN(value[i])) {\n        warn('Invalid CFFDict value: \"' + value + '\" for key \"' + key + '\".');\n        return true;\n      }\n    }\n    var type = this.types[key];\n    // remove the array wrapping these types of values\n    if (type === \"num\" || type === \"sid\" || type === \"offset\") {\n      value = value[0];\n    }\n    this.values[key] = value;\n    return true;\n  }\n\n  setByName(name, value) {\n    if (!(name in this.nameToKeyMap)) {\n      throw new FormatError(`Invalid dictionary name \"${name}\"`);\n    }\n    this.values[this.nameToKeyMap[name]] = value;\n  }\n\n  hasName(name) {\n    return this.nameToKeyMap[name] in this.values;\n  }\n\n  getByName(name) {\n    if (!(name in this.nameToKeyMap)) {\n      throw new FormatError(`Invalid dictionary name ${name}\"`);\n    }\n    var key = this.nameToKeyMap[name];\n    if (!(key in this.values)) {\n      return this.defaults[key];\n    }\n    return this.values[key];\n  }\n\n  removeByName(name) {\n    delete this.values[this.nameToKeyMap[name]];\n  }\n\n  static createTables(layout) {\n    var tables = {\n      keyToNameMap: {},\n      nameToKeyMap: {},\n      defaults: {},\n      types: {},\n      opcodes: {},\n      order: [],\n    };\n    for (var i = 0, ii = layout.length; i < ii; ++i) {\n      var entry = layout[i];\n      var key = Array.isArray(entry[0])\n        ? (entry[0][0] << 8) + entry[0][1]\n        : entry[0];\n      tables.keyToNameMap[key] = entry[1];\n      tables.nameToKeyMap[entry[1]] = key;\n      tables.types[key] = entry[2];\n      tables.defaults[key] = entry[3];\n      tables.opcodes[key] = Array.isArray(entry[0]) ? entry[0] : [entry[0]];\n      tables.order.push(key);\n    }\n    return tables;\n  }\n}\n\nvar CFFTopDict = (function CFFTopDictClosure() {\n  var layout = [\n    [[12, 30], \"ROS\", [\"sid\", \"sid\", \"num\"], null],\n    [[12, 20], \"SyntheticBase\", \"num\", null],\n    [0, \"version\", \"sid\", null],\n    [1, \"Notice\", \"sid\", null],\n    [[12, 0], \"Copyright\", \"sid\", null],\n    [2, \"FullName\", \"sid\", null],\n    [3, \"FamilyName\", \"sid\", null],\n    [4, \"Weight\", \"sid\", null],\n    [[12, 1], \"isFixedPitch\", \"num\", 0],\n    [[12, 2], \"ItalicAngle\", \"num\", 0],\n    [[12, 3], \"UnderlinePosition\", \"num\", -100],\n    [[12, 4], \"UnderlineThickness\", \"num\", 50],\n    [[12, 5], \"PaintType\", \"num\", 0],\n    [[12, 6], \"CharstringType\", \"num\", 2],\n    // prettier-ignore\n    [[12, 7], \"FontMatrix\", [\"num\", \"num\", \"num\", \"num\", \"num\", \"num\"],\n                            [0.001, 0, 0, 0.001, 0, 0]],\n    [13, \"UniqueID\", \"num\", null],\n    [5, \"FontBBox\", [\"num\", \"num\", \"num\", \"num\"], [0, 0, 0, 0]],\n    [[12, 8], \"StrokeWidth\", \"num\", 0],\n    [14, \"XUID\", \"array\", null],\n    [15, \"charset\", \"offset\", 0],\n    [16, \"Encoding\", \"offset\", 0],\n    [17, \"CharStrings\", \"offset\", 0],\n    [18, \"Private\", [\"offset\", \"offset\"], null],\n    [[12, 21], \"PostScript\", \"sid\", null],\n    [[12, 22], \"BaseFontName\", \"sid\", null],\n    [[12, 23], \"BaseFontBlend\", \"delta\", null],\n    [[12, 31], \"CIDFontVersion\", \"num\", 0],\n    [[12, 32], \"CIDFontRevision\", \"num\", 0],\n    [[12, 33], \"CIDFontType\", \"num\", 0],\n    [[12, 34], \"CIDCount\", \"num\", 8720],\n    [[12, 35], \"UIDBase\", \"num\", null],\n    // XXX: CID Fonts on DirectWrite 6.1 only seem to work if FDSelect comes\n    // before FDArray.\n    [[12, 37], \"FDSelect\", \"offset\", null],\n    [[12, 36], \"FDArray\", \"offset\", null],\n    [[12, 38], \"FontName\", \"sid\", null],\n  ];\n  var tables = null;\n\n  // eslint-disable-next-line no-shadow\n  class CFFTopDict extends CFFDict {\n    constructor(strings) {\n      if (tables === null) {\n        tables = CFFDict.createTables(layout);\n      }\n      super(tables, strings);\n      this.privateDict = null;\n    }\n  }\n  return CFFTopDict;\n})();\n\nvar CFFPrivateDict = (function CFFPrivateDictClosure() {\n  var layout = [\n    [6, \"BlueValues\", \"delta\", null],\n    [7, \"OtherBlues\", \"delta\", null],\n    [8, \"FamilyBlues\", \"delta\", null],\n    [9, \"FamilyOtherBlues\", \"delta\", null],\n    [[12, 9], \"BlueScale\", \"num\", 0.039625],\n    [[12, 10], \"BlueShift\", \"num\", 7],\n    [[12, 11], \"BlueFuzz\", \"num\", 1],\n    [10, \"StdHW\", \"num\", null],\n    [11, \"StdVW\", \"num\", null],\n    [[12, 12], \"StemSnapH\", \"delta\", null],\n    [[12, 13], \"StemSnapV\", \"delta\", null],\n    [[12, 14], \"ForceBold\", \"num\", 0],\n    [[12, 17], \"LanguageGroup\", \"num\", 0],\n    [[12, 18], \"ExpansionFactor\", \"num\", 0.06],\n    [[12, 19], \"initialRandomSeed\", \"num\", 0],\n    [20, \"defaultWidthX\", \"num\", 0],\n    [21, \"nominalWidthX\", \"num\", 0],\n    [19, \"Subrs\", \"offset\", null],\n  ];\n  var tables = null;\n\n  // eslint-disable-next-line no-shadow\n  class CFFPrivateDict extends CFFDict {\n    constructor(strings) {\n      if (tables === null) {\n        tables = CFFDict.createTables(layout);\n      }\n      super(tables, strings);\n      this.subrsIndex = null;\n    }\n  }\n  return CFFPrivateDict;\n})();\n\nvar CFFCharsetPredefinedTypes = {\n  ISO_ADOBE: 0,\n  EXPERT: 1,\n  EXPERT_SUBSET: 2,\n};\nclass CFFCharset {\n  constructor(predefined, format, charset, raw) {\n    this.predefined = predefined;\n    this.format = format;\n    this.charset = charset;\n    this.raw = raw;\n  }\n}\n\nclass CFFEncoding {\n  constructor(predefined, format, encoding, raw) {\n    this.predefined = predefined;\n    this.format = format;\n    this.encoding = encoding;\n    this.raw = raw;\n  }\n}\n\nclass CFFFDSelect {\n  constructor(format, fdSelect) {\n    this.format = format;\n    this.fdSelect = fdSelect;\n  }\n\n  getFDIndex(glyphIndex) {\n    if (glyphIndex < 0 || glyphIndex >= this.fdSelect.length) {\n      return -1;\n    }\n    return this.fdSelect[glyphIndex];\n  }\n}\n\n// Helper class to keep track of where an offset is within the data and helps\n// filling in that offset once it's known.\nclass CFFOffsetTracker {\n  constructor() {\n    this.offsets = Object.create(null);\n  }\n\n  isTracking(key) {\n    return key in this.offsets;\n  }\n\n  track(key, location) {\n    if (key in this.offsets) {\n      throw new FormatError(`Already tracking location of ${key}`);\n    }\n    this.offsets[key] = location;\n  }\n\n  offset(value) {\n    for (var key in this.offsets) {\n      this.offsets[key] += value;\n    }\n  }\n\n  setEntryLocation(key, values, output) {\n    if (!(key in this.offsets)) {\n      throw new FormatError(`Not tracking location of ${key}`);\n    }\n    var data = output.data;\n    var dataOffset = this.offsets[key];\n    var size = 5;\n    for (var i = 0, ii = values.length; i < ii; ++i) {\n      var offset0 = i * size + dataOffset;\n      var offset1 = offset0 + 1;\n      var offset2 = offset0 + 2;\n      var offset3 = offset0 + 3;\n      var offset4 = offset0 + 4;\n      // It's easy to screw up offsets so perform this sanity check.\n      if (\n        data[offset0] !== 0x1d ||\n        data[offset1] !== 0 ||\n        data[offset2] !== 0 ||\n        data[offset3] !== 0 ||\n        data[offset4] !== 0\n      ) {\n        throw new FormatError(\"writing to an offset that is not empty\");\n      }\n      var value = values[i];\n      data[offset0] = 0x1d;\n      data[offset1] = (value >> 24) & 0xff;\n      data[offset2] = (value >> 16) & 0xff;\n      data[offset3] = (value >> 8) & 0xff;\n      data[offset4] = value & 0xff;\n    }\n  }\n}\n\n// Takes a CFF and converts it to the binary representation.\nclass CFFCompiler {\n  constructor(cff) {\n    this.cff = cff;\n  }\n\n  compile() {\n    var cff = this.cff;\n    var output = {\n      data: [],\n      length: 0,\n      add: function CFFCompiler_add(data) {\n        this.data = this.data.concat(data);\n        this.length = this.data.length;\n      },\n    };\n\n    // Compile the five entries that must be in order.\n    var header = this.compileHeader(cff.header);\n    output.add(header);\n\n    var nameIndex = this.compileNameIndex(cff.names);\n    output.add(nameIndex);\n\n    if (cff.isCIDFont) {\n      // The spec is unclear on how font matrices should relate to each other\n      // when there is one in the main top dict and the sub top dicts.\n      // Windows handles this differently than linux and osx so we have to\n      // normalize to work on all.\n      // Rules based off of some mailing list discussions:\n      // - If main font has a matrix and subfont doesn't, use the main matrix.\n      // - If no main font matrix and there is a subfont matrix, use the\n      //   subfont matrix.\n      // - If both have matrices, concat together.\n      // - If neither have matrices, use default.\n      // To make this work on all platforms we move the top matrix into each\n      // sub top dict and concat if necessary.\n      if (cff.topDict.hasName(\"FontMatrix\")) {\n        var base = cff.topDict.getByName(\"FontMatrix\");\n        cff.topDict.removeByName(\"FontMatrix\");\n        for (var i = 0, ii = cff.fdArray.length; i < ii; i++) {\n          var subDict = cff.fdArray[i];\n          var matrix = base.slice(0);\n          if (subDict.hasName(\"FontMatrix\")) {\n            matrix = Util.transform(matrix, subDict.getByName(\"FontMatrix\"));\n          }\n          subDict.setByName(\"FontMatrix\", matrix);\n        }\n      }\n    }\n\n    cff.topDict.setByName(\"charset\", 0);\n    var compiled = this.compileTopDicts(\n      [cff.topDict],\n      output.length,\n      cff.isCIDFont\n    );\n    output.add(compiled.output);\n    var topDictTracker = compiled.trackers[0];\n\n    var stringIndex = this.compileStringIndex(cff.strings.strings);\n    output.add(stringIndex);\n\n    var globalSubrIndex = this.compileIndex(cff.globalSubrIndex);\n    output.add(globalSubrIndex);\n\n    // Now start on the other entries that have no specific order.\n    if (cff.encoding && cff.topDict.hasName(\"Encoding\")) {\n      if (cff.encoding.predefined) {\n        topDictTracker.setEntryLocation(\n          \"Encoding\",\n          [cff.encoding.format],\n          output\n        );\n      } else {\n        var encoding = this.compileEncoding(cff.encoding);\n        topDictTracker.setEntryLocation(\"Encoding\", [output.length], output);\n        output.add(encoding);\n      }\n    }\n    var charset = this.compileCharset(\n      cff.charset,\n      cff.charStrings.count,\n      cff.strings,\n      cff.isCIDFont\n    );\n    topDictTracker.setEntryLocation(\"charset\", [output.length], output);\n    output.add(charset);\n\n    var charStrings = this.compileCharStrings(cff.charStrings);\n    topDictTracker.setEntryLocation(\"CharStrings\", [output.length], output);\n    output.add(charStrings);\n\n    if (cff.isCIDFont) {\n      // For some reason FDSelect must be in front of FDArray on windows. OSX\n      // and linux don't seem to care.\n      topDictTracker.setEntryLocation(\"FDSelect\", [output.length], output);\n      var fdSelect = this.compileFDSelect(cff.fdSelect);\n      output.add(fdSelect);\n      // It is unclear if the sub font dictionary can have CID related\n      // dictionary keys, but the sanitizer doesn't like them so remove them.\n      compiled = this.compileTopDicts(cff.fdArray, output.length, true);\n      topDictTracker.setEntryLocation(\"FDArray\", [output.length], output);\n      output.add(compiled.output);\n      var fontDictTrackers = compiled.trackers;\n\n      this.compilePrivateDicts(cff.fdArray, fontDictTrackers, output);\n    }\n\n    this.compilePrivateDicts([cff.topDict], [topDictTracker], output);\n\n    // If the font data ends with INDEX whose object data is zero-length,\n    // the sanitizer will bail out. Add a dummy byte to avoid that.\n    output.add([0]);\n\n    return output.data;\n  }\n\n  encodeNumber(value) {\n    if (Number.isInteger(value)) {\n      return this.encodeInteger(value);\n    }\n    return this.encodeFloat(value);\n  }\n\n  static get EncodeFloatRegExp() {\n    return shadow(\n      this,\n      \"EncodeFloatRegExp\",\n      /\\.(\\d*?)(?:9{5,20}|0{5,20})\\d{0,2}(?:e(.+)|$)/\n    );\n  }\n\n  encodeFloat(num) {\n    var value = num.toString();\n\n    // Rounding inaccurate doubles.\n    var m = CFFCompiler.EncodeFloatRegExp.exec(value);\n    if (m) {\n      var epsilon = parseFloat(\"1e\" + ((m[2] ? +m[2] : 0) + m[1].length));\n      value = (Math.round(num * epsilon) / epsilon).toString();\n    }\n\n    var nibbles = \"\";\n    var i, ii;\n    for (i = 0, ii = value.length; i < ii; ++i) {\n      var a = value[i];\n      if (a === \"e\") {\n        nibbles += value[++i] === \"-\" ? \"c\" : \"b\";\n      } else if (a === \".\") {\n        nibbles += \"a\";\n      } else if (a === \"-\") {\n        nibbles += \"e\";\n      } else {\n        nibbles += a;\n      }\n    }\n    nibbles += nibbles.length & 1 ? \"f\" : \"ff\";\n    var out = [30];\n    for (i = 0, ii = nibbles.length; i < ii; i += 2) {\n      out.push(parseInt(nibbles.substring(i, i + 2), 16));\n    }\n    return out;\n  }\n\n  encodeInteger(value) {\n    var code;\n    if (value >= -107 && value <= 107) {\n      code = [value + 139];\n    } else if (value >= 108 && value <= 1131) {\n      value = value - 108;\n      code = [(value >> 8) + 247, value & 0xff];\n    } else if (value >= -1131 && value <= -108) {\n      value = -value - 108;\n      code = [(value >> 8) + 251, value & 0xff];\n    } else if (value >= -32768 && value <= 32767) {\n      code = [0x1c, (value >> 8) & 0xff, value & 0xff];\n    } else {\n      code = [\n        0x1d,\n        (value >> 24) & 0xff,\n        (value >> 16) & 0xff,\n        (value >> 8) & 0xff,\n        value & 0xff,\n      ];\n    }\n    return code;\n  }\n\n  compileHeader(header) {\n    return [header.major, header.minor, header.hdrSize, header.offSize];\n  }\n\n  compileNameIndex(names) {\n    var nameIndex = new CFFIndex();\n    for (var i = 0, ii = names.length; i < ii; ++i) {\n      var name = names[i];\n      // OTS doesn't allow names to be over 127 characters.\n      var length = Math.min(name.length, 127);\n      var sanitizedName = new Array(length);\n      for (var j = 0; j < length; j++) {\n        // OTS requires chars to be between a range and not certain other\n        // chars.\n        var char = name[j];\n        if (\n          char < \"!\" ||\n          char > \"~\" ||\n          char === \"[\" ||\n          char === \"]\" ||\n          char === \"(\" ||\n          char === \")\" ||\n          char === \"{\" ||\n          char === \"}\" ||\n          char === \"<\" ||\n          char === \">\" ||\n          char === \"/\" ||\n          char === \"%\"\n        ) {\n          char = \"_\";\n        }\n        sanitizedName[j] = char;\n      }\n      sanitizedName = sanitizedName.join(\"\");\n\n      if (sanitizedName === \"\") {\n        sanitizedName = \"Bad_Font_Name\";\n      }\n      nameIndex.add(stringToBytes(sanitizedName));\n    }\n    return this.compileIndex(nameIndex);\n  }\n\n  compileTopDicts(dicts, length, removeCidKeys) {\n    var fontDictTrackers = [];\n    var fdArrayIndex = new CFFIndex();\n    for (var i = 0, ii = dicts.length; i < ii; ++i) {\n      var fontDict = dicts[i];\n      if (removeCidKeys) {\n        fontDict.removeByName(\"CIDFontVersion\");\n        fontDict.removeByName(\"CIDFontRevision\");\n        fontDict.removeByName(\"CIDFontType\");\n        fontDict.removeByName(\"CIDCount\");\n        fontDict.removeByName(\"UIDBase\");\n      }\n      var fontDictTracker = new CFFOffsetTracker();\n      var fontDictData = this.compileDict(fontDict, fontDictTracker);\n      fontDictTrackers.push(fontDictTracker);\n      fdArrayIndex.add(fontDictData);\n      fontDictTracker.offset(length);\n    }\n    fdArrayIndex = this.compileIndex(fdArrayIndex, fontDictTrackers);\n    return {\n      trackers: fontDictTrackers,\n      output: fdArrayIndex,\n    };\n  }\n\n  compilePrivateDicts(dicts, trackers, output) {\n    for (var i = 0, ii = dicts.length; i < ii; ++i) {\n      var fontDict = dicts[i];\n      var privateDict = fontDict.privateDict;\n      if (!privateDict || !fontDict.hasName(\"Private\")) {\n        throw new FormatError(\"There must be a private dictionary.\");\n      }\n      var privateDictTracker = new CFFOffsetTracker();\n      var privateDictData = this.compileDict(privateDict, privateDictTracker);\n\n      var outputLength = output.length;\n      privateDictTracker.offset(outputLength);\n      if (!privateDictData.length) {\n        // The private dictionary was empty, set the output length to zero to\n        // ensure the offset length isn't out of bounds in the eyes of the\n        // sanitizer.\n        outputLength = 0;\n      }\n\n      trackers[i].setEntryLocation(\n        \"Private\",\n        [privateDictData.length, outputLength],\n        output\n      );\n      output.add(privateDictData);\n\n      if (privateDict.subrsIndex && privateDict.hasName(\"Subrs\")) {\n        var subrs = this.compileIndex(privateDict.subrsIndex);\n        privateDictTracker.setEntryLocation(\n          \"Subrs\",\n          [privateDictData.length],\n          output\n        );\n        output.add(subrs);\n      }\n    }\n  }\n\n  compileDict(dict, offsetTracker) {\n    var out = [];\n    // The dictionary keys must be in a certain order.\n    var order = dict.order;\n    for (var i = 0; i < order.length; ++i) {\n      var key = order[i];\n      if (!(key in dict.values)) {\n        continue;\n      }\n      var values = dict.values[key];\n      var types = dict.types[key];\n      if (!Array.isArray(types)) {\n        types = [types];\n      }\n      if (!Array.isArray(values)) {\n        values = [values];\n      }\n\n      // Remove any empty dict values.\n      if (values.length === 0) {\n        continue;\n      }\n\n      for (var j = 0, jj = types.length; j < jj; ++j) {\n        var type = types[j];\n        var value = values[j];\n        switch (type) {\n          case \"num\":\n          case \"sid\":\n            out = out.concat(this.encodeNumber(value));\n            break;\n          case \"offset\":\n            // For offsets we just insert a 32bit integer so we don't have to\n            // deal with figuring out the length of the offset when it gets\n            // replaced later on by the compiler.\n            var name = dict.keyToNameMap[key];\n            // Some offsets have the offset and the length, so just record the\n            // position of the first one.\n            if (!offsetTracker.isTracking(name)) {\n              offsetTracker.track(name, out.length);\n            }\n            out = out.concat([0x1d, 0, 0, 0, 0]);\n            break;\n          case \"array\":\n          case \"delta\":\n            out = out.concat(this.encodeNumber(value));\n            for (var k = 1, kk = values.length; k < kk; ++k) {\n              out = out.concat(this.encodeNumber(values[k]));\n            }\n            break;\n          default:\n            throw new FormatError(`Unknown data type of ${type}`);\n        }\n      }\n      out = out.concat(dict.opcodes[key]);\n    }\n    return out;\n  }\n\n  compileStringIndex(strings) {\n    var stringIndex = new CFFIndex();\n    for (var i = 0, ii = strings.length; i < ii; ++i) {\n      stringIndex.add(stringToBytes(strings[i]));\n    }\n    return this.compileIndex(stringIndex);\n  }\n\n  compileGlobalSubrIndex() {\n    var globalSubrIndex = this.cff.globalSubrIndex;\n    this.out.writeByteArray(this.compileIndex(globalSubrIndex));\n  }\n\n  compileCharStrings(charStrings) {\n    var charStringsIndex = new CFFIndex();\n    for (var i = 0; i < charStrings.count; i++) {\n      var glyph = charStrings.get(i);\n      // If the CharString outline is empty, replace it with .notdef to\n      // prevent OTS from rejecting the font (fixes bug1252420.pdf).\n      if (glyph.length === 0) {\n        charStringsIndex.add(new Uint8Array([0x8b, 0x0e]));\n        continue;\n      }\n      charStringsIndex.add(glyph);\n    }\n    return this.compileIndex(charStringsIndex);\n  }\n\n  compileCharset(charset, numGlyphs, strings, isCIDFont) {\n    // Freetype requires the number of charset strings be correct and MacOS\n    // requires a valid mapping for printing.\n    let out;\n    const numGlyphsLessNotDef = numGlyphs - 1;\n    if (isCIDFont) {\n      // In a CID font, the charset is a mapping of CIDs not SIDs so just\n      // create an identity mapping.\n      out = new Uint8Array([\n        2, // format\n        0, // first CID upper byte\n        0, // first CID lower byte\n        (numGlyphsLessNotDef >> 8) & 0xff,\n        numGlyphsLessNotDef & 0xff,\n      ]);\n    } else {\n      const length = 1 + numGlyphsLessNotDef * 2;\n      out = new Uint8Array(length);\n      out[0] = 0; // format 0\n      let charsetIndex = 0;\n      const numCharsets = charset.charset.length;\n      let warned = false;\n      for (let i = 1; i < out.length; i += 2) {\n        let sid = 0;\n        if (charsetIndex < numCharsets) {\n          const name = charset.charset[charsetIndex++];\n          sid = strings.getSID(name);\n          if (sid === -1) {\n            sid = 0;\n            if (!warned) {\n              warned = true;\n              warn(`Couldn't find ${name} in CFF strings`);\n            }\n          }\n        }\n        out[i] = (sid >> 8) & 0xff;\n        out[i + 1] = sid & 0xff;\n      }\n    }\n    return this.compileTypedArray(out);\n  }\n\n  compileEncoding(encoding) {\n    return this.compileTypedArray(encoding.raw);\n  }\n\n  compileFDSelect(fdSelect) {\n    const format = fdSelect.format;\n    let out, i;\n    switch (format) {\n      case 0:\n        out = new Uint8Array(1 + fdSelect.fdSelect.length);\n        out[0] = format;\n        for (i = 0; i < fdSelect.fdSelect.length; i++) {\n          out[i + 1] = fdSelect.fdSelect[i];\n        }\n        break;\n      case 3:\n        const start = 0;\n        let lastFD = fdSelect.fdSelect[0];\n        const ranges = [\n          format,\n          0, // nRanges place holder\n          0, // nRanges place holder\n          (start >> 8) & 0xff,\n          start & 0xff,\n          lastFD,\n        ];\n        for (i = 1; i < fdSelect.fdSelect.length; i++) {\n          const currentFD = fdSelect.fdSelect[i];\n          if (currentFD !== lastFD) {\n            ranges.push((i >> 8) & 0xff, i & 0xff, currentFD);\n            lastFD = currentFD;\n          }\n        }\n        // 3 bytes are pushed for every range and there are 3 header bytes.\n        const numRanges = (ranges.length - 3) / 3;\n        ranges[1] = (numRanges >> 8) & 0xff;\n        ranges[2] = numRanges & 0xff;\n        // sentinel\n        ranges.push((i >> 8) & 0xff, i & 0xff);\n        out = new Uint8Array(ranges);\n        break;\n    }\n    return this.compileTypedArray(out);\n  }\n\n  compileTypedArray(data) {\n    var out = [];\n    for (var i = 0, ii = data.length; i < ii; ++i) {\n      out[i] = data[i];\n    }\n    return out;\n  }\n\n  compileIndex(index, trackers = []) {\n    var objects = index.objects;\n    // First 2 bytes contains the number of objects contained into this index\n    var count = objects.length;\n\n    // If there is no object, just create an index. This technically\n    // should just be [0, 0] but OTS has an issue with that.\n    if (count === 0) {\n      return [0, 0, 0];\n    }\n\n    var data = [(count >> 8) & 0xff, count & 0xff];\n\n    var lastOffset = 1,\n      i;\n    for (i = 0; i < count; ++i) {\n      lastOffset += objects[i].length;\n    }\n\n    var offsetSize;\n    if (lastOffset < 0x100) {\n      offsetSize = 1;\n    } else if (lastOffset < 0x10000) {\n      offsetSize = 2;\n    } else if (lastOffset < 0x1000000) {\n      offsetSize = 3;\n    } else {\n      offsetSize = 4;\n    }\n\n    // Next byte contains the offset size use to reference object in the file\n    data.push(offsetSize);\n\n    // Add another offset after this one because we need a new offset\n    var relativeOffset = 1;\n    for (i = 0; i < count + 1; i++) {\n      if (offsetSize === 1) {\n        data.push(relativeOffset & 0xff);\n      } else if (offsetSize === 2) {\n        data.push((relativeOffset >> 8) & 0xff, relativeOffset & 0xff);\n      } else if (offsetSize === 3) {\n        data.push(\n          (relativeOffset >> 16) & 0xff,\n          (relativeOffset >> 8) & 0xff,\n          relativeOffset & 0xff\n        );\n      } else {\n        data.push(\n          (relativeOffset >>> 24) & 0xff,\n          (relativeOffset >> 16) & 0xff,\n          (relativeOffset >> 8) & 0xff,\n          relativeOffset & 0xff\n        );\n      }\n\n      if (objects[i]) {\n        relativeOffset += objects[i].length;\n      }\n    }\n\n    for (i = 0; i < count; i++) {\n      // Notify the tracker where the object will be offset in the data.\n      if (trackers[i]) {\n        trackers[i].offset(data.length);\n      }\n      for (var j = 0, jj = objects[i].length; j < jj; j++) {\n        data.push(objects[i][j]);\n      }\n    }\n    return data;\n  }\n}\n\nexport {\n  CFFStandardStrings,\n  CFFParser,\n  CFF,\n  CFFHeader,\n  CFFStrings,\n  CFFIndex,\n  CFFCharset,\n  CFFTopDict,\n  CFFPrivateDict,\n  CFFCompiler,\n  CFFFDSelect,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\n// prettier-ignore\nconst ISOAdobeCharset = [\n  \".notdef\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\",\n  \"percent\", \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\",\n  \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\",\n  \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\",\n  \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\",\n  \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\",\n  \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\",\n  \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\",\n  \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\",\n  \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\",\n  \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"exclamdown\", \"cent\",\n  \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\",\n  \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\",\n  \"guilsinglright\", \"fi\", \"fl\", \"endash\", \"dagger\", \"daggerdbl\",\n  \"periodcentered\", \"paragraph\", \"bullet\", \"quotesinglbase\",\n  \"quotedblbase\", \"quotedblright\", \"guillemotright\", \"ellipsis\",\n  \"perthousand\", \"questiondown\", \"grave\", \"acute\", \"circumflex\", \"tilde\",\n  \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"ring\", \"cedilla\",\n  \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"AE\", \"ordfeminine\",\n  \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"ae\", \"dotlessi\", \"lslash\",\n  \"oslash\", \"oe\", \"germandbls\", \"onesuperior\", \"logicalnot\", \"mu\",\n  \"trademark\", \"Eth\", \"onehalf\", \"plusminus\", \"Thorn\", \"onequarter\",\n  \"divide\", \"brokenbar\", \"degree\", \"thorn\", \"threequarters\", \"twosuperior\",\n  \"registered\", \"minus\", \"eth\", \"multiply\", \"threesuperior\", \"copyright\",\n  \"Aacute\", \"Acircumflex\", \"Adieresis\", \"Agrave\", \"Aring\", \"Atilde\",\n  \"Ccedilla\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Egrave\", \"Iacute\",\n  \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Ntilde\", \"Oacute\", \"Ocircumflex\",\n  \"Odieresis\", \"Ograve\", \"Otilde\", \"Scaron\", \"Uacute\", \"Ucircumflex\",\n  \"Udieresis\", \"Ugrave\", \"Yacute\", \"Ydieresis\", \"Zcaron\", \"aacute\",\n  \"acircumflex\", \"adieresis\", \"agrave\", \"aring\", \"atilde\", \"ccedilla\",\n  \"eacute\", \"ecircumflex\", \"edieresis\", \"egrave\", \"iacute\", \"icircumflex\",\n  \"idieresis\", \"igrave\", \"ntilde\", \"oacute\", \"ocircumflex\", \"odieresis\",\n  \"ograve\", \"otilde\", \"scaron\", \"uacute\", \"ucircumflex\", \"udieresis\",\n  \"ugrave\", \"yacute\", \"ydieresis\", \"zcaron\"\n];\n\n// prettier-ignore\nconst ExpertCharset = [\n  \".notdef\", \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"dollaroldstyle\",\n  \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\",\n  \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\",\n  \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\",\n  \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\",\n  \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\",\n  \"colon\", \"semicolon\", \"commasuperior\", \"threequartersemdash\",\n  \"periodsuperior\", \"questionsmall\", \"asuperior\", \"bsuperior\",\n  \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\",\n  \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\",\n  \"tsuperior\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\",\n  \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\",\n  \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\",\n  \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\",\n  \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\",\n  \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\",\n  \"onefitted\", \"rupiah\", \"Tildesmall\", \"exclamdownsmall\", \"centoldstyle\",\n  \"Lslashsmall\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\",\n  \"Brevesmall\", \"Caronsmall\", \"Dotaccentsmall\", \"Macronsmall\",\n  \"figuredash\", \"hypheninferior\", \"Ogoneksmall\", \"Ringsmall\",\n  \"Cedillasmall\", \"onequarter\", \"onehalf\", \"threequarters\",\n  \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n  \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"onesuperior\",\n  \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\",\n  \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\",\n  \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\",\n  \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\",\n  \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\",\n  \"periodinferior\", \"commainferior\", \"Agravesmall\", \"Aacutesmall\",\n  \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\",\n  \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\",\n  \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\",\n  \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\",\n  \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\",\n  \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\",\n  \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\",\n  \"Ydieresissmall\"\n];\n\n// prettier-ignore\nconst ExpertSubsetCharset = [\n  \".notdef\", \"space\", \"dollaroldstyle\", \"dollarsuperior\",\n  \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\",\n  \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\",\n  \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\",\n  \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\",\n  \"eightoldstyle\", \"nineoldstyle\", \"colon\", \"semicolon\", \"commasuperior\",\n  \"threequartersemdash\", \"periodsuperior\", \"asuperior\", \"bsuperior\",\n  \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\",\n  \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\",\n  \"tsuperior\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\",\n  \"parenrightinferior\", \"hyphensuperior\", \"colonmonetary\", \"onefitted\",\n  \"rupiah\", \"centoldstyle\", \"figuredash\", \"hypheninferior\", \"onequarter\",\n  \"onehalf\", \"threequarters\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n  \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"onesuperior\",\n  \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\",\n  \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\",\n  \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\",\n  \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\",\n  \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\",\n  \"periodinferior\", \"commainferior\"\n];\n\nexport { ISOAdobeCharset, ExpertCharset, ExpertSubsetCharset };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// prettier-ignore\nconst ExpertEncoding = [\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"\", \"dollaroldstyle\",\n  \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\",\n  \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\",\n  \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\",\n  \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\",\n  \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"colon\",\n  \"semicolon\", \"commasuperior\", \"threequartersemdash\", \"periodsuperior\",\n  \"questionsmall\", \"\", \"asuperior\", \"bsuperior\", \"centsuperior\", \"dsuperior\",\n  \"esuperior\", \"\", \"\", \"\", \"isuperior\", \"\", \"\", \"lsuperior\", \"msuperior\",\n  \"nsuperior\", \"osuperior\", \"\", \"\", \"rsuperior\", \"ssuperior\", \"tsuperior\",\n  \"\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"\",\n  \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\",\n  \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\",\n  \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\",\n  \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\",\n  \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\",\n  \"onefitted\", \"rupiah\", \"Tildesmall\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\",\n  \"\", \"\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\",\n  \"Caronsmall\", \"\", \"Dotaccentsmall\", \"\", \"\", \"Macronsmall\", \"\", \"\",\n  \"figuredash\", \"hypheninferior\", \"\", \"\", \"Ogoneksmall\", \"Ringsmall\",\n  \"Cedillasmall\", \"\", \"\", \"\", \"onequarter\", \"onehalf\", \"threequarters\",\n  \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n  \"seveneighths\", \"onethird\", \"twothirds\", \"\", \"\", \"zerosuperior\",\n  \"onesuperior\", \"twosuperior\", \"threesuperior\", \"foursuperior\",\n  \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\",\n  \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\",\n  \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\",\n  \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\",\n  \"dollarinferior\", \"periodinferior\", \"commainferior\", \"Agravesmall\",\n  \"Aacutesmall\", \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\",\n  \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\",\n  \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\",\n  \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\",\n  \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\",\n  \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\",\n  \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\",\n  \"Ydieresissmall\"];\n\n// prettier-ignore\nconst MacExpertEncoding = [\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"centoldstyle\",\n  \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\",\n  \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\",\n  \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\",\n  \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\",\n  \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\",\n  \"nineoldstyle\", \"colon\", \"semicolon\", \"\", \"threequartersemdash\", \"\",\n  \"questionsmall\", \"\", \"\", \"\", \"\", \"Ethsmall\", \"\", \"\", \"onequarter\",\n  \"onehalf\", \"threequarters\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n  \"seveneighths\", \"onethird\", \"twothirds\", \"\", \"\", \"\", \"\", \"\", \"\", \"ff\",\n  \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"\", \"parenrightinferior\",\n  \"Circumflexsmall\", \"hypheninferior\", \"Gravesmall\", \"Asmall\", \"Bsmall\",\n  \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\",\n  \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\",\n  \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\",\n  \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\",\n  \"Tildesmall\", \"\", \"\", \"asuperior\", \"centsuperior\", \"\", \"\", \"\", \"\",\n  \"Aacutesmall\", \"Agravesmall\", \"Acircumflexsmall\", \"Adieresissmall\",\n  \"Atildesmall\", \"Aringsmall\", \"Ccedillasmall\", \"Eacutesmall\", \"Egravesmall\",\n  \"Ecircumflexsmall\", \"Edieresissmall\", \"Iacutesmall\", \"Igravesmall\",\n  \"Icircumflexsmall\", \"Idieresissmall\", \"Ntildesmall\", \"Oacutesmall\",\n  \"Ogravesmall\", \"Ocircumflexsmall\", \"Odieresissmall\", \"Otildesmall\",\n  \"Uacutesmall\", \"Ugravesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"\",\n  \"eightsuperior\", \"fourinferior\", \"threeinferior\", \"sixinferior\",\n  \"eightinferior\", \"seveninferior\", \"Scaronsmall\", \"\", \"centinferior\",\n  \"twoinferior\", \"\", \"Dieresissmall\", \"\", \"Caronsmall\", \"osuperior\",\n  \"fiveinferior\", \"\", \"commainferior\", \"periodinferior\", \"Yacutesmall\", \"\",\n  \"dollarinferior\", \"\", \"\", \"Thornsmall\", \"\", \"nineinferior\", \"zeroinferior\",\n  \"Zcaronsmall\", \"AEsmall\", \"Oslashsmall\", \"questiondownsmall\",\n  \"oneinferior\", \"Lslashsmall\", \"\", \"\", \"\", \"\", \"\", \"\", \"Cedillasmall\", \"\",\n  \"\", \"\", \"\", \"\", \"OEsmall\", \"figuredash\", \"hyphensuperior\", \"\", \"\", \"\", \"\",\n  \"exclamdownsmall\", \"\", \"Ydieresissmall\", \"\", \"onesuperior\", \"twosuperior\",\n  \"threesuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\",\n  \"sevensuperior\", \"ninesuperior\", \"zerosuperior\", \"\", \"esuperior\",\n  \"rsuperior\", \"tsuperior\", \"\", \"\", \"isuperior\", \"ssuperior\", \"dsuperior\",\n  \"\", \"\", \"\", \"\", \"\", \"lsuperior\", \"Ogoneksmall\", \"Brevesmall\",\n  \"Macronsmall\", \"bsuperior\", \"nsuperior\", \"msuperior\", \"commasuperior\",\n  \"periodsuperior\", \"Dotaccentsmall\", \"Ringsmall\", \"\", \"\", \"\", \"\"];\n\n// prettier-ignore\nconst MacRomanEncoding = [\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n  \"ampersand\", \"quotesingle\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n  \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\",\n  \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\",\n  \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\",\n  \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\",\n  \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\",\n  \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\",\n  \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\",\n  \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"\",\n  \"Adieresis\", \"Aring\", \"Ccedilla\", \"Eacute\", \"Ntilde\", \"Odieresis\",\n  \"Udieresis\", \"aacute\", \"agrave\", \"acircumflex\", \"adieresis\", \"atilde\",\n  \"aring\", \"ccedilla\", \"eacute\", \"egrave\", \"ecircumflex\", \"edieresis\",\n  \"iacute\", \"igrave\", \"icircumflex\", \"idieresis\", \"ntilde\", \"oacute\",\n  \"ograve\", \"ocircumflex\", \"odieresis\", \"otilde\", \"uacute\", \"ugrave\",\n  \"ucircumflex\", \"udieresis\", \"dagger\", \"degree\", \"cent\", \"sterling\",\n  \"section\", \"bullet\", \"paragraph\", \"germandbls\", \"registered\", \"copyright\",\n  \"trademark\", \"acute\", \"dieresis\", \"notequal\", \"AE\", \"Oslash\", \"infinity\",\n  \"plusminus\", \"lessequal\", \"greaterequal\", \"yen\", \"mu\", \"partialdiff\",\n  \"summation\", \"product\", \"pi\", \"integral\", \"ordfeminine\", \"ordmasculine\",\n  \"Omega\", \"ae\", \"oslash\", \"questiondown\", \"exclamdown\", \"logicalnot\",\n  \"radical\", \"florin\", \"approxequal\", \"Delta\", \"guillemotleft\",\n  \"guillemotright\", \"ellipsis\", \"space\", \"Agrave\", \"Atilde\", \"Otilde\", \"OE\",\n  \"oe\", \"endash\", \"emdash\", \"quotedblleft\", \"quotedblright\", \"quoteleft\",\n  \"quoteright\", \"divide\", \"lozenge\", \"ydieresis\", \"Ydieresis\", \"fraction\",\n  \"currency\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"daggerdbl\",\n  \"periodcentered\", \"quotesinglbase\", \"quotedblbase\", \"perthousand\",\n  \"Acircumflex\", \"Ecircumflex\", \"Aacute\", \"Edieresis\", \"Egrave\", \"Iacute\",\n  \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Oacute\", \"Ocircumflex\", \"apple\",\n  \"Ograve\", \"Uacute\", \"Ucircumflex\", \"Ugrave\", \"dotlessi\", \"circumflex\",\n  \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"ring\", \"cedilla\", \"hungarumlaut\",\n  \"ogonek\", \"caron\"];\n\n// prettier-ignore\nconst StandardEncoding = [\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n  \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n  \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\",\n  \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\",\n  \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\",\n  \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\",\n  \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\",\n  \"asciicircum\", \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\",\n  \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\",\n  \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"exclamdown\",\n  \"cent\", \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\",\n  \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\",\n  \"guilsinglright\", \"fi\", \"fl\", \"\", \"endash\", \"dagger\", \"daggerdbl\",\n  \"periodcentered\", \"\", \"paragraph\", \"bullet\", \"quotesinglbase\",\n  \"quotedblbase\", \"quotedblright\", \"guillemotright\", \"ellipsis\",\n  \"perthousand\", \"\", \"questiondown\", \"\", \"grave\", \"acute\", \"circumflex\",\n  \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"\", \"ring\", \"cedilla\",\n  \"\", \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"AE\", \"\", \"ordfeminine\", \"\", \"\",\n  \"\", \"\", \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"\", \"\", \"\", \"\", \"\", \"ae\",\n  \"\", \"\", \"\", \"dotlessi\", \"\", \"\", \"lslash\", \"oslash\", \"oe\", \"germandbls\", \"\",\n  \"\", \"\", \"\"];\n\n// prettier-ignore\nconst WinAnsiEncoding = [\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n  \"ampersand\", \"quotesingle\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n  \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\",\n  \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\",\n  \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\",\n  \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\",\n  \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\",\n  \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\",\n  \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\",\n  \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\",\n  \"bullet\", \"Euro\", \"bullet\", \"quotesinglbase\", \"florin\", \"quotedblbase\",\n  \"ellipsis\", \"dagger\", \"daggerdbl\", \"circumflex\", \"perthousand\", \"Scaron\",\n  \"guilsinglleft\", \"OE\", \"bullet\", \"Zcaron\", \"bullet\", \"bullet\", \"quoteleft\",\n  \"quoteright\", \"quotedblleft\", \"quotedblright\", \"bullet\", \"endash\",\n  \"emdash\", \"tilde\", \"trademark\", \"scaron\", \"guilsinglright\", \"oe\", \"bullet\",\n  \"zcaron\", \"Ydieresis\", \"space\", \"exclamdown\", \"cent\", \"sterling\",\n  \"currency\", \"yen\", \"brokenbar\", \"section\", \"dieresis\", \"copyright\",\n  \"ordfeminine\", \"guillemotleft\", \"logicalnot\", \"hyphen\", \"registered\",\n  \"macron\", \"degree\", \"plusminus\", \"twosuperior\", \"threesuperior\", \"acute\",\n  \"mu\", \"paragraph\", \"periodcentered\", \"cedilla\", \"onesuperior\",\n  \"ordmasculine\", \"guillemotright\", \"onequarter\", \"onehalf\", \"threequarters\",\n  \"questiondown\", \"Agrave\", \"Aacute\", \"Acircumflex\", \"Atilde\", \"Adieresis\",\n  \"Aring\", \"AE\", \"Ccedilla\", \"Egrave\", \"Eacute\", \"Ecircumflex\", \"Edieresis\",\n  \"Igrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Eth\", \"Ntilde\", \"Ograve\",\n  \"Oacute\", \"Ocircumflex\", \"Otilde\", \"Odieresis\", \"multiply\", \"Oslash\",\n  \"Ugrave\", \"Uacute\", \"Ucircumflex\", \"Udieresis\", \"Yacute\", \"Thorn\",\n  \"germandbls\", \"agrave\", \"aacute\", \"acircumflex\", \"atilde\", \"adieresis\",\n  \"aring\", \"ae\", \"ccedilla\", \"egrave\", \"eacute\", \"ecircumflex\", \"edieresis\",\n  \"igrave\", \"iacute\", \"icircumflex\", \"idieresis\", \"eth\", \"ntilde\", \"ograve\",\n  \"oacute\", \"ocircumflex\", \"otilde\", \"odieresis\", \"divide\", \"oslash\",\n  \"ugrave\", \"uacute\", \"ucircumflex\", \"udieresis\", \"yacute\", \"thorn\",\n  \"ydieresis\"];\n\n// prettier-ignore\nconst SymbolSetEncoding = [\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"space\", \"exclam\", \"universal\", \"numbersign\", \"existential\", \"percent\",\n  \"ampersand\", \"suchthat\", \"parenleft\", \"parenright\", \"asteriskmath\", \"plus\",\n  \"comma\", \"minus\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\",\n  \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\",\n  \"equal\", \"greater\", \"question\", \"congruent\", \"Alpha\", \"Beta\", \"Chi\",\n  \"Delta\", \"Epsilon\", \"Phi\", \"Gamma\", \"Eta\", \"Iota\", \"theta1\", \"Kappa\",\n  \"Lambda\", \"Mu\", \"Nu\", \"Omicron\", \"Pi\", \"Theta\", \"Rho\", \"Sigma\", \"Tau\",\n  \"Upsilon\", \"sigma1\", \"Omega\", \"Xi\", \"Psi\", \"Zeta\", \"bracketleft\",\n  \"therefore\", \"bracketright\", \"perpendicular\", \"underscore\", \"radicalex\",\n  \"alpha\", \"beta\", \"chi\", \"delta\", \"epsilon\", \"phi\", \"gamma\", \"eta\", \"iota\",\n  \"phi1\", \"kappa\", \"lambda\", \"mu\", \"nu\", \"omicron\", \"pi\", \"theta\", \"rho\",\n  \"sigma\", \"tau\", \"upsilon\", \"omega1\", \"omega\", \"xi\", \"psi\", \"zeta\",\n  \"braceleft\", \"bar\", \"braceright\", \"similar\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"Euro\", \"Upsilon1\", \"minute\", \"lessequal\",\n  \"fraction\", \"infinity\", \"florin\", \"club\", \"diamond\", \"heart\", \"spade\",\n  \"arrowboth\", \"arrowleft\", \"arrowup\", \"arrowright\", \"arrowdown\", \"degree\",\n  \"plusminus\", \"second\", \"greaterequal\", \"multiply\", \"proportional\",\n  \"partialdiff\", \"bullet\", \"divide\", \"notequal\", \"equivalence\",\n  \"approxequal\", \"ellipsis\", \"arrowvertex\", \"arrowhorizex\", \"carriagereturn\",\n  \"aleph\", \"Ifraktur\", \"Rfraktur\", \"weierstrass\", \"circlemultiply\",\n  \"circleplus\", \"emptyset\", \"intersection\", \"union\", \"propersuperset\",\n  \"reflexsuperset\", \"notsubset\", \"propersubset\", \"reflexsubset\", \"element\",\n  \"notelement\", \"angle\", \"gradient\", \"registerserif\", \"copyrightserif\",\n  \"trademarkserif\", \"product\", \"radical\", \"dotmath\", \"logicalnot\",\n  \"logicaland\", \"logicalor\", \"arrowdblboth\", \"arrowdblleft\", \"arrowdblup\",\n  \"arrowdblright\", \"arrowdbldown\", \"lozenge\", \"angleleft\", \"registersans\",\n  \"copyrightsans\", \"trademarksans\", \"summation\", \"parenlefttp\",\n  \"parenleftex\", \"parenleftbt\", \"bracketlefttp\", \"bracketleftex\",\n  \"bracketleftbt\", \"bracelefttp\", \"braceleftmid\", \"braceleftbt\", \"braceex\",\n  \"\", \"angleright\", \"integral\", \"integraltp\", \"integralex\", \"integralbt\",\n  \"parenrighttp\", \"parenrightex\", \"parenrightbt\", \"bracketrighttp\",\n  \"bracketrightex\", \"bracketrightbt\", \"bracerighttp\", \"bracerightmid\",\n  \"bracerightbt\", \"\"];\n\n// prettier-ignore\nconst ZapfDingbatsEncoding = [\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"space\", \"a1\", \"a2\", \"a202\", \"a3\", \"a4\", \"a5\", \"a119\", \"a118\", \"a117\",\n  \"a11\", \"a12\", \"a13\", \"a14\", \"a15\", \"a16\", \"a105\", \"a17\", \"a18\", \"a19\",\n  \"a20\", \"a21\", \"a22\", \"a23\", \"a24\", \"a25\", \"a26\", \"a27\", \"a28\", \"a6\", \"a7\",\n  \"a8\", \"a9\", \"a10\", \"a29\", \"a30\", \"a31\", \"a32\", \"a33\", \"a34\", \"a35\", \"a36\",\n  \"a37\", \"a38\", \"a39\", \"a40\", \"a41\", \"a42\", \"a43\", \"a44\", \"a45\", \"a46\",\n  \"a47\", \"a48\", \"a49\", \"a50\", \"a51\", \"a52\", \"a53\", \"a54\", \"a55\", \"a56\",\n  \"a57\", \"a58\", \"a59\", \"a60\", \"a61\", \"a62\", \"a63\", \"a64\", \"a65\", \"a66\",\n  \"a67\", \"a68\", \"a69\", \"a70\", \"a71\", \"a72\", \"a73\", \"a74\", \"a203\", \"a75\",\n  \"a204\", \"a76\", \"a77\", \"a78\", \"a79\", \"a81\", \"a82\", \"a83\", \"a84\", \"a97\",\n  \"a98\", \"a99\", \"a100\", \"\", \"a89\", \"a90\", \"a93\", \"a94\", \"a91\", \"a92\", \"a205\",\n  \"a85\", \"a206\", \"a86\", \"a87\", \"a88\", \"a95\", \"a96\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"a101\", \"a102\", \"a103\",\n  \"a104\", \"a106\", \"a107\", \"a108\", \"a112\", \"a111\", \"a110\", \"a109\", \"a120\",\n  \"a121\", \"a122\", \"a123\", \"a124\", \"a125\", \"a126\", \"a127\", \"a128\", \"a129\",\n  \"a130\", \"a131\", \"a132\", \"a133\", \"a134\", \"a135\", \"a136\", \"a137\", \"a138\",\n  \"a139\", \"a140\", \"a141\", \"a142\", \"a143\", \"a144\", \"a145\", \"a146\", \"a147\",\n  \"a148\", \"a149\", \"a150\", \"a151\", \"a152\", \"a153\", \"a154\", \"a155\", \"a156\",\n  \"a157\", \"a158\", \"a159\", \"a160\", \"a161\", \"a163\", \"a164\", \"a196\", \"a165\",\n  \"a192\", \"a166\", \"a167\", \"a168\", \"a169\", \"a170\", \"a171\", \"a172\", \"a173\",\n  \"a162\", \"a174\", \"a175\", \"a176\", \"a177\", \"a178\", \"a179\", \"a193\", \"a180\",\n  \"a199\", \"a181\", \"a200\", \"a182\", \"\", \"a201\", \"a183\", \"a184\", \"a197\", \"a185\",\n  \"a194\", \"a198\", \"a186\", \"a195\", \"a187\", \"a188\", \"a189\", \"a190\", \"a191\", \"\"];\n\nfunction getEncoding(encodingName) {\n  switch (encodingName) {\n    case \"WinAnsiEncoding\":\n      return WinAnsiEncoding;\n    case \"StandardEncoding\":\n      return StandardEncoding;\n    case \"MacRomanEncoding\":\n      return MacRomanEncoding;\n    case \"SymbolSetEncoding\":\n      return SymbolSetEncoding;\n    case \"ZapfDingbatsEncoding\":\n      return ZapfDingbatsEncoding;\n    case \"ExpertEncoding\":\n      return ExpertEncoding;\n    case \"MacExpertEncoding\":\n      return MacExpertEncoding;\n    default:\n      return null;\n  }\n}\n\nexport {\n  WinAnsiEncoding,\n  StandardEncoding,\n  MacRomanEncoding,\n  SymbolSetEncoding,\n  ZapfDingbatsEncoding,\n  ExpertEncoding,\n  getEncoding,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* no-babel-preset */\n\nvar getLookupTableFactory = require(\"./core_utils.js\").getLookupTableFactory;\n\nvar getGlyphsUnicode = getLookupTableFactory(function (t) {\n  t.A = 0x0041;\n  t.AE = 0x00c6;\n  t.AEacute = 0x01fc;\n  t.AEmacron = 0x01e2;\n  t.AEsmall = 0xf7e6;\n  t.Aacute = 0x00c1;\n  t.Aacutesmall = 0xf7e1;\n  t.Abreve = 0x0102;\n  t.Abreveacute = 0x1eae;\n  t.Abrevecyrillic = 0x04d0;\n  t.Abrevedotbelow = 0x1eb6;\n  t.Abrevegrave = 0x1eb0;\n  t.Abrevehookabove = 0x1eb2;\n  t.Abrevetilde = 0x1eb4;\n  t.Acaron = 0x01cd;\n  t.Acircle = 0x24b6;\n  t.Acircumflex = 0x00c2;\n  t.Acircumflexacute = 0x1ea4;\n  t.Acircumflexdotbelow = 0x1eac;\n  t.Acircumflexgrave = 0x1ea6;\n  t.Acircumflexhookabove = 0x1ea8;\n  t.Acircumflexsmall = 0xf7e2;\n  t.Acircumflextilde = 0x1eaa;\n  t.Acute = 0xf6c9;\n  t.Acutesmall = 0xf7b4;\n  t.Acyrillic = 0x0410;\n  t.Adblgrave = 0x0200;\n  t.Adieresis = 0x00c4;\n  t.Adieresiscyrillic = 0x04d2;\n  t.Adieresismacron = 0x01de;\n  t.Adieresissmall = 0xf7e4;\n  t.Adotbelow = 0x1ea0;\n  t.Adotmacron = 0x01e0;\n  t.Agrave = 0x00c0;\n  t.Agravesmall = 0xf7e0;\n  t.Ahookabove = 0x1ea2;\n  t.Aiecyrillic = 0x04d4;\n  t.Ainvertedbreve = 0x0202;\n  t.Alpha = 0x0391;\n  t.Alphatonos = 0x0386;\n  t.Amacron = 0x0100;\n  t.Amonospace = 0xff21;\n  t.Aogonek = 0x0104;\n  t.Aring = 0x00c5;\n  t.Aringacute = 0x01fa;\n  t.Aringbelow = 0x1e00;\n  t.Aringsmall = 0xf7e5;\n  t.Asmall = 0xf761;\n  t.Atilde = 0x00c3;\n  t.Atildesmall = 0xf7e3;\n  t.Aybarmenian = 0x0531;\n  t.B = 0x0042;\n  t.Bcircle = 0x24b7;\n  t.Bdotaccent = 0x1e02;\n  t.Bdotbelow = 0x1e04;\n  t.Becyrillic = 0x0411;\n  t.Benarmenian = 0x0532;\n  t.Beta = 0x0392;\n  t.Bhook = 0x0181;\n  t.Blinebelow = 0x1e06;\n  t.Bmonospace = 0xff22;\n  t.Brevesmall = 0xf6f4;\n  t.Bsmall = 0xf762;\n  t.Btopbar = 0x0182;\n  t.C = 0x0043;\n  t.Caarmenian = 0x053e;\n  t.Cacute = 0x0106;\n  t.Caron = 0xf6ca;\n  t.Caronsmall = 0xf6f5;\n  t.Ccaron = 0x010c;\n  t.Ccedilla = 0x00c7;\n  t.Ccedillaacute = 0x1e08;\n  t.Ccedillasmall = 0xf7e7;\n  t.Ccircle = 0x24b8;\n  t.Ccircumflex = 0x0108;\n  t.Cdot = 0x010a;\n  t.Cdotaccent = 0x010a;\n  t.Cedillasmall = 0xf7b8;\n  t.Chaarmenian = 0x0549;\n  t.Cheabkhasiancyrillic = 0x04bc;\n  t.Checyrillic = 0x0427;\n  t.Chedescenderabkhasiancyrillic = 0x04be;\n  t.Chedescendercyrillic = 0x04b6;\n  t.Chedieresiscyrillic = 0x04f4;\n  t.Cheharmenian = 0x0543;\n  t.Chekhakassiancyrillic = 0x04cb;\n  t.Cheverticalstrokecyrillic = 0x04b8;\n  t.Chi = 0x03a7;\n  t.Chook = 0x0187;\n  t.Circumflexsmall = 0xf6f6;\n  t.Cmonospace = 0xff23;\n  t.Coarmenian = 0x0551;\n  t.Csmall = 0xf763;\n  t.D = 0x0044;\n  t.DZ = 0x01f1;\n  t.DZcaron = 0x01c4;\n  t.Daarmenian = 0x0534;\n  t.Dafrican = 0x0189;\n  t.Dcaron = 0x010e;\n  t.Dcedilla = 0x1e10;\n  t.Dcircle = 0x24b9;\n  t.Dcircumflexbelow = 0x1e12;\n  t.Dcroat = 0x0110;\n  t.Ddotaccent = 0x1e0a;\n  t.Ddotbelow = 0x1e0c;\n  t.Decyrillic = 0x0414;\n  t.Deicoptic = 0x03ee;\n  t.Delta = 0x2206;\n  t.Deltagreek = 0x0394;\n  t.Dhook = 0x018a;\n  t.Dieresis = 0xf6cb;\n  t.DieresisAcute = 0xf6cc;\n  t.DieresisGrave = 0xf6cd;\n  t.Dieresissmall = 0xf7a8;\n  t.Digammagreek = 0x03dc;\n  t.Djecyrillic = 0x0402;\n  t.Dlinebelow = 0x1e0e;\n  t.Dmonospace = 0xff24;\n  t.Dotaccentsmall = 0xf6f7;\n  t.Dslash = 0x0110;\n  t.Dsmall = 0xf764;\n  t.Dtopbar = 0x018b;\n  t.Dz = 0x01f2;\n  t.Dzcaron = 0x01c5;\n  t.Dzeabkhasiancyrillic = 0x04e0;\n  t.Dzecyrillic = 0x0405;\n  t.Dzhecyrillic = 0x040f;\n  t.E = 0x0045;\n  t.Eacute = 0x00c9;\n  t.Eacutesmall = 0xf7e9;\n  t.Ebreve = 0x0114;\n  t.Ecaron = 0x011a;\n  t.Ecedillabreve = 0x1e1c;\n  t.Echarmenian = 0x0535;\n  t.Ecircle = 0x24ba;\n  t.Ecircumflex = 0x00ca;\n  t.Ecircumflexacute = 0x1ebe;\n  t.Ecircumflexbelow = 0x1e18;\n  t.Ecircumflexdotbelow = 0x1ec6;\n  t.Ecircumflexgrave = 0x1ec0;\n  t.Ecircumflexhookabove = 0x1ec2;\n  t.Ecircumflexsmall = 0xf7ea;\n  t.Ecircumflextilde = 0x1ec4;\n  t.Ecyrillic = 0x0404;\n  t.Edblgrave = 0x0204;\n  t.Edieresis = 0x00cb;\n  t.Edieresissmall = 0xf7eb;\n  t.Edot = 0x0116;\n  t.Edotaccent = 0x0116;\n  t.Edotbelow = 0x1eb8;\n  t.Efcyrillic = 0x0424;\n  t.Egrave = 0x00c8;\n  t.Egravesmall = 0xf7e8;\n  t.Eharmenian = 0x0537;\n  t.Ehookabove = 0x1eba;\n  t.Eightroman = 0x2167;\n  t.Einvertedbreve = 0x0206;\n  t.Eiotifiedcyrillic = 0x0464;\n  t.Elcyrillic = 0x041b;\n  t.Elevenroman = 0x216a;\n  t.Emacron = 0x0112;\n  t.Emacronacute = 0x1e16;\n  t.Emacrongrave = 0x1e14;\n  t.Emcyrillic = 0x041c;\n  t.Emonospace = 0xff25;\n  t.Encyrillic = 0x041d;\n  t.Endescendercyrillic = 0x04a2;\n  t.Eng = 0x014a;\n  t.Enghecyrillic = 0x04a4;\n  t.Enhookcyrillic = 0x04c7;\n  t.Eogonek = 0x0118;\n  t.Eopen = 0x0190;\n  t.Epsilon = 0x0395;\n  t.Epsilontonos = 0x0388;\n  t.Ercyrillic = 0x0420;\n  t.Ereversed = 0x018e;\n  t.Ereversedcyrillic = 0x042d;\n  t.Escyrillic = 0x0421;\n  t.Esdescendercyrillic = 0x04aa;\n  t.Esh = 0x01a9;\n  t.Esmall = 0xf765;\n  t.Eta = 0x0397;\n  t.Etarmenian = 0x0538;\n  t.Etatonos = 0x0389;\n  t.Eth = 0x00d0;\n  t.Ethsmall = 0xf7f0;\n  t.Etilde = 0x1ebc;\n  t.Etildebelow = 0x1e1a;\n  t.Euro = 0x20ac;\n  t.Ezh = 0x01b7;\n  t.Ezhcaron = 0x01ee;\n  t.Ezhreversed = 0x01b8;\n  t.F = 0x0046;\n  t.Fcircle = 0x24bb;\n  t.Fdotaccent = 0x1e1e;\n  t.Feharmenian = 0x0556;\n  t.Feicoptic = 0x03e4;\n  t.Fhook = 0x0191;\n  t.Fitacyrillic = 0x0472;\n  t.Fiveroman = 0x2164;\n  t.Fmonospace = 0xff26;\n  t.Fourroman = 0x2163;\n  t.Fsmall = 0xf766;\n  t.G = 0x0047;\n  t.GBsquare = 0x3387;\n  t.Gacute = 0x01f4;\n  t.Gamma = 0x0393;\n  t.Gammaafrican = 0x0194;\n  t.Gangiacoptic = 0x03ea;\n  t.Gbreve = 0x011e;\n  t.Gcaron = 0x01e6;\n  t.Gcedilla = 0x0122;\n  t.Gcircle = 0x24bc;\n  t.Gcircumflex = 0x011c;\n  t.Gcommaaccent = 0x0122;\n  t.Gdot = 0x0120;\n  t.Gdotaccent = 0x0120;\n  t.Gecyrillic = 0x0413;\n  t.Ghadarmenian = 0x0542;\n  t.Ghemiddlehookcyrillic = 0x0494;\n  t.Ghestrokecyrillic = 0x0492;\n  t.Gheupturncyrillic = 0x0490;\n  t.Ghook = 0x0193;\n  t.Gimarmenian = 0x0533;\n  t.Gjecyrillic = 0x0403;\n  t.Gmacron = 0x1e20;\n  t.Gmonospace = 0xff27;\n  t.Grave = 0xf6ce;\n  t.Gravesmall = 0xf760;\n  t.Gsmall = 0xf767;\n  t.Gsmallhook = 0x029b;\n  t.Gstroke = 0x01e4;\n  t.H = 0x0048;\n  t.H18533 = 0x25cf;\n  t.H18543 = 0x25aa;\n  t.H18551 = 0x25ab;\n  t.H22073 = 0x25a1;\n  t.HPsquare = 0x33cb;\n  t.Haabkhasiancyrillic = 0x04a8;\n  t.Hadescendercyrillic = 0x04b2;\n  t.Hardsigncyrillic = 0x042a;\n  t.Hbar = 0x0126;\n  t.Hbrevebelow = 0x1e2a;\n  t.Hcedilla = 0x1e28;\n  t.Hcircle = 0x24bd;\n  t.Hcircumflex = 0x0124;\n  t.Hdieresis = 0x1e26;\n  t.Hdotaccent = 0x1e22;\n  t.Hdotbelow = 0x1e24;\n  t.Hmonospace = 0xff28;\n  t.Hoarmenian = 0x0540;\n  t.Horicoptic = 0x03e8;\n  t.Hsmall = 0xf768;\n  t.Hungarumlaut = 0xf6cf;\n  t.Hungarumlautsmall = 0xf6f8;\n  t.Hzsquare = 0x3390;\n  t.I = 0x0049;\n  t.IAcyrillic = 0x042f;\n  t.IJ = 0x0132;\n  t.IUcyrillic = 0x042e;\n  t.Iacute = 0x00cd;\n  t.Iacutesmall = 0xf7ed;\n  t.Ibreve = 0x012c;\n  t.Icaron = 0x01cf;\n  t.Icircle = 0x24be;\n  t.Icircumflex = 0x00ce;\n  t.Icircumflexsmall = 0xf7ee;\n  t.Icyrillic = 0x0406;\n  t.Idblgrave = 0x0208;\n  t.Idieresis = 0x00cf;\n  t.Idieresisacute = 0x1e2e;\n  t.Idieresiscyrillic = 0x04e4;\n  t.Idieresissmall = 0xf7ef;\n  t.Idot = 0x0130;\n  t.Idotaccent = 0x0130;\n  t.Idotbelow = 0x1eca;\n  t.Iebrevecyrillic = 0x04d6;\n  t.Iecyrillic = 0x0415;\n  t.Ifraktur = 0x2111;\n  t.Igrave = 0x00cc;\n  t.Igravesmall = 0xf7ec;\n  t.Ihookabove = 0x1ec8;\n  t.Iicyrillic = 0x0418;\n  t.Iinvertedbreve = 0x020a;\n  t.Iishortcyrillic = 0x0419;\n  t.Imacron = 0x012a;\n  t.Imacroncyrillic = 0x04e2;\n  t.Imonospace = 0xff29;\n  t.Iniarmenian = 0x053b;\n  t.Iocyrillic = 0x0401;\n  t.Iogonek = 0x012e;\n  t.Iota = 0x0399;\n  t.Iotaafrican = 0x0196;\n  t.Iotadieresis = 0x03aa;\n  t.Iotatonos = 0x038a;\n  t.Ismall = 0xf769;\n  t.Istroke = 0x0197;\n  t.Itilde = 0x0128;\n  t.Itildebelow = 0x1e2c;\n  t.Izhitsacyrillic = 0x0474;\n  t.Izhitsadblgravecyrillic = 0x0476;\n  t.J = 0x004a;\n  t.Jaarmenian = 0x0541;\n  t.Jcircle = 0x24bf;\n  t.Jcircumflex = 0x0134;\n  t.Jecyrillic = 0x0408;\n  t.Jheharmenian = 0x054b;\n  t.Jmonospace = 0xff2a;\n  t.Jsmall = 0xf76a;\n  t.K = 0x004b;\n  t.KBsquare = 0x3385;\n  t.KKsquare = 0x33cd;\n  t.Kabashkircyrillic = 0x04a0;\n  t.Kacute = 0x1e30;\n  t.Kacyrillic = 0x041a;\n  t.Kadescendercyrillic = 0x049a;\n  t.Kahookcyrillic = 0x04c3;\n  t.Kappa = 0x039a;\n  t.Kastrokecyrillic = 0x049e;\n  t.Kaverticalstrokecyrillic = 0x049c;\n  t.Kcaron = 0x01e8;\n  t.Kcedilla = 0x0136;\n  t.Kcircle = 0x24c0;\n  t.Kcommaaccent = 0x0136;\n  t.Kdotbelow = 0x1e32;\n  t.Keharmenian = 0x0554;\n  t.Kenarmenian = 0x053f;\n  t.Khacyrillic = 0x0425;\n  t.Kheicoptic = 0x03e6;\n  t.Khook = 0x0198;\n  t.Kjecyrillic = 0x040c;\n  t.Klinebelow = 0x1e34;\n  t.Kmonospace = 0xff2b;\n  t.Koppacyrillic = 0x0480;\n  t.Koppagreek = 0x03de;\n  t.Ksicyrillic = 0x046e;\n  t.Ksmall = 0xf76b;\n  t.L = 0x004c;\n  t.LJ = 0x01c7;\n  t.LL = 0xf6bf;\n  t.Lacute = 0x0139;\n  t.Lambda = 0x039b;\n  t.Lcaron = 0x013d;\n  t.Lcedilla = 0x013b;\n  t.Lcircle = 0x24c1;\n  t.Lcircumflexbelow = 0x1e3c;\n  t.Lcommaaccent = 0x013b;\n  t.Ldot = 0x013f;\n  t.Ldotaccent = 0x013f;\n  t.Ldotbelow = 0x1e36;\n  t.Ldotbelowmacron = 0x1e38;\n  t.Liwnarmenian = 0x053c;\n  t.Lj = 0x01c8;\n  t.Ljecyrillic = 0x0409;\n  t.Llinebelow = 0x1e3a;\n  t.Lmonospace = 0xff2c;\n  t.Lslash = 0x0141;\n  t.Lslashsmall = 0xf6f9;\n  t.Lsmall = 0xf76c;\n  t.M = 0x004d;\n  t.MBsquare = 0x3386;\n  t.Macron = 0xf6d0;\n  t.Macronsmall = 0xf7af;\n  t.Macute = 0x1e3e;\n  t.Mcircle = 0x24c2;\n  t.Mdotaccent = 0x1e40;\n  t.Mdotbelow = 0x1e42;\n  t.Menarmenian = 0x0544;\n  t.Mmonospace = 0xff2d;\n  t.Msmall = 0xf76d;\n  t.Mturned = 0x019c;\n  t.Mu = 0x039c;\n  t.N = 0x004e;\n  t.NJ = 0x01ca;\n  t.Nacute = 0x0143;\n  t.Ncaron = 0x0147;\n  t.Ncedilla = 0x0145;\n  t.Ncircle = 0x24c3;\n  t.Ncircumflexbelow = 0x1e4a;\n  t.Ncommaaccent = 0x0145;\n  t.Ndotaccent = 0x1e44;\n  t.Ndotbelow = 0x1e46;\n  t.Nhookleft = 0x019d;\n  t.Nineroman = 0x2168;\n  t.Nj = 0x01cb;\n  t.Njecyrillic = 0x040a;\n  t.Nlinebelow = 0x1e48;\n  t.Nmonospace = 0xff2e;\n  t.Nowarmenian = 0x0546;\n  t.Nsmall = 0xf76e;\n  t.Ntilde = 0x00d1;\n  t.Ntildesmall = 0xf7f1;\n  t.Nu = 0x039d;\n  t.O = 0x004f;\n  t.OE = 0x0152;\n  t.OEsmall = 0xf6fa;\n  t.Oacute = 0x00d3;\n  t.Oacutesmall = 0xf7f3;\n  t.Obarredcyrillic = 0x04e8;\n  t.Obarreddieresiscyrillic = 0x04ea;\n  t.Obreve = 0x014e;\n  t.Ocaron = 0x01d1;\n  t.Ocenteredtilde = 0x019f;\n  t.Ocircle = 0x24c4;\n  t.Ocircumflex = 0x00d4;\n  t.Ocircumflexacute = 0x1ed0;\n  t.Ocircumflexdotbelow = 0x1ed8;\n  t.Ocircumflexgrave = 0x1ed2;\n  t.Ocircumflexhookabove = 0x1ed4;\n  t.Ocircumflexsmall = 0xf7f4;\n  t.Ocircumflextilde = 0x1ed6;\n  t.Ocyrillic = 0x041e;\n  t.Odblacute = 0x0150;\n  t.Odblgrave = 0x020c;\n  t.Odieresis = 0x00d6;\n  t.Odieresiscyrillic = 0x04e6;\n  t.Odieresissmall = 0xf7f6;\n  t.Odotbelow = 0x1ecc;\n  t.Ogoneksmall = 0xf6fb;\n  t.Ograve = 0x00d2;\n  t.Ogravesmall = 0xf7f2;\n  t.Oharmenian = 0x0555;\n  t.Ohm = 0x2126;\n  t.Ohookabove = 0x1ece;\n  t.Ohorn = 0x01a0;\n  t.Ohornacute = 0x1eda;\n  t.Ohorndotbelow = 0x1ee2;\n  t.Ohorngrave = 0x1edc;\n  t.Ohornhookabove = 0x1ede;\n  t.Ohorntilde = 0x1ee0;\n  t.Ohungarumlaut = 0x0150;\n  t.Oi = 0x01a2;\n  t.Oinvertedbreve = 0x020e;\n  t.Omacron = 0x014c;\n  t.Omacronacute = 0x1e52;\n  t.Omacrongrave = 0x1e50;\n  t.Omega = 0x2126;\n  t.Omegacyrillic = 0x0460;\n  t.Omegagreek = 0x03a9;\n  t.Omegaroundcyrillic = 0x047a;\n  t.Omegatitlocyrillic = 0x047c;\n  t.Omegatonos = 0x038f;\n  t.Omicron = 0x039f;\n  t.Omicrontonos = 0x038c;\n  t.Omonospace = 0xff2f;\n  t.Oneroman = 0x2160;\n  t.Oogonek = 0x01ea;\n  t.Oogonekmacron = 0x01ec;\n  t.Oopen = 0x0186;\n  t.Oslash = 0x00d8;\n  t.Oslashacute = 0x01fe;\n  t.Oslashsmall = 0xf7f8;\n  t.Osmall = 0xf76f;\n  t.Ostrokeacute = 0x01fe;\n  t.Otcyrillic = 0x047e;\n  t.Otilde = 0x00d5;\n  t.Otildeacute = 0x1e4c;\n  t.Otildedieresis = 0x1e4e;\n  t.Otildesmall = 0xf7f5;\n  t.P = 0x0050;\n  t.Pacute = 0x1e54;\n  t.Pcircle = 0x24c5;\n  t.Pdotaccent = 0x1e56;\n  t.Pecyrillic = 0x041f;\n  t.Peharmenian = 0x054a;\n  t.Pemiddlehookcyrillic = 0x04a6;\n  t.Phi = 0x03a6;\n  t.Phook = 0x01a4;\n  t.Pi = 0x03a0;\n  t.Piwrarmenian = 0x0553;\n  t.Pmonospace = 0xff30;\n  t.Psi = 0x03a8;\n  t.Psicyrillic = 0x0470;\n  t.Psmall = 0xf770;\n  t.Q = 0x0051;\n  t.Qcircle = 0x24c6;\n  t.Qmonospace = 0xff31;\n  t.Qsmall = 0xf771;\n  t.R = 0x0052;\n  t.Raarmenian = 0x054c;\n  t.Racute = 0x0154;\n  t.Rcaron = 0x0158;\n  t.Rcedilla = 0x0156;\n  t.Rcircle = 0x24c7;\n  t.Rcommaaccent = 0x0156;\n  t.Rdblgrave = 0x0210;\n  t.Rdotaccent = 0x1e58;\n  t.Rdotbelow = 0x1e5a;\n  t.Rdotbelowmacron = 0x1e5c;\n  t.Reharmenian = 0x0550;\n  t.Rfraktur = 0x211c;\n  t.Rho = 0x03a1;\n  t.Ringsmall = 0xf6fc;\n  t.Rinvertedbreve = 0x0212;\n  t.Rlinebelow = 0x1e5e;\n  t.Rmonospace = 0xff32;\n  t.Rsmall = 0xf772;\n  t.Rsmallinverted = 0x0281;\n  t.Rsmallinvertedsuperior = 0x02b6;\n  t.S = 0x0053;\n  t.SF010000 = 0x250c;\n  t.SF020000 = 0x2514;\n  t.SF030000 = 0x2510;\n  t.SF040000 = 0x2518;\n  t.SF050000 = 0x253c;\n  t.SF060000 = 0x252c;\n  t.SF070000 = 0x2534;\n  t.SF080000 = 0x251c;\n  t.SF090000 = 0x2524;\n  t.SF100000 = 0x2500;\n  t.SF110000 = 0x2502;\n  t.SF190000 = 0x2561;\n  t.SF200000 = 0x2562;\n  t.SF210000 = 0x2556;\n  t.SF220000 = 0x2555;\n  t.SF230000 = 0x2563;\n  t.SF240000 = 0x2551;\n  t.SF250000 = 0x2557;\n  t.SF260000 = 0x255d;\n  t.SF270000 = 0x255c;\n  t.SF280000 = 0x255b;\n  t.SF360000 = 0x255e;\n  t.SF370000 = 0x255f;\n  t.SF380000 = 0x255a;\n  t.SF390000 = 0x2554;\n  t.SF400000 = 0x2569;\n  t.SF410000 = 0x2566;\n  t.SF420000 = 0x2560;\n  t.SF430000 = 0x2550;\n  t.SF440000 = 0x256c;\n  t.SF450000 = 0x2567;\n  t.SF460000 = 0x2568;\n  t.SF470000 = 0x2564;\n  t.SF480000 = 0x2565;\n  t.SF490000 = 0x2559;\n  t.SF500000 = 0x2558;\n  t.SF510000 = 0x2552;\n  t.SF520000 = 0x2553;\n  t.SF530000 = 0x256b;\n  t.SF540000 = 0x256a;\n  t.Sacute = 0x015a;\n  t.Sacutedotaccent = 0x1e64;\n  t.Sampigreek = 0x03e0;\n  t.Scaron = 0x0160;\n  t.Scarondotaccent = 0x1e66;\n  t.Scaronsmall = 0xf6fd;\n  t.Scedilla = 0x015e;\n  t.Schwa = 0x018f;\n  t.Schwacyrillic = 0x04d8;\n  t.Schwadieresiscyrillic = 0x04da;\n  t.Scircle = 0x24c8;\n  t.Scircumflex = 0x015c;\n  t.Scommaaccent = 0x0218;\n  t.Sdotaccent = 0x1e60;\n  t.Sdotbelow = 0x1e62;\n  t.Sdotbelowdotaccent = 0x1e68;\n  t.Seharmenian = 0x054d;\n  t.Sevenroman = 0x2166;\n  t.Shaarmenian = 0x0547;\n  t.Shacyrillic = 0x0428;\n  t.Shchacyrillic = 0x0429;\n  t.Sheicoptic = 0x03e2;\n  t.Shhacyrillic = 0x04ba;\n  t.Shimacoptic = 0x03ec;\n  t.Sigma = 0x03a3;\n  t.Sixroman = 0x2165;\n  t.Smonospace = 0xff33;\n  t.Softsigncyrillic = 0x042c;\n  t.Ssmall = 0xf773;\n  t.Stigmagreek = 0x03da;\n  t.T = 0x0054;\n  t.Tau = 0x03a4;\n  t.Tbar = 0x0166;\n  t.Tcaron = 0x0164;\n  t.Tcedilla = 0x0162;\n  t.Tcircle = 0x24c9;\n  t.Tcircumflexbelow = 0x1e70;\n  t.Tcommaaccent = 0x0162;\n  t.Tdotaccent = 0x1e6a;\n  t.Tdotbelow = 0x1e6c;\n  t.Tecyrillic = 0x0422;\n  t.Tedescendercyrillic = 0x04ac;\n  t.Tenroman = 0x2169;\n  t.Tetsecyrillic = 0x04b4;\n  t.Theta = 0x0398;\n  t.Thook = 0x01ac;\n  t.Thorn = 0x00de;\n  t.Thornsmall = 0xf7fe;\n  t.Threeroman = 0x2162;\n  t.Tildesmall = 0xf6fe;\n  t.Tiwnarmenian = 0x054f;\n  t.Tlinebelow = 0x1e6e;\n  t.Tmonospace = 0xff34;\n  t.Toarmenian = 0x0539;\n  t.Tonefive = 0x01bc;\n  t.Tonesix = 0x0184;\n  t.Tonetwo = 0x01a7;\n  t.Tretroflexhook = 0x01ae;\n  t.Tsecyrillic = 0x0426;\n  t.Tshecyrillic = 0x040b;\n  t.Tsmall = 0xf774;\n  t.Twelveroman = 0x216b;\n  t.Tworoman = 0x2161;\n  t.U = 0x0055;\n  t.Uacute = 0x00da;\n  t.Uacutesmall = 0xf7fa;\n  t.Ubreve = 0x016c;\n  t.Ucaron = 0x01d3;\n  t.Ucircle = 0x24ca;\n  t.Ucircumflex = 0x00db;\n  t.Ucircumflexbelow = 0x1e76;\n  t.Ucircumflexsmall = 0xf7fb;\n  t.Ucyrillic = 0x0423;\n  t.Udblacute = 0x0170;\n  t.Udblgrave = 0x0214;\n  t.Udieresis = 0x00dc;\n  t.Udieresisacute = 0x01d7;\n  t.Udieresisbelow = 0x1e72;\n  t.Udieresiscaron = 0x01d9;\n  t.Udieresiscyrillic = 0x04f0;\n  t.Udieresisgrave = 0x01db;\n  t.Udieresismacron = 0x01d5;\n  t.Udieresissmall = 0xf7fc;\n  t.Udotbelow = 0x1ee4;\n  t.Ugrave = 0x00d9;\n  t.Ugravesmall = 0xf7f9;\n  t.Uhookabove = 0x1ee6;\n  t.Uhorn = 0x01af;\n  t.Uhornacute = 0x1ee8;\n  t.Uhorndotbelow = 0x1ef0;\n  t.Uhorngrave = 0x1eea;\n  t.Uhornhookabove = 0x1eec;\n  t.Uhorntilde = 0x1eee;\n  t.Uhungarumlaut = 0x0170;\n  t.Uhungarumlautcyrillic = 0x04f2;\n  t.Uinvertedbreve = 0x0216;\n  t.Ukcyrillic = 0x0478;\n  t.Umacron = 0x016a;\n  t.Umacroncyrillic = 0x04ee;\n  t.Umacrondieresis = 0x1e7a;\n  t.Umonospace = 0xff35;\n  t.Uogonek = 0x0172;\n  t.Upsilon = 0x03a5;\n  t.Upsilon1 = 0x03d2;\n  t.Upsilonacutehooksymbolgreek = 0x03d3;\n  t.Upsilonafrican = 0x01b1;\n  t.Upsilondieresis = 0x03ab;\n  t.Upsilondieresishooksymbolgreek = 0x03d4;\n  t.Upsilonhooksymbol = 0x03d2;\n  t.Upsilontonos = 0x038e;\n  t.Uring = 0x016e;\n  t.Ushortcyrillic = 0x040e;\n  t.Usmall = 0xf775;\n  t.Ustraightcyrillic = 0x04ae;\n  t.Ustraightstrokecyrillic = 0x04b0;\n  t.Utilde = 0x0168;\n  t.Utildeacute = 0x1e78;\n  t.Utildebelow = 0x1e74;\n  t.V = 0x0056;\n  t.Vcircle = 0x24cb;\n  t.Vdotbelow = 0x1e7e;\n  t.Vecyrillic = 0x0412;\n  t.Vewarmenian = 0x054e;\n  t.Vhook = 0x01b2;\n  t.Vmonospace = 0xff36;\n  t.Voarmenian = 0x0548;\n  t.Vsmall = 0xf776;\n  t.Vtilde = 0x1e7c;\n  t.W = 0x0057;\n  t.Wacute = 0x1e82;\n  t.Wcircle = 0x24cc;\n  t.Wcircumflex = 0x0174;\n  t.Wdieresis = 0x1e84;\n  t.Wdotaccent = 0x1e86;\n  t.Wdotbelow = 0x1e88;\n  t.Wgrave = 0x1e80;\n  t.Wmonospace = 0xff37;\n  t.Wsmall = 0xf777;\n  t.X = 0x0058;\n  t.Xcircle = 0x24cd;\n  t.Xdieresis = 0x1e8c;\n  t.Xdotaccent = 0x1e8a;\n  t.Xeharmenian = 0x053d;\n  t.Xi = 0x039e;\n  t.Xmonospace = 0xff38;\n  t.Xsmall = 0xf778;\n  t.Y = 0x0059;\n  t.Yacute = 0x00dd;\n  t.Yacutesmall = 0xf7fd;\n  t.Yatcyrillic = 0x0462;\n  t.Ycircle = 0x24ce;\n  t.Ycircumflex = 0x0176;\n  t.Ydieresis = 0x0178;\n  t.Ydieresissmall = 0xf7ff;\n  t.Ydotaccent = 0x1e8e;\n  t.Ydotbelow = 0x1ef4;\n  t.Yericyrillic = 0x042b;\n  t.Yerudieresiscyrillic = 0x04f8;\n  t.Ygrave = 0x1ef2;\n  t.Yhook = 0x01b3;\n  t.Yhookabove = 0x1ef6;\n  t.Yiarmenian = 0x0545;\n  t.Yicyrillic = 0x0407;\n  t.Yiwnarmenian = 0x0552;\n  t.Ymonospace = 0xff39;\n  t.Ysmall = 0xf779;\n  t.Ytilde = 0x1ef8;\n  t.Yusbigcyrillic = 0x046a;\n  t.Yusbigiotifiedcyrillic = 0x046c;\n  t.Yuslittlecyrillic = 0x0466;\n  t.Yuslittleiotifiedcyrillic = 0x0468;\n  t.Z = 0x005a;\n  t.Zaarmenian = 0x0536;\n  t.Zacute = 0x0179;\n  t.Zcaron = 0x017d;\n  t.Zcaronsmall = 0xf6ff;\n  t.Zcircle = 0x24cf;\n  t.Zcircumflex = 0x1e90;\n  t.Zdot = 0x017b;\n  t.Zdotaccent = 0x017b;\n  t.Zdotbelow = 0x1e92;\n  t.Zecyrillic = 0x0417;\n  t.Zedescendercyrillic = 0x0498;\n  t.Zedieresiscyrillic = 0x04de;\n  t.Zeta = 0x0396;\n  t.Zhearmenian = 0x053a;\n  t.Zhebrevecyrillic = 0x04c1;\n  t.Zhecyrillic = 0x0416;\n  t.Zhedescendercyrillic = 0x0496;\n  t.Zhedieresiscyrillic = 0x04dc;\n  t.Zlinebelow = 0x1e94;\n  t.Zmonospace = 0xff3a;\n  t.Zsmall = 0xf77a;\n  t.Zstroke = 0x01b5;\n  t.a = 0x0061;\n  t.aabengali = 0x0986;\n  t.aacute = 0x00e1;\n  t.aadeva = 0x0906;\n  t.aagujarati = 0x0a86;\n  t.aagurmukhi = 0x0a06;\n  t.aamatragurmukhi = 0x0a3e;\n  t.aarusquare = 0x3303;\n  t.aavowelsignbengali = 0x09be;\n  t.aavowelsigndeva = 0x093e;\n  t.aavowelsigngujarati = 0x0abe;\n  t.abbreviationmarkarmenian = 0x055f;\n  t.abbreviationsigndeva = 0x0970;\n  t.abengali = 0x0985;\n  t.abopomofo = 0x311a;\n  t.abreve = 0x0103;\n  t.abreveacute = 0x1eaf;\n  t.abrevecyrillic = 0x04d1;\n  t.abrevedotbelow = 0x1eb7;\n  t.abrevegrave = 0x1eb1;\n  t.abrevehookabove = 0x1eb3;\n  t.abrevetilde = 0x1eb5;\n  t.acaron = 0x01ce;\n  t.acircle = 0x24d0;\n  t.acircumflex = 0x00e2;\n  t.acircumflexacute = 0x1ea5;\n  t.acircumflexdotbelow = 0x1ead;\n  t.acircumflexgrave = 0x1ea7;\n  t.acircumflexhookabove = 0x1ea9;\n  t.acircumflextilde = 0x1eab;\n  t.acute = 0x00b4;\n  t.acutebelowcmb = 0x0317;\n  t.acutecmb = 0x0301;\n  t.acutecomb = 0x0301;\n  t.acutedeva = 0x0954;\n  t.acutelowmod = 0x02cf;\n  t.acutetonecmb = 0x0341;\n  t.acyrillic = 0x0430;\n  t.adblgrave = 0x0201;\n  t.addakgurmukhi = 0x0a71;\n  t.adeva = 0x0905;\n  t.adieresis = 0x00e4;\n  t.adieresiscyrillic = 0x04d3;\n  t.adieresismacron = 0x01df;\n  t.adotbelow = 0x1ea1;\n  t.adotmacron = 0x01e1;\n  t.ae = 0x00e6;\n  t.aeacute = 0x01fd;\n  t.aekorean = 0x3150;\n  t.aemacron = 0x01e3;\n  t.afii00208 = 0x2015;\n  t.afii08941 = 0x20a4;\n  t.afii10017 = 0x0410;\n  t.afii10018 = 0x0411;\n  t.afii10019 = 0x0412;\n  t.afii10020 = 0x0413;\n  t.afii10021 = 0x0414;\n  t.afii10022 = 0x0415;\n  t.afii10023 = 0x0401;\n  t.afii10024 = 0x0416;\n  t.afii10025 = 0x0417;\n  t.afii10026 = 0x0418;\n  t.afii10027 = 0x0419;\n  t.afii10028 = 0x041a;\n  t.afii10029 = 0x041b;\n  t.afii10030 = 0x041c;\n  t.afii10031 = 0x041d;\n  t.afii10032 = 0x041e;\n  t.afii10033 = 0x041f;\n  t.afii10034 = 0x0420;\n  t.afii10035 = 0x0421;\n  t.afii10036 = 0x0422;\n  t.afii10037 = 0x0423;\n  t.afii10038 = 0x0424;\n  t.afii10039 = 0x0425;\n  t.afii10040 = 0x0426;\n  t.afii10041 = 0x0427;\n  t.afii10042 = 0x0428;\n  t.afii10043 = 0x0429;\n  t.afii10044 = 0x042a;\n  t.afii10045 = 0x042b;\n  t.afii10046 = 0x042c;\n  t.afii10047 = 0x042d;\n  t.afii10048 = 0x042e;\n  t.afii10049 = 0x042f;\n  t.afii10050 = 0x0490;\n  t.afii10051 = 0x0402;\n  t.afii10052 = 0x0403;\n  t.afii10053 = 0x0404;\n  t.afii10054 = 0x0405;\n  t.afii10055 = 0x0406;\n  t.afii10056 = 0x0407;\n  t.afii10057 = 0x0408;\n  t.afii10058 = 0x0409;\n  t.afii10059 = 0x040a;\n  t.afii10060 = 0x040b;\n  t.afii10061 = 0x040c;\n  t.afii10062 = 0x040e;\n  t.afii10063 = 0xf6c4;\n  t.afii10064 = 0xf6c5;\n  t.afii10065 = 0x0430;\n  t.afii10066 = 0x0431;\n  t.afii10067 = 0x0432;\n  t.afii10068 = 0x0433;\n  t.afii10069 = 0x0434;\n  t.afii10070 = 0x0435;\n  t.afii10071 = 0x0451;\n  t.afii10072 = 0x0436;\n  t.afii10073 = 0x0437;\n  t.afii10074 = 0x0438;\n  t.afii10075 = 0x0439;\n  t.afii10076 = 0x043a;\n  t.afii10077 = 0x043b;\n  t.afii10078 = 0x043c;\n  t.afii10079 = 0x043d;\n  t.afii10080 = 0x043e;\n  t.afii10081 = 0x043f;\n  t.afii10082 = 0x0440;\n  t.afii10083 = 0x0441;\n  t.afii10084 = 0x0442;\n  t.afii10085 = 0x0443;\n  t.afii10086 = 0x0444;\n  t.afii10087 = 0x0445;\n  t.afii10088 = 0x0446;\n  t.afii10089 = 0x0447;\n  t.afii10090 = 0x0448;\n  t.afii10091 = 0x0449;\n  t.afii10092 = 0x044a;\n  t.afii10093 = 0x044b;\n  t.afii10094 = 0x044c;\n  t.afii10095 = 0x044d;\n  t.afii10096 = 0x044e;\n  t.afii10097 = 0x044f;\n  t.afii10098 = 0x0491;\n  t.afii10099 = 0x0452;\n  t.afii10100 = 0x0453;\n  t.afii10101 = 0x0454;\n  t.afii10102 = 0x0455;\n  t.afii10103 = 0x0456;\n  t.afii10104 = 0x0457;\n  t.afii10105 = 0x0458;\n  t.afii10106 = 0x0459;\n  t.afii10107 = 0x045a;\n  t.afii10108 = 0x045b;\n  t.afii10109 = 0x045c;\n  t.afii10110 = 0x045e;\n  t.afii10145 = 0x040f;\n  t.afii10146 = 0x0462;\n  t.afii10147 = 0x0472;\n  t.afii10148 = 0x0474;\n  t.afii10192 = 0xf6c6;\n  t.afii10193 = 0x045f;\n  t.afii10194 = 0x0463;\n  t.afii10195 = 0x0473;\n  t.afii10196 = 0x0475;\n  t.afii10831 = 0xf6c7;\n  t.afii10832 = 0xf6c8;\n  t.afii10846 = 0x04d9;\n  t.afii299 = 0x200e;\n  t.afii300 = 0x200f;\n  t.afii301 = 0x200d;\n  t.afii57381 = 0x066a;\n  t.afii57388 = 0x060c;\n  t.afii57392 = 0x0660;\n  t.afii57393 = 0x0661;\n  t.afii57394 = 0x0662;\n  t.afii57395 = 0x0663;\n  t.afii57396 = 0x0664;\n  t.afii57397 = 0x0665;\n  t.afii57398 = 0x0666;\n  t.afii57399 = 0x0667;\n  t.afii57400 = 0x0668;\n  t.afii57401 = 0x0669;\n  t.afii57403 = 0x061b;\n  t.afii57407 = 0x061f;\n  t.afii57409 = 0x0621;\n  t.afii57410 = 0x0622;\n  t.afii57411 = 0x0623;\n  t.afii57412 = 0x0624;\n  t.afii57413 = 0x0625;\n  t.afii57414 = 0x0626;\n  t.afii57415 = 0x0627;\n  t.afii57416 = 0x0628;\n  t.afii57417 = 0x0629;\n  t.afii57418 = 0x062a;\n  t.afii57419 = 0x062b;\n  t.afii57420 = 0x062c;\n  t.afii57421 = 0x062d;\n  t.afii57422 = 0x062e;\n  t.afii57423 = 0x062f;\n  t.afii57424 = 0x0630;\n  t.afii57425 = 0x0631;\n  t.afii57426 = 0x0632;\n  t.afii57427 = 0x0633;\n  t.afii57428 = 0x0634;\n  t.afii57429 = 0x0635;\n  t.afii57430 = 0x0636;\n  t.afii57431 = 0x0637;\n  t.afii57432 = 0x0638;\n  t.afii57433 = 0x0639;\n  t.afii57434 = 0x063a;\n  t.afii57440 = 0x0640;\n  t.afii57441 = 0x0641;\n  t.afii57442 = 0x0642;\n  t.afii57443 = 0x0643;\n  t.afii57444 = 0x0644;\n  t.afii57445 = 0x0645;\n  t.afii57446 = 0x0646;\n  t.afii57448 = 0x0648;\n  t.afii57449 = 0x0649;\n  t.afii57450 = 0x064a;\n  t.afii57451 = 0x064b;\n  t.afii57452 = 0x064c;\n  t.afii57453 = 0x064d;\n  t.afii57454 = 0x064e;\n  t.afii57455 = 0x064f;\n  t.afii57456 = 0x0650;\n  t.afii57457 = 0x0651;\n  t.afii57458 = 0x0652;\n  t.afii57470 = 0x0647;\n  t.afii57505 = 0x06a4;\n  t.afii57506 = 0x067e;\n  t.afii57507 = 0x0686;\n  t.afii57508 = 0x0698;\n  t.afii57509 = 0x06af;\n  t.afii57511 = 0x0679;\n  t.afii57512 = 0x0688;\n  t.afii57513 = 0x0691;\n  t.afii57514 = 0x06ba;\n  t.afii57519 = 0x06d2;\n  t.afii57534 = 0x06d5;\n  t.afii57636 = 0x20aa;\n  t.afii57645 = 0x05be;\n  t.afii57658 = 0x05c3;\n  t.afii57664 = 0x05d0;\n  t.afii57665 = 0x05d1;\n  t.afii57666 = 0x05d2;\n  t.afii57667 = 0x05d3;\n  t.afii57668 = 0x05d4;\n  t.afii57669 = 0x05d5;\n  t.afii57670 = 0x05d6;\n  t.afii57671 = 0x05d7;\n  t.afii57672 = 0x05d8;\n  t.afii57673 = 0x05d9;\n  t.afii57674 = 0x05da;\n  t.afii57675 = 0x05db;\n  t.afii57676 = 0x05dc;\n  t.afii57677 = 0x05dd;\n  t.afii57678 = 0x05de;\n  t.afii57679 = 0x05df;\n  t.afii57680 = 0x05e0;\n  t.afii57681 = 0x05e1;\n  t.afii57682 = 0x05e2;\n  t.afii57683 = 0x05e3;\n  t.afii57684 = 0x05e4;\n  t.afii57685 = 0x05e5;\n  t.afii57686 = 0x05e6;\n  t.afii57687 = 0x05e7;\n  t.afii57688 = 0x05e8;\n  t.afii57689 = 0x05e9;\n  t.afii57690 = 0x05ea;\n  t.afii57694 = 0xfb2a;\n  t.afii57695 = 0xfb2b;\n  t.afii57700 = 0xfb4b;\n  t.afii57705 = 0xfb1f;\n  t.afii57716 = 0x05f0;\n  t.afii57717 = 0x05f1;\n  t.afii57718 = 0x05f2;\n  t.afii57723 = 0xfb35;\n  t.afii57793 = 0x05b4;\n  t.afii57794 = 0x05b5;\n  t.afii57795 = 0x05b6;\n  t.afii57796 = 0x05bb;\n  t.afii57797 = 0x05b8;\n  t.afii57798 = 0x05b7;\n  t.afii57799 = 0x05b0;\n  t.afii57800 = 0x05b2;\n  t.afii57801 = 0x05b1;\n  t.afii57802 = 0x05b3;\n  t.afii57803 = 0x05c2;\n  t.afii57804 = 0x05c1;\n  t.afii57806 = 0x05b9;\n  t.afii57807 = 0x05bc;\n  t.afii57839 = 0x05bd;\n  t.afii57841 = 0x05bf;\n  t.afii57842 = 0x05c0;\n  t.afii57929 = 0x02bc;\n  t.afii61248 = 0x2105;\n  t.afii61289 = 0x2113;\n  t.afii61352 = 0x2116;\n  t.afii61573 = 0x202c;\n  t.afii61574 = 0x202d;\n  t.afii61575 = 0x202e;\n  t.afii61664 = 0x200c;\n  t.afii63167 = 0x066d;\n  t.afii64937 = 0x02bd;\n  t.agrave = 0x00e0;\n  t.agujarati = 0x0a85;\n  t.agurmukhi = 0x0a05;\n  t.ahiragana = 0x3042;\n  t.ahookabove = 0x1ea3;\n  t.aibengali = 0x0990;\n  t.aibopomofo = 0x311e;\n  t.aideva = 0x0910;\n  t.aiecyrillic = 0x04d5;\n  t.aigujarati = 0x0a90;\n  t.aigurmukhi = 0x0a10;\n  t.aimatragurmukhi = 0x0a48;\n  t.ainarabic = 0x0639;\n  t.ainfinalarabic = 0xfeca;\n  t.aininitialarabic = 0xfecb;\n  t.ainmedialarabic = 0xfecc;\n  t.ainvertedbreve = 0x0203;\n  t.aivowelsignbengali = 0x09c8;\n  t.aivowelsigndeva = 0x0948;\n  t.aivowelsigngujarati = 0x0ac8;\n  t.akatakana = 0x30a2;\n  t.akatakanahalfwidth = 0xff71;\n  t.akorean = 0x314f;\n  t.alef = 0x05d0;\n  t.alefarabic = 0x0627;\n  t.alefdageshhebrew = 0xfb30;\n  t.aleffinalarabic = 0xfe8e;\n  t.alefhamzaabovearabic = 0x0623;\n  t.alefhamzaabovefinalarabic = 0xfe84;\n  t.alefhamzabelowarabic = 0x0625;\n  t.alefhamzabelowfinalarabic = 0xfe88;\n  t.alefhebrew = 0x05d0;\n  t.aleflamedhebrew = 0xfb4f;\n  t.alefmaddaabovearabic = 0x0622;\n  t.alefmaddaabovefinalarabic = 0xfe82;\n  t.alefmaksuraarabic = 0x0649;\n  t.alefmaksurafinalarabic = 0xfef0;\n  t.alefmaksurainitialarabic = 0xfef3;\n  t.alefmaksuramedialarabic = 0xfef4;\n  t.alefpatahhebrew = 0xfb2e;\n  t.alefqamatshebrew = 0xfb2f;\n  t.aleph = 0x2135;\n  t.allequal = 0x224c;\n  t.alpha = 0x03b1;\n  t.alphatonos = 0x03ac;\n  t.amacron = 0x0101;\n  t.amonospace = 0xff41;\n  t.ampersand = 0x0026;\n  t.ampersandmonospace = 0xff06;\n  t.ampersandsmall = 0xf726;\n  t.amsquare = 0x33c2;\n  t.anbopomofo = 0x3122;\n  t.angbopomofo = 0x3124;\n  t.angbracketleft = 0x3008; // Glyph is missing from Adobe's original list.\n  t.angbracketright = 0x3009; // Glyph is missing from Adobe's original list.\n  t.angkhankhuthai = 0x0e5a;\n  t.angle = 0x2220;\n  t.anglebracketleft = 0x3008;\n  t.anglebracketleftvertical = 0xfe3f;\n  t.anglebracketright = 0x3009;\n  t.anglebracketrightvertical = 0xfe40;\n  t.angleleft = 0x2329;\n  t.angleright = 0x232a;\n  t.angstrom = 0x212b;\n  t.anoteleia = 0x0387;\n  t.anudattadeva = 0x0952;\n  t.anusvarabengali = 0x0982;\n  t.anusvaradeva = 0x0902;\n  t.anusvaragujarati = 0x0a82;\n  t.aogonek = 0x0105;\n  t.apaatosquare = 0x3300;\n  t.aparen = 0x249c;\n  t.apostrophearmenian = 0x055a;\n  t.apostrophemod = 0x02bc;\n  t.apple = 0xf8ff;\n  t.approaches = 0x2250;\n  t.approxequal = 0x2248;\n  t.approxequalorimage = 0x2252;\n  t.approximatelyequal = 0x2245;\n  t.araeaekorean = 0x318e;\n  t.araeakorean = 0x318d;\n  t.arc = 0x2312;\n  t.arighthalfring = 0x1e9a;\n  t.aring = 0x00e5;\n  t.aringacute = 0x01fb;\n  t.aringbelow = 0x1e01;\n  t.arrowboth = 0x2194;\n  t.arrowdashdown = 0x21e3;\n  t.arrowdashleft = 0x21e0;\n  t.arrowdashright = 0x21e2;\n  t.arrowdashup = 0x21e1;\n  t.arrowdblboth = 0x21d4;\n  t.arrowdbldown = 0x21d3;\n  t.arrowdblleft = 0x21d0;\n  t.arrowdblright = 0x21d2;\n  t.arrowdblup = 0x21d1;\n  t.arrowdown = 0x2193;\n  t.arrowdownleft = 0x2199;\n  t.arrowdownright = 0x2198;\n  t.arrowdownwhite = 0x21e9;\n  t.arrowheaddownmod = 0x02c5;\n  t.arrowheadleftmod = 0x02c2;\n  t.arrowheadrightmod = 0x02c3;\n  t.arrowheadupmod = 0x02c4;\n  t.arrowhorizex = 0xf8e7;\n  t.arrowleft = 0x2190;\n  t.arrowleftdbl = 0x21d0;\n  t.arrowleftdblstroke = 0x21cd;\n  t.arrowleftoverright = 0x21c6;\n  t.arrowleftwhite = 0x21e6;\n  t.arrowright = 0x2192;\n  t.arrowrightdblstroke = 0x21cf;\n  t.arrowrightheavy = 0x279e;\n  t.arrowrightoverleft = 0x21c4;\n  t.arrowrightwhite = 0x21e8;\n  t.arrowtableft = 0x21e4;\n  t.arrowtabright = 0x21e5;\n  t.arrowup = 0x2191;\n  t.arrowupdn = 0x2195;\n  t.arrowupdnbse = 0x21a8;\n  t.arrowupdownbase = 0x21a8;\n  t.arrowupleft = 0x2196;\n  t.arrowupleftofdown = 0x21c5;\n  t.arrowupright = 0x2197;\n  t.arrowupwhite = 0x21e7;\n  t.arrowvertex = 0xf8e6;\n  t.asciicircum = 0x005e;\n  t.asciicircummonospace = 0xff3e;\n  t.asciitilde = 0x007e;\n  t.asciitildemonospace = 0xff5e;\n  t.ascript = 0x0251;\n  t.ascriptturned = 0x0252;\n  t.asmallhiragana = 0x3041;\n  t.asmallkatakana = 0x30a1;\n  t.asmallkatakanahalfwidth = 0xff67;\n  t.asterisk = 0x002a;\n  t.asteriskaltonearabic = 0x066d;\n  t.asteriskarabic = 0x066d;\n  t.asteriskmath = 0x2217;\n  t.asteriskmonospace = 0xff0a;\n  t.asterisksmall = 0xfe61;\n  t.asterism = 0x2042;\n  t.asuperior = 0xf6e9;\n  t.asymptoticallyequal = 0x2243;\n  t.at = 0x0040;\n  t.atilde = 0x00e3;\n  t.atmonospace = 0xff20;\n  t.atsmall = 0xfe6b;\n  t.aturned = 0x0250;\n  t.aubengali = 0x0994;\n  t.aubopomofo = 0x3120;\n  t.audeva = 0x0914;\n  t.augujarati = 0x0a94;\n  t.augurmukhi = 0x0a14;\n  t.aulengthmarkbengali = 0x09d7;\n  t.aumatragurmukhi = 0x0a4c;\n  t.auvowelsignbengali = 0x09cc;\n  t.auvowelsigndeva = 0x094c;\n  t.auvowelsigngujarati = 0x0acc;\n  t.avagrahadeva = 0x093d;\n  t.aybarmenian = 0x0561;\n  t.ayin = 0x05e2;\n  t.ayinaltonehebrew = 0xfb20;\n  t.ayinhebrew = 0x05e2;\n  t.b = 0x0062;\n  t.babengali = 0x09ac;\n  t.backslash = 0x005c;\n  t.backslashmonospace = 0xff3c;\n  t.badeva = 0x092c;\n  t.bagujarati = 0x0aac;\n  t.bagurmukhi = 0x0a2c;\n  t.bahiragana = 0x3070;\n  t.bahtthai = 0x0e3f;\n  t.bakatakana = 0x30d0;\n  t.bar = 0x007c;\n  t.barmonospace = 0xff5c;\n  t.bbopomofo = 0x3105;\n  t.bcircle = 0x24d1;\n  t.bdotaccent = 0x1e03;\n  t.bdotbelow = 0x1e05;\n  t.beamedsixteenthnotes = 0x266c;\n  t.because = 0x2235;\n  t.becyrillic = 0x0431;\n  t.beharabic = 0x0628;\n  t.behfinalarabic = 0xfe90;\n  t.behinitialarabic = 0xfe91;\n  t.behiragana = 0x3079;\n  t.behmedialarabic = 0xfe92;\n  t.behmeeminitialarabic = 0xfc9f;\n  t.behmeemisolatedarabic = 0xfc08;\n  t.behnoonfinalarabic = 0xfc6d;\n  t.bekatakana = 0x30d9;\n  t.benarmenian = 0x0562;\n  t.bet = 0x05d1;\n  t.beta = 0x03b2;\n  t.betasymbolgreek = 0x03d0;\n  t.betdagesh = 0xfb31;\n  t.betdageshhebrew = 0xfb31;\n  t.bethebrew = 0x05d1;\n  t.betrafehebrew = 0xfb4c;\n  t.bhabengali = 0x09ad;\n  t.bhadeva = 0x092d;\n  t.bhagujarati = 0x0aad;\n  t.bhagurmukhi = 0x0a2d;\n  t.bhook = 0x0253;\n  t.bihiragana = 0x3073;\n  t.bikatakana = 0x30d3;\n  t.bilabialclick = 0x0298;\n  t.bindigurmukhi = 0x0a02;\n  t.birusquare = 0x3331;\n  t.blackcircle = 0x25cf;\n  t.blackdiamond = 0x25c6;\n  t.blackdownpointingtriangle = 0x25bc;\n  t.blackleftpointingpointer = 0x25c4;\n  t.blackleftpointingtriangle = 0x25c0;\n  t.blacklenticularbracketleft = 0x3010;\n  t.blacklenticularbracketleftvertical = 0xfe3b;\n  t.blacklenticularbracketright = 0x3011;\n  t.blacklenticularbracketrightvertical = 0xfe3c;\n  t.blacklowerlefttriangle = 0x25e3;\n  t.blacklowerrighttriangle = 0x25e2;\n  t.blackrectangle = 0x25ac;\n  t.blackrightpointingpointer = 0x25ba;\n  t.blackrightpointingtriangle = 0x25b6;\n  t.blacksmallsquare = 0x25aa;\n  t.blacksmilingface = 0x263b;\n  t.blacksquare = 0x25a0;\n  t.blackstar = 0x2605;\n  t.blackupperlefttriangle = 0x25e4;\n  t.blackupperrighttriangle = 0x25e5;\n  t.blackuppointingsmalltriangle = 0x25b4;\n  t.blackuppointingtriangle = 0x25b2;\n  t.blank = 0x2423;\n  t.blinebelow = 0x1e07;\n  t.block = 0x2588;\n  t.bmonospace = 0xff42;\n  t.bobaimaithai = 0x0e1a;\n  t.bohiragana = 0x307c;\n  t.bokatakana = 0x30dc;\n  t.bparen = 0x249d;\n  t.bqsquare = 0x33c3;\n  t.braceex = 0xf8f4;\n  t.braceleft = 0x007b;\n  t.braceleftbt = 0xf8f3;\n  t.braceleftmid = 0xf8f2;\n  t.braceleftmonospace = 0xff5b;\n  t.braceleftsmall = 0xfe5b;\n  t.bracelefttp = 0xf8f1;\n  t.braceleftvertical = 0xfe37;\n  t.braceright = 0x007d;\n  t.bracerightbt = 0xf8fe;\n  t.bracerightmid = 0xf8fd;\n  t.bracerightmonospace = 0xff5d;\n  t.bracerightsmall = 0xfe5c;\n  t.bracerighttp = 0xf8fc;\n  t.bracerightvertical = 0xfe38;\n  t.bracketleft = 0x005b;\n  t.bracketleftbt = 0xf8f0;\n  t.bracketleftex = 0xf8ef;\n  t.bracketleftmonospace = 0xff3b;\n  t.bracketlefttp = 0xf8ee;\n  t.bracketright = 0x005d;\n  t.bracketrightbt = 0xf8fb;\n  t.bracketrightex = 0xf8fa;\n  t.bracketrightmonospace = 0xff3d;\n  t.bracketrighttp = 0xf8f9;\n  t.breve = 0x02d8;\n  t.brevebelowcmb = 0x032e;\n  t.brevecmb = 0x0306;\n  t.breveinvertedbelowcmb = 0x032f;\n  t.breveinvertedcmb = 0x0311;\n  t.breveinverteddoublecmb = 0x0361;\n  t.bridgebelowcmb = 0x032a;\n  t.bridgeinvertedbelowcmb = 0x033a;\n  t.brokenbar = 0x00a6;\n  t.bstroke = 0x0180;\n  t.bsuperior = 0xf6ea;\n  t.btopbar = 0x0183;\n  t.buhiragana = 0x3076;\n  t.bukatakana = 0x30d6;\n  t.bullet = 0x2022;\n  t.bulletinverse = 0x25d8;\n  t.bulletoperator = 0x2219;\n  t.bullseye = 0x25ce;\n  t.c = 0x0063;\n  t.caarmenian = 0x056e;\n  t.cabengali = 0x099a;\n  t.cacute = 0x0107;\n  t.cadeva = 0x091a;\n  t.cagujarati = 0x0a9a;\n  t.cagurmukhi = 0x0a1a;\n  t.calsquare = 0x3388;\n  t.candrabindubengali = 0x0981;\n  t.candrabinducmb = 0x0310;\n  t.candrabindudeva = 0x0901;\n  t.candrabindugujarati = 0x0a81;\n  t.capslock = 0x21ea;\n  t.careof = 0x2105;\n  t.caron = 0x02c7;\n  t.caronbelowcmb = 0x032c;\n  t.caroncmb = 0x030c;\n  t.carriagereturn = 0x21b5;\n  t.cbopomofo = 0x3118;\n  t.ccaron = 0x010d;\n  t.ccedilla = 0x00e7;\n  t.ccedillaacute = 0x1e09;\n  t.ccircle = 0x24d2;\n  t.ccircumflex = 0x0109;\n  t.ccurl = 0x0255;\n  t.cdot = 0x010b;\n  t.cdotaccent = 0x010b;\n  t.cdsquare = 0x33c5;\n  t.cedilla = 0x00b8;\n  t.cedillacmb = 0x0327;\n  t.cent = 0x00a2;\n  t.centigrade = 0x2103;\n  t.centinferior = 0xf6df;\n  t.centmonospace = 0xffe0;\n  t.centoldstyle = 0xf7a2;\n  t.centsuperior = 0xf6e0;\n  t.chaarmenian = 0x0579;\n  t.chabengali = 0x099b;\n  t.chadeva = 0x091b;\n  t.chagujarati = 0x0a9b;\n  t.chagurmukhi = 0x0a1b;\n  t.chbopomofo = 0x3114;\n  t.cheabkhasiancyrillic = 0x04bd;\n  t.checkmark = 0x2713;\n  t.checyrillic = 0x0447;\n  t.chedescenderabkhasiancyrillic = 0x04bf;\n  t.chedescendercyrillic = 0x04b7;\n  t.chedieresiscyrillic = 0x04f5;\n  t.cheharmenian = 0x0573;\n  t.chekhakassiancyrillic = 0x04cc;\n  t.cheverticalstrokecyrillic = 0x04b9;\n  t.chi = 0x03c7;\n  t.chieuchacirclekorean = 0x3277;\n  t.chieuchaparenkorean = 0x3217;\n  t.chieuchcirclekorean = 0x3269;\n  t.chieuchkorean = 0x314a;\n  t.chieuchparenkorean = 0x3209;\n  t.chochangthai = 0x0e0a;\n  t.chochanthai = 0x0e08;\n  t.chochingthai = 0x0e09;\n  t.chochoethai = 0x0e0c;\n  t.chook = 0x0188;\n  t.cieucacirclekorean = 0x3276;\n  t.cieucaparenkorean = 0x3216;\n  t.cieuccirclekorean = 0x3268;\n  t.cieuckorean = 0x3148;\n  t.cieucparenkorean = 0x3208;\n  t.cieucuparenkorean = 0x321c;\n  t.circle = 0x25cb;\n  t.circlecopyrt = 0x00a9; // Glyph is missing from Adobe's original list.\n  t.circlemultiply = 0x2297;\n  t.circleot = 0x2299;\n  t.circleplus = 0x2295;\n  t.circlepostalmark = 0x3036;\n  t.circlewithlefthalfblack = 0x25d0;\n  t.circlewithrighthalfblack = 0x25d1;\n  t.circumflex = 0x02c6;\n  t.circumflexbelowcmb = 0x032d;\n  t.circumflexcmb = 0x0302;\n  t.clear = 0x2327;\n  t.clickalveolar = 0x01c2;\n  t.clickdental = 0x01c0;\n  t.clicklateral = 0x01c1;\n  t.clickretroflex = 0x01c3;\n  t.club = 0x2663;\n  t.clubsuitblack = 0x2663;\n  t.clubsuitwhite = 0x2667;\n  t.cmcubedsquare = 0x33a4;\n  t.cmonospace = 0xff43;\n  t.cmsquaredsquare = 0x33a0;\n  t.coarmenian = 0x0581;\n  t.colon = 0x003a;\n  t.colonmonetary = 0x20a1;\n  t.colonmonospace = 0xff1a;\n  t.colonsign = 0x20a1;\n  t.colonsmall = 0xfe55;\n  t.colontriangularhalfmod = 0x02d1;\n  t.colontriangularmod = 0x02d0;\n  t.comma = 0x002c;\n  t.commaabovecmb = 0x0313;\n  t.commaaboverightcmb = 0x0315;\n  t.commaaccent = 0xf6c3;\n  t.commaarabic = 0x060c;\n  t.commaarmenian = 0x055d;\n  t.commainferior = 0xf6e1;\n  t.commamonospace = 0xff0c;\n  t.commareversedabovecmb = 0x0314;\n  t.commareversedmod = 0x02bd;\n  t.commasmall = 0xfe50;\n  t.commasuperior = 0xf6e2;\n  t.commaturnedabovecmb = 0x0312;\n  t.commaturnedmod = 0x02bb;\n  t.compass = 0x263c;\n  t.congruent = 0x2245;\n  t.contourintegral = 0x222e;\n  t.control = 0x2303;\n  t.controlACK = 0x0006;\n  t.controlBEL = 0x0007;\n  t.controlBS = 0x0008;\n  t.controlCAN = 0x0018;\n  t.controlCR = 0x000d;\n  t.controlDC1 = 0x0011;\n  t.controlDC2 = 0x0012;\n  t.controlDC3 = 0x0013;\n  t.controlDC4 = 0x0014;\n  t.controlDEL = 0x007f;\n  t.controlDLE = 0x0010;\n  t.controlEM = 0x0019;\n  t.controlENQ = 0x0005;\n  t.controlEOT = 0x0004;\n  t.controlESC = 0x001b;\n  t.controlETB = 0x0017;\n  t.controlETX = 0x0003;\n  t.controlFF = 0x000c;\n  t.controlFS = 0x001c;\n  t.controlGS = 0x001d;\n  t.controlHT = 0x0009;\n  t.controlLF = 0x000a;\n  t.controlNAK = 0x0015;\n  t.controlNULL = 0x0000; // Glyph is missing from Adobe's original list.\n  t.controlRS = 0x001e;\n  t.controlSI = 0x000f;\n  t.controlSO = 0x000e;\n  t.controlSOT = 0x0002;\n  t.controlSTX = 0x0001;\n  t.controlSUB = 0x001a;\n  t.controlSYN = 0x0016;\n  t.controlUS = 0x001f;\n  t.controlVT = 0x000b;\n  t.copyright = 0x00a9;\n  t.copyrightsans = 0xf8e9;\n  t.copyrightserif = 0xf6d9;\n  t.cornerbracketleft = 0x300c;\n  t.cornerbracketlefthalfwidth = 0xff62;\n  t.cornerbracketleftvertical = 0xfe41;\n  t.cornerbracketright = 0x300d;\n  t.cornerbracketrighthalfwidth = 0xff63;\n  t.cornerbracketrightvertical = 0xfe42;\n  t.corporationsquare = 0x337f;\n  t.cosquare = 0x33c7;\n  t.coverkgsquare = 0x33c6;\n  t.cparen = 0x249e;\n  t.cruzeiro = 0x20a2;\n  t.cstretched = 0x0297;\n  t.curlyand = 0x22cf;\n  t.curlyor = 0x22ce;\n  t.currency = 0x00a4;\n  t.cyrBreve = 0xf6d1;\n  t.cyrFlex = 0xf6d2;\n  t.cyrbreve = 0xf6d4;\n  t.cyrflex = 0xf6d5;\n  t.d = 0x0064;\n  t.daarmenian = 0x0564;\n  t.dabengali = 0x09a6;\n  t.dadarabic = 0x0636;\n  t.dadeva = 0x0926;\n  t.dadfinalarabic = 0xfebe;\n  t.dadinitialarabic = 0xfebf;\n  t.dadmedialarabic = 0xfec0;\n  t.dagesh = 0x05bc;\n  t.dageshhebrew = 0x05bc;\n  t.dagger = 0x2020;\n  t.daggerdbl = 0x2021;\n  t.dagujarati = 0x0aa6;\n  t.dagurmukhi = 0x0a26;\n  t.dahiragana = 0x3060;\n  t.dakatakana = 0x30c0;\n  t.dalarabic = 0x062f;\n  t.dalet = 0x05d3;\n  t.daletdagesh = 0xfb33;\n  t.daletdageshhebrew = 0xfb33;\n  t.dalethebrew = 0x05d3;\n  t.dalfinalarabic = 0xfeaa;\n  t.dammaarabic = 0x064f;\n  t.dammalowarabic = 0x064f;\n  t.dammatanaltonearabic = 0x064c;\n  t.dammatanarabic = 0x064c;\n  t.danda = 0x0964;\n  t.dargahebrew = 0x05a7;\n  t.dargalefthebrew = 0x05a7;\n  t.dasiapneumatacyrilliccmb = 0x0485;\n  t.dblGrave = 0xf6d3;\n  t.dblanglebracketleft = 0x300a;\n  t.dblanglebracketleftvertical = 0xfe3d;\n  t.dblanglebracketright = 0x300b;\n  t.dblanglebracketrightvertical = 0xfe3e;\n  t.dblarchinvertedbelowcmb = 0x032b;\n  t.dblarrowleft = 0x21d4;\n  t.dblarrowright = 0x21d2;\n  t.dbldanda = 0x0965;\n  t.dblgrave = 0xf6d6;\n  t.dblgravecmb = 0x030f;\n  t.dblintegral = 0x222c;\n  t.dbllowline = 0x2017;\n  t.dbllowlinecmb = 0x0333;\n  t.dbloverlinecmb = 0x033f;\n  t.dblprimemod = 0x02ba;\n  t.dblverticalbar = 0x2016;\n  t.dblverticallineabovecmb = 0x030e;\n  t.dbopomofo = 0x3109;\n  t.dbsquare = 0x33c8;\n  t.dcaron = 0x010f;\n  t.dcedilla = 0x1e11;\n  t.dcircle = 0x24d3;\n  t.dcircumflexbelow = 0x1e13;\n  t.dcroat = 0x0111;\n  t.ddabengali = 0x09a1;\n  t.ddadeva = 0x0921;\n  t.ddagujarati = 0x0aa1;\n  t.ddagurmukhi = 0x0a21;\n  t.ddalarabic = 0x0688;\n  t.ddalfinalarabic = 0xfb89;\n  t.dddhadeva = 0x095c;\n  t.ddhabengali = 0x09a2;\n  t.ddhadeva = 0x0922;\n  t.ddhagujarati = 0x0aa2;\n  t.ddhagurmukhi = 0x0a22;\n  t.ddotaccent = 0x1e0b;\n  t.ddotbelow = 0x1e0d;\n  t.decimalseparatorarabic = 0x066b;\n  t.decimalseparatorpersian = 0x066b;\n  t.decyrillic = 0x0434;\n  t.degree = 0x00b0;\n  t.dehihebrew = 0x05ad;\n  t.dehiragana = 0x3067;\n  t.deicoptic = 0x03ef;\n  t.dekatakana = 0x30c7;\n  t.deleteleft = 0x232b;\n  t.deleteright = 0x2326;\n  t.delta = 0x03b4;\n  t.deltaturned = 0x018d;\n  t.denominatorminusonenumeratorbengali = 0x09f8;\n  t.dezh = 0x02a4;\n  t.dhabengali = 0x09a7;\n  t.dhadeva = 0x0927;\n  t.dhagujarati = 0x0aa7;\n  t.dhagurmukhi = 0x0a27;\n  t.dhook = 0x0257;\n  t.dialytikatonos = 0x0385;\n  t.dialytikatonoscmb = 0x0344;\n  t.diamond = 0x2666;\n  t.diamondsuitwhite = 0x2662;\n  t.dieresis = 0x00a8;\n  t.dieresisacute = 0xf6d7;\n  t.dieresisbelowcmb = 0x0324;\n  t.dieresiscmb = 0x0308;\n  t.dieresisgrave = 0xf6d8;\n  t.dieresistonos = 0x0385;\n  t.dihiragana = 0x3062;\n  t.dikatakana = 0x30c2;\n  t.dittomark = 0x3003;\n  t.divide = 0x00f7;\n  t.divides = 0x2223;\n  t.divisionslash = 0x2215;\n  t.djecyrillic = 0x0452;\n  t.dkshade = 0x2593;\n  t.dlinebelow = 0x1e0f;\n  t.dlsquare = 0x3397;\n  t.dmacron = 0x0111;\n  t.dmonospace = 0xff44;\n  t.dnblock = 0x2584;\n  t.dochadathai = 0x0e0e;\n  t.dodekthai = 0x0e14;\n  t.dohiragana = 0x3069;\n  t.dokatakana = 0x30c9;\n  t.dollar = 0x0024;\n  t.dollarinferior = 0xf6e3;\n  t.dollarmonospace = 0xff04;\n  t.dollaroldstyle = 0xf724;\n  t.dollarsmall = 0xfe69;\n  t.dollarsuperior = 0xf6e4;\n  t.dong = 0x20ab;\n  t.dorusquare = 0x3326;\n  t.dotaccent = 0x02d9;\n  t.dotaccentcmb = 0x0307;\n  t.dotbelowcmb = 0x0323;\n  t.dotbelowcomb = 0x0323;\n  t.dotkatakana = 0x30fb;\n  t.dotlessi = 0x0131;\n  t.dotlessj = 0xf6be;\n  t.dotlessjstrokehook = 0x0284;\n  t.dotmath = 0x22c5;\n  t.dottedcircle = 0x25cc;\n  t.doubleyodpatah = 0xfb1f;\n  t.doubleyodpatahhebrew = 0xfb1f;\n  t.downtackbelowcmb = 0x031e;\n  t.downtackmod = 0x02d5;\n  t.dparen = 0x249f;\n  t.dsuperior = 0xf6eb;\n  t.dtail = 0x0256;\n  t.dtopbar = 0x018c;\n  t.duhiragana = 0x3065;\n  t.dukatakana = 0x30c5;\n  t.dz = 0x01f3;\n  t.dzaltone = 0x02a3;\n  t.dzcaron = 0x01c6;\n  t.dzcurl = 0x02a5;\n  t.dzeabkhasiancyrillic = 0x04e1;\n  t.dzecyrillic = 0x0455;\n  t.dzhecyrillic = 0x045f;\n  t.e = 0x0065;\n  t.eacute = 0x00e9;\n  t.earth = 0x2641;\n  t.ebengali = 0x098f;\n  t.ebopomofo = 0x311c;\n  t.ebreve = 0x0115;\n  t.ecandradeva = 0x090d;\n  t.ecandragujarati = 0x0a8d;\n  t.ecandravowelsigndeva = 0x0945;\n  t.ecandravowelsigngujarati = 0x0ac5;\n  t.ecaron = 0x011b;\n  t.ecedillabreve = 0x1e1d;\n  t.echarmenian = 0x0565;\n  t.echyiwnarmenian = 0x0587;\n  t.ecircle = 0x24d4;\n  t.ecircumflex = 0x00ea;\n  t.ecircumflexacute = 0x1ebf;\n  t.ecircumflexbelow = 0x1e19;\n  t.ecircumflexdotbelow = 0x1ec7;\n  t.ecircumflexgrave = 0x1ec1;\n  t.ecircumflexhookabove = 0x1ec3;\n  t.ecircumflextilde = 0x1ec5;\n  t.ecyrillic = 0x0454;\n  t.edblgrave = 0x0205;\n  t.edeva = 0x090f;\n  t.edieresis = 0x00eb;\n  t.edot = 0x0117;\n  t.edotaccent = 0x0117;\n  t.edotbelow = 0x1eb9;\n  t.eegurmukhi = 0x0a0f;\n  t.eematragurmukhi = 0x0a47;\n  t.efcyrillic = 0x0444;\n  t.egrave = 0x00e8;\n  t.egujarati = 0x0a8f;\n  t.eharmenian = 0x0567;\n  t.ehbopomofo = 0x311d;\n  t.ehiragana = 0x3048;\n  t.ehookabove = 0x1ebb;\n  t.eibopomofo = 0x311f;\n  t.eight = 0x0038;\n  t.eightarabic = 0x0668;\n  t.eightbengali = 0x09ee;\n  t.eightcircle = 0x2467;\n  t.eightcircleinversesansserif = 0x2791;\n  t.eightdeva = 0x096e;\n  t.eighteencircle = 0x2471;\n  t.eighteenparen = 0x2485;\n  t.eighteenperiod = 0x2499;\n  t.eightgujarati = 0x0aee;\n  t.eightgurmukhi = 0x0a6e;\n  t.eighthackarabic = 0x0668;\n  t.eighthangzhou = 0x3028;\n  t.eighthnotebeamed = 0x266b;\n  t.eightideographicparen = 0x3227;\n  t.eightinferior = 0x2088;\n  t.eightmonospace = 0xff18;\n  t.eightoldstyle = 0xf738;\n  t.eightparen = 0x247b;\n  t.eightperiod = 0x248f;\n  t.eightpersian = 0x06f8;\n  t.eightroman = 0x2177;\n  t.eightsuperior = 0x2078;\n  t.eightthai = 0x0e58;\n  t.einvertedbreve = 0x0207;\n  t.eiotifiedcyrillic = 0x0465;\n  t.ekatakana = 0x30a8;\n  t.ekatakanahalfwidth = 0xff74;\n  t.ekonkargurmukhi = 0x0a74;\n  t.ekorean = 0x3154;\n  t.elcyrillic = 0x043b;\n  t.element = 0x2208;\n  t.elevencircle = 0x246a;\n  t.elevenparen = 0x247e;\n  t.elevenperiod = 0x2492;\n  t.elevenroman = 0x217a;\n  t.ellipsis = 0x2026;\n  t.ellipsisvertical = 0x22ee;\n  t.emacron = 0x0113;\n  t.emacronacute = 0x1e17;\n  t.emacrongrave = 0x1e15;\n  t.emcyrillic = 0x043c;\n  t.emdash = 0x2014;\n  t.emdashvertical = 0xfe31;\n  t.emonospace = 0xff45;\n  t.emphasismarkarmenian = 0x055b;\n  t.emptyset = 0x2205;\n  t.enbopomofo = 0x3123;\n  t.encyrillic = 0x043d;\n  t.endash = 0x2013;\n  t.endashvertical = 0xfe32;\n  t.endescendercyrillic = 0x04a3;\n  t.eng = 0x014b;\n  t.engbopomofo = 0x3125;\n  t.enghecyrillic = 0x04a5;\n  t.enhookcyrillic = 0x04c8;\n  t.enspace = 0x2002;\n  t.eogonek = 0x0119;\n  t.eokorean = 0x3153;\n  t.eopen = 0x025b;\n  t.eopenclosed = 0x029a;\n  t.eopenreversed = 0x025c;\n  t.eopenreversedclosed = 0x025e;\n  t.eopenreversedhook = 0x025d;\n  t.eparen = 0x24a0;\n  t.epsilon = 0x03b5;\n  t.epsilontonos = 0x03ad;\n  t.equal = 0x003d;\n  t.equalmonospace = 0xff1d;\n  t.equalsmall = 0xfe66;\n  t.equalsuperior = 0x207c;\n  t.equivalence = 0x2261;\n  t.erbopomofo = 0x3126;\n  t.ercyrillic = 0x0440;\n  t.ereversed = 0x0258;\n  t.ereversedcyrillic = 0x044d;\n  t.escyrillic = 0x0441;\n  t.esdescendercyrillic = 0x04ab;\n  t.esh = 0x0283;\n  t.eshcurl = 0x0286;\n  t.eshortdeva = 0x090e;\n  t.eshortvowelsigndeva = 0x0946;\n  t.eshreversedloop = 0x01aa;\n  t.eshsquatreversed = 0x0285;\n  t.esmallhiragana = 0x3047;\n  t.esmallkatakana = 0x30a7;\n  t.esmallkatakanahalfwidth = 0xff6a;\n  t.estimated = 0x212e;\n  t.esuperior = 0xf6ec;\n  t.eta = 0x03b7;\n  t.etarmenian = 0x0568;\n  t.etatonos = 0x03ae;\n  t.eth = 0x00f0;\n  t.etilde = 0x1ebd;\n  t.etildebelow = 0x1e1b;\n  t.etnahtafoukhhebrew = 0x0591;\n  t.etnahtafoukhlefthebrew = 0x0591;\n  t.etnahtahebrew = 0x0591;\n  t.etnahtalefthebrew = 0x0591;\n  t.eturned = 0x01dd;\n  t.eukorean = 0x3161;\n  t.euro = 0x20ac;\n  t.evowelsignbengali = 0x09c7;\n  t.evowelsigndeva = 0x0947;\n  t.evowelsigngujarati = 0x0ac7;\n  t.exclam = 0x0021;\n  t.exclamarmenian = 0x055c;\n  t.exclamdbl = 0x203c;\n  t.exclamdown = 0x00a1;\n  t.exclamdownsmall = 0xf7a1;\n  t.exclammonospace = 0xff01;\n  t.exclamsmall = 0xf721;\n  t.existential = 0x2203;\n  t.ezh = 0x0292;\n  t.ezhcaron = 0x01ef;\n  t.ezhcurl = 0x0293;\n  t.ezhreversed = 0x01b9;\n  t.ezhtail = 0x01ba;\n  t.f = 0x0066;\n  t.fadeva = 0x095e;\n  t.fagurmukhi = 0x0a5e;\n  t.fahrenheit = 0x2109;\n  t.fathaarabic = 0x064e;\n  t.fathalowarabic = 0x064e;\n  t.fathatanarabic = 0x064b;\n  t.fbopomofo = 0x3108;\n  t.fcircle = 0x24d5;\n  t.fdotaccent = 0x1e1f;\n  t.feharabic = 0x0641;\n  t.feharmenian = 0x0586;\n  t.fehfinalarabic = 0xfed2;\n  t.fehinitialarabic = 0xfed3;\n  t.fehmedialarabic = 0xfed4;\n  t.feicoptic = 0x03e5;\n  t.female = 0x2640;\n  t.ff = 0xfb00;\n  t.f_f = 0xfb00; // Fixes issue 11016.\n  t.ffi = 0xfb03;\n  t.ffl = 0xfb04;\n  t.fi = 0xfb01;\n  t.fifteencircle = 0x246e;\n  t.fifteenparen = 0x2482;\n  t.fifteenperiod = 0x2496;\n  t.figuredash = 0x2012;\n  t.filledbox = 0x25a0;\n  t.filledrect = 0x25ac;\n  t.finalkaf = 0x05da;\n  t.finalkafdagesh = 0xfb3a;\n  t.finalkafdageshhebrew = 0xfb3a;\n  t.finalkafhebrew = 0x05da;\n  t.finalmem = 0x05dd;\n  t.finalmemhebrew = 0x05dd;\n  t.finalnun = 0x05df;\n  t.finalnunhebrew = 0x05df;\n  t.finalpe = 0x05e3;\n  t.finalpehebrew = 0x05e3;\n  t.finaltsadi = 0x05e5;\n  t.finaltsadihebrew = 0x05e5;\n  t.firsttonechinese = 0x02c9;\n  t.fisheye = 0x25c9;\n  t.fitacyrillic = 0x0473;\n  t.five = 0x0035;\n  t.fivearabic = 0x0665;\n  t.fivebengali = 0x09eb;\n  t.fivecircle = 0x2464;\n  t.fivecircleinversesansserif = 0x278e;\n  t.fivedeva = 0x096b;\n  t.fiveeighths = 0x215d;\n  t.fivegujarati = 0x0aeb;\n  t.fivegurmukhi = 0x0a6b;\n  t.fivehackarabic = 0x0665;\n  t.fivehangzhou = 0x3025;\n  t.fiveideographicparen = 0x3224;\n  t.fiveinferior = 0x2085;\n  t.fivemonospace = 0xff15;\n  t.fiveoldstyle = 0xf735;\n  t.fiveparen = 0x2478;\n  t.fiveperiod = 0x248c;\n  t.fivepersian = 0x06f5;\n  t.fiveroman = 0x2174;\n  t.fivesuperior = 0x2075;\n  t.fivethai = 0x0e55;\n  t.fl = 0xfb02;\n  t.florin = 0x0192;\n  t.fmonospace = 0xff46;\n  t.fmsquare = 0x3399;\n  t.fofanthai = 0x0e1f;\n  t.fofathai = 0x0e1d;\n  t.fongmanthai = 0x0e4f;\n  t.forall = 0x2200;\n  t.four = 0x0034;\n  t.fourarabic = 0x0664;\n  t.fourbengali = 0x09ea;\n  t.fourcircle = 0x2463;\n  t.fourcircleinversesansserif = 0x278d;\n  t.fourdeva = 0x096a;\n  t.fourgujarati = 0x0aea;\n  t.fourgurmukhi = 0x0a6a;\n  t.fourhackarabic = 0x0664;\n  t.fourhangzhou = 0x3024;\n  t.fourideographicparen = 0x3223;\n  t.fourinferior = 0x2084;\n  t.fourmonospace = 0xff14;\n  t.fournumeratorbengali = 0x09f7;\n  t.fouroldstyle = 0xf734;\n  t.fourparen = 0x2477;\n  t.fourperiod = 0x248b;\n  t.fourpersian = 0x06f4;\n  t.fourroman = 0x2173;\n  t.foursuperior = 0x2074;\n  t.fourteencircle = 0x246d;\n  t.fourteenparen = 0x2481;\n  t.fourteenperiod = 0x2495;\n  t.fourthai = 0x0e54;\n  t.fourthtonechinese = 0x02cb;\n  t.fparen = 0x24a1;\n  t.fraction = 0x2044;\n  t.franc = 0x20a3;\n  t.g = 0x0067;\n  t.gabengali = 0x0997;\n  t.gacute = 0x01f5;\n  t.gadeva = 0x0917;\n  t.gafarabic = 0x06af;\n  t.gaffinalarabic = 0xfb93;\n  t.gafinitialarabic = 0xfb94;\n  t.gafmedialarabic = 0xfb95;\n  t.gagujarati = 0x0a97;\n  t.gagurmukhi = 0x0a17;\n  t.gahiragana = 0x304c;\n  t.gakatakana = 0x30ac;\n  t.gamma = 0x03b3;\n  t.gammalatinsmall = 0x0263;\n  t.gammasuperior = 0x02e0;\n  t.gangiacoptic = 0x03eb;\n  t.gbopomofo = 0x310d;\n  t.gbreve = 0x011f;\n  t.gcaron = 0x01e7;\n  t.gcedilla = 0x0123;\n  t.gcircle = 0x24d6;\n  t.gcircumflex = 0x011d;\n  t.gcommaaccent = 0x0123;\n  t.gdot = 0x0121;\n  t.gdotaccent = 0x0121;\n  t.gecyrillic = 0x0433;\n  t.gehiragana = 0x3052;\n  t.gekatakana = 0x30b2;\n  t.geometricallyequal = 0x2251;\n  t.gereshaccenthebrew = 0x059c;\n  t.gereshhebrew = 0x05f3;\n  t.gereshmuqdamhebrew = 0x059d;\n  t.germandbls = 0x00df;\n  t.gershayimaccenthebrew = 0x059e;\n  t.gershayimhebrew = 0x05f4;\n  t.getamark = 0x3013;\n  t.ghabengali = 0x0998;\n  t.ghadarmenian = 0x0572;\n  t.ghadeva = 0x0918;\n  t.ghagujarati = 0x0a98;\n  t.ghagurmukhi = 0x0a18;\n  t.ghainarabic = 0x063a;\n  t.ghainfinalarabic = 0xfece;\n  t.ghaininitialarabic = 0xfecf;\n  t.ghainmedialarabic = 0xfed0;\n  t.ghemiddlehookcyrillic = 0x0495;\n  t.ghestrokecyrillic = 0x0493;\n  t.gheupturncyrillic = 0x0491;\n  t.ghhadeva = 0x095a;\n  t.ghhagurmukhi = 0x0a5a;\n  t.ghook = 0x0260;\n  t.ghzsquare = 0x3393;\n  t.gihiragana = 0x304e;\n  t.gikatakana = 0x30ae;\n  t.gimarmenian = 0x0563;\n  t.gimel = 0x05d2;\n  t.gimeldagesh = 0xfb32;\n  t.gimeldageshhebrew = 0xfb32;\n  t.gimelhebrew = 0x05d2;\n  t.gjecyrillic = 0x0453;\n  t.glottalinvertedstroke = 0x01be;\n  t.glottalstop = 0x0294;\n  t.glottalstopinverted = 0x0296;\n  t.glottalstopmod = 0x02c0;\n  t.glottalstopreversed = 0x0295;\n  t.glottalstopreversedmod = 0x02c1;\n  t.glottalstopreversedsuperior = 0x02e4;\n  t.glottalstopstroke = 0x02a1;\n  t.glottalstopstrokereversed = 0x02a2;\n  t.gmacron = 0x1e21;\n  t.gmonospace = 0xff47;\n  t.gohiragana = 0x3054;\n  t.gokatakana = 0x30b4;\n  t.gparen = 0x24a2;\n  t.gpasquare = 0x33ac;\n  t.gradient = 0x2207;\n  t.grave = 0x0060;\n  t.gravebelowcmb = 0x0316;\n  t.gravecmb = 0x0300;\n  t.gravecomb = 0x0300;\n  t.gravedeva = 0x0953;\n  t.gravelowmod = 0x02ce;\n  t.gravemonospace = 0xff40;\n  t.gravetonecmb = 0x0340;\n  t.greater = 0x003e;\n  t.greaterequal = 0x2265;\n  t.greaterequalorless = 0x22db;\n  t.greatermonospace = 0xff1e;\n  t.greaterorequivalent = 0x2273;\n  t.greaterorless = 0x2277;\n  t.greateroverequal = 0x2267;\n  t.greatersmall = 0xfe65;\n  t.gscript = 0x0261;\n  t.gstroke = 0x01e5;\n  t.guhiragana = 0x3050;\n  t.guillemotleft = 0x00ab;\n  t.guillemotright = 0x00bb;\n  t.guilsinglleft = 0x2039;\n  t.guilsinglright = 0x203a;\n  t.gukatakana = 0x30b0;\n  t.guramusquare = 0x3318;\n  t.gysquare = 0x33c9;\n  t.h = 0x0068;\n  t.haabkhasiancyrillic = 0x04a9;\n  t.haaltonearabic = 0x06c1;\n  t.habengali = 0x09b9;\n  t.hadescendercyrillic = 0x04b3;\n  t.hadeva = 0x0939;\n  t.hagujarati = 0x0ab9;\n  t.hagurmukhi = 0x0a39;\n  t.haharabic = 0x062d;\n  t.hahfinalarabic = 0xfea2;\n  t.hahinitialarabic = 0xfea3;\n  t.hahiragana = 0x306f;\n  t.hahmedialarabic = 0xfea4;\n  t.haitusquare = 0x332a;\n  t.hakatakana = 0x30cf;\n  t.hakatakanahalfwidth = 0xff8a;\n  t.halantgurmukhi = 0x0a4d;\n  t.hamzaarabic = 0x0621;\n  t.hamzalowarabic = 0x0621;\n  t.hangulfiller = 0x3164;\n  t.hardsigncyrillic = 0x044a;\n  t.harpoonleftbarbup = 0x21bc;\n  t.harpoonrightbarbup = 0x21c0;\n  t.hasquare = 0x33ca;\n  t.hatafpatah = 0x05b2;\n  t.hatafpatah16 = 0x05b2;\n  t.hatafpatah23 = 0x05b2;\n  t.hatafpatah2f = 0x05b2;\n  t.hatafpatahhebrew = 0x05b2;\n  t.hatafpatahnarrowhebrew = 0x05b2;\n  t.hatafpatahquarterhebrew = 0x05b2;\n  t.hatafpatahwidehebrew = 0x05b2;\n  t.hatafqamats = 0x05b3;\n  t.hatafqamats1b = 0x05b3;\n  t.hatafqamats28 = 0x05b3;\n  t.hatafqamats34 = 0x05b3;\n  t.hatafqamatshebrew = 0x05b3;\n  t.hatafqamatsnarrowhebrew = 0x05b3;\n  t.hatafqamatsquarterhebrew = 0x05b3;\n  t.hatafqamatswidehebrew = 0x05b3;\n  t.hatafsegol = 0x05b1;\n  t.hatafsegol17 = 0x05b1;\n  t.hatafsegol24 = 0x05b1;\n  t.hatafsegol30 = 0x05b1;\n  t.hatafsegolhebrew = 0x05b1;\n  t.hatafsegolnarrowhebrew = 0x05b1;\n  t.hatafsegolquarterhebrew = 0x05b1;\n  t.hatafsegolwidehebrew = 0x05b1;\n  t.hbar = 0x0127;\n  t.hbopomofo = 0x310f;\n  t.hbrevebelow = 0x1e2b;\n  t.hcedilla = 0x1e29;\n  t.hcircle = 0x24d7;\n  t.hcircumflex = 0x0125;\n  t.hdieresis = 0x1e27;\n  t.hdotaccent = 0x1e23;\n  t.hdotbelow = 0x1e25;\n  t.he = 0x05d4;\n  t.heart = 0x2665;\n  t.heartsuitblack = 0x2665;\n  t.heartsuitwhite = 0x2661;\n  t.hedagesh = 0xfb34;\n  t.hedageshhebrew = 0xfb34;\n  t.hehaltonearabic = 0x06c1;\n  t.heharabic = 0x0647;\n  t.hehebrew = 0x05d4;\n  t.hehfinalaltonearabic = 0xfba7;\n  t.hehfinalalttwoarabic = 0xfeea;\n  t.hehfinalarabic = 0xfeea;\n  t.hehhamzaabovefinalarabic = 0xfba5;\n  t.hehhamzaaboveisolatedarabic = 0xfba4;\n  t.hehinitialaltonearabic = 0xfba8;\n  t.hehinitialarabic = 0xfeeb;\n  t.hehiragana = 0x3078;\n  t.hehmedialaltonearabic = 0xfba9;\n  t.hehmedialarabic = 0xfeec;\n  t.heiseierasquare = 0x337b;\n  t.hekatakana = 0x30d8;\n  t.hekatakanahalfwidth = 0xff8d;\n  t.hekutaarusquare = 0x3336;\n  t.henghook = 0x0267;\n  t.herutusquare = 0x3339;\n  t.het = 0x05d7;\n  t.hethebrew = 0x05d7;\n  t.hhook = 0x0266;\n  t.hhooksuperior = 0x02b1;\n  t.hieuhacirclekorean = 0x327b;\n  t.hieuhaparenkorean = 0x321b;\n  t.hieuhcirclekorean = 0x326d;\n  t.hieuhkorean = 0x314e;\n  t.hieuhparenkorean = 0x320d;\n  t.hihiragana = 0x3072;\n  t.hikatakana = 0x30d2;\n  t.hikatakanahalfwidth = 0xff8b;\n  t.hiriq = 0x05b4;\n  t.hiriq14 = 0x05b4;\n  t.hiriq21 = 0x05b4;\n  t.hiriq2d = 0x05b4;\n  t.hiriqhebrew = 0x05b4;\n  t.hiriqnarrowhebrew = 0x05b4;\n  t.hiriqquarterhebrew = 0x05b4;\n  t.hiriqwidehebrew = 0x05b4;\n  t.hlinebelow = 0x1e96;\n  t.hmonospace = 0xff48;\n  t.hoarmenian = 0x0570;\n  t.hohipthai = 0x0e2b;\n  t.hohiragana = 0x307b;\n  t.hokatakana = 0x30db;\n  t.hokatakanahalfwidth = 0xff8e;\n  t.holam = 0x05b9;\n  t.holam19 = 0x05b9;\n  t.holam26 = 0x05b9;\n  t.holam32 = 0x05b9;\n  t.holamhebrew = 0x05b9;\n  t.holamnarrowhebrew = 0x05b9;\n  t.holamquarterhebrew = 0x05b9;\n  t.holamwidehebrew = 0x05b9;\n  t.honokhukthai = 0x0e2e;\n  t.hookabovecomb = 0x0309;\n  t.hookcmb = 0x0309;\n  t.hookpalatalizedbelowcmb = 0x0321;\n  t.hookretroflexbelowcmb = 0x0322;\n  t.hoonsquare = 0x3342;\n  t.horicoptic = 0x03e9;\n  t.horizontalbar = 0x2015;\n  t.horncmb = 0x031b;\n  t.hotsprings = 0x2668;\n  t.house = 0x2302;\n  t.hparen = 0x24a3;\n  t.hsuperior = 0x02b0;\n  t.hturned = 0x0265;\n  t.huhiragana = 0x3075;\n  t.huiitosquare = 0x3333;\n  t.hukatakana = 0x30d5;\n  t.hukatakanahalfwidth = 0xff8c;\n  t.hungarumlaut = 0x02dd;\n  t.hungarumlautcmb = 0x030b;\n  t.hv = 0x0195;\n  t.hyphen = 0x002d;\n  t.hypheninferior = 0xf6e5;\n  t.hyphenmonospace = 0xff0d;\n  t.hyphensmall = 0xfe63;\n  t.hyphensuperior = 0xf6e6;\n  t.hyphentwo = 0x2010;\n  t.i = 0x0069;\n  t.iacute = 0x00ed;\n  t.iacyrillic = 0x044f;\n  t.ibengali = 0x0987;\n  t.ibopomofo = 0x3127;\n  t.ibreve = 0x012d;\n  t.icaron = 0x01d0;\n  t.icircle = 0x24d8;\n  t.icircumflex = 0x00ee;\n  t.icyrillic = 0x0456;\n  t.idblgrave = 0x0209;\n  t.ideographearthcircle = 0x328f;\n  t.ideographfirecircle = 0x328b;\n  t.ideographicallianceparen = 0x323f;\n  t.ideographiccallparen = 0x323a;\n  t.ideographiccentrecircle = 0x32a5;\n  t.ideographicclose = 0x3006;\n  t.ideographiccomma = 0x3001;\n  t.ideographiccommaleft = 0xff64;\n  t.ideographiccongratulationparen = 0x3237;\n  t.ideographiccorrectcircle = 0x32a3;\n  t.ideographicearthparen = 0x322f;\n  t.ideographicenterpriseparen = 0x323d;\n  t.ideographicexcellentcircle = 0x329d;\n  t.ideographicfestivalparen = 0x3240;\n  t.ideographicfinancialcircle = 0x3296;\n  t.ideographicfinancialparen = 0x3236;\n  t.ideographicfireparen = 0x322b;\n  t.ideographichaveparen = 0x3232;\n  t.ideographichighcircle = 0x32a4;\n  t.ideographiciterationmark = 0x3005;\n  t.ideographiclaborcircle = 0x3298;\n  t.ideographiclaborparen = 0x3238;\n  t.ideographicleftcircle = 0x32a7;\n  t.ideographiclowcircle = 0x32a6;\n  t.ideographicmedicinecircle = 0x32a9;\n  t.ideographicmetalparen = 0x322e;\n  t.ideographicmoonparen = 0x322a;\n  t.ideographicnameparen = 0x3234;\n  t.ideographicperiod = 0x3002;\n  t.ideographicprintcircle = 0x329e;\n  t.ideographicreachparen = 0x3243;\n  t.ideographicrepresentparen = 0x3239;\n  t.ideographicresourceparen = 0x323e;\n  t.ideographicrightcircle = 0x32a8;\n  t.ideographicsecretcircle = 0x3299;\n  t.ideographicselfparen = 0x3242;\n  t.ideographicsocietyparen = 0x3233;\n  t.ideographicspace = 0x3000;\n  t.ideographicspecialparen = 0x3235;\n  t.ideographicstockparen = 0x3231;\n  t.ideographicstudyparen = 0x323b;\n  t.ideographicsunparen = 0x3230;\n  t.ideographicsuperviseparen = 0x323c;\n  t.ideographicwaterparen = 0x322c;\n  t.ideographicwoodparen = 0x322d;\n  t.ideographiczero = 0x3007;\n  t.ideographmetalcircle = 0x328e;\n  t.ideographmooncircle = 0x328a;\n  t.ideographnamecircle = 0x3294;\n  t.ideographsuncircle = 0x3290;\n  t.ideographwatercircle = 0x328c;\n  t.ideographwoodcircle = 0x328d;\n  t.ideva = 0x0907;\n  t.idieresis = 0x00ef;\n  t.idieresisacute = 0x1e2f;\n  t.idieresiscyrillic = 0x04e5;\n  t.idotbelow = 0x1ecb;\n  t.iebrevecyrillic = 0x04d7;\n  t.iecyrillic = 0x0435;\n  t.ieungacirclekorean = 0x3275;\n  t.ieungaparenkorean = 0x3215;\n  t.ieungcirclekorean = 0x3267;\n  t.ieungkorean = 0x3147;\n  t.ieungparenkorean = 0x3207;\n  t.igrave = 0x00ec;\n  t.igujarati = 0x0a87;\n  t.igurmukhi = 0x0a07;\n  t.ihiragana = 0x3044;\n  t.ihookabove = 0x1ec9;\n  t.iibengali = 0x0988;\n  t.iicyrillic = 0x0438;\n  t.iideva = 0x0908;\n  t.iigujarati = 0x0a88;\n  t.iigurmukhi = 0x0a08;\n  t.iimatragurmukhi = 0x0a40;\n  t.iinvertedbreve = 0x020b;\n  t.iishortcyrillic = 0x0439;\n  t.iivowelsignbengali = 0x09c0;\n  t.iivowelsigndeva = 0x0940;\n  t.iivowelsigngujarati = 0x0ac0;\n  t.ij = 0x0133;\n  t.ikatakana = 0x30a4;\n  t.ikatakanahalfwidth = 0xff72;\n  t.ikorean = 0x3163;\n  t.ilde = 0x02dc;\n  t.iluyhebrew = 0x05ac;\n  t.imacron = 0x012b;\n  t.imacroncyrillic = 0x04e3;\n  t.imageorapproximatelyequal = 0x2253;\n  t.imatragurmukhi = 0x0a3f;\n  t.imonospace = 0xff49;\n  t.increment = 0x2206;\n  t.infinity = 0x221e;\n  t.iniarmenian = 0x056b;\n  t.integral = 0x222b;\n  t.integralbottom = 0x2321;\n  t.integralbt = 0x2321;\n  t.integralex = 0xf8f5;\n  t.integraltop = 0x2320;\n  t.integraltp = 0x2320;\n  t.intersection = 0x2229;\n  t.intisquare = 0x3305;\n  t.invbullet = 0x25d8;\n  t.invcircle = 0x25d9;\n  t.invsmileface = 0x263b;\n  t.iocyrillic = 0x0451;\n  t.iogonek = 0x012f;\n  t.iota = 0x03b9;\n  t.iotadieresis = 0x03ca;\n  t.iotadieresistonos = 0x0390;\n  t.iotalatin = 0x0269;\n  t.iotatonos = 0x03af;\n  t.iparen = 0x24a4;\n  t.irigurmukhi = 0x0a72;\n  t.ismallhiragana = 0x3043;\n  t.ismallkatakana = 0x30a3;\n  t.ismallkatakanahalfwidth = 0xff68;\n  t.issharbengali = 0x09fa;\n  t.istroke = 0x0268;\n  t.isuperior = 0xf6ed;\n  t.iterationhiragana = 0x309d;\n  t.iterationkatakana = 0x30fd;\n  t.itilde = 0x0129;\n  t.itildebelow = 0x1e2d;\n  t.iubopomofo = 0x3129;\n  t.iucyrillic = 0x044e;\n  t.ivowelsignbengali = 0x09bf;\n  t.ivowelsigndeva = 0x093f;\n  t.ivowelsigngujarati = 0x0abf;\n  t.izhitsacyrillic = 0x0475;\n  t.izhitsadblgravecyrillic = 0x0477;\n  t.j = 0x006a;\n  t.jaarmenian = 0x0571;\n  t.jabengali = 0x099c;\n  t.jadeva = 0x091c;\n  t.jagujarati = 0x0a9c;\n  t.jagurmukhi = 0x0a1c;\n  t.jbopomofo = 0x3110;\n  t.jcaron = 0x01f0;\n  t.jcircle = 0x24d9;\n  t.jcircumflex = 0x0135;\n  t.jcrossedtail = 0x029d;\n  t.jdotlessstroke = 0x025f;\n  t.jecyrillic = 0x0458;\n  t.jeemarabic = 0x062c;\n  t.jeemfinalarabic = 0xfe9e;\n  t.jeeminitialarabic = 0xfe9f;\n  t.jeemmedialarabic = 0xfea0;\n  t.jeharabic = 0x0698;\n  t.jehfinalarabic = 0xfb8b;\n  t.jhabengali = 0x099d;\n  t.jhadeva = 0x091d;\n  t.jhagujarati = 0x0a9d;\n  t.jhagurmukhi = 0x0a1d;\n  t.jheharmenian = 0x057b;\n  t.jis = 0x3004;\n  t.jmonospace = 0xff4a;\n  t.jparen = 0x24a5;\n  t.jsuperior = 0x02b2;\n  t.k = 0x006b;\n  t.kabashkircyrillic = 0x04a1;\n  t.kabengali = 0x0995;\n  t.kacute = 0x1e31;\n  t.kacyrillic = 0x043a;\n  t.kadescendercyrillic = 0x049b;\n  t.kadeva = 0x0915;\n  t.kaf = 0x05db;\n  t.kafarabic = 0x0643;\n  t.kafdagesh = 0xfb3b;\n  t.kafdageshhebrew = 0xfb3b;\n  t.kaffinalarabic = 0xfeda;\n  t.kafhebrew = 0x05db;\n  t.kafinitialarabic = 0xfedb;\n  t.kafmedialarabic = 0xfedc;\n  t.kafrafehebrew = 0xfb4d;\n  t.kagujarati = 0x0a95;\n  t.kagurmukhi = 0x0a15;\n  t.kahiragana = 0x304b;\n  t.kahookcyrillic = 0x04c4;\n  t.kakatakana = 0x30ab;\n  t.kakatakanahalfwidth = 0xff76;\n  t.kappa = 0x03ba;\n  t.kappasymbolgreek = 0x03f0;\n  t.kapyeounmieumkorean = 0x3171;\n  t.kapyeounphieuphkorean = 0x3184;\n  t.kapyeounpieupkorean = 0x3178;\n  t.kapyeounssangpieupkorean = 0x3179;\n  t.karoriisquare = 0x330d;\n  t.kashidaautoarabic = 0x0640;\n  t.kashidaautonosidebearingarabic = 0x0640;\n  t.kasmallkatakana = 0x30f5;\n  t.kasquare = 0x3384;\n  t.kasraarabic = 0x0650;\n  t.kasratanarabic = 0x064d;\n  t.kastrokecyrillic = 0x049f;\n  t.katahiraprolongmarkhalfwidth = 0xff70;\n  t.kaverticalstrokecyrillic = 0x049d;\n  t.kbopomofo = 0x310e;\n  t.kcalsquare = 0x3389;\n  t.kcaron = 0x01e9;\n  t.kcedilla = 0x0137;\n  t.kcircle = 0x24da;\n  t.kcommaaccent = 0x0137;\n  t.kdotbelow = 0x1e33;\n  t.keharmenian = 0x0584;\n  t.kehiragana = 0x3051;\n  t.kekatakana = 0x30b1;\n  t.kekatakanahalfwidth = 0xff79;\n  t.kenarmenian = 0x056f;\n  t.kesmallkatakana = 0x30f6;\n  t.kgreenlandic = 0x0138;\n  t.khabengali = 0x0996;\n  t.khacyrillic = 0x0445;\n  t.khadeva = 0x0916;\n  t.khagujarati = 0x0a96;\n  t.khagurmukhi = 0x0a16;\n  t.khaharabic = 0x062e;\n  t.khahfinalarabic = 0xfea6;\n  t.khahinitialarabic = 0xfea7;\n  t.khahmedialarabic = 0xfea8;\n  t.kheicoptic = 0x03e7;\n  t.khhadeva = 0x0959;\n  t.khhagurmukhi = 0x0a59;\n  t.khieukhacirclekorean = 0x3278;\n  t.khieukhaparenkorean = 0x3218;\n  t.khieukhcirclekorean = 0x326a;\n  t.khieukhkorean = 0x314b;\n  t.khieukhparenkorean = 0x320a;\n  t.khokhaithai = 0x0e02;\n  t.khokhonthai = 0x0e05;\n  t.khokhuatthai = 0x0e03;\n  t.khokhwaithai = 0x0e04;\n  t.khomutthai = 0x0e5b;\n  t.khook = 0x0199;\n  t.khorakhangthai = 0x0e06;\n  t.khzsquare = 0x3391;\n  t.kihiragana = 0x304d;\n  t.kikatakana = 0x30ad;\n  t.kikatakanahalfwidth = 0xff77;\n  t.kiroguramusquare = 0x3315;\n  t.kiromeetorusquare = 0x3316;\n  t.kirosquare = 0x3314;\n  t.kiyeokacirclekorean = 0x326e;\n  t.kiyeokaparenkorean = 0x320e;\n  t.kiyeokcirclekorean = 0x3260;\n  t.kiyeokkorean = 0x3131;\n  t.kiyeokparenkorean = 0x3200;\n  t.kiyeoksioskorean = 0x3133;\n  t.kjecyrillic = 0x045c;\n  t.klinebelow = 0x1e35;\n  t.klsquare = 0x3398;\n  t.kmcubedsquare = 0x33a6;\n  t.kmonospace = 0xff4b;\n  t.kmsquaredsquare = 0x33a2;\n  t.kohiragana = 0x3053;\n  t.kohmsquare = 0x33c0;\n  t.kokaithai = 0x0e01;\n  t.kokatakana = 0x30b3;\n  t.kokatakanahalfwidth = 0xff7a;\n  t.kooposquare = 0x331e;\n  t.koppacyrillic = 0x0481;\n  t.koreanstandardsymbol = 0x327f;\n  t.koroniscmb = 0x0343;\n  t.kparen = 0x24a6;\n  t.kpasquare = 0x33aa;\n  t.ksicyrillic = 0x046f;\n  t.ktsquare = 0x33cf;\n  t.kturned = 0x029e;\n  t.kuhiragana = 0x304f;\n  t.kukatakana = 0x30af;\n  t.kukatakanahalfwidth = 0xff78;\n  t.kvsquare = 0x33b8;\n  t.kwsquare = 0x33be;\n  t.l = 0x006c;\n  t.labengali = 0x09b2;\n  t.lacute = 0x013a;\n  t.ladeva = 0x0932;\n  t.lagujarati = 0x0ab2;\n  t.lagurmukhi = 0x0a32;\n  t.lakkhangyaothai = 0x0e45;\n  t.lamaleffinalarabic = 0xfefc;\n  t.lamalefhamzaabovefinalarabic = 0xfef8;\n  t.lamalefhamzaaboveisolatedarabic = 0xfef7;\n  t.lamalefhamzabelowfinalarabic = 0xfefa;\n  t.lamalefhamzabelowisolatedarabic = 0xfef9;\n  t.lamalefisolatedarabic = 0xfefb;\n  t.lamalefmaddaabovefinalarabic = 0xfef6;\n  t.lamalefmaddaaboveisolatedarabic = 0xfef5;\n  t.lamarabic = 0x0644;\n  t.lambda = 0x03bb;\n  t.lambdastroke = 0x019b;\n  t.lamed = 0x05dc;\n  t.lameddagesh = 0xfb3c;\n  t.lameddageshhebrew = 0xfb3c;\n  t.lamedhebrew = 0x05dc;\n  t.lamfinalarabic = 0xfede;\n  t.lamhahinitialarabic = 0xfcca;\n  t.laminitialarabic = 0xfedf;\n  t.lamjeeminitialarabic = 0xfcc9;\n  t.lamkhahinitialarabic = 0xfccb;\n  t.lamlamhehisolatedarabic = 0xfdf2;\n  t.lammedialarabic = 0xfee0;\n  t.lammeemhahinitialarabic = 0xfd88;\n  t.lammeeminitialarabic = 0xfccc;\n  t.largecircle = 0x25ef;\n  t.lbar = 0x019a;\n  t.lbelt = 0x026c;\n  t.lbopomofo = 0x310c;\n  t.lcaron = 0x013e;\n  t.lcedilla = 0x013c;\n  t.lcircle = 0x24db;\n  t.lcircumflexbelow = 0x1e3d;\n  t.lcommaaccent = 0x013c;\n  t.ldot = 0x0140;\n  t.ldotaccent = 0x0140;\n  t.ldotbelow = 0x1e37;\n  t.ldotbelowmacron = 0x1e39;\n  t.leftangleabovecmb = 0x031a;\n  t.lefttackbelowcmb = 0x0318;\n  t.less = 0x003c;\n  t.lessequal = 0x2264;\n  t.lessequalorgreater = 0x22da;\n  t.lessmonospace = 0xff1c;\n  t.lessorequivalent = 0x2272;\n  t.lessorgreater = 0x2276;\n  t.lessoverequal = 0x2266;\n  t.lesssmall = 0xfe64;\n  t.lezh = 0x026e;\n  t.lfblock = 0x258c;\n  t.lhookretroflex = 0x026d;\n  t.lira = 0x20a4;\n  t.liwnarmenian = 0x056c;\n  t.lj = 0x01c9;\n  t.ljecyrillic = 0x0459;\n  t.ll = 0xf6c0;\n  t.lladeva = 0x0933;\n  t.llagujarati = 0x0ab3;\n  t.llinebelow = 0x1e3b;\n  t.llladeva = 0x0934;\n  t.llvocalicbengali = 0x09e1;\n  t.llvocalicdeva = 0x0961;\n  t.llvocalicvowelsignbengali = 0x09e3;\n  t.llvocalicvowelsigndeva = 0x0963;\n  t.lmiddletilde = 0x026b;\n  t.lmonospace = 0xff4c;\n  t.lmsquare = 0x33d0;\n  t.lochulathai = 0x0e2c;\n  t.logicaland = 0x2227;\n  t.logicalnot = 0x00ac;\n  t.logicalnotreversed = 0x2310;\n  t.logicalor = 0x2228;\n  t.lolingthai = 0x0e25;\n  t.longs = 0x017f;\n  t.lowlinecenterline = 0xfe4e;\n  t.lowlinecmb = 0x0332;\n  t.lowlinedashed = 0xfe4d;\n  t.lozenge = 0x25ca;\n  t.lparen = 0x24a7;\n  t.lslash = 0x0142;\n  t.lsquare = 0x2113;\n  t.lsuperior = 0xf6ee;\n  t.ltshade = 0x2591;\n  t.luthai = 0x0e26;\n  t.lvocalicbengali = 0x098c;\n  t.lvocalicdeva = 0x090c;\n  t.lvocalicvowelsignbengali = 0x09e2;\n  t.lvocalicvowelsigndeva = 0x0962;\n  t.lxsquare = 0x33d3;\n  t.m = 0x006d;\n  t.mabengali = 0x09ae;\n  t.macron = 0x00af;\n  t.macronbelowcmb = 0x0331;\n  t.macroncmb = 0x0304;\n  t.macronlowmod = 0x02cd;\n  t.macronmonospace = 0xffe3;\n  t.macute = 0x1e3f;\n  t.madeva = 0x092e;\n  t.magujarati = 0x0aae;\n  t.magurmukhi = 0x0a2e;\n  t.mahapakhhebrew = 0x05a4;\n  t.mahapakhlefthebrew = 0x05a4;\n  t.mahiragana = 0x307e;\n  t.maichattawalowleftthai = 0xf895;\n  t.maichattawalowrightthai = 0xf894;\n  t.maichattawathai = 0x0e4b;\n  t.maichattawaupperleftthai = 0xf893;\n  t.maieklowleftthai = 0xf88c;\n  t.maieklowrightthai = 0xf88b;\n  t.maiekthai = 0x0e48;\n  t.maiekupperleftthai = 0xf88a;\n  t.maihanakatleftthai = 0xf884;\n  t.maihanakatthai = 0x0e31;\n  t.maitaikhuleftthai = 0xf889;\n  t.maitaikhuthai = 0x0e47;\n  t.maitholowleftthai = 0xf88f;\n  t.maitholowrightthai = 0xf88e;\n  t.maithothai = 0x0e49;\n  t.maithoupperleftthai = 0xf88d;\n  t.maitrilowleftthai = 0xf892;\n  t.maitrilowrightthai = 0xf891;\n  t.maitrithai = 0x0e4a;\n  t.maitriupperleftthai = 0xf890;\n  t.maiyamokthai = 0x0e46;\n  t.makatakana = 0x30de;\n  t.makatakanahalfwidth = 0xff8f;\n  t.male = 0x2642;\n  t.mansyonsquare = 0x3347;\n  t.maqafhebrew = 0x05be;\n  t.mars = 0x2642;\n  t.masoracirclehebrew = 0x05af;\n  t.masquare = 0x3383;\n  t.mbopomofo = 0x3107;\n  t.mbsquare = 0x33d4;\n  t.mcircle = 0x24dc;\n  t.mcubedsquare = 0x33a5;\n  t.mdotaccent = 0x1e41;\n  t.mdotbelow = 0x1e43;\n  t.meemarabic = 0x0645;\n  t.meemfinalarabic = 0xfee2;\n  t.meeminitialarabic = 0xfee3;\n  t.meemmedialarabic = 0xfee4;\n  t.meemmeeminitialarabic = 0xfcd1;\n  t.meemmeemisolatedarabic = 0xfc48;\n  t.meetorusquare = 0x334d;\n  t.mehiragana = 0x3081;\n  t.meizierasquare = 0x337e;\n  t.mekatakana = 0x30e1;\n  t.mekatakanahalfwidth = 0xff92;\n  t.mem = 0x05de;\n  t.memdagesh = 0xfb3e;\n  t.memdageshhebrew = 0xfb3e;\n  t.memhebrew = 0x05de;\n  t.menarmenian = 0x0574;\n  t.merkhahebrew = 0x05a5;\n  t.merkhakefulahebrew = 0x05a6;\n  t.merkhakefulalefthebrew = 0x05a6;\n  t.merkhalefthebrew = 0x05a5;\n  t.mhook = 0x0271;\n  t.mhzsquare = 0x3392;\n  t.middledotkatakanahalfwidth = 0xff65;\n  t.middot = 0x00b7;\n  t.mieumacirclekorean = 0x3272;\n  t.mieumaparenkorean = 0x3212;\n  t.mieumcirclekorean = 0x3264;\n  t.mieumkorean = 0x3141;\n  t.mieumpansioskorean = 0x3170;\n  t.mieumparenkorean = 0x3204;\n  t.mieumpieupkorean = 0x316e;\n  t.mieumsioskorean = 0x316f;\n  t.mihiragana = 0x307f;\n  t.mikatakana = 0x30df;\n  t.mikatakanahalfwidth = 0xff90;\n  t.minus = 0x2212;\n  t.minusbelowcmb = 0x0320;\n  t.minuscircle = 0x2296;\n  t.minusmod = 0x02d7;\n  t.minusplus = 0x2213;\n  t.minute = 0x2032;\n  t.miribaarusquare = 0x334a;\n  t.mirisquare = 0x3349;\n  t.mlonglegturned = 0x0270;\n  t.mlsquare = 0x3396;\n  t.mmcubedsquare = 0x33a3;\n  t.mmonospace = 0xff4d;\n  t.mmsquaredsquare = 0x339f;\n  t.mohiragana = 0x3082;\n  t.mohmsquare = 0x33c1;\n  t.mokatakana = 0x30e2;\n  t.mokatakanahalfwidth = 0xff93;\n  t.molsquare = 0x33d6;\n  t.momathai = 0x0e21;\n  t.moverssquare = 0x33a7;\n  t.moverssquaredsquare = 0x33a8;\n  t.mparen = 0x24a8;\n  t.mpasquare = 0x33ab;\n  t.mssquare = 0x33b3;\n  t.msuperior = 0xf6ef;\n  t.mturned = 0x026f;\n  t.mu = 0x00b5;\n  t.mu1 = 0x00b5;\n  t.muasquare = 0x3382;\n  t.muchgreater = 0x226b;\n  t.muchless = 0x226a;\n  t.mufsquare = 0x338c;\n  t.mugreek = 0x03bc;\n  t.mugsquare = 0x338d;\n  t.muhiragana = 0x3080;\n  t.mukatakana = 0x30e0;\n  t.mukatakanahalfwidth = 0xff91;\n  t.mulsquare = 0x3395;\n  t.multiply = 0x00d7;\n  t.mumsquare = 0x339b;\n  t.munahhebrew = 0x05a3;\n  t.munahlefthebrew = 0x05a3;\n  t.musicalnote = 0x266a;\n  t.musicalnotedbl = 0x266b;\n  t.musicflatsign = 0x266d;\n  t.musicsharpsign = 0x266f;\n  t.mussquare = 0x33b2;\n  t.muvsquare = 0x33b6;\n  t.muwsquare = 0x33bc;\n  t.mvmegasquare = 0x33b9;\n  t.mvsquare = 0x33b7;\n  t.mwmegasquare = 0x33bf;\n  t.mwsquare = 0x33bd;\n  t.n = 0x006e;\n  t.nabengali = 0x09a8;\n  t.nabla = 0x2207;\n  t.nacute = 0x0144;\n  t.nadeva = 0x0928;\n  t.nagujarati = 0x0aa8;\n  t.nagurmukhi = 0x0a28;\n  t.nahiragana = 0x306a;\n  t.nakatakana = 0x30ca;\n  t.nakatakanahalfwidth = 0xff85;\n  t.napostrophe = 0x0149;\n  t.nasquare = 0x3381;\n  t.nbopomofo = 0x310b;\n  t.nbspace = 0x00a0;\n  t.ncaron = 0x0148;\n  t.ncedilla = 0x0146;\n  t.ncircle = 0x24dd;\n  t.ncircumflexbelow = 0x1e4b;\n  t.ncommaaccent = 0x0146;\n  t.ndotaccent = 0x1e45;\n  t.ndotbelow = 0x1e47;\n  t.nehiragana = 0x306d;\n  t.nekatakana = 0x30cd;\n  t.nekatakanahalfwidth = 0xff88;\n  t.newsheqelsign = 0x20aa;\n  t.nfsquare = 0x338b;\n  t.ngabengali = 0x0999;\n  t.ngadeva = 0x0919;\n  t.ngagujarati = 0x0a99;\n  t.ngagurmukhi = 0x0a19;\n  t.ngonguthai = 0x0e07;\n  t.nhiragana = 0x3093;\n  t.nhookleft = 0x0272;\n  t.nhookretroflex = 0x0273;\n  t.nieunacirclekorean = 0x326f;\n  t.nieunaparenkorean = 0x320f;\n  t.nieuncieuckorean = 0x3135;\n  t.nieuncirclekorean = 0x3261;\n  t.nieunhieuhkorean = 0x3136;\n  t.nieunkorean = 0x3134;\n  t.nieunpansioskorean = 0x3168;\n  t.nieunparenkorean = 0x3201;\n  t.nieunsioskorean = 0x3167;\n  t.nieuntikeutkorean = 0x3166;\n  t.nihiragana = 0x306b;\n  t.nikatakana = 0x30cb;\n  t.nikatakanahalfwidth = 0xff86;\n  t.nikhahitleftthai = 0xf899;\n  t.nikhahitthai = 0x0e4d;\n  t.nine = 0x0039;\n  t.ninearabic = 0x0669;\n  t.ninebengali = 0x09ef;\n  t.ninecircle = 0x2468;\n  t.ninecircleinversesansserif = 0x2792;\n  t.ninedeva = 0x096f;\n  t.ninegujarati = 0x0aef;\n  t.ninegurmukhi = 0x0a6f;\n  t.ninehackarabic = 0x0669;\n  t.ninehangzhou = 0x3029;\n  t.nineideographicparen = 0x3228;\n  t.nineinferior = 0x2089;\n  t.ninemonospace = 0xff19;\n  t.nineoldstyle = 0xf739;\n  t.nineparen = 0x247c;\n  t.nineperiod = 0x2490;\n  t.ninepersian = 0x06f9;\n  t.nineroman = 0x2178;\n  t.ninesuperior = 0x2079;\n  t.nineteencircle = 0x2472;\n  t.nineteenparen = 0x2486;\n  t.nineteenperiod = 0x249a;\n  t.ninethai = 0x0e59;\n  t.nj = 0x01cc;\n  t.njecyrillic = 0x045a;\n  t.nkatakana = 0x30f3;\n  t.nkatakanahalfwidth = 0xff9d;\n  t.nlegrightlong = 0x019e;\n  t.nlinebelow = 0x1e49;\n  t.nmonospace = 0xff4e;\n  t.nmsquare = 0x339a;\n  t.nnabengali = 0x09a3;\n  t.nnadeva = 0x0923;\n  t.nnagujarati = 0x0aa3;\n  t.nnagurmukhi = 0x0a23;\n  t.nnnadeva = 0x0929;\n  t.nohiragana = 0x306e;\n  t.nokatakana = 0x30ce;\n  t.nokatakanahalfwidth = 0xff89;\n  t.nonbreakingspace = 0x00a0;\n  t.nonenthai = 0x0e13;\n  t.nonuthai = 0x0e19;\n  t.noonarabic = 0x0646;\n  t.noonfinalarabic = 0xfee6;\n  t.noonghunnaarabic = 0x06ba;\n  t.noonghunnafinalarabic = 0xfb9f;\n  t.nooninitialarabic = 0xfee7;\n  t.noonjeeminitialarabic = 0xfcd2;\n  t.noonjeemisolatedarabic = 0xfc4b;\n  t.noonmedialarabic = 0xfee8;\n  t.noonmeeminitialarabic = 0xfcd5;\n  t.noonmeemisolatedarabic = 0xfc4e;\n  t.noonnoonfinalarabic = 0xfc8d;\n  t.notcontains = 0x220c;\n  t.notelement = 0x2209;\n  t.notelementof = 0x2209;\n  t.notequal = 0x2260;\n  t.notgreater = 0x226f;\n  t.notgreaternorequal = 0x2271;\n  t.notgreaternorless = 0x2279;\n  t.notidentical = 0x2262;\n  t.notless = 0x226e;\n  t.notlessnorequal = 0x2270;\n  t.notparallel = 0x2226;\n  t.notprecedes = 0x2280;\n  t.notsubset = 0x2284;\n  t.notsucceeds = 0x2281;\n  t.notsuperset = 0x2285;\n  t.nowarmenian = 0x0576;\n  t.nparen = 0x24a9;\n  t.nssquare = 0x33b1;\n  t.nsuperior = 0x207f;\n  t.ntilde = 0x00f1;\n  t.nu = 0x03bd;\n  t.nuhiragana = 0x306c;\n  t.nukatakana = 0x30cc;\n  t.nukatakanahalfwidth = 0xff87;\n  t.nuktabengali = 0x09bc;\n  t.nuktadeva = 0x093c;\n  t.nuktagujarati = 0x0abc;\n  t.nuktagurmukhi = 0x0a3c;\n  t.numbersign = 0x0023;\n  t.numbersignmonospace = 0xff03;\n  t.numbersignsmall = 0xfe5f;\n  t.numeralsigngreek = 0x0374;\n  t.numeralsignlowergreek = 0x0375;\n  t.numero = 0x2116;\n  t.nun = 0x05e0;\n  t.nundagesh = 0xfb40;\n  t.nundageshhebrew = 0xfb40;\n  t.nunhebrew = 0x05e0;\n  t.nvsquare = 0x33b5;\n  t.nwsquare = 0x33bb;\n  t.nyabengali = 0x099e;\n  t.nyadeva = 0x091e;\n  t.nyagujarati = 0x0a9e;\n  t.nyagurmukhi = 0x0a1e;\n  t.o = 0x006f;\n  t.oacute = 0x00f3;\n  t.oangthai = 0x0e2d;\n  t.obarred = 0x0275;\n  t.obarredcyrillic = 0x04e9;\n  t.obarreddieresiscyrillic = 0x04eb;\n  t.obengali = 0x0993;\n  t.obopomofo = 0x311b;\n  t.obreve = 0x014f;\n  t.ocandradeva = 0x0911;\n  t.ocandragujarati = 0x0a91;\n  t.ocandravowelsigndeva = 0x0949;\n  t.ocandravowelsigngujarati = 0x0ac9;\n  t.ocaron = 0x01d2;\n  t.ocircle = 0x24de;\n  t.ocircumflex = 0x00f4;\n  t.ocircumflexacute = 0x1ed1;\n  t.ocircumflexdotbelow = 0x1ed9;\n  t.ocircumflexgrave = 0x1ed3;\n  t.ocircumflexhookabove = 0x1ed5;\n  t.ocircumflextilde = 0x1ed7;\n  t.ocyrillic = 0x043e;\n  t.odblacute = 0x0151;\n  t.odblgrave = 0x020d;\n  t.odeva = 0x0913;\n  t.odieresis = 0x00f6;\n  t.odieresiscyrillic = 0x04e7;\n  t.odotbelow = 0x1ecd;\n  t.oe = 0x0153;\n  t.oekorean = 0x315a;\n  t.ogonek = 0x02db;\n  t.ogonekcmb = 0x0328;\n  t.ograve = 0x00f2;\n  t.ogujarati = 0x0a93;\n  t.oharmenian = 0x0585;\n  t.ohiragana = 0x304a;\n  t.ohookabove = 0x1ecf;\n  t.ohorn = 0x01a1;\n  t.ohornacute = 0x1edb;\n  t.ohorndotbelow = 0x1ee3;\n  t.ohorngrave = 0x1edd;\n  t.ohornhookabove = 0x1edf;\n  t.ohorntilde = 0x1ee1;\n  t.ohungarumlaut = 0x0151;\n  t.oi = 0x01a3;\n  t.oinvertedbreve = 0x020f;\n  t.okatakana = 0x30aa;\n  t.okatakanahalfwidth = 0xff75;\n  t.okorean = 0x3157;\n  t.olehebrew = 0x05ab;\n  t.omacron = 0x014d;\n  t.omacronacute = 0x1e53;\n  t.omacrongrave = 0x1e51;\n  t.omdeva = 0x0950;\n  t.omega = 0x03c9;\n  t.omega1 = 0x03d6;\n  t.omegacyrillic = 0x0461;\n  t.omegalatinclosed = 0x0277;\n  t.omegaroundcyrillic = 0x047b;\n  t.omegatitlocyrillic = 0x047d;\n  t.omegatonos = 0x03ce;\n  t.omgujarati = 0x0ad0;\n  t.omicron = 0x03bf;\n  t.omicrontonos = 0x03cc;\n  t.omonospace = 0xff4f;\n  t.one = 0x0031;\n  t.onearabic = 0x0661;\n  t.onebengali = 0x09e7;\n  t.onecircle = 0x2460;\n  t.onecircleinversesansserif = 0x278a;\n  t.onedeva = 0x0967;\n  t.onedotenleader = 0x2024;\n  t.oneeighth = 0x215b;\n  t.onefitted = 0xf6dc;\n  t.onegujarati = 0x0ae7;\n  t.onegurmukhi = 0x0a67;\n  t.onehackarabic = 0x0661;\n  t.onehalf = 0x00bd;\n  t.onehangzhou = 0x3021;\n  t.oneideographicparen = 0x3220;\n  t.oneinferior = 0x2081;\n  t.onemonospace = 0xff11;\n  t.onenumeratorbengali = 0x09f4;\n  t.oneoldstyle = 0xf731;\n  t.oneparen = 0x2474;\n  t.oneperiod = 0x2488;\n  t.onepersian = 0x06f1;\n  t.onequarter = 0x00bc;\n  t.oneroman = 0x2170;\n  t.onesuperior = 0x00b9;\n  t.onethai = 0x0e51;\n  t.onethird = 0x2153;\n  t.oogonek = 0x01eb;\n  t.oogonekmacron = 0x01ed;\n  t.oogurmukhi = 0x0a13;\n  t.oomatragurmukhi = 0x0a4b;\n  t.oopen = 0x0254;\n  t.oparen = 0x24aa;\n  t.openbullet = 0x25e6;\n  t.option = 0x2325;\n  t.ordfeminine = 0x00aa;\n  t.ordmasculine = 0x00ba;\n  t.orthogonal = 0x221f;\n  t.oshortdeva = 0x0912;\n  t.oshortvowelsigndeva = 0x094a;\n  t.oslash = 0x00f8;\n  t.oslashacute = 0x01ff;\n  t.osmallhiragana = 0x3049;\n  t.osmallkatakana = 0x30a9;\n  t.osmallkatakanahalfwidth = 0xff6b;\n  t.ostrokeacute = 0x01ff;\n  t.osuperior = 0xf6f0;\n  t.otcyrillic = 0x047f;\n  t.otilde = 0x00f5;\n  t.otildeacute = 0x1e4d;\n  t.otildedieresis = 0x1e4f;\n  t.oubopomofo = 0x3121;\n  t.overline = 0x203e;\n  t.overlinecenterline = 0xfe4a;\n  t.overlinecmb = 0x0305;\n  t.overlinedashed = 0xfe49;\n  t.overlinedblwavy = 0xfe4c;\n  t.overlinewavy = 0xfe4b;\n  t.overscore = 0x00af;\n  t.ovowelsignbengali = 0x09cb;\n  t.ovowelsigndeva = 0x094b;\n  t.ovowelsigngujarati = 0x0acb;\n  t.p = 0x0070;\n  t.paampssquare = 0x3380;\n  t.paasentosquare = 0x332b;\n  t.pabengali = 0x09aa;\n  t.pacute = 0x1e55;\n  t.padeva = 0x092a;\n  t.pagedown = 0x21df;\n  t.pageup = 0x21de;\n  t.pagujarati = 0x0aaa;\n  t.pagurmukhi = 0x0a2a;\n  t.pahiragana = 0x3071;\n  t.paiyannoithai = 0x0e2f;\n  t.pakatakana = 0x30d1;\n  t.palatalizationcyrilliccmb = 0x0484;\n  t.palochkacyrillic = 0x04c0;\n  t.pansioskorean = 0x317f;\n  t.paragraph = 0x00b6;\n  t.parallel = 0x2225;\n  t.parenleft = 0x0028;\n  t.parenleftaltonearabic = 0xfd3e;\n  t.parenleftbt = 0xf8ed;\n  t.parenleftex = 0xf8ec;\n  t.parenleftinferior = 0x208d;\n  t.parenleftmonospace = 0xff08;\n  t.parenleftsmall = 0xfe59;\n  t.parenleftsuperior = 0x207d;\n  t.parenlefttp = 0xf8eb;\n  t.parenleftvertical = 0xfe35;\n  t.parenright = 0x0029;\n  t.parenrightaltonearabic = 0xfd3f;\n  t.parenrightbt = 0xf8f8;\n  t.parenrightex = 0xf8f7;\n  t.parenrightinferior = 0x208e;\n  t.parenrightmonospace = 0xff09;\n  t.parenrightsmall = 0xfe5a;\n  t.parenrightsuperior = 0x207e;\n  t.parenrighttp = 0xf8f6;\n  t.parenrightvertical = 0xfe36;\n  t.partialdiff = 0x2202;\n  t.paseqhebrew = 0x05c0;\n  t.pashtahebrew = 0x0599;\n  t.pasquare = 0x33a9;\n  t.patah = 0x05b7;\n  t.patah11 = 0x05b7;\n  t.patah1d = 0x05b7;\n  t.patah2a = 0x05b7;\n  t.patahhebrew = 0x05b7;\n  t.patahnarrowhebrew = 0x05b7;\n  t.patahquarterhebrew = 0x05b7;\n  t.patahwidehebrew = 0x05b7;\n  t.pazerhebrew = 0x05a1;\n  t.pbopomofo = 0x3106;\n  t.pcircle = 0x24df;\n  t.pdotaccent = 0x1e57;\n  t.pe = 0x05e4;\n  t.pecyrillic = 0x043f;\n  t.pedagesh = 0xfb44;\n  t.pedageshhebrew = 0xfb44;\n  t.peezisquare = 0x333b;\n  t.pefinaldageshhebrew = 0xfb43;\n  t.peharabic = 0x067e;\n  t.peharmenian = 0x057a;\n  t.pehebrew = 0x05e4;\n  t.pehfinalarabic = 0xfb57;\n  t.pehinitialarabic = 0xfb58;\n  t.pehiragana = 0x307a;\n  t.pehmedialarabic = 0xfb59;\n  t.pekatakana = 0x30da;\n  t.pemiddlehookcyrillic = 0x04a7;\n  t.perafehebrew = 0xfb4e;\n  t.percent = 0x0025;\n  t.percentarabic = 0x066a;\n  t.percentmonospace = 0xff05;\n  t.percentsmall = 0xfe6a;\n  t.period = 0x002e;\n  t.periodarmenian = 0x0589;\n  t.periodcentered = 0x00b7;\n  t.periodhalfwidth = 0xff61;\n  t.periodinferior = 0xf6e7;\n  t.periodmonospace = 0xff0e;\n  t.periodsmall = 0xfe52;\n  t.periodsuperior = 0xf6e8;\n  t.perispomenigreekcmb = 0x0342;\n  t.perpendicular = 0x22a5;\n  t.perthousand = 0x2030;\n  t.peseta = 0x20a7;\n  t.pfsquare = 0x338a;\n  t.phabengali = 0x09ab;\n  t.phadeva = 0x092b;\n  t.phagujarati = 0x0aab;\n  t.phagurmukhi = 0x0a2b;\n  t.phi = 0x03c6;\n  t.phi1 = 0x03d5;\n  t.phieuphacirclekorean = 0x327a;\n  t.phieuphaparenkorean = 0x321a;\n  t.phieuphcirclekorean = 0x326c;\n  t.phieuphkorean = 0x314d;\n  t.phieuphparenkorean = 0x320c;\n  t.philatin = 0x0278;\n  t.phinthuthai = 0x0e3a;\n  t.phisymbolgreek = 0x03d5;\n  t.phook = 0x01a5;\n  t.phophanthai = 0x0e1e;\n  t.phophungthai = 0x0e1c;\n  t.phosamphaothai = 0x0e20;\n  t.pi = 0x03c0;\n  t.pieupacirclekorean = 0x3273;\n  t.pieupaparenkorean = 0x3213;\n  t.pieupcieuckorean = 0x3176;\n  t.pieupcirclekorean = 0x3265;\n  t.pieupkiyeokkorean = 0x3172;\n  t.pieupkorean = 0x3142;\n  t.pieupparenkorean = 0x3205;\n  t.pieupsioskiyeokkorean = 0x3174;\n  t.pieupsioskorean = 0x3144;\n  t.pieupsiostikeutkorean = 0x3175;\n  t.pieupthieuthkorean = 0x3177;\n  t.pieuptikeutkorean = 0x3173;\n  t.pihiragana = 0x3074;\n  t.pikatakana = 0x30d4;\n  t.pisymbolgreek = 0x03d6;\n  t.piwrarmenian = 0x0583;\n  t.plus = 0x002b;\n  t.plusbelowcmb = 0x031f;\n  t.pluscircle = 0x2295;\n  t.plusminus = 0x00b1;\n  t.plusmod = 0x02d6;\n  t.plusmonospace = 0xff0b;\n  t.plussmall = 0xfe62;\n  t.plussuperior = 0x207a;\n  t.pmonospace = 0xff50;\n  t.pmsquare = 0x33d8;\n  t.pohiragana = 0x307d;\n  t.pointingindexdownwhite = 0x261f;\n  t.pointingindexleftwhite = 0x261c;\n  t.pointingindexrightwhite = 0x261e;\n  t.pointingindexupwhite = 0x261d;\n  t.pokatakana = 0x30dd;\n  t.poplathai = 0x0e1b;\n  t.postalmark = 0x3012;\n  t.postalmarkface = 0x3020;\n  t.pparen = 0x24ab;\n  t.precedes = 0x227a;\n  t.prescription = 0x211e;\n  t.primemod = 0x02b9;\n  t.primereversed = 0x2035;\n  t.product = 0x220f;\n  t.projective = 0x2305;\n  t.prolongedkana = 0x30fc;\n  t.propellor = 0x2318;\n  t.propersubset = 0x2282;\n  t.propersuperset = 0x2283;\n  t.proportion = 0x2237;\n  t.proportional = 0x221d;\n  t.psi = 0x03c8;\n  t.psicyrillic = 0x0471;\n  t.psilipneumatacyrilliccmb = 0x0486;\n  t.pssquare = 0x33b0;\n  t.puhiragana = 0x3077;\n  t.pukatakana = 0x30d7;\n  t.pvsquare = 0x33b4;\n  t.pwsquare = 0x33ba;\n  t.q = 0x0071;\n  t.qadeva = 0x0958;\n  t.qadmahebrew = 0x05a8;\n  t.qafarabic = 0x0642;\n  t.qaffinalarabic = 0xfed6;\n  t.qafinitialarabic = 0xfed7;\n  t.qafmedialarabic = 0xfed8;\n  t.qamats = 0x05b8;\n  t.qamats10 = 0x05b8;\n  t.qamats1a = 0x05b8;\n  t.qamats1c = 0x05b8;\n  t.qamats27 = 0x05b8;\n  t.qamats29 = 0x05b8;\n  t.qamats33 = 0x05b8;\n  t.qamatsde = 0x05b8;\n  t.qamatshebrew = 0x05b8;\n  t.qamatsnarrowhebrew = 0x05b8;\n  t.qamatsqatanhebrew = 0x05b8;\n  t.qamatsqatannarrowhebrew = 0x05b8;\n  t.qamatsqatanquarterhebrew = 0x05b8;\n  t.qamatsqatanwidehebrew = 0x05b8;\n  t.qamatsquarterhebrew = 0x05b8;\n  t.qamatswidehebrew = 0x05b8;\n  t.qarneyparahebrew = 0x059f;\n  t.qbopomofo = 0x3111;\n  t.qcircle = 0x24e0;\n  t.qhook = 0x02a0;\n  t.qmonospace = 0xff51;\n  t.qof = 0x05e7;\n  t.qofdagesh = 0xfb47;\n  t.qofdageshhebrew = 0xfb47;\n  t.qofhebrew = 0x05e7;\n  t.qparen = 0x24ac;\n  t.quarternote = 0x2669;\n  t.qubuts = 0x05bb;\n  t.qubuts18 = 0x05bb;\n  t.qubuts25 = 0x05bb;\n  t.qubuts31 = 0x05bb;\n  t.qubutshebrew = 0x05bb;\n  t.qubutsnarrowhebrew = 0x05bb;\n  t.qubutsquarterhebrew = 0x05bb;\n  t.qubutswidehebrew = 0x05bb;\n  t.question = 0x003f;\n  t.questionarabic = 0x061f;\n  t.questionarmenian = 0x055e;\n  t.questiondown = 0x00bf;\n  t.questiondownsmall = 0xf7bf;\n  t.questiongreek = 0x037e;\n  t.questionmonospace = 0xff1f;\n  t.questionsmall = 0xf73f;\n  t.quotedbl = 0x0022;\n  t.quotedblbase = 0x201e;\n  t.quotedblleft = 0x201c;\n  t.quotedblmonospace = 0xff02;\n  t.quotedblprime = 0x301e;\n  t.quotedblprimereversed = 0x301d;\n  t.quotedblright = 0x201d;\n  t.quoteleft = 0x2018;\n  t.quoteleftreversed = 0x201b;\n  t.quotereversed = 0x201b;\n  t.quoteright = 0x2019;\n  t.quoterightn = 0x0149;\n  t.quotesinglbase = 0x201a;\n  t.quotesingle = 0x0027;\n  t.quotesinglemonospace = 0xff07;\n  t.r = 0x0072;\n  t.raarmenian = 0x057c;\n  t.rabengali = 0x09b0;\n  t.racute = 0x0155;\n  t.radeva = 0x0930;\n  t.radical = 0x221a;\n  t.radicalex = 0xf8e5;\n  t.radoverssquare = 0x33ae;\n  t.radoverssquaredsquare = 0x33af;\n  t.radsquare = 0x33ad;\n  t.rafe = 0x05bf;\n  t.rafehebrew = 0x05bf;\n  t.ragujarati = 0x0ab0;\n  t.ragurmukhi = 0x0a30;\n  t.rahiragana = 0x3089;\n  t.rakatakana = 0x30e9;\n  t.rakatakanahalfwidth = 0xff97;\n  t.ralowerdiagonalbengali = 0x09f1;\n  t.ramiddlediagonalbengali = 0x09f0;\n  t.ramshorn = 0x0264;\n  t.ratio = 0x2236;\n  t.rbopomofo = 0x3116;\n  t.rcaron = 0x0159;\n  t.rcedilla = 0x0157;\n  t.rcircle = 0x24e1;\n  t.rcommaaccent = 0x0157;\n  t.rdblgrave = 0x0211;\n  t.rdotaccent = 0x1e59;\n  t.rdotbelow = 0x1e5b;\n  t.rdotbelowmacron = 0x1e5d;\n  t.referencemark = 0x203b;\n  t.reflexsubset = 0x2286;\n  t.reflexsuperset = 0x2287;\n  t.registered = 0x00ae;\n  t.registersans = 0xf8e8;\n  t.registerserif = 0xf6da;\n  t.reharabic = 0x0631;\n  t.reharmenian = 0x0580;\n  t.rehfinalarabic = 0xfeae;\n  t.rehiragana = 0x308c;\n  t.rekatakana = 0x30ec;\n  t.rekatakanahalfwidth = 0xff9a;\n  t.resh = 0x05e8;\n  t.reshdageshhebrew = 0xfb48;\n  t.reshhebrew = 0x05e8;\n  t.reversedtilde = 0x223d;\n  t.reviahebrew = 0x0597;\n  t.reviamugrashhebrew = 0x0597;\n  t.revlogicalnot = 0x2310;\n  t.rfishhook = 0x027e;\n  t.rfishhookreversed = 0x027f;\n  t.rhabengali = 0x09dd;\n  t.rhadeva = 0x095d;\n  t.rho = 0x03c1;\n  t.rhook = 0x027d;\n  t.rhookturned = 0x027b;\n  t.rhookturnedsuperior = 0x02b5;\n  t.rhosymbolgreek = 0x03f1;\n  t.rhotichookmod = 0x02de;\n  t.rieulacirclekorean = 0x3271;\n  t.rieulaparenkorean = 0x3211;\n  t.rieulcirclekorean = 0x3263;\n  t.rieulhieuhkorean = 0x3140;\n  t.rieulkiyeokkorean = 0x313a;\n  t.rieulkiyeoksioskorean = 0x3169;\n  t.rieulkorean = 0x3139;\n  t.rieulmieumkorean = 0x313b;\n  t.rieulpansioskorean = 0x316c;\n  t.rieulparenkorean = 0x3203;\n  t.rieulphieuphkorean = 0x313f;\n  t.rieulpieupkorean = 0x313c;\n  t.rieulpieupsioskorean = 0x316b;\n  t.rieulsioskorean = 0x313d;\n  t.rieulthieuthkorean = 0x313e;\n  t.rieultikeutkorean = 0x316a;\n  t.rieulyeorinhieuhkorean = 0x316d;\n  t.rightangle = 0x221f;\n  t.righttackbelowcmb = 0x0319;\n  t.righttriangle = 0x22bf;\n  t.rihiragana = 0x308a;\n  t.rikatakana = 0x30ea;\n  t.rikatakanahalfwidth = 0xff98;\n  t.ring = 0x02da;\n  t.ringbelowcmb = 0x0325;\n  t.ringcmb = 0x030a;\n  t.ringhalfleft = 0x02bf;\n  t.ringhalfleftarmenian = 0x0559;\n  t.ringhalfleftbelowcmb = 0x031c;\n  t.ringhalfleftcentered = 0x02d3;\n  t.ringhalfright = 0x02be;\n  t.ringhalfrightbelowcmb = 0x0339;\n  t.ringhalfrightcentered = 0x02d2;\n  t.rinvertedbreve = 0x0213;\n  t.rittorusquare = 0x3351;\n  t.rlinebelow = 0x1e5f;\n  t.rlongleg = 0x027c;\n  t.rlonglegturned = 0x027a;\n  t.rmonospace = 0xff52;\n  t.rohiragana = 0x308d;\n  t.rokatakana = 0x30ed;\n  t.rokatakanahalfwidth = 0xff9b;\n  t.roruathai = 0x0e23;\n  t.rparen = 0x24ad;\n  t.rrabengali = 0x09dc;\n  t.rradeva = 0x0931;\n  t.rragurmukhi = 0x0a5c;\n  t.rreharabic = 0x0691;\n  t.rrehfinalarabic = 0xfb8d;\n  t.rrvocalicbengali = 0x09e0;\n  t.rrvocalicdeva = 0x0960;\n  t.rrvocalicgujarati = 0x0ae0;\n  t.rrvocalicvowelsignbengali = 0x09c4;\n  t.rrvocalicvowelsigndeva = 0x0944;\n  t.rrvocalicvowelsigngujarati = 0x0ac4;\n  t.rsuperior = 0xf6f1;\n  t.rtblock = 0x2590;\n  t.rturned = 0x0279;\n  t.rturnedsuperior = 0x02b4;\n  t.ruhiragana = 0x308b;\n  t.rukatakana = 0x30eb;\n  t.rukatakanahalfwidth = 0xff99;\n  t.rupeemarkbengali = 0x09f2;\n  t.rupeesignbengali = 0x09f3;\n  t.rupiah = 0xf6dd;\n  t.ruthai = 0x0e24;\n  t.rvocalicbengali = 0x098b;\n  t.rvocalicdeva = 0x090b;\n  t.rvocalicgujarati = 0x0a8b;\n  t.rvocalicvowelsignbengali = 0x09c3;\n  t.rvocalicvowelsigndeva = 0x0943;\n  t.rvocalicvowelsigngujarati = 0x0ac3;\n  t.s = 0x0073;\n  t.sabengali = 0x09b8;\n  t.sacute = 0x015b;\n  t.sacutedotaccent = 0x1e65;\n  t.sadarabic = 0x0635;\n  t.sadeva = 0x0938;\n  t.sadfinalarabic = 0xfeba;\n  t.sadinitialarabic = 0xfebb;\n  t.sadmedialarabic = 0xfebc;\n  t.sagujarati = 0x0ab8;\n  t.sagurmukhi = 0x0a38;\n  t.sahiragana = 0x3055;\n  t.sakatakana = 0x30b5;\n  t.sakatakanahalfwidth = 0xff7b;\n  t.sallallahoualayhewasallamarabic = 0xfdfa;\n  t.samekh = 0x05e1;\n  t.samekhdagesh = 0xfb41;\n  t.samekhdageshhebrew = 0xfb41;\n  t.samekhhebrew = 0x05e1;\n  t.saraaathai = 0x0e32;\n  t.saraaethai = 0x0e41;\n  t.saraaimaimalaithai = 0x0e44;\n  t.saraaimaimuanthai = 0x0e43;\n  t.saraamthai = 0x0e33;\n  t.saraathai = 0x0e30;\n  t.saraethai = 0x0e40;\n  t.saraiileftthai = 0xf886;\n  t.saraiithai = 0x0e35;\n  t.saraileftthai = 0xf885;\n  t.saraithai = 0x0e34;\n  t.saraothai = 0x0e42;\n  t.saraueeleftthai = 0xf888;\n  t.saraueethai = 0x0e37;\n  t.saraueleftthai = 0xf887;\n  t.sarauethai = 0x0e36;\n  t.sarauthai = 0x0e38;\n  t.sarauuthai = 0x0e39;\n  t.sbopomofo = 0x3119;\n  t.scaron = 0x0161;\n  t.scarondotaccent = 0x1e67;\n  t.scedilla = 0x015f;\n  t.schwa = 0x0259;\n  t.schwacyrillic = 0x04d9;\n  t.schwadieresiscyrillic = 0x04db;\n  t.schwahook = 0x025a;\n  t.scircle = 0x24e2;\n  t.scircumflex = 0x015d;\n  t.scommaaccent = 0x0219;\n  t.sdotaccent = 0x1e61;\n  t.sdotbelow = 0x1e63;\n  t.sdotbelowdotaccent = 0x1e69;\n  t.seagullbelowcmb = 0x033c;\n  t.second = 0x2033;\n  t.secondtonechinese = 0x02ca;\n  t.section = 0x00a7;\n  t.seenarabic = 0x0633;\n  t.seenfinalarabic = 0xfeb2;\n  t.seeninitialarabic = 0xfeb3;\n  t.seenmedialarabic = 0xfeb4;\n  t.segol = 0x05b6;\n  t.segol13 = 0x05b6;\n  t.segol1f = 0x05b6;\n  t.segol2c = 0x05b6;\n  t.segolhebrew = 0x05b6;\n  t.segolnarrowhebrew = 0x05b6;\n  t.segolquarterhebrew = 0x05b6;\n  t.segoltahebrew = 0x0592;\n  t.segolwidehebrew = 0x05b6;\n  t.seharmenian = 0x057d;\n  t.sehiragana = 0x305b;\n  t.sekatakana = 0x30bb;\n  t.sekatakanahalfwidth = 0xff7e;\n  t.semicolon = 0x003b;\n  t.semicolonarabic = 0x061b;\n  t.semicolonmonospace = 0xff1b;\n  t.semicolonsmall = 0xfe54;\n  t.semivoicedmarkkana = 0x309c;\n  t.semivoicedmarkkanahalfwidth = 0xff9f;\n  t.sentisquare = 0x3322;\n  t.sentosquare = 0x3323;\n  t.seven = 0x0037;\n  t.sevenarabic = 0x0667;\n  t.sevenbengali = 0x09ed;\n  t.sevencircle = 0x2466;\n  t.sevencircleinversesansserif = 0x2790;\n  t.sevendeva = 0x096d;\n  t.seveneighths = 0x215e;\n  t.sevengujarati = 0x0aed;\n  t.sevengurmukhi = 0x0a6d;\n  t.sevenhackarabic = 0x0667;\n  t.sevenhangzhou = 0x3027;\n  t.sevenideographicparen = 0x3226;\n  t.seveninferior = 0x2087;\n  t.sevenmonospace = 0xff17;\n  t.sevenoldstyle = 0xf737;\n  t.sevenparen = 0x247a;\n  t.sevenperiod = 0x248e;\n  t.sevenpersian = 0x06f7;\n  t.sevenroman = 0x2176;\n  t.sevensuperior = 0x2077;\n  t.seventeencircle = 0x2470;\n  t.seventeenparen = 0x2484;\n  t.seventeenperiod = 0x2498;\n  t.seventhai = 0x0e57;\n  t.sfthyphen = 0x00ad;\n  t.shaarmenian = 0x0577;\n  t.shabengali = 0x09b6;\n  t.shacyrillic = 0x0448;\n  t.shaddaarabic = 0x0651;\n  t.shaddadammaarabic = 0xfc61;\n  t.shaddadammatanarabic = 0xfc5e;\n  t.shaddafathaarabic = 0xfc60;\n  t.shaddakasraarabic = 0xfc62;\n  t.shaddakasratanarabic = 0xfc5f;\n  t.shade = 0x2592;\n  t.shadedark = 0x2593;\n  t.shadelight = 0x2591;\n  t.shademedium = 0x2592;\n  t.shadeva = 0x0936;\n  t.shagujarati = 0x0ab6;\n  t.shagurmukhi = 0x0a36;\n  t.shalshelethebrew = 0x0593;\n  t.shbopomofo = 0x3115;\n  t.shchacyrillic = 0x0449;\n  t.sheenarabic = 0x0634;\n  t.sheenfinalarabic = 0xfeb6;\n  t.sheeninitialarabic = 0xfeb7;\n  t.sheenmedialarabic = 0xfeb8;\n  t.sheicoptic = 0x03e3;\n  t.sheqel = 0x20aa;\n  t.sheqelhebrew = 0x20aa;\n  t.sheva = 0x05b0;\n  t.sheva115 = 0x05b0;\n  t.sheva15 = 0x05b0;\n  t.sheva22 = 0x05b0;\n  t.sheva2e = 0x05b0;\n  t.shevahebrew = 0x05b0;\n  t.shevanarrowhebrew = 0x05b0;\n  t.shevaquarterhebrew = 0x05b0;\n  t.shevawidehebrew = 0x05b0;\n  t.shhacyrillic = 0x04bb;\n  t.shimacoptic = 0x03ed;\n  t.shin = 0x05e9;\n  t.shindagesh = 0xfb49;\n  t.shindageshhebrew = 0xfb49;\n  t.shindageshshindot = 0xfb2c;\n  t.shindageshshindothebrew = 0xfb2c;\n  t.shindageshsindot = 0xfb2d;\n  t.shindageshsindothebrew = 0xfb2d;\n  t.shindothebrew = 0x05c1;\n  t.shinhebrew = 0x05e9;\n  t.shinshindot = 0xfb2a;\n  t.shinshindothebrew = 0xfb2a;\n  t.shinsindot = 0xfb2b;\n  t.shinsindothebrew = 0xfb2b;\n  t.shook = 0x0282;\n  t.sigma = 0x03c3;\n  t.sigma1 = 0x03c2;\n  t.sigmafinal = 0x03c2;\n  t.sigmalunatesymbolgreek = 0x03f2;\n  t.sihiragana = 0x3057;\n  t.sikatakana = 0x30b7;\n  t.sikatakanahalfwidth = 0xff7c;\n  t.siluqhebrew = 0x05bd;\n  t.siluqlefthebrew = 0x05bd;\n  t.similar = 0x223c;\n  t.sindothebrew = 0x05c2;\n  t.siosacirclekorean = 0x3274;\n  t.siosaparenkorean = 0x3214;\n  t.sioscieuckorean = 0x317e;\n  t.sioscirclekorean = 0x3266;\n  t.sioskiyeokkorean = 0x317a;\n  t.sioskorean = 0x3145;\n  t.siosnieunkorean = 0x317b;\n  t.siosparenkorean = 0x3206;\n  t.siospieupkorean = 0x317d;\n  t.siostikeutkorean = 0x317c;\n  t.six = 0x0036;\n  t.sixarabic = 0x0666;\n  t.sixbengali = 0x09ec;\n  t.sixcircle = 0x2465;\n  t.sixcircleinversesansserif = 0x278f;\n  t.sixdeva = 0x096c;\n  t.sixgujarati = 0x0aec;\n  t.sixgurmukhi = 0x0a6c;\n  t.sixhackarabic = 0x0666;\n  t.sixhangzhou = 0x3026;\n  t.sixideographicparen = 0x3225;\n  t.sixinferior = 0x2086;\n  t.sixmonospace = 0xff16;\n  t.sixoldstyle = 0xf736;\n  t.sixparen = 0x2479;\n  t.sixperiod = 0x248d;\n  t.sixpersian = 0x06f6;\n  t.sixroman = 0x2175;\n  t.sixsuperior = 0x2076;\n  t.sixteencircle = 0x246f;\n  t.sixteencurrencydenominatorbengali = 0x09f9;\n  t.sixteenparen = 0x2483;\n  t.sixteenperiod = 0x2497;\n  t.sixthai = 0x0e56;\n  t.slash = 0x002f;\n  t.slashmonospace = 0xff0f;\n  t.slong = 0x017f;\n  t.slongdotaccent = 0x1e9b;\n  t.smileface = 0x263a;\n  t.smonospace = 0xff53;\n  t.sofpasuqhebrew = 0x05c3;\n  t.softhyphen = 0x00ad;\n  t.softsigncyrillic = 0x044c;\n  t.sohiragana = 0x305d;\n  t.sokatakana = 0x30bd;\n  t.sokatakanahalfwidth = 0xff7f;\n  t.soliduslongoverlaycmb = 0x0338;\n  t.solidusshortoverlaycmb = 0x0337;\n  t.sorusithai = 0x0e29;\n  t.sosalathai = 0x0e28;\n  t.sosothai = 0x0e0b;\n  t.sosuathai = 0x0e2a;\n  t.space = 0x0020;\n  t.spacehackarabic = 0x0020;\n  t.spade = 0x2660;\n  t.spadesuitblack = 0x2660;\n  t.spadesuitwhite = 0x2664;\n  t.sparen = 0x24ae;\n  t.squarebelowcmb = 0x033b;\n  t.squarecc = 0x33c4;\n  t.squarecm = 0x339d;\n  t.squarediagonalcrosshatchfill = 0x25a9;\n  t.squarehorizontalfill = 0x25a4;\n  t.squarekg = 0x338f;\n  t.squarekm = 0x339e;\n  t.squarekmcapital = 0x33ce;\n  t.squareln = 0x33d1;\n  t.squarelog = 0x33d2;\n  t.squaremg = 0x338e;\n  t.squaremil = 0x33d5;\n  t.squaremm = 0x339c;\n  t.squaremsquared = 0x33a1;\n  t.squareorthogonalcrosshatchfill = 0x25a6;\n  t.squareupperlefttolowerrightfill = 0x25a7;\n  t.squareupperrighttolowerleftfill = 0x25a8;\n  t.squareverticalfill = 0x25a5;\n  t.squarewhitewithsmallblack = 0x25a3;\n  t.srsquare = 0x33db;\n  t.ssabengali = 0x09b7;\n  t.ssadeva = 0x0937;\n  t.ssagujarati = 0x0ab7;\n  t.ssangcieuckorean = 0x3149;\n  t.ssanghieuhkorean = 0x3185;\n  t.ssangieungkorean = 0x3180;\n  t.ssangkiyeokkorean = 0x3132;\n  t.ssangnieunkorean = 0x3165;\n  t.ssangpieupkorean = 0x3143;\n  t.ssangsioskorean = 0x3146;\n  t.ssangtikeutkorean = 0x3138;\n  t.ssuperior = 0xf6f2;\n  t.sterling = 0x00a3;\n  t.sterlingmonospace = 0xffe1;\n  t.strokelongoverlaycmb = 0x0336;\n  t.strokeshortoverlaycmb = 0x0335;\n  t.subset = 0x2282;\n  t.subsetnotequal = 0x228a;\n  t.subsetorequal = 0x2286;\n  t.succeeds = 0x227b;\n  t.suchthat = 0x220b;\n  t.suhiragana = 0x3059;\n  t.sukatakana = 0x30b9;\n  t.sukatakanahalfwidth = 0xff7d;\n  t.sukunarabic = 0x0652;\n  t.summation = 0x2211;\n  t.sun = 0x263c;\n  t.superset = 0x2283;\n  t.supersetnotequal = 0x228b;\n  t.supersetorequal = 0x2287;\n  t.svsquare = 0x33dc;\n  t.syouwaerasquare = 0x337c;\n  t.t = 0x0074;\n  t.tabengali = 0x09a4;\n  t.tackdown = 0x22a4;\n  t.tackleft = 0x22a3;\n  t.tadeva = 0x0924;\n  t.tagujarati = 0x0aa4;\n  t.tagurmukhi = 0x0a24;\n  t.taharabic = 0x0637;\n  t.tahfinalarabic = 0xfec2;\n  t.tahinitialarabic = 0xfec3;\n  t.tahiragana = 0x305f;\n  t.tahmedialarabic = 0xfec4;\n  t.taisyouerasquare = 0x337d;\n  t.takatakana = 0x30bf;\n  t.takatakanahalfwidth = 0xff80;\n  t.tatweelarabic = 0x0640;\n  t.tau = 0x03c4;\n  t.tav = 0x05ea;\n  t.tavdages = 0xfb4a;\n  t.tavdagesh = 0xfb4a;\n  t.tavdageshhebrew = 0xfb4a;\n  t.tavhebrew = 0x05ea;\n  t.tbar = 0x0167;\n  t.tbopomofo = 0x310a;\n  t.tcaron = 0x0165;\n  t.tccurl = 0x02a8;\n  t.tcedilla = 0x0163;\n  t.tcheharabic = 0x0686;\n  t.tchehfinalarabic = 0xfb7b;\n  t.tchehinitialarabic = 0xfb7c;\n  t.tchehmedialarabic = 0xfb7d;\n  t.tcircle = 0x24e3;\n  t.tcircumflexbelow = 0x1e71;\n  t.tcommaaccent = 0x0163;\n  t.tdieresis = 0x1e97;\n  t.tdotaccent = 0x1e6b;\n  t.tdotbelow = 0x1e6d;\n  t.tecyrillic = 0x0442;\n  t.tedescendercyrillic = 0x04ad;\n  t.teharabic = 0x062a;\n  t.tehfinalarabic = 0xfe96;\n  t.tehhahinitialarabic = 0xfca2;\n  t.tehhahisolatedarabic = 0xfc0c;\n  t.tehinitialarabic = 0xfe97;\n  t.tehiragana = 0x3066;\n  t.tehjeeminitialarabic = 0xfca1;\n  t.tehjeemisolatedarabic = 0xfc0b;\n  t.tehmarbutaarabic = 0x0629;\n  t.tehmarbutafinalarabic = 0xfe94;\n  t.tehmedialarabic = 0xfe98;\n  t.tehmeeminitialarabic = 0xfca4;\n  t.tehmeemisolatedarabic = 0xfc0e;\n  t.tehnoonfinalarabic = 0xfc73;\n  t.tekatakana = 0x30c6;\n  t.tekatakanahalfwidth = 0xff83;\n  t.telephone = 0x2121;\n  t.telephoneblack = 0x260e;\n  t.telishagedolahebrew = 0x05a0;\n  t.telishaqetanahebrew = 0x05a9;\n  t.tencircle = 0x2469;\n  t.tenideographicparen = 0x3229;\n  t.tenparen = 0x247d;\n  t.tenperiod = 0x2491;\n  t.tenroman = 0x2179;\n  t.tesh = 0x02a7;\n  t.tet = 0x05d8;\n  t.tetdagesh = 0xfb38;\n  t.tetdageshhebrew = 0xfb38;\n  t.tethebrew = 0x05d8;\n  t.tetsecyrillic = 0x04b5;\n  t.tevirhebrew = 0x059b;\n  t.tevirlefthebrew = 0x059b;\n  t.thabengali = 0x09a5;\n  t.thadeva = 0x0925;\n  t.thagujarati = 0x0aa5;\n  t.thagurmukhi = 0x0a25;\n  t.thalarabic = 0x0630;\n  t.thalfinalarabic = 0xfeac;\n  t.thanthakhatlowleftthai = 0xf898;\n  t.thanthakhatlowrightthai = 0xf897;\n  t.thanthakhatthai = 0x0e4c;\n  t.thanthakhatupperleftthai = 0xf896;\n  t.theharabic = 0x062b;\n  t.thehfinalarabic = 0xfe9a;\n  t.thehinitialarabic = 0xfe9b;\n  t.thehmedialarabic = 0xfe9c;\n  t.thereexists = 0x2203;\n  t.therefore = 0x2234;\n  t.theta = 0x03b8;\n  t.theta1 = 0x03d1;\n  t.thetasymbolgreek = 0x03d1;\n  t.thieuthacirclekorean = 0x3279;\n  t.thieuthaparenkorean = 0x3219;\n  t.thieuthcirclekorean = 0x326b;\n  t.thieuthkorean = 0x314c;\n  t.thieuthparenkorean = 0x320b;\n  t.thirteencircle = 0x246c;\n  t.thirteenparen = 0x2480;\n  t.thirteenperiod = 0x2494;\n  t.thonangmonthothai = 0x0e11;\n  t.thook = 0x01ad;\n  t.thophuthaothai = 0x0e12;\n  t.thorn = 0x00fe;\n  t.thothahanthai = 0x0e17;\n  t.thothanthai = 0x0e10;\n  t.thothongthai = 0x0e18;\n  t.thothungthai = 0x0e16;\n  t.thousandcyrillic = 0x0482;\n  t.thousandsseparatorarabic = 0x066c;\n  t.thousandsseparatorpersian = 0x066c;\n  t.three = 0x0033;\n  t.threearabic = 0x0663;\n  t.threebengali = 0x09e9;\n  t.threecircle = 0x2462;\n  t.threecircleinversesansserif = 0x278c;\n  t.threedeva = 0x0969;\n  t.threeeighths = 0x215c;\n  t.threegujarati = 0x0ae9;\n  t.threegurmukhi = 0x0a69;\n  t.threehackarabic = 0x0663;\n  t.threehangzhou = 0x3023;\n  t.threeideographicparen = 0x3222;\n  t.threeinferior = 0x2083;\n  t.threemonospace = 0xff13;\n  t.threenumeratorbengali = 0x09f6;\n  t.threeoldstyle = 0xf733;\n  t.threeparen = 0x2476;\n  t.threeperiod = 0x248a;\n  t.threepersian = 0x06f3;\n  t.threequarters = 0x00be;\n  t.threequartersemdash = 0xf6de;\n  t.threeroman = 0x2172;\n  t.threesuperior = 0x00b3;\n  t.threethai = 0x0e53;\n  t.thzsquare = 0x3394;\n  t.tihiragana = 0x3061;\n  t.tikatakana = 0x30c1;\n  t.tikatakanahalfwidth = 0xff81;\n  t.tikeutacirclekorean = 0x3270;\n  t.tikeutaparenkorean = 0x3210;\n  t.tikeutcirclekorean = 0x3262;\n  t.tikeutkorean = 0x3137;\n  t.tikeutparenkorean = 0x3202;\n  t.tilde = 0x02dc;\n  t.tildebelowcmb = 0x0330;\n  t.tildecmb = 0x0303;\n  t.tildecomb = 0x0303;\n  t.tildedoublecmb = 0x0360;\n  t.tildeoperator = 0x223c;\n  t.tildeoverlaycmb = 0x0334;\n  t.tildeverticalcmb = 0x033e;\n  t.timescircle = 0x2297;\n  t.tipehahebrew = 0x0596;\n  t.tipehalefthebrew = 0x0596;\n  t.tippigurmukhi = 0x0a70;\n  t.titlocyrilliccmb = 0x0483;\n  t.tiwnarmenian = 0x057f;\n  t.tlinebelow = 0x1e6f;\n  t.tmonospace = 0xff54;\n  t.toarmenian = 0x0569;\n  t.tohiragana = 0x3068;\n  t.tokatakana = 0x30c8;\n  t.tokatakanahalfwidth = 0xff84;\n  t.tonebarextrahighmod = 0x02e5;\n  t.tonebarextralowmod = 0x02e9;\n  t.tonebarhighmod = 0x02e6;\n  t.tonebarlowmod = 0x02e8;\n  t.tonebarmidmod = 0x02e7;\n  t.tonefive = 0x01bd;\n  t.tonesix = 0x0185;\n  t.tonetwo = 0x01a8;\n  t.tonos = 0x0384;\n  t.tonsquare = 0x3327;\n  t.topatakthai = 0x0e0f;\n  t.tortoiseshellbracketleft = 0x3014;\n  t.tortoiseshellbracketleftsmall = 0xfe5d;\n  t.tortoiseshellbracketleftvertical = 0xfe39;\n  t.tortoiseshellbracketright = 0x3015;\n  t.tortoiseshellbracketrightsmall = 0xfe5e;\n  t.tortoiseshellbracketrightvertical = 0xfe3a;\n  t.totaothai = 0x0e15;\n  t.tpalatalhook = 0x01ab;\n  t.tparen = 0x24af;\n  t.trademark = 0x2122;\n  t.trademarksans = 0xf8ea;\n  t.trademarkserif = 0xf6db;\n  t.tretroflexhook = 0x0288;\n  t.triagdn = 0x25bc;\n  t.triaglf = 0x25c4;\n  t.triagrt = 0x25ba;\n  t.triagup = 0x25b2;\n  t.ts = 0x02a6;\n  t.tsadi = 0x05e6;\n  t.tsadidagesh = 0xfb46;\n  t.tsadidageshhebrew = 0xfb46;\n  t.tsadihebrew = 0x05e6;\n  t.tsecyrillic = 0x0446;\n  t.tsere = 0x05b5;\n  t.tsere12 = 0x05b5;\n  t.tsere1e = 0x05b5;\n  t.tsere2b = 0x05b5;\n  t.tserehebrew = 0x05b5;\n  t.tserenarrowhebrew = 0x05b5;\n  t.tserequarterhebrew = 0x05b5;\n  t.tserewidehebrew = 0x05b5;\n  t.tshecyrillic = 0x045b;\n  t.tsuperior = 0xf6f3;\n  t.ttabengali = 0x099f;\n  t.ttadeva = 0x091f;\n  t.ttagujarati = 0x0a9f;\n  t.ttagurmukhi = 0x0a1f;\n  t.tteharabic = 0x0679;\n  t.ttehfinalarabic = 0xfb67;\n  t.ttehinitialarabic = 0xfb68;\n  t.ttehmedialarabic = 0xfb69;\n  t.tthabengali = 0x09a0;\n  t.tthadeva = 0x0920;\n  t.tthagujarati = 0x0aa0;\n  t.tthagurmukhi = 0x0a20;\n  t.tturned = 0x0287;\n  t.tuhiragana = 0x3064;\n  t.tukatakana = 0x30c4;\n  t.tukatakanahalfwidth = 0xff82;\n  t.tusmallhiragana = 0x3063;\n  t.tusmallkatakana = 0x30c3;\n  t.tusmallkatakanahalfwidth = 0xff6f;\n  t.twelvecircle = 0x246b;\n  t.twelveparen = 0x247f;\n  t.twelveperiod = 0x2493;\n  t.twelveroman = 0x217b;\n  t.twentycircle = 0x2473;\n  t.twentyhangzhou = 0x5344;\n  t.twentyparen = 0x2487;\n  t.twentyperiod = 0x249b;\n  t.two = 0x0032;\n  t.twoarabic = 0x0662;\n  t.twobengali = 0x09e8;\n  t.twocircle = 0x2461;\n  t.twocircleinversesansserif = 0x278b;\n  t.twodeva = 0x0968;\n  t.twodotenleader = 0x2025;\n  t.twodotleader = 0x2025;\n  t.twodotleadervertical = 0xfe30;\n  t.twogujarati = 0x0ae8;\n  t.twogurmukhi = 0x0a68;\n  t.twohackarabic = 0x0662;\n  t.twohangzhou = 0x3022;\n  t.twoideographicparen = 0x3221;\n  t.twoinferior = 0x2082;\n  t.twomonospace = 0xff12;\n  t.twonumeratorbengali = 0x09f5;\n  t.twooldstyle = 0xf732;\n  t.twoparen = 0x2475;\n  t.twoperiod = 0x2489;\n  t.twopersian = 0x06f2;\n  t.tworoman = 0x2171;\n  t.twostroke = 0x01bb;\n  t.twosuperior = 0x00b2;\n  t.twothai = 0x0e52;\n  t.twothirds = 0x2154;\n  t.u = 0x0075;\n  t.uacute = 0x00fa;\n  t.ubar = 0x0289;\n  t.ubengali = 0x0989;\n  t.ubopomofo = 0x3128;\n  t.ubreve = 0x016d;\n  t.ucaron = 0x01d4;\n  t.ucircle = 0x24e4;\n  t.ucircumflex = 0x00fb;\n  t.ucircumflexbelow = 0x1e77;\n  t.ucyrillic = 0x0443;\n  t.udattadeva = 0x0951;\n  t.udblacute = 0x0171;\n  t.udblgrave = 0x0215;\n  t.udeva = 0x0909;\n  t.udieresis = 0x00fc;\n  t.udieresisacute = 0x01d8;\n  t.udieresisbelow = 0x1e73;\n  t.udieresiscaron = 0x01da;\n  t.udieresiscyrillic = 0x04f1;\n  t.udieresisgrave = 0x01dc;\n  t.udieresismacron = 0x01d6;\n  t.udotbelow = 0x1ee5;\n  t.ugrave = 0x00f9;\n  t.ugujarati = 0x0a89;\n  t.ugurmukhi = 0x0a09;\n  t.uhiragana = 0x3046;\n  t.uhookabove = 0x1ee7;\n  t.uhorn = 0x01b0;\n  t.uhornacute = 0x1ee9;\n  t.uhorndotbelow = 0x1ef1;\n  t.uhorngrave = 0x1eeb;\n  t.uhornhookabove = 0x1eed;\n  t.uhorntilde = 0x1eef;\n  t.uhungarumlaut = 0x0171;\n  t.uhungarumlautcyrillic = 0x04f3;\n  t.uinvertedbreve = 0x0217;\n  t.ukatakana = 0x30a6;\n  t.ukatakanahalfwidth = 0xff73;\n  t.ukcyrillic = 0x0479;\n  t.ukorean = 0x315c;\n  t.umacron = 0x016b;\n  t.umacroncyrillic = 0x04ef;\n  t.umacrondieresis = 0x1e7b;\n  t.umatragurmukhi = 0x0a41;\n  t.umonospace = 0xff55;\n  t.underscore = 0x005f;\n  t.underscoredbl = 0x2017;\n  t.underscoremonospace = 0xff3f;\n  t.underscorevertical = 0xfe33;\n  t.underscorewavy = 0xfe4f;\n  t.union = 0x222a;\n  t.universal = 0x2200;\n  t.uogonek = 0x0173;\n  t.uparen = 0x24b0;\n  t.upblock = 0x2580;\n  t.upperdothebrew = 0x05c4;\n  t.upsilon = 0x03c5;\n  t.upsilondieresis = 0x03cb;\n  t.upsilondieresistonos = 0x03b0;\n  t.upsilonlatin = 0x028a;\n  t.upsilontonos = 0x03cd;\n  t.uptackbelowcmb = 0x031d;\n  t.uptackmod = 0x02d4;\n  t.uragurmukhi = 0x0a73;\n  t.uring = 0x016f;\n  t.ushortcyrillic = 0x045e;\n  t.usmallhiragana = 0x3045;\n  t.usmallkatakana = 0x30a5;\n  t.usmallkatakanahalfwidth = 0xff69;\n  t.ustraightcyrillic = 0x04af;\n  t.ustraightstrokecyrillic = 0x04b1;\n  t.utilde = 0x0169;\n  t.utildeacute = 0x1e79;\n  t.utildebelow = 0x1e75;\n  t.uubengali = 0x098a;\n  t.uudeva = 0x090a;\n  t.uugujarati = 0x0a8a;\n  t.uugurmukhi = 0x0a0a;\n  t.uumatragurmukhi = 0x0a42;\n  t.uuvowelsignbengali = 0x09c2;\n  t.uuvowelsigndeva = 0x0942;\n  t.uuvowelsigngujarati = 0x0ac2;\n  t.uvowelsignbengali = 0x09c1;\n  t.uvowelsigndeva = 0x0941;\n  t.uvowelsigngujarati = 0x0ac1;\n  t.v = 0x0076;\n  t.vadeva = 0x0935;\n  t.vagujarati = 0x0ab5;\n  t.vagurmukhi = 0x0a35;\n  t.vakatakana = 0x30f7;\n  t.vav = 0x05d5;\n  t.vavdagesh = 0xfb35;\n  t.vavdagesh65 = 0xfb35;\n  t.vavdageshhebrew = 0xfb35;\n  t.vavhebrew = 0x05d5;\n  t.vavholam = 0xfb4b;\n  t.vavholamhebrew = 0xfb4b;\n  t.vavvavhebrew = 0x05f0;\n  t.vavyodhebrew = 0x05f1;\n  t.vcircle = 0x24e5;\n  t.vdotbelow = 0x1e7f;\n  t.vecyrillic = 0x0432;\n  t.veharabic = 0x06a4;\n  t.vehfinalarabic = 0xfb6b;\n  t.vehinitialarabic = 0xfb6c;\n  t.vehmedialarabic = 0xfb6d;\n  t.vekatakana = 0x30f9;\n  t.venus = 0x2640;\n  t.verticalbar = 0x007c;\n  t.verticallineabovecmb = 0x030d;\n  t.verticallinebelowcmb = 0x0329;\n  t.verticallinelowmod = 0x02cc;\n  t.verticallinemod = 0x02c8;\n  t.vewarmenian = 0x057e;\n  t.vhook = 0x028b;\n  t.vikatakana = 0x30f8;\n  t.viramabengali = 0x09cd;\n  t.viramadeva = 0x094d;\n  t.viramagujarati = 0x0acd;\n  t.visargabengali = 0x0983;\n  t.visargadeva = 0x0903;\n  t.visargagujarati = 0x0a83;\n  t.vmonospace = 0xff56;\n  t.voarmenian = 0x0578;\n  t.voicediterationhiragana = 0x309e;\n  t.voicediterationkatakana = 0x30fe;\n  t.voicedmarkkana = 0x309b;\n  t.voicedmarkkanahalfwidth = 0xff9e;\n  t.vokatakana = 0x30fa;\n  t.vparen = 0x24b1;\n  t.vtilde = 0x1e7d;\n  t.vturned = 0x028c;\n  t.vuhiragana = 0x3094;\n  t.vukatakana = 0x30f4;\n  t.w = 0x0077;\n  t.wacute = 0x1e83;\n  t.waekorean = 0x3159;\n  t.wahiragana = 0x308f;\n  t.wakatakana = 0x30ef;\n  t.wakatakanahalfwidth = 0xff9c;\n  t.wakorean = 0x3158;\n  t.wasmallhiragana = 0x308e;\n  t.wasmallkatakana = 0x30ee;\n  t.wattosquare = 0x3357;\n  t.wavedash = 0x301c;\n  t.wavyunderscorevertical = 0xfe34;\n  t.wawarabic = 0x0648;\n  t.wawfinalarabic = 0xfeee;\n  t.wawhamzaabovearabic = 0x0624;\n  t.wawhamzaabovefinalarabic = 0xfe86;\n  t.wbsquare = 0x33dd;\n  t.wcircle = 0x24e6;\n  t.wcircumflex = 0x0175;\n  t.wdieresis = 0x1e85;\n  t.wdotaccent = 0x1e87;\n  t.wdotbelow = 0x1e89;\n  t.wehiragana = 0x3091;\n  t.weierstrass = 0x2118;\n  t.wekatakana = 0x30f1;\n  t.wekorean = 0x315e;\n  t.weokorean = 0x315d;\n  t.wgrave = 0x1e81;\n  t.whitebullet = 0x25e6;\n  t.whitecircle = 0x25cb;\n  t.whitecircleinverse = 0x25d9;\n  t.whitecornerbracketleft = 0x300e;\n  t.whitecornerbracketleftvertical = 0xfe43;\n  t.whitecornerbracketright = 0x300f;\n  t.whitecornerbracketrightvertical = 0xfe44;\n  t.whitediamond = 0x25c7;\n  t.whitediamondcontainingblacksmalldiamond = 0x25c8;\n  t.whitedownpointingsmalltriangle = 0x25bf;\n  t.whitedownpointingtriangle = 0x25bd;\n  t.whiteleftpointingsmalltriangle = 0x25c3;\n  t.whiteleftpointingtriangle = 0x25c1;\n  t.whitelenticularbracketleft = 0x3016;\n  t.whitelenticularbracketright = 0x3017;\n  t.whiterightpointingsmalltriangle = 0x25b9;\n  t.whiterightpointingtriangle = 0x25b7;\n  t.whitesmallsquare = 0x25ab;\n  t.whitesmilingface = 0x263a;\n  t.whitesquare = 0x25a1;\n  t.whitestar = 0x2606;\n  t.whitetelephone = 0x260f;\n  t.whitetortoiseshellbracketleft = 0x3018;\n  t.whitetortoiseshellbracketright = 0x3019;\n  t.whiteuppointingsmalltriangle = 0x25b5;\n  t.whiteuppointingtriangle = 0x25b3;\n  t.wihiragana = 0x3090;\n  t.wikatakana = 0x30f0;\n  t.wikorean = 0x315f;\n  t.wmonospace = 0xff57;\n  t.wohiragana = 0x3092;\n  t.wokatakana = 0x30f2;\n  t.wokatakanahalfwidth = 0xff66;\n  t.won = 0x20a9;\n  t.wonmonospace = 0xffe6;\n  t.wowaenthai = 0x0e27;\n  t.wparen = 0x24b2;\n  t.wring = 0x1e98;\n  t.wsuperior = 0x02b7;\n  t.wturned = 0x028d;\n  t.wynn = 0x01bf;\n  t.x = 0x0078;\n  t.xabovecmb = 0x033d;\n  t.xbopomofo = 0x3112;\n  t.xcircle = 0x24e7;\n  t.xdieresis = 0x1e8d;\n  t.xdotaccent = 0x1e8b;\n  t.xeharmenian = 0x056d;\n  t.xi = 0x03be;\n  t.xmonospace = 0xff58;\n  t.xparen = 0x24b3;\n  t.xsuperior = 0x02e3;\n  t.y = 0x0079;\n  t.yaadosquare = 0x334e;\n  t.yabengali = 0x09af;\n  t.yacute = 0x00fd;\n  t.yadeva = 0x092f;\n  t.yaekorean = 0x3152;\n  t.yagujarati = 0x0aaf;\n  t.yagurmukhi = 0x0a2f;\n  t.yahiragana = 0x3084;\n  t.yakatakana = 0x30e4;\n  t.yakatakanahalfwidth = 0xff94;\n  t.yakorean = 0x3151;\n  t.yamakkanthai = 0x0e4e;\n  t.yasmallhiragana = 0x3083;\n  t.yasmallkatakana = 0x30e3;\n  t.yasmallkatakanahalfwidth = 0xff6c;\n  t.yatcyrillic = 0x0463;\n  t.ycircle = 0x24e8;\n  t.ycircumflex = 0x0177;\n  t.ydieresis = 0x00ff;\n  t.ydotaccent = 0x1e8f;\n  t.ydotbelow = 0x1ef5;\n  t.yeharabic = 0x064a;\n  t.yehbarreearabic = 0x06d2;\n  t.yehbarreefinalarabic = 0xfbaf;\n  t.yehfinalarabic = 0xfef2;\n  t.yehhamzaabovearabic = 0x0626;\n  t.yehhamzaabovefinalarabic = 0xfe8a;\n  t.yehhamzaaboveinitialarabic = 0xfe8b;\n  t.yehhamzaabovemedialarabic = 0xfe8c;\n  t.yehinitialarabic = 0xfef3;\n  t.yehmedialarabic = 0xfef4;\n  t.yehmeeminitialarabic = 0xfcdd;\n  t.yehmeemisolatedarabic = 0xfc58;\n  t.yehnoonfinalarabic = 0xfc94;\n  t.yehthreedotsbelowarabic = 0x06d1;\n  t.yekorean = 0x3156;\n  t.yen = 0x00a5;\n  t.yenmonospace = 0xffe5;\n  t.yeokorean = 0x3155;\n  t.yeorinhieuhkorean = 0x3186;\n  t.yerahbenyomohebrew = 0x05aa;\n  t.yerahbenyomolefthebrew = 0x05aa;\n  t.yericyrillic = 0x044b;\n  t.yerudieresiscyrillic = 0x04f9;\n  t.yesieungkorean = 0x3181;\n  t.yesieungpansioskorean = 0x3183;\n  t.yesieungsioskorean = 0x3182;\n  t.yetivhebrew = 0x059a;\n  t.ygrave = 0x1ef3;\n  t.yhook = 0x01b4;\n  t.yhookabove = 0x1ef7;\n  t.yiarmenian = 0x0575;\n  t.yicyrillic = 0x0457;\n  t.yikorean = 0x3162;\n  t.yinyang = 0x262f;\n  t.yiwnarmenian = 0x0582;\n  t.ymonospace = 0xff59;\n  t.yod = 0x05d9;\n  t.yoddagesh = 0xfb39;\n  t.yoddageshhebrew = 0xfb39;\n  t.yodhebrew = 0x05d9;\n  t.yodyodhebrew = 0x05f2;\n  t.yodyodpatahhebrew = 0xfb1f;\n  t.yohiragana = 0x3088;\n  t.yoikorean = 0x3189;\n  t.yokatakana = 0x30e8;\n  t.yokatakanahalfwidth = 0xff96;\n  t.yokorean = 0x315b;\n  t.yosmallhiragana = 0x3087;\n  t.yosmallkatakana = 0x30e7;\n  t.yosmallkatakanahalfwidth = 0xff6e;\n  t.yotgreek = 0x03f3;\n  t.yoyaekorean = 0x3188;\n  t.yoyakorean = 0x3187;\n  t.yoyakthai = 0x0e22;\n  t.yoyingthai = 0x0e0d;\n  t.yparen = 0x24b4;\n  t.ypogegrammeni = 0x037a;\n  t.ypogegrammenigreekcmb = 0x0345;\n  t.yr = 0x01a6;\n  t.yring = 0x1e99;\n  t.ysuperior = 0x02b8;\n  t.ytilde = 0x1ef9;\n  t.yturned = 0x028e;\n  t.yuhiragana = 0x3086;\n  t.yuikorean = 0x318c;\n  t.yukatakana = 0x30e6;\n  t.yukatakanahalfwidth = 0xff95;\n  t.yukorean = 0x3160;\n  t.yusbigcyrillic = 0x046b;\n  t.yusbigiotifiedcyrillic = 0x046d;\n  t.yuslittlecyrillic = 0x0467;\n  t.yuslittleiotifiedcyrillic = 0x0469;\n  t.yusmallhiragana = 0x3085;\n  t.yusmallkatakana = 0x30e5;\n  t.yusmallkatakanahalfwidth = 0xff6d;\n  t.yuyekorean = 0x318b;\n  t.yuyeokorean = 0x318a;\n  t.yyabengali = 0x09df;\n  t.yyadeva = 0x095f;\n  t.z = 0x007a;\n  t.zaarmenian = 0x0566;\n  t.zacute = 0x017a;\n  t.zadeva = 0x095b;\n  t.zagurmukhi = 0x0a5b;\n  t.zaharabic = 0x0638;\n  t.zahfinalarabic = 0xfec6;\n  t.zahinitialarabic = 0xfec7;\n  t.zahiragana = 0x3056;\n  t.zahmedialarabic = 0xfec8;\n  t.zainarabic = 0x0632;\n  t.zainfinalarabic = 0xfeb0;\n  t.zakatakana = 0x30b6;\n  t.zaqefgadolhebrew = 0x0595;\n  t.zaqefqatanhebrew = 0x0594;\n  t.zarqahebrew = 0x0598;\n  t.zayin = 0x05d6;\n  t.zayindagesh = 0xfb36;\n  t.zayindageshhebrew = 0xfb36;\n  t.zayinhebrew = 0x05d6;\n  t.zbopomofo = 0x3117;\n  t.zcaron = 0x017e;\n  t.zcircle = 0x24e9;\n  t.zcircumflex = 0x1e91;\n  t.zcurl = 0x0291;\n  t.zdot = 0x017c;\n  t.zdotaccent = 0x017c;\n  t.zdotbelow = 0x1e93;\n  t.zecyrillic = 0x0437;\n  t.zedescendercyrillic = 0x0499;\n  t.zedieresiscyrillic = 0x04df;\n  t.zehiragana = 0x305c;\n  t.zekatakana = 0x30bc;\n  t.zero = 0x0030;\n  t.zeroarabic = 0x0660;\n  t.zerobengali = 0x09e6;\n  t.zerodeva = 0x0966;\n  t.zerogujarati = 0x0ae6;\n  t.zerogurmukhi = 0x0a66;\n  t.zerohackarabic = 0x0660;\n  t.zeroinferior = 0x2080;\n  t.zeromonospace = 0xff10;\n  t.zerooldstyle = 0xf730;\n  t.zeropersian = 0x06f0;\n  t.zerosuperior = 0x2070;\n  t.zerothai = 0x0e50;\n  t.zerowidthjoiner = 0xfeff;\n  t.zerowidthnonjoiner = 0x200c;\n  t.zerowidthspace = 0x200b;\n  t.zeta = 0x03b6;\n  t.zhbopomofo = 0x3113;\n  t.zhearmenian = 0x056a;\n  t.zhebrevecyrillic = 0x04c2;\n  t.zhecyrillic = 0x0436;\n  t.zhedescendercyrillic = 0x0497;\n  t.zhedieresiscyrillic = 0x04dd;\n  t.zihiragana = 0x3058;\n  t.zikatakana = 0x30b8;\n  t.zinorhebrew = 0x05ae;\n  t.zlinebelow = 0x1e95;\n  t.zmonospace = 0xff5a;\n  t.zohiragana = 0x305e;\n  t.zokatakana = 0x30be;\n  t.zparen = 0x24b5;\n  t.zretroflexhook = 0x0290;\n  t.zstroke = 0x01b6;\n  t.zuhiragana = 0x305a;\n  t.zukatakana = 0x30ba;\n  t[\".notdef\"] = 0x0000;\n\n  // TeX-specific glyph names.\n  t.angbracketleftbig = 0x2329;\n  t.angbracketleftBig = 0x2329;\n  t.angbracketleftbigg = 0x2329;\n  t.angbracketleftBigg = 0x2329;\n  t.angbracketrightBig = 0x232a;\n  t.angbracketrightbig = 0x232a;\n  t.angbracketrightBigg = 0x232a;\n  t.angbracketrightbigg = 0x232a;\n  t.arrowhookleft = 0x21aa;\n  t.arrowhookright = 0x21a9;\n  t.arrowlefttophalf = 0x21bc;\n  t.arrowleftbothalf = 0x21bd;\n  t.arrownortheast = 0x2197;\n  t.arrownorthwest = 0x2196;\n  t.arrowrighttophalf = 0x21c0;\n  t.arrowrightbothalf = 0x21c1;\n  t.arrowsoutheast = 0x2198;\n  t.arrowsouthwest = 0x2199;\n  t.backslashbig = 0x2216;\n  t.backslashBig = 0x2216;\n  t.backslashBigg = 0x2216;\n  t.backslashbigg = 0x2216;\n  t.bardbl = 0x2016;\n  t.bracehtipdownleft = 0xfe37;\n  t.bracehtipdownright = 0xfe37;\n  t.bracehtipupleft = 0xfe38;\n  t.bracehtipupright = 0xfe38;\n  t.braceleftBig = 0x007b;\n  t.braceleftbig = 0x007b;\n  t.braceleftbigg = 0x007b;\n  t.braceleftBigg = 0x007b;\n  t.bracerightBig = 0x007d;\n  t.bracerightbig = 0x007d;\n  t.bracerightbigg = 0x007d;\n  t.bracerightBigg = 0x007d;\n  t.bracketleftbig = 0x005b;\n  t.bracketleftBig = 0x005b;\n  t.bracketleftbigg = 0x005b;\n  t.bracketleftBigg = 0x005b;\n  t.bracketrightBig = 0x005d;\n  t.bracketrightbig = 0x005d;\n  t.bracketrightbigg = 0x005d;\n  t.bracketrightBigg = 0x005d;\n  t.ceilingleftbig = 0x2308;\n  t.ceilingleftBig = 0x2308;\n  t.ceilingleftBigg = 0x2308;\n  t.ceilingleftbigg = 0x2308;\n  t.ceilingrightbig = 0x2309;\n  t.ceilingrightBig = 0x2309;\n  t.ceilingrightbigg = 0x2309;\n  t.ceilingrightBigg = 0x2309;\n  t.circledotdisplay = 0x2299;\n  t.circledottext = 0x2299;\n  t.circlemultiplydisplay = 0x2297;\n  t.circlemultiplytext = 0x2297;\n  t.circleplusdisplay = 0x2295;\n  t.circleplustext = 0x2295;\n  t.contintegraldisplay = 0x222e;\n  t.contintegraltext = 0x222e;\n  t.coproductdisplay = 0x2210;\n  t.coproducttext = 0x2210;\n  t.floorleftBig = 0x230a;\n  t.floorleftbig = 0x230a;\n  t.floorleftbigg = 0x230a;\n  t.floorleftBigg = 0x230a;\n  t.floorrightbig = 0x230b;\n  t.floorrightBig = 0x230b;\n  t.floorrightBigg = 0x230b;\n  t.floorrightbigg = 0x230b;\n  t.hatwide = 0x0302;\n  t.hatwider = 0x0302;\n  t.hatwidest = 0x0302;\n  t.intercal = 0x1d40;\n  t.integraldisplay = 0x222b;\n  t.integraltext = 0x222b;\n  t.intersectiondisplay = 0x22c2;\n  t.intersectiontext = 0x22c2;\n  t.logicalanddisplay = 0x2227;\n  t.logicalandtext = 0x2227;\n  t.logicalordisplay = 0x2228;\n  t.logicalortext = 0x2228;\n  t.parenleftBig = 0x0028;\n  t.parenleftbig = 0x0028;\n  t.parenleftBigg = 0x0028;\n  t.parenleftbigg = 0x0028;\n  t.parenrightBig = 0x0029;\n  t.parenrightbig = 0x0029;\n  t.parenrightBigg = 0x0029;\n  t.parenrightbigg = 0x0029;\n  t.prime = 0x2032;\n  t.productdisplay = 0x220f;\n  t.producttext = 0x220f;\n  t.radicalbig = 0x221a;\n  t.radicalBig = 0x221a;\n  t.radicalBigg = 0x221a;\n  t.radicalbigg = 0x221a;\n  t.radicalbt = 0x221a;\n  t.radicaltp = 0x221a;\n  t.radicalvertex = 0x221a;\n  t.slashbig = 0x002f;\n  t.slashBig = 0x002f;\n  t.slashBigg = 0x002f;\n  t.slashbigg = 0x002f;\n  t.summationdisplay = 0x2211;\n  t.summationtext = 0x2211;\n  t.tildewide = 0x02dc;\n  t.tildewider = 0x02dc;\n  t.tildewidest = 0x02dc;\n  t.uniondisplay = 0x22c3;\n  t.unionmultidisplay = 0x228e;\n  t.unionmultitext = 0x228e;\n  t.unionsqdisplay = 0x2294;\n  t.unionsqtext = 0x2294;\n  t.uniontext = 0x22c3;\n  t.vextenddouble = 0x2225;\n  t.vextendsingle = 0x2223;\n});\n\nvar getDingbatsGlyphsUnicode = getLookupTableFactory(function (t) {\n  t.space = 0x0020;\n  t.a1 = 0x2701;\n  t.a2 = 0x2702;\n  t.a202 = 0x2703;\n  t.a3 = 0x2704;\n  t.a4 = 0x260e;\n  t.a5 = 0x2706;\n  t.a119 = 0x2707;\n  t.a118 = 0x2708;\n  t.a117 = 0x2709;\n  t.a11 = 0x261b;\n  t.a12 = 0x261e;\n  t.a13 = 0x270c;\n  t.a14 = 0x270d;\n  t.a15 = 0x270e;\n  t.a16 = 0x270f;\n  t.a105 = 0x2710;\n  t.a17 = 0x2711;\n  t.a18 = 0x2712;\n  t.a19 = 0x2713;\n  t.a20 = 0x2714;\n  t.a21 = 0x2715;\n  t.a22 = 0x2716;\n  t.a23 = 0x2717;\n  t.a24 = 0x2718;\n  t.a25 = 0x2719;\n  t.a26 = 0x271a;\n  t.a27 = 0x271b;\n  t.a28 = 0x271c;\n  t.a6 = 0x271d;\n  t.a7 = 0x271e;\n  t.a8 = 0x271f;\n  t.a9 = 0x2720;\n  t.a10 = 0x2721;\n  t.a29 = 0x2722;\n  t.a30 = 0x2723;\n  t.a31 = 0x2724;\n  t.a32 = 0x2725;\n  t.a33 = 0x2726;\n  t.a34 = 0x2727;\n  t.a35 = 0x2605;\n  t.a36 = 0x2729;\n  t.a37 = 0x272a;\n  t.a38 = 0x272b;\n  t.a39 = 0x272c;\n  t.a40 = 0x272d;\n  t.a41 = 0x272e;\n  t.a42 = 0x272f;\n  t.a43 = 0x2730;\n  t.a44 = 0x2731;\n  t.a45 = 0x2732;\n  t.a46 = 0x2733;\n  t.a47 = 0x2734;\n  t.a48 = 0x2735;\n  t.a49 = 0x2736;\n  t.a50 = 0x2737;\n  t.a51 = 0x2738;\n  t.a52 = 0x2739;\n  t.a53 = 0x273a;\n  t.a54 = 0x273b;\n  t.a55 = 0x273c;\n  t.a56 = 0x273d;\n  t.a57 = 0x273e;\n  t.a58 = 0x273f;\n  t.a59 = 0x2740;\n  t.a60 = 0x2741;\n  t.a61 = 0x2742;\n  t.a62 = 0x2743;\n  t.a63 = 0x2744;\n  t.a64 = 0x2745;\n  t.a65 = 0x2746;\n  t.a66 = 0x2747;\n  t.a67 = 0x2748;\n  t.a68 = 0x2749;\n  t.a69 = 0x274a;\n  t.a70 = 0x274b;\n  t.a71 = 0x25cf;\n  t.a72 = 0x274d;\n  t.a73 = 0x25a0;\n  t.a74 = 0x274f;\n  t.a203 = 0x2750;\n  t.a75 = 0x2751;\n  t.a204 = 0x2752;\n  t.a76 = 0x25b2;\n  t.a77 = 0x25bc;\n  t.a78 = 0x25c6;\n  t.a79 = 0x2756;\n  t.a81 = 0x25d7;\n  t.a82 = 0x2758;\n  t.a83 = 0x2759;\n  t.a84 = 0x275a;\n  t.a97 = 0x275b;\n  t.a98 = 0x275c;\n  t.a99 = 0x275d;\n  t.a100 = 0x275e;\n  t.a101 = 0x2761;\n  t.a102 = 0x2762;\n  t.a103 = 0x2763;\n  t.a104 = 0x2764;\n  t.a106 = 0x2765;\n  t.a107 = 0x2766;\n  t.a108 = 0x2767;\n  t.a112 = 0x2663;\n  t.a111 = 0x2666;\n  t.a110 = 0x2665;\n  t.a109 = 0x2660;\n  t.a120 = 0x2460;\n  t.a121 = 0x2461;\n  t.a122 = 0x2462;\n  t.a123 = 0x2463;\n  t.a124 = 0x2464;\n  t.a125 = 0x2465;\n  t.a126 = 0x2466;\n  t.a127 = 0x2467;\n  t.a128 = 0x2468;\n  t.a129 = 0x2469;\n  t.a130 = 0x2776;\n  t.a131 = 0x2777;\n  t.a132 = 0x2778;\n  t.a133 = 0x2779;\n  t.a134 = 0x277a;\n  t.a135 = 0x277b;\n  t.a136 = 0x277c;\n  t.a137 = 0x277d;\n  t.a138 = 0x277e;\n  t.a139 = 0x277f;\n  t.a140 = 0x2780;\n  t.a141 = 0x2781;\n  t.a142 = 0x2782;\n  t.a143 = 0x2783;\n  t.a144 = 0x2784;\n  t.a145 = 0x2785;\n  t.a146 = 0x2786;\n  t.a147 = 0x2787;\n  t.a148 = 0x2788;\n  t.a149 = 0x2789;\n  t.a150 = 0x278a;\n  t.a151 = 0x278b;\n  t.a152 = 0x278c;\n  t.a153 = 0x278d;\n  t.a154 = 0x278e;\n  t.a155 = 0x278f;\n  t.a156 = 0x2790;\n  t.a157 = 0x2791;\n  t.a158 = 0x2792;\n  t.a159 = 0x2793;\n  t.a160 = 0x2794;\n  t.a161 = 0x2192;\n  t.a163 = 0x2194;\n  t.a164 = 0x2195;\n  t.a196 = 0x2798;\n  t.a165 = 0x2799;\n  t.a192 = 0x279a;\n  t.a166 = 0x279b;\n  t.a167 = 0x279c;\n  t.a168 = 0x279d;\n  t.a169 = 0x279e;\n  t.a170 = 0x279f;\n  t.a171 = 0x27a0;\n  t.a172 = 0x27a1;\n  t.a173 = 0x27a2;\n  t.a162 = 0x27a3;\n  t.a174 = 0x27a4;\n  t.a175 = 0x27a5;\n  t.a176 = 0x27a6;\n  t.a177 = 0x27a7;\n  t.a178 = 0x27a8;\n  t.a179 = 0x27a9;\n  t.a193 = 0x27aa;\n  t.a180 = 0x27ab;\n  t.a199 = 0x27ac;\n  t.a181 = 0x27ad;\n  t.a200 = 0x27ae;\n  t.a182 = 0x27af;\n  t.a201 = 0x27b1;\n  t.a183 = 0x27b2;\n  t.a184 = 0x27b3;\n  t.a197 = 0x27b4;\n  t.a185 = 0x27b5;\n  t.a194 = 0x27b6;\n  t.a198 = 0x27b7;\n  t.a186 = 0x27b8;\n  t.a195 = 0x27b9;\n  t.a187 = 0x27ba;\n  t.a188 = 0x27bb;\n  t.a189 = 0x27bc;\n  t.a190 = 0x27bd;\n  t.a191 = 0x27be;\n  t.a89 = 0x2768; // 0xF8D7\n  t.a90 = 0x2769; // 0xF8D8\n  t.a93 = 0x276a; // 0xF8D9\n  t.a94 = 0x276b; // 0xF8DA\n  t.a91 = 0x276c; // 0xF8DB\n  t.a92 = 0x276d; // 0xF8DC\n  t.a205 = 0x276e; // 0xF8DD\n  t.a85 = 0x276f; // 0xF8DE\n  t.a206 = 0x2770; // 0xF8DF\n  t.a86 = 0x2771; // 0xF8E0\n  t.a87 = 0x2772; // 0xF8E1\n  t.a88 = 0x2773; // 0xF8E2\n  t.a95 = 0x2774; // 0xF8E3\n  t.a96 = 0x2775; // 0xF8E4\n  t[\".notdef\"] = 0x0000;\n});\n\nexports.getGlyphsUnicode = getGlyphsUnicode;\nexports.getDingbatsGlyphsUnicode = getDingbatsGlyphsUnicode;\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\nimport { getLookupTableFactory } from \"./core_utils.js\";\n\n/**\n * Hold a map of decoded fonts and of the standard fourteen Type1\n * fonts and their acronyms.\n */\nconst getStdFontMap = getLookupTableFactory(function (t) {\n  t.ArialNarrow = \"Helvetica\";\n  t[\"ArialNarrow-Bold\"] = \"Helvetica-Bold\";\n  t[\"ArialNarrow-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"ArialNarrow-Italic\"] = \"Helvetica-Oblique\";\n  t.ArialBlack = \"Helvetica\";\n  t[\"ArialBlack-Bold\"] = \"Helvetica-Bold\";\n  t[\"ArialBlack-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"ArialBlack-Italic\"] = \"Helvetica-Oblique\";\n  t[\"Arial-Black\"] = \"Helvetica\";\n  t[\"Arial-Black-Bold\"] = \"Helvetica-Bold\";\n  t[\"Arial-Black-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"Arial-Black-Italic\"] = \"Helvetica-Oblique\";\n  t.Arial = \"Helvetica\";\n  t[\"Arial-Bold\"] = \"Helvetica-Bold\";\n  t[\"Arial-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"Arial-Italic\"] = \"Helvetica-Oblique\";\n  t[\"Arial-BoldItalicMT\"] = \"Helvetica-BoldOblique\";\n  t[\"Arial-BoldMT\"] = \"Helvetica-Bold\";\n  t[\"Arial-ItalicMT\"] = \"Helvetica-Oblique\";\n  t.ArialMT = \"Helvetica\";\n  t[\"Courier-Bold\"] = \"Courier-Bold\";\n  t[\"Courier-BoldItalic\"] = \"Courier-BoldOblique\";\n  t[\"Courier-Italic\"] = \"Courier-Oblique\";\n  t.CourierNew = \"Courier\";\n  t[\"CourierNew-Bold\"] = \"Courier-Bold\";\n  t[\"CourierNew-BoldItalic\"] = \"Courier-BoldOblique\";\n  t[\"CourierNew-Italic\"] = \"Courier-Oblique\";\n  t[\"CourierNewPS-BoldItalicMT\"] = \"Courier-BoldOblique\";\n  t[\"CourierNewPS-BoldMT\"] = \"Courier-Bold\";\n  t[\"CourierNewPS-ItalicMT\"] = \"Courier-Oblique\";\n  t.CourierNewPSMT = \"Courier\";\n  t.Helvetica = \"Helvetica\";\n  t[\"Helvetica-Bold\"] = \"Helvetica-Bold\";\n  t[\"Helvetica-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"Helvetica-BoldOblique\"] = \"Helvetica-BoldOblique\";\n  t[\"Helvetica-Italic\"] = \"Helvetica-Oblique\";\n  t[\"Helvetica-Oblique\"] = \"Helvetica-Oblique\";\n  t[\"Symbol-Bold\"] = \"Symbol\";\n  t[\"Symbol-BoldItalic\"] = \"Symbol\";\n  t[\"Symbol-Italic\"] = \"Symbol\";\n  t.TimesNewRoman = \"Times-Roman\";\n  t[\"TimesNewRoman-Bold\"] = \"Times-Bold\";\n  t[\"TimesNewRoman-BoldItalic\"] = \"Times-BoldItalic\";\n  t[\"TimesNewRoman-Italic\"] = \"Times-Italic\";\n  t.TimesNewRomanPS = \"Times-Roman\";\n  t[\"TimesNewRomanPS-Bold\"] = \"Times-Bold\";\n  t[\"TimesNewRomanPS-BoldItalic\"] = \"Times-BoldItalic\";\n  t[\"TimesNewRomanPS-BoldItalicMT\"] = \"Times-BoldItalic\";\n  t[\"TimesNewRomanPS-BoldMT\"] = \"Times-Bold\";\n  t[\"TimesNewRomanPS-Italic\"] = \"Times-Italic\";\n  t[\"TimesNewRomanPS-ItalicMT\"] = \"Times-Italic\";\n  t.TimesNewRomanPSMT = \"Times-Roman\";\n  t[\"TimesNewRomanPSMT-Bold\"] = \"Times-Bold\";\n  t[\"TimesNewRomanPSMT-BoldItalic\"] = \"Times-BoldItalic\";\n  t[\"TimesNewRomanPSMT-Italic\"] = \"Times-Italic\";\n});\n\n/**\n * Holds the map of the non-standard fonts that might be included as\n * a standard fonts without glyph data.\n */\nconst getNonStdFontMap = getLookupTableFactory(function (t) {\n  t.Calibri = \"Helvetica\";\n  t[\"Calibri-Bold\"] = \"Helvetica-Bold\";\n  t[\"Calibri-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"Calibri-Italic\"] = \"Helvetica-Oblique\";\n  t.CenturyGothic = \"Helvetica\";\n  t[\"CenturyGothic-Bold\"] = \"Helvetica-Bold\";\n  t[\"CenturyGothic-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"CenturyGothic-Italic\"] = \"Helvetica-Oblique\";\n  t.ComicSansMS = \"Comic Sans MS\";\n  t[\"ComicSansMS-Bold\"] = \"Comic Sans MS-Bold\";\n  t[\"ComicSansMS-BoldItalic\"] = \"Comic Sans MS-BoldItalic\";\n  t[\"ComicSansMS-Italic\"] = \"Comic Sans MS-Italic\";\n  t.LucidaConsole = \"Courier\";\n  t[\"LucidaConsole-Bold\"] = \"Courier-Bold\";\n  t[\"LucidaConsole-BoldItalic\"] = \"Courier-BoldOblique\";\n  t[\"LucidaConsole-Italic\"] = \"Courier-Oblique\";\n  t[\"LucidaSans-Demi\"] = \"Helvetica-Bold\";\n  t[\"MS-Gothic\"] = \"MS Gothic\";\n  t[\"MS-Gothic-Bold\"] = \"MS Gothic-Bold\";\n  t[\"MS-Gothic-BoldItalic\"] = \"MS Gothic-BoldItalic\";\n  t[\"MS-Gothic-Italic\"] = \"MS Gothic-Italic\";\n  t[\"MS-Mincho\"] = \"MS Mincho\";\n  t[\"MS-Mincho-Bold\"] = \"MS Mincho-Bold\";\n  t[\"MS-Mincho-BoldItalic\"] = \"MS Mincho-BoldItalic\";\n  t[\"MS-Mincho-Italic\"] = \"MS Mincho-Italic\";\n  t[\"MS-PGothic\"] = \"MS PGothic\";\n  t[\"MS-PGothic-Bold\"] = \"MS PGothic-Bold\";\n  t[\"MS-PGothic-BoldItalic\"] = \"MS PGothic-BoldItalic\";\n  t[\"MS-PGothic-Italic\"] = \"MS PGothic-Italic\";\n  t[\"MS-PMincho\"] = \"MS PMincho\";\n  t[\"MS-PMincho-Bold\"] = \"MS PMincho-Bold\";\n  t[\"MS-PMincho-BoldItalic\"] = \"MS PMincho-BoldItalic\";\n  t[\"MS-PMincho-Italic\"] = \"MS PMincho-Italic\";\n  t.NuptialScript = \"Times-Italic\";\n  t.SegoeUISymbol = \"Helvetica\";\n  t.Wingdings = \"ZapfDingbats\";\n  t[\"Wingdings-Regular\"] = \"ZapfDingbats\";\n});\n\nconst getSerifFonts = getLookupTableFactory(function (t) {\n  t[\"Adobe Jenson\"] = true;\n  t[\"Adobe Text\"] = true;\n  t.Albertus = true;\n  t.Aldus = true;\n  t.Alexandria = true;\n  t.Algerian = true;\n  t[\"American Typewriter\"] = true;\n  t.Antiqua = true;\n  t.Apex = true;\n  t.Arno = true;\n  t.Aster = true;\n  t.Aurora = true;\n  t.Baskerville = true;\n  t.Bell = true;\n  t.Bembo = true;\n  t[\"Bembo Schoolbook\"] = true;\n  t.Benguiat = true;\n  t[\"Berkeley Old Style\"] = true;\n  t[\"Bernhard Modern\"] = true;\n  t[\"Berthold City\"] = true;\n  t.Bodoni = true;\n  t[\"Bauer Bodoni\"] = true;\n  t[\"Book Antiqua\"] = true;\n  t.Bookman = true;\n  t[\"Bordeaux Roman\"] = true;\n  t[\"Californian FB\"] = true;\n  t.Calisto = true;\n  t.Calvert = true;\n  t.Capitals = true;\n  t.Cambria = true;\n  t.Cartier = true;\n  t.Caslon = true;\n  t.Catull = true;\n  t.Centaur = true;\n  t[\"Century Old Style\"] = true;\n  t[\"Century Schoolbook\"] = true;\n  t.Chaparral = true;\n  t[\"Charis SIL\"] = true;\n  t.Cheltenham = true;\n  t[\"Cholla Slab\"] = true;\n  t.Clarendon = true;\n  t.Clearface = true;\n  t.Cochin = true;\n  t.Colonna = true;\n  t[\"Computer Modern\"] = true;\n  t[\"Concrete Roman\"] = true;\n  t.Constantia = true;\n  t[\"Cooper Black\"] = true;\n  t.Corona = true;\n  t.Ecotype = true;\n  t.Egyptienne = true;\n  t.Elephant = true;\n  t.Excelsior = true;\n  t.Fairfield = true;\n  t[\"FF Scala\"] = true;\n  t.Folkard = true;\n  t.Footlight = true;\n  t.FreeSerif = true;\n  t[\"Friz Quadrata\"] = true;\n  t.Garamond = true;\n  t.Gentium = true;\n  t.Georgia = true;\n  t.Gloucester = true;\n  t[\"Goudy Old Style\"] = true;\n  t[\"Goudy Schoolbook\"] = true;\n  t[\"Goudy Pro Font\"] = true;\n  t.Granjon = true;\n  t[\"Guardian Egyptian\"] = true;\n  t.Heather = true;\n  t.Hercules = true;\n  t[\"High Tower Text\"] = true;\n  t.Hiroshige = true;\n  t[\"Hoefler Text\"] = true;\n  t[\"Humana Serif\"] = true;\n  t.Imprint = true;\n  t[\"Ionic No. 5\"] = true;\n  t.Janson = true;\n  t.Joanna = true;\n  t.Korinna = true;\n  t.Lexicon = true;\n  t[\"Liberation Serif\"] = true;\n  t[\"Linux Libertine\"] = true;\n  t.Literaturnaya = true;\n  t.Lucida = true;\n  t[\"Lucida Bright\"] = true;\n  t.Melior = true;\n  t.Memphis = true;\n  t.Miller = true;\n  t.Minion = true;\n  t.Modern = true;\n  t[\"Mona Lisa\"] = true;\n  t[\"Mrs Eaves\"] = true;\n  t[\"MS Serif\"] = true;\n  t[\"Museo Slab\"] = true;\n  t[\"New York\"] = true;\n  t[\"Nimbus Roman\"] = true;\n  t[\"NPS Rawlinson Roadway\"] = true;\n  t.NuptialScript = true;\n  t.Palatino = true;\n  t.Perpetua = true;\n  t.Plantin = true;\n  t[\"Plantin Schoolbook\"] = true;\n  t.Playbill = true;\n  t[\"Poor Richard\"] = true;\n  t[\"Rawlinson Roadway\"] = true;\n  t.Renault = true;\n  t.Requiem = true;\n  t.Rockwell = true;\n  t.Roman = true;\n  t[\"Rotis Serif\"] = true;\n  t.Sabon = true;\n  t.Scala = true;\n  t.Seagull = true;\n  t.Sistina = true;\n  t.Souvenir = true;\n  t.STIX = true;\n  t[\"Stone Informal\"] = true;\n  t[\"Stone Serif\"] = true;\n  t.Sylfaen = true;\n  t.Times = true;\n  t.Trajan = true;\n  t[\"Trinité\"] = true;\n  t[\"Trump Mediaeval\"] = true;\n  t.Utopia = true;\n  t[\"Vale Type\"] = true;\n  t[\"Bitstream Vera\"] = true;\n  t[\"Vera Serif\"] = true;\n  t.Versailles = true;\n  t.Wanted = true;\n  t.Weiss = true;\n  t[\"Wide Latin\"] = true;\n  t.Windsor = true;\n  t.XITS = true;\n});\n\nconst getSymbolsFonts = getLookupTableFactory(function (t) {\n  t.Dingbats = true;\n  t.Symbol = true;\n  t.ZapfDingbats = true;\n});\n\n// Glyph map for well-known standard fonts. Sometimes Ghostscript uses CID\n// fonts, but does not embed the CID to GID mapping. The mapping is incomplete\n// for all glyphs, but common for some set of the standard fonts.\nconst getGlyphMapForStandardFonts = getLookupTableFactory(function (t) {\n  t[2] = 10;\n  t[3] = 32;\n  t[4] = 33;\n  t[5] = 34;\n  t[6] = 35;\n  t[7] = 36;\n  t[8] = 37;\n  t[9] = 38;\n  t[10] = 39;\n  t[11] = 40;\n  t[12] = 41;\n  t[13] = 42;\n  t[14] = 43;\n  t[15] = 44;\n  t[16] = 45;\n  t[17] = 46;\n  t[18] = 47;\n  t[19] = 48;\n  t[20] = 49;\n  t[21] = 50;\n  t[22] = 51;\n  t[23] = 52;\n  t[24] = 53;\n  t[25] = 54;\n  t[26] = 55;\n  t[27] = 56;\n  t[28] = 57;\n  t[29] = 58;\n  t[30] = 894;\n  t[31] = 60;\n  t[32] = 61;\n  t[33] = 62;\n  t[34] = 63;\n  t[35] = 64;\n  t[36] = 65;\n  t[37] = 66;\n  t[38] = 67;\n  t[39] = 68;\n  t[40] = 69;\n  t[41] = 70;\n  t[42] = 71;\n  t[43] = 72;\n  t[44] = 73;\n  t[45] = 74;\n  t[46] = 75;\n  t[47] = 76;\n  t[48] = 77;\n  t[49] = 78;\n  t[50] = 79;\n  t[51] = 80;\n  t[52] = 81;\n  t[53] = 82;\n  t[54] = 83;\n  t[55] = 84;\n  t[56] = 85;\n  t[57] = 86;\n  t[58] = 87;\n  t[59] = 88;\n  t[60] = 89;\n  t[61] = 90;\n  t[62] = 91;\n  t[63] = 92;\n  t[64] = 93;\n  t[65] = 94;\n  t[66] = 95;\n  t[67] = 96;\n  t[68] = 97;\n  t[69] = 98;\n  t[70] = 99;\n  t[71] = 100;\n  t[72] = 101;\n  t[73] = 102;\n  t[74] = 103;\n  t[75] = 104;\n  t[76] = 105;\n  t[77] = 106;\n  t[78] = 107;\n  t[79] = 108;\n  t[80] = 109;\n  t[81] = 110;\n  t[82] = 111;\n  t[83] = 112;\n  t[84] = 113;\n  t[85] = 114;\n  t[86] = 115;\n  t[87] = 116;\n  t[88] = 117;\n  t[89] = 118;\n  t[90] = 119;\n  t[91] = 120;\n  t[92] = 121;\n  t[93] = 122;\n  t[94] = 123;\n  t[95] = 124;\n  t[96] = 125;\n  t[97] = 126;\n  t[98] = 196;\n  t[99] = 197;\n  t[100] = 199;\n  t[101] = 201;\n  t[102] = 209;\n  t[103] = 214;\n  t[104] = 220;\n  t[105] = 225;\n  t[106] = 224;\n  t[107] = 226;\n  t[108] = 228;\n  t[109] = 227;\n  t[110] = 229;\n  t[111] = 231;\n  t[112] = 233;\n  t[113] = 232;\n  t[114] = 234;\n  t[115] = 235;\n  t[116] = 237;\n  t[117] = 236;\n  t[118] = 238;\n  t[119] = 239;\n  t[120] = 241;\n  t[121] = 243;\n  t[122] = 242;\n  t[123] = 244;\n  t[124] = 246;\n  t[125] = 245;\n  t[126] = 250;\n  t[127] = 249;\n  t[128] = 251;\n  t[129] = 252;\n  t[130] = 8224;\n  t[131] = 176;\n  t[132] = 162;\n  t[133] = 163;\n  t[134] = 167;\n  t[135] = 8226;\n  t[136] = 182;\n  t[137] = 223;\n  t[138] = 174;\n  t[139] = 169;\n  t[140] = 8482;\n  t[141] = 180;\n  t[142] = 168;\n  t[143] = 8800;\n  t[144] = 198;\n  t[145] = 216;\n  t[146] = 8734;\n  t[147] = 177;\n  t[148] = 8804;\n  t[149] = 8805;\n  t[150] = 165;\n  t[151] = 181;\n  t[152] = 8706;\n  t[153] = 8721;\n  t[154] = 8719;\n  t[156] = 8747;\n  t[157] = 170;\n  t[158] = 186;\n  t[159] = 8486;\n  t[160] = 230;\n  t[161] = 248;\n  t[162] = 191;\n  t[163] = 161;\n  t[164] = 172;\n  t[165] = 8730;\n  t[166] = 402;\n  t[167] = 8776;\n  t[168] = 8710;\n  t[169] = 171;\n  t[170] = 187;\n  t[171] = 8230;\n  t[210] = 218;\n  t[223] = 711;\n  t[224] = 321;\n  t[225] = 322;\n  t[227] = 353;\n  t[229] = 382;\n  t[234] = 253;\n  t[252] = 263;\n  t[253] = 268;\n  t[254] = 269;\n  t[258] = 258;\n  t[260] = 260;\n  t[261] = 261;\n  t[265] = 280;\n  t[266] = 281;\n  t[268] = 283;\n  t[269] = 313;\n  t[275] = 323;\n  t[276] = 324;\n  t[278] = 328;\n  t[284] = 345;\n  t[285] = 346;\n  t[286] = 347;\n  t[292] = 367;\n  t[295] = 377;\n  t[296] = 378;\n  t[298] = 380;\n  t[305] = 963;\n  t[306] = 964;\n  t[307] = 966;\n  t[308] = 8215;\n  t[309] = 8252;\n  t[310] = 8319;\n  t[311] = 8359;\n  t[312] = 8592;\n  t[313] = 8593;\n  t[337] = 9552;\n  t[493] = 1039;\n  t[494] = 1040;\n  t[705] = 1524;\n  t[706] = 8362;\n  t[710] = 64288;\n  t[711] = 64298;\n  t[759] = 1617;\n  t[761] = 1776;\n  t[763] = 1778;\n  t[775] = 1652;\n  t[777] = 1764;\n  t[778] = 1780;\n  t[779] = 1781;\n  t[780] = 1782;\n  t[782] = 771;\n  t[783] = 64726;\n  t[786] = 8363;\n  t[788] = 8532;\n  t[790] = 768;\n  t[791] = 769;\n  t[792] = 768;\n  t[795] = 803;\n  t[797] = 64336;\n  t[798] = 64337;\n  t[799] = 64342;\n  t[800] = 64343;\n  t[801] = 64344;\n  t[802] = 64345;\n  t[803] = 64362;\n  t[804] = 64363;\n  t[805] = 64364;\n  t[2424] = 7821;\n  t[2425] = 7822;\n  t[2426] = 7823;\n  t[2427] = 7824;\n  t[2428] = 7825;\n  t[2429] = 7826;\n  t[2430] = 7827;\n  t[2433] = 7682;\n  t[2678] = 8045;\n  t[2679] = 8046;\n  t[2830] = 1552;\n  t[2838] = 686;\n  t[2840] = 751;\n  t[2842] = 753;\n  t[2843] = 754;\n  t[2844] = 755;\n  t[2846] = 757;\n  t[2856] = 767;\n  t[2857] = 848;\n  t[2858] = 849;\n  t[2862] = 853;\n  t[2863] = 854;\n  t[2864] = 855;\n  t[2865] = 861;\n  t[2866] = 862;\n  t[2906] = 7460;\n  t[2908] = 7462;\n  t[2909] = 7463;\n  t[2910] = 7464;\n  t[2912] = 7466;\n  t[2913] = 7467;\n  t[2914] = 7468;\n  t[2916] = 7470;\n  t[2917] = 7471;\n  t[2918] = 7472;\n  t[2920] = 7474;\n  t[2921] = 7475;\n  t[2922] = 7476;\n  t[2924] = 7478;\n  t[2925] = 7479;\n  t[2926] = 7480;\n  t[2928] = 7482;\n  t[2929] = 7483;\n  t[2930] = 7484;\n  t[2932] = 7486;\n  t[2933] = 7487;\n  t[2934] = 7488;\n  t[2936] = 7490;\n  t[2937] = 7491;\n  t[2938] = 7492;\n  t[2940] = 7494;\n  t[2941] = 7495;\n  t[2942] = 7496;\n  t[2944] = 7498;\n  t[2946] = 7500;\n  t[2948] = 7502;\n  t[2950] = 7504;\n  t[2951] = 7505;\n  t[2952] = 7506;\n  t[2954] = 7508;\n  t[2955] = 7509;\n  t[2956] = 7510;\n  t[2958] = 7512;\n  t[2959] = 7513;\n  t[2960] = 7514;\n  t[2962] = 7516;\n  t[2963] = 7517;\n  t[2964] = 7518;\n  t[2966] = 7520;\n  t[2967] = 7521;\n  t[2968] = 7522;\n  t[2970] = 7524;\n  t[2971] = 7525;\n  t[2972] = 7526;\n  t[2974] = 7528;\n  t[2975] = 7529;\n  t[2976] = 7530;\n  t[2978] = 1537;\n  t[2979] = 1538;\n  t[2980] = 1539;\n  t[2982] = 1549;\n  t[2983] = 1551;\n  t[2984] = 1552;\n  t[2986] = 1554;\n  t[2987] = 1555;\n  t[2988] = 1556;\n  t[2990] = 1623;\n  t[2991] = 1624;\n  t[2995] = 1775;\n  t[2999] = 1791;\n  t[3002] = 64290;\n  t[3003] = 64291;\n  t[3004] = 64292;\n  t[3006] = 64294;\n  t[3007] = 64295;\n  t[3008] = 64296;\n  t[3011] = 1900;\n  t[3014] = 8223;\n  t[3015] = 8244;\n  t[3017] = 7532;\n  t[3018] = 7533;\n  t[3019] = 7534;\n  t[3075] = 7590;\n  t[3076] = 7591;\n  t[3079] = 7594;\n  t[3080] = 7595;\n  t[3083] = 7598;\n  t[3084] = 7599;\n  t[3087] = 7602;\n  t[3088] = 7603;\n  t[3091] = 7606;\n  t[3092] = 7607;\n  t[3095] = 7610;\n  t[3096] = 7611;\n  t[3099] = 7614;\n  t[3100] = 7615;\n  t[3103] = 7618;\n  t[3104] = 7619;\n  t[3107] = 8337;\n  t[3108] = 8338;\n  t[3116] = 1884;\n  t[3119] = 1885;\n  t[3120] = 1885;\n  t[3123] = 1886;\n  t[3124] = 1886;\n  t[3127] = 1887;\n  t[3128] = 1887;\n  t[3131] = 1888;\n  t[3132] = 1888;\n  t[3135] = 1889;\n  t[3136] = 1889;\n  t[3139] = 1890;\n  t[3140] = 1890;\n  t[3143] = 1891;\n  t[3144] = 1891;\n  t[3147] = 1892;\n  t[3148] = 1892;\n  t[3153] = 580;\n  t[3154] = 581;\n  t[3157] = 584;\n  t[3158] = 585;\n  t[3161] = 588;\n  t[3162] = 589;\n  t[3165] = 891;\n  t[3166] = 892;\n  t[3169] = 1274;\n  t[3170] = 1275;\n  t[3173] = 1278;\n  t[3174] = 1279;\n  t[3181] = 7622;\n  t[3182] = 7623;\n  t[3282] = 11799;\n  t[3316] = 578;\n  t[3379] = 42785;\n  t[3393] = 1159;\n  t[3416] = 8377;\n});\n\n// The glyph map for ArialBlack differs slightly from the glyph map used for\n// other well-known standard fonts. Hence we use this (incomplete) CID to GID\n// mapping to adjust the glyph map for non-embedded ArialBlack fonts.\nconst getSupplementalGlyphMapForArialBlack = getLookupTableFactory(function (\n  t\n) {\n  t[227] = 322;\n  t[264] = 261;\n  t[291] = 346;\n});\n\n// The glyph map for Calibri (a Windows font) differs from the glyph map used\n// in the standard fonts. Hence we use this (incomplete) CID to GID mapping to\n// adjust the glyph map for non-embedded Calibri fonts.\nconst getSupplementalGlyphMapForCalibri = getLookupTableFactory(function (t) {\n  t[1] = 32;\n  t[4] = 65;\n  t[17] = 66;\n  t[18] = 67;\n  t[24] = 68;\n  t[28] = 69;\n  t[38] = 70;\n  t[39] = 71;\n  t[44] = 72;\n  t[47] = 73;\n  t[58] = 74;\n  t[60] = 75;\n  t[62] = 76;\n  t[68] = 77;\n  t[69] = 78;\n  t[75] = 79;\n  t[87] = 80;\n  t[89] = 81;\n  t[90] = 82;\n  t[94] = 83;\n  t[100] = 84;\n  t[104] = 85;\n  t[115] = 86;\n  t[116] = 87;\n  t[121] = 88;\n  t[122] = 89;\n  t[127] = 90;\n  t[258] = 97;\n  t[268] = 261;\n  t[271] = 98;\n  t[272] = 99;\n  t[273] = 263;\n  t[282] = 100;\n  t[286] = 101;\n  t[295] = 281;\n  t[296] = 102;\n  t[336] = 103;\n  t[346] = 104;\n  t[349] = 105;\n  t[361] = 106;\n  t[364] = 107;\n  t[367] = 108;\n  t[371] = 322;\n  t[373] = 109;\n  t[374] = 110;\n  t[381] = 111;\n  t[383] = 243;\n  t[393] = 112;\n  t[395] = 113;\n  t[396] = 114;\n  t[400] = 115;\n  t[401] = 347;\n  t[410] = 116;\n  t[437] = 117;\n  t[448] = 118;\n  t[449] = 119;\n  t[454] = 120;\n  t[455] = 121;\n  t[460] = 122;\n  t[463] = 380;\n  t[853] = 44;\n  t[855] = 58;\n  t[856] = 46;\n  t[876] = 47;\n  t[878] = 45;\n  t[882] = 45;\n  t[894] = 40;\n  t[895] = 41;\n  t[896] = 91;\n  t[897] = 93;\n  t[923] = 64;\n  t[1004] = 48;\n  t[1005] = 49;\n  t[1006] = 50;\n  t[1007] = 51;\n  t[1008] = 52;\n  t[1009] = 53;\n  t[1010] = 54;\n  t[1011] = 55;\n  t[1012] = 56;\n  t[1013] = 57;\n  t[1081] = 37;\n  t[1085] = 43;\n  t[1086] = 45;\n});\n\nexport {\n  getStdFontMap,\n  getNonStdFontMap,\n  getSerifFonts,\n  getSymbolsFonts,\n  getGlyphMapForStandardFonts,\n  getSupplementalGlyphMapForArialBlack,\n  getSupplementalGlyphMapForCalibri,\n};\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* no-babel-preset */\n\nvar getLookupTableFactory = require(\"./core_utils.js\").getLookupTableFactory;\n\n// Some characters, e.g. copyrightserif, are mapped to the private use area\n// and might not be displayed using standard fonts. Mapping/hacking well-known\n// chars to the similar equivalents in the normal characters range.\nvar getSpecialPUASymbols = getLookupTableFactory(function (t) {\n  t[63721] = 0x00a9; // copyrightsans (0xF8E9) => copyright\n  t[63193] = 0x00a9; // copyrightserif (0xF6D9) => copyright\n  t[63720] = 0x00ae; // registersans (0xF8E8) => registered\n  t[63194] = 0x00ae; // registerserif (0xF6DA) => registered\n  t[63722] = 0x2122; // trademarksans (0xF8EA) => trademark\n  t[63195] = 0x2122; // trademarkserif (0xF6DB) => trademark\n  t[63729] = 0x23a7; // bracelefttp (0xF8F1)\n  t[63730] = 0x23a8; // braceleftmid (0xF8F2)\n  t[63731] = 0x23a9; // braceleftbt (0xF8F3)\n  t[63740] = 0x23ab; // bracerighttp (0xF8FC)\n  t[63741] = 0x23ac; // bracerightmid (0xF8FD)\n  t[63742] = 0x23ad; // bracerightbt (0xF8FE)\n  t[63726] = 0x23a1; // bracketlefttp (0xF8EE)\n  t[63727] = 0x23a2; // bracketleftex (0xF8EF)\n  t[63728] = 0x23a3; // bracketleftbt (0xF8F0)\n  t[63737] = 0x23a4; // bracketrighttp (0xF8F9)\n  t[63738] = 0x23a5; // bracketrightex (0xF8FA)\n  t[63739] = 0x23a6; // bracketrightbt (0xF8FB)\n  t[63723] = 0x239b; // parenlefttp (0xF8EB)\n  t[63724] = 0x239c; // parenleftex (0xF8EC)\n  t[63725] = 0x239d; // parenleftbt (0xF8ED)\n  t[63734] = 0x239e; // parenrighttp (0xF8F6)\n  t[63735] = 0x239f; // parenrightex (0xF8F7)\n  t[63736] = 0x23a0; // parenrightbt (0xF8F8)\n});\n\nfunction mapSpecialUnicodeValues(code) {\n  if (code >= 0xfff0 && code <= 0xffff) {\n    // Specials unicode block.\n    return 0;\n  } else if (code >= 0xf600 && code <= 0xf8ff) {\n    return getSpecialPUASymbols()[code] || code;\n  } else if (code === /* softhyphen = */ 0x00ad) {\n    return 0x002d; // hyphen\n  }\n  return code;\n}\n\nfunction getUnicodeForGlyph(name, glyphsUnicodeMap) {\n  var unicode = glyphsUnicodeMap[name];\n  if (unicode !== undefined) {\n    return unicode;\n  }\n  if (!name) {\n    return -1;\n  }\n  // Try to recover valid Unicode values from 'uniXXXX'/'uXXXX{XX}' glyphs.\n  if (name[0] === \"u\") {\n    var nameLen = name.length,\n      hexStr;\n\n    if (nameLen === 7 && name[1] === \"n\" && name[2] === \"i\") {\n      // 'uniXXXX'\n      hexStr = name.substring(3);\n    } else if (nameLen >= 5 && nameLen <= 7) {\n      // 'uXXXX{XX}'\n      hexStr = name.substring(1);\n    } else {\n      return -1;\n    }\n    // Check for upper-case hexadecimal characters, to avoid false positives.\n    if (hexStr === hexStr.toUpperCase()) {\n      unicode = parseInt(hexStr, 16);\n      if (unicode >= 0) {\n        return unicode;\n      }\n    }\n  }\n  return -1;\n}\n\nvar UnicodeRanges = [\n  { begin: 0x0000, end: 0x007f }, // Basic Latin\n  { begin: 0x0080, end: 0x00ff }, // Latin-1 Supplement\n  { begin: 0x0100, end: 0x017f }, // Latin Extended-A\n  { begin: 0x0180, end: 0x024f }, // Latin Extended-B\n  { begin: 0x0250, end: 0x02af }, // IPA Extensions\n  { begin: 0x02b0, end: 0x02ff }, // Spacing Modifier Letters\n  { begin: 0x0300, end: 0x036f }, // Combining Diacritical Marks\n  { begin: 0x0370, end: 0x03ff }, // Greek and Coptic\n  { begin: 0x2c80, end: 0x2cff }, // Coptic\n  { begin: 0x0400, end: 0x04ff }, // Cyrillic\n  { begin: 0x0530, end: 0x058f }, // Armenian\n  { begin: 0x0590, end: 0x05ff }, // Hebrew\n  { begin: 0xa500, end: 0xa63f }, // Vai\n  { begin: 0x0600, end: 0x06ff }, // Arabic\n  { begin: 0x07c0, end: 0x07ff }, // NKo\n  { begin: 0x0900, end: 0x097f }, // Devanagari\n  { begin: 0x0980, end: 0x09ff }, // Bengali\n  { begin: 0x0a00, end: 0x0a7f }, // Gurmukhi\n  { begin: 0x0a80, end: 0x0aff }, // Gujarati\n  { begin: 0x0b00, end: 0x0b7f }, // Oriya\n  { begin: 0x0b80, end: 0x0bff }, // Tamil\n  { begin: 0x0c00, end: 0x0c7f }, // Telugu\n  { begin: 0x0c80, end: 0x0cff }, // Kannada\n  { begin: 0x0d00, end: 0x0d7f }, // Malayalam\n  { begin: 0x0e00, end: 0x0e7f }, // Thai\n  { begin: 0x0e80, end: 0x0eff }, // Lao\n  { begin: 0x10a0, end: 0x10ff }, // Georgian\n  { begin: 0x1b00, end: 0x1b7f }, // Balinese\n  { begin: 0x1100, end: 0x11ff }, // Hangul Jamo\n  { begin: 0x1e00, end: 0x1eff }, // Latin Extended Additional\n  { begin: 0x1f00, end: 0x1fff }, // Greek Extended\n  { begin: 0x2000, end: 0x206f }, // General Punctuation\n  { begin: 0x2070, end: 0x209f }, // Superscripts And Subscripts\n  { begin: 0x20a0, end: 0x20cf }, // Currency Symbol\n  { begin: 0x20d0, end: 0x20ff }, // Combining Diacritical Marks\n  { begin: 0x2100, end: 0x214f }, // Letterlike Symbols\n  { begin: 0x2150, end: 0x218f }, // Number Forms\n  { begin: 0x2190, end: 0x21ff }, // Arrows\n  { begin: 0x2200, end: 0x22ff }, // Mathematical Operators\n  { begin: 0x2300, end: 0x23ff }, // Miscellaneous Technical\n  { begin: 0x2400, end: 0x243f }, // Control Pictures\n  { begin: 0x2440, end: 0x245f }, // Optical Character Recognition\n  { begin: 0x2460, end: 0x24ff }, // Enclosed Alphanumerics\n  { begin: 0x2500, end: 0x257f }, // Box Drawing\n  { begin: 0x2580, end: 0x259f }, // Block Elements\n  { begin: 0x25a0, end: 0x25ff }, // Geometric Shapes\n  { begin: 0x2600, end: 0x26ff }, // Miscellaneous Symbols\n  { begin: 0x2700, end: 0x27bf }, // Dingbats\n  { begin: 0x3000, end: 0x303f }, // CJK Symbols And Punctuation\n  { begin: 0x3040, end: 0x309f }, // Hiragana\n  { begin: 0x30a0, end: 0x30ff }, // Katakana\n  { begin: 0x3100, end: 0x312f }, // Bopomofo\n  { begin: 0x3130, end: 0x318f }, // Hangul Compatibility Jamo\n  { begin: 0xa840, end: 0xa87f }, // Phags-pa\n  { begin: 0x3200, end: 0x32ff }, // Enclosed CJK Letters And Months\n  { begin: 0x3300, end: 0x33ff }, // CJK Compatibility\n  { begin: 0xac00, end: 0xd7af }, // Hangul Syllables\n  { begin: 0xd800, end: 0xdfff }, // Non-Plane 0 *\n  { begin: 0x10900, end: 0x1091f }, // Phoenicia\n  { begin: 0x4e00, end: 0x9fff }, // CJK Unified Ideographs\n  { begin: 0xe000, end: 0xf8ff }, // Private Use Area (plane 0)\n  { begin: 0x31c0, end: 0x31ef }, // CJK Strokes\n  { begin: 0xfb00, end: 0xfb4f }, // Alphabetic Presentation Forms\n  { begin: 0xfb50, end: 0xfdff }, // Arabic Presentation Forms-A\n  { begin: 0xfe20, end: 0xfe2f }, // Combining Half Marks\n  { begin: 0xfe10, end: 0xfe1f }, // Vertical Forms\n  { begin: 0xfe50, end: 0xfe6f }, // Small Form Variants\n  { begin: 0xfe70, end: 0xfeff }, // Arabic Presentation Forms-B\n  { begin: 0xff00, end: 0xffef }, // Halfwidth And Fullwidth Forms\n  { begin: 0xfff0, end: 0xffff }, // Specials\n  { begin: 0x0f00, end: 0x0fff }, // Tibetan\n  { begin: 0x0700, end: 0x074f }, // Syriac\n  { begin: 0x0780, end: 0x07bf }, // Thaana\n  { begin: 0x0d80, end: 0x0dff }, // Sinhala\n  { begin: 0x1000, end: 0x109f }, // Myanmar\n  { begin: 0x1200, end: 0x137f }, // Ethiopic\n  { begin: 0x13a0, end: 0x13ff }, // Cherokee\n  { begin: 0x1400, end: 0x167f }, // Unified Canadian Aboriginal Syllabics\n  { begin: 0x1680, end: 0x169f }, // Ogham\n  { begin: 0x16a0, end: 0x16ff }, // Runic\n  { begin: 0x1780, end: 0x17ff }, // Khmer\n  { begin: 0x1800, end: 0x18af }, // Mongolian\n  { begin: 0x2800, end: 0x28ff }, // Braille Patterns\n  { begin: 0xa000, end: 0xa48f }, // Yi Syllables\n  { begin: 0x1700, end: 0x171f }, // Tagalog\n  { begin: 0x10300, end: 0x1032f }, // Old Italic\n  { begin: 0x10330, end: 0x1034f }, // Gothic\n  { begin: 0x10400, end: 0x1044f }, // Deseret\n  { begin: 0x1d000, end: 0x1d0ff }, // Byzantine Musical Symbols\n  { begin: 0x1d400, end: 0x1d7ff }, // Mathematical Alphanumeric Symbols\n  { begin: 0xff000, end: 0xffffd }, // Private Use (plane 15)\n  { begin: 0xfe00, end: 0xfe0f }, // Variation Selectors\n  { begin: 0xe0000, end: 0xe007f }, // Tags\n  { begin: 0x1900, end: 0x194f }, // Limbu\n  { begin: 0x1950, end: 0x197f }, // Tai Le\n  { begin: 0x1980, end: 0x19df }, // New Tai Lue\n  { begin: 0x1a00, end: 0x1a1f }, // Buginese\n  { begin: 0x2c00, end: 0x2c5f }, // Glagolitic\n  { begin: 0x2d30, end: 0x2d7f }, // Tifinagh\n  { begin: 0x4dc0, end: 0x4dff }, // Yijing Hexagram Symbols\n  { begin: 0xa800, end: 0xa82f }, // Syloti Nagri\n  { begin: 0x10000, end: 0x1007f }, // Linear B Syllabary\n  { begin: 0x10140, end: 0x1018f }, // Ancient Greek Numbers\n  { begin: 0x10380, end: 0x1039f }, // Ugaritic\n  { begin: 0x103a0, end: 0x103df }, // Old Persian\n  { begin: 0x10450, end: 0x1047f }, // Shavian\n  { begin: 0x10480, end: 0x104af }, // Osmanya\n  { begin: 0x10800, end: 0x1083f }, // Cypriot Syllabary\n  { begin: 0x10a00, end: 0x10a5f }, // Kharoshthi\n  { begin: 0x1d300, end: 0x1d35f }, // Tai Xuan Jing Symbols\n  { begin: 0x12000, end: 0x123ff }, // Cuneiform\n  { begin: 0x1d360, end: 0x1d37f }, // Counting Rod Numerals\n  { begin: 0x1b80, end: 0x1bbf }, // Sundanese\n  { begin: 0x1c00, end: 0x1c4f }, // Lepcha\n  { begin: 0x1c50, end: 0x1c7f }, // Ol Chiki\n  { begin: 0xa880, end: 0xa8df }, // Saurashtra\n  { begin: 0xa900, end: 0xa92f }, // Kayah Li\n  { begin: 0xa930, end: 0xa95f }, // Rejang\n  { begin: 0xaa00, end: 0xaa5f }, // Cham\n  { begin: 0x10190, end: 0x101cf }, // Ancient Symbols\n  { begin: 0x101d0, end: 0x101ff }, // Phaistos Disc\n  { begin: 0x102a0, end: 0x102df }, // Carian\n  { begin: 0x1f030, end: 0x1f09f }, // Domino Tiles\n];\n\nfunction getUnicodeRangeFor(value) {\n  for (var i = 0, ii = UnicodeRanges.length; i < ii; i++) {\n    var range = UnicodeRanges[i];\n    if (value >= range.begin && value < range.end) {\n      return i;\n    }\n  }\n  return -1;\n}\n\nfunction isRTLRangeFor(value) {\n  var range = UnicodeRanges[13];\n  if (value >= range.begin && value < range.end) {\n    return true;\n  }\n  range = UnicodeRanges[11];\n  if (value >= range.begin && value < range.end) {\n    return true;\n  }\n  return false;\n}\n\n// The normalization table is obtained by filtering the Unicode characters\n// database with <compat> entries.\nvar getNormalizedUnicodes = getLookupTableFactory(function (t) {\n  t[\"\\u00A8\"] = \"\\u0020\\u0308\";\n  t[\"\\u00AF\"] = \"\\u0020\\u0304\";\n  t[\"\\u00B4\"] = \"\\u0020\\u0301\";\n  t[\"\\u00B5\"] = \"\\u03BC\";\n  t[\"\\u00B8\"] = \"\\u0020\\u0327\";\n  t[\"\\u0132\"] = \"\\u0049\\u004A\";\n  t[\"\\u0133\"] = \"\\u0069\\u006A\";\n  t[\"\\u013F\"] = \"\\u004C\\u00B7\";\n  t[\"\\u0140\"] = \"\\u006C\\u00B7\";\n  t[\"\\u0149\"] = \"\\u02BC\\u006E\";\n  t[\"\\u017F\"] = \"\\u0073\";\n  t[\"\\u01C4\"] = \"\\u0044\\u017D\";\n  t[\"\\u01C5\"] = \"\\u0044\\u017E\";\n  t[\"\\u01C6\"] = \"\\u0064\\u017E\";\n  t[\"\\u01C7\"] = \"\\u004C\\u004A\";\n  t[\"\\u01C8\"] = \"\\u004C\\u006A\";\n  t[\"\\u01C9\"] = \"\\u006C\\u006A\";\n  t[\"\\u01CA\"] = \"\\u004E\\u004A\";\n  t[\"\\u01CB\"] = \"\\u004E\\u006A\";\n  t[\"\\u01CC\"] = \"\\u006E\\u006A\";\n  t[\"\\u01F1\"] = \"\\u0044\\u005A\";\n  t[\"\\u01F2\"] = \"\\u0044\\u007A\";\n  t[\"\\u01F3\"] = \"\\u0064\\u007A\";\n  t[\"\\u02D8\"] = \"\\u0020\\u0306\";\n  t[\"\\u02D9\"] = \"\\u0020\\u0307\";\n  t[\"\\u02DA\"] = \"\\u0020\\u030A\";\n  t[\"\\u02DB\"] = \"\\u0020\\u0328\";\n  t[\"\\u02DC\"] = \"\\u0020\\u0303\";\n  t[\"\\u02DD\"] = \"\\u0020\\u030B\";\n  t[\"\\u037A\"] = \"\\u0020\\u0345\";\n  t[\"\\u0384\"] = \"\\u0020\\u0301\";\n  t[\"\\u03D0\"] = \"\\u03B2\";\n  t[\"\\u03D1\"] = \"\\u03B8\";\n  t[\"\\u03D2\"] = \"\\u03A5\";\n  t[\"\\u03D5\"] = \"\\u03C6\";\n  t[\"\\u03D6\"] = \"\\u03C0\";\n  t[\"\\u03F0\"] = \"\\u03BA\";\n  t[\"\\u03F1\"] = \"\\u03C1\";\n  t[\"\\u03F2\"] = \"\\u03C2\";\n  t[\"\\u03F4\"] = \"\\u0398\";\n  t[\"\\u03F5\"] = \"\\u03B5\";\n  t[\"\\u03F9\"] = \"\\u03A3\";\n  t[\"\\u0587\"] = \"\\u0565\\u0582\";\n  t[\"\\u0675\"] = \"\\u0627\\u0674\";\n  t[\"\\u0676\"] = \"\\u0648\\u0674\";\n  t[\"\\u0677\"] = \"\\u06C7\\u0674\";\n  t[\"\\u0678\"] = \"\\u064A\\u0674\";\n  t[\"\\u0E33\"] = \"\\u0E4D\\u0E32\";\n  t[\"\\u0EB3\"] = \"\\u0ECD\\u0EB2\";\n  t[\"\\u0EDC\"] = \"\\u0EAB\\u0E99\";\n  t[\"\\u0EDD\"] = \"\\u0EAB\\u0EA1\";\n  t[\"\\u0F77\"] = \"\\u0FB2\\u0F81\";\n  t[\"\\u0F79\"] = \"\\u0FB3\\u0F81\";\n  t[\"\\u1E9A\"] = \"\\u0061\\u02BE\";\n  t[\"\\u1FBD\"] = \"\\u0020\\u0313\";\n  t[\"\\u1FBF\"] = \"\\u0020\\u0313\";\n  t[\"\\u1FC0\"] = \"\\u0020\\u0342\";\n  t[\"\\u1FFE\"] = \"\\u0020\\u0314\";\n  t[\"\\u2002\"] = \"\\u0020\";\n  t[\"\\u2003\"] = \"\\u0020\";\n  t[\"\\u2004\"] = \"\\u0020\";\n  t[\"\\u2005\"] = \"\\u0020\";\n  t[\"\\u2006\"] = \"\\u0020\";\n  t[\"\\u2008\"] = \"\\u0020\";\n  t[\"\\u2009\"] = \"\\u0020\";\n  t[\"\\u200A\"] = \"\\u0020\";\n  t[\"\\u2017\"] = \"\\u0020\\u0333\";\n  t[\"\\u2024\"] = \"\\u002E\";\n  t[\"\\u2025\"] = \"\\u002E\\u002E\";\n  t[\"\\u2026\"] = \"\\u002E\\u002E\\u002E\";\n  t[\"\\u2033\"] = \"\\u2032\\u2032\";\n  t[\"\\u2034\"] = \"\\u2032\\u2032\\u2032\";\n  t[\"\\u2036\"] = \"\\u2035\\u2035\";\n  t[\"\\u2037\"] = \"\\u2035\\u2035\\u2035\";\n  t[\"\\u203C\"] = \"\\u0021\\u0021\";\n  t[\"\\u203E\"] = \"\\u0020\\u0305\";\n  t[\"\\u2047\"] = \"\\u003F\\u003F\";\n  t[\"\\u2048\"] = \"\\u003F\\u0021\";\n  t[\"\\u2049\"] = \"\\u0021\\u003F\";\n  t[\"\\u2057\"] = \"\\u2032\\u2032\\u2032\\u2032\";\n  t[\"\\u205F\"] = \"\\u0020\";\n  t[\"\\u20A8\"] = \"\\u0052\\u0073\";\n  t[\"\\u2100\"] = \"\\u0061\\u002F\\u0063\";\n  t[\"\\u2101\"] = \"\\u0061\\u002F\\u0073\";\n  t[\"\\u2103\"] = \"\\u00B0\\u0043\";\n  t[\"\\u2105\"] = \"\\u0063\\u002F\\u006F\";\n  t[\"\\u2106\"] = \"\\u0063\\u002F\\u0075\";\n  t[\"\\u2107\"] = \"\\u0190\";\n  t[\"\\u2109\"] = \"\\u00B0\\u0046\";\n  t[\"\\u2116\"] = \"\\u004E\\u006F\";\n  t[\"\\u2121\"] = \"\\u0054\\u0045\\u004C\";\n  t[\"\\u2135\"] = \"\\u05D0\";\n  t[\"\\u2136\"] = \"\\u05D1\";\n  t[\"\\u2137\"] = \"\\u05D2\";\n  t[\"\\u2138\"] = \"\\u05D3\";\n  t[\"\\u213B\"] = \"\\u0046\\u0041\\u0058\";\n  t[\"\\u2160\"] = \"\\u0049\";\n  t[\"\\u2161\"] = \"\\u0049\\u0049\";\n  t[\"\\u2162\"] = \"\\u0049\\u0049\\u0049\";\n  t[\"\\u2163\"] = \"\\u0049\\u0056\";\n  t[\"\\u2164\"] = \"\\u0056\";\n  t[\"\\u2165\"] = \"\\u0056\\u0049\";\n  t[\"\\u2166\"] = \"\\u0056\\u0049\\u0049\";\n  t[\"\\u2167\"] = \"\\u0056\\u0049\\u0049\\u0049\";\n  t[\"\\u2168\"] = \"\\u0049\\u0058\";\n  t[\"\\u2169\"] = \"\\u0058\";\n  t[\"\\u216A\"] = \"\\u0058\\u0049\";\n  t[\"\\u216B\"] = \"\\u0058\\u0049\\u0049\";\n  t[\"\\u216C\"] = \"\\u004C\";\n  t[\"\\u216D\"] = \"\\u0043\";\n  t[\"\\u216E\"] = \"\\u0044\";\n  t[\"\\u216F\"] = \"\\u004D\";\n  t[\"\\u2170\"] = \"\\u0069\";\n  t[\"\\u2171\"] = \"\\u0069\\u0069\";\n  t[\"\\u2172\"] = \"\\u0069\\u0069\\u0069\";\n  t[\"\\u2173\"] = \"\\u0069\\u0076\";\n  t[\"\\u2174\"] = \"\\u0076\";\n  t[\"\\u2175\"] = \"\\u0076\\u0069\";\n  t[\"\\u2176\"] = \"\\u0076\\u0069\\u0069\";\n  t[\"\\u2177\"] = \"\\u0076\\u0069\\u0069\\u0069\";\n  t[\"\\u2178\"] = \"\\u0069\\u0078\";\n  t[\"\\u2179\"] = \"\\u0078\";\n  t[\"\\u217A\"] = \"\\u0078\\u0069\";\n  t[\"\\u217B\"] = \"\\u0078\\u0069\\u0069\";\n  t[\"\\u217C\"] = \"\\u006C\";\n  t[\"\\u217D\"] = \"\\u0063\";\n  t[\"\\u217E\"] = \"\\u0064\";\n  t[\"\\u217F\"] = \"\\u006D\";\n  t[\"\\u222C\"] = \"\\u222B\\u222B\";\n  t[\"\\u222D\"] = \"\\u222B\\u222B\\u222B\";\n  t[\"\\u222F\"] = \"\\u222E\\u222E\";\n  t[\"\\u2230\"] = \"\\u222E\\u222E\\u222E\";\n  t[\"\\u2474\"] = \"\\u0028\\u0031\\u0029\";\n  t[\"\\u2475\"] = \"\\u0028\\u0032\\u0029\";\n  t[\"\\u2476\"] = \"\\u0028\\u0033\\u0029\";\n  t[\"\\u2477\"] = \"\\u0028\\u0034\\u0029\";\n  t[\"\\u2478\"] = \"\\u0028\\u0035\\u0029\";\n  t[\"\\u2479\"] = \"\\u0028\\u0036\\u0029\";\n  t[\"\\u247A\"] = \"\\u0028\\u0037\\u0029\";\n  t[\"\\u247B\"] = \"\\u0028\\u0038\\u0029\";\n  t[\"\\u247C\"] = \"\\u0028\\u0039\\u0029\";\n  t[\"\\u247D\"] = \"\\u0028\\u0031\\u0030\\u0029\";\n  t[\"\\u247E\"] = \"\\u0028\\u0031\\u0031\\u0029\";\n  t[\"\\u247F\"] = \"\\u0028\\u0031\\u0032\\u0029\";\n  t[\"\\u2480\"] = \"\\u0028\\u0031\\u0033\\u0029\";\n  t[\"\\u2481\"] = \"\\u0028\\u0031\\u0034\\u0029\";\n  t[\"\\u2482\"] = \"\\u0028\\u0031\\u0035\\u0029\";\n  t[\"\\u2483\"] = \"\\u0028\\u0031\\u0036\\u0029\";\n  t[\"\\u2484\"] = \"\\u0028\\u0031\\u0037\\u0029\";\n  t[\"\\u2485\"] = \"\\u0028\\u0031\\u0038\\u0029\";\n  t[\"\\u2486\"] = \"\\u0028\\u0031\\u0039\\u0029\";\n  t[\"\\u2487\"] = \"\\u0028\\u0032\\u0030\\u0029\";\n  t[\"\\u2488\"] = \"\\u0031\\u002E\";\n  t[\"\\u2489\"] = \"\\u0032\\u002E\";\n  t[\"\\u248A\"] = \"\\u0033\\u002E\";\n  t[\"\\u248B\"] = \"\\u0034\\u002E\";\n  t[\"\\u248C\"] = \"\\u0035\\u002E\";\n  t[\"\\u248D\"] = \"\\u0036\\u002E\";\n  t[\"\\u248E\"] = \"\\u0037\\u002E\";\n  t[\"\\u248F\"] = \"\\u0038\\u002E\";\n  t[\"\\u2490\"] = \"\\u0039\\u002E\";\n  t[\"\\u2491\"] = \"\\u0031\\u0030\\u002E\";\n  t[\"\\u2492\"] = \"\\u0031\\u0031\\u002E\";\n  t[\"\\u2493\"] = \"\\u0031\\u0032\\u002E\";\n  t[\"\\u2494\"] = \"\\u0031\\u0033\\u002E\";\n  t[\"\\u2495\"] = \"\\u0031\\u0034\\u002E\";\n  t[\"\\u2496\"] = \"\\u0031\\u0035\\u002E\";\n  t[\"\\u2497\"] = \"\\u0031\\u0036\\u002E\";\n  t[\"\\u2498\"] = \"\\u0031\\u0037\\u002E\";\n  t[\"\\u2499\"] = \"\\u0031\\u0038\\u002E\";\n  t[\"\\u249A\"] = \"\\u0031\\u0039\\u002E\";\n  t[\"\\u249B\"] = \"\\u0032\\u0030\\u002E\";\n  t[\"\\u249C\"] = \"\\u0028\\u0061\\u0029\";\n  t[\"\\u249D\"] = \"\\u0028\\u0062\\u0029\";\n  t[\"\\u249E\"] = \"\\u0028\\u0063\\u0029\";\n  t[\"\\u249F\"] = \"\\u0028\\u0064\\u0029\";\n  t[\"\\u24A0\"] = \"\\u0028\\u0065\\u0029\";\n  t[\"\\u24A1\"] = \"\\u0028\\u0066\\u0029\";\n  t[\"\\u24A2\"] = \"\\u0028\\u0067\\u0029\";\n  t[\"\\u24A3\"] = \"\\u0028\\u0068\\u0029\";\n  t[\"\\u24A4\"] = \"\\u0028\\u0069\\u0029\";\n  t[\"\\u24A5\"] = \"\\u0028\\u006A\\u0029\";\n  t[\"\\u24A6\"] = \"\\u0028\\u006B\\u0029\";\n  t[\"\\u24A7\"] = \"\\u0028\\u006C\\u0029\";\n  t[\"\\u24A8\"] = \"\\u0028\\u006D\\u0029\";\n  t[\"\\u24A9\"] = \"\\u0028\\u006E\\u0029\";\n  t[\"\\u24AA\"] = \"\\u0028\\u006F\\u0029\";\n  t[\"\\u24AB\"] = \"\\u0028\\u0070\\u0029\";\n  t[\"\\u24AC\"] = \"\\u0028\\u0071\\u0029\";\n  t[\"\\u24AD\"] = \"\\u0028\\u0072\\u0029\";\n  t[\"\\u24AE\"] = \"\\u0028\\u0073\\u0029\";\n  t[\"\\u24AF\"] = \"\\u0028\\u0074\\u0029\";\n  t[\"\\u24B0\"] = \"\\u0028\\u0075\\u0029\";\n  t[\"\\u24B1\"] = \"\\u0028\\u0076\\u0029\";\n  t[\"\\u24B2\"] = \"\\u0028\\u0077\\u0029\";\n  t[\"\\u24B3\"] = \"\\u0028\\u0078\\u0029\";\n  t[\"\\u24B4\"] = \"\\u0028\\u0079\\u0029\";\n  t[\"\\u24B5\"] = \"\\u0028\\u007A\\u0029\";\n  t[\"\\u2A0C\"] = \"\\u222B\\u222B\\u222B\\u222B\";\n  t[\"\\u2A74\"] = \"\\u003A\\u003A\\u003D\";\n  t[\"\\u2A75\"] = \"\\u003D\\u003D\";\n  t[\"\\u2A76\"] = \"\\u003D\\u003D\\u003D\";\n  t[\"\\u2E9F\"] = \"\\u6BCD\";\n  t[\"\\u2EF3\"] = \"\\u9F9F\";\n  t[\"\\u2F00\"] = \"\\u4E00\";\n  t[\"\\u2F01\"] = \"\\u4E28\";\n  t[\"\\u2F02\"] = \"\\u4E36\";\n  t[\"\\u2F03\"] = \"\\u4E3F\";\n  t[\"\\u2F04\"] = \"\\u4E59\";\n  t[\"\\u2F05\"] = \"\\u4E85\";\n  t[\"\\u2F06\"] = \"\\u4E8C\";\n  t[\"\\u2F07\"] = \"\\u4EA0\";\n  t[\"\\u2F08\"] = \"\\u4EBA\";\n  t[\"\\u2F09\"] = \"\\u513F\";\n  t[\"\\u2F0A\"] = \"\\u5165\";\n  t[\"\\u2F0B\"] = \"\\u516B\";\n  t[\"\\u2F0C\"] = \"\\u5182\";\n  t[\"\\u2F0D\"] = \"\\u5196\";\n  t[\"\\u2F0E\"] = \"\\u51AB\";\n  t[\"\\u2F0F\"] = \"\\u51E0\";\n  t[\"\\u2F10\"] = \"\\u51F5\";\n  t[\"\\u2F11\"] = \"\\u5200\";\n  t[\"\\u2F12\"] = \"\\u529B\";\n  t[\"\\u2F13\"] = \"\\u52F9\";\n  t[\"\\u2F14\"] = \"\\u5315\";\n  t[\"\\u2F15\"] = \"\\u531A\";\n  t[\"\\u2F16\"] = \"\\u5338\";\n  t[\"\\u2F17\"] = \"\\u5341\";\n  t[\"\\u2F18\"] = \"\\u535C\";\n  t[\"\\u2F19\"] = \"\\u5369\";\n  t[\"\\u2F1A\"] = \"\\u5382\";\n  t[\"\\u2F1B\"] = \"\\u53B6\";\n  t[\"\\u2F1C\"] = \"\\u53C8\";\n  t[\"\\u2F1D\"] = \"\\u53E3\";\n  t[\"\\u2F1E\"] = \"\\u56D7\";\n  t[\"\\u2F1F\"] = \"\\u571F\";\n  t[\"\\u2F20\"] = \"\\u58EB\";\n  t[\"\\u2F21\"] = \"\\u5902\";\n  t[\"\\u2F22\"] = \"\\u590A\";\n  t[\"\\u2F23\"] = \"\\u5915\";\n  t[\"\\u2F24\"] = \"\\u5927\";\n  t[\"\\u2F25\"] = \"\\u5973\";\n  t[\"\\u2F26\"] = \"\\u5B50\";\n  t[\"\\u2F27\"] = \"\\u5B80\";\n  t[\"\\u2F28\"] = \"\\u5BF8\";\n  t[\"\\u2F29\"] = \"\\u5C0F\";\n  t[\"\\u2F2A\"] = \"\\u5C22\";\n  t[\"\\u2F2B\"] = \"\\u5C38\";\n  t[\"\\u2F2C\"] = \"\\u5C6E\";\n  t[\"\\u2F2D\"] = \"\\u5C71\";\n  t[\"\\u2F2E\"] = \"\\u5DDB\";\n  t[\"\\u2F2F\"] = \"\\u5DE5\";\n  t[\"\\u2F30\"] = \"\\u5DF1\";\n  t[\"\\u2F31\"] = \"\\u5DFE\";\n  t[\"\\u2F32\"] = \"\\u5E72\";\n  t[\"\\u2F33\"] = \"\\u5E7A\";\n  t[\"\\u2F34\"] = \"\\u5E7F\";\n  t[\"\\u2F35\"] = \"\\u5EF4\";\n  t[\"\\u2F36\"] = \"\\u5EFE\";\n  t[\"\\u2F37\"] = \"\\u5F0B\";\n  t[\"\\u2F38\"] = \"\\u5F13\";\n  t[\"\\u2F39\"] = \"\\u5F50\";\n  t[\"\\u2F3A\"] = \"\\u5F61\";\n  t[\"\\u2F3B\"] = \"\\u5F73\";\n  t[\"\\u2F3C\"] = \"\\u5FC3\";\n  t[\"\\u2F3D\"] = \"\\u6208\";\n  t[\"\\u2F3E\"] = \"\\u6236\";\n  t[\"\\u2F3F\"] = \"\\u624B\";\n  t[\"\\u2F40\"] = \"\\u652F\";\n  t[\"\\u2F41\"] = \"\\u6534\";\n  t[\"\\u2F42\"] = \"\\u6587\";\n  t[\"\\u2F43\"] = \"\\u6597\";\n  t[\"\\u2F44\"] = \"\\u65A4\";\n  t[\"\\u2F45\"] = \"\\u65B9\";\n  t[\"\\u2F46\"] = \"\\u65E0\";\n  t[\"\\u2F47\"] = \"\\u65E5\";\n  t[\"\\u2F48\"] = \"\\u66F0\";\n  t[\"\\u2F49\"] = \"\\u6708\";\n  t[\"\\u2F4A\"] = \"\\u6728\";\n  t[\"\\u2F4B\"] = \"\\u6B20\";\n  t[\"\\u2F4C\"] = \"\\u6B62\";\n  t[\"\\u2F4D\"] = \"\\u6B79\";\n  t[\"\\u2F4E\"] = \"\\u6BB3\";\n  t[\"\\u2F4F\"] = \"\\u6BCB\";\n  t[\"\\u2F50\"] = \"\\u6BD4\";\n  t[\"\\u2F51\"] = \"\\u6BDB\";\n  t[\"\\u2F52\"] = \"\\u6C0F\";\n  t[\"\\u2F53\"] = \"\\u6C14\";\n  t[\"\\u2F54\"] = \"\\u6C34\";\n  t[\"\\u2F55\"] = \"\\u706B\";\n  t[\"\\u2F56\"] = \"\\u722A\";\n  t[\"\\u2F57\"] = \"\\u7236\";\n  t[\"\\u2F58\"] = \"\\u723B\";\n  t[\"\\u2F59\"] = \"\\u723F\";\n  t[\"\\u2F5A\"] = \"\\u7247\";\n  t[\"\\u2F5B\"] = \"\\u7259\";\n  t[\"\\u2F5C\"] = \"\\u725B\";\n  t[\"\\u2F5D\"] = \"\\u72AC\";\n  t[\"\\u2F5E\"] = \"\\u7384\";\n  t[\"\\u2F5F\"] = \"\\u7389\";\n  t[\"\\u2F60\"] = \"\\u74DC\";\n  t[\"\\u2F61\"] = \"\\u74E6\";\n  t[\"\\u2F62\"] = \"\\u7518\";\n  t[\"\\u2F63\"] = \"\\u751F\";\n  t[\"\\u2F64\"] = \"\\u7528\";\n  t[\"\\u2F65\"] = \"\\u7530\";\n  t[\"\\u2F66\"] = \"\\u758B\";\n  t[\"\\u2F67\"] = \"\\u7592\";\n  t[\"\\u2F68\"] = \"\\u7676\";\n  t[\"\\u2F69\"] = \"\\u767D\";\n  t[\"\\u2F6A\"] = \"\\u76AE\";\n  t[\"\\u2F6B\"] = \"\\u76BF\";\n  t[\"\\u2F6C\"] = \"\\u76EE\";\n  t[\"\\u2F6D\"] = \"\\u77DB\";\n  t[\"\\u2F6E\"] = \"\\u77E2\";\n  t[\"\\u2F6F\"] = \"\\u77F3\";\n  t[\"\\u2F70\"] = \"\\u793A\";\n  t[\"\\u2F71\"] = \"\\u79B8\";\n  t[\"\\u2F72\"] = \"\\u79BE\";\n  t[\"\\u2F73\"] = \"\\u7A74\";\n  t[\"\\u2F74\"] = \"\\u7ACB\";\n  t[\"\\u2F75\"] = \"\\u7AF9\";\n  t[\"\\u2F76\"] = \"\\u7C73\";\n  t[\"\\u2F77\"] = \"\\u7CF8\";\n  t[\"\\u2F78\"] = \"\\u7F36\";\n  t[\"\\u2F79\"] = \"\\u7F51\";\n  t[\"\\u2F7A\"] = \"\\u7F8A\";\n  t[\"\\u2F7B\"] = \"\\u7FBD\";\n  t[\"\\u2F7C\"] = \"\\u8001\";\n  t[\"\\u2F7D\"] = \"\\u800C\";\n  t[\"\\u2F7E\"] = \"\\u8012\";\n  t[\"\\u2F7F\"] = \"\\u8033\";\n  t[\"\\u2F80\"] = \"\\u807F\";\n  t[\"\\u2F81\"] = \"\\u8089\";\n  t[\"\\u2F82\"] = \"\\u81E3\";\n  t[\"\\u2F83\"] = \"\\u81EA\";\n  t[\"\\u2F84\"] = \"\\u81F3\";\n  t[\"\\u2F85\"] = \"\\u81FC\";\n  t[\"\\u2F86\"] = \"\\u820C\";\n  t[\"\\u2F87\"] = \"\\u821B\";\n  t[\"\\u2F88\"] = \"\\u821F\";\n  t[\"\\u2F89\"] = \"\\u826E\";\n  t[\"\\u2F8A\"] = \"\\u8272\";\n  t[\"\\u2F8B\"] = \"\\u8278\";\n  t[\"\\u2F8C\"] = \"\\u864D\";\n  t[\"\\u2F8D\"] = \"\\u866B\";\n  t[\"\\u2F8E\"] = \"\\u8840\";\n  t[\"\\u2F8F\"] = \"\\u884C\";\n  t[\"\\u2F90\"] = \"\\u8863\";\n  t[\"\\u2F91\"] = \"\\u897E\";\n  t[\"\\u2F92\"] = \"\\u898B\";\n  t[\"\\u2F93\"] = \"\\u89D2\";\n  t[\"\\u2F94\"] = \"\\u8A00\";\n  t[\"\\u2F95\"] = \"\\u8C37\";\n  t[\"\\u2F96\"] = \"\\u8C46\";\n  t[\"\\u2F97\"] = \"\\u8C55\";\n  t[\"\\u2F98\"] = \"\\u8C78\";\n  t[\"\\u2F99\"] = \"\\u8C9D\";\n  t[\"\\u2F9A\"] = \"\\u8D64\";\n  t[\"\\u2F9B\"] = \"\\u8D70\";\n  t[\"\\u2F9C\"] = \"\\u8DB3\";\n  t[\"\\u2F9D\"] = \"\\u8EAB\";\n  t[\"\\u2F9E\"] = \"\\u8ECA\";\n  t[\"\\u2F9F\"] = \"\\u8F9B\";\n  t[\"\\u2FA0\"] = \"\\u8FB0\";\n  t[\"\\u2FA1\"] = \"\\u8FB5\";\n  t[\"\\u2FA2\"] = \"\\u9091\";\n  t[\"\\u2FA3\"] = \"\\u9149\";\n  t[\"\\u2FA4\"] = \"\\u91C6\";\n  t[\"\\u2FA5\"] = \"\\u91CC\";\n  t[\"\\u2FA6\"] = \"\\u91D1\";\n  t[\"\\u2FA7\"] = \"\\u9577\";\n  t[\"\\u2FA8\"] = \"\\u9580\";\n  t[\"\\u2FA9\"] = \"\\u961C\";\n  t[\"\\u2FAA\"] = \"\\u96B6\";\n  t[\"\\u2FAB\"] = \"\\u96B9\";\n  t[\"\\u2FAC\"] = \"\\u96E8\";\n  t[\"\\u2FAD\"] = \"\\u9751\";\n  t[\"\\u2FAE\"] = \"\\u975E\";\n  t[\"\\u2FAF\"] = \"\\u9762\";\n  t[\"\\u2FB0\"] = \"\\u9769\";\n  t[\"\\u2FB1\"] = \"\\u97CB\";\n  t[\"\\u2FB2\"] = \"\\u97ED\";\n  t[\"\\u2FB3\"] = \"\\u97F3\";\n  t[\"\\u2FB4\"] = \"\\u9801\";\n  t[\"\\u2FB5\"] = \"\\u98A8\";\n  t[\"\\u2FB6\"] = \"\\u98DB\";\n  t[\"\\u2FB7\"] = \"\\u98DF\";\n  t[\"\\u2FB8\"] = \"\\u9996\";\n  t[\"\\u2FB9\"] = \"\\u9999\";\n  t[\"\\u2FBA\"] = \"\\u99AC\";\n  t[\"\\u2FBB\"] = \"\\u9AA8\";\n  t[\"\\u2FBC\"] = \"\\u9AD8\";\n  t[\"\\u2FBD\"] = \"\\u9ADF\";\n  t[\"\\u2FBE\"] = \"\\u9B25\";\n  t[\"\\u2FBF\"] = \"\\u9B2F\";\n  t[\"\\u2FC0\"] = \"\\u9B32\";\n  t[\"\\u2FC1\"] = \"\\u9B3C\";\n  t[\"\\u2FC2\"] = \"\\u9B5A\";\n  t[\"\\u2FC3\"] = \"\\u9CE5\";\n  t[\"\\u2FC4\"] = \"\\u9E75\";\n  t[\"\\u2FC5\"] = \"\\u9E7F\";\n  t[\"\\u2FC6\"] = \"\\u9EA5\";\n  t[\"\\u2FC7\"] = \"\\u9EBB\";\n  t[\"\\u2FC8\"] = \"\\u9EC3\";\n  t[\"\\u2FC9\"] = \"\\u9ECD\";\n  t[\"\\u2FCA\"] = \"\\u9ED1\";\n  t[\"\\u2FCB\"] = \"\\u9EF9\";\n  t[\"\\u2FCC\"] = \"\\u9EFD\";\n  t[\"\\u2FCD\"] = \"\\u9F0E\";\n  t[\"\\u2FCE\"] = \"\\u9F13\";\n  t[\"\\u2FCF\"] = \"\\u9F20\";\n  t[\"\\u2FD0\"] = \"\\u9F3B\";\n  t[\"\\u2FD1\"] = \"\\u9F4A\";\n  t[\"\\u2FD2\"] = \"\\u9F52\";\n  t[\"\\u2FD3\"] = \"\\u9F8D\";\n  t[\"\\u2FD4\"] = \"\\u9F9C\";\n  t[\"\\u2FD5\"] = \"\\u9FA0\";\n  t[\"\\u3036\"] = \"\\u3012\";\n  t[\"\\u3038\"] = \"\\u5341\";\n  t[\"\\u3039\"] = \"\\u5344\";\n  t[\"\\u303A\"] = \"\\u5345\";\n  t[\"\\u309B\"] = \"\\u0020\\u3099\";\n  t[\"\\u309C\"] = \"\\u0020\\u309A\";\n  t[\"\\u3131\"] = \"\\u1100\";\n  t[\"\\u3132\"] = \"\\u1101\";\n  t[\"\\u3133\"] = \"\\u11AA\";\n  t[\"\\u3134\"] = \"\\u1102\";\n  t[\"\\u3135\"] = \"\\u11AC\";\n  t[\"\\u3136\"] = \"\\u11AD\";\n  t[\"\\u3137\"] = \"\\u1103\";\n  t[\"\\u3138\"] = \"\\u1104\";\n  t[\"\\u3139\"] = \"\\u1105\";\n  t[\"\\u313A\"] = \"\\u11B0\";\n  t[\"\\u313B\"] = \"\\u11B1\";\n  t[\"\\u313C\"] = \"\\u11B2\";\n  t[\"\\u313D\"] = \"\\u11B3\";\n  t[\"\\u313E\"] = \"\\u11B4\";\n  t[\"\\u313F\"] = \"\\u11B5\";\n  t[\"\\u3140\"] = \"\\u111A\";\n  t[\"\\u3141\"] = \"\\u1106\";\n  t[\"\\u3142\"] = \"\\u1107\";\n  t[\"\\u3143\"] = \"\\u1108\";\n  t[\"\\u3144\"] = \"\\u1121\";\n  t[\"\\u3145\"] = \"\\u1109\";\n  t[\"\\u3146\"] = \"\\u110A\";\n  t[\"\\u3147\"] = \"\\u110B\";\n  t[\"\\u3148\"] = \"\\u110C\";\n  t[\"\\u3149\"] = \"\\u110D\";\n  t[\"\\u314A\"] = \"\\u110E\";\n  t[\"\\u314B\"] = \"\\u110F\";\n  t[\"\\u314C\"] = \"\\u1110\";\n  t[\"\\u314D\"] = \"\\u1111\";\n  t[\"\\u314E\"] = \"\\u1112\";\n  t[\"\\u314F\"] = \"\\u1161\";\n  t[\"\\u3150\"] = \"\\u1162\";\n  t[\"\\u3151\"] = \"\\u1163\";\n  t[\"\\u3152\"] = \"\\u1164\";\n  t[\"\\u3153\"] = \"\\u1165\";\n  t[\"\\u3154\"] = \"\\u1166\";\n  t[\"\\u3155\"] = \"\\u1167\";\n  t[\"\\u3156\"] = \"\\u1168\";\n  t[\"\\u3157\"] = \"\\u1169\";\n  t[\"\\u3158\"] = \"\\u116A\";\n  t[\"\\u3159\"] = \"\\u116B\";\n  t[\"\\u315A\"] = \"\\u116C\";\n  t[\"\\u315B\"] = \"\\u116D\";\n  t[\"\\u315C\"] = \"\\u116E\";\n  t[\"\\u315D\"] = \"\\u116F\";\n  t[\"\\u315E\"] = \"\\u1170\";\n  t[\"\\u315F\"] = \"\\u1171\";\n  t[\"\\u3160\"] = \"\\u1172\";\n  t[\"\\u3161\"] = \"\\u1173\";\n  t[\"\\u3162\"] = \"\\u1174\";\n  t[\"\\u3163\"] = \"\\u1175\";\n  t[\"\\u3164\"] = \"\\u1160\";\n  t[\"\\u3165\"] = \"\\u1114\";\n  t[\"\\u3166\"] = \"\\u1115\";\n  t[\"\\u3167\"] = \"\\u11C7\";\n  t[\"\\u3168\"] = \"\\u11C8\";\n  t[\"\\u3169\"] = \"\\u11CC\";\n  t[\"\\u316A\"] = \"\\u11CE\";\n  t[\"\\u316B\"] = \"\\u11D3\";\n  t[\"\\u316C\"] = \"\\u11D7\";\n  t[\"\\u316D\"] = \"\\u11D9\";\n  t[\"\\u316E\"] = \"\\u111C\";\n  t[\"\\u316F\"] = \"\\u11DD\";\n  t[\"\\u3170\"] = \"\\u11DF\";\n  t[\"\\u3171\"] = \"\\u111D\";\n  t[\"\\u3172\"] = \"\\u111E\";\n  t[\"\\u3173\"] = \"\\u1120\";\n  t[\"\\u3174\"] = \"\\u1122\";\n  t[\"\\u3175\"] = \"\\u1123\";\n  t[\"\\u3176\"] = \"\\u1127\";\n  t[\"\\u3177\"] = \"\\u1129\";\n  t[\"\\u3178\"] = \"\\u112B\";\n  t[\"\\u3179\"] = \"\\u112C\";\n  t[\"\\u317A\"] = \"\\u112D\";\n  t[\"\\u317B\"] = \"\\u112E\";\n  t[\"\\u317C\"] = \"\\u112F\";\n  t[\"\\u317D\"] = \"\\u1132\";\n  t[\"\\u317E\"] = \"\\u1136\";\n  t[\"\\u317F\"] = \"\\u1140\";\n  t[\"\\u3180\"] = \"\\u1147\";\n  t[\"\\u3181\"] = \"\\u114C\";\n  t[\"\\u3182\"] = \"\\u11F1\";\n  t[\"\\u3183\"] = \"\\u11F2\";\n  t[\"\\u3184\"] = \"\\u1157\";\n  t[\"\\u3185\"] = \"\\u1158\";\n  t[\"\\u3186\"] = \"\\u1159\";\n  t[\"\\u3187\"] = \"\\u1184\";\n  t[\"\\u3188\"] = \"\\u1185\";\n  t[\"\\u3189\"] = \"\\u1188\";\n  t[\"\\u318A\"] = \"\\u1191\";\n  t[\"\\u318B\"] = \"\\u1192\";\n  t[\"\\u318C\"] = \"\\u1194\";\n  t[\"\\u318D\"] = \"\\u119E\";\n  t[\"\\u318E\"] = \"\\u11A1\";\n  t[\"\\u3200\"] = \"\\u0028\\u1100\\u0029\";\n  t[\"\\u3201\"] = \"\\u0028\\u1102\\u0029\";\n  t[\"\\u3202\"] = \"\\u0028\\u1103\\u0029\";\n  t[\"\\u3203\"] = \"\\u0028\\u1105\\u0029\";\n  t[\"\\u3204\"] = \"\\u0028\\u1106\\u0029\";\n  t[\"\\u3205\"] = \"\\u0028\\u1107\\u0029\";\n  t[\"\\u3206\"] = \"\\u0028\\u1109\\u0029\";\n  t[\"\\u3207\"] = \"\\u0028\\u110B\\u0029\";\n  t[\"\\u3208\"] = \"\\u0028\\u110C\\u0029\";\n  t[\"\\u3209\"] = \"\\u0028\\u110E\\u0029\";\n  t[\"\\u320A\"] = \"\\u0028\\u110F\\u0029\";\n  t[\"\\u320B\"] = \"\\u0028\\u1110\\u0029\";\n  t[\"\\u320C\"] = \"\\u0028\\u1111\\u0029\";\n  t[\"\\u320D\"] = \"\\u0028\\u1112\\u0029\";\n  t[\"\\u320E\"] = \"\\u0028\\u1100\\u1161\\u0029\";\n  t[\"\\u320F\"] = \"\\u0028\\u1102\\u1161\\u0029\";\n  t[\"\\u3210\"] = \"\\u0028\\u1103\\u1161\\u0029\";\n  t[\"\\u3211\"] = \"\\u0028\\u1105\\u1161\\u0029\";\n  t[\"\\u3212\"] = \"\\u0028\\u1106\\u1161\\u0029\";\n  t[\"\\u3213\"] = \"\\u0028\\u1107\\u1161\\u0029\";\n  t[\"\\u3214\"] = \"\\u0028\\u1109\\u1161\\u0029\";\n  t[\"\\u3215\"] = \"\\u0028\\u110B\\u1161\\u0029\";\n  t[\"\\u3216\"] = \"\\u0028\\u110C\\u1161\\u0029\";\n  t[\"\\u3217\"] = \"\\u0028\\u110E\\u1161\\u0029\";\n  t[\"\\u3218\"] = \"\\u0028\\u110F\\u1161\\u0029\";\n  t[\"\\u3219\"] = \"\\u0028\\u1110\\u1161\\u0029\";\n  t[\"\\u321A\"] = \"\\u0028\\u1111\\u1161\\u0029\";\n  t[\"\\u321B\"] = \"\\u0028\\u1112\\u1161\\u0029\";\n  t[\"\\u321C\"] = \"\\u0028\\u110C\\u116E\\u0029\";\n  t[\"\\u321D\"] = \"\\u0028\\u110B\\u1169\\u110C\\u1165\\u11AB\\u0029\";\n  t[\"\\u321E\"] = \"\\u0028\\u110B\\u1169\\u1112\\u116E\\u0029\";\n  t[\"\\u3220\"] = \"\\u0028\\u4E00\\u0029\";\n  t[\"\\u3221\"] = \"\\u0028\\u4E8C\\u0029\";\n  t[\"\\u3222\"] = \"\\u0028\\u4E09\\u0029\";\n  t[\"\\u3223\"] = \"\\u0028\\u56DB\\u0029\";\n  t[\"\\u3224\"] = \"\\u0028\\u4E94\\u0029\";\n  t[\"\\u3225\"] = \"\\u0028\\u516D\\u0029\";\n  t[\"\\u3226\"] = \"\\u0028\\u4E03\\u0029\";\n  t[\"\\u3227\"] = \"\\u0028\\u516B\\u0029\";\n  t[\"\\u3228\"] = \"\\u0028\\u4E5D\\u0029\";\n  t[\"\\u3229\"] = \"\\u0028\\u5341\\u0029\";\n  t[\"\\u322A\"] = \"\\u0028\\u6708\\u0029\";\n  t[\"\\u322B\"] = \"\\u0028\\u706B\\u0029\";\n  t[\"\\u322C\"] = \"\\u0028\\u6C34\\u0029\";\n  t[\"\\u322D\"] = \"\\u0028\\u6728\\u0029\";\n  t[\"\\u322E\"] = \"\\u0028\\u91D1\\u0029\";\n  t[\"\\u322F\"] = \"\\u0028\\u571F\\u0029\";\n  t[\"\\u3230\"] = \"\\u0028\\u65E5\\u0029\";\n  t[\"\\u3231\"] = \"\\u0028\\u682A\\u0029\";\n  t[\"\\u3232\"] = \"\\u0028\\u6709\\u0029\";\n  t[\"\\u3233\"] = \"\\u0028\\u793E\\u0029\";\n  t[\"\\u3234\"] = \"\\u0028\\u540D\\u0029\";\n  t[\"\\u3235\"] = \"\\u0028\\u7279\\u0029\";\n  t[\"\\u3236\"] = \"\\u0028\\u8CA1\\u0029\";\n  t[\"\\u3237\"] = \"\\u0028\\u795D\\u0029\";\n  t[\"\\u3238\"] = \"\\u0028\\u52B4\\u0029\";\n  t[\"\\u3239\"] = \"\\u0028\\u4EE3\\u0029\";\n  t[\"\\u323A\"] = \"\\u0028\\u547C\\u0029\";\n  t[\"\\u323B\"] = \"\\u0028\\u5B66\\u0029\";\n  t[\"\\u323C\"] = \"\\u0028\\u76E3\\u0029\";\n  t[\"\\u323D\"] = \"\\u0028\\u4F01\\u0029\";\n  t[\"\\u323E\"] = \"\\u0028\\u8CC7\\u0029\";\n  t[\"\\u323F\"] = \"\\u0028\\u5354\\u0029\";\n  t[\"\\u3240\"] = \"\\u0028\\u796D\\u0029\";\n  t[\"\\u3241\"] = \"\\u0028\\u4F11\\u0029\";\n  t[\"\\u3242\"] = \"\\u0028\\u81EA\\u0029\";\n  t[\"\\u3243\"] = \"\\u0028\\u81F3\\u0029\";\n  t[\"\\u32C0\"] = \"\\u0031\\u6708\";\n  t[\"\\u32C1\"] = \"\\u0032\\u6708\";\n  t[\"\\u32C2\"] = \"\\u0033\\u6708\";\n  t[\"\\u32C3\"] = \"\\u0034\\u6708\";\n  t[\"\\u32C4\"] = \"\\u0035\\u6708\";\n  t[\"\\u32C5\"] = \"\\u0036\\u6708\";\n  t[\"\\u32C6\"] = \"\\u0037\\u6708\";\n  t[\"\\u32C7\"] = \"\\u0038\\u6708\";\n  t[\"\\u32C8\"] = \"\\u0039\\u6708\";\n  t[\"\\u32C9\"] = \"\\u0031\\u0030\\u6708\";\n  t[\"\\u32CA\"] = \"\\u0031\\u0031\\u6708\";\n  t[\"\\u32CB\"] = \"\\u0031\\u0032\\u6708\";\n  t[\"\\u3358\"] = \"\\u0030\\u70B9\";\n  t[\"\\u3359\"] = \"\\u0031\\u70B9\";\n  t[\"\\u335A\"] = \"\\u0032\\u70B9\";\n  t[\"\\u335B\"] = \"\\u0033\\u70B9\";\n  t[\"\\u335C\"] = \"\\u0034\\u70B9\";\n  t[\"\\u335D\"] = \"\\u0035\\u70B9\";\n  t[\"\\u335E\"] = \"\\u0036\\u70B9\";\n  t[\"\\u335F\"] = \"\\u0037\\u70B9\";\n  t[\"\\u3360\"] = \"\\u0038\\u70B9\";\n  t[\"\\u3361\"] = \"\\u0039\\u70B9\";\n  t[\"\\u3362\"] = \"\\u0031\\u0030\\u70B9\";\n  t[\"\\u3363\"] = \"\\u0031\\u0031\\u70B9\";\n  t[\"\\u3364\"] = \"\\u0031\\u0032\\u70B9\";\n  t[\"\\u3365\"] = \"\\u0031\\u0033\\u70B9\";\n  t[\"\\u3366\"] = \"\\u0031\\u0034\\u70B9\";\n  t[\"\\u3367\"] = \"\\u0031\\u0035\\u70B9\";\n  t[\"\\u3368\"] = \"\\u0031\\u0036\\u70B9\";\n  t[\"\\u3369\"] = \"\\u0031\\u0037\\u70B9\";\n  t[\"\\u336A\"] = \"\\u0031\\u0038\\u70B9\";\n  t[\"\\u336B\"] = \"\\u0031\\u0039\\u70B9\";\n  t[\"\\u336C\"] = \"\\u0032\\u0030\\u70B9\";\n  t[\"\\u336D\"] = \"\\u0032\\u0031\\u70B9\";\n  t[\"\\u336E\"] = \"\\u0032\\u0032\\u70B9\";\n  t[\"\\u336F\"] = \"\\u0032\\u0033\\u70B9\";\n  t[\"\\u3370\"] = \"\\u0032\\u0034\\u70B9\";\n  t[\"\\u33E0\"] = \"\\u0031\\u65E5\";\n  t[\"\\u33E1\"] = \"\\u0032\\u65E5\";\n  t[\"\\u33E2\"] = \"\\u0033\\u65E5\";\n  t[\"\\u33E3\"] = \"\\u0034\\u65E5\";\n  t[\"\\u33E4\"] = \"\\u0035\\u65E5\";\n  t[\"\\u33E5\"] = \"\\u0036\\u65E5\";\n  t[\"\\u33E6\"] = \"\\u0037\\u65E5\";\n  t[\"\\u33E7\"] = \"\\u0038\\u65E5\";\n  t[\"\\u33E8\"] = \"\\u0039\\u65E5\";\n  t[\"\\u33E9\"] = \"\\u0031\\u0030\\u65E5\";\n  t[\"\\u33EA\"] = \"\\u0031\\u0031\\u65E5\";\n  t[\"\\u33EB\"] = \"\\u0031\\u0032\\u65E5\";\n  t[\"\\u33EC\"] = \"\\u0031\\u0033\\u65E5\";\n  t[\"\\u33ED\"] = \"\\u0031\\u0034\\u65E5\";\n  t[\"\\u33EE\"] = \"\\u0031\\u0035\\u65E5\";\n  t[\"\\u33EF\"] = \"\\u0031\\u0036\\u65E5\";\n  t[\"\\u33F0\"] = \"\\u0031\\u0037\\u65E5\";\n  t[\"\\u33F1\"] = \"\\u0031\\u0038\\u65E5\";\n  t[\"\\u33F2\"] = \"\\u0031\\u0039\\u65E5\";\n  t[\"\\u33F3\"] = \"\\u0032\\u0030\\u65E5\";\n  t[\"\\u33F4\"] = \"\\u0032\\u0031\\u65E5\";\n  t[\"\\u33F5\"] = \"\\u0032\\u0032\\u65E5\";\n  t[\"\\u33F6\"] = \"\\u0032\\u0033\\u65E5\";\n  t[\"\\u33F7\"] = \"\\u0032\\u0034\\u65E5\";\n  t[\"\\u33F8\"] = \"\\u0032\\u0035\\u65E5\";\n  t[\"\\u33F9\"] = \"\\u0032\\u0036\\u65E5\";\n  t[\"\\u33FA\"] = \"\\u0032\\u0037\\u65E5\";\n  t[\"\\u33FB\"] = \"\\u0032\\u0038\\u65E5\";\n  t[\"\\u33FC\"] = \"\\u0032\\u0039\\u65E5\";\n  t[\"\\u33FD\"] = \"\\u0033\\u0030\\u65E5\";\n  t[\"\\u33FE\"] = \"\\u0033\\u0031\\u65E5\";\n  t[\"\\uFB00\"] = \"\\u0066\\u0066\";\n  t[\"\\uFB01\"] = \"\\u0066\\u0069\";\n  t[\"\\uFB02\"] = \"\\u0066\\u006C\";\n  t[\"\\uFB03\"] = \"\\u0066\\u0066\\u0069\";\n  t[\"\\uFB04\"] = \"\\u0066\\u0066\\u006C\";\n  t[\"\\uFB05\"] = \"\\u017F\\u0074\";\n  t[\"\\uFB06\"] = \"\\u0073\\u0074\";\n  t[\"\\uFB13\"] = \"\\u0574\\u0576\";\n  t[\"\\uFB14\"] = \"\\u0574\\u0565\";\n  t[\"\\uFB15\"] = \"\\u0574\\u056B\";\n  t[\"\\uFB16\"] = \"\\u057E\\u0576\";\n  t[\"\\uFB17\"] = \"\\u0574\\u056D\";\n  t[\"\\uFB4F\"] = \"\\u05D0\\u05DC\";\n  t[\"\\uFB50\"] = \"\\u0671\";\n  t[\"\\uFB51\"] = \"\\u0671\";\n  t[\"\\uFB52\"] = \"\\u067B\";\n  t[\"\\uFB53\"] = \"\\u067B\";\n  t[\"\\uFB54\"] = \"\\u067B\";\n  t[\"\\uFB55\"] = \"\\u067B\";\n  t[\"\\uFB56\"] = \"\\u067E\";\n  t[\"\\uFB57\"] = \"\\u067E\";\n  t[\"\\uFB58\"] = \"\\u067E\";\n  t[\"\\uFB59\"] = \"\\u067E\";\n  t[\"\\uFB5A\"] = \"\\u0680\";\n  t[\"\\uFB5B\"] = \"\\u0680\";\n  t[\"\\uFB5C\"] = \"\\u0680\";\n  t[\"\\uFB5D\"] = \"\\u0680\";\n  t[\"\\uFB5E\"] = \"\\u067A\";\n  t[\"\\uFB5F\"] = \"\\u067A\";\n  t[\"\\uFB60\"] = \"\\u067A\";\n  t[\"\\uFB61\"] = \"\\u067A\";\n  t[\"\\uFB62\"] = \"\\u067F\";\n  t[\"\\uFB63\"] = \"\\u067F\";\n  t[\"\\uFB64\"] = \"\\u067F\";\n  t[\"\\uFB65\"] = \"\\u067F\";\n  t[\"\\uFB66\"] = \"\\u0679\";\n  t[\"\\uFB67\"] = \"\\u0679\";\n  t[\"\\uFB68\"] = \"\\u0679\";\n  t[\"\\uFB69\"] = \"\\u0679\";\n  t[\"\\uFB6A\"] = \"\\u06A4\";\n  t[\"\\uFB6B\"] = \"\\u06A4\";\n  t[\"\\uFB6C\"] = \"\\u06A4\";\n  t[\"\\uFB6D\"] = \"\\u06A4\";\n  t[\"\\uFB6E\"] = \"\\u06A6\";\n  t[\"\\uFB6F\"] = \"\\u06A6\";\n  t[\"\\uFB70\"] = \"\\u06A6\";\n  t[\"\\uFB71\"] = \"\\u06A6\";\n  t[\"\\uFB72\"] = \"\\u0684\";\n  t[\"\\uFB73\"] = \"\\u0684\";\n  t[\"\\uFB74\"] = \"\\u0684\";\n  t[\"\\uFB75\"] = \"\\u0684\";\n  t[\"\\uFB76\"] = \"\\u0683\";\n  t[\"\\uFB77\"] = \"\\u0683\";\n  t[\"\\uFB78\"] = \"\\u0683\";\n  t[\"\\uFB79\"] = \"\\u0683\";\n  t[\"\\uFB7A\"] = \"\\u0686\";\n  t[\"\\uFB7B\"] = \"\\u0686\";\n  t[\"\\uFB7C\"] = \"\\u0686\";\n  t[\"\\uFB7D\"] = \"\\u0686\";\n  t[\"\\uFB7E\"] = \"\\u0687\";\n  t[\"\\uFB7F\"] = \"\\u0687\";\n  t[\"\\uFB80\"] = \"\\u0687\";\n  t[\"\\uFB81\"] = \"\\u0687\";\n  t[\"\\uFB82\"] = \"\\u068D\";\n  t[\"\\uFB83\"] = \"\\u068D\";\n  t[\"\\uFB84\"] = \"\\u068C\";\n  t[\"\\uFB85\"] = \"\\u068C\";\n  t[\"\\uFB86\"] = \"\\u068E\";\n  t[\"\\uFB87\"] = \"\\u068E\";\n  t[\"\\uFB88\"] = \"\\u0688\";\n  t[\"\\uFB89\"] = \"\\u0688\";\n  t[\"\\uFB8A\"] = \"\\u0698\";\n  t[\"\\uFB8B\"] = \"\\u0698\";\n  t[\"\\uFB8C\"] = \"\\u0691\";\n  t[\"\\uFB8D\"] = \"\\u0691\";\n  t[\"\\uFB8E\"] = \"\\u06A9\";\n  t[\"\\uFB8F\"] = \"\\u06A9\";\n  t[\"\\uFB90\"] = \"\\u06A9\";\n  t[\"\\uFB91\"] = \"\\u06A9\";\n  t[\"\\uFB92\"] = \"\\u06AF\";\n  t[\"\\uFB93\"] = \"\\u06AF\";\n  t[\"\\uFB94\"] = \"\\u06AF\";\n  t[\"\\uFB95\"] = \"\\u06AF\";\n  t[\"\\uFB96\"] = \"\\u06B3\";\n  t[\"\\uFB97\"] = \"\\u06B3\";\n  t[\"\\uFB98\"] = \"\\u06B3\";\n  t[\"\\uFB99\"] = \"\\u06B3\";\n  t[\"\\uFB9A\"] = \"\\u06B1\";\n  t[\"\\uFB9B\"] = \"\\u06B1\";\n  t[\"\\uFB9C\"] = \"\\u06B1\";\n  t[\"\\uFB9D\"] = \"\\u06B1\";\n  t[\"\\uFB9E\"] = \"\\u06BA\";\n  t[\"\\uFB9F\"] = \"\\u06BA\";\n  t[\"\\uFBA0\"] = \"\\u06BB\";\n  t[\"\\uFBA1\"] = \"\\u06BB\";\n  t[\"\\uFBA2\"] = \"\\u06BB\";\n  t[\"\\uFBA3\"] = \"\\u06BB\";\n  t[\"\\uFBA4\"] = \"\\u06C0\";\n  t[\"\\uFBA5\"] = \"\\u06C0\";\n  t[\"\\uFBA6\"] = \"\\u06C1\";\n  t[\"\\uFBA7\"] = \"\\u06C1\";\n  t[\"\\uFBA8\"] = \"\\u06C1\";\n  t[\"\\uFBA9\"] = \"\\u06C1\";\n  t[\"\\uFBAA\"] = \"\\u06BE\";\n  t[\"\\uFBAB\"] = \"\\u06BE\";\n  t[\"\\uFBAC\"] = \"\\u06BE\";\n  t[\"\\uFBAD\"] = \"\\u06BE\";\n  t[\"\\uFBAE\"] = \"\\u06D2\";\n  t[\"\\uFBAF\"] = \"\\u06D2\";\n  t[\"\\uFBB0\"] = \"\\u06D3\";\n  t[\"\\uFBB1\"] = \"\\u06D3\";\n  t[\"\\uFBD3\"] = \"\\u06AD\";\n  t[\"\\uFBD4\"] = \"\\u06AD\";\n  t[\"\\uFBD5\"] = \"\\u06AD\";\n  t[\"\\uFBD6\"] = \"\\u06AD\";\n  t[\"\\uFBD7\"] = \"\\u06C7\";\n  t[\"\\uFBD8\"] = \"\\u06C7\";\n  t[\"\\uFBD9\"] = \"\\u06C6\";\n  t[\"\\uFBDA\"] = \"\\u06C6\";\n  t[\"\\uFBDB\"] = \"\\u06C8\";\n  t[\"\\uFBDC\"] = \"\\u06C8\";\n  t[\"\\uFBDD\"] = \"\\u0677\";\n  t[\"\\uFBDE\"] = \"\\u06CB\";\n  t[\"\\uFBDF\"] = \"\\u06CB\";\n  t[\"\\uFBE0\"] = \"\\u06C5\";\n  t[\"\\uFBE1\"] = \"\\u06C5\";\n  t[\"\\uFBE2\"] = \"\\u06C9\";\n  t[\"\\uFBE3\"] = \"\\u06C9\";\n  t[\"\\uFBE4\"] = \"\\u06D0\";\n  t[\"\\uFBE5\"] = \"\\u06D0\";\n  t[\"\\uFBE6\"] = \"\\u06D0\";\n  t[\"\\uFBE7\"] = \"\\u06D0\";\n  t[\"\\uFBE8\"] = \"\\u0649\";\n  t[\"\\uFBE9\"] = \"\\u0649\";\n  t[\"\\uFBEA\"] = \"\\u0626\\u0627\";\n  t[\"\\uFBEB\"] = \"\\u0626\\u0627\";\n  t[\"\\uFBEC\"] = \"\\u0626\\u06D5\";\n  t[\"\\uFBED\"] = \"\\u0626\\u06D5\";\n  t[\"\\uFBEE\"] = \"\\u0626\\u0648\";\n  t[\"\\uFBEF\"] = \"\\u0626\\u0648\";\n  t[\"\\uFBF0\"] = \"\\u0626\\u06C7\";\n  t[\"\\uFBF1\"] = \"\\u0626\\u06C7\";\n  t[\"\\uFBF2\"] = \"\\u0626\\u06C6\";\n  t[\"\\uFBF3\"] = \"\\u0626\\u06C6\";\n  t[\"\\uFBF4\"] = \"\\u0626\\u06C8\";\n  t[\"\\uFBF5\"] = \"\\u0626\\u06C8\";\n  t[\"\\uFBF6\"] = \"\\u0626\\u06D0\";\n  t[\"\\uFBF7\"] = \"\\u0626\\u06D0\";\n  t[\"\\uFBF8\"] = \"\\u0626\\u06D0\";\n  t[\"\\uFBF9\"] = \"\\u0626\\u0649\";\n  t[\"\\uFBFA\"] = \"\\u0626\\u0649\";\n  t[\"\\uFBFB\"] = \"\\u0626\\u0649\";\n  t[\"\\uFBFC\"] = \"\\u06CC\";\n  t[\"\\uFBFD\"] = \"\\u06CC\";\n  t[\"\\uFBFE\"] = \"\\u06CC\";\n  t[\"\\uFBFF\"] = \"\\u06CC\";\n  t[\"\\uFC00\"] = \"\\u0626\\u062C\";\n  t[\"\\uFC01\"] = \"\\u0626\\u062D\";\n  t[\"\\uFC02\"] = \"\\u0626\\u0645\";\n  t[\"\\uFC03\"] = \"\\u0626\\u0649\";\n  t[\"\\uFC04\"] = \"\\u0626\\u064A\";\n  t[\"\\uFC05\"] = \"\\u0628\\u062C\";\n  t[\"\\uFC06\"] = \"\\u0628\\u062D\";\n  t[\"\\uFC07\"] = \"\\u0628\\u062E\";\n  t[\"\\uFC08\"] = \"\\u0628\\u0645\";\n  t[\"\\uFC09\"] = \"\\u0628\\u0649\";\n  t[\"\\uFC0A\"] = \"\\u0628\\u064A\";\n  t[\"\\uFC0B\"] = \"\\u062A\\u062C\";\n  t[\"\\uFC0C\"] = \"\\u062A\\u062D\";\n  t[\"\\uFC0D\"] = \"\\u062A\\u062E\";\n  t[\"\\uFC0E\"] = \"\\u062A\\u0645\";\n  t[\"\\uFC0F\"] = \"\\u062A\\u0649\";\n  t[\"\\uFC10\"] = \"\\u062A\\u064A\";\n  t[\"\\uFC11\"] = \"\\u062B\\u062C\";\n  t[\"\\uFC12\"] = \"\\u062B\\u0645\";\n  t[\"\\uFC13\"] = \"\\u062B\\u0649\";\n  t[\"\\uFC14\"] = \"\\u062B\\u064A\";\n  t[\"\\uFC15\"] = \"\\u062C\\u062D\";\n  t[\"\\uFC16\"] = \"\\u062C\\u0645\";\n  t[\"\\uFC17\"] = \"\\u062D\\u062C\";\n  t[\"\\uFC18\"] = \"\\u062D\\u0645\";\n  t[\"\\uFC19\"] = \"\\u062E\\u062C\";\n  t[\"\\uFC1A\"] = \"\\u062E\\u062D\";\n  t[\"\\uFC1B\"] = \"\\u062E\\u0645\";\n  t[\"\\uFC1C\"] = \"\\u0633\\u062C\";\n  t[\"\\uFC1D\"] = \"\\u0633\\u062D\";\n  t[\"\\uFC1E\"] = \"\\u0633\\u062E\";\n  t[\"\\uFC1F\"] = \"\\u0633\\u0645\";\n  t[\"\\uFC20\"] = \"\\u0635\\u062D\";\n  t[\"\\uFC21\"] = \"\\u0635\\u0645\";\n  t[\"\\uFC22\"] = \"\\u0636\\u062C\";\n  t[\"\\uFC23\"] = \"\\u0636\\u062D\";\n  t[\"\\uFC24\"] = \"\\u0636\\u062E\";\n  t[\"\\uFC25\"] = \"\\u0636\\u0645\";\n  t[\"\\uFC26\"] = \"\\u0637\\u062D\";\n  t[\"\\uFC27\"] = \"\\u0637\\u0645\";\n  t[\"\\uFC28\"] = \"\\u0638\\u0645\";\n  t[\"\\uFC29\"] = \"\\u0639\\u062C\";\n  t[\"\\uFC2A\"] = \"\\u0639\\u0645\";\n  t[\"\\uFC2B\"] = \"\\u063A\\u062C\";\n  t[\"\\uFC2C\"] = \"\\u063A\\u0645\";\n  t[\"\\uFC2D\"] = \"\\u0641\\u062C\";\n  t[\"\\uFC2E\"] = \"\\u0641\\u062D\";\n  t[\"\\uFC2F\"] = \"\\u0641\\u062E\";\n  t[\"\\uFC30\"] = \"\\u0641\\u0645\";\n  t[\"\\uFC31\"] = \"\\u0641\\u0649\";\n  t[\"\\uFC32\"] = \"\\u0641\\u064A\";\n  t[\"\\uFC33\"] = \"\\u0642\\u062D\";\n  t[\"\\uFC34\"] = \"\\u0642\\u0645\";\n  t[\"\\uFC35\"] = \"\\u0642\\u0649\";\n  t[\"\\uFC36\"] = \"\\u0642\\u064A\";\n  t[\"\\uFC37\"] = \"\\u0643\\u0627\";\n  t[\"\\uFC38\"] = \"\\u0643\\u062C\";\n  t[\"\\uFC39\"] = \"\\u0643\\u062D\";\n  t[\"\\uFC3A\"] = \"\\u0643\\u062E\";\n  t[\"\\uFC3B\"] = \"\\u0643\\u0644\";\n  t[\"\\uFC3C\"] = \"\\u0643\\u0645\";\n  t[\"\\uFC3D\"] = \"\\u0643\\u0649\";\n  t[\"\\uFC3E\"] = \"\\u0643\\u064A\";\n  t[\"\\uFC3F\"] = \"\\u0644\\u062C\";\n  t[\"\\uFC40\"] = \"\\u0644\\u062D\";\n  t[\"\\uFC41\"] = \"\\u0644\\u062E\";\n  t[\"\\uFC42\"] = \"\\u0644\\u0645\";\n  t[\"\\uFC43\"] = \"\\u0644\\u0649\";\n  t[\"\\uFC44\"] = \"\\u0644\\u064A\";\n  t[\"\\uFC45\"] = \"\\u0645\\u062C\";\n  t[\"\\uFC46\"] = \"\\u0645\\u062D\";\n  t[\"\\uFC47\"] = \"\\u0645\\u062E\";\n  t[\"\\uFC48\"] = \"\\u0645\\u0645\";\n  t[\"\\uFC49\"] = \"\\u0645\\u0649\";\n  t[\"\\uFC4A\"] = \"\\u0645\\u064A\";\n  t[\"\\uFC4B\"] = \"\\u0646\\u062C\";\n  t[\"\\uFC4C\"] = \"\\u0646\\u062D\";\n  t[\"\\uFC4D\"] = \"\\u0646\\u062E\";\n  t[\"\\uFC4E\"] = \"\\u0646\\u0645\";\n  t[\"\\uFC4F\"] = \"\\u0646\\u0649\";\n  t[\"\\uFC50\"] = \"\\u0646\\u064A\";\n  t[\"\\uFC51\"] = \"\\u0647\\u062C\";\n  t[\"\\uFC52\"] = \"\\u0647\\u0645\";\n  t[\"\\uFC53\"] = \"\\u0647\\u0649\";\n  t[\"\\uFC54\"] = \"\\u0647\\u064A\";\n  t[\"\\uFC55\"] = \"\\u064A\\u062C\";\n  t[\"\\uFC56\"] = \"\\u064A\\u062D\";\n  t[\"\\uFC57\"] = \"\\u064A\\u062E\";\n  t[\"\\uFC58\"] = \"\\u064A\\u0645\";\n  t[\"\\uFC59\"] = \"\\u064A\\u0649\";\n  t[\"\\uFC5A\"] = \"\\u064A\\u064A\";\n  t[\"\\uFC5B\"] = \"\\u0630\\u0670\";\n  t[\"\\uFC5C\"] = \"\\u0631\\u0670\";\n  t[\"\\uFC5D\"] = \"\\u0649\\u0670\";\n  t[\"\\uFC5E\"] = \"\\u0020\\u064C\\u0651\";\n  t[\"\\uFC5F\"] = \"\\u0020\\u064D\\u0651\";\n  t[\"\\uFC60\"] = \"\\u0020\\u064E\\u0651\";\n  t[\"\\uFC61\"] = \"\\u0020\\u064F\\u0651\";\n  t[\"\\uFC62\"] = \"\\u0020\\u0650\\u0651\";\n  t[\"\\uFC63\"] = \"\\u0020\\u0651\\u0670\";\n  t[\"\\uFC64\"] = \"\\u0626\\u0631\";\n  t[\"\\uFC65\"] = \"\\u0626\\u0632\";\n  t[\"\\uFC66\"] = \"\\u0626\\u0645\";\n  t[\"\\uFC67\"] = \"\\u0626\\u0646\";\n  t[\"\\uFC68\"] = \"\\u0626\\u0649\";\n  t[\"\\uFC69\"] = \"\\u0626\\u064A\";\n  t[\"\\uFC6A\"] = \"\\u0628\\u0631\";\n  t[\"\\uFC6B\"] = \"\\u0628\\u0632\";\n  t[\"\\uFC6C\"] = \"\\u0628\\u0645\";\n  t[\"\\uFC6D\"] = \"\\u0628\\u0646\";\n  t[\"\\uFC6E\"] = \"\\u0628\\u0649\";\n  t[\"\\uFC6F\"] = \"\\u0628\\u064A\";\n  t[\"\\uFC70\"] = \"\\u062A\\u0631\";\n  t[\"\\uFC71\"] = \"\\u062A\\u0632\";\n  t[\"\\uFC72\"] = \"\\u062A\\u0645\";\n  t[\"\\uFC73\"] = \"\\u062A\\u0646\";\n  t[\"\\uFC74\"] = \"\\u062A\\u0649\";\n  t[\"\\uFC75\"] = \"\\u062A\\u064A\";\n  t[\"\\uFC76\"] = \"\\u062B\\u0631\";\n  t[\"\\uFC77\"] = \"\\u062B\\u0632\";\n  t[\"\\uFC78\"] = \"\\u062B\\u0645\";\n  t[\"\\uFC79\"] = \"\\u062B\\u0646\";\n  t[\"\\uFC7A\"] = \"\\u062B\\u0649\";\n  t[\"\\uFC7B\"] = \"\\u062B\\u064A\";\n  t[\"\\uFC7C\"] = \"\\u0641\\u0649\";\n  t[\"\\uFC7D\"] = \"\\u0641\\u064A\";\n  t[\"\\uFC7E\"] = \"\\u0642\\u0649\";\n  t[\"\\uFC7F\"] = \"\\u0642\\u064A\";\n  t[\"\\uFC80\"] = \"\\u0643\\u0627\";\n  t[\"\\uFC81\"] = \"\\u0643\\u0644\";\n  t[\"\\uFC82\"] = \"\\u0643\\u0645\";\n  t[\"\\uFC83\"] = \"\\u0643\\u0649\";\n  t[\"\\uFC84\"] = \"\\u0643\\u064A\";\n  t[\"\\uFC85\"] = \"\\u0644\\u0645\";\n  t[\"\\uFC86\"] = \"\\u0644\\u0649\";\n  t[\"\\uFC87\"] = \"\\u0644\\u064A\";\n  t[\"\\uFC88\"] = \"\\u0645\\u0627\";\n  t[\"\\uFC89\"] = \"\\u0645\\u0645\";\n  t[\"\\uFC8A\"] = \"\\u0646\\u0631\";\n  t[\"\\uFC8B\"] = \"\\u0646\\u0632\";\n  t[\"\\uFC8C\"] = \"\\u0646\\u0645\";\n  t[\"\\uFC8D\"] = \"\\u0646\\u0646\";\n  t[\"\\uFC8E\"] = \"\\u0646\\u0649\";\n  t[\"\\uFC8F\"] = \"\\u0646\\u064A\";\n  t[\"\\uFC90\"] = \"\\u0649\\u0670\";\n  t[\"\\uFC91\"] = \"\\u064A\\u0631\";\n  t[\"\\uFC92\"] = \"\\u064A\\u0632\";\n  t[\"\\uFC93\"] = \"\\u064A\\u0645\";\n  t[\"\\uFC94\"] = \"\\u064A\\u0646\";\n  t[\"\\uFC95\"] = \"\\u064A\\u0649\";\n  t[\"\\uFC96\"] = \"\\u064A\\u064A\";\n  t[\"\\uFC97\"] = \"\\u0626\\u062C\";\n  t[\"\\uFC98\"] = \"\\u0626\\u062D\";\n  t[\"\\uFC99\"] = \"\\u0626\\u062E\";\n  t[\"\\uFC9A\"] = \"\\u0626\\u0645\";\n  t[\"\\uFC9B\"] = \"\\u0626\\u0647\";\n  t[\"\\uFC9C\"] = \"\\u0628\\u062C\";\n  t[\"\\uFC9D\"] = \"\\u0628\\u062D\";\n  t[\"\\uFC9E\"] = \"\\u0628\\u062E\";\n  t[\"\\uFC9F\"] = \"\\u0628\\u0645\";\n  t[\"\\uFCA0\"] = \"\\u0628\\u0647\";\n  t[\"\\uFCA1\"] = \"\\u062A\\u062C\";\n  t[\"\\uFCA2\"] = \"\\u062A\\u062D\";\n  t[\"\\uFCA3\"] = \"\\u062A\\u062E\";\n  t[\"\\uFCA4\"] = \"\\u062A\\u0645\";\n  t[\"\\uFCA5\"] = \"\\u062A\\u0647\";\n  t[\"\\uFCA6\"] = \"\\u062B\\u0645\";\n  t[\"\\uFCA7\"] = \"\\u062C\\u062D\";\n  t[\"\\uFCA8\"] = \"\\u062C\\u0645\";\n  t[\"\\uFCA9\"] = \"\\u062D\\u062C\";\n  t[\"\\uFCAA\"] = \"\\u062D\\u0645\";\n  t[\"\\uFCAB\"] = \"\\u062E\\u062C\";\n  t[\"\\uFCAC\"] = \"\\u062E\\u0645\";\n  t[\"\\uFCAD\"] = \"\\u0633\\u062C\";\n  t[\"\\uFCAE\"] = \"\\u0633\\u062D\";\n  t[\"\\uFCAF\"] = \"\\u0633\\u062E\";\n  t[\"\\uFCB0\"] = \"\\u0633\\u0645\";\n  t[\"\\uFCB1\"] = \"\\u0635\\u062D\";\n  t[\"\\uFCB2\"] = \"\\u0635\\u062E\";\n  t[\"\\uFCB3\"] = \"\\u0635\\u0645\";\n  t[\"\\uFCB4\"] = \"\\u0636\\u062C\";\n  t[\"\\uFCB5\"] = \"\\u0636\\u062D\";\n  t[\"\\uFCB6\"] = \"\\u0636\\u062E\";\n  t[\"\\uFCB7\"] = \"\\u0636\\u0645\";\n  t[\"\\uFCB8\"] = \"\\u0637\\u062D\";\n  t[\"\\uFCB9\"] = \"\\u0638\\u0645\";\n  t[\"\\uFCBA\"] = \"\\u0639\\u062C\";\n  t[\"\\uFCBB\"] = \"\\u0639\\u0645\";\n  t[\"\\uFCBC\"] = \"\\u063A\\u062C\";\n  t[\"\\uFCBD\"] = \"\\u063A\\u0645\";\n  t[\"\\uFCBE\"] = \"\\u0641\\u062C\";\n  t[\"\\uFCBF\"] = \"\\u0641\\u062D\";\n  t[\"\\uFCC0\"] = \"\\u0641\\u062E\";\n  t[\"\\uFCC1\"] = \"\\u0641\\u0645\";\n  t[\"\\uFCC2\"] = \"\\u0642\\u062D\";\n  t[\"\\uFCC3\"] = \"\\u0642\\u0645\";\n  t[\"\\uFCC4\"] = \"\\u0643\\u062C\";\n  t[\"\\uFCC5\"] = \"\\u0643\\u062D\";\n  t[\"\\uFCC6\"] = \"\\u0643\\u062E\";\n  t[\"\\uFCC7\"] = \"\\u0643\\u0644\";\n  t[\"\\uFCC8\"] = \"\\u0643\\u0645\";\n  t[\"\\uFCC9\"] = \"\\u0644\\u062C\";\n  t[\"\\uFCCA\"] = \"\\u0644\\u062D\";\n  t[\"\\uFCCB\"] = \"\\u0644\\u062E\";\n  t[\"\\uFCCC\"] = \"\\u0644\\u0645\";\n  t[\"\\uFCCD\"] = \"\\u0644\\u0647\";\n  t[\"\\uFCCE\"] = \"\\u0645\\u062C\";\n  t[\"\\uFCCF\"] = \"\\u0645\\u062D\";\n  t[\"\\uFCD0\"] = \"\\u0645\\u062E\";\n  t[\"\\uFCD1\"] = \"\\u0645\\u0645\";\n  t[\"\\uFCD2\"] = \"\\u0646\\u062C\";\n  t[\"\\uFCD3\"] = \"\\u0646\\u062D\";\n  t[\"\\uFCD4\"] = \"\\u0646\\u062E\";\n  t[\"\\uFCD5\"] = \"\\u0646\\u0645\";\n  t[\"\\uFCD6\"] = \"\\u0646\\u0647\";\n  t[\"\\uFCD7\"] = \"\\u0647\\u062C\";\n  t[\"\\uFCD8\"] = \"\\u0647\\u0645\";\n  t[\"\\uFCD9\"] = \"\\u0647\\u0670\";\n  t[\"\\uFCDA\"] = \"\\u064A\\u062C\";\n  t[\"\\uFCDB\"] = \"\\u064A\\u062D\";\n  t[\"\\uFCDC\"] = \"\\u064A\\u062E\";\n  t[\"\\uFCDD\"] = \"\\u064A\\u0645\";\n  t[\"\\uFCDE\"] = \"\\u064A\\u0647\";\n  t[\"\\uFCDF\"] = \"\\u0626\\u0645\";\n  t[\"\\uFCE0\"] = \"\\u0626\\u0647\";\n  t[\"\\uFCE1\"] = \"\\u0628\\u0645\";\n  t[\"\\uFCE2\"] = \"\\u0628\\u0647\";\n  t[\"\\uFCE3\"] = \"\\u062A\\u0645\";\n  t[\"\\uFCE4\"] = \"\\u062A\\u0647\";\n  t[\"\\uFCE5\"] = \"\\u062B\\u0645\";\n  t[\"\\uFCE6\"] = \"\\u062B\\u0647\";\n  t[\"\\uFCE7\"] = \"\\u0633\\u0645\";\n  t[\"\\uFCE8\"] = \"\\u0633\\u0647\";\n  t[\"\\uFCE9\"] = \"\\u0634\\u0645\";\n  t[\"\\uFCEA\"] = \"\\u0634\\u0647\";\n  t[\"\\uFCEB\"] = \"\\u0643\\u0644\";\n  t[\"\\uFCEC\"] = \"\\u0643\\u0645\";\n  t[\"\\uFCED\"] = \"\\u0644\\u0645\";\n  t[\"\\uFCEE\"] = \"\\u0646\\u0645\";\n  t[\"\\uFCEF\"] = \"\\u0646\\u0647\";\n  t[\"\\uFCF0\"] = \"\\u064A\\u0645\";\n  t[\"\\uFCF1\"] = \"\\u064A\\u0647\";\n  t[\"\\uFCF2\"] = \"\\u0640\\u064E\\u0651\";\n  t[\"\\uFCF3\"] = \"\\u0640\\u064F\\u0651\";\n  t[\"\\uFCF4\"] = \"\\u0640\\u0650\\u0651\";\n  t[\"\\uFCF5\"] = \"\\u0637\\u0649\";\n  t[\"\\uFCF6\"] = \"\\u0637\\u064A\";\n  t[\"\\uFCF7\"] = \"\\u0639\\u0649\";\n  t[\"\\uFCF8\"] = \"\\u0639\\u064A\";\n  t[\"\\uFCF9\"] = \"\\u063A\\u0649\";\n  t[\"\\uFCFA\"] = \"\\u063A\\u064A\";\n  t[\"\\uFCFB\"] = \"\\u0633\\u0649\";\n  t[\"\\uFCFC\"] = \"\\u0633\\u064A\";\n  t[\"\\uFCFD\"] = \"\\u0634\\u0649\";\n  t[\"\\uFCFE\"] = \"\\u0634\\u064A\";\n  t[\"\\uFCFF\"] = \"\\u062D\\u0649\";\n  t[\"\\uFD00\"] = \"\\u062D\\u064A\";\n  t[\"\\uFD01\"] = \"\\u062C\\u0649\";\n  t[\"\\uFD02\"] = \"\\u062C\\u064A\";\n  t[\"\\uFD03\"] = \"\\u062E\\u0649\";\n  t[\"\\uFD04\"] = \"\\u062E\\u064A\";\n  t[\"\\uFD05\"] = \"\\u0635\\u0649\";\n  t[\"\\uFD06\"] = \"\\u0635\\u064A\";\n  t[\"\\uFD07\"] = \"\\u0636\\u0649\";\n  t[\"\\uFD08\"] = \"\\u0636\\u064A\";\n  t[\"\\uFD09\"] = \"\\u0634\\u062C\";\n  t[\"\\uFD0A\"] = \"\\u0634\\u062D\";\n  t[\"\\uFD0B\"] = \"\\u0634\\u062E\";\n  t[\"\\uFD0C\"] = \"\\u0634\\u0645\";\n  t[\"\\uFD0D\"] = \"\\u0634\\u0631\";\n  t[\"\\uFD0E\"] = \"\\u0633\\u0631\";\n  t[\"\\uFD0F\"] = \"\\u0635\\u0631\";\n  t[\"\\uFD10\"] = \"\\u0636\\u0631\";\n  t[\"\\uFD11\"] = \"\\u0637\\u0649\";\n  t[\"\\uFD12\"] = \"\\u0637\\u064A\";\n  t[\"\\uFD13\"] = \"\\u0639\\u0649\";\n  t[\"\\uFD14\"] = \"\\u0639\\u064A\";\n  t[\"\\uFD15\"] = \"\\u063A\\u0649\";\n  t[\"\\uFD16\"] = \"\\u063A\\u064A\";\n  t[\"\\uFD17\"] = \"\\u0633\\u0649\";\n  t[\"\\uFD18\"] = \"\\u0633\\u064A\";\n  t[\"\\uFD19\"] = \"\\u0634\\u0649\";\n  t[\"\\uFD1A\"] = \"\\u0634\\u064A\";\n  t[\"\\uFD1B\"] = \"\\u062D\\u0649\";\n  t[\"\\uFD1C\"] = \"\\u062D\\u064A\";\n  t[\"\\uFD1D\"] = \"\\u062C\\u0649\";\n  t[\"\\uFD1E\"] = \"\\u062C\\u064A\";\n  t[\"\\uFD1F\"] = \"\\u062E\\u0649\";\n  t[\"\\uFD20\"] = \"\\u062E\\u064A\";\n  t[\"\\uFD21\"] = \"\\u0635\\u0649\";\n  t[\"\\uFD22\"] = \"\\u0635\\u064A\";\n  t[\"\\uFD23\"] = \"\\u0636\\u0649\";\n  t[\"\\uFD24\"] = \"\\u0636\\u064A\";\n  t[\"\\uFD25\"] = \"\\u0634\\u062C\";\n  t[\"\\uFD26\"] = \"\\u0634\\u062D\";\n  t[\"\\uFD27\"] = \"\\u0634\\u062E\";\n  t[\"\\uFD28\"] = \"\\u0634\\u0645\";\n  t[\"\\uFD29\"] = \"\\u0634\\u0631\";\n  t[\"\\uFD2A\"] = \"\\u0633\\u0631\";\n  t[\"\\uFD2B\"] = \"\\u0635\\u0631\";\n  t[\"\\uFD2C\"] = \"\\u0636\\u0631\";\n  t[\"\\uFD2D\"] = \"\\u0634\\u062C\";\n  t[\"\\uFD2E\"] = \"\\u0634\\u062D\";\n  t[\"\\uFD2F\"] = \"\\u0634\\u062E\";\n  t[\"\\uFD30\"] = \"\\u0634\\u0645\";\n  t[\"\\uFD31\"] = \"\\u0633\\u0647\";\n  t[\"\\uFD32\"] = \"\\u0634\\u0647\";\n  t[\"\\uFD33\"] = \"\\u0637\\u0645\";\n  t[\"\\uFD34\"] = \"\\u0633\\u062C\";\n  t[\"\\uFD35\"] = \"\\u0633\\u062D\";\n  t[\"\\uFD36\"] = \"\\u0633\\u062E\";\n  t[\"\\uFD37\"] = \"\\u0634\\u062C\";\n  t[\"\\uFD38\"] = \"\\u0634\\u062D\";\n  t[\"\\uFD39\"] = \"\\u0634\\u062E\";\n  t[\"\\uFD3A\"] = \"\\u0637\\u0645\";\n  t[\"\\uFD3B\"] = \"\\u0638\\u0645\";\n  t[\"\\uFD3C\"] = \"\\u0627\\u064B\";\n  t[\"\\uFD3D\"] = \"\\u0627\\u064B\";\n  t[\"\\uFD50\"] = \"\\u062A\\u062C\\u0645\";\n  t[\"\\uFD51\"] = \"\\u062A\\u062D\\u062C\";\n  t[\"\\uFD52\"] = \"\\u062A\\u062D\\u062C\";\n  t[\"\\uFD53\"] = \"\\u062A\\u062D\\u0645\";\n  t[\"\\uFD54\"] = \"\\u062A\\u062E\\u0645\";\n  t[\"\\uFD55\"] = \"\\u062A\\u0645\\u062C\";\n  t[\"\\uFD56\"] = \"\\u062A\\u0645\\u062D\";\n  t[\"\\uFD57\"] = \"\\u062A\\u0645\\u062E\";\n  t[\"\\uFD58\"] = \"\\u062C\\u0645\\u062D\";\n  t[\"\\uFD59\"] = \"\\u062C\\u0645\\u062D\";\n  t[\"\\uFD5A\"] = \"\\u062D\\u0645\\u064A\";\n  t[\"\\uFD5B\"] = \"\\u062D\\u0645\\u0649\";\n  t[\"\\uFD5C\"] = \"\\u0633\\u062D\\u062C\";\n  t[\"\\uFD5D\"] = \"\\u0633\\u062C\\u062D\";\n  t[\"\\uFD5E\"] = \"\\u0633\\u062C\\u0649\";\n  t[\"\\uFD5F\"] = \"\\u0633\\u0645\\u062D\";\n  t[\"\\uFD60\"] = \"\\u0633\\u0645\\u062D\";\n  t[\"\\uFD61\"] = \"\\u0633\\u0645\\u062C\";\n  t[\"\\uFD62\"] = \"\\u0633\\u0645\\u0645\";\n  t[\"\\uFD63\"] = \"\\u0633\\u0645\\u0645\";\n  t[\"\\uFD64\"] = \"\\u0635\\u062D\\u062D\";\n  t[\"\\uFD65\"] = \"\\u0635\\u062D\\u062D\";\n  t[\"\\uFD66\"] = \"\\u0635\\u0645\\u0645\";\n  t[\"\\uFD67\"] = \"\\u0634\\u062D\\u0645\";\n  t[\"\\uFD68\"] = \"\\u0634\\u062D\\u0645\";\n  t[\"\\uFD69\"] = \"\\u0634\\u062C\\u064A\";\n  t[\"\\uFD6A\"] = \"\\u0634\\u0645\\u062E\";\n  t[\"\\uFD6B\"] = \"\\u0634\\u0645\\u062E\";\n  t[\"\\uFD6C\"] = \"\\u0634\\u0645\\u0645\";\n  t[\"\\uFD6D\"] = \"\\u0634\\u0645\\u0645\";\n  t[\"\\uFD6E\"] = \"\\u0636\\u062D\\u0649\";\n  t[\"\\uFD6F\"] = \"\\u0636\\u062E\\u0645\";\n  t[\"\\uFD70\"] = \"\\u0636\\u062E\\u0645\";\n  t[\"\\uFD71\"] = \"\\u0637\\u0645\\u062D\";\n  t[\"\\uFD72\"] = \"\\u0637\\u0645\\u062D\";\n  t[\"\\uFD73\"] = \"\\u0637\\u0645\\u0645\";\n  t[\"\\uFD74\"] = \"\\u0637\\u0645\\u064A\";\n  t[\"\\uFD75\"] = \"\\u0639\\u062C\\u0645\";\n  t[\"\\uFD76\"] = \"\\u0639\\u0645\\u0645\";\n  t[\"\\uFD77\"] = \"\\u0639\\u0645\\u0645\";\n  t[\"\\uFD78\"] = \"\\u0639\\u0645\\u0649\";\n  t[\"\\uFD79\"] = \"\\u063A\\u0645\\u0645\";\n  t[\"\\uFD7A\"] = \"\\u063A\\u0645\\u064A\";\n  t[\"\\uFD7B\"] = \"\\u063A\\u0645\\u0649\";\n  t[\"\\uFD7C\"] = \"\\u0641\\u062E\\u0645\";\n  t[\"\\uFD7D\"] = \"\\u0641\\u062E\\u0645\";\n  t[\"\\uFD7E\"] = \"\\u0642\\u0645\\u062D\";\n  t[\"\\uFD7F\"] = \"\\u0642\\u0645\\u0645\";\n  t[\"\\uFD80\"] = \"\\u0644\\u062D\\u0645\";\n  t[\"\\uFD81\"] = \"\\u0644\\u062D\\u064A\";\n  t[\"\\uFD82\"] = \"\\u0644\\u062D\\u0649\";\n  t[\"\\uFD83\"] = \"\\u0644\\u062C\\u062C\";\n  t[\"\\uFD84\"] = \"\\u0644\\u062C\\u062C\";\n  t[\"\\uFD85\"] = \"\\u0644\\u062E\\u0645\";\n  t[\"\\uFD86\"] = \"\\u0644\\u062E\\u0645\";\n  t[\"\\uFD87\"] = \"\\u0644\\u0645\\u062D\";\n  t[\"\\uFD88\"] = \"\\u0644\\u0645\\u062D\";\n  t[\"\\uFD89\"] = \"\\u0645\\u062D\\u062C\";\n  t[\"\\uFD8A\"] = \"\\u0645\\u062D\\u0645\";\n  t[\"\\uFD8B\"] = \"\\u0645\\u062D\\u064A\";\n  t[\"\\uFD8C\"] = \"\\u0645\\u062C\\u062D\";\n  t[\"\\uFD8D\"] = \"\\u0645\\u062C\\u0645\";\n  t[\"\\uFD8E\"] = \"\\u0645\\u062E\\u062C\";\n  t[\"\\uFD8F\"] = \"\\u0645\\u062E\\u0645\";\n  t[\"\\uFD92\"] = \"\\u0645\\u062C\\u062E\";\n  t[\"\\uFD93\"] = \"\\u0647\\u0645\\u062C\";\n  t[\"\\uFD94\"] = \"\\u0647\\u0645\\u0645\";\n  t[\"\\uFD95\"] = \"\\u0646\\u062D\\u0645\";\n  t[\"\\uFD96\"] = \"\\u0646\\u062D\\u0649\";\n  t[\"\\uFD97\"] = \"\\u0646\\u062C\\u0645\";\n  t[\"\\uFD98\"] = \"\\u0646\\u062C\\u0645\";\n  t[\"\\uFD99\"] = \"\\u0646\\u062C\\u0649\";\n  t[\"\\uFD9A\"] = \"\\u0646\\u0645\\u064A\";\n  t[\"\\uFD9B\"] = \"\\u0646\\u0645\\u0649\";\n  t[\"\\uFD9C\"] = \"\\u064A\\u0645\\u0645\";\n  t[\"\\uFD9D\"] = \"\\u064A\\u0645\\u0645\";\n  t[\"\\uFD9E\"] = \"\\u0628\\u062E\\u064A\";\n  t[\"\\uFD9F\"] = \"\\u062A\\u062C\\u064A\";\n  t[\"\\uFDA0\"] = \"\\u062A\\u062C\\u0649\";\n  t[\"\\uFDA1\"] = \"\\u062A\\u062E\\u064A\";\n  t[\"\\uFDA2\"] = \"\\u062A\\u062E\\u0649\";\n  t[\"\\uFDA3\"] = \"\\u062A\\u0645\\u064A\";\n  t[\"\\uFDA4\"] = \"\\u062A\\u0645\\u0649\";\n  t[\"\\uFDA5\"] = \"\\u062C\\u0645\\u064A\";\n  t[\"\\uFDA6\"] = \"\\u062C\\u062D\\u0649\";\n  t[\"\\uFDA7\"] = \"\\u062C\\u0645\\u0649\";\n  t[\"\\uFDA8\"] = \"\\u0633\\u062E\\u0649\";\n  t[\"\\uFDA9\"] = \"\\u0635\\u062D\\u064A\";\n  t[\"\\uFDAA\"] = \"\\u0634\\u062D\\u064A\";\n  t[\"\\uFDAB\"] = \"\\u0636\\u062D\\u064A\";\n  t[\"\\uFDAC\"] = \"\\u0644\\u062C\\u064A\";\n  t[\"\\uFDAD\"] = \"\\u0644\\u0645\\u064A\";\n  t[\"\\uFDAE\"] = \"\\u064A\\u062D\\u064A\";\n  t[\"\\uFDAF\"] = \"\\u064A\\u062C\\u064A\";\n  t[\"\\uFDB0\"] = \"\\u064A\\u0645\\u064A\";\n  t[\"\\uFDB1\"] = \"\\u0645\\u0645\\u064A\";\n  t[\"\\uFDB2\"] = \"\\u0642\\u0645\\u064A\";\n  t[\"\\uFDB3\"] = \"\\u0646\\u062D\\u064A\";\n  t[\"\\uFDB4\"] = \"\\u0642\\u0645\\u062D\";\n  t[\"\\uFDB5\"] = \"\\u0644\\u062D\\u0645\";\n  t[\"\\uFDB6\"] = \"\\u0639\\u0645\\u064A\";\n  t[\"\\uFDB7\"] = \"\\u0643\\u0645\\u064A\";\n  t[\"\\uFDB8\"] = \"\\u0646\\u062C\\u062D\";\n  t[\"\\uFDB9\"] = \"\\u0645\\u062E\\u064A\";\n  t[\"\\uFDBA\"] = \"\\u0644\\u062C\\u0645\";\n  t[\"\\uFDBB\"] = \"\\u0643\\u0645\\u0645\";\n  t[\"\\uFDBC\"] = \"\\u0644\\u062C\\u0645\";\n  t[\"\\uFDBD\"] = \"\\u0646\\u062C\\u062D\";\n  t[\"\\uFDBE\"] = \"\\u062C\\u062D\\u064A\";\n  t[\"\\uFDBF\"] = \"\\u062D\\u062C\\u064A\";\n  t[\"\\uFDC0\"] = \"\\u0645\\u062C\\u064A\";\n  t[\"\\uFDC1\"] = \"\\u0641\\u0645\\u064A\";\n  t[\"\\uFDC2\"] = \"\\u0628\\u062D\\u064A\";\n  t[\"\\uFDC3\"] = \"\\u0643\\u0645\\u0645\";\n  t[\"\\uFDC4\"] = \"\\u0639\\u062C\\u0645\";\n  t[\"\\uFDC5\"] = \"\\u0635\\u0645\\u0645\";\n  t[\"\\uFDC6\"] = \"\\u0633\\u062E\\u064A\";\n  t[\"\\uFDC7\"] = \"\\u0646\\u062C\\u064A\";\n  t[\"\\uFE49\"] = \"\\u203E\";\n  t[\"\\uFE4A\"] = \"\\u203E\";\n  t[\"\\uFE4B\"] = \"\\u203E\";\n  t[\"\\uFE4C\"] = \"\\u203E\";\n  t[\"\\uFE4D\"] = \"\\u005F\";\n  t[\"\\uFE4E\"] = \"\\u005F\";\n  t[\"\\uFE4F\"] = \"\\u005F\";\n  t[\"\\uFE80\"] = \"\\u0621\";\n  t[\"\\uFE81\"] = \"\\u0622\";\n  t[\"\\uFE82\"] = \"\\u0622\";\n  t[\"\\uFE83\"] = \"\\u0623\";\n  t[\"\\uFE84\"] = \"\\u0623\";\n  t[\"\\uFE85\"] = \"\\u0624\";\n  t[\"\\uFE86\"] = \"\\u0624\";\n  t[\"\\uFE87\"] = \"\\u0625\";\n  t[\"\\uFE88\"] = \"\\u0625\";\n  t[\"\\uFE89\"] = \"\\u0626\";\n  t[\"\\uFE8A\"] = \"\\u0626\";\n  t[\"\\uFE8B\"] = \"\\u0626\";\n  t[\"\\uFE8C\"] = \"\\u0626\";\n  t[\"\\uFE8D\"] = \"\\u0627\";\n  t[\"\\uFE8E\"] = \"\\u0627\";\n  t[\"\\uFE8F\"] = \"\\u0628\";\n  t[\"\\uFE90\"] = \"\\u0628\";\n  t[\"\\uFE91\"] = \"\\u0628\";\n  t[\"\\uFE92\"] = \"\\u0628\";\n  t[\"\\uFE93\"] = \"\\u0629\";\n  t[\"\\uFE94\"] = \"\\u0629\";\n  t[\"\\uFE95\"] = \"\\u062A\";\n  t[\"\\uFE96\"] = \"\\u062A\";\n  t[\"\\uFE97\"] = \"\\u062A\";\n  t[\"\\uFE98\"] = \"\\u062A\";\n  t[\"\\uFE99\"] = \"\\u062B\";\n  t[\"\\uFE9A\"] = \"\\u062B\";\n  t[\"\\uFE9B\"] = \"\\u062B\";\n  t[\"\\uFE9C\"] = \"\\u062B\";\n  t[\"\\uFE9D\"] = \"\\u062C\";\n  t[\"\\uFE9E\"] = \"\\u062C\";\n  t[\"\\uFE9F\"] = \"\\u062C\";\n  t[\"\\uFEA0\"] = \"\\u062C\";\n  t[\"\\uFEA1\"] = \"\\u062D\";\n  t[\"\\uFEA2\"] = \"\\u062D\";\n  t[\"\\uFEA3\"] = \"\\u062D\";\n  t[\"\\uFEA4\"] = \"\\u062D\";\n  t[\"\\uFEA5\"] = \"\\u062E\";\n  t[\"\\uFEA6\"] = \"\\u062E\";\n  t[\"\\uFEA7\"] = \"\\u062E\";\n  t[\"\\uFEA8\"] = \"\\u062E\";\n  t[\"\\uFEA9\"] = \"\\u062F\";\n  t[\"\\uFEAA\"] = \"\\u062F\";\n  t[\"\\uFEAB\"] = \"\\u0630\";\n  t[\"\\uFEAC\"] = \"\\u0630\";\n  t[\"\\uFEAD\"] = \"\\u0631\";\n  t[\"\\uFEAE\"] = \"\\u0631\";\n  t[\"\\uFEAF\"] = \"\\u0632\";\n  t[\"\\uFEB0\"] = \"\\u0632\";\n  t[\"\\uFEB1\"] = \"\\u0633\";\n  t[\"\\uFEB2\"] = \"\\u0633\";\n  t[\"\\uFEB3\"] = \"\\u0633\";\n  t[\"\\uFEB4\"] = \"\\u0633\";\n  t[\"\\uFEB5\"] = \"\\u0634\";\n  t[\"\\uFEB6\"] = \"\\u0634\";\n  t[\"\\uFEB7\"] = \"\\u0634\";\n  t[\"\\uFEB8\"] = \"\\u0634\";\n  t[\"\\uFEB9\"] = \"\\u0635\";\n  t[\"\\uFEBA\"] = \"\\u0635\";\n  t[\"\\uFEBB\"] = \"\\u0635\";\n  t[\"\\uFEBC\"] = \"\\u0635\";\n  t[\"\\uFEBD\"] = \"\\u0636\";\n  t[\"\\uFEBE\"] = \"\\u0636\";\n  t[\"\\uFEBF\"] = \"\\u0636\";\n  t[\"\\uFEC0\"] = \"\\u0636\";\n  t[\"\\uFEC1\"] = \"\\u0637\";\n  t[\"\\uFEC2\"] = \"\\u0637\";\n  t[\"\\uFEC3\"] = \"\\u0637\";\n  t[\"\\uFEC4\"] = \"\\u0637\";\n  t[\"\\uFEC5\"] = \"\\u0638\";\n  t[\"\\uFEC6\"] = \"\\u0638\";\n  t[\"\\uFEC7\"] = \"\\u0638\";\n  t[\"\\uFEC8\"] = \"\\u0638\";\n  t[\"\\uFEC9\"] = \"\\u0639\";\n  t[\"\\uFECA\"] = \"\\u0639\";\n  t[\"\\uFECB\"] = \"\\u0639\";\n  t[\"\\uFECC\"] = \"\\u0639\";\n  t[\"\\uFECD\"] = \"\\u063A\";\n  t[\"\\uFECE\"] = \"\\u063A\";\n  t[\"\\uFECF\"] = \"\\u063A\";\n  t[\"\\uFED0\"] = \"\\u063A\";\n  t[\"\\uFED1\"] = \"\\u0641\";\n  t[\"\\uFED2\"] = \"\\u0641\";\n  t[\"\\uFED3\"] = \"\\u0641\";\n  t[\"\\uFED4\"] = \"\\u0641\";\n  t[\"\\uFED5\"] = \"\\u0642\";\n  t[\"\\uFED6\"] = \"\\u0642\";\n  t[\"\\uFED7\"] = \"\\u0642\";\n  t[\"\\uFED8\"] = \"\\u0642\";\n  t[\"\\uFED9\"] = \"\\u0643\";\n  t[\"\\uFEDA\"] = \"\\u0643\";\n  t[\"\\uFEDB\"] = \"\\u0643\";\n  t[\"\\uFEDC\"] = \"\\u0643\";\n  t[\"\\uFEDD\"] = \"\\u0644\";\n  t[\"\\uFEDE\"] = \"\\u0644\";\n  t[\"\\uFEDF\"] = \"\\u0644\";\n  t[\"\\uFEE0\"] = \"\\u0644\";\n  t[\"\\uFEE1\"] = \"\\u0645\";\n  t[\"\\uFEE2\"] = \"\\u0645\";\n  t[\"\\uFEE3\"] = \"\\u0645\";\n  t[\"\\uFEE4\"] = \"\\u0645\";\n  t[\"\\uFEE5\"] = \"\\u0646\";\n  t[\"\\uFEE6\"] = \"\\u0646\";\n  t[\"\\uFEE7\"] = \"\\u0646\";\n  t[\"\\uFEE8\"] = \"\\u0646\";\n  t[\"\\uFEE9\"] = \"\\u0647\";\n  t[\"\\uFEEA\"] = \"\\u0647\";\n  t[\"\\uFEEB\"] = \"\\u0647\";\n  t[\"\\uFEEC\"] = \"\\u0647\";\n  t[\"\\uFEED\"] = \"\\u0648\";\n  t[\"\\uFEEE\"] = \"\\u0648\";\n  t[\"\\uFEEF\"] = \"\\u0649\";\n  t[\"\\uFEF0\"] = \"\\u0649\";\n  t[\"\\uFEF1\"] = \"\\u064A\";\n  t[\"\\uFEF2\"] = \"\\u064A\";\n  t[\"\\uFEF3\"] = \"\\u064A\";\n  t[\"\\uFEF4\"] = \"\\u064A\";\n  t[\"\\uFEF5\"] = \"\\u0644\\u0622\";\n  t[\"\\uFEF6\"] = \"\\u0644\\u0622\";\n  t[\"\\uFEF7\"] = \"\\u0644\\u0623\";\n  t[\"\\uFEF8\"] = \"\\u0644\\u0623\";\n  t[\"\\uFEF9\"] = \"\\u0644\\u0625\";\n  t[\"\\uFEFA\"] = \"\\u0644\\u0625\";\n  t[\"\\uFEFB\"] = \"\\u0644\\u0627\";\n  t[\"\\uFEFC\"] = \"\\u0644\\u0627\";\n});\n\nfunction reverseIfRtl(chars) {\n  var charsLength = chars.length;\n  // Reverse an arabic ligature.\n  if (charsLength <= 1 || !isRTLRangeFor(chars.charCodeAt(0))) {\n    return chars;\n  }\n  var s = \"\";\n  for (var ii = charsLength - 1; ii >= 0; ii--) {\n    s += chars[ii];\n  }\n  return s;\n}\n\nexports.mapSpecialUnicodeValues = mapSpecialUnicodeValues;\nexports.reverseIfRtl = reverseIfRtl;\nexports.getUnicodeRangeFor = getUnicodeRangeFor;\nexports.getNormalizedUnicodes = getNormalizedUnicodes;\nexports.getUnicodeForGlyph = getUnicodeForGlyph;\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  bytesToString,\n  FONT_IDENTITY_MATRIX,\n  FormatError,\n  unreachable,\n  warn,\n} from \"../shared/util.js\";\nimport { CFFParser } from \"./cff_parser.js\";\nimport { getGlyphsUnicode } from \"./glyphlist.js\";\nimport { StandardEncoding } from \"./encodings.js\";\nimport { Stream } from \"./stream.js\";\n\nvar FontRendererFactory = (function FontRendererFactoryClosure() {\n  function getLong(data, offset) {\n    return (\n      (data[offset] << 24) |\n      (data[offset + 1] << 16) |\n      (data[offset + 2] << 8) |\n      data[offset + 3]\n    );\n  }\n\n  function getUshort(data, offset) {\n    return (data[offset] << 8) | data[offset + 1];\n  }\n\n  function getSubroutineBias(subrs) {\n    const numSubrs = subrs.length;\n    let bias = 32768;\n    if (numSubrs < 1240) {\n      bias = 107;\n    } else if (numSubrs < 33900) {\n      bias = 1131;\n    }\n    return bias;\n  }\n\n  function parseCmap(data, start, end) {\n    var offset =\n      getUshort(data, start + 2) === 1\n        ? getLong(data, start + 8)\n        : getLong(data, start + 16);\n    var format = getUshort(data, start + offset);\n    var ranges, p, i;\n    if (format === 4) {\n      getUshort(data, start + offset + 2); // length\n      var segCount = getUshort(data, start + offset + 6) >> 1;\n      p = start + offset + 14;\n      ranges = [];\n      for (i = 0; i < segCount; i++, p += 2) {\n        ranges[i] = { end: getUshort(data, p) };\n      }\n      p += 2;\n      for (i = 0; i < segCount; i++, p += 2) {\n        ranges[i].start = getUshort(data, p);\n      }\n      for (i = 0; i < segCount; i++, p += 2) {\n        ranges[i].idDelta = getUshort(data, p);\n      }\n      for (i = 0; i < segCount; i++, p += 2) {\n        var idOffset = getUshort(data, p);\n        if (idOffset === 0) {\n          continue;\n        }\n        ranges[i].ids = [];\n        for (var j = 0, jj = ranges[i].end - ranges[i].start + 1; j < jj; j++) {\n          ranges[i].ids[j] = getUshort(data, p + idOffset);\n          idOffset += 2;\n        }\n      }\n      return ranges;\n    } else if (format === 12) {\n      getLong(data, start + offset + 4); // length\n      var groups = getLong(data, start + offset + 12);\n      p = start + offset + 16;\n      ranges = [];\n      for (i = 0; i < groups; i++) {\n        ranges.push({\n          start: getLong(data, p),\n          end: getLong(data, p + 4),\n          idDelta: getLong(data, p + 8) - getLong(data, p),\n        });\n        p += 12;\n      }\n      return ranges;\n    }\n    throw new FormatError(`unsupported cmap: ${format}`);\n  }\n\n  function parseCff(data, start, end, seacAnalysisEnabled) {\n    var properties = {};\n    var parser = new CFFParser(\n      new Stream(data, start, end - start),\n      properties,\n      seacAnalysisEnabled\n    );\n    var cff = parser.parse();\n    return {\n      glyphs: cff.charStrings.objects,\n      subrs:\n        cff.topDict.privateDict &&\n        cff.topDict.privateDict.subrsIndex &&\n        cff.topDict.privateDict.subrsIndex.objects,\n      gsubrs: cff.globalSubrIndex && cff.globalSubrIndex.objects,\n      isCFFCIDFont: cff.isCIDFont,\n      fdSelect: cff.fdSelect,\n      fdArray: cff.fdArray,\n    };\n  }\n\n  function parseGlyfTable(glyf, loca, isGlyphLocationsLong) {\n    var itemSize, itemDecode;\n    if (isGlyphLocationsLong) {\n      itemSize = 4;\n      itemDecode = function fontItemDecodeLong(data, offset) {\n        return (\n          (data[offset] << 24) |\n          (data[offset + 1] << 16) |\n          (data[offset + 2] << 8) |\n          data[offset + 3]\n        );\n      };\n    } else {\n      itemSize = 2;\n      itemDecode = function fontItemDecode(data, offset) {\n        return (data[offset] << 9) | (data[offset + 1] << 1);\n      };\n    }\n    var glyphs = [];\n    var startOffset = itemDecode(loca, 0);\n    for (var j = itemSize; j < loca.length; j += itemSize) {\n      var endOffset = itemDecode(loca, j);\n      glyphs.push(glyf.subarray(startOffset, endOffset));\n      startOffset = endOffset;\n    }\n    return glyphs;\n  }\n\n  function lookupCmap(ranges, unicode) {\n    var code = unicode.codePointAt(0),\n      gid = 0;\n    var l = 0,\n      r = ranges.length - 1;\n    while (l < r) {\n      var c = (l + r + 1) >> 1;\n      if (code < ranges[c].start) {\n        r = c - 1;\n      } else {\n        l = c;\n      }\n    }\n    if (ranges[l].start <= code && code <= ranges[l].end) {\n      gid =\n        (ranges[l].idDelta +\n          (ranges[l].ids ? ranges[l].ids[code - ranges[l].start] : code)) &\n        0xffff;\n    }\n    return {\n      charCode: code,\n      glyphId: gid,\n    };\n  }\n\n  function compileGlyf(code, cmds, font) {\n    function moveTo(x, y) {\n      cmds.push({ cmd: \"moveTo\", args: [x, y] });\n    }\n    function lineTo(x, y) {\n      cmds.push({ cmd: \"lineTo\", args: [x, y] });\n    }\n    function quadraticCurveTo(xa, ya, x, y) {\n      cmds.push({ cmd: \"quadraticCurveTo\", args: [xa, ya, x, y] });\n    }\n\n    var i = 0;\n    var numberOfContours = ((code[i] << 24) | (code[i + 1] << 16)) >> 16;\n    var flags;\n    var x = 0,\n      y = 0;\n    i += 10;\n    if (numberOfContours < 0) {\n      // composite glyph\n      do {\n        flags = (code[i] << 8) | code[i + 1];\n        var glyphIndex = (code[i + 2] << 8) | code[i + 3];\n        i += 4;\n        var arg1, arg2;\n        if (flags & 0x01) {\n          arg1 = ((code[i] << 24) | (code[i + 1] << 16)) >> 16;\n          arg2 = ((code[i + 2] << 24) | (code[i + 3] << 16)) >> 16;\n          i += 4;\n        } else {\n          arg1 = code[i++];\n          arg2 = code[i++];\n        }\n        if (flags & 0x02) {\n          x = arg1;\n          y = arg2;\n        } else {\n          x = 0;\n          y = 0; // TODO \"they are points\" ?\n        }\n        var scaleX = 1,\n          scaleY = 1,\n          scale01 = 0,\n          scale10 = 0;\n        if (flags & 0x08) {\n          scaleX = scaleY =\n            ((code[i] << 24) | (code[i + 1] << 16)) / 1073741824;\n          i += 2;\n        } else if (flags & 0x40) {\n          scaleX = ((code[i] << 24) | (code[i + 1] << 16)) / 1073741824;\n          scaleY = ((code[i + 2] << 24) | (code[i + 3] << 16)) / 1073741824;\n          i += 4;\n        } else if (flags & 0x80) {\n          scaleX = ((code[i] << 24) | (code[i + 1] << 16)) / 1073741824;\n          scale01 = ((code[i + 2] << 24) | (code[i + 3] << 16)) / 1073741824;\n          scale10 = ((code[i + 4] << 24) | (code[i + 5] << 16)) / 1073741824;\n          scaleY = ((code[i + 6] << 24) | (code[i + 7] << 16)) / 1073741824;\n          i += 8;\n        }\n        var subglyph = font.glyphs[glyphIndex];\n        if (subglyph) {\n          cmds.push({ cmd: \"save\" });\n          cmds.push({\n            cmd: \"transform\",\n            args: [scaleX, scale01, scale10, scaleY, x, y],\n          });\n          compileGlyf(subglyph, cmds, font);\n          cmds.push({ cmd: \"restore\" });\n        }\n      } while (flags & 0x20);\n    } else {\n      // simple glyph\n      var endPtsOfContours = [];\n      var j, jj;\n      for (j = 0; j < numberOfContours; j++) {\n        endPtsOfContours.push((code[i] << 8) | code[i + 1]);\n        i += 2;\n      }\n      var instructionLength = (code[i] << 8) | code[i + 1];\n      i += 2 + instructionLength; // skipping the instructions\n      var numberOfPoints = endPtsOfContours[endPtsOfContours.length - 1] + 1;\n      var points = [];\n      while (points.length < numberOfPoints) {\n        flags = code[i++];\n        var repeat = 1;\n        if (flags & 0x08) {\n          repeat += code[i++];\n        }\n        while (repeat-- > 0) {\n          points.push({ flags });\n        }\n      }\n      for (j = 0; j < numberOfPoints; j++) {\n        switch (points[j].flags & 0x12) {\n          case 0x00:\n            x += ((code[i] << 24) | (code[i + 1] << 16)) >> 16;\n            i += 2;\n            break;\n          case 0x02:\n            x -= code[i++];\n            break;\n          case 0x12:\n            x += code[i++];\n            break;\n        }\n        points[j].x = x;\n      }\n      for (j = 0; j < numberOfPoints; j++) {\n        switch (points[j].flags & 0x24) {\n          case 0x00:\n            y += ((code[i] << 24) | (code[i + 1] << 16)) >> 16;\n            i += 2;\n            break;\n          case 0x04:\n            y -= code[i++];\n            break;\n          case 0x24:\n            y += code[i++];\n            break;\n        }\n        points[j].y = y;\n      }\n\n      var startPoint = 0;\n      for (i = 0; i < numberOfContours; i++) {\n        var endPoint = endPtsOfContours[i];\n        // contours might have implicit points, which is located in the middle\n        // between two neighboring off-curve points\n        var contour = points.slice(startPoint, endPoint + 1);\n        if (contour[0].flags & 1) {\n          contour.push(contour[0]); // using start point at the contour end\n        } else if (contour[contour.length - 1].flags & 1) {\n          // first is off-curve point, trying to use one from the end\n          contour.unshift(contour[contour.length - 1]);\n        } else {\n          // start and end are off-curve points, creating implicit one\n          var p = {\n            flags: 1,\n            x: (contour[0].x + contour[contour.length - 1].x) / 2,\n            y: (contour[0].y + contour[contour.length - 1].y) / 2,\n          };\n          contour.unshift(p);\n          contour.push(p);\n        }\n        moveTo(contour[0].x, contour[0].y);\n        for (j = 1, jj = contour.length; j < jj; j++) {\n          if (contour[j].flags & 1) {\n            lineTo(contour[j].x, contour[j].y);\n          } else if (contour[j + 1].flags & 1) {\n            quadraticCurveTo(\n              contour[j].x,\n              contour[j].y,\n              contour[j + 1].x,\n              contour[j + 1].y\n            );\n            j++;\n          } else {\n            quadraticCurveTo(\n              contour[j].x,\n              contour[j].y,\n              (contour[j].x + contour[j + 1].x) / 2,\n              (contour[j].y + contour[j + 1].y) / 2\n            );\n          }\n        }\n        startPoint = endPoint + 1;\n      }\n    }\n  }\n\n  function compileCharString(charStringCode, cmds, font, glyphId) {\n    function moveTo(x, y) {\n      cmds.push({ cmd: \"moveTo\", args: [x, y] });\n    }\n    function lineTo(x, y) {\n      cmds.push({ cmd: \"lineTo\", args: [x, y] });\n    }\n    function bezierCurveTo(x1, y1, x2, y2, x, y) {\n      cmds.push({ cmd: \"bezierCurveTo\", args: [x1, y1, x2, y2, x, y] });\n    }\n\n    var stack = [];\n    var x = 0,\n      y = 0;\n    var stems = 0;\n\n    function parse(code) {\n      var i = 0;\n      while (i < code.length) {\n        var stackClean = false;\n        var v = code[i++];\n        var xa, xb, ya, yb, y1, y2, y3, n, subrCode;\n        switch (v) {\n          case 1: // hstem\n            stems += stack.length >> 1;\n            stackClean = true;\n            break;\n          case 3: // vstem\n            stems += stack.length >> 1;\n            stackClean = true;\n            break;\n          case 4: // vmoveto\n            y += stack.pop();\n            moveTo(x, y);\n            stackClean = true;\n            break;\n          case 5: // rlineto\n            while (stack.length > 0) {\n              x += stack.shift();\n              y += stack.shift();\n              lineTo(x, y);\n            }\n            break;\n          case 6: // hlineto\n            while (stack.length > 0) {\n              x += stack.shift();\n              lineTo(x, y);\n              if (stack.length === 0) {\n                break;\n              }\n              y += stack.shift();\n              lineTo(x, y);\n            }\n            break;\n          case 7: // vlineto\n            while (stack.length > 0) {\n              y += stack.shift();\n              lineTo(x, y);\n              if (stack.length === 0) {\n                break;\n              }\n              x += stack.shift();\n              lineTo(x, y);\n            }\n            break;\n          case 8: // rrcurveto\n            while (stack.length > 0) {\n              xa = x + stack.shift();\n              ya = y + stack.shift();\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb + stack.shift();\n              y = yb + stack.shift();\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n            }\n            break;\n          case 10: // callsubr\n            n = stack.pop();\n            subrCode = null;\n            if (font.isCFFCIDFont) {\n              const fdIndex = font.fdSelect.getFDIndex(glyphId);\n              if (fdIndex >= 0 && fdIndex < font.fdArray.length) {\n                const fontDict = font.fdArray[fdIndex];\n                let subrs;\n                if (fontDict.privateDict && fontDict.privateDict.subrsIndex) {\n                  subrs = fontDict.privateDict.subrsIndex.objects;\n                }\n                if (subrs) {\n                  // Add subroutine bias.\n                  n += getSubroutineBias(subrs);\n                  subrCode = subrs[n];\n                }\n              } else {\n                warn(\"Invalid fd index for glyph index.\");\n              }\n            } else {\n              subrCode = font.subrs[n + font.subrsBias];\n            }\n            if (subrCode) {\n              parse(subrCode);\n            }\n            break;\n          case 11: // return\n            return;\n          case 12:\n            v = code[i++];\n            switch (v) {\n              case 34: // flex\n                xa = x + stack.shift();\n                xb = xa + stack.shift();\n                y1 = y + stack.shift();\n                x = xb + stack.shift();\n                bezierCurveTo(xa, y, xb, y1, x, y1);\n                xa = x + stack.shift();\n                xb = xa + stack.shift();\n                x = xb + stack.shift();\n                bezierCurveTo(xa, y1, xb, y, x, y);\n                break;\n              case 35: // flex\n                xa = x + stack.shift();\n                ya = y + stack.shift();\n                xb = xa + stack.shift();\n                yb = ya + stack.shift();\n                x = xb + stack.shift();\n                y = yb + stack.shift();\n                bezierCurveTo(xa, ya, xb, yb, x, y);\n                xa = x + stack.shift();\n                ya = y + stack.shift();\n                xb = xa + stack.shift();\n                yb = ya + stack.shift();\n                x = xb + stack.shift();\n                y = yb + stack.shift();\n                bezierCurveTo(xa, ya, xb, yb, x, y);\n                stack.pop(); // fd\n                break;\n              case 36: // hflex1\n                xa = x + stack.shift();\n                y1 = y + stack.shift();\n                xb = xa + stack.shift();\n                y2 = y1 + stack.shift();\n                x = xb + stack.shift();\n                bezierCurveTo(xa, y1, xb, y2, x, y2);\n                xa = x + stack.shift();\n                xb = xa + stack.shift();\n                y3 = y2 + stack.shift();\n                x = xb + stack.shift();\n                bezierCurveTo(xa, y2, xb, y3, x, y);\n                break;\n              case 37: // flex1\n                var x0 = x,\n                  y0 = y;\n                xa = x + stack.shift();\n                ya = y + stack.shift();\n                xb = xa + stack.shift();\n                yb = ya + stack.shift();\n                x = xb + stack.shift();\n                y = yb + stack.shift();\n                bezierCurveTo(xa, ya, xb, yb, x, y);\n                xa = x + stack.shift();\n                ya = y + stack.shift();\n                xb = xa + stack.shift();\n                yb = ya + stack.shift();\n                x = xb;\n                y = yb;\n                if (Math.abs(x - x0) > Math.abs(y - y0)) {\n                  x += stack.shift();\n                } else {\n                  y += stack.shift();\n                }\n                bezierCurveTo(xa, ya, xb, yb, x, y);\n                break;\n              default:\n                throw new FormatError(`unknown operator: 12 ${v}`);\n            }\n            break;\n          case 14: // endchar\n            if (stack.length >= 4) {\n              var achar = stack.pop();\n              var bchar = stack.pop();\n              y = stack.pop();\n              x = stack.pop();\n              cmds.push({ cmd: \"save\" });\n              cmds.push({ cmd: \"translate\", args: [x, y] });\n              var cmap = lookupCmap(\n                font.cmap,\n                String.fromCharCode(font.glyphNameMap[StandardEncoding[achar]])\n              );\n              compileCharString(\n                font.glyphs[cmap.glyphId],\n                cmds,\n                font,\n                cmap.glyphId\n              );\n              cmds.push({ cmd: \"restore\" });\n\n              cmap = lookupCmap(\n                font.cmap,\n                String.fromCharCode(font.glyphNameMap[StandardEncoding[bchar]])\n              );\n              compileCharString(\n                font.glyphs[cmap.glyphId],\n                cmds,\n                font,\n                cmap.glyphId\n              );\n            }\n            return;\n          case 18: // hstemhm\n            stems += stack.length >> 1;\n            stackClean = true;\n            break;\n          case 19: // hintmask\n            stems += stack.length >> 1;\n            i += (stems + 7) >> 3;\n            stackClean = true;\n            break;\n          case 20: // cntrmask\n            stems += stack.length >> 1;\n            i += (stems + 7) >> 3;\n            stackClean = true;\n            break;\n          case 21: // rmoveto\n            y += stack.pop();\n            x += stack.pop();\n            moveTo(x, y);\n            stackClean = true;\n            break;\n          case 22: // hmoveto\n            x += stack.pop();\n            moveTo(x, y);\n            stackClean = true;\n            break;\n          case 23: // vstemhm\n            stems += stack.length >> 1;\n            stackClean = true;\n            break;\n          case 24: // rcurveline\n            while (stack.length > 2) {\n              xa = x + stack.shift();\n              ya = y + stack.shift();\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb + stack.shift();\n              y = yb + stack.shift();\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n            }\n            x += stack.shift();\n            y += stack.shift();\n            lineTo(x, y);\n            break;\n          case 25: // rlinecurve\n            while (stack.length > 6) {\n              x += stack.shift();\n              y += stack.shift();\n              lineTo(x, y);\n            }\n            xa = x + stack.shift();\n            ya = y + stack.shift();\n            xb = xa + stack.shift();\n            yb = ya + stack.shift();\n            x = xb + stack.shift();\n            y = yb + stack.shift();\n            bezierCurveTo(xa, ya, xb, yb, x, y);\n            break;\n          case 26: // vvcurveto\n            if (stack.length % 2) {\n              x += stack.shift();\n            }\n            while (stack.length > 0) {\n              xa = x;\n              ya = y + stack.shift();\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb;\n              y = yb + stack.shift();\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n            }\n            break;\n          case 27: // hhcurveto\n            if (stack.length % 2) {\n              y += stack.shift();\n            }\n            while (stack.length > 0) {\n              xa = x + stack.shift();\n              ya = y;\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb + stack.shift();\n              y = yb;\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n            }\n            break;\n          case 28:\n            stack.push(((code[i] << 24) | (code[i + 1] << 16)) >> 16);\n            i += 2;\n            break;\n          case 29: // callgsubr\n            n = stack.pop() + font.gsubrsBias;\n            subrCode = font.gsubrs[n];\n            if (subrCode) {\n              parse(subrCode);\n            }\n            break;\n          case 30: // vhcurveto\n            while (stack.length > 0) {\n              xa = x;\n              ya = y + stack.shift();\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb + stack.shift();\n              y = yb + (stack.length === 1 ? stack.shift() : 0);\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n              if (stack.length === 0) {\n                break;\n              }\n\n              xa = x + stack.shift();\n              ya = y;\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              y = yb + stack.shift();\n              x = xb + (stack.length === 1 ? stack.shift() : 0);\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n            }\n            break;\n          case 31: // hvcurveto\n            while (stack.length > 0) {\n              xa = x + stack.shift();\n              ya = y;\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              y = yb + stack.shift();\n              x = xb + (stack.length === 1 ? stack.shift() : 0);\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n              if (stack.length === 0) {\n                break;\n              }\n\n              xa = x;\n              ya = y + stack.shift();\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb + stack.shift();\n              y = yb + (stack.length === 1 ? stack.shift() : 0);\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n            }\n            break;\n          default:\n            if (v < 32) {\n              throw new FormatError(`unknown operator: ${v}`);\n            }\n            if (v < 247) {\n              stack.push(v - 139);\n            } else if (v < 251) {\n              stack.push((v - 247) * 256 + code[i++] + 108);\n            } else if (v < 255) {\n              stack.push(-(v - 251) * 256 - code[i++] - 108);\n            } else {\n              stack.push(\n                ((code[i] << 24) |\n                  (code[i + 1] << 16) |\n                  (code[i + 2] << 8) |\n                  code[i + 3]) /\n                  65536\n              );\n              i += 4;\n            }\n            break;\n        }\n        if (stackClean) {\n          stack.length = 0;\n        }\n      }\n    }\n    parse(charStringCode);\n  }\n\n  const NOOP = [];\n\n  class CompiledFont {\n    constructor(fontMatrix) {\n      if (this.constructor === CompiledFont) {\n        unreachable(\"Cannot initialize CompiledFont.\");\n      }\n      this.fontMatrix = fontMatrix;\n\n      this.compiledGlyphs = Object.create(null);\n      this.compiledCharCodeToGlyphId = Object.create(null);\n    }\n\n    getPathJs(unicode) {\n      const cmap = lookupCmap(this.cmap, unicode);\n      let fn = this.compiledGlyphs[cmap.glyphId];\n      if (!fn) {\n        fn = this.compileGlyph(this.glyphs[cmap.glyphId], cmap.glyphId);\n        this.compiledGlyphs[cmap.glyphId] = fn;\n      }\n      if (this.compiledCharCodeToGlyphId[cmap.charCode] === undefined) {\n        this.compiledCharCodeToGlyphId[cmap.charCode] = cmap.glyphId;\n      }\n      return fn;\n    }\n\n    compileGlyph(code, glyphId) {\n      if (!code || code.length === 0 || code[0] === 14) {\n        return NOOP;\n      }\n\n      let fontMatrix = this.fontMatrix;\n      if (this.isCFFCIDFont) {\n        // Top DICT's FontMatrix can be ignored because CFFCompiler always\n        // removes it and copies to FDArray DICTs.\n        const fdIndex = this.fdSelect.getFDIndex(glyphId);\n        if (fdIndex >= 0 && fdIndex < this.fdArray.length) {\n          const fontDict = this.fdArray[fdIndex];\n          fontMatrix = fontDict.getByName(\"FontMatrix\") || FONT_IDENTITY_MATRIX;\n        } else {\n          warn(\"Invalid fd index for glyph index.\");\n        }\n      }\n\n      const cmds = [];\n      cmds.push({ cmd: \"save\" });\n      cmds.push({ cmd: \"transform\", args: fontMatrix.slice() });\n      cmds.push({ cmd: \"scale\", args: [\"size\", \"-size\"] });\n\n      this.compileGlyphImpl(code, cmds, glyphId);\n\n      cmds.push({ cmd: \"restore\" });\n\n      return cmds;\n    }\n\n    compileGlyphImpl() {\n      unreachable(\"Children classes should implement this.\");\n    }\n\n    hasBuiltPath(unicode) {\n      const cmap = lookupCmap(this.cmap, unicode);\n      return (\n        this.compiledGlyphs[cmap.glyphId] !== undefined &&\n        this.compiledCharCodeToGlyphId[cmap.charCode] !== undefined\n      );\n    }\n  }\n\n  class TrueTypeCompiled extends CompiledFont {\n    constructor(glyphs, cmap, fontMatrix) {\n      super(fontMatrix || [0.000488, 0, 0, 0.000488, 0, 0]);\n\n      this.glyphs = glyphs;\n      this.cmap = cmap;\n    }\n\n    compileGlyphImpl(code, cmds) {\n      compileGlyf(code, cmds, this);\n    }\n  }\n\n  class Type2Compiled extends CompiledFont {\n    constructor(cffInfo, cmap, fontMatrix, glyphNameMap) {\n      super(fontMatrix || [0.001, 0, 0, 0.001, 0, 0]);\n\n      this.glyphs = cffInfo.glyphs;\n      this.gsubrs = cffInfo.gsubrs || [];\n      this.subrs = cffInfo.subrs || [];\n      this.cmap = cmap;\n      this.glyphNameMap = glyphNameMap || getGlyphsUnicode();\n\n      this.gsubrsBias = getSubroutineBias(this.gsubrs);\n      this.subrsBias = getSubroutineBias(this.subrs);\n\n      this.isCFFCIDFont = cffInfo.isCFFCIDFont;\n      this.fdSelect = cffInfo.fdSelect;\n      this.fdArray = cffInfo.fdArray;\n    }\n\n    compileGlyphImpl(code, cmds, glyphId) {\n      compileCharString(code, cmds, this, glyphId);\n    }\n  }\n\n  return {\n    create: function FontRendererFactory_create(font, seacAnalysisEnabled) {\n      var data = new Uint8Array(font.data);\n      var cmap, glyf, loca, cff, indexToLocFormat, unitsPerEm;\n      var numTables = getUshort(data, 4);\n      for (var i = 0, p = 12; i < numTables; i++, p += 16) {\n        var tag = bytesToString(data.subarray(p, p + 4));\n        var offset = getLong(data, p + 8);\n        var length = getLong(data, p + 12);\n        switch (tag) {\n          case \"cmap\":\n            cmap = parseCmap(data, offset, offset + length);\n            break;\n          case \"glyf\":\n            glyf = data.subarray(offset, offset + length);\n            break;\n          case \"loca\":\n            loca = data.subarray(offset, offset + length);\n            break;\n          case \"head\":\n            unitsPerEm = getUshort(data, offset + 18);\n            indexToLocFormat = getUshort(data, offset + 50);\n            break;\n          case \"CFF \":\n            cff = parseCff(data, offset, offset + length, seacAnalysisEnabled);\n            break;\n        }\n      }\n\n      if (glyf) {\n        var fontMatrix = !unitsPerEm\n          ? font.fontMatrix\n          : [1 / unitsPerEm, 0, 0, 1 / unitsPerEm, 0, 0];\n        return new TrueTypeCompiled(\n          parseGlyfTable(glyf, loca, indexToLocFormat),\n          cmap,\n          fontMatrix\n        );\n      }\n      return new Type2Compiled(cff, cmap, font.fontMatrix, font.glyphNameMap);\n    },\n  };\n})();\n\nexport { FontRendererFactory };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getEncoding } from \"./encodings.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\nimport { warn } from \"../shared/util.js\";\n\n// Hinting is currently disabled due to unknown problems on windows\n// in tracemonkey and various other pdfs with type1 fonts.\nvar HINTING_ENABLED = false;\n\n/*\n * CharStrings are encoded following the the CharString Encoding sequence\n * describe in Chapter 6 of the \"Adobe Type1 Font Format\" specification.\n * The value in a byte indicates a command, a number, or subsequent bytes\n * that are to be interpreted in a special way.\n *\n * CharString Number Encoding:\n *  A CharString byte containing the values from 32 through 255 inclusive\n *  indicate an integer. These values are decoded in four ranges.\n *\n * 1. A CharString byte containing a value, v, between 32 and 246 inclusive,\n * indicate the integer v - 139. Thus, the integer values from -107 through\n * 107 inclusive may be encoded in single byte.\n *\n * 2. A CharString byte containing a value, v, between 247 and 250 inclusive,\n * indicates an integer involving the next byte, w, according to the formula:\n * [(v - 247) x 256] + w + 108\n *\n * 3. A CharString byte containing a value, v, between 251 and 254 inclusive,\n * indicates an integer involving the next byte, w, according to the formula:\n * -[(v - 251) * 256] - w - 108\n *\n * 4. A CharString containing the value 255 indicates that the next 4 bytes\n * are a two complement signed integer. The first of these bytes contains the\n * highest order bits, the second byte contains the next higher order bits\n * and the fourth byte contain the lowest order bits.\n *\n *\n * CharString Command Encoding:\n *  CharStrings commands are encoded in 1 or 2 bytes.\n *\n *  Single byte commands are encoded in 1 byte that contains a value between\n *  0 and 31 inclusive.\n *  If a command byte contains the value 12, then the value in the next byte\n *  indicates a command. This \"escape\" mechanism allows many extra commands\n * to be encoded and this encoding technique helps to minimize the length of\n * the charStrings.\n */\nvar Type1CharString = (function Type1CharStringClosure() {\n  var COMMAND_MAP = {\n    hstem: [1],\n    vstem: [3],\n    vmoveto: [4],\n    rlineto: [5],\n    hlineto: [6],\n    vlineto: [7],\n    rrcurveto: [8],\n    callsubr: [10],\n    flex: [12, 35],\n    drop: [12, 18],\n    endchar: [14],\n    rmoveto: [21],\n    hmoveto: [22],\n    vhcurveto: [30],\n    hvcurveto: [31],\n  };\n\n  // eslint-disable-next-line no-shadow\n  function Type1CharString() {\n    this.width = 0;\n    this.lsb = 0;\n    this.flexing = false;\n    this.output = [];\n    this.stack = [];\n  }\n\n  Type1CharString.prototype = {\n    convert: function Type1CharString_convert(\n      encoded,\n      subrs,\n      seacAnalysisEnabled\n    ) {\n      var count = encoded.length;\n      var error = false;\n      var wx, sbx, subrNumber;\n      for (var i = 0; i < count; i++) {\n        var value = encoded[i];\n        if (value < 32) {\n          if (value === 12) {\n            value = (value << 8) + encoded[++i];\n          }\n          switch (value) {\n            case 1: // hstem\n              if (!HINTING_ENABLED) {\n                this.stack = [];\n                break;\n              }\n              error = this.executeCommand(2, COMMAND_MAP.hstem);\n              break;\n            case 3: // vstem\n              if (!HINTING_ENABLED) {\n                this.stack = [];\n                break;\n              }\n              error = this.executeCommand(2, COMMAND_MAP.vstem);\n              break;\n            case 4: // vmoveto\n              if (this.flexing) {\n                if (this.stack.length < 1) {\n                  error = true;\n                  break;\n                }\n                // Add the dx for flex and but also swap the values so they are\n                // the right order.\n                var dy = this.stack.pop();\n                this.stack.push(0, dy);\n                break;\n              }\n              error = this.executeCommand(1, COMMAND_MAP.vmoveto);\n              break;\n            case 5: // rlineto\n              error = this.executeCommand(2, COMMAND_MAP.rlineto);\n              break;\n            case 6: // hlineto\n              error = this.executeCommand(1, COMMAND_MAP.hlineto);\n              break;\n            case 7: // vlineto\n              error = this.executeCommand(1, COMMAND_MAP.vlineto);\n              break;\n            case 8: // rrcurveto\n              error = this.executeCommand(6, COMMAND_MAP.rrcurveto);\n              break;\n            case 9: // closepath\n              // closepath is a Type1 command that does not take argument and is\n              // useless in Type2 and it can simply be ignored.\n              this.stack = [];\n              break;\n            case 10: // callsubr\n              if (this.stack.length < 1) {\n                error = true;\n                break;\n              }\n              subrNumber = this.stack.pop();\n              if (!subrs[subrNumber]) {\n                error = true;\n                break;\n              }\n              error = this.convert(\n                subrs[subrNumber],\n                subrs,\n                seacAnalysisEnabled\n              );\n              break;\n            case 11: // return\n              return error;\n            case 13: // hsbw\n              if (this.stack.length < 2) {\n                error = true;\n                break;\n              }\n              // To convert to type2 we have to move the width value to the\n              // first part of the charstring and then use hmoveto with lsb.\n              wx = this.stack.pop();\n              sbx = this.stack.pop();\n              this.lsb = sbx;\n              this.width = wx;\n              this.stack.push(wx, sbx);\n              error = this.executeCommand(2, COMMAND_MAP.hmoveto);\n              break;\n            case 14: // endchar\n              this.output.push(COMMAND_MAP.endchar[0]);\n              break;\n            case 21: // rmoveto\n              if (this.flexing) {\n                break;\n              }\n              error = this.executeCommand(2, COMMAND_MAP.rmoveto);\n              break;\n            case 22: // hmoveto\n              if (this.flexing) {\n                // Add the dy for flex.\n                this.stack.push(0);\n                break;\n              }\n              error = this.executeCommand(1, COMMAND_MAP.hmoveto);\n              break;\n            case 30: // vhcurveto\n              error = this.executeCommand(4, COMMAND_MAP.vhcurveto);\n              break;\n            case 31: // hvcurveto\n              error = this.executeCommand(4, COMMAND_MAP.hvcurveto);\n              break;\n            case (12 << 8) + 0: // dotsection\n              // dotsection is a Type1 command to specify some hinting feature\n              // for dots that do not take a parameter and it can safely be\n              // ignored for Type2.\n              this.stack = [];\n              break;\n            case (12 << 8) + 1: // vstem3\n              if (!HINTING_ENABLED) {\n                this.stack = [];\n                break;\n              }\n              // [vh]stem3 are Type1 only and Type2 supports [vh]stem with\n              // multiple parameters, so instead of returning [vh]stem3 take a\n              // shortcut and return [vhstem] instead.\n              error = this.executeCommand(2, COMMAND_MAP.vstem);\n              break;\n            case (12 << 8) + 2: // hstem3\n              if (!HINTING_ENABLED) {\n                this.stack = [];\n                break;\n              }\n              // See vstem3.\n              error = this.executeCommand(2, COMMAND_MAP.hstem);\n              break;\n            case (12 << 8) + 6: // seac\n              // seac is like type 2's special endchar but it doesn't use the\n              // first argument asb, so remove it.\n              if (seacAnalysisEnabled) {\n                const asb = this.stack[this.stack.length - 5];\n                this.seac = this.stack.splice(-4, 4);\n                this.seac[0] += this.lsb - asb;\n                error = this.executeCommand(0, COMMAND_MAP.endchar);\n              } else {\n                error = this.executeCommand(4, COMMAND_MAP.endchar);\n              }\n              break;\n            case (12 << 8) + 7: // sbw\n              if (this.stack.length < 4) {\n                error = true;\n                break;\n              }\n              // To convert to type2 we have to move the width value to the\n              // first part of the charstring and then use rmoveto with\n              // (dx, dy). The height argument will not be used for vmtx and\n              // vhea tables reconstruction -- ignoring it.\n              this.stack.pop(); // wy\n              wx = this.stack.pop();\n              var sby = this.stack.pop();\n              sbx = this.stack.pop();\n              this.lsb = sbx;\n              this.width = wx;\n              this.stack.push(wx, sbx, sby);\n              error = this.executeCommand(3, COMMAND_MAP.rmoveto);\n              break;\n            case (12 << 8) + 12: // div\n              if (this.stack.length < 2) {\n                error = true;\n                break;\n              }\n              var num2 = this.stack.pop();\n              var num1 = this.stack.pop();\n              this.stack.push(num1 / num2);\n              break;\n            case (12 << 8) + 16: // callothersubr\n              if (this.stack.length < 2) {\n                error = true;\n                break;\n              }\n              subrNumber = this.stack.pop();\n              var numArgs = this.stack.pop();\n              if (subrNumber === 0 && numArgs === 3) {\n                var flexArgs = this.stack.splice(this.stack.length - 17, 17);\n                this.stack.push(\n                  flexArgs[2] + flexArgs[0], // bcp1x + rpx\n                  flexArgs[3] + flexArgs[1], // bcp1y + rpy\n                  flexArgs[4], // bcp2x\n                  flexArgs[5], // bcp2y\n                  flexArgs[6], // p2x\n                  flexArgs[7], // p2y\n                  flexArgs[8], // bcp3x\n                  flexArgs[9], // bcp3y\n                  flexArgs[10], // bcp4x\n                  flexArgs[11], // bcp4y\n                  flexArgs[12], // p3x\n                  flexArgs[13], // p3y\n                  flexArgs[14] // flexDepth\n                  // 15 = finalx unused by flex\n                  // 16 = finaly unused by flex\n                );\n                error = this.executeCommand(13, COMMAND_MAP.flex, true);\n                this.flexing = false;\n                this.stack.push(flexArgs[15], flexArgs[16]);\n              } else if (subrNumber === 1 && numArgs === 0) {\n                this.flexing = true;\n              }\n              break;\n            case (12 << 8) + 17: // pop\n              // Ignore this since it is only used with othersubr.\n              break;\n            case (12 << 8) + 33: // setcurrentpoint\n              // Ignore for now.\n              this.stack = [];\n              break;\n            default:\n              warn('Unknown type 1 charstring command of \"' + value + '\"');\n              break;\n          }\n          if (error) {\n            break;\n          }\n          continue;\n        } else if (value <= 246) {\n          value = value - 139;\n        } else if (value <= 250) {\n          value = (value - 247) * 256 + encoded[++i] + 108;\n        } else if (value <= 254) {\n          value = -((value - 251) * 256) - encoded[++i] - 108;\n        } else {\n          value =\n            ((encoded[++i] & 0xff) << 24) |\n            ((encoded[++i] & 0xff) << 16) |\n            ((encoded[++i] & 0xff) << 8) |\n            ((encoded[++i] & 0xff) << 0);\n        }\n        this.stack.push(value);\n      }\n      return error;\n    },\n\n    executeCommand(howManyArgs, command, keepStack) {\n      var stackLength = this.stack.length;\n      if (howManyArgs > stackLength) {\n        return true;\n      }\n      var start = stackLength - howManyArgs;\n      for (var i = start; i < stackLength; i++) {\n        var value = this.stack[i];\n        if (Number.isInteger(value)) {\n          this.output.push(28, (value >> 8) & 0xff, value & 0xff);\n        } else {\n          // fixed point\n          value = (65536 * value) | 0;\n          this.output.push(\n            255,\n            (value >> 24) & 0xff,\n            (value >> 16) & 0xff,\n            (value >> 8) & 0xff,\n            value & 0xff\n          );\n        }\n      }\n      this.output.push.apply(this.output, command);\n      if (keepStack) {\n        this.stack.splice(start, howManyArgs);\n      } else {\n        this.stack.length = 0;\n      }\n      return false;\n    },\n  };\n\n  return Type1CharString;\n})();\n\n/*\n * Type1Parser encapsulate the needed code for parsing a Type1 font\n * program. Some of its logic depends on the Type2 charstrings\n * structure.\n * Note: this doesn't really parse the font since that would require evaluation\n * of PostScript, but it is possible in most cases to extract what we need\n * without a full parse.\n */\nvar Type1Parser = (function Type1ParserClosure() {\n  /*\n   * Decrypt a Sequence of Ciphertext Bytes to Produce the Original Sequence\n   * of Plaintext Bytes. The function took a key as a parameter which can be\n   * for decrypting the eexec block of for decoding charStrings.\n   */\n  var EEXEC_ENCRYPT_KEY = 55665;\n  var CHAR_STRS_ENCRYPT_KEY = 4330;\n\n  function isHexDigit(code) {\n    return (\n      (code >= 48 && code <= 57) || // '0'-'9'\n      (code >= 65 && code <= 70) || // 'A'-'F'\n      (code >= 97 && code <= 102) // 'a'-'f'\n    );\n  }\n\n  function decrypt(data, key, discardNumber) {\n    if (discardNumber >= data.length) {\n      return new Uint8Array(0);\n    }\n    var r = key | 0,\n      c1 = 52845,\n      c2 = 22719,\n      i,\n      j;\n    for (i = 0; i < discardNumber; i++) {\n      r = ((data[i] + r) * c1 + c2) & ((1 << 16) - 1);\n    }\n    var count = data.length - discardNumber;\n    var decrypted = new Uint8Array(count);\n    for (i = discardNumber, j = 0; j < count; i++, j++) {\n      var value = data[i];\n      decrypted[j] = value ^ (r >> 8);\n      r = ((value + r) * c1 + c2) & ((1 << 16) - 1);\n    }\n    return decrypted;\n  }\n\n  function decryptAscii(data, key, discardNumber) {\n    var r = key | 0,\n      c1 = 52845,\n      c2 = 22719;\n    var count = data.length,\n      maybeLength = count >>> 1;\n    var decrypted = new Uint8Array(maybeLength);\n    var i, j;\n    for (i = 0, j = 0; i < count; i++) {\n      var digit1 = data[i];\n      if (!isHexDigit(digit1)) {\n        continue;\n      }\n      i++;\n      var digit2;\n      while (i < count && !isHexDigit((digit2 = data[i]))) {\n        i++;\n      }\n      if (i < count) {\n        var value = parseInt(String.fromCharCode(digit1, digit2), 16);\n        decrypted[j++] = value ^ (r >> 8);\n        r = ((value + r) * c1 + c2) & ((1 << 16) - 1);\n      }\n    }\n    return decrypted.slice(discardNumber, j);\n  }\n\n  function isSpecial(c) {\n    return (\n      c === /* '/' = */ 0x2f ||\n      c === /* '[' = */ 0x5b ||\n      c === /* ']' = */ 0x5d ||\n      c === /* '{' = */ 0x7b ||\n      c === /* '}' = */ 0x7d ||\n      c === /* '(' = */ 0x28 ||\n      c === /* ')' = */ 0x29\n    );\n  }\n\n  // eslint-disable-next-line no-shadow\n  function Type1Parser(stream, encrypted, seacAnalysisEnabled) {\n    if (encrypted) {\n      var data = stream.getBytes();\n      var isBinary = !(\n        (isHexDigit(data[0]) || isWhiteSpace(data[0])) &&\n        isHexDigit(data[1]) &&\n        isHexDigit(data[2]) &&\n        isHexDigit(data[3]) &&\n        isHexDigit(data[4]) &&\n        isHexDigit(data[5]) &&\n        isHexDigit(data[6]) &&\n        isHexDigit(data[7])\n      );\n      stream = new Stream(\n        isBinary\n          ? decrypt(data, EEXEC_ENCRYPT_KEY, 4)\n          : decryptAscii(data, EEXEC_ENCRYPT_KEY, 4)\n      );\n    }\n    this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n\n    this.stream = stream;\n    this.nextChar();\n  }\n\n  Type1Parser.prototype = {\n    readNumberArray: function Type1Parser_readNumberArray() {\n      this.getToken(); // read '[' or '{' (arrays can start with either)\n      var array = [];\n      while (true) {\n        var token = this.getToken();\n        if (token === null || token === \"]\" || token === \"}\") {\n          break;\n        }\n        array.push(parseFloat(token || 0));\n      }\n      return array;\n    },\n\n    readNumber: function Type1Parser_readNumber() {\n      var token = this.getToken();\n      return parseFloat(token || 0);\n    },\n\n    readInt: function Type1Parser_readInt() {\n      // Use '| 0' to prevent setting a double into length such as the double\n      // does not flow into the loop variable.\n      var token = this.getToken();\n      return parseInt(token || 0, 10) | 0;\n    },\n\n    readBoolean: function Type1Parser_readBoolean() {\n      var token = this.getToken();\n\n      // Use 1 and 0 since that's what type2 charstrings use.\n      return token === \"true\" ? 1 : 0;\n    },\n\n    nextChar: function Type1_nextChar() {\n      return (this.currentChar = this.stream.getByte());\n    },\n\n    getToken: function Type1Parser_getToken() {\n      // Eat whitespace and comments.\n      var comment = false;\n      var ch = this.currentChar;\n      while (true) {\n        if (ch === -1) {\n          return null;\n        }\n\n        if (comment) {\n          if (ch === 0x0a || ch === 0x0d) {\n            comment = false;\n          }\n        } else if (ch === /* '%' = */ 0x25) {\n          comment = true;\n        } else if (!isWhiteSpace(ch)) {\n          break;\n        }\n        ch = this.nextChar();\n      }\n      if (isSpecial(ch)) {\n        this.nextChar();\n        return String.fromCharCode(ch);\n      }\n      var token = \"\";\n      do {\n        token += String.fromCharCode(ch);\n        ch = this.nextChar();\n      } while (ch >= 0 && !isWhiteSpace(ch) && !isSpecial(ch));\n      return token;\n    },\n\n    readCharStrings: function Type1Parser_readCharStrings(bytes, lenIV) {\n      if (lenIV === -1) {\n        // This isn't in the spec, but Adobe's tx program handles -1\n        // as plain text.\n        return bytes;\n      }\n      return decrypt(bytes, CHAR_STRS_ENCRYPT_KEY, lenIV);\n    },\n\n    /*\n     * Returns an object containing a Subrs array and a CharStrings\n     * array extracted from and eexec encrypted block of data\n     */\n    extractFontProgram: function Type1Parser_extractFontProgram(properties) {\n      var stream = this.stream;\n\n      var subrs = [],\n        charstrings = [];\n      var privateData = Object.create(null);\n      privateData.lenIV = 4;\n      var program = {\n        subrs: [],\n        charstrings: [],\n        properties: {\n          privateData,\n        },\n      };\n      var token, length, data, lenIV, encoded;\n      while ((token = this.getToken()) !== null) {\n        if (token !== \"/\") {\n          continue;\n        }\n        token = this.getToken();\n        switch (token) {\n          case \"CharStrings\":\n            // The number immediately following CharStrings must be greater or\n            // equal to the number of CharStrings.\n            this.getToken();\n            this.getToken(); // read in 'dict'\n            this.getToken(); // read in 'dup'\n            this.getToken(); // read in 'begin'\n            while (true) {\n              token = this.getToken();\n              if (token === null || token === \"end\") {\n                break;\n              }\n\n              if (token !== \"/\") {\n                continue;\n              }\n              var glyph = this.getToken();\n              length = this.readInt();\n              this.getToken(); // read in 'RD' or '-|'\n              data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);\n              lenIV = program.properties.privateData.lenIV;\n              encoded = this.readCharStrings(data, lenIV);\n              this.nextChar();\n              token = this.getToken(); // read in 'ND' or '|-'\n              if (token === \"noaccess\") {\n                this.getToken(); // read in 'def'\n              }\n              charstrings.push({\n                glyph,\n                encoded,\n              });\n            }\n            break;\n          case \"Subrs\":\n            this.readInt(); // num\n            this.getToken(); // read in 'array'\n            while (this.getToken() === \"dup\") {\n              const index = this.readInt();\n              length = this.readInt();\n              this.getToken(); // read in 'RD' or '-|'\n              data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);\n              lenIV = program.properties.privateData.lenIV;\n              encoded = this.readCharStrings(data, lenIV);\n              this.nextChar();\n              token = this.getToken(); // read in 'NP' or '|'\n              if (token === \"noaccess\") {\n                this.getToken(); // read in 'put'\n              }\n              subrs[index] = encoded;\n            }\n            break;\n          case \"BlueValues\":\n          case \"OtherBlues\":\n          case \"FamilyBlues\":\n          case \"FamilyOtherBlues\":\n            var blueArray = this.readNumberArray();\n            // *Blue* values may contain invalid data: disables reading of\n            // those values when hinting is disabled.\n            if (\n              blueArray.length > 0 &&\n              blueArray.length % 2 === 0 &&\n              HINTING_ENABLED\n            ) {\n              program.properties.privateData[token] = blueArray;\n            }\n            break;\n          case \"StemSnapH\":\n          case \"StemSnapV\":\n            program.properties.privateData[token] = this.readNumberArray();\n            break;\n          case \"StdHW\":\n          case \"StdVW\":\n            program.properties.privateData[token] = this.readNumberArray()[0];\n            break;\n          case \"BlueShift\":\n          case \"lenIV\":\n          case \"BlueFuzz\":\n          case \"BlueScale\":\n          case \"LanguageGroup\":\n          case \"ExpansionFactor\":\n            program.properties.privateData[token] = this.readNumber();\n            break;\n          case \"ForceBold\":\n            program.properties.privateData[token] = this.readBoolean();\n            break;\n        }\n      }\n\n      for (var i = 0; i < charstrings.length; i++) {\n        glyph = charstrings[i].glyph;\n        encoded = charstrings[i].encoded;\n        var charString = new Type1CharString();\n        var error = charString.convert(\n          encoded,\n          subrs,\n          this.seacAnalysisEnabled\n        );\n        var output = charString.output;\n        if (error) {\n          // It seems when FreeType encounters an error while evaluating a glyph\n          // that it completely ignores the glyph so we'll mimic that behaviour\n          // here and put an endchar to make the validator happy.\n          output = [14];\n        }\n        const charStringObject = {\n          glyphName: glyph,\n          charstring: output,\n          width: charString.width,\n          lsb: charString.lsb,\n          seac: charString.seac,\n        };\n        if (glyph === \".notdef\") {\n          // Make sure .notdef is at index zero (issue #11477).\n          program.charstrings.unshift(charStringObject);\n        } else {\n          program.charstrings.push(charStringObject);\n        }\n\n        // Attempt to replace missing widths, from the font dictionary /Widths\n        // entry, with ones from the font data (fixes issue11150_reduced.pdf).\n        if (properties.builtInEncoding) {\n          const index = properties.builtInEncoding.indexOf(glyph);\n          if (\n            index > -1 &&\n            properties.widths[index] === undefined &&\n            index >= properties.firstChar &&\n            index <= properties.lastChar\n          ) {\n            properties.widths[index] = charString.width;\n          }\n        }\n      }\n\n      return program;\n    },\n\n    extractFontHeader: function Type1Parser_extractFontHeader(properties) {\n      var token;\n      while ((token = this.getToken()) !== null) {\n        if (token !== \"/\") {\n          continue;\n        }\n        token = this.getToken();\n        switch (token) {\n          case \"FontMatrix\":\n            var matrix = this.readNumberArray();\n            properties.fontMatrix = matrix;\n            break;\n          case \"Encoding\":\n            var encodingArg = this.getToken();\n            var encoding;\n            if (!/^\\d+$/.test(encodingArg)) {\n              // encoding name is specified\n              encoding = getEncoding(encodingArg);\n            } else {\n              encoding = [];\n              var size = parseInt(encodingArg, 10) | 0;\n              this.getToken(); // read in 'array'\n\n              for (var j = 0; j < size; j++) {\n                token = this.getToken();\n                // skipping till first dup or def (e.g. ignoring for statement)\n                while (token !== \"dup\" && token !== \"def\") {\n                  token = this.getToken();\n                  if (token === null) {\n                    return; // invalid header\n                  }\n                }\n                if (token === \"def\") {\n                  break; // read all array data\n                }\n                var index = this.readInt();\n                this.getToken(); // read in '/'\n                var glyph = this.getToken();\n                encoding[index] = glyph;\n                this.getToken(); // read the in 'put'\n              }\n            }\n            properties.builtInEncoding = encoding;\n            break;\n          case \"FontBBox\":\n            var fontBBox = this.readNumberArray();\n            // adjusting ascent/descent\n            properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n            properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n            properties.ascentScaled = true;\n            break;\n        }\n      }\n    },\n  };\n\n  return Type1Parser;\n})();\n\nexport { Type1Parser };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  assert,\n  FormatError,\n  info,\n  unreachable,\n  UNSUPPORTED_FEATURES,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { isStream } from \"./primitives.js\";\nimport { MissingDataException } from \"./core_utils.js\";\n\nvar ShadingType = {\n  FUNCTION_BASED: 1,\n  AXIAL: 2,\n  RADIAL: 3,\n  FREE_FORM_MESH: 4,\n  LATTICE_FORM_MESH: 5,\n  COONS_PATCH_MESH: 6,\n  TENSOR_PATCH_MESH: 7,\n};\n\nvar Pattern = (function PatternClosure() {\n  // Constructor should define this.getPattern\n  // eslint-disable-next-line no-shadow\n  function Pattern() {\n    unreachable(\"should not call Pattern constructor\");\n  }\n\n  Pattern.prototype = {\n    // Input: current Canvas context\n    // Output: the appropriate fillStyle or strokeStyle\n    getPattern: function Pattern_getPattern(ctx) {\n      unreachable(`Should not call Pattern.getStyle: ${ctx}`);\n    },\n  };\n\n  Pattern.parseShading = function (\n    shading,\n    matrix,\n    xref,\n    res,\n    handler,\n    pdfFunctionFactory,\n    localColorSpaceCache\n  ) {\n    var dict = isStream(shading) ? shading.dict : shading;\n    var type = dict.get(\"ShadingType\");\n\n    try {\n      switch (type) {\n        case ShadingType.AXIAL:\n        case ShadingType.RADIAL:\n          // Both radial and axial shadings are handled by RadialAxial shading.\n          return new Shadings.RadialAxial(\n            dict,\n            matrix,\n            xref,\n            res,\n            pdfFunctionFactory,\n            localColorSpaceCache\n          );\n        case ShadingType.FREE_FORM_MESH:\n        case ShadingType.LATTICE_FORM_MESH:\n        case ShadingType.COONS_PATCH_MESH:\n        case ShadingType.TENSOR_PATCH_MESH:\n          return new Shadings.Mesh(\n            shading,\n            matrix,\n            xref,\n            res,\n            pdfFunctionFactory,\n            localColorSpaceCache\n          );\n        default:\n          throw new FormatError(\"Unsupported ShadingType: \" + type);\n      }\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      handler.send(\"UnsupportedFeature\", {\n        featureId: UNSUPPORTED_FEATURES.shadingPattern,\n      });\n      warn(ex);\n      return new Shadings.Dummy();\n    }\n  };\n  return Pattern;\n})();\n\nvar Shadings = {};\n\n// A small number to offset the first/last color stops so we can insert ones to\n// support extend. Number.MIN_VALUE is too small and breaks the extend.\nShadings.SMALL_NUMBER = 1e-6;\n\n// Radial and axial shading have very similar implementations\n// If needed, the implementations can be broken into two classes\nShadings.RadialAxial = (function RadialAxialClosure() {\n  function RadialAxial(\n    dict,\n    matrix,\n    xref,\n    resources,\n    pdfFunctionFactory,\n    localColorSpaceCache\n  ) {\n    this.matrix = matrix;\n    this.coordsArr = dict.getArray(\"Coords\");\n    this.shadingType = dict.get(\"ShadingType\");\n    this.type = \"Pattern\";\n    const cs = ColorSpace.parse({\n      cs: dict.getRaw(\"ColorSpace\") || dict.getRaw(\"CS\"),\n      xref,\n      resources,\n      pdfFunctionFactory,\n      localColorSpaceCache,\n    });\n    this.cs = cs;\n    const bbox = dict.getArray(\"BBox\");\n    if (Array.isArray(bbox) && bbox.length === 4) {\n      this.bbox = Util.normalizeRect(bbox);\n    } else {\n      this.bbox = null;\n    }\n\n    var t0 = 0.0,\n      t1 = 1.0;\n    if (dict.has(\"Domain\")) {\n      var domainArr = dict.getArray(\"Domain\");\n      t0 = domainArr[0];\n      t1 = domainArr[1];\n    }\n\n    var extendStart = false,\n      extendEnd = false;\n    if (dict.has(\"Extend\")) {\n      var extendArr = dict.getArray(\"Extend\");\n      extendStart = extendArr[0];\n      extendEnd = extendArr[1];\n    }\n\n    if (\n      this.shadingType === ShadingType.RADIAL &&\n      (!extendStart || !extendEnd)\n    ) {\n      // Radial gradient only currently works if either circle is fully within\n      // the other circle.\n      var x1 = this.coordsArr[0];\n      var y1 = this.coordsArr[1];\n      var r1 = this.coordsArr[2];\n      var x2 = this.coordsArr[3];\n      var y2 = this.coordsArr[4];\n      var r2 = this.coordsArr[5];\n      var distance = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));\n      if (r1 <= r2 + distance && r2 <= r1 + distance) {\n        warn(\"Unsupported radial gradient.\");\n      }\n    }\n\n    this.extendStart = extendStart;\n    this.extendEnd = extendEnd;\n\n    var fnObj = dict.getRaw(\"Function\");\n    var fn = pdfFunctionFactory.createFromArray(fnObj);\n\n    // 10 samples seems good enough for now, but probably won't work\n    // if there are sharp color changes. Ideally, we would implement\n    // the spec faithfully and add lossless optimizations.\n    const NUMBER_OF_SAMPLES = 10;\n    const step = (t1 - t0) / NUMBER_OF_SAMPLES;\n\n    var colorStops = (this.colorStops = []);\n\n    // Protect against bad domains.\n    if (t0 >= t1 || step <= 0) {\n      // Acrobat doesn't seem to handle these cases so we'll ignore for\n      // now.\n      info(\"Bad shading domain.\");\n      return;\n    }\n\n    var color = new Float32Array(cs.numComps),\n      ratio = new Float32Array(1);\n    var rgbColor;\n    for (let i = 0; i <= NUMBER_OF_SAMPLES; i++) {\n      ratio[0] = t0 + i * step;\n      fn(ratio, 0, color, 0);\n      rgbColor = cs.getRgb(color, 0);\n      var cssColor = Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]);\n      colorStops.push([i / NUMBER_OF_SAMPLES, cssColor]);\n    }\n\n    var background = \"transparent\";\n    if (dict.has(\"Background\")) {\n      rgbColor = cs.getRgb(dict.get(\"Background\"), 0);\n      background = Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]);\n    }\n\n    if (!extendStart) {\n      // Insert a color stop at the front and offset the first real color stop\n      // so it doesn't conflict with the one we insert.\n      colorStops.unshift([0, background]);\n      colorStops[1][0] += Shadings.SMALL_NUMBER;\n    }\n    if (!extendEnd) {\n      // Same idea as above in extendStart but for the end.\n      colorStops[colorStops.length - 1][0] -= Shadings.SMALL_NUMBER;\n      colorStops.push([1, background]);\n    }\n\n    this.colorStops = colorStops;\n  }\n\n  RadialAxial.prototype = {\n    getIR: function RadialAxial_getIR() {\n      var coordsArr = this.coordsArr;\n      var shadingType = this.shadingType;\n      var type, p0, p1, r0, r1;\n      if (shadingType === ShadingType.AXIAL) {\n        p0 = [coordsArr[0], coordsArr[1]];\n        p1 = [coordsArr[2], coordsArr[3]];\n        r0 = null;\n        r1 = null;\n        type = \"axial\";\n      } else if (shadingType === ShadingType.RADIAL) {\n        p0 = [coordsArr[0], coordsArr[1]];\n        p1 = [coordsArr[3], coordsArr[4]];\n        r0 = coordsArr[2];\n        r1 = coordsArr[5];\n        type = \"radial\";\n      } else {\n        unreachable(`getPattern type unknown: ${shadingType}`);\n      }\n\n      var matrix = this.matrix;\n      if (matrix) {\n        p0 = Util.applyTransform(p0, matrix);\n        p1 = Util.applyTransform(p1, matrix);\n        if (shadingType === ShadingType.RADIAL) {\n          var scale = Util.singularValueDecompose2dScale(matrix);\n          r0 *= scale[0];\n          r1 *= scale[1];\n        }\n      }\n\n      return [\"RadialAxial\", type, this.bbox, this.colorStops, p0, p1, r0, r1];\n    },\n  };\n\n  return RadialAxial;\n})();\n\n// All mesh shading. For now, they will be presented as set of the triangles\n// to be drawn on the canvas and rgb color for each vertex.\nShadings.Mesh = (function MeshClosure() {\n  function MeshStreamReader(stream, context) {\n    this.stream = stream;\n    this.context = context;\n    this.buffer = 0;\n    this.bufferLength = 0;\n\n    var numComps = context.numComps;\n    this.tmpCompsBuf = new Float32Array(numComps);\n    var csNumComps = context.colorSpace.numComps;\n    this.tmpCsCompsBuf = context.colorFn\n      ? new Float32Array(csNumComps)\n      : this.tmpCompsBuf;\n  }\n  MeshStreamReader.prototype = {\n    get hasData() {\n      if (this.stream.end) {\n        return this.stream.pos < this.stream.end;\n      }\n      if (this.bufferLength > 0) {\n        return true;\n      }\n      var nextByte = this.stream.getByte();\n      if (nextByte < 0) {\n        return false;\n      }\n      this.buffer = nextByte;\n      this.bufferLength = 8;\n      return true;\n    },\n    readBits: function MeshStreamReader_readBits(n) {\n      var buffer = this.buffer;\n      var bufferLength = this.bufferLength;\n      if (n === 32) {\n        if (bufferLength === 0) {\n          return (\n            ((this.stream.getByte() << 24) |\n              (this.stream.getByte() << 16) |\n              (this.stream.getByte() << 8) |\n              this.stream.getByte()) >>>\n            0\n          );\n        }\n        buffer =\n          (buffer << 24) |\n          (this.stream.getByte() << 16) |\n          (this.stream.getByte() << 8) |\n          this.stream.getByte();\n        var nextByte = this.stream.getByte();\n        this.buffer = nextByte & ((1 << bufferLength) - 1);\n        return (\n          ((buffer << (8 - bufferLength)) |\n            ((nextByte & 0xff) >> bufferLength)) >>>\n          0\n        );\n      }\n      if (n === 8 && bufferLength === 0) {\n        return this.stream.getByte();\n      }\n      while (bufferLength < n) {\n        buffer = (buffer << 8) | this.stream.getByte();\n        bufferLength += 8;\n      }\n      bufferLength -= n;\n      this.bufferLength = bufferLength;\n      this.buffer = buffer & ((1 << bufferLength) - 1);\n      return buffer >> bufferLength;\n    },\n    align: function MeshStreamReader_align() {\n      this.buffer = 0;\n      this.bufferLength = 0;\n    },\n    readFlag: function MeshStreamReader_readFlag() {\n      return this.readBits(this.context.bitsPerFlag);\n    },\n    readCoordinate: function MeshStreamReader_readCoordinate() {\n      var bitsPerCoordinate = this.context.bitsPerCoordinate;\n      var xi = this.readBits(bitsPerCoordinate);\n      var yi = this.readBits(bitsPerCoordinate);\n      var decode = this.context.decode;\n      var scale =\n        bitsPerCoordinate < 32\n          ? 1 / ((1 << bitsPerCoordinate) - 1)\n          : 2.3283064365386963e-10; // 2 ^ -32\n      return [\n        xi * scale * (decode[1] - decode[0]) + decode[0],\n        yi * scale * (decode[3] - decode[2]) + decode[2],\n      ];\n    },\n    readComponents: function MeshStreamReader_readComponents() {\n      var numComps = this.context.numComps;\n      var bitsPerComponent = this.context.bitsPerComponent;\n      var scale =\n        bitsPerComponent < 32\n          ? 1 / ((1 << bitsPerComponent) - 1)\n          : 2.3283064365386963e-10; // 2 ^ -32\n      var decode = this.context.decode;\n      var components = this.tmpCompsBuf;\n      for (var i = 0, j = 4; i < numComps; i++, j += 2) {\n        var ci = this.readBits(bitsPerComponent);\n        components[i] = ci * scale * (decode[j + 1] - decode[j]) + decode[j];\n      }\n      var color = this.tmpCsCompsBuf;\n      if (this.context.colorFn) {\n        this.context.colorFn(components, 0, color, 0);\n      }\n      return this.context.colorSpace.getRgb(color, 0);\n    },\n  };\n\n  function decodeType4Shading(mesh, reader) {\n    var coords = mesh.coords;\n    var colors = mesh.colors;\n    var operators = [];\n    var ps = []; // not maintaining cs since that will match ps\n    var verticesLeft = 0; // assuming we have all data to start a new triangle\n    while (reader.hasData) {\n      var f = reader.readFlag();\n      var coord = reader.readCoordinate();\n      var color = reader.readComponents();\n      if (verticesLeft === 0) {\n        // ignoring flags if we started a triangle\n        if (!(0 <= f && f <= 2)) {\n          throw new FormatError(\"Unknown type4 flag\");\n        }\n        switch (f) {\n          case 0:\n            verticesLeft = 3;\n            break;\n          case 1:\n            ps.push(ps[ps.length - 2], ps[ps.length - 1]);\n            verticesLeft = 1;\n            break;\n          case 2:\n            ps.push(ps[ps.length - 3], ps[ps.length - 1]);\n            verticesLeft = 1;\n            break;\n        }\n        operators.push(f);\n      }\n      ps.push(coords.length);\n      coords.push(coord);\n      colors.push(color);\n      verticesLeft--;\n\n      reader.align();\n    }\n    mesh.figures.push({\n      type: \"triangles\",\n      coords: new Int32Array(ps),\n      colors: new Int32Array(ps),\n    });\n  }\n\n  function decodeType5Shading(mesh, reader, verticesPerRow) {\n    var coords = mesh.coords;\n    var colors = mesh.colors;\n    var ps = []; // not maintaining cs since that will match ps\n    while (reader.hasData) {\n      var coord = reader.readCoordinate();\n      var color = reader.readComponents();\n      ps.push(coords.length);\n      coords.push(coord);\n      colors.push(color);\n    }\n    mesh.figures.push({\n      type: \"lattice\",\n      coords: new Int32Array(ps),\n      colors: new Int32Array(ps),\n      verticesPerRow,\n    });\n  }\n\n  var MIN_SPLIT_PATCH_CHUNKS_AMOUNT = 3;\n  var MAX_SPLIT_PATCH_CHUNKS_AMOUNT = 20;\n\n  var TRIANGLE_DENSITY = 20; // count of triangles per entire mesh bounds\n\n  var getB = (function getBClosure() {\n    function buildB(count) {\n      var lut = [];\n      for (var i = 0; i <= count; i++) {\n        var t = i / count,\n          t_ = 1 - t;\n        lut.push(\n          new Float32Array([\n            t_ * t_ * t_,\n            3 * t * t_ * t_,\n            3 * t * t * t_,\n            t * t * t,\n          ])\n        );\n      }\n      return lut;\n    }\n    var cache = [];\n\n    // eslint-disable-next-line no-shadow\n    return function getB(count) {\n      if (!cache[count]) {\n        cache[count] = buildB(count);\n      }\n      return cache[count];\n    };\n  })();\n\n  function buildFigureFromPatch(mesh, index) {\n    var figure = mesh.figures[index];\n    assert(figure.type === \"patch\", \"Unexpected patch mesh figure\");\n\n    var coords = mesh.coords,\n      colors = mesh.colors;\n    var pi = figure.coords;\n    var ci = figure.colors;\n\n    var figureMinX = Math.min(\n      coords[pi[0]][0],\n      coords[pi[3]][0],\n      coords[pi[12]][0],\n      coords[pi[15]][0]\n    );\n    var figureMinY = Math.min(\n      coords[pi[0]][1],\n      coords[pi[3]][1],\n      coords[pi[12]][1],\n      coords[pi[15]][1]\n    );\n    var figureMaxX = Math.max(\n      coords[pi[0]][0],\n      coords[pi[3]][0],\n      coords[pi[12]][0],\n      coords[pi[15]][0]\n    );\n    var figureMaxY = Math.max(\n      coords[pi[0]][1],\n      coords[pi[3]][1],\n      coords[pi[12]][1],\n      coords[pi[15]][1]\n    );\n    var splitXBy = Math.ceil(\n      ((figureMaxX - figureMinX) * TRIANGLE_DENSITY) /\n        (mesh.bounds[2] - mesh.bounds[0])\n    );\n    splitXBy = Math.max(\n      MIN_SPLIT_PATCH_CHUNKS_AMOUNT,\n      Math.min(MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitXBy)\n    );\n    var splitYBy = Math.ceil(\n      ((figureMaxY - figureMinY) * TRIANGLE_DENSITY) /\n        (mesh.bounds[3] - mesh.bounds[1])\n    );\n    splitYBy = Math.max(\n      MIN_SPLIT_PATCH_CHUNKS_AMOUNT,\n      Math.min(MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitYBy)\n    );\n\n    var verticesPerRow = splitXBy + 1;\n    var figureCoords = new Int32Array((splitYBy + 1) * verticesPerRow);\n    var figureColors = new Int32Array((splitYBy + 1) * verticesPerRow);\n    var k = 0;\n    var cl = new Uint8Array(3),\n      cr = new Uint8Array(3);\n    var c0 = colors[ci[0]],\n      c1 = colors[ci[1]],\n      c2 = colors[ci[2]],\n      c3 = colors[ci[3]];\n    var bRow = getB(splitYBy),\n      bCol = getB(splitXBy);\n    for (var row = 0; row <= splitYBy; row++) {\n      cl[0] = ((c0[0] * (splitYBy - row) + c2[0] * row) / splitYBy) | 0;\n      cl[1] = ((c0[1] * (splitYBy - row) + c2[1] * row) / splitYBy) | 0;\n      cl[2] = ((c0[2] * (splitYBy - row) + c2[2] * row) / splitYBy) | 0;\n\n      cr[0] = ((c1[0] * (splitYBy - row) + c3[0] * row) / splitYBy) | 0;\n      cr[1] = ((c1[1] * (splitYBy - row) + c3[1] * row) / splitYBy) | 0;\n      cr[2] = ((c1[2] * (splitYBy - row) + c3[2] * row) / splitYBy) | 0;\n\n      for (var col = 0; col <= splitXBy; col++, k++) {\n        if (\n          (row === 0 || row === splitYBy) &&\n          (col === 0 || col === splitXBy)\n        ) {\n          continue;\n        }\n        var x = 0,\n          y = 0;\n        var q = 0;\n        for (var i = 0; i <= 3; i++) {\n          for (var j = 0; j <= 3; j++, q++) {\n            var m = bRow[row][i] * bCol[col][j];\n            x += coords[pi[q]][0] * m;\n            y += coords[pi[q]][1] * m;\n          }\n        }\n        figureCoords[k] = coords.length;\n        coords.push([x, y]);\n        figureColors[k] = colors.length;\n        var newColor = new Uint8Array(3);\n        newColor[0] = ((cl[0] * (splitXBy - col) + cr[0] * col) / splitXBy) | 0;\n        newColor[1] = ((cl[1] * (splitXBy - col) + cr[1] * col) / splitXBy) | 0;\n        newColor[2] = ((cl[2] * (splitXBy - col) + cr[2] * col) / splitXBy) | 0;\n        colors.push(newColor);\n      }\n    }\n    figureCoords[0] = pi[0];\n    figureColors[0] = ci[0];\n    figureCoords[splitXBy] = pi[3];\n    figureColors[splitXBy] = ci[1];\n    figureCoords[verticesPerRow * splitYBy] = pi[12];\n    figureColors[verticesPerRow * splitYBy] = ci[2];\n    figureCoords[verticesPerRow * splitYBy + splitXBy] = pi[15];\n    figureColors[verticesPerRow * splitYBy + splitXBy] = ci[3];\n\n    mesh.figures[index] = {\n      type: \"lattice\",\n      coords: figureCoords,\n      colors: figureColors,\n      verticesPerRow,\n    };\n  }\n\n  function decodeType6Shading(mesh, reader) {\n    // A special case of Type 7. The p11, p12, p21, p22 automatically filled\n    var coords = mesh.coords;\n    var colors = mesh.colors;\n    var ps = new Int32Array(16); // p00, p10, ..., p30, p01, ..., p33\n    var cs = new Int32Array(4); // c00, c30, c03, c33\n    while (reader.hasData) {\n      var f = reader.readFlag();\n      if (!(0 <= f && f <= 3)) {\n        throw new FormatError(\"Unknown type6 flag\");\n      }\n      var i, ii;\n      var pi = coords.length;\n      for (i = 0, ii = f !== 0 ? 8 : 12; i < ii; i++) {\n        coords.push(reader.readCoordinate());\n      }\n      var ci = colors.length;\n      for (i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {\n        colors.push(reader.readComponents());\n      }\n      var tmp1, tmp2, tmp3, tmp4;\n      switch (f) {\n        // prettier-ignore\n        case 0:\n          ps[12] = pi + 3; ps[13] = pi + 4;  ps[14] = pi + 5;  ps[15] = pi + 6;\n          ps[ 8] = pi + 2; /* values for 5, 6, 9, 10 are    */ ps[11] = pi + 7;\n          ps[ 4] = pi + 1; /* calculated below              */ ps[ 7] = pi + 8;\n          ps[ 0] = pi;     ps[ 1] = pi + 11; ps[ 2] = pi + 10; ps[ 3] = pi + 9;\n          cs[2] = ci + 1; cs[3] = ci + 2;\n          cs[0] = ci;     cs[1] = ci + 3;\n          break;\n        // prettier-ignore\n        case 1:\n          tmp1 = ps[12]; tmp2 = ps[13]; tmp3 = ps[14]; tmp4 = ps[15];\n          ps[12] = tmp4; ps[13] = pi + 0;  ps[14] = pi + 1;  ps[15] = pi + 2;\n          ps[ 8] = tmp3; /* values for 5, 6, 9, 10 are    */ ps[11] = pi + 3;\n          ps[ 4] = tmp2; /* calculated below              */ ps[ 7] = pi + 4;\n          ps[ 0] = tmp1; ps[ 1] = pi + 7;   ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n          tmp1 = cs[2]; tmp2 = cs[3];\n          cs[2] = tmp2;   cs[3] = ci;\n          cs[0] = tmp1;   cs[1] = ci + 1;\n          break;\n        // prettier-ignore\n        case 2:\n          tmp1 = ps[15];\n          tmp2 = ps[11];\n          ps[12] = ps[3];  ps[13] = pi + 0; ps[14] = pi + 1;   ps[15] = pi + 2;\n          ps[ 8] = ps[7];  /* values for 5, 6, 9, 10 are    */ ps[11] = pi + 3;\n          ps[ 4] = tmp2;   /* calculated below              */ ps[ 7] = pi + 4;\n          ps[ 0] = tmp1;  ps[ 1] = pi + 7;   ps[ 2] = pi + 6;  ps[ 3] = pi + 5;\n          tmp1 = cs[3];\n          cs[2] = cs[1]; cs[3] = ci;\n          cs[0] = tmp1;  cs[1] = ci + 1;\n          break;\n        // prettier-ignore\n        case 3:\n          ps[12] = ps[0];  ps[13] = pi + 0;   ps[14] = pi + 1; ps[15] = pi + 2;\n          ps[ 8] = ps[1];  /* values for 5, 6, 9, 10 are    */ ps[11] = pi + 3;\n          ps[ 4] = ps[2];  /* calculated below              */ ps[ 7] = pi + 4;\n          ps[ 0] = ps[3];  ps[ 1] = pi + 7;   ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n          cs[2] = cs[0]; cs[3] = ci;\n          cs[0] = cs[1]; cs[1] = ci + 1;\n          break;\n      }\n      // set p11, p12, p21, p22\n      ps[5] = coords.length;\n      coords.push([\n        (-4 * coords[ps[0]][0] -\n          coords[ps[15]][0] +\n          6 * (coords[ps[4]][0] + coords[ps[1]][0]) -\n          2 * (coords[ps[12]][0] + coords[ps[3]][0]) +\n          3 * (coords[ps[13]][0] + coords[ps[7]][0])) /\n          9,\n        (-4 * coords[ps[0]][1] -\n          coords[ps[15]][1] +\n          6 * (coords[ps[4]][1] + coords[ps[1]][1]) -\n          2 * (coords[ps[12]][1] + coords[ps[3]][1]) +\n          3 * (coords[ps[13]][1] + coords[ps[7]][1])) /\n          9,\n      ]);\n      ps[6] = coords.length;\n      coords.push([\n        (-4 * coords[ps[3]][0] -\n          coords[ps[12]][0] +\n          6 * (coords[ps[2]][0] + coords[ps[7]][0]) -\n          2 * (coords[ps[0]][0] + coords[ps[15]][0]) +\n          3 * (coords[ps[4]][0] + coords[ps[14]][0])) /\n          9,\n        (-4 * coords[ps[3]][1] -\n          coords[ps[12]][1] +\n          6 * (coords[ps[2]][1] + coords[ps[7]][1]) -\n          2 * (coords[ps[0]][1] + coords[ps[15]][1]) +\n          3 * (coords[ps[4]][1] + coords[ps[14]][1])) /\n          9,\n      ]);\n      ps[9] = coords.length;\n      coords.push([\n        (-4 * coords[ps[12]][0] -\n          coords[ps[3]][0] +\n          6 * (coords[ps[8]][0] + coords[ps[13]][0]) -\n          2 * (coords[ps[0]][0] + coords[ps[15]][0]) +\n          3 * (coords[ps[11]][0] + coords[ps[1]][0])) /\n          9,\n        (-4 * coords[ps[12]][1] -\n          coords[ps[3]][1] +\n          6 * (coords[ps[8]][1] + coords[ps[13]][1]) -\n          2 * (coords[ps[0]][1] + coords[ps[15]][1]) +\n          3 * (coords[ps[11]][1] + coords[ps[1]][1])) /\n          9,\n      ]);\n      ps[10] = coords.length;\n      coords.push([\n        (-4 * coords[ps[15]][0] -\n          coords[ps[0]][0] +\n          6 * (coords[ps[11]][0] + coords[ps[14]][0]) -\n          2 * (coords[ps[12]][0] + coords[ps[3]][0]) +\n          3 * (coords[ps[2]][0] + coords[ps[8]][0])) /\n          9,\n        (-4 * coords[ps[15]][1] -\n          coords[ps[0]][1] +\n          6 * (coords[ps[11]][1] + coords[ps[14]][1]) -\n          2 * (coords[ps[12]][1] + coords[ps[3]][1]) +\n          3 * (coords[ps[2]][1] + coords[ps[8]][1])) /\n          9,\n      ]);\n      mesh.figures.push({\n        type: \"patch\",\n        coords: new Int32Array(ps), // making copies of ps and cs\n        colors: new Int32Array(cs),\n      });\n    }\n  }\n\n  function decodeType7Shading(mesh, reader) {\n    var coords = mesh.coords;\n    var colors = mesh.colors;\n    var ps = new Int32Array(16); // p00, p10, ..., p30, p01, ..., p33\n    var cs = new Int32Array(4); // c00, c30, c03, c33\n    while (reader.hasData) {\n      var f = reader.readFlag();\n      if (!(0 <= f && f <= 3)) {\n        throw new FormatError(\"Unknown type7 flag\");\n      }\n      var i, ii;\n      var pi = coords.length;\n      for (i = 0, ii = f !== 0 ? 12 : 16; i < ii; i++) {\n        coords.push(reader.readCoordinate());\n      }\n      var ci = colors.length;\n      for (i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {\n        colors.push(reader.readComponents());\n      }\n      var tmp1, tmp2, tmp3, tmp4;\n      switch (f) {\n        // prettier-ignore\n        case 0:\n          ps[12] = pi + 3; ps[13] = pi + 4;  ps[14] = pi + 5;  ps[15] = pi + 6;\n          ps[ 8] = pi + 2; ps[ 9] = pi + 13; ps[10] = pi + 14; ps[11] = pi + 7;\n          ps[ 4] = pi + 1; ps[ 5] = pi + 12; ps[ 6] = pi + 15; ps[ 7] = pi + 8;\n          ps[ 0] = pi;     ps[ 1] = pi + 11; ps[ 2] = pi + 10; ps[ 3] = pi + 9;\n          cs[2] = ci + 1; cs[3] = ci + 2;\n          cs[0] = ci;     cs[1] = ci + 3;\n          break;\n        // prettier-ignore\n        case 1:\n          tmp1 = ps[12]; tmp2 = ps[13]; tmp3 = ps[14]; tmp4 = ps[15];\n          ps[12] = tmp4;   ps[13] = pi + 0;  ps[14] = pi + 1;  ps[15] = pi + 2;\n          ps[ 8] = tmp3;   ps[ 9] = pi + 9;  ps[10] = pi + 10; ps[11] = pi + 3;\n          ps[ 4] = tmp2;   ps[ 5] = pi + 8;  ps[ 6] = pi + 11; ps[ 7] = pi + 4;\n          ps[ 0] = tmp1;   ps[ 1] = pi + 7;  ps[ 2] = pi + 6;  ps[ 3] = pi + 5;\n          tmp1 = cs[2]; tmp2 = cs[3];\n          cs[2] = tmp2;   cs[3] = ci;\n          cs[0] = tmp1;   cs[1] = ci + 1;\n          break;\n        // prettier-ignore\n        case 2:\n          tmp1 = ps[15];\n          tmp2 = ps[11];\n          ps[12] = ps[3]; ps[13] = pi + 0; ps[14] = pi + 1;  ps[15] = pi + 2;\n          ps[ 8] = ps[7]; ps[ 9] = pi + 9; ps[10] = pi + 10; ps[11] = pi + 3;\n          ps[ 4] = tmp2;  ps[ 5] = pi + 8; ps[ 6] = pi + 11; ps[ 7] = pi + 4;\n          ps[ 0] = tmp1;  ps[ 1] = pi + 7; ps[ 2] = pi + 6;  ps[ 3] = pi + 5;\n          tmp1 = cs[3];\n          cs[2] = cs[1]; cs[3] = ci;\n          cs[0] = tmp1;  cs[1] = ci + 1;\n          break;\n        // prettier-ignore\n        case 3:\n          ps[12] = ps[0];  ps[13] = pi + 0;  ps[14] = pi + 1;  ps[15] = pi + 2;\n          ps[ 8] = ps[1];  ps[ 9] = pi + 9;  ps[10] = pi + 10; ps[11] = pi + 3;\n          ps[ 4] = ps[2];  ps[ 5] = pi + 8;  ps[ 6] = pi + 11; ps[ 7] = pi + 4;\n          ps[ 0] = ps[3];  ps[ 1] = pi + 7;  ps[ 2] = pi + 6;  ps[ 3] = pi + 5;\n          cs[2] = cs[0]; cs[3] = ci;\n          cs[0] = cs[1]; cs[1] = ci + 1;\n          break;\n      }\n      mesh.figures.push({\n        type: \"patch\",\n        coords: new Int32Array(ps), // making copies of ps and cs\n        colors: new Int32Array(cs),\n      });\n    }\n  }\n\n  function updateBounds(mesh) {\n    var minX = mesh.coords[0][0],\n      minY = mesh.coords[0][1],\n      maxX = minX,\n      maxY = minY;\n    for (var i = 1, ii = mesh.coords.length; i < ii; i++) {\n      var x = mesh.coords[i][0],\n        y = mesh.coords[i][1];\n      minX = minX > x ? x : minX;\n      minY = minY > y ? y : minY;\n      maxX = maxX < x ? x : maxX;\n      maxY = maxY < y ? y : maxY;\n    }\n    mesh.bounds = [minX, minY, maxX, maxY];\n  }\n\n  function packData(mesh) {\n    var i, ii, j, jj;\n\n    var coords = mesh.coords;\n    var coordsPacked = new Float32Array(coords.length * 2);\n    for (i = 0, j = 0, ii = coords.length; i < ii; i++) {\n      var xy = coords[i];\n      coordsPacked[j++] = xy[0];\n      coordsPacked[j++] = xy[1];\n    }\n    mesh.coords = coordsPacked;\n\n    var colors = mesh.colors;\n    var colorsPacked = new Uint8Array(colors.length * 3);\n    for (i = 0, j = 0, ii = colors.length; i < ii; i++) {\n      var c = colors[i];\n      colorsPacked[j++] = c[0];\n      colorsPacked[j++] = c[1];\n      colorsPacked[j++] = c[2];\n    }\n    mesh.colors = colorsPacked;\n\n    var figures = mesh.figures;\n    for (i = 0, ii = figures.length; i < ii; i++) {\n      var figure = figures[i],\n        ps = figure.coords,\n        cs = figure.colors;\n      for (j = 0, jj = ps.length; j < jj; j++) {\n        ps[j] *= 2;\n        cs[j] *= 3;\n      }\n    }\n  }\n\n  function Mesh(\n    stream,\n    matrix,\n    xref,\n    resources,\n    pdfFunctionFactory,\n    localColorSpaceCache\n  ) {\n    if (!isStream(stream)) {\n      throw new FormatError(\"Mesh data is not a stream\");\n    }\n    var dict = stream.dict;\n    this.matrix = matrix;\n    this.shadingType = dict.get(\"ShadingType\");\n    this.type = \"Pattern\";\n    const bbox = dict.getArray(\"BBox\");\n    if (Array.isArray(bbox) && bbox.length === 4) {\n      this.bbox = Util.normalizeRect(bbox);\n    } else {\n      this.bbox = null;\n    }\n    const cs = ColorSpace.parse({\n      cs: dict.getRaw(\"ColorSpace\") || dict.getRaw(\"CS\"),\n      xref,\n      resources,\n      pdfFunctionFactory,\n      localColorSpaceCache,\n    });\n    this.cs = cs;\n    this.background = dict.has(\"Background\")\n      ? cs.getRgb(dict.get(\"Background\"), 0)\n      : null;\n\n    var fnObj = dict.getRaw(\"Function\");\n    var fn = fnObj ? pdfFunctionFactory.createFromArray(fnObj) : null;\n\n    this.coords = [];\n    this.colors = [];\n    this.figures = [];\n\n    var decodeContext = {\n      bitsPerCoordinate: dict.get(\"BitsPerCoordinate\"),\n      bitsPerComponent: dict.get(\"BitsPerComponent\"),\n      bitsPerFlag: dict.get(\"BitsPerFlag\"),\n      decode: dict.getArray(\"Decode\"),\n      colorFn: fn,\n      colorSpace: cs,\n      numComps: fn ? 1 : cs.numComps,\n    };\n    var reader = new MeshStreamReader(stream, decodeContext);\n\n    var patchMesh = false;\n    switch (this.shadingType) {\n      case ShadingType.FREE_FORM_MESH:\n        decodeType4Shading(this, reader);\n        break;\n      case ShadingType.LATTICE_FORM_MESH:\n        var verticesPerRow = dict.get(\"VerticesPerRow\") | 0;\n        if (verticesPerRow < 2) {\n          throw new FormatError(\"Invalid VerticesPerRow\");\n        }\n        decodeType5Shading(this, reader, verticesPerRow);\n        break;\n      case ShadingType.COONS_PATCH_MESH:\n        decodeType6Shading(this, reader);\n        patchMesh = true;\n        break;\n      case ShadingType.TENSOR_PATCH_MESH:\n        decodeType7Shading(this, reader);\n        patchMesh = true;\n        break;\n      default:\n        unreachable(\"Unsupported mesh type.\");\n        break;\n    }\n\n    if (patchMesh) {\n      // dirty bounds calculation for determining, how dense shall be triangles\n      updateBounds(this);\n      for (var i = 0, ii = this.figures.length; i < ii; i++) {\n        buildFigureFromPatch(this, i);\n      }\n    }\n    // calculate bounds\n    updateBounds(this);\n\n    packData(this);\n  }\n\n  Mesh.prototype = {\n    getIR: function Mesh_getIR() {\n      return [\n        \"Mesh\",\n        this.shadingType,\n        this.coords,\n        this.colors,\n        this.figures,\n        this.bounds,\n        this.matrix,\n        this.bbox,\n        this.background,\n      ];\n    },\n  };\n\n  return Mesh;\n})();\n\nShadings.Dummy = (function DummyClosure() {\n  function Dummy() {\n    this.type = \"Pattern\";\n  }\n\n  Dummy.prototype = {\n    getIR: function Dummy_getIR() {\n      return [\"Dummy\"];\n    },\n  };\n  return Dummy;\n})();\n\nfunction getTilingPatternIR(operatorList, dict, args) {\n  const matrix = dict.getArray(\"Matrix\");\n  const bbox = Util.normalizeRect(dict.getArray(\"BBox\"));\n  const xstep = dict.get(\"XStep\");\n  const ystep = dict.get(\"YStep\");\n  const paintType = dict.get(\"PaintType\");\n  const tilingType = dict.get(\"TilingType\");\n\n  // Ensure that the pattern has a non-zero width and height, to prevent errors\n  // in `pattern_helper.js` (fixes issue8330.pdf).\n  if (bbox[2] - bbox[0] === 0 || bbox[3] - bbox[1] === 0) {\n    throw new FormatError(`Invalid getTilingPatternIR /BBox array: [${bbox}].`);\n  }\n\n  return [\n    \"TilingPattern\",\n    args,\n    operatorList,\n    matrix,\n    bbox,\n    xstep,\n    ystep,\n    paintType,\n    tilingType,\n  ];\n}\n\nexport { Pattern, getTilingPatternIR };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Dict, isDict, isStream, Ref } from \"./primitives.js\";\nimport {\n  FormatError,\n  info,\n  isBool,\n  IsEvalSupportedCached,\n  unreachable,\n} from \"../shared/util.js\";\nimport { PostScriptLexer, PostScriptParser } from \"./ps_parser.js\";\nimport { LocalFunctionCache } from \"./image_utils.js\";\n\nclass PDFFunctionFactory {\n  constructor({ xref, isEvalSupported = true }) {\n    this.xref = xref;\n    this.isEvalSupported = isEvalSupported !== false;\n    this._localFunctionCache = null; // Initialized lazily.\n  }\n\n  create(fn) {\n    const cachedFunction = this.getCached(fn);\n    if (cachedFunction) {\n      return cachedFunction;\n    }\n    const parsedFunction = PDFFunction.parse({\n      xref: this.xref,\n      isEvalSupported: this.isEvalSupported,\n      fn: fn instanceof Ref ? this.xref.fetch(fn) : fn,\n    });\n\n    // Attempt to cache the parsed Function, by reference.\n    this._cache(fn, parsedFunction);\n\n    return parsedFunction;\n  }\n\n  createFromArray(fnObj) {\n    const cachedFunction = this.getCached(fnObj);\n    if (cachedFunction) {\n      return cachedFunction;\n    }\n    const parsedFunction = PDFFunction.parseArray({\n      xref: this.xref,\n      isEvalSupported: this.isEvalSupported,\n      fnObj: fnObj instanceof Ref ? this.xref.fetch(fnObj) : fnObj,\n    });\n\n    // Attempt to cache the parsed Function, by reference.\n    this._cache(fnObj, parsedFunction);\n\n    return parsedFunction;\n  }\n\n  getCached(cacheKey) {\n    let fnRef;\n    if (cacheKey instanceof Ref) {\n      fnRef = cacheKey;\n    } else if (cacheKey instanceof Dict) {\n      fnRef = cacheKey.objId;\n    } else if (isStream(cacheKey)) {\n      fnRef = cacheKey.dict && cacheKey.dict.objId;\n    }\n    if (fnRef) {\n      if (!this._localFunctionCache) {\n        this._localFunctionCache = new LocalFunctionCache();\n      }\n      const localFunction = this._localFunctionCache.getByRef(fnRef);\n      if (localFunction) {\n        return localFunction;\n      }\n    }\n    return null;\n  }\n\n  /**\n   * @private\n   */\n  _cache(cacheKey, parsedFunction) {\n    if (!parsedFunction) {\n      throw new Error(\n        'PDFFunctionFactory._cache - expected \"parsedFunction\" argument.'\n      );\n    }\n    let fnRef;\n    if (cacheKey instanceof Ref) {\n      fnRef = cacheKey;\n    } else if (cacheKey instanceof Dict) {\n      fnRef = cacheKey.objId;\n    } else if (isStream(cacheKey)) {\n      fnRef = cacheKey.dict && cacheKey.dict.objId;\n    }\n    if (fnRef) {\n      if (!this._localFunctionCache) {\n        this._localFunctionCache = new LocalFunctionCache();\n      }\n      this._localFunctionCache.set(/* name = */ null, fnRef, parsedFunction);\n    }\n  }\n}\n\nfunction toNumberArray(arr) {\n  if (!Array.isArray(arr)) {\n    return null;\n  }\n  const length = arr.length;\n  for (let i = 0; i < length; i++) {\n    if (typeof arr[i] !== \"number\") {\n      // Non-number is found -- convert all items to numbers.\n      const result = new Array(length);\n      for (let j = 0; j < length; j++) {\n        result[j] = +arr[j];\n      }\n      return result;\n    }\n  }\n  return arr;\n}\n\nvar PDFFunction = (function PDFFunctionClosure() {\n  const CONSTRUCT_SAMPLED = 0;\n  const CONSTRUCT_INTERPOLATED = 2;\n  const CONSTRUCT_STICHED = 3;\n  const CONSTRUCT_POSTSCRIPT = 4;\n\n  return {\n    getSampleArray(size, outputSize, bps, stream) {\n      var i, ii;\n      var length = 1;\n      for (i = 0, ii = size.length; i < ii; i++) {\n        length *= size[i];\n      }\n      length *= outputSize;\n\n      var array = new Array(length);\n      var codeSize = 0;\n      var codeBuf = 0;\n      // 32 is a valid bps so shifting won't work\n      var sampleMul = 1.0 / (2.0 ** bps - 1);\n\n      var strBytes = stream.getBytes((length * bps + 7) / 8);\n      var strIdx = 0;\n      for (i = 0; i < length; i++) {\n        while (codeSize < bps) {\n          codeBuf <<= 8;\n          codeBuf |= strBytes[strIdx++];\n          codeSize += 8;\n        }\n        codeSize -= bps;\n        array[i] = (codeBuf >> codeSize) * sampleMul;\n        codeBuf &= (1 << codeSize) - 1;\n      }\n      return array;\n    },\n\n    getIR({ xref, isEvalSupported, fn }) {\n      var dict = fn.dict;\n      if (!dict) {\n        dict = fn;\n      }\n\n      var types = [\n        this.constructSampled,\n        null,\n        this.constructInterpolated,\n        this.constructStiched,\n        this.constructPostScript,\n      ];\n\n      var typeNum = dict.get(\"FunctionType\");\n      var typeFn = types[typeNum];\n      if (!typeFn) {\n        throw new FormatError(\"Unknown type of function\");\n      }\n\n      return typeFn.call(this, { xref, isEvalSupported, fn, dict });\n    },\n\n    fromIR({ xref, isEvalSupported, IR }) {\n      var type = IR[0];\n      switch (type) {\n        case CONSTRUCT_SAMPLED:\n          return this.constructSampledFromIR({ xref, isEvalSupported, IR });\n        case CONSTRUCT_INTERPOLATED:\n          return this.constructInterpolatedFromIR({\n            xref,\n            isEvalSupported,\n            IR,\n          });\n        case CONSTRUCT_STICHED:\n          return this.constructStichedFromIR({ xref, isEvalSupported, IR });\n        // case CONSTRUCT_POSTSCRIPT:\n        default:\n          return this.constructPostScriptFromIR({ xref, isEvalSupported, IR });\n      }\n    },\n\n    parse({ xref, isEvalSupported, fn }) {\n      const IR = this.getIR({ xref, isEvalSupported, fn });\n      return this.fromIR({ xref, isEvalSupported, IR });\n    },\n\n    parseArray({ xref, isEvalSupported, fnObj }) {\n      if (!Array.isArray(fnObj)) {\n        // not an array -- parsing as regular function\n        return this.parse({ xref, isEvalSupported, fn: fnObj });\n      }\n\n      var fnArray = [];\n      for (var j = 0, jj = fnObj.length; j < jj; j++) {\n        fnArray.push(\n          this.parse({ xref, isEvalSupported, fn: xref.fetchIfRef(fnObj[j]) })\n        );\n      }\n      return function (src, srcOffset, dest, destOffset) {\n        for (var i = 0, ii = fnArray.length; i < ii; i++) {\n          fnArray[i](src, srcOffset, dest, destOffset + i);\n        }\n      };\n    },\n\n    constructSampled({ xref, isEvalSupported, fn, dict }) {\n      function toMultiArray(arr) {\n        var inputLength = arr.length;\n        var out = [];\n        var index = 0;\n        for (var i = 0; i < inputLength; i += 2) {\n          out[index] = [arr[i], arr[i + 1]];\n          ++index;\n        }\n        return out;\n      }\n      var domain = toNumberArray(dict.getArray(\"Domain\"));\n      var range = toNumberArray(dict.getArray(\"Range\"));\n\n      if (!domain || !range) {\n        throw new FormatError(\"No domain or range\");\n      }\n\n      var inputSize = domain.length / 2;\n      var outputSize = range.length / 2;\n\n      domain = toMultiArray(domain);\n      range = toMultiArray(range);\n\n      var size = toNumberArray(dict.getArray(\"Size\"));\n      var bps = dict.get(\"BitsPerSample\");\n      var order = dict.get(\"Order\") || 1;\n      if (order !== 1) {\n        // No description how cubic spline interpolation works in PDF32000:2008\n        // As in poppler, ignoring order, linear interpolation may work as good\n        info(\"No support for cubic spline interpolation: \" + order);\n      }\n\n      var encode = toNumberArray(dict.getArray(\"Encode\"));\n      if (!encode) {\n        encode = [];\n        for (var i = 0; i < inputSize; ++i) {\n          encode.push([0, size[i] - 1]);\n        }\n      } else {\n        encode = toMultiArray(encode);\n      }\n\n      var decode = toNumberArray(dict.getArray(\"Decode\"));\n      if (!decode) {\n        decode = range;\n      } else {\n        decode = toMultiArray(decode);\n      }\n\n      var samples = this.getSampleArray(size, outputSize, bps, fn);\n\n      return [\n        CONSTRUCT_SAMPLED,\n        inputSize,\n        domain,\n        encode,\n        decode,\n        samples,\n        size,\n        outputSize,\n        2 ** bps - 1,\n        range,\n      ];\n    },\n\n    constructSampledFromIR({ xref, isEvalSupported, IR }) {\n      // See chapter 3, page 109 of the PDF reference\n      function interpolate(x, xmin, xmax, ymin, ymax) {\n        return ymin + (x - xmin) * ((ymax - ymin) / (xmax - xmin));\n      }\n\n      return function constructSampledFromIRResult(\n        src,\n        srcOffset,\n        dest,\n        destOffset\n      ) {\n        // See chapter 3, page 110 of the PDF reference.\n        var m = IR[1];\n        var domain = IR[2];\n        var encode = IR[3];\n        var decode = IR[4];\n        var samples = IR[5];\n        var size = IR[6];\n        var n = IR[7];\n        // var mask = IR[8];\n        var range = IR[9];\n\n        // Building the cube vertices: its part and sample index\n        // http://rjwagner49.com/Mathematics/Interpolation.pdf\n        var cubeVertices = 1 << m;\n        var cubeN = new Float64Array(cubeVertices);\n        var cubeVertex = new Uint32Array(cubeVertices);\n        var i, j;\n        for (j = 0; j < cubeVertices; j++) {\n          cubeN[j] = 1;\n        }\n\n        var k = n,\n          pos = 1;\n        // Map x_i to y_j for 0 <= i < m using the sampled function.\n        for (i = 0; i < m; ++i) {\n          // x_i' = min(max(x_i, Domain_2i), Domain_2i+1)\n          var domain_2i = domain[i][0];\n          var domain_2i_1 = domain[i][1];\n          var xi = Math.min(\n            Math.max(src[srcOffset + i], domain_2i),\n            domain_2i_1\n          );\n\n          // e_i = Interpolate(x_i', Domain_2i, Domain_2i+1,\n          //                   Encode_2i, Encode_2i+1)\n          var e = interpolate(\n            xi,\n            domain_2i,\n            domain_2i_1,\n            encode[i][0],\n            encode[i][1]\n          );\n\n          // e_i' = min(max(e_i, 0), Size_i - 1)\n          var size_i = size[i];\n          e = Math.min(Math.max(e, 0), size_i - 1);\n\n          // Adjusting the cube: N and vertex sample index\n          var e0 = e < size_i - 1 ? Math.floor(e) : e - 1; // e1 = e0 + 1;\n          var n0 = e0 + 1 - e; // (e1 - e) / (e1 - e0);\n          var n1 = e - e0; // (e - e0) / (e1 - e0);\n          var offset0 = e0 * k;\n          var offset1 = offset0 + k; // e1 * k\n          for (j = 0; j < cubeVertices; j++) {\n            if (j & pos) {\n              cubeN[j] *= n1;\n              cubeVertex[j] += offset1;\n            } else {\n              cubeN[j] *= n0;\n              cubeVertex[j] += offset0;\n            }\n          }\n\n          k *= size_i;\n          pos <<= 1;\n        }\n\n        for (j = 0; j < n; ++j) {\n          // Sum all cube vertices' samples portions\n          var rj = 0;\n          for (i = 0; i < cubeVertices; i++) {\n            rj += samples[cubeVertex[i] + j] * cubeN[i];\n          }\n\n          // r_j' = Interpolate(r_j, 0, 2^BitsPerSample - 1,\n          //                    Decode_2j, Decode_2j+1)\n          rj = interpolate(rj, 0, 1, decode[j][0], decode[j][1]);\n\n          // y_j = min(max(r_j, range_2j), range_2j+1)\n          dest[destOffset + j] = Math.min(\n            Math.max(rj, range[j][0]),\n            range[j][1]\n          );\n        }\n      };\n    },\n\n    constructInterpolated({ xref, isEvalSupported, fn, dict }) {\n      var c0 = toNumberArray(dict.getArray(\"C0\")) || [0];\n      var c1 = toNumberArray(dict.getArray(\"C1\")) || [1];\n      var n = dict.get(\"N\");\n\n      var length = c0.length;\n      var diff = [];\n      for (var i = 0; i < length; ++i) {\n        diff.push(c1[i] - c0[i]);\n      }\n\n      return [CONSTRUCT_INTERPOLATED, c0, diff, n];\n    },\n\n    constructInterpolatedFromIR({ xref, isEvalSupported, IR }) {\n      var c0 = IR[1];\n      var diff = IR[2];\n      var n = IR[3];\n\n      var length = diff.length;\n\n      return function constructInterpolatedFromIRResult(\n        src,\n        srcOffset,\n        dest,\n        destOffset\n      ) {\n        var x = n === 1 ? src[srcOffset] : src[srcOffset] ** n;\n\n        for (var j = 0; j < length; ++j) {\n          dest[destOffset + j] = c0[j] + x * diff[j];\n        }\n      };\n    },\n\n    constructStiched({ xref, isEvalSupported, fn, dict }) {\n      var domain = toNumberArray(dict.getArray(\"Domain\"));\n\n      if (!domain) {\n        throw new FormatError(\"No domain\");\n      }\n\n      var inputSize = domain.length / 2;\n      if (inputSize !== 1) {\n        throw new FormatError(\"Bad domain for stiched function\");\n      }\n\n      var fnRefs = dict.get(\"Functions\");\n      var fns = [];\n      for (var i = 0, ii = fnRefs.length; i < ii; ++i) {\n        fns.push(\n          this.parse({ xref, isEvalSupported, fn: xref.fetchIfRef(fnRefs[i]) })\n        );\n      }\n\n      var bounds = toNumberArray(dict.getArray(\"Bounds\"));\n      var encode = toNumberArray(dict.getArray(\"Encode\"));\n\n      return [CONSTRUCT_STICHED, domain, bounds, encode, fns];\n    },\n\n    constructStichedFromIR({ xref, isEvalSupported, IR }) {\n      var domain = IR[1];\n      var bounds = IR[2];\n      var encode = IR[3];\n      var fns = IR[4];\n      var tmpBuf = new Float32Array(1);\n\n      return function constructStichedFromIRResult(\n        src,\n        srcOffset,\n        dest,\n        destOffset\n      ) {\n        var clip = function constructStichedFromIRClip(v, min, max) {\n          if (v > max) {\n            v = max;\n          } else if (v < min) {\n            v = min;\n          }\n          return v;\n        };\n\n        // clip to domain\n        var v = clip(src[srcOffset], domain[0], domain[1]);\n        // calculate which bound the value is in\n        for (var i = 0, ii = bounds.length; i < ii; ++i) {\n          if (v < bounds[i]) {\n            break;\n          }\n        }\n\n        // encode value into domain of function\n        var dmin = domain[0];\n        if (i > 0) {\n          dmin = bounds[i - 1];\n        }\n        var dmax = domain[1];\n        if (i < bounds.length) {\n          dmax = bounds[i];\n        }\n\n        var rmin = encode[2 * i];\n        var rmax = encode[2 * i + 1];\n\n        // Prevent the value from becoming NaN as a result\n        // of division by zero (fixes issue6113.pdf).\n        tmpBuf[0] =\n          dmin === dmax\n            ? rmin\n            : rmin + ((v - dmin) * (rmax - rmin)) / (dmax - dmin);\n\n        // call the appropriate function\n        fns[i](tmpBuf, 0, dest, destOffset);\n      };\n    },\n\n    constructPostScript({ xref, isEvalSupported, fn, dict }) {\n      var domain = toNumberArray(dict.getArray(\"Domain\"));\n      var range = toNumberArray(dict.getArray(\"Range\"));\n\n      if (!domain) {\n        throw new FormatError(\"No domain.\");\n      }\n\n      if (!range) {\n        throw new FormatError(\"No range.\");\n      }\n\n      var lexer = new PostScriptLexer(fn);\n      var parser = new PostScriptParser(lexer);\n      var code = parser.parse();\n\n      return [CONSTRUCT_POSTSCRIPT, domain, range, code];\n    },\n\n    constructPostScriptFromIR({ xref, isEvalSupported, IR }) {\n      var domain = IR[1];\n      var range = IR[2];\n      var code = IR[3];\n\n      if (isEvalSupported && IsEvalSupportedCached.value) {\n        const compiled = new PostScriptCompiler().compile(code, domain, range);\n        if (compiled) {\n          // Compiled function consists of simple expressions such as addition,\n          // subtraction, Math.max, and also contains 'var' and 'return'\n          // statements. See the generation in the PostScriptCompiler below.\n          // eslint-disable-next-line no-new-func\n          return new Function(\n            \"src\",\n            \"srcOffset\",\n            \"dest\",\n            \"destOffset\",\n            compiled\n          );\n        }\n      }\n      info(\"Unable to compile PS function\");\n\n      var numOutputs = range.length >> 1;\n      var numInputs = domain.length >> 1;\n      var evaluator = new PostScriptEvaluator(code);\n      // Cache the values for a big speed up, the cache size is limited though\n      // since the number of possible values can be huge from a PS function.\n      var cache = Object.create(null);\n      // The MAX_CACHE_SIZE is set to ~4x the maximum number of distinct values\n      // seen in our tests.\n      var MAX_CACHE_SIZE = 2048 * 4;\n      var cache_available = MAX_CACHE_SIZE;\n      var tmpBuf = new Float32Array(numInputs);\n\n      return function constructPostScriptFromIRResult(\n        src,\n        srcOffset,\n        dest,\n        destOffset\n      ) {\n        var i, value;\n        var key = \"\";\n        var input = tmpBuf;\n        for (i = 0; i < numInputs; i++) {\n          value = src[srcOffset + i];\n          input[i] = value;\n          key += value + \"_\";\n        }\n\n        var cachedValue = cache[key];\n        if (cachedValue !== undefined) {\n          dest.set(cachedValue, destOffset);\n          return;\n        }\n\n        var output = new Float32Array(numOutputs);\n        var stack = evaluator.execute(input);\n        var stackIndex = stack.length - numOutputs;\n        for (i = 0; i < numOutputs; i++) {\n          value = stack[stackIndex + i];\n          var bound = range[i * 2];\n          if (value < bound) {\n            value = bound;\n          } else {\n            bound = range[i * 2 + 1];\n            if (value > bound) {\n              value = bound;\n            }\n          }\n          output[i] = value;\n        }\n        if (cache_available > 0) {\n          cache_available--;\n          cache[key] = output;\n        }\n        dest.set(output, destOffset);\n      };\n    },\n  };\n})();\n\nfunction isPDFFunction(v) {\n  var fnDict;\n  if (typeof v !== \"object\") {\n    return false;\n  } else if (isDict(v)) {\n    fnDict = v;\n  } else if (isStream(v)) {\n    fnDict = v.dict;\n  } else {\n    return false;\n  }\n  return fnDict.has(\"FunctionType\");\n}\n\nvar PostScriptStack = (function PostScriptStackClosure() {\n  var MAX_STACK_SIZE = 100;\n\n  // eslint-disable-next-line no-shadow\n  function PostScriptStack(initialStack) {\n    this.stack = !initialStack\n      ? []\n      : Array.prototype.slice.call(initialStack, 0);\n  }\n\n  PostScriptStack.prototype = {\n    push: function PostScriptStack_push(value) {\n      if (this.stack.length >= MAX_STACK_SIZE) {\n        throw new Error(\"PostScript function stack overflow.\");\n      }\n      this.stack.push(value);\n    },\n    pop: function PostScriptStack_pop() {\n      if (this.stack.length <= 0) {\n        throw new Error(\"PostScript function stack underflow.\");\n      }\n      return this.stack.pop();\n    },\n    copy: function PostScriptStack_copy(n) {\n      if (this.stack.length + n >= MAX_STACK_SIZE) {\n        throw new Error(\"PostScript function stack overflow.\");\n      }\n      var stack = this.stack;\n      for (var i = stack.length - n, j = n - 1; j >= 0; j--, i++) {\n        stack.push(stack[i]);\n      }\n    },\n    index: function PostScriptStack_index(n) {\n      this.push(this.stack[this.stack.length - n - 1]);\n    },\n    // rotate the last n stack elements p times\n    roll: function PostScriptStack_roll(n, p) {\n      var stack = this.stack;\n      var l = stack.length - n;\n      var r = stack.length - 1,\n        c = l + (p - Math.floor(p / n) * n),\n        i,\n        j,\n        t;\n      for (i = l, j = r; i < j; i++, j--) {\n        t = stack[i];\n        stack[i] = stack[j];\n        stack[j] = t;\n      }\n      for (i = l, j = c - 1; i < j; i++, j--) {\n        t = stack[i];\n        stack[i] = stack[j];\n        stack[j] = t;\n      }\n      for (i = c, j = r; i < j; i++, j--) {\n        t = stack[i];\n        stack[i] = stack[j];\n        stack[j] = t;\n      }\n    },\n  };\n  return PostScriptStack;\n})();\nvar PostScriptEvaluator = (function PostScriptEvaluatorClosure() {\n  // eslint-disable-next-line no-shadow\n  function PostScriptEvaluator(operators) {\n    this.operators = operators;\n  }\n  PostScriptEvaluator.prototype = {\n    execute: function PostScriptEvaluator_execute(initialStack) {\n      var stack = new PostScriptStack(initialStack);\n      var counter = 0;\n      var operators = this.operators;\n      var length = operators.length;\n      var operator, a, b;\n      while (counter < length) {\n        operator = operators[counter++];\n        if (typeof operator === \"number\") {\n          // Operator is really an operand and should be pushed to the stack.\n          stack.push(operator);\n          continue;\n        }\n        switch (operator) {\n          // non standard ps operators\n          case \"jz\": // jump if false\n            b = stack.pop();\n            a = stack.pop();\n            if (!a) {\n              counter = b;\n            }\n            break;\n          case \"j\": // jump\n            a = stack.pop();\n            counter = a;\n            break;\n\n          // all ps operators in alphabetical order (excluding if/ifelse)\n          case \"abs\":\n            a = stack.pop();\n            stack.push(Math.abs(a));\n            break;\n          case \"add\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a + b);\n            break;\n          case \"and\":\n            b = stack.pop();\n            a = stack.pop();\n            if (isBool(a) && isBool(b)) {\n              stack.push(a && b);\n            } else {\n              stack.push(a & b);\n            }\n            break;\n          case \"atan\":\n            a = stack.pop();\n            stack.push(Math.atan(a));\n            break;\n          case \"bitshift\":\n            b = stack.pop();\n            a = stack.pop();\n            if (a > 0) {\n              stack.push(a << b);\n            } else {\n              stack.push(a >> b);\n            }\n            break;\n          case \"ceiling\":\n            a = stack.pop();\n            stack.push(Math.ceil(a));\n            break;\n          case \"copy\":\n            a = stack.pop();\n            stack.copy(a);\n            break;\n          case \"cos\":\n            a = stack.pop();\n            stack.push(Math.cos(a));\n            break;\n          case \"cvi\":\n            a = stack.pop() | 0;\n            stack.push(a);\n            break;\n          case \"cvr\":\n            // noop\n            break;\n          case \"div\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a / b);\n            break;\n          case \"dup\":\n            stack.copy(1);\n            break;\n          case \"eq\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a === b);\n            break;\n          case \"exch\":\n            stack.roll(2, 1);\n            break;\n          case \"exp\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a ** b);\n            break;\n          case \"false\":\n            stack.push(false);\n            break;\n          case \"floor\":\n            a = stack.pop();\n            stack.push(Math.floor(a));\n            break;\n          case \"ge\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a >= b);\n            break;\n          case \"gt\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a > b);\n            break;\n          case \"idiv\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push((a / b) | 0);\n            break;\n          case \"index\":\n            a = stack.pop();\n            stack.index(a);\n            break;\n          case \"le\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a <= b);\n            break;\n          case \"ln\":\n            a = stack.pop();\n            stack.push(Math.log(a));\n            break;\n          case \"log\":\n            a = stack.pop();\n            stack.push(Math.log(a) / Math.LN10);\n            break;\n          case \"lt\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a < b);\n            break;\n          case \"mod\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a % b);\n            break;\n          case \"mul\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a * b);\n            break;\n          case \"ne\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a !== b);\n            break;\n          case \"neg\":\n            a = stack.pop();\n            stack.push(-a);\n            break;\n          case \"not\":\n            a = stack.pop();\n            if (isBool(a)) {\n              stack.push(!a);\n            } else {\n              stack.push(~a);\n            }\n            break;\n          case \"or\":\n            b = stack.pop();\n            a = stack.pop();\n            if (isBool(a) && isBool(b)) {\n              stack.push(a || b);\n            } else {\n              stack.push(a | b);\n            }\n            break;\n          case \"pop\":\n            stack.pop();\n            break;\n          case \"roll\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.roll(a, b);\n            break;\n          case \"round\":\n            a = stack.pop();\n            stack.push(Math.round(a));\n            break;\n          case \"sin\":\n            a = stack.pop();\n            stack.push(Math.sin(a));\n            break;\n          case \"sqrt\":\n            a = stack.pop();\n            stack.push(Math.sqrt(a));\n            break;\n          case \"sub\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a - b);\n            break;\n          case \"true\":\n            stack.push(true);\n            break;\n          case \"truncate\":\n            a = stack.pop();\n            a = a < 0 ? Math.ceil(a) : Math.floor(a);\n            stack.push(a);\n            break;\n          case \"xor\":\n            b = stack.pop();\n            a = stack.pop();\n            if (isBool(a) && isBool(b)) {\n              stack.push(a !== b);\n            } else {\n              stack.push(a ^ b);\n            }\n            break;\n          default:\n            throw new FormatError(`Unknown operator ${operator}`);\n        }\n      }\n      return stack.stack;\n    },\n  };\n  return PostScriptEvaluator;\n})();\n\n// Most of the PDFs functions consist of simple operations such as:\n//   roll, exch, sub, cvr, pop, index, dup, mul, if, gt, add.\n//\n// We can compile most of such programs, and at the same moment, we can\n// optimize some expressions using basic math properties. Keeping track of\n// min/max values will allow us to avoid extra Math.min/Math.max calls.\nvar PostScriptCompiler = (function PostScriptCompilerClosure() {\n  function AstNode(type) {\n    this.type = type;\n  }\n  AstNode.prototype.visit = function (visitor) {\n    unreachable(\"abstract method\");\n  };\n\n  function AstArgument(index, min, max) {\n    AstNode.call(this, \"args\");\n    this.index = index;\n    this.min = min;\n    this.max = max;\n  }\n  AstArgument.prototype = Object.create(AstNode.prototype);\n  AstArgument.prototype.visit = function (visitor) {\n    visitor.visitArgument(this);\n  };\n\n  function AstLiteral(number) {\n    AstNode.call(this, \"literal\");\n    this.number = number;\n    this.min = number;\n    this.max = number;\n  }\n  AstLiteral.prototype = Object.create(AstNode.prototype);\n  AstLiteral.prototype.visit = function (visitor) {\n    visitor.visitLiteral(this);\n  };\n\n  function AstBinaryOperation(op, arg1, arg2, min, max) {\n    AstNode.call(this, \"binary\");\n    this.op = op;\n    this.arg1 = arg1;\n    this.arg2 = arg2;\n    this.min = min;\n    this.max = max;\n  }\n  AstBinaryOperation.prototype = Object.create(AstNode.prototype);\n  AstBinaryOperation.prototype.visit = function (visitor) {\n    visitor.visitBinaryOperation(this);\n  };\n\n  function AstMin(arg, max) {\n    AstNode.call(this, \"max\");\n    this.arg = arg;\n    this.min = arg.min;\n    this.max = max;\n  }\n  AstMin.prototype = Object.create(AstNode.prototype);\n  AstMin.prototype.visit = function (visitor) {\n    visitor.visitMin(this);\n  };\n\n  function AstVariable(index, min, max) {\n    AstNode.call(this, \"var\");\n    this.index = index;\n    this.min = min;\n    this.max = max;\n  }\n  AstVariable.prototype = Object.create(AstNode.prototype);\n  AstVariable.prototype.visit = function (visitor) {\n    visitor.visitVariable(this);\n  };\n\n  function AstVariableDefinition(variable, arg) {\n    AstNode.call(this, \"definition\");\n    this.variable = variable;\n    this.arg = arg;\n  }\n  AstVariableDefinition.prototype = Object.create(AstNode.prototype);\n  AstVariableDefinition.prototype.visit = function (visitor) {\n    visitor.visitVariableDefinition(this);\n  };\n\n  function ExpressionBuilderVisitor() {\n    this.parts = [];\n  }\n  ExpressionBuilderVisitor.prototype = {\n    visitArgument(arg) {\n      this.parts.push(\n        \"Math.max(\",\n        arg.min,\n        \", Math.min(\",\n        arg.max,\n        \", src[srcOffset + \",\n        arg.index,\n        \"]))\"\n      );\n    },\n    visitVariable(variable) {\n      this.parts.push(\"v\", variable.index);\n    },\n    visitLiteral(literal) {\n      this.parts.push(literal.number);\n    },\n    visitBinaryOperation(operation) {\n      this.parts.push(\"(\");\n      operation.arg1.visit(this);\n      this.parts.push(\" \", operation.op, \" \");\n      operation.arg2.visit(this);\n      this.parts.push(\")\");\n    },\n    visitVariableDefinition(definition) {\n      this.parts.push(\"var \");\n      definition.variable.visit(this);\n      this.parts.push(\" = \");\n      definition.arg.visit(this);\n      this.parts.push(\";\");\n    },\n    visitMin(max) {\n      this.parts.push(\"Math.min(\");\n      max.arg.visit(this);\n      this.parts.push(\", \", max.max, \")\");\n    },\n    toString() {\n      return this.parts.join(\"\");\n    },\n  };\n\n  function buildAddOperation(num1, num2) {\n    if (num2.type === \"literal\" && num2.number === 0) {\n      // optimization: second operand is 0\n      return num1;\n    }\n    if (num1.type === \"literal\" && num1.number === 0) {\n      // optimization: first operand is 0\n      return num2;\n    }\n    if (num2.type === \"literal\" && num1.type === \"literal\") {\n      // optimization: operands operand are literals\n      return new AstLiteral(num1.number + num2.number);\n    }\n    return new AstBinaryOperation(\n      \"+\",\n      num1,\n      num2,\n      num1.min + num2.min,\n      num1.max + num2.max\n    );\n  }\n\n  function buildMulOperation(num1, num2) {\n    if (num2.type === \"literal\") {\n      // optimization: second operands is a literal...\n      if (num2.number === 0) {\n        return new AstLiteral(0); // and it's 0\n      } else if (num2.number === 1) {\n        return num1; // and it's 1\n      } else if (num1.type === \"literal\") {\n        // ... and first operands is a literal too\n        return new AstLiteral(num1.number * num2.number);\n      }\n    }\n    if (num1.type === \"literal\") {\n      // optimization: first operands is a literal...\n      if (num1.number === 0) {\n        return new AstLiteral(0); // and it's 0\n      } else if (num1.number === 1) {\n        return num2; // and it's 1\n      }\n    }\n    var min = Math.min(\n      num1.min * num2.min,\n      num1.min * num2.max,\n      num1.max * num2.min,\n      num1.max * num2.max\n    );\n    var max = Math.max(\n      num1.min * num2.min,\n      num1.min * num2.max,\n      num1.max * num2.min,\n      num1.max * num2.max\n    );\n    return new AstBinaryOperation(\"*\", num1, num2, min, max);\n  }\n\n  function buildSubOperation(num1, num2) {\n    if (num2.type === \"literal\") {\n      // optimization: second operands is a literal...\n      if (num2.number === 0) {\n        return num1; // ... and it's 0\n      } else if (num1.type === \"literal\") {\n        // ... and first operands is a literal too\n        return new AstLiteral(num1.number - num2.number);\n      }\n    }\n    if (\n      num2.type === \"binary\" &&\n      num2.op === \"-\" &&\n      num1.type === \"literal\" &&\n      num1.number === 1 &&\n      num2.arg1.type === \"literal\" &&\n      num2.arg1.number === 1\n    ) {\n      // optimization for case: 1 - (1 - x)\n      return num2.arg2;\n    }\n    return new AstBinaryOperation(\n      \"-\",\n      num1,\n      num2,\n      num1.min - num2.max,\n      num1.max - num2.min\n    );\n  }\n\n  function buildMinOperation(num1, max) {\n    if (num1.min >= max) {\n      // optimization: num1 min value is not less than required max\n      return new AstLiteral(max); // just returning max\n    } else if (num1.max <= max) {\n      // optimization: num1 max value is not greater than required max\n      return num1; // just returning an argument\n    }\n    return new AstMin(num1, max);\n  }\n\n  // eslint-disable-next-line no-shadow\n  function PostScriptCompiler() {}\n  PostScriptCompiler.prototype = {\n    compile: function PostScriptCompiler_compile(code, domain, range) {\n      var stack = [];\n      var instructions = [];\n      var inputSize = domain.length >> 1,\n        outputSize = range.length >> 1;\n      var lastRegister = 0;\n      var n, j;\n      var num1, num2, ast1, ast2, tmpVar, item;\n      for (let i = 0; i < inputSize; i++) {\n        stack.push(new AstArgument(i, domain[i * 2], domain[i * 2 + 1]));\n      }\n\n      for (let i = 0, ii = code.length; i < ii; i++) {\n        item = code[i];\n        if (typeof item === \"number\") {\n          stack.push(new AstLiteral(item));\n          continue;\n        }\n\n        switch (item) {\n          case \"add\":\n            if (stack.length < 2) {\n              return null;\n            }\n            num2 = stack.pop();\n            num1 = stack.pop();\n            stack.push(buildAddOperation(num1, num2));\n            break;\n          case \"cvr\":\n            if (stack.length < 1) {\n              return null;\n            }\n            break;\n          case \"mul\":\n            if (stack.length < 2) {\n              return null;\n            }\n            num2 = stack.pop();\n            num1 = stack.pop();\n            stack.push(buildMulOperation(num1, num2));\n            break;\n          case \"sub\":\n            if (stack.length < 2) {\n              return null;\n            }\n            num2 = stack.pop();\n            num1 = stack.pop();\n            stack.push(buildSubOperation(num1, num2));\n            break;\n          case \"exch\":\n            if (stack.length < 2) {\n              return null;\n            }\n            ast1 = stack.pop();\n            ast2 = stack.pop();\n            stack.push(ast1, ast2);\n            break;\n          case \"pop\":\n            if (stack.length < 1) {\n              return null;\n            }\n            stack.pop();\n            break;\n          case \"index\":\n            if (stack.length < 1) {\n              return null;\n            }\n            num1 = stack.pop();\n            if (num1.type !== \"literal\") {\n              return null;\n            }\n            n = num1.number;\n            if (n < 0 || !Number.isInteger(n) || stack.length < n) {\n              return null;\n            }\n            ast1 = stack[stack.length - n - 1];\n            if (ast1.type === \"literal\" || ast1.type === \"var\") {\n              stack.push(ast1);\n              break;\n            }\n            tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);\n            stack[stack.length - n - 1] = tmpVar;\n            stack.push(tmpVar);\n            instructions.push(new AstVariableDefinition(tmpVar, ast1));\n            break;\n          case \"dup\":\n            if (stack.length < 1) {\n              return null;\n            }\n            if (\n              typeof code[i + 1] === \"number\" &&\n              code[i + 2] === \"gt\" &&\n              code[i + 3] === i + 7 &&\n              code[i + 4] === \"jz\" &&\n              code[i + 5] === \"pop\" &&\n              code[i + 6] === code[i + 1]\n            ) {\n              // special case of the commands sequence for the min operation\n              num1 = stack.pop();\n              stack.push(buildMinOperation(num1, code[i + 1]));\n              i += 6;\n              break;\n            }\n            ast1 = stack[stack.length - 1];\n            if (ast1.type === \"literal\" || ast1.type === \"var\") {\n              // we don't have to save into intermediate variable a literal or\n              // variable.\n              stack.push(ast1);\n              break;\n            }\n            tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);\n            stack[stack.length - 1] = tmpVar;\n            stack.push(tmpVar);\n            instructions.push(new AstVariableDefinition(tmpVar, ast1));\n            break;\n          case \"roll\":\n            if (stack.length < 2) {\n              return null;\n            }\n            num2 = stack.pop();\n            num1 = stack.pop();\n            if (num2.type !== \"literal\" || num1.type !== \"literal\") {\n              // both roll operands must be numbers\n              return null;\n            }\n            j = num2.number;\n            n = num1.number;\n            if (\n              n <= 0 ||\n              !Number.isInteger(n) ||\n              !Number.isInteger(j) ||\n              stack.length < n\n            ) {\n              // ... and integers\n              return null;\n            }\n            j = ((j % n) + n) % n;\n            if (j === 0) {\n              break; // just skipping -- there are nothing to rotate\n            }\n            Array.prototype.push.apply(\n              stack,\n              stack.splice(stack.length - n, n - j)\n            );\n            break;\n          default:\n            return null; // unsupported operator\n        }\n      }\n\n      if (stack.length !== outputSize) {\n        return null;\n      }\n\n      var result = [];\n      instructions.forEach(function (instruction) {\n        var statementBuilder = new ExpressionBuilderVisitor();\n        instruction.visit(statementBuilder);\n        result.push(statementBuilder.toString());\n      });\n      stack.forEach(function (expr, i) {\n        var statementBuilder = new ExpressionBuilderVisitor();\n        expr.visit(statementBuilder);\n        var min = range[i * 2],\n          max = range[i * 2 + 1];\n        var out = [statementBuilder.toString()];\n        if (min > expr.min) {\n          out.unshift(\"Math.max(\", min, \", \");\n          out.push(\")\");\n        }\n        if (max < expr.max) {\n          out.unshift(\"Math.min(\", max, \", \");\n          out.push(\")\");\n        }\n        out.unshift(\"dest[destOffset + \", i, \"] = \");\n        out.push(\";\");\n        result.push(out.join(\"\"));\n      });\n      return result.join(\"\\n\");\n    },\n  };\n\n  return PostScriptCompiler;\n})();\n\nexport {\n  isPDFFunction,\n  PDFFunctionFactory,\n  PostScriptEvaluator,\n  PostScriptCompiler,\n};\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\nimport { FormatError, shadow } from \"../shared/util.js\";\nimport { EOF } from \"./primitives.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\n\nclass PostScriptParser {\n  constructor(lexer) {\n    this.lexer = lexer;\n    this.operators = [];\n    this.token = null;\n    this.prev = null;\n  }\n\n  nextToken() {\n    this.prev = this.token;\n    this.token = this.lexer.getToken();\n  }\n\n  accept(type) {\n    if (this.token.type === type) {\n      this.nextToken();\n      return true;\n    }\n    return false;\n  }\n\n  expect(type) {\n    if (this.accept(type)) {\n      return true;\n    }\n    throw new FormatError(\n      `Unexpected symbol: found ${this.token.type} expected ${type}.`\n    );\n  }\n\n  parse() {\n    this.nextToken();\n    this.expect(PostScriptTokenTypes.LBRACE);\n    this.parseBlock();\n    this.expect(PostScriptTokenTypes.RBRACE);\n    return this.operators;\n  }\n\n  parseBlock() {\n    while (true) {\n      if (this.accept(PostScriptTokenTypes.NUMBER)) {\n        this.operators.push(this.prev.value);\n      } else if (this.accept(PostScriptTokenTypes.OPERATOR)) {\n        this.operators.push(this.prev.value);\n      } else if (this.accept(PostScriptTokenTypes.LBRACE)) {\n        this.parseCondition();\n      } else {\n        return;\n      }\n    }\n  }\n\n  parseCondition() {\n    // Add two place holders that will be updated later\n    const conditionLocation = this.operators.length;\n    this.operators.push(null, null);\n\n    this.parseBlock();\n    this.expect(PostScriptTokenTypes.RBRACE);\n    if (this.accept(PostScriptTokenTypes.IF)) {\n      // The true block is right after the 'if' so it just falls through on true\n      // else it jumps and skips the true block.\n      this.operators[conditionLocation] = this.operators.length;\n      this.operators[conditionLocation + 1] = \"jz\";\n    } else if (this.accept(PostScriptTokenTypes.LBRACE)) {\n      const jumpLocation = this.operators.length;\n      this.operators.push(null, null);\n      const endOfTrue = this.operators.length;\n      this.parseBlock();\n      this.expect(PostScriptTokenTypes.RBRACE);\n      this.expect(PostScriptTokenTypes.IFELSE);\n      // The jump is added at the end of the true block to skip the false block.\n      this.operators[jumpLocation] = this.operators.length;\n      this.operators[jumpLocation + 1] = \"j\";\n\n      this.operators[conditionLocation] = endOfTrue;\n      this.operators[conditionLocation + 1] = \"jz\";\n    } else {\n      throw new FormatError(\"PS Function: error parsing conditional.\");\n    }\n  }\n}\n\nconst PostScriptTokenTypes = {\n  LBRACE: 0,\n  RBRACE: 1,\n  NUMBER: 2,\n  OPERATOR: 3,\n  IF: 4,\n  IFELSE: 5,\n};\n\nconst PostScriptToken = (function PostScriptTokenClosure() {\n  const opCache = Object.create(null);\n\n  // eslint-disable-next-line no-shadow\n  class PostScriptToken {\n    constructor(type, value) {\n      this.type = type;\n      this.value = value;\n    }\n\n    static getOperator(op) {\n      const opValue = opCache[op];\n      if (opValue) {\n        return opValue;\n      }\n      return (opCache[op] = new PostScriptToken(\n        PostScriptTokenTypes.OPERATOR,\n        op\n      ));\n    }\n\n    static get LBRACE() {\n      return shadow(\n        this,\n        \"LBRACE\",\n        new PostScriptToken(PostScriptTokenTypes.LBRACE, \"{\")\n      );\n    }\n\n    static get RBRACE() {\n      return shadow(\n        this,\n        \"RBRACE\",\n        new PostScriptToken(PostScriptTokenTypes.RBRACE, \"}\")\n      );\n    }\n\n    static get IF() {\n      return shadow(\n        this,\n        \"IF\",\n        new PostScriptToken(PostScriptTokenTypes.IF, \"IF\")\n      );\n    }\n\n    static get IFELSE() {\n      return shadow(\n        this,\n        \"IFELSE\",\n        new PostScriptToken(PostScriptTokenTypes.IFELSE, \"IFELSE\")\n      );\n    }\n  }\n  return PostScriptToken;\n})();\n\nclass PostScriptLexer {\n  constructor(stream) {\n    this.stream = stream;\n    this.nextChar();\n\n    this.strBuf = [];\n  }\n\n  nextChar() {\n    return (this.currentChar = this.stream.getByte());\n  }\n\n  getToken() {\n    let comment = false;\n    let ch = this.currentChar;\n\n    // skip comments\n    while (true) {\n      if (ch < 0) {\n        return EOF;\n      }\n\n      if (comment) {\n        if (ch === 0x0a || ch === 0x0d) {\n          comment = false;\n        }\n      } else if (ch === /* '%' = */ 0x25) {\n        comment = true;\n      } else if (!isWhiteSpace(ch)) {\n        break;\n      }\n      ch = this.nextChar();\n    }\n    switch (ch | 0) {\n      case 0x30: // '0'\n      case 0x31: // '1'\n      case 0x32: // '2'\n      case 0x33: // '3'\n      case 0x34: // '4'\n      case 0x35: // '5'\n      case 0x36: // '6'\n      case 0x37: // '7'\n      case 0x38: // '8'\n      case 0x39: // '9'\n      case 0x2b: // '+'\n      case 0x2d: // '-'\n      case 0x2e: // '.'\n        return new PostScriptToken(\n          PostScriptTokenTypes.NUMBER,\n          this.getNumber()\n        );\n      case 0x7b: // '{'\n        this.nextChar();\n        return PostScriptToken.LBRACE;\n      case 0x7d: // '}'\n        this.nextChar();\n        return PostScriptToken.RBRACE;\n    }\n    // operator\n    const strBuf = this.strBuf;\n    strBuf.length = 0;\n    strBuf[0] = String.fromCharCode(ch);\n\n    while (\n      (ch = this.nextChar()) >= 0 &&\n      ((ch >= /* 'A' = */ 0x41 && ch <= /* 'Z' = */ 0x5a) ||\n        (ch >= /* 'a' = */ 0x61 && ch <= /* 'z' = */ 0x7a))\n    ) {\n      strBuf.push(String.fromCharCode(ch));\n    }\n    const str = strBuf.join(\"\");\n    switch (str.toLowerCase()) {\n      case \"if\":\n        return PostScriptToken.IF;\n      case \"ifelse\":\n        return PostScriptToken.IFELSE;\n      default:\n        return PostScriptToken.getOperator(str);\n    }\n  }\n\n  getNumber() {\n    let ch = this.currentChar;\n    const strBuf = this.strBuf;\n    strBuf.length = 0;\n    strBuf[0] = String.fromCharCode(ch);\n\n    while ((ch = this.nextChar()) >= 0) {\n      if (\n        (ch >= /* '0' = */ 0x30 && ch <= /* '9' = */ 0x39) ||\n        ch === /* '-' = */ 0x2d ||\n        ch === /* '.' = */ 0x2e\n      ) {\n        strBuf.push(String.fromCharCode(ch));\n      } else {\n        break;\n      }\n    }\n    const value = parseFloat(strBuf.join(\"\"));\n    if (isNaN(value)) {\n      throw new FormatError(`Invalid floating point number: ${value}`);\n    }\n    return value;\n  }\n}\n\nexport { PostScriptLexer, PostScriptParser };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { warn } from \"../shared/util.js\";\n\n// Character types for symbols from 0000 to 00FF.\n// Source: ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt\n// prettier-ignore\nvar baseTypes = [\n  \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"S\", \"B\", \"S\",\n  \"WS\", \"B\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\",\n  \"BN\", \"BN\", \"BN\", \"BN\", \"B\", \"B\", \"B\", \"S\", \"WS\", \"ON\", \"ON\", \"ET\",\n  \"ET\", \"ET\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"ES\", \"CS\", \"ES\", \"CS\", \"CS\",\n  \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"CS\", \"ON\",\n  \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n  \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n  \"L\", \"L\", \"L\", \"L\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\",\n  \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n  \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"ON\", \"ON\", \"ON\",\n  \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"B\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\",\n  \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\",\n  \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"CS\", \"ON\", \"ET\",\n  \"ET\", \"ET\", \"ET\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"ON\", \"ON\", \"BN\", \"ON\",\n  \"ON\", \"ET\", \"ET\", \"EN\", \"EN\", \"ON\", \"L\", \"ON\", \"ON\", \"ON\", \"EN\", \"L\",\n  \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n  \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n  \"L\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n  \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n  \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\"\n];\n\n// Character types for symbols from 0600 to 06FF.\n// Source: ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt\n// Note that 061D does not exist in the Unicode standard (see\n// http://unicode.org/charts/PDF/U0600.pdf), so we replace it with an\n// empty string and issue a warning if we encounter this character. The\n// empty string is required to properly index the items after it.\n// prettier-ignore\nvar arabicTypes = [\n  \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"ON\", \"ON\", \"AL\", \"ET\", \"ET\", \"AL\",\n  \"CS\", \"AL\", \"ON\", \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\",\n  \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\",\n  \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\",\n  \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\",\n  \"AN\", \"AN\", \"AN\", \"ET\", \"AN\", \"AN\", \"AL\", \"AL\", \"AL\", \"NSM\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AN\",\n  \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"NSM\", \"NSM\",\n  \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"EN\", \"EN\", \"EN\", \"EN\",\n  \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\"\n];\n\nfunction isOdd(i) {\n  return (i & 1) !== 0;\n}\n\nfunction isEven(i) {\n  return (i & 1) === 0;\n}\n\nfunction findUnequal(arr, start, value) {\n  for (var j = start, jj = arr.length; j < jj; ++j) {\n    if (arr[j] !== value) {\n      return j;\n    }\n  }\n  return j;\n}\n\nfunction setValues(arr, start, end, value) {\n  for (var j = start; j < end; ++j) {\n    arr[j] = value;\n  }\n}\n\nfunction reverseValues(arr, start, end) {\n  for (var i = start, j = end - 1; i < j; ++i, --j) {\n    var temp = arr[i];\n    arr[i] = arr[j];\n    arr[j] = temp;\n  }\n}\n\nfunction createBidiText(str, isLTR, vertical = false) {\n  let dir = \"ltr\";\n  if (vertical) {\n    dir = \"ttb\";\n  } else if (!isLTR) {\n    dir = \"rtl\";\n  }\n  return { str, dir };\n}\n\n// These are used in bidi(), which is called frequently. We re-use them on\n// each call to avoid unnecessary allocations.\nvar chars = [];\nvar types = [];\n\nfunction bidi(str, startLevel, vertical) {\n  var isLTR = true;\n  var strLength = str.length;\n  if (strLength === 0 || vertical) {\n    return createBidiText(str, isLTR, vertical);\n  }\n\n  // Get types and fill arrays\n  chars.length = strLength;\n  types.length = strLength;\n  var numBidi = 0;\n\n  var i, ii;\n  for (i = 0; i < strLength; ++i) {\n    chars[i] = str.charAt(i);\n\n    var charCode = str.charCodeAt(i);\n    var charType = \"L\";\n    if (charCode <= 0x00ff) {\n      charType = baseTypes[charCode];\n    } else if (0x0590 <= charCode && charCode <= 0x05f4) {\n      charType = \"R\";\n    } else if (0x0600 <= charCode && charCode <= 0x06ff) {\n      charType = arabicTypes[charCode & 0xff];\n      if (!charType) {\n        warn(\"Bidi: invalid Unicode character \" + charCode.toString(16));\n      }\n    } else if (0x0700 <= charCode && charCode <= 0x08ac) {\n      charType = \"AL\";\n    }\n    if (charType === \"R\" || charType === \"AL\" || charType === \"AN\") {\n      numBidi++;\n    }\n    types[i] = charType;\n  }\n\n  // Detect the bidi method\n  // - If there are no rtl characters then no bidi needed\n  // - If less than 30% chars are rtl then string is primarily ltr\n  // - If more than 30% chars are rtl then string is primarily rtl\n  if (numBidi === 0) {\n    isLTR = true;\n    return createBidiText(str, isLTR);\n  }\n\n  if (startLevel === -1) {\n    if (numBidi / strLength < 0.3) {\n      isLTR = true;\n      startLevel = 0;\n    } else {\n      isLTR = false;\n      startLevel = 1;\n    }\n  }\n\n  var levels = [];\n  for (i = 0; i < strLength; ++i) {\n    levels[i] = startLevel;\n  }\n\n  /*\n   X1-X10: skip most of this, since we are NOT doing the embeddings.\n   */\n  var e = isOdd(startLevel) ? \"R\" : \"L\";\n  var sor = e;\n  var eor = sor;\n\n  /*\n   W1. Examine each non-spacing mark (NSM) in the level run, and change the\n   type of the NSM to the type of the previous character. If the NSM is at the\n   start of the level run, it will get the type of sor.\n   */\n  var lastType = sor;\n  for (i = 0; i < strLength; ++i) {\n    if (types[i] === \"NSM\") {\n      types[i] = lastType;\n    } else {\n      lastType = types[i];\n    }\n  }\n\n  /*\n   W2. Search backwards from each instance of a European number until the\n   first strong type (R, L, AL, or sor) is found.  If an AL is found, change\n   the type of the European number to Arabic number.\n   */\n  lastType = sor;\n  var t;\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (t === \"EN\") {\n      types[i] = lastType === \"AL\" ? \"AN\" : \"EN\";\n    } else if (t === \"R\" || t === \"L\" || t === \"AL\") {\n      lastType = t;\n    }\n  }\n\n  /*\n   W3. Change all ALs to R.\n   */\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (t === \"AL\") {\n      types[i] = \"R\";\n    }\n  }\n\n  /*\n   W4. A single European separator between two European numbers changes to a\n   European number. A single common separator between two numbers of the same\n   type changes to that type:\n   */\n  for (i = 1; i < strLength - 1; ++i) {\n    if (types[i] === \"ES\" && types[i - 1] === \"EN\" && types[i + 1] === \"EN\") {\n      types[i] = \"EN\";\n    }\n    if (\n      types[i] === \"CS\" &&\n      (types[i - 1] === \"EN\" || types[i - 1] === \"AN\") &&\n      types[i + 1] === types[i - 1]\n    ) {\n      types[i] = types[i - 1];\n    }\n  }\n\n  /*\n   W5. A sequence of European terminators adjacent to European numbers changes\n   to all European numbers:\n   */\n  for (i = 0; i < strLength; ++i) {\n    if (types[i] === \"EN\") {\n      // do before\n      var j;\n      for (j = i - 1; j >= 0; --j) {\n        if (types[j] !== \"ET\") {\n          break;\n        }\n        types[j] = \"EN\";\n      }\n      // do after\n      for (j = i + 1; j < strLength; ++j) {\n        if (types[j] !== \"ET\") {\n          break;\n        }\n        types[j] = \"EN\";\n      }\n    }\n  }\n\n  /*\n   W6. Otherwise, separators and terminators change to Other Neutral:\n   */\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (t === \"WS\" || t === \"ES\" || t === \"ET\" || t === \"CS\") {\n      types[i] = \"ON\";\n    }\n  }\n\n  /*\n   W7. Search backwards from each instance of a European number until the\n   first strong type (R, L, or sor) is found. If an L is found,  then change\n   the type of the European number to L.\n   */\n  lastType = sor;\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (t === \"EN\") {\n      types[i] = lastType === \"L\" ? \"L\" : \"EN\";\n    } else if (t === \"R\" || t === \"L\") {\n      lastType = t;\n    }\n  }\n\n  /*\n   N1. A sequence of neutrals takes the direction of the surrounding strong\n   text if the text on both sides has the same direction. European and Arabic\n   numbers are treated as though they were R. Start-of-level-run (sor) and\n   end-of-level-run (eor) are used at level run boundaries.\n   */\n  for (i = 0; i < strLength; ++i) {\n    if (types[i] === \"ON\") {\n      var end = findUnequal(types, i + 1, \"ON\");\n      var before = sor;\n      if (i > 0) {\n        before = types[i - 1];\n      }\n\n      var after = eor;\n      if (end + 1 < strLength) {\n        after = types[end + 1];\n      }\n      if (before !== \"L\") {\n        before = \"R\";\n      }\n      if (after !== \"L\") {\n        after = \"R\";\n      }\n      if (before === after) {\n        setValues(types, i, end, before);\n      }\n      i = end - 1; // reset to end (-1 so next iteration is ok)\n    }\n  }\n\n  /*\n   N2. Any remaining neutrals take the embedding direction.\n   */\n  for (i = 0; i < strLength; ++i) {\n    if (types[i] === \"ON\") {\n      types[i] = e;\n    }\n  }\n\n  /*\n   I1. For all characters with an even (left-to-right) embedding direction,\n   those of type R go up one level and those of type AN or EN go up two\n   levels.\n   I2. For all characters with an odd (right-to-left) embedding direction,\n   those of type L, EN or AN go up one level.\n   */\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (isEven(levels[i])) {\n      if (t === \"R\") {\n        levels[i] += 1;\n      } else if (t === \"AN\" || t === \"EN\") {\n        levels[i] += 2;\n      }\n    } else {\n      // isOdd\n      if (t === \"L\" || t === \"AN\" || t === \"EN\") {\n        levels[i] += 1;\n      }\n    }\n  }\n\n  /*\n   L1. On each line, reset the embedding level of the following characters to\n   the paragraph embedding level:\n\n   segment separators,\n   paragraph separators,\n   any sequence of whitespace characters preceding a segment separator or\n   paragraph separator, and any sequence of white space characters at the end\n   of the line.\n   */\n\n  // don't bother as text is only single line\n\n  /*\n   L2. From the highest level found in the text to the lowest odd level on\n   each line, reverse any contiguous sequence of characters that are at that\n   level or higher.\n   */\n\n  // find highest level & lowest odd level\n  var highestLevel = -1;\n  var lowestOddLevel = 99;\n  var level;\n  for (i = 0, ii = levels.length; i < ii; ++i) {\n    level = levels[i];\n    if (highestLevel < level) {\n      highestLevel = level;\n    }\n    if (lowestOddLevel > level && isOdd(level)) {\n      lowestOddLevel = level;\n    }\n  }\n\n  // now reverse between those limits\n  for (level = highestLevel; level >= lowestOddLevel; --level) {\n    // find segments to reverse\n    var start = -1;\n    for (i = 0, ii = levels.length; i < ii; ++i) {\n      if (levels[i] < level) {\n        if (start >= 0) {\n          reverseValues(chars, start, i);\n          start = -1;\n        }\n      } else if (start < 0) {\n        start = i;\n      }\n    }\n    if (start >= 0) {\n      reverseValues(chars, start, levels.length);\n    }\n  }\n\n  /*\n   L3. Combining marks applied to a right-to-left base character will at this\n   point precede their base character. If the rendering engine expects them to\n   follow the base characters in the final display process, then the ordering\n   of the marks and the base character must be reversed.\n   */\n\n  // don't bother for now\n\n  /*\n   L4. A character that possesses the mirrored property as specified by\n   Section 4.7, Mirrored, must be depicted by a mirrored glyph if the resolved\n   directionality of that character is R.\n   */\n\n  // don't mirror as characters are already mirrored in the pdf\n\n  // Finally, return string\n  for (i = 0, ii = chars.length; i < ii; ++i) {\n    var ch = chars[i];\n    if (ch === \"<\" || ch === \">\") {\n      chars[i] = \"\";\n    }\n  }\n  return createBidiText(chars.join(\"\"), isLTR);\n}\n\nexport { bidi };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getLookupTableFactory } from \"./core_utils.js\";\n\n// The Metrics object contains glyph widths (in glyph space units).\n// As per PDF spec, for most fonts (Type 3 being an exception) a glyph\n// space unit corresponds to 1/1000th of text space unit.\nvar getMetrics = getLookupTableFactory(function (t) {\n  t.Courier = 600;\n  t[\"Courier-Bold\"] = 600;\n  t[\"Courier-BoldOblique\"] = 600;\n  t[\"Courier-Oblique\"] = 600;\n  // eslint-disable-next-line no-shadow\n  t.Helvetica = getLookupTableFactory(function (t) {\n    t.space = 278;\n    t.exclam = 278;\n    t.quotedbl = 355;\n    t.numbersign = 556;\n    t.dollar = 556;\n    t.percent = 889;\n    t.ampersand = 667;\n    t.quoteright = 222;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 389;\n    t.plus = 584;\n    t.comma = 278;\n    t.hyphen = 333;\n    t.period = 278;\n    t.slash = 278;\n    t.zero = 556;\n    t.one = 556;\n    t.two = 556;\n    t.three = 556;\n    t.four = 556;\n    t.five = 556;\n    t.six = 556;\n    t.seven = 556;\n    t.eight = 556;\n    t.nine = 556;\n    t.colon = 278;\n    t.semicolon = 278;\n    t.less = 584;\n    t.equal = 584;\n    t.greater = 584;\n    t.question = 556;\n    t.at = 1015;\n    t.A = 667;\n    t.B = 667;\n    t.C = 722;\n    t.D = 722;\n    t.E = 667;\n    t.F = 611;\n    t.G = 778;\n    t.H = 722;\n    t.I = 278;\n    t.J = 500;\n    t.K = 667;\n    t.L = 556;\n    t.M = 833;\n    t.N = 722;\n    t.O = 778;\n    t.P = 667;\n    t.Q = 778;\n    t.R = 722;\n    t.S = 667;\n    t.T = 611;\n    t.U = 722;\n    t.V = 667;\n    t.W = 944;\n    t.X = 667;\n    t.Y = 667;\n    t.Z = 611;\n    t.bracketleft = 278;\n    t.backslash = 278;\n    t.bracketright = 278;\n    t.asciicircum = 469;\n    t.underscore = 556;\n    t.quoteleft = 222;\n    t.a = 556;\n    t.b = 556;\n    t.c = 500;\n    t.d = 556;\n    t.e = 556;\n    t.f = 278;\n    t.g = 556;\n    t.h = 556;\n    t.i = 222;\n    t.j = 222;\n    t.k = 500;\n    t.l = 222;\n    t.m = 833;\n    t.n = 556;\n    t.o = 556;\n    t.p = 556;\n    t.q = 556;\n    t.r = 333;\n    t.s = 500;\n    t.t = 278;\n    t.u = 556;\n    t.v = 500;\n    t.w = 722;\n    t.x = 500;\n    t.y = 500;\n    t.z = 500;\n    t.braceleft = 334;\n    t.bar = 260;\n    t.braceright = 334;\n    t.asciitilde = 584;\n    t.exclamdown = 333;\n    t.cent = 556;\n    t.sterling = 556;\n    t.fraction = 167;\n    t.yen = 556;\n    t.florin = 556;\n    t.section = 556;\n    t.currency = 556;\n    t.quotesingle = 191;\n    t.quotedblleft = 333;\n    t.guillemotleft = 556;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 500;\n    t.fl = 500;\n    t.endash = 556;\n    t.dagger = 556;\n    t.daggerdbl = 556;\n    t.periodcentered = 278;\n    t.paragraph = 537;\n    t.bullet = 350;\n    t.quotesinglbase = 222;\n    t.quotedblbase = 333;\n    t.quotedblright = 333;\n    t.guillemotright = 556;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 611;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 1000;\n    t.ordfeminine = 370;\n    t.Lslash = 556;\n    t.Oslash = 778;\n    t.OE = 1000;\n    t.ordmasculine = 365;\n    t.ae = 889;\n    t.dotlessi = 278;\n    t.lslash = 222;\n    t.oslash = 611;\n    t.oe = 944;\n    t.germandbls = 611;\n    t.Idieresis = 278;\n    t.eacute = 556;\n    t.abreve = 556;\n    t.uhungarumlaut = 556;\n    t.ecaron = 556;\n    t.Ydieresis = 667;\n    t.divide = 584;\n    t.Yacute = 667;\n    t.Acircumflex = 667;\n    t.aacute = 556;\n    t.Ucircumflex = 722;\n    t.yacute = 500;\n    t.scommaaccent = 500;\n    t.ecircumflex = 556;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 556;\n    t.Uacute = 722;\n    t.uogonek = 556;\n    t.Edieresis = 667;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 737;\n    t.Emacron = 667;\n    t.ccaron = 500;\n    t.aring = 556;\n    t.Ncommaaccent = 722;\n    t.lacute = 222;\n    t.agrave = 556;\n    t.Tcommaaccent = 611;\n    t.Cacute = 722;\n    t.atilde = 556;\n    t.Edotaccent = 667;\n    t.scaron = 500;\n    t.scedilla = 500;\n    t.iacute = 278;\n    t.lozenge = 471;\n    t.Rcaron = 722;\n    t.Gcommaaccent = 778;\n    t.ucircumflex = 556;\n    t.acircumflex = 556;\n    t.Amacron = 667;\n    t.rcaron = 333;\n    t.ccedilla = 500;\n    t.Zdotaccent = 611;\n    t.Thorn = 667;\n    t.Omacron = 778;\n    t.Racute = 722;\n    t.Sacute = 667;\n    t.dcaron = 643;\n    t.Umacron = 722;\n    t.uring = 556;\n    t.threesuperior = 333;\n    t.Ograve = 778;\n    t.Agrave = 667;\n    t.Abreve = 667;\n    t.multiply = 584;\n    t.uacute = 556;\n    t.Tcaron = 611;\n    t.partialdiff = 476;\n    t.ydieresis = 500;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 667;\n    t.adieresis = 556;\n    t.edieresis = 556;\n    t.cacute = 500;\n    t.nacute = 556;\n    t.umacron = 556;\n    t.Ncaron = 722;\n    t.Iacute = 278;\n    t.plusminus = 584;\n    t.brokenbar = 260;\n    t.registered = 737;\n    t.Gbreve = 778;\n    t.Idotaccent = 278;\n    t.summation = 600;\n    t.Egrave = 667;\n    t.racute = 333;\n    t.omacron = 556;\n    t.Zacute = 611;\n    t.Zcaron = 611;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 722;\n    t.lcommaaccent = 222;\n    t.tcaron = 317;\n    t.eogonek = 556;\n    t.Uogonek = 722;\n    t.Aacute = 667;\n    t.Adieresis = 667;\n    t.egrave = 556;\n    t.zacute = 500;\n    t.iogonek = 222;\n    t.Oacute = 778;\n    t.oacute = 556;\n    t.amacron = 556;\n    t.sacute = 500;\n    t.idieresis = 278;\n    t.Ocircumflex = 778;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 556;\n    t.twosuperior = 333;\n    t.Odieresis = 778;\n    t.mu = 556;\n    t.igrave = 278;\n    t.ohungarumlaut = 556;\n    t.Eogonek = 667;\n    t.dcroat = 556;\n    t.threequarters = 834;\n    t.Scedilla = 667;\n    t.lcaron = 299;\n    t.Kcommaaccent = 667;\n    t.Lacute = 556;\n    t.trademark = 1000;\n    t.edotaccent = 556;\n    t.Igrave = 278;\n    t.Imacron = 278;\n    t.Lcaron = 556;\n    t.onehalf = 834;\n    t.lessequal = 549;\n    t.ocircumflex = 556;\n    t.ntilde = 556;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 667;\n    t.emacron = 556;\n    t.gbreve = 556;\n    t.onequarter = 834;\n    t.Scaron = 667;\n    t.Scommaaccent = 667;\n    t.Ohungarumlaut = 778;\n    t.degree = 400;\n    t.ograve = 556;\n    t.Ccaron = 722;\n    t.ugrave = 556;\n    t.radical = 453;\n    t.Dcaron = 722;\n    t.rcommaaccent = 333;\n    t.Ntilde = 722;\n    t.otilde = 556;\n    t.Rcommaaccent = 722;\n    t.Lcommaaccent = 556;\n    t.Atilde = 667;\n    t.Aogonek = 667;\n    t.Aring = 667;\n    t.Otilde = 778;\n    t.zdotaccent = 500;\n    t.Ecaron = 667;\n    t.Iogonek = 278;\n    t.kcommaaccent = 500;\n    t.minus = 584;\n    t.Icircumflex = 278;\n    t.ncaron = 556;\n    t.tcommaaccent = 278;\n    t.logicalnot = 584;\n    t.odieresis = 556;\n    t.udieresis = 556;\n    t.notequal = 549;\n    t.gcommaaccent = 556;\n    t.eth = 556;\n    t.zcaron = 500;\n    t.ncommaaccent = 556;\n    t.onesuperior = 333;\n    t.imacron = 278;\n    t.Euro = 556;\n  });\n  // eslint-disable-next-line no-shadow\n  t[\"Helvetica-Bold\"] = getLookupTableFactory(function (t) {\n    t.space = 278;\n    t.exclam = 333;\n    t.quotedbl = 474;\n    t.numbersign = 556;\n    t.dollar = 556;\n    t.percent = 889;\n    t.ampersand = 722;\n    t.quoteright = 278;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 389;\n    t.plus = 584;\n    t.comma = 278;\n    t.hyphen = 333;\n    t.period = 278;\n    t.slash = 278;\n    t.zero = 556;\n    t.one = 556;\n    t.two = 556;\n    t.three = 556;\n    t.four = 556;\n    t.five = 556;\n    t.six = 556;\n    t.seven = 556;\n    t.eight = 556;\n    t.nine = 556;\n    t.colon = 333;\n    t.semicolon = 333;\n    t.less = 584;\n    t.equal = 584;\n    t.greater = 584;\n    t.question = 611;\n    t.at = 975;\n    t.A = 722;\n    t.B = 722;\n    t.C = 722;\n    t.D = 722;\n    t.E = 667;\n    t.F = 611;\n    t.G = 778;\n    t.H = 722;\n    t.I = 278;\n    t.J = 556;\n    t.K = 722;\n    t.L = 611;\n    t.M = 833;\n    t.N = 722;\n    t.O = 778;\n    t.P = 667;\n    t.Q = 778;\n    t.R = 722;\n    t.S = 667;\n    t.T = 611;\n    t.U = 722;\n    t.V = 667;\n    t.W = 944;\n    t.X = 667;\n    t.Y = 667;\n    t.Z = 611;\n    t.bracketleft = 333;\n    t.backslash = 278;\n    t.bracketright = 333;\n    t.asciicircum = 584;\n    t.underscore = 556;\n    t.quoteleft = 278;\n    t.a = 556;\n    t.b = 611;\n    t.c = 556;\n    t.d = 611;\n    t.e = 556;\n    t.f = 333;\n    t.g = 611;\n    t.h = 611;\n    t.i = 278;\n    t.j = 278;\n    t.k = 556;\n    t.l = 278;\n    t.m = 889;\n    t.n = 611;\n    t.o = 611;\n    t.p = 611;\n    t.q = 611;\n    t.r = 389;\n    t.s = 556;\n    t.t = 333;\n    t.u = 611;\n    t.v = 556;\n    t.w = 778;\n    t.x = 556;\n    t.y = 556;\n    t.z = 500;\n    t.braceleft = 389;\n    t.bar = 280;\n    t.braceright = 389;\n    t.asciitilde = 584;\n    t.exclamdown = 333;\n    t.cent = 556;\n    t.sterling = 556;\n    t.fraction = 167;\n    t.yen = 556;\n    t.florin = 556;\n    t.section = 556;\n    t.currency = 556;\n    t.quotesingle = 238;\n    t.quotedblleft = 500;\n    t.guillemotleft = 556;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 611;\n    t.fl = 611;\n    t.endash = 556;\n    t.dagger = 556;\n    t.daggerdbl = 556;\n    t.periodcentered = 278;\n    t.paragraph = 556;\n    t.bullet = 350;\n    t.quotesinglbase = 278;\n    t.quotedblbase = 500;\n    t.quotedblright = 500;\n    t.guillemotright = 556;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 611;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 1000;\n    t.ordfeminine = 370;\n    t.Lslash = 611;\n    t.Oslash = 778;\n    t.OE = 1000;\n    t.ordmasculine = 365;\n    t.ae = 889;\n    t.dotlessi = 278;\n    t.lslash = 278;\n    t.oslash = 611;\n    t.oe = 944;\n    t.germandbls = 611;\n    t.Idieresis = 278;\n    t.eacute = 556;\n    t.abreve = 556;\n    t.uhungarumlaut = 611;\n    t.ecaron = 556;\n    t.Ydieresis = 667;\n    t.divide = 584;\n    t.Yacute = 667;\n    t.Acircumflex = 722;\n    t.aacute = 556;\n    t.Ucircumflex = 722;\n    t.yacute = 556;\n    t.scommaaccent = 556;\n    t.ecircumflex = 556;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 556;\n    t.Uacute = 722;\n    t.uogonek = 611;\n    t.Edieresis = 667;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 737;\n    t.Emacron = 667;\n    t.ccaron = 556;\n    t.aring = 556;\n    t.Ncommaaccent = 722;\n    t.lacute = 278;\n    t.agrave = 556;\n    t.Tcommaaccent = 611;\n    t.Cacute = 722;\n    t.atilde = 556;\n    t.Edotaccent = 667;\n    t.scaron = 556;\n    t.scedilla = 556;\n    t.iacute = 278;\n    t.lozenge = 494;\n    t.Rcaron = 722;\n    t.Gcommaaccent = 778;\n    t.ucircumflex = 611;\n    t.acircumflex = 556;\n    t.Amacron = 722;\n    t.rcaron = 389;\n    t.ccedilla = 556;\n    t.Zdotaccent = 611;\n    t.Thorn = 667;\n    t.Omacron = 778;\n    t.Racute = 722;\n    t.Sacute = 667;\n    t.dcaron = 743;\n    t.Umacron = 722;\n    t.uring = 611;\n    t.threesuperior = 333;\n    t.Ograve = 778;\n    t.Agrave = 722;\n    t.Abreve = 722;\n    t.multiply = 584;\n    t.uacute = 611;\n    t.Tcaron = 611;\n    t.partialdiff = 494;\n    t.ydieresis = 556;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 667;\n    t.adieresis = 556;\n    t.edieresis = 556;\n    t.cacute = 556;\n    t.nacute = 611;\n    t.umacron = 611;\n    t.Ncaron = 722;\n    t.Iacute = 278;\n    t.plusminus = 584;\n    t.brokenbar = 280;\n    t.registered = 737;\n    t.Gbreve = 778;\n    t.Idotaccent = 278;\n    t.summation = 600;\n    t.Egrave = 667;\n    t.racute = 389;\n    t.omacron = 611;\n    t.Zacute = 611;\n    t.Zcaron = 611;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 722;\n    t.lcommaaccent = 278;\n    t.tcaron = 389;\n    t.eogonek = 556;\n    t.Uogonek = 722;\n    t.Aacute = 722;\n    t.Adieresis = 722;\n    t.egrave = 556;\n    t.zacute = 500;\n    t.iogonek = 278;\n    t.Oacute = 778;\n    t.oacute = 611;\n    t.amacron = 556;\n    t.sacute = 556;\n    t.idieresis = 278;\n    t.Ocircumflex = 778;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 611;\n    t.twosuperior = 333;\n    t.Odieresis = 778;\n    t.mu = 611;\n    t.igrave = 278;\n    t.ohungarumlaut = 611;\n    t.Eogonek = 667;\n    t.dcroat = 611;\n    t.threequarters = 834;\n    t.Scedilla = 667;\n    t.lcaron = 400;\n    t.Kcommaaccent = 722;\n    t.Lacute = 611;\n    t.trademark = 1000;\n    t.edotaccent = 556;\n    t.Igrave = 278;\n    t.Imacron = 278;\n    t.Lcaron = 611;\n    t.onehalf = 834;\n    t.lessequal = 549;\n    t.ocircumflex = 611;\n    t.ntilde = 611;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 667;\n    t.emacron = 556;\n    t.gbreve = 611;\n    t.onequarter = 834;\n    t.Scaron = 667;\n    t.Scommaaccent = 667;\n    t.Ohungarumlaut = 778;\n    t.degree = 400;\n    t.ograve = 611;\n    t.Ccaron = 722;\n    t.ugrave = 611;\n    t.radical = 549;\n    t.Dcaron = 722;\n    t.rcommaaccent = 389;\n    t.Ntilde = 722;\n    t.otilde = 611;\n    t.Rcommaaccent = 722;\n    t.Lcommaaccent = 611;\n    t.Atilde = 722;\n    t.Aogonek = 722;\n    t.Aring = 722;\n    t.Otilde = 778;\n    t.zdotaccent = 500;\n    t.Ecaron = 667;\n    t.Iogonek = 278;\n    t.kcommaaccent = 556;\n    t.minus = 584;\n    t.Icircumflex = 278;\n    t.ncaron = 611;\n    t.tcommaaccent = 333;\n    t.logicalnot = 584;\n    t.odieresis = 611;\n    t.udieresis = 611;\n    t.notequal = 549;\n    t.gcommaaccent = 611;\n    t.eth = 611;\n    t.zcaron = 500;\n    t.ncommaaccent = 611;\n    t.onesuperior = 333;\n    t.imacron = 278;\n    t.Euro = 556;\n  });\n  // eslint-disable-next-line no-shadow\n  t[\"Helvetica-BoldOblique\"] = getLookupTableFactory(function (t) {\n    t.space = 278;\n    t.exclam = 333;\n    t.quotedbl = 474;\n    t.numbersign = 556;\n    t.dollar = 556;\n    t.percent = 889;\n    t.ampersand = 722;\n    t.quoteright = 278;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 389;\n    t.plus = 584;\n    t.comma = 278;\n    t.hyphen = 333;\n    t.period = 278;\n    t.slash = 278;\n    t.zero = 556;\n    t.one = 556;\n    t.two = 556;\n    t.three = 556;\n    t.four = 556;\n    t.five = 556;\n    t.six = 556;\n    t.seven = 556;\n    t.eight = 556;\n    t.nine = 556;\n    t.colon = 333;\n    t.semicolon = 333;\n    t.less = 584;\n    t.equal = 584;\n    t.greater = 584;\n    t.question = 611;\n    t.at = 975;\n    t.A = 722;\n    t.B = 722;\n    t.C = 722;\n    t.D = 722;\n    t.E = 667;\n    t.F = 611;\n    t.G = 778;\n    t.H = 722;\n    t.I = 278;\n    t.J = 556;\n    t.K = 722;\n    t.L = 611;\n    t.M = 833;\n    t.N = 722;\n    t.O = 778;\n    t.P = 667;\n    t.Q = 778;\n    t.R = 722;\n    t.S = 667;\n    t.T = 611;\n    t.U = 722;\n    t.V = 667;\n    t.W = 944;\n    t.X = 667;\n    t.Y = 667;\n    t.Z = 611;\n    t.bracketleft = 333;\n    t.backslash = 278;\n    t.bracketright = 333;\n    t.asciicircum = 584;\n    t.underscore = 556;\n    t.quoteleft = 278;\n    t.a = 556;\n    t.b = 611;\n    t.c = 556;\n    t.d = 611;\n    t.e = 556;\n    t.f = 333;\n    t.g = 611;\n    t.h = 611;\n    t.i = 278;\n    t.j = 278;\n    t.k = 556;\n    t.l = 278;\n    t.m = 889;\n    t.n = 611;\n    t.o = 611;\n    t.p = 611;\n    t.q = 611;\n    t.r = 389;\n    t.s = 556;\n    t.t = 333;\n    t.u = 611;\n    t.v = 556;\n    t.w = 778;\n    t.x = 556;\n    t.y = 556;\n    t.z = 500;\n    t.braceleft = 389;\n    t.bar = 280;\n    t.braceright = 389;\n    t.asciitilde = 584;\n    t.exclamdown = 333;\n    t.cent = 556;\n    t.sterling = 556;\n    t.fraction = 167;\n    t.yen = 556;\n    t.florin = 556;\n    t.section = 556;\n    t.currency = 556;\n    t.quotesingle = 238;\n    t.quotedblleft = 500;\n    t.guillemotleft = 556;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 611;\n    t.fl = 611;\n    t.endash = 556;\n    t.dagger = 556;\n    t.daggerdbl = 556;\n    t.periodcentered = 278;\n    t.paragraph = 556;\n    t.bullet = 350;\n    t.quotesinglbase = 278;\n    t.quotedblbase = 500;\n    t.quotedblright = 500;\n    t.guillemotright = 556;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 611;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 1000;\n    t.ordfeminine = 370;\n    t.Lslash = 611;\n    t.Oslash = 778;\n    t.OE = 1000;\n    t.ordmasculine = 365;\n    t.ae = 889;\n    t.dotlessi = 278;\n    t.lslash = 278;\n    t.oslash = 611;\n    t.oe = 944;\n    t.germandbls = 611;\n    t.Idieresis = 278;\n    t.eacute = 556;\n    t.abreve = 556;\n    t.uhungarumlaut = 611;\n    t.ecaron = 556;\n    t.Ydieresis = 667;\n    t.divide = 584;\n    t.Yacute = 667;\n    t.Acircumflex = 722;\n    t.aacute = 556;\n    t.Ucircumflex = 722;\n    t.yacute = 556;\n    t.scommaaccent = 556;\n    t.ecircumflex = 556;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 556;\n    t.Uacute = 722;\n    t.uogonek = 611;\n    t.Edieresis = 667;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 737;\n    t.Emacron = 667;\n    t.ccaron = 556;\n    t.aring = 556;\n    t.Ncommaaccent = 722;\n    t.lacute = 278;\n    t.agrave = 556;\n    t.Tcommaaccent = 611;\n    t.Cacute = 722;\n    t.atilde = 556;\n    t.Edotaccent = 667;\n    t.scaron = 556;\n    t.scedilla = 556;\n    t.iacute = 278;\n    t.lozenge = 494;\n    t.Rcaron = 722;\n    t.Gcommaaccent = 778;\n    t.ucircumflex = 611;\n    t.acircumflex = 556;\n    t.Amacron = 722;\n    t.rcaron = 389;\n    t.ccedilla = 556;\n    t.Zdotaccent = 611;\n    t.Thorn = 667;\n    t.Omacron = 778;\n    t.Racute = 722;\n    t.Sacute = 667;\n    t.dcaron = 743;\n    t.Umacron = 722;\n    t.uring = 611;\n    t.threesuperior = 333;\n    t.Ograve = 778;\n    t.Agrave = 722;\n    t.Abreve = 722;\n    t.multiply = 584;\n    t.uacute = 611;\n    t.Tcaron = 611;\n    t.partialdiff = 494;\n    t.ydieresis = 556;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 667;\n    t.adieresis = 556;\n    t.edieresis = 556;\n    t.cacute = 556;\n    t.nacute = 611;\n    t.umacron = 611;\n    t.Ncaron = 722;\n    t.Iacute = 278;\n    t.plusminus = 584;\n    t.brokenbar = 280;\n    t.registered = 737;\n    t.Gbreve = 778;\n    t.Idotaccent = 278;\n    t.summation = 600;\n    t.Egrave = 667;\n    t.racute = 389;\n    t.omacron = 611;\n    t.Zacute = 611;\n    t.Zcaron = 611;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 722;\n    t.lcommaaccent = 278;\n    t.tcaron = 389;\n    t.eogonek = 556;\n    t.Uogonek = 722;\n    t.Aacute = 722;\n    t.Adieresis = 722;\n    t.egrave = 556;\n    t.zacute = 500;\n    t.iogonek = 278;\n    t.Oacute = 778;\n    t.oacute = 611;\n    t.amacron = 556;\n    t.sacute = 556;\n    t.idieresis = 278;\n    t.Ocircumflex = 778;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 611;\n    t.twosuperior = 333;\n    t.Odieresis = 778;\n    t.mu = 611;\n    t.igrave = 278;\n    t.ohungarumlaut = 611;\n    t.Eogonek = 667;\n    t.dcroat = 611;\n    t.threequarters = 834;\n    t.Scedilla = 667;\n    t.lcaron = 400;\n    t.Kcommaaccent = 722;\n    t.Lacute = 611;\n    t.trademark = 1000;\n    t.edotaccent = 556;\n    t.Igrave = 278;\n    t.Imacron = 278;\n    t.Lcaron = 611;\n    t.onehalf = 834;\n    t.lessequal = 549;\n    t.ocircumflex = 611;\n    t.ntilde = 611;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 667;\n    t.emacron = 556;\n    t.gbreve = 611;\n    t.onequarter = 834;\n    t.Scaron = 667;\n    t.Scommaaccent = 667;\n    t.Ohungarumlaut = 778;\n    t.degree = 400;\n    t.ograve = 611;\n    t.Ccaron = 722;\n    t.ugrave = 611;\n    t.radical = 549;\n    t.Dcaron = 722;\n    t.rcommaaccent = 389;\n    t.Ntilde = 722;\n    t.otilde = 611;\n    t.Rcommaaccent = 722;\n    t.Lcommaaccent = 611;\n    t.Atilde = 722;\n    t.Aogonek = 722;\n    t.Aring = 722;\n    t.Otilde = 778;\n    t.zdotaccent = 500;\n    t.Ecaron = 667;\n    t.Iogonek = 278;\n    t.kcommaaccent = 556;\n    t.minus = 584;\n    t.Icircumflex = 278;\n    t.ncaron = 611;\n    t.tcommaaccent = 333;\n    t.logicalnot = 584;\n    t.odieresis = 611;\n    t.udieresis = 611;\n    t.notequal = 549;\n    t.gcommaaccent = 611;\n    t.eth = 611;\n    t.zcaron = 500;\n    t.ncommaaccent = 611;\n    t.onesuperior = 333;\n    t.imacron = 278;\n    t.Euro = 556;\n  });\n  // eslint-disable-next-line no-shadow\n  t[\"Helvetica-Oblique\"] = getLookupTableFactory(function (t) {\n    t.space = 278;\n    t.exclam = 278;\n    t.quotedbl = 355;\n    t.numbersign = 556;\n    t.dollar = 556;\n    t.percent = 889;\n    t.ampersand = 667;\n    t.quoteright = 222;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 389;\n    t.plus = 584;\n    t.comma = 278;\n    t.hyphen = 333;\n    t.period = 278;\n    t.slash = 278;\n    t.zero = 556;\n    t.one = 556;\n    t.two = 556;\n    t.three = 556;\n    t.four = 556;\n    t.five = 556;\n    t.six = 556;\n    t.seven = 556;\n    t.eight = 556;\n    t.nine = 556;\n    t.colon = 278;\n    t.semicolon = 278;\n    t.less = 584;\n    t.equal = 584;\n    t.greater = 584;\n    t.question = 556;\n    t.at = 1015;\n    t.A = 667;\n    t.B = 667;\n    t.C = 722;\n    t.D = 722;\n    t.E = 667;\n    t.F = 611;\n    t.G = 778;\n    t.H = 722;\n    t.I = 278;\n    t.J = 500;\n    t.K = 667;\n    t.L = 556;\n    t.M = 833;\n    t.N = 722;\n    t.O = 778;\n    t.P = 667;\n    t.Q = 778;\n    t.R = 722;\n    t.S = 667;\n    t.T = 611;\n    t.U = 722;\n    t.V = 667;\n    t.W = 944;\n    t.X = 667;\n    t.Y = 667;\n    t.Z = 611;\n    t.bracketleft = 278;\n    t.backslash = 278;\n    t.bracketright = 278;\n    t.asciicircum = 469;\n    t.underscore = 556;\n    t.quoteleft = 222;\n    t.a = 556;\n    t.b = 556;\n    t.c = 500;\n    t.d = 556;\n    t.e = 556;\n    t.f = 278;\n    t.g = 556;\n    t.h = 556;\n    t.i = 222;\n    t.j = 222;\n    t.k = 500;\n    t.l = 222;\n    t.m = 833;\n    t.n = 556;\n    t.o = 556;\n    t.p = 556;\n    t.q = 556;\n    t.r = 333;\n    t.s = 500;\n    t.t = 278;\n    t.u = 556;\n    t.v = 500;\n    t.w = 722;\n    t.x = 500;\n    t.y = 500;\n    t.z = 500;\n    t.braceleft = 334;\n    t.bar = 260;\n    t.braceright = 334;\n    t.asciitilde = 584;\n    t.exclamdown = 333;\n    t.cent = 556;\n    t.sterling = 556;\n    t.fraction = 167;\n    t.yen = 556;\n    t.florin = 556;\n    t.section = 556;\n    t.currency = 556;\n    t.quotesingle = 191;\n    t.quotedblleft = 333;\n    t.guillemotleft = 556;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 500;\n    t.fl = 500;\n    t.endash = 556;\n    t.dagger = 556;\n    t.daggerdbl = 556;\n    t.periodcentered = 278;\n    t.paragraph = 537;\n    t.bullet = 350;\n    t.quotesinglbase = 222;\n    t.quotedblbase = 333;\n    t.quotedblright = 333;\n    t.guillemotright = 556;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 611;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 1000;\n    t.ordfeminine = 370;\n    t.Lslash = 556;\n    t.Oslash = 778;\n    t.OE = 1000;\n    t.ordmasculine = 365;\n    t.ae = 889;\n    t.dotlessi = 278;\n    t.lslash = 222;\n    t.oslash = 611;\n    t.oe = 944;\n    t.germandbls = 611;\n    t.Idieresis = 278;\n    t.eacute = 556;\n    t.abreve = 556;\n    t.uhungarumlaut = 556;\n    t.ecaron = 556;\n    t.Ydieresis = 667;\n    t.divide = 584;\n    t.Yacute = 667;\n    t.Acircumflex = 667;\n    t.aacute = 556;\n    t.Ucircumflex = 722;\n    t.yacute = 500;\n    t.scommaaccent = 500;\n    t.ecircumflex = 556;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 556;\n    t.Uacute = 722;\n    t.uogonek = 556;\n    t.Edieresis = 667;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 737;\n    t.Emacron = 667;\n    t.ccaron = 500;\n    t.aring = 556;\n    t.Ncommaaccent = 722;\n    t.lacute = 222;\n    t.agrave = 556;\n    t.Tcommaaccent = 611;\n    t.Cacute = 722;\n    t.atilde = 556;\n    t.Edotaccent = 667;\n    t.scaron = 500;\n    t.scedilla = 500;\n    t.iacute = 278;\n    t.lozenge = 471;\n    t.Rcaron = 722;\n    t.Gcommaaccent = 778;\n    t.ucircumflex = 556;\n    t.acircumflex = 556;\n    t.Amacron = 667;\n    t.rcaron = 333;\n    t.ccedilla = 500;\n    t.Zdotaccent = 611;\n    t.Thorn = 667;\n    t.Omacron = 778;\n    t.Racute = 722;\n    t.Sacute = 667;\n    t.dcaron = 643;\n    t.Umacron = 722;\n    t.uring = 556;\n    t.threesuperior = 333;\n    t.Ograve = 778;\n    t.Agrave = 667;\n    t.Abreve = 667;\n    t.multiply = 584;\n    t.uacute = 556;\n    t.Tcaron = 611;\n    t.partialdiff = 476;\n    t.ydieresis = 500;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 667;\n    t.adieresis = 556;\n    t.edieresis = 556;\n    t.cacute = 500;\n    t.nacute = 556;\n    t.umacron = 556;\n    t.Ncaron = 722;\n    t.Iacute = 278;\n    t.plusminus = 584;\n    t.brokenbar = 260;\n    t.registered = 737;\n    t.Gbreve = 778;\n    t.Idotaccent = 278;\n    t.summation = 600;\n    t.Egrave = 667;\n    t.racute = 333;\n    t.omacron = 556;\n    t.Zacute = 611;\n    t.Zcaron = 611;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 722;\n    t.lcommaaccent = 222;\n    t.tcaron = 317;\n    t.eogonek = 556;\n    t.Uogonek = 722;\n    t.Aacute = 667;\n    t.Adieresis = 667;\n    t.egrave = 556;\n    t.zacute = 500;\n    t.iogonek = 222;\n    t.Oacute = 778;\n    t.oacute = 556;\n    t.amacron = 556;\n    t.sacute = 500;\n    t.idieresis = 278;\n    t.Ocircumflex = 778;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 556;\n    t.twosuperior = 333;\n    t.Odieresis = 778;\n    t.mu = 556;\n    t.igrave = 278;\n    t.ohungarumlaut = 556;\n    t.Eogonek = 667;\n    t.dcroat = 556;\n    t.threequarters = 834;\n    t.Scedilla = 667;\n    t.lcaron = 299;\n    t.Kcommaaccent = 667;\n    t.Lacute = 556;\n    t.trademark = 1000;\n    t.edotaccent = 556;\n    t.Igrave = 278;\n    t.Imacron = 278;\n    t.Lcaron = 556;\n    t.onehalf = 834;\n    t.lessequal = 549;\n    t.ocircumflex = 556;\n    t.ntilde = 556;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 667;\n    t.emacron = 556;\n    t.gbreve = 556;\n    t.onequarter = 834;\n    t.Scaron = 667;\n    t.Scommaaccent = 667;\n    t.Ohungarumlaut = 778;\n    t.degree = 400;\n    t.ograve = 556;\n    t.Ccaron = 722;\n    t.ugrave = 556;\n    t.radical = 453;\n    t.Dcaron = 722;\n    t.rcommaaccent = 333;\n    t.Ntilde = 722;\n    t.otilde = 556;\n    t.Rcommaaccent = 722;\n    t.Lcommaaccent = 556;\n    t.Atilde = 667;\n    t.Aogonek = 667;\n    t.Aring = 667;\n    t.Otilde = 778;\n    t.zdotaccent = 500;\n    t.Ecaron = 667;\n    t.Iogonek = 278;\n    t.kcommaaccent = 500;\n    t.minus = 584;\n    t.Icircumflex = 278;\n    t.ncaron = 556;\n    t.tcommaaccent = 278;\n    t.logicalnot = 584;\n    t.odieresis = 556;\n    t.udieresis = 556;\n    t.notequal = 549;\n    t.gcommaaccent = 556;\n    t.eth = 556;\n    t.zcaron = 500;\n    t.ncommaaccent = 556;\n    t.onesuperior = 333;\n    t.imacron = 278;\n    t.Euro = 556;\n  });\n  // eslint-disable-next-line no-shadow\n  t.Symbol = getLookupTableFactory(function (t) {\n    t.space = 250;\n    t.exclam = 333;\n    t.universal = 713;\n    t.numbersign = 500;\n    t.existential = 549;\n    t.percent = 833;\n    t.ampersand = 778;\n    t.suchthat = 439;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asteriskmath = 500;\n    t.plus = 549;\n    t.comma = 250;\n    t.minus = 549;\n    t.period = 250;\n    t.slash = 278;\n    t.zero = 500;\n    t.one = 500;\n    t.two = 500;\n    t.three = 500;\n    t.four = 500;\n    t.five = 500;\n    t.six = 500;\n    t.seven = 500;\n    t.eight = 500;\n    t.nine = 500;\n    t.colon = 278;\n    t.semicolon = 278;\n    t.less = 549;\n    t.equal = 549;\n    t.greater = 549;\n    t.question = 444;\n    t.congruent = 549;\n    t.Alpha = 722;\n    t.Beta = 667;\n    t.Chi = 722;\n    t.Delta = 612;\n    t.Epsilon = 611;\n    t.Phi = 763;\n    t.Gamma = 603;\n    t.Eta = 722;\n    t.Iota = 333;\n    t.theta1 = 631;\n    t.Kappa = 722;\n    t.Lambda = 686;\n    t.Mu = 889;\n    t.Nu = 722;\n    t.Omicron = 722;\n    t.Pi = 768;\n    t.Theta = 741;\n    t.Rho = 556;\n    t.Sigma = 592;\n    t.Tau = 611;\n    t.Upsilon = 690;\n    t.sigma1 = 439;\n    t.Omega = 768;\n    t.Xi = 645;\n    t.Psi = 795;\n    t.Zeta = 611;\n    t.bracketleft = 333;\n    t.therefore = 863;\n    t.bracketright = 333;\n    t.perpendicular = 658;\n    t.underscore = 500;\n    t.radicalex = 500;\n    t.alpha = 631;\n    t.beta = 549;\n    t.chi = 549;\n    t.delta = 494;\n    t.epsilon = 439;\n    t.phi = 521;\n    t.gamma = 411;\n    t.eta = 603;\n    t.iota = 329;\n    t.phi1 = 603;\n    t.kappa = 549;\n    t.lambda = 549;\n    t.mu = 576;\n    t.nu = 521;\n    t.omicron = 549;\n    t.pi = 549;\n    t.theta = 521;\n    t.rho = 549;\n    t.sigma = 603;\n    t.tau = 439;\n    t.upsilon = 576;\n    t.omega1 = 713;\n    t.omega = 686;\n    t.xi = 493;\n    t.psi = 686;\n    t.zeta = 494;\n    t.braceleft = 480;\n    t.bar = 200;\n    t.braceright = 480;\n    t.similar = 549;\n    t.Euro = 750;\n    t.Upsilon1 = 620;\n    t.minute = 247;\n    t.lessequal = 549;\n    t.fraction = 167;\n    t.infinity = 713;\n    t.florin = 500;\n    t.club = 753;\n    t.diamond = 753;\n    t.heart = 753;\n    t.spade = 753;\n    t.arrowboth = 1042;\n    t.arrowleft = 987;\n    t.arrowup = 603;\n    t.arrowright = 987;\n    t.arrowdown = 603;\n    t.degree = 400;\n    t.plusminus = 549;\n    t.second = 411;\n    t.greaterequal = 549;\n    t.multiply = 549;\n    t.proportional = 713;\n    t.partialdiff = 494;\n    t.bullet = 460;\n    t.divide = 549;\n    t.notequal = 549;\n    t.equivalence = 549;\n    t.approxequal = 549;\n    t.ellipsis = 1000;\n    t.arrowvertex = 603;\n    t.arrowhorizex = 1000;\n    t.carriagereturn = 658;\n    t.aleph = 823;\n    t.Ifraktur = 686;\n    t.Rfraktur = 795;\n    t.weierstrass = 987;\n    t.circlemultiply = 768;\n    t.circleplus = 768;\n    t.emptyset = 823;\n    t.intersection = 768;\n    t.union = 768;\n    t.propersuperset = 713;\n    t.reflexsuperset = 713;\n    t.notsubset = 713;\n    t.propersubset = 713;\n    t.reflexsubset = 713;\n    t.element = 713;\n    t.notelement = 713;\n    t.angle = 768;\n    t.gradient = 713;\n    t.registerserif = 790;\n    t.copyrightserif = 790;\n    t.trademarkserif = 890;\n    t.product = 823;\n    t.radical = 549;\n    t.dotmath = 250;\n    t.logicalnot = 713;\n    t.logicaland = 603;\n    t.logicalor = 603;\n    t.arrowdblboth = 1042;\n    t.arrowdblleft = 987;\n    t.arrowdblup = 603;\n    t.arrowdblright = 987;\n    t.arrowdbldown = 603;\n    t.lozenge = 494;\n    t.angleleft = 329;\n    t.registersans = 790;\n    t.copyrightsans = 790;\n    t.trademarksans = 786;\n    t.summation = 713;\n    t.parenlefttp = 384;\n    t.parenleftex = 384;\n    t.parenleftbt = 384;\n    t.bracketlefttp = 384;\n    t.bracketleftex = 384;\n    t.bracketleftbt = 384;\n    t.bracelefttp = 494;\n    t.braceleftmid = 494;\n    t.braceleftbt = 494;\n    t.braceex = 494;\n    t.angleright = 329;\n    t.integral = 274;\n    t.integraltp = 686;\n    t.integralex = 686;\n    t.integralbt = 686;\n    t.parenrighttp = 384;\n    t.parenrightex = 384;\n    t.parenrightbt = 384;\n    t.bracketrighttp = 384;\n    t.bracketrightex = 384;\n    t.bracketrightbt = 384;\n    t.bracerighttp = 494;\n    t.bracerightmid = 494;\n    t.bracerightbt = 494;\n    t.apple = 790;\n  });\n  // eslint-disable-next-line no-shadow\n  t[\"Times-Roman\"] = getLookupTableFactory(function (t) {\n    t.space = 250;\n    t.exclam = 333;\n    t.quotedbl = 408;\n    t.numbersign = 500;\n    t.dollar = 500;\n    t.percent = 833;\n    t.ampersand = 778;\n    t.quoteright = 333;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 500;\n    t.plus = 564;\n    t.comma = 250;\n    t.hyphen = 333;\n    t.period = 250;\n    t.slash = 278;\n    t.zero = 500;\n    t.one = 500;\n    t.two = 500;\n    t.three = 500;\n    t.four = 500;\n    t.five = 500;\n    t.six = 500;\n    t.seven = 500;\n    t.eight = 500;\n    t.nine = 500;\n    t.colon = 278;\n    t.semicolon = 278;\n    t.less = 564;\n    t.equal = 564;\n    t.greater = 564;\n    t.question = 444;\n    t.at = 921;\n    t.A = 722;\n    t.B = 667;\n    t.C = 667;\n    t.D = 722;\n    t.E = 611;\n    t.F = 556;\n    t.G = 722;\n    t.H = 722;\n    t.I = 333;\n    t.J = 389;\n    t.K = 722;\n    t.L = 611;\n    t.M = 889;\n    t.N = 722;\n    t.O = 722;\n    t.P = 556;\n    t.Q = 722;\n    t.R = 667;\n    t.S = 556;\n    t.T = 611;\n    t.U = 722;\n    t.V = 722;\n    t.W = 944;\n    t.X = 722;\n    t.Y = 722;\n    t.Z = 611;\n    t.bracketleft = 333;\n    t.backslash = 278;\n    t.bracketright = 333;\n    t.asciicircum = 469;\n    t.underscore = 500;\n    t.quoteleft = 333;\n    t.a = 444;\n    t.b = 500;\n    t.c = 444;\n    t.d = 500;\n    t.e = 444;\n    t.f = 333;\n    t.g = 500;\n    t.h = 500;\n    t.i = 278;\n    t.j = 278;\n    t.k = 500;\n    t.l = 278;\n    t.m = 778;\n    t.n = 500;\n    t.o = 500;\n    t.p = 500;\n    t.q = 500;\n    t.r = 333;\n    t.s = 389;\n    t.t = 278;\n    t.u = 500;\n    t.v = 500;\n    t.w = 722;\n    t.x = 500;\n    t.y = 500;\n    t.z = 444;\n    t.braceleft = 480;\n    t.bar = 200;\n    t.braceright = 480;\n    t.asciitilde = 541;\n    t.exclamdown = 333;\n    t.cent = 500;\n    t.sterling = 500;\n    t.fraction = 167;\n    t.yen = 500;\n    t.florin = 500;\n    t.section = 500;\n    t.currency = 500;\n    t.quotesingle = 180;\n    t.quotedblleft = 444;\n    t.guillemotleft = 500;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 556;\n    t.fl = 556;\n    t.endash = 500;\n    t.dagger = 500;\n    t.daggerdbl = 500;\n    t.periodcentered = 250;\n    t.paragraph = 453;\n    t.bullet = 350;\n    t.quotesinglbase = 333;\n    t.quotedblbase = 444;\n    t.quotedblright = 444;\n    t.guillemotright = 500;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 444;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 889;\n    t.ordfeminine = 276;\n    t.Lslash = 611;\n    t.Oslash = 722;\n    t.OE = 889;\n    t.ordmasculine = 310;\n    t.ae = 667;\n    t.dotlessi = 278;\n    t.lslash = 278;\n    t.oslash = 500;\n    t.oe = 722;\n    t.germandbls = 500;\n    t.Idieresis = 333;\n    t.eacute = 444;\n    t.abreve = 444;\n    t.uhungarumlaut = 500;\n    t.ecaron = 444;\n    t.Ydieresis = 722;\n    t.divide = 564;\n    t.Yacute = 722;\n    t.Acircumflex = 722;\n    t.aacute = 444;\n    t.Ucircumflex = 722;\n    t.yacute = 500;\n    t.scommaaccent = 389;\n    t.ecircumflex = 444;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 444;\n    t.Uacute = 722;\n    t.uogonek = 500;\n    t.Edieresis = 611;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 760;\n    t.Emacron = 611;\n    t.ccaron = 444;\n    t.aring = 444;\n    t.Ncommaaccent = 722;\n    t.lacute = 278;\n    t.agrave = 444;\n    t.Tcommaaccent = 611;\n    t.Cacute = 667;\n    t.atilde = 444;\n    t.Edotaccent = 611;\n    t.scaron = 389;\n    t.scedilla = 389;\n    t.iacute = 278;\n    t.lozenge = 471;\n    t.Rcaron = 667;\n    t.Gcommaaccent = 722;\n    t.ucircumflex = 500;\n    t.acircumflex = 444;\n    t.Amacron = 722;\n    t.rcaron = 333;\n    t.ccedilla = 444;\n    t.Zdotaccent = 611;\n    t.Thorn = 556;\n    t.Omacron = 722;\n    t.Racute = 667;\n    t.Sacute = 556;\n    t.dcaron = 588;\n    t.Umacron = 722;\n    t.uring = 500;\n    t.threesuperior = 300;\n    t.Ograve = 722;\n    t.Agrave = 722;\n    t.Abreve = 722;\n    t.multiply = 564;\n    t.uacute = 500;\n    t.Tcaron = 611;\n    t.partialdiff = 476;\n    t.ydieresis = 500;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 611;\n    t.adieresis = 444;\n    t.edieresis = 444;\n    t.cacute = 444;\n    t.nacute = 500;\n    t.umacron = 500;\n    t.Ncaron = 722;\n    t.Iacute = 333;\n    t.plusminus = 564;\n    t.brokenbar = 200;\n    t.registered = 760;\n    t.Gbreve = 722;\n    t.Idotaccent = 333;\n    t.summation = 600;\n    t.Egrave = 611;\n    t.racute = 333;\n    t.omacron = 500;\n    t.Zacute = 611;\n    t.Zcaron = 611;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 667;\n    t.lcommaaccent = 278;\n    t.tcaron = 326;\n    t.eogonek = 444;\n    t.Uogonek = 722;\n    t.Aacute = 722;\n    t.Adieresis = 722;\n    t.egrave = 444;\n    t.zacute = 444;\n    t.iogonek = 278;\n    t.Oacute = 722;\n    t.oacute = 500;\n    t.amacron = 444;\n    t.sacute = 389;\n    t.idieresis = 278;\n    t.Ocircumflex = 722;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 500;\n    t.twosuperior = 300;\n    t.Odieresis = 722;\n    t.mu = 500;\n    t.igrave = 278;\n    t.ohungarumlaut = 500;\n    t.Eogonek = 611;\n    t.dcroat = 500;\n    t.threequarters = 750;\n    t.Scedilla = 556;\n    t.lcaron = 344;\n    t.Kcommaaccent = 722;\n    t.Lacute = 611;\n    t.trademark = 980;\n    t.edotaccent = 444;\n    t.Igrave = 333;\n    t.Imacron = 333;\n    t.Lcaron = 611;\n    t.onehalf = 750;\n    t.lessequal = 549;\n    t.ocircumflex = 500;\n    t.ntilde = 500;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 611;\n    t.emacron = 444;\n    t.gbreve = 500;\n    t.onequarter = 750;\n    t.Scaron = 556;\n    t.Scommaaccent = 556;\n    t.Ohungarumlaut = 722;\n    t.degree = 400;\n    t.ograve = 500;\n    t.Ccaron = 667;\n    t.ugrave = 500;\n    t.radical = 453;\n    t.Dcaron = 722;\n    t.rcommaaccent = 333;\n    t.Ntilde = 722;\n    t.otilde = 500;\n    t.Rcommaaccent = 667;\n    t.Lcommaaccent = 611;\n    t.Atilde = 722;\n    t.Aogonek = 722;\n    t.Aring = 722;\n    t.Otilde = 722;\n    t.zdotaccent = 444;\n    t.Ecaron = 611;\n    t.Iogonek = 333;\n    t.kcommaaccent = 500;\n    t.minus = 564;\n    t.Icircumflex = 333;\n    t.ncaron = 500;\n    t.tcommaaccent = 278;\n    t.logicalnot = 564;\n    t.odieresis = 500;\n    t.udieresis = 500;\n    t.notequal = 549;\n    t.gcommaaccent = 500;\n    t.eth = 500;\n    t.zcaron = 444;\n    t.ncommaaccent = 500;\n    t.onesuperior = 300;\n    t.imacron = 278;\n    t.Euro = 500;\n  });\n  // eslint-disable-next-line no-shadow\n  t[\"Times-Bold\"] = getLookupTableFactory(function (t) {\n    t.space = 250;\n    t.exclam = 333;\n    t.quotedbl = 555;\n    t.numbersign = 500;\n    t.dollar = 500;\n    t.percent = 1000;\n    t.ampersand = 833;\n    t.quoteright = 333;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 500;\n    t.plus = 570;\n    t.comma = 250;\n    t.hyphen = 333;\n    t.period = 250;\n    t.slash = 278;\n    t.zero = 500;\n    t.one = 500;\n    t.two = 500;\n    t.three = 500;\n    t.four = 500;\n    t.five = 500;\n    t.six = 500;\n    t.seven = 500;\n    t.eight = 500;\n    t.nine = 500;\n    t.colon = 333;\n    t.semicolon = 333;\n    t.less = 570;\n    t.equal = 570;\n    t.greater = 570;\n    t.question = 500;\n    t.at = 930;\n    t.A = 722;\n    t.B = 667;\n    t.C = 722;\n    t.D = 722;\n    t.E = 667;\n    t.F = 611;\n    t.G = 778;\n    t.H = 778;\n    t.I = 389;\n    t.J = 500;\n    t.K = 778;\n    t.L = 667;\n    t.M = 944;\n    t.N = 722;\n    t.O = 778;\n    t.P = 611;\n    t.Q = 778;\n    t.R = 722;\n    t.S = 556;\n    t.T = 667;\n    t.U = 722;\n    t.V = 722;\n    t.W = 1000;\n    t.X = 722;\n    t.Y = 722;\n    t.Z = 667;\n    t.bracketleft = 333;\n    t.backslash = 278;\n    t.bracketright = 333;\n    t.asciicircum = 581;\n    t.underscore = 500;\n    t.quoteleft = 333;\n    t.a = 500;\n    t.b = 556;\n    t.c = 444;\n    t.d = 556;\n    t.e = 444;\n    t.f = 333;\n    t.g = 500;\n    t.h = 556;\n    t.i = 278;\n    t.j = 333;\n    t.k = 556;\n    t.l = 278;\n    t.m = 833;\n    t.n = 556;\n    t.o = 500;\n    t.p = 556;\n    t.q = 556;\n    t.r = 444;\n    t.s = 389;\n    t.t = 333;\n    t.u = 556;\n    t.v = 500;\n    t.w = 722;\n    t.x = 500;\n    t.y = 500;\n    t.z = 444;\n    t.braceleft = 394;\n    t.bar = 220;\n    t.braceright = 394;\n    t.asciitilde = 520;\n    t.exclamdown = 333;\n    t.cent = 500;\n    t.sterling = 500;\n    t.fraction = 167;\n    t.yen = 500;\n    t.florin = 500;\n    t.section = 500;\n    t.currency = 500;\n    t.quotesingle = 278;\n    t.quotedblleft = 500;\n    t.guillemotleft = 500;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 556;\n    t.fl = 556;\n    t.endash = 500;\n    t.dagger = 500;\n    t.daggerdbl = 500;\n    t.periodcentered = 250;\n    t.paragraph = 540;\n    t.bullet = 350;\n    t.quotesinglbase = 333;\n    t.quotedblbase = 500;\n    t.quotedblright = 500;\n    t.guillemotright = 500;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 500;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 1000;\n    t.ordfeminine = 300;\n    t.Lslash = 667;\n    t.Oslash = 778;\n    t.OE = 1000;\n    t.ordmasculine = 330;\n    t.ae = 722;\n    t.dotlessi = 278;\n    t.lslash = 278;\n    t.oslash = 500;\n    t.oe = 722;\n    t.germandbls = 556;\n    t.Idieresis = 389;\n    t.eacute = 444;\n    t.abreve = 500;\n    t.uhungarumlaut = 556;\n    t.ecaron = 444;\n    t.Ydieresis = 722;\n    t.divide = 570;\n    t.Yacute = 722;\n    t.Acircumflex = 722;\n    t.aacute = 500;\n    t.Ucircumflex = 722;\n    t.yacute = 500;\n    t.scommaaccent = 389;\n    t.ecircumflex = 444;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 500;\n    t.Uacute = 722;\n    t.uogonek = 556;\n    t.Edieresis = 667;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 747;\n    t.Emacron = 667;\n    t.ccaron = 444;\n    t.aring = 500;\n    t.Ncommaaccent = 722;\n    t.lacute = 278;\n    t.agrave = 500;\n    t.Tcommaaccent = 667;\n    t.Cacute = 722;\n    t.atilde = 500;\n    t.Edotaccent = 667;\n    t.scaron = 389;\n    t.scedilla = 389;\n    t.iacute = 278;\n    t.lozenge = 494;\n    t.Rcaron = 722;\n    t.Gcommaaccent = 778;\n    t.ucircumflex = 556;\n    t.acircumflex = 500;\n    t.Amacron = 722;\n    t.rcaron = 444;\n    t.ccedilla = 444;\n    t.Zdotaccent = 667;\n    t.Thorn = 611;\n    t.Omacron = 778;\n    t.Racute = 722;\n    t.Sacute = 556;\n    t.dcaron = 672;\n    t.Umacron = 722;\n    t.uring = 556;\n    t.threesuperior = 300;\n    t.Ograve = 778;\n    t.Agrave = 722;\n    t.Abreve = 722;\n    t.multiply = 570;\n    t.uacute = 556;\n    t.Tcaron = 667;\n    t.partialdiff = 494;\n    t.ydieresis = 500;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 667;\n    t.adieresis = 500;\n    t.edieresis = 444;\n    t.cacute = 444;\n    t.nacute = 556;\n    t.umacron = 556;\n    t.Ncaron = 722;\n    t.Iacute = 389;\n    t.plusminus = 570;\n    t.brokenbar = 220;\n    t.registered = 747;\n    t.Gbreve = 778;\n    t.Idotaccent = 389;\n    t.summation = 600;\n    t.Egrave = 667;\n    t.racute = 444;\n    t.omacron = 500;\n    t.Zacute = 667;\n    t.Zcaron = 667;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 722;\n    t.lcommaaccent = 278;\n    t.tcaron = 416;\n    t.eogonek = 444;\n    t.Uogonek = 722;\n    t.Aacute = 722;\n    t.Adieresis = 722;\n    t.egrave = 444;\n    t.zacute = 444;\n    t.iogonek = 278;\n    t.Oacute = 778;\n    t.oacute = 500;\n    t.amacron = 500;\n    t.sacute = 389;\n    t.idieresis = 278;\n    t.Ocircumflex = 778;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 556;\n    t.twosuperior = 300;\n    t.Odieresis = 778;\n    t.mu = 556;\n    t.igrave = 278;\n    t.ohungarumlaut = 500;\n    t.Eogonek = 667;\n    t.dcroat = 556;\n    t.threequarters = 750;\n    t.Scedilla = 556;\n    t.lcaron = 394;\n    t.Kcommaaccent = 778;\n    t.Lacute = 667;\n    t.trademark = 1000;\n    t.edotaccent = 444;\n    t.Igrave = 389;\n    t.Imacron = 389;\n    t.Lcaron = 667;\n    t.onehalf = 750;\n    t.lessequal = 549;\n    t.ocircumflex = 500;\n    t.ntilde = 556;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 667;\n    t.emacron = 444;\n    t.gbreve = 500;\n    t.onequarter = 750;\n    t.Scaron = 556;\n    t.Scommaaccent = 556;\n    t.Ohungarumlaut = 778;\n    t.degree = 400;\n    t.ograve = 500;\n    t.Ccaron = 722;\n    t.ugrave = 556;\n    t.radical = 549;\n    t.Dcaron = 722;\n    t.rcommaaccent = 444;\n    t.Ntilde = 722;\n    t.otilde = 500;\n    t.Rcommaaccent = 722;\n    t.Lcommaaccent = 667;\n    t.Atilde = 722;\n    t.Aogonek = 722;\n    t.Aring = 722;\n    t.Otilde = 778;\n    t.zdotaccent = 444;\n    t.Ecaron = 667;\n    t.Iogonek = 389;\n    t.kcommaaccent = 556;\n    t.minus = 570;\n    t.Icircumflex = 389;\n    t.ncaron = 556;\n    t.tcommaaccent = 333;\n    t.logicalnot = 570;\n    t.odieresis = 500;\n    t.udieresis = 556;\n    t.notequal = 549;\n    t.gcommaaccent = 500;\n    t.eth = 500;\n    t.zcaron = 444;\n    t.ncommaaccent = 556;\n    t.onesuperior = 300;\n    t.imacron = 278;\n    t.Euro = 500;\n  });\n  // eslint-disable-next-line no-shadow\n  t[\"Times-BoldItalic\"] = getLookupTableFactory(function (t) {\n    t.space = 250;\n    t.exclam = 389;\n    t.quotedbl = 555;\n    t.numbersign = 500;\n    t.dollar = 500;\n    t.percent = 833;\n    t.ampersand = 778;\n    t.quoteright = 333;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 500;\n    t.plus = 570;\n    t.comma = 250;\n    t.hyphen = 333;\n    t.period = 250;\n    t.slash = 278;\n    t.zero = 500;\n    t.one = 500;\n    t.two = 500;\n    t.three = 500;\n    t.four = 500;\n    t.five = 500;\n    t.six = 500;\n    t.seven = 500;\n    t.eight = 500;\n    t.nine = 500;\n    t.colon = 333;\n    t.semicolon = 333;\n    t.less = 570;\n    t.equal = 570;\n    t.greater = 570;\n    t.question = 500;\n    t.at = 832;\n    t.A = 667;\n    t.B = 667;\n    t.C = 667;\n    t.D = 722;\n    t.E = 667;\n    t.F = 667;\n    t.G = 722;\n    t.H = 778;\n    t.I = 389;\n    t.J = 500;\n    t.K = 667;\n    t.L = 611;\n    t.M = 889;\n    t.N = 722;\n    t.O = 722;\n    t.P = 611;\n    t.Q = 722;\n    t.R = 667;\n    t.S = 556;\n    t.T = 611;\n    t.U = 722;\n    t.V = 667;\n    t.W = 889;\n    t.X = 667;\n    t.Y = 611;\n    t.Z = 611;\n    t.bracketleft = 333;\n    t.backslash = 278;\n    t.bracketright = 333;\n    t.asciicircum = 570;\n    t.underscore = 500;\n    t.quoteleft = 333;\n    t.a = 500;\n    t.b = 500;\n    t.c = 444;\n    t.d = 500;\n    t.e = 444;\n    t.f = 333;\n    t.g = 500;\n    t.h = 556;\n    t.i = 278;\n    t.j = 278;\n    t.k = 500;\n    t.l = 278;\n    t.m = 778;\n    t.n = 556;\n    t.o = 500;\n    t.p = 500;\n    t.q = 500;\n    t.r = 389;\n    t.s = 389;\n    t.t = 278;\n    t.u = 556;\n    t.v = 444;\n    t.w = 667;\n    t.x = 500;\n    t.y = 444;\n    t.z = 389;\n    t.braceleft = 348;\n    t.bar = 220;\n    t.braceright = 348;\n    t.asciitilde = 570;\n    t.exclamdown = 389;\n    t.cent = 500;\n    t.sterling = 500;\n    t.fraction = 167;\n    t.yen = 500;\n    t.florin = 500;\n    t.section = 500;\n    t.currency = 500;\n    t.quotesingle = 278;\n    t.quotedblleft = 500;\n    t.guillemotleft = 500;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 556;\n    t.fl = 556;\n    t.endash = 500;\n    t.dagger = 500;\n    t.daggerdbl = 500;\n    t.periodcentered = 250;\n    t.paragraph = 500;\n    t.bullet = 350;\n    t.quotesinglbase = 333;\n    t.quotedblbase = 500;\n    t.quotedblright = 500;\n    t.guillemotright = 500;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 500;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 944;\n    t.ordfeminine = 266;\n    t.Lslash = 611;\n    t.Oslash = 722;\n    t.OE = 944;\n    t.ordmasculine = 300;\n    t.ae = 722;\n    t.dotlessi = 278;\n    t.lslash = 278;\n    t.oslash = 500;\n    t.oe = 722;\n    t.germandbls = 500;\n    t.Idieresis = 389;\n    t.eacute = 444;\n    t.abreve = 500;\n    t.uhungarumlaut = 556;\n    t.ecaron = 444;\n    t.Ydieresis = 611;\n    t.divide = 570;\n    t.Yacute = 611;\n    t.Acircumflex = 667;\n    t.aacute = 500;\n    t.Ucircumflex = 722;\n    t.yacute = 444;\n    t.scommaaccent = 389;\n    t.ecircumflex = 444;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 500;\n    t.Uacute = 722;\n    t.uogonek = 556;\n    t.Edieresis = 667;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 747;\n    t.Emacron = 667;\n    t.ccaron = 444;\n    t.aring = 500;\n    t.Ncommaaccent = 722;\n    t.lacute = 278;\n    t.agrave = 500;\n    t.Tcommaaccent = 611;\n    t.Cacute = 667;\n    t.atilde = 500;\n    t.Edotaccent = 667;\n    t.scaron = 389;\n    t.scedilla = 389;\n    t.iacute = 278;\n    t.lozenge = 494;\n    t.Rcaron = 667;\n    t.Gcommaaccent = 722;\n    t.ucircumflex = 556;\n    t.acircumflex = 500;\n    t.Amacron = 667;\n    t.rcaron = 389;\n    t.ccedilla = 444;\n    t.Zdotaccent = 611;\n    t.Thorn = 611;\n    t.Omacron = 722;\n    t.Racute = 667;\n    t.Sacute = 556;\n    t.dcaron = 608;\n    t.Umacron = 722;\n    t.uring = 556;\n    t.threesuperior = 300;\n    t.Ograve = 722;\n    t.Agrave = 667;\n    t.Abreve = 667;\n    t.multiply = 570;\n    t.uacute = 556;\n    t.Tcaron = 611;\n    t.partialdiff = 494;\n    t.ydieresis = 444;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 667;\n    t.adieresis = 500;\n    t.edieresis = 444;\n    t.cacute = 444;\n    t.nacute = 556;\n    t.umacron = 556;\n    t.Ncaron = 722;\n    t.Iacute = 389;\n    t.plusminus = 570;\n    t.brokenbar = 220;\n    t.registered = 747;\n    t.Gbreve = 722;\n    t.Idotaccent = 389;\n    t.summation = 600;\n    t.Egrave = 667;\n    t.racute = 389;\n    t.omacron = 500;\n    t.Zacute = 611;\n    t.Zcaron = 611;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 667;\n    t.lcommaaccent = 278;\n    t.tcaron = 366;\n    t.eogonek = 444;\n    t.Uogonek = 722;\n    t.Aacute = 667;\n    t.Adieresis = 667;\n    t.egrave = 444;\n    t.zacute = 389;\n    t.iogonek = 278;\n    t.Oacute = 722;\n    t.oacute = 500;\n    t.amacron = 500;\n    t.sacute = 389;\n    t.idieresis = 278;\n    t.Ocircumflex = 722;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 500;\n    t.twosuperior = 300;\n    t.Odieresis = 722;\n    t.mu = 576;\n    t.igrave = 278;\n    t.ohungarumlaut = 500;\n    t.Eogonek = 667;\n    t.dcroat = 500;\n    t.threequarters = 750;\n    t.Scedilla = 556;\n    t.lcaron = 382;\n    t.Kcommaaccent = 667;\n    t.Lacute = 611;\n    t.trademark = 1000;\n    t.edotaccent = 444;\n    t.Igrave = 389;\n    t.Imacron = 389;\n    t.Lcaron = 611;\n    t.onehalf = 750;\n    t.lessequal = 549;\n    t.ocircumflex = 500;\n    t.ntilde = 556;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 667;\n    t.emacron = 444;\n    t.gbreve = 500;\n    t.onequarter = 750;\n    t.Scaron = 556;\n    t.Scommaaccent = 556;\n    t.Ohungarumlaut = 722;\n    t.degree = 400;\n    t.ograve = 500;\n    t.Ccaron = 667;\n    t.ugrave = 556;\n    t.radical = 549;\n    t.Dcaron = 722;\n    t.rcommaaccent = 389;\n    t.Ntilde = 722;\n    t.otilde = 500;\n    t.Rcommaaccent = 667;\n    t.Lcommaaccent = 611;\n    t.Atilde = 667;\n    t.Aogonek = 667;\n    t.Aring = 667;\n    t.Otilde = 722;\n    t.zdotaccent = 389;\n    t.Ecaron = 667;\n    t.Iogonek = 389;\n    t.kcommaaccent = 500;\n    t.minus = 606;\n    t.Icircumflex = 389;\n    t.ncaron = 556;\n    t.tcommaaccent = 278;\n    t.logicalnot = 606;\n    t.odieresis = 500;\n    t.udieresis = 556;\n    t.notequal = 549;\n    t.gcommaaccent = 500;\n    t.eth = 500;\n    t.zcaron = 389;\n    t.ncommaaccent = 556;\n    t.onesuperior = 300;\n    t.imacron = 278;\n    t.Euro = 500;\n  });\n  // eslint-disable-next-line no-shadow\n  t[\"Times-Italic\"] = getLookupTableFactory(function (t) {\n    t.space = 250;\n    t.exclam = 333;\n    t.quotedbl = 420;\n    t.numbersign = 500;\n    t.dollar = 500;\n    t.percent = 833;\n    t.ampersand = 778;\n    t.quoteright = 333;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 500;\n    t.plus = 675;\n    t.comma = 250;\n    t.hyphen = 333;\n    t.period = 250;\n    t.slash = 278;\n    t.zero = 500;\n    t.one = 500;\n    t.two = 500;\n    t.three = 500;\n    t.four = 500;\n    t.five = 500;\n    t.six = 500;\n    t.seven = 500;\n    t.eight = 500;\n    t.nine = 500;\n    t.colon = 333;\n    t.semicolon = 333;\n    t.less = 675;\n    t.equal = 675;\n    t.greater = 675;\n    t.question = 500;\n    t.at = 920;\n    t.A = 611;\n    t.B = 611;\n    t.C = 667;\n    t.D = 722;\n    t.E = 611;\n    t.F = 611;\n    t.G = 722;\n    t.H = 722;\n    t.I = 333;\n    t.J = 444;\n    t.K = 667;\n    t.L = 556;\n    t.M = 833;\n    t.N = 667;\n    t.O = 722;\n    t.P = 611;\n    t.Q = 722;\n    t.R = 611;\n    t.S = 500;\n    t.T = 556;\n    t.U = 722;\n    t.V = 611;\n    t.W = 833;\n    t.X = 611;\n    t.Y = 556;\n    t.Z = 556;\n    t.bracketleft = 389;\n    t.backslash = 278;\n    t.bracketright = 389;\n    t.asciicircum = 422;\n    t.underscore = 500;\n    t.quoteleft = 333;\n    t.a = 500;\n    t.b = 500;\n    t.c = 444;\n    t.d = 500;\n    t.e = 444;\n    t.f = 278;\n    t.g = 500;\n    t.h = 500;\n    t.i = 278;\n    t.j = 278;\n    t.k = 444;\n    t.l = 278;\n    t.m = 722;\n    t.n = 500;\n    t.o = 500;\n    t.p = 500;\n    t.q = 500;\n    t.r = 389;\n    t.s = 389;\n    t.t = 278;\n    t.u = 500;\n    t.v = 444;\n    t.w = 667;\n    t.x = 444;\n    t.y = 444;\n    t.z = 389;\n    t.braceleft = 400;\n    t.bar = 275;\n    t.braceright = 400;\n    t.asciitilde = 541;\n    t.exclamdown = 389;\n    t.cent = 500;\n    t.sterling = 500;\n    t.fraction = 167;\n    t.yen = 500;\n    t.florin = 500;\n    t.section = 500;\n    t.currency = 500;\n    t.quotesingle = 214;\n    t.quotedblleft = 556;\n    t.guillemotleft = 500;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 500;\n    t.fl = 500;\n    t.endash = 500;\n    t.dagger = 500;\n    t.daggerdbl = 500;\n    t.periodcentered = 250;\n    t.paragraph = 523;\n    t.bullet = 350;\n    t.quotesinglbase = 333;\n    t.quotedblbase = 556;\n    t.quotedblright = 556;\n    t.guillemotright = 500;\n    t.ellipsis = 889;\n    t.perthousand = 1000;\n    t.questiondown = 500;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 889;\n    t.AE = 889;\n    t.ordfeminine = 276;\n    t.Lslash = 556;\n    t.Oslash = 722;\n    t.OE = 944;\n    t.ordmasculine = 310;\n    t.ae = 667;\n    t.dotlessi = 278;\n    t.lslash = 278;\n    t.oslash = 500;\n    t.oe = 667;\n    t.germandbls = 500;\n    t.Idieresis = 333;\n    t.eacute = 444;\n    t.abreve = 500;\n    t.uhungarumlaut = 500;\n    t.ecaron = 444;\n    t.Ydieresis = 556;\n    t.divide = 675;\n    t.Yacute = 556;\n    t.Acircumflex = 611;\n    t.aacute = 500;\n    t.Ucircumflex = 722;\n    t.yacute = 444;\n    t.scommaaccent = 389;\n    t.ecircumflex = 444;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 500;\n    t.Uacute = 722;\n    t.uogonek = 500;\n    t.Edieresis = 611;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 760;\n    t.Emacron = 611;\n    t.ccaron = 444;\n    t.aring = 500;\n    t.Ncommaaccent = 667;\n    t.lacute = 278;\n    t.agrave = 500;\n    t.Tcommaaccent = 556;\n    t.Cacute = 667;\n    t.atilde = 500;\n    t.Edotaccent = 611;\n    t.scaron = 389;\n    t.scedilla = 389;\n    t.iacute = 278;\n    t.lozenge = 471;\n    t.Rcaron = 611;\n    t.Gcommaaccent = 722;\n    t.ucircumflex = 500;\n    t.acircumflex = 500;\n    t.Amacron = 611;\n    t.rcaron = 389;\n    t.ccedilla = 444;\n    t.Zdotaccent = 556;\n    t.Thorn = 611;\n    t.Omacron = 722;\n    t.Racute = 611;\n    t.Sacute = 500;\n    t.dcaron = 544;\n    t.Umacron = 722;\n    t.uring = 500;\n    t.threesuperior = 300;\n    t.Ograve = 722;\n    t.Agrave = 611;\n    t.Abreve = 611;\n    t.multiply = 675;\n    t.uacute = 500;\n    t.Tcaron = 556;\n    t.partialdiff = 476;\n    t.ydieresis = 444;\n    t.Nacute = 667;\n    t.icircumflex = 278;\n    t.Ecircumflex = 611;\n    t.adieresis = 500;\n    t.edieresis = 444;\n    t.cacute = 444;\n    t.nacute = 500;\n    t.umacron = 500;\n    t.Ncaron = 667;\n    t.Iacute = 333;\n    t.plusminus = 675;\n    t.brokenbar = 275;\n    t.registered = 760;\n    t.Gbreve = 722;\n    t.Idotaccent = 333;\n    t.summation = 600;\n    t.Egrave = 611;\n    t.racute = 389;\n    t.omacron = 500;\n    t.Zacute = 556;\n    t.Zcaron = 556;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 667;\n    t.lcommaaccent = 278;\n    t.tcaron = 300;\n    t.eogonek = 444;\n    t.Uogonek = 722;\n    t.Aacute = 611;\n    t.Adieresis = 611;\n    t.egrave = 444;\n    t.zacute = 389;\n    t.iogonek = 278;\n    t.Oacute = 722;\n    t.oacute = 500;\n    t.amacron = 500;\n    t.sacute = 389;\n    t.idieresis = 278;\n    t.Ocircumflex = 722;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 500;\n    t.twosuperior = 300;\n    t.Odieresis = 722;\n    t.mu = 500;\n    t.igrave = 278;\n    t.ohungarumlaut = 500;\n    t.Eogonek = 611;\n    t.dcroat = 500;\n    t.threequarters = 750;\n    t.Scedilla = 500;\n    t.lcaron = 300;\n    t.Kcommaaccent = 667;\n    t.Lacute = 556;\n    t.trademark = 980;\n    t.edotaccent = 444;\n    t.Igrave = 333;\n    t.Imacron = 333;\n    t.Lcaron = 611;\n    t.onehalf = 750;\n    t.lessequal = 549;\n    t.ocircumflex = 500;\n    t.ntilde = 500;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 611;\n    t.emacron = 444;\n    t.gbreve = 500;\n    t.onequarter = 750;\n    t.Scaron = 500;\n    t.Scommaaccent = 500;\n    t.Ohungarumlaut = 722;\n    t.degree = 400;\n    t.ograve = 500;\n    t.Ccaron = 667;\n    t.ugrave = 500;\n    t.radical = 453;\n    t.Dcaron = 722;\n    t.rcommaaccent = 389;\n    t.Ntilde = 667;\n    t.otilde = 500;\n    t.Rcommaaccent = 611;\n    t.Lcommaaccent = 556;\n    t.Atilde = 611;\n    t.Aogonek = 611;\n    t.Aring = 611;\n    t.Otilde = 722;\n    t.zdotaccent = 389;\n    t.Ecaron = 611;\n    t.Iogonek = 333;\n    t.kcommaaccent = 444;\n    t.minus = 675;\n    t.Icircumflex = 333;\n    t.ncaron = 500;\n    t.tcommaaccent = 278;\n    t.logicalnot = 675;\n    t.odieresis = 500;\n    t.udieresis = 500;\n    t.notequal = 549;\n    t.gcommaaccent = 500;\n    t.eth = 500;\n    t.zcaron = 389;\n    t.ncommaaccent = 500;\n    t.onesuperior = 300;\n    t.imacron = 278;\n    t.Euro = 500;\n  });\n  // eslint-disable-next-line no-shadow\n  t.ZapfDingbats = getLookupTableFactory(function (t) {\n    t.space = 278;\n    t.a1 = 974;\n    t.a2 = 961;\n    t.a202 = 974;\n    t.a3 = 980;\n    t.a4 = 719;\n    t.a5 = 789;\n    t.a119 = 790;\n    t.a118 = 791;\n    t.a117 = 690;\n    t.a11 = 960;\n    t.a12 = 939;\n    t.a13 = 549;\n    t.a14 = 855;\n    t.a15 = 911;\n    t.a16 = 933;\n    t.a105 = 911;\n    t.a17 = 945;\n    t.a18 = 974;\n    t.a19 = 755;\n    t.a20 = 846;\n    t.a21 = 762;\n    t.a22 = 761;\n    t.a23 = 571;\n    t.a24 = 677;\n    t.a25 = 763;\n    t.a26 = 760;\n    t.a27 = 759;\n    t.a28 = 754;\n    t.a6 = 494;\n    t.a7 = 552;\n    t.a8 = 537;\n    t.a9 = 577;\n    t.a10 = 692;\n    t.a29 = 786;\n    t.a30 = 788;\n    t.a31 = 788;\n    t.a32 = 790;\n    t.a33 = 793;\n    t.a34 = 794;\n    t.a35 = 816;\n    t.a36 = 823;\n    t.a37 = 789;\n    t.a38 = 841;\n    t.a39 = 823;\n    t.a40 = 833;\n    t.a41 = 816;\n    t.a42 = 831;\n    t.a43 = 923;\n    t.a44 = 744;\n    t.a45 = 723;\n    t.a46 = 749;\n    t.a47 = 790;\n    t.a48 = 792;\n    t.a49 = 695;\n    t.a50 = 776;\n    t.a51 = 768;\n    t.a52 = 792;\n    t.a53 = 759;\n    t.a54 = 707;\n    t.a55 = 708;\n    t.a56 = 682;\n    t.a57 = 701;\n    t.a58 = 826;\n    t.a59 = 815;\n    t.a60 = 789;\n    t.a61 = 789;\n    t.a62 = 707;\n    t.a63 = 687;\n    t.a64 = 696;\n    t.a65 = 689;\n    t.a66 = 786;\n    t.a67 = 787;\n    t.a68 = 713;\n    t.a69 = 791;\n    t.a70 = 785;\n    t.a71 = 791;\n    t.a72 = 873;\n    t.a73 = 761;\n    t.a74 = 762;\n    t.a203 = 762;\n    t.a75 = 759;\n    t.a204 = 759;\n    t.a76 = 892;\n    t.a77 = 892;\n    t.a78 = 788;\n    t.a79 = 784;\n    t.a81 = 438;\n    t.a82 = 138;\n    t.a83 = 277;\n    t.a84 = 415;\n    t.a97 = 392;\n    t.a98 = 392;\n    t.a99 = 668;\n    t.a100 = 668;\n    t.a89 = 390;\n    t.a90 = 390;\n    t.a93 = 317;\n    t.a94 = 317;\n    t.a91 = 276;\n    t.a92 = 276;\n    t.a205 = 509;\n    t.a85 = 509;\n    t.a206 = 410;\n    t.a86 = 410;\n    t.a87 = 234;\n    t.a88 = 234;\n    t.a95 = 334;\n    t.a96 = 334;\n    t.a101 = 732;\n    t.a102 = 544;\n    t.a103 = 544;\n    t.a104 = 910;\n    t.a106 = 667;\n    t.a107 = 760;\n    t.a108 = 760;\n    t.a112 = 776;\n    t.a111 = 595;\n    t.a110 = 694;\n    t.a109 = 626;\n    t.a120 = 788;\n    t.a121 = 788;\n    t.a122 = 788;\n    t.a123 = 788;\n    t.a124 = 788;\n    t.a125 = 788;\n    t.a126 = 788;\n    t.a127 = 788;\n    t.a128 = 788;\n    t.a129 = 788;\n    t.a130 = 788;\n    t.a131 = 788;\n    t.a132 = 788;\n    t.a133 = 788;\n    t.a134 = 788;\n    t.a135 = 788;\n    t.a136 = 788;\n    t.a137 = 788;\n    t.a138 = 788;\n    t.a139 = 788;\n    t.a140 = 788;\n    t.a141 = 788;\n    t.a142 = 788;\n    t.a143 = 788;\n    t.a144 = 788;\n    t.a145 = 788;\n    t.a146 = 788;\n    t.a147 = 788;\n    t.a148 = 788;\n    t.a149 = 788;\n    t.a150 = 788;\n    t.a151 = 788;\n    t.a152 = 788;\n    t.a153 = 788;\n    t.a154 = 788;\n    t.a155 = 788;\n    t.a156 = 788;\n    t.a157 = 788;\n    t.a158 = 788;\n    t.a159 = 788;\n    t.a160 = 894;\n    t.a161 = 838;\n    t.a163 = 1016;\n    t.a164 = 458;\n    t.a196 = 748;\n    t.a165 = 924;\n    t.a192 = 748;\n    t.a166 = 918;\n    t.a167 = 927;\n    t.a168 = 928;\n    t.a169 = 928;\n    t.a170 = 834;\n    t.a171 = 873;\n    t.a172 = 828;\n    t.a173 = 924;\n    t.a162 = 924;\n    t.a174 = 917;\n    t.a175 = 930;\n    t.a176 = 931;\n    t.a177 = 463;\n    t.a178 = 883;\n    t.a179 = 836;\n    t.a193 = 836;\n    t.a180 = 867;\n    t.a199 = 867;\n    t.a181 = 696;\n    t.a200 = 696;\n    t.a182 = 874;\n    t.a201 = 874;\n    t.a183 = 760;\n    t.a184 = 946;\n    t.a197 = 771;\n    t.a185 = 865;\n    t.a194 = 771;\n    t.a198 = 888;\n    t.a186 = 967;\n    t.a195 = 888;\n    t.a187 = 831;\n    t.a188 = 873;\n    t.a189 = 927;\n    t.a190 = 970;\n    t.a191 = 918;\n  });\n});\n\nexport { getMetrics };\n","/* Copyright 2014 Opera Software ASA\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n *\n * Based on https://code.google.com/p/smhasher/wiki/MurmurHash3.\n * Hashes roughly 100 KB per millisecond on i7 3.4 GHz.\n */\n/* eslint no-var: error */\n\nimport { isArrayBuffer, isString } from \"../shared/util.js\";\n\nconst SEED = 0xc3d2e1f0;\n// Workaround for missing math precision in JS.\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\n\nclass MurmurHash3_64 {\n  constructor(seed) {\n    this.h1 = seed ? seed & 0xffffffff : SEED;\n    this.h2 = seed ? seed & 0xffffffff : SEED;\n  }\n\n  update(input) {\n    let data, length;\n    if (isString(input)) {\n      data = new Uint8Array(input.length * 2);\n      length = 0;\n      for (let i = 0, ii = input.length; i < ii; i++) {\n        const code = input.charCodeAt(i);\n        if (code <= 0xff) {\n          data[length++] = code;\n        } else {\n          data[length++] = code >>> 8;\n          data[length++] = code & 0xff;\n        }\n      }\n    } else if (isArrayBuffer(input)) {\n      data = input;\n      length = data.byteLength;\n    } else {\n      throw new Error(\n        \"Wrong data format in MurmurHash3_64_update. \" +\n          \"Input must be a string or array.\"\n      );\n    }\n\n    const blockCounts = length >> 2;\n    const tailLength = length - blockCounts * 4;\n    // We don't care about endianness here.\n    const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n    let k1 = 0,\n      k2 = 0;\n    let h1 = this.h1,\n      h2 = this.h2;\n    const C1 = 0xcc9e2d51,\n      C2 = 0x1b873593;\n    const C1_LOW = C1 & MASK_LOW,\n      C2_LOW = C2 & MASK_LOW;\n\n    for (let i = 0; i < blockCounts; i++) {\n      if (i & 1) {\n        k1 = dataUint32[i];\n        k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\n        k1 = (k1 << 15) | (k1 >>> 17);\n        k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\n        h1 ^= k1;\n        h1 = (h1 << 13) | (h1 >>> 19);\n        h1 = h1 * 5 + 0xe6546b64;\n      } else {\n        k2 = dataUint32[i];\n        k2 = ((k2 * C1) & MASK_HIGH) | ((k2 * C1_LOW) & MASK_LOW);\n        k2 = (k2 << 15) | (k2 >>> 17);\n        k2 = ((k2 * C2) & MASK_HIGH) | ((k2 * C2_LOW) & MASK_LOW);\n        h2 ^= k2;\n        h2 = (h2 << 13) | (h2 >>> 19);\n        h2 = h2 * 5 + 0xe6546b64;\n      }\n    }\n\n    k1 = 0;\n\n    switch (tailLength) {\n      case 3:\n        k1 ^= data[blockCounts * 4 + 2] << 16;\n      /* falls through */\n      case 2:\n        k1 ^= data[blockCounts * 4 + 1] << 8;\n      /* falls through */\n      case 1:\n        k1 ^= data[blockCounts * 4];\n        /* falls through */\n\n        k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\n        k1 = (k1 << 15) | (k1 >>> 17);\n        k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\n        if (blockCounts & 1) {\n          h1 ^= k1;\n        } else {\n          h2 ^= k1;\n        }\n    }\n\n    this.h1 = h1;\n    this.h2 = h2;\n  }\n\n  hexdigest() {\n    let h1 = this.h1,\n      h2 = this.h2;\n\n    h1 ^= h2 >>> 1;\n    h1 = ((h1 * 0xed558ccd) & MASK_HIGH) | ((h1 * 0x8ccd) & MASK_LOW);\n    h2 =\n      ((h2 * 0xff51afd7) & MASK_HIGH) |\n      (((((h2 << 16) | (h1 >>> 16)) * 0xafd7ed55) & MASK_HIGH) >>> 16);\n    h1 ^= h2 >>> 1;\n    h1 = ((h1 * 0x1a85ec53) & MASK_HIGH) | ((h1 * 0xec53) & MASK_LOW);\n    h2 =\n      ((h2 * 0xc4ceb9fe) & MASK_HIGH) |\n      (((((h2 << 16) | (h1 >>> 16)) * 0xb9fe1a85) & MASK_HIGH) >>> 16);\n    h1 ^= h2 >>> 1;\n\n    const hex1 = (h1 >>> 0).toString(16),\n      hex2 = (h2 >>> 0).toString(16);\n    return hex1.padStart(8, \"0\") + hex2.padStart(8, \"0\");\n  }\n}\n\nexport { MurmurHash3_64 };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, FormatError, ImageKind, info, warn } from \"../shared/util.js\";\nimport { isName, isStream, Name } from \"./primitives.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { DecodeStream } from \"./stream.js\";\nimport { JpegStream } from \"./jpeg_stream.js\";\nimport { JpxImage } from \"./jpx.js\";\n\n/**\n * Decode and clamp a value. The formula is different from the spec because we\n * don't decode to float range [0,1], we decode it in the [0,max] range.\n */\nfunction decodeAndClamp(value, addend, coefficient, max) {\n  value = addend + value * coefficient;\n  // Clamp the value to the range\n  if (value < 0) {\n    value = 0;\n  } else if (value > max) {\n    value = max;\n  }\n  return value;\n}\n\n/**\n * Resizes an image mask with 1 component.\n * @param {TypedArray} src - The source buffer.\n * @param {number} bpc - Number of bits per component.\n * @param {number} w1 - Original width.\n * @param {number} h1 - Original height.\n * @param {number} w2 - New width.\n * @param {number} h2 - New height.\n * @returns {TypedArray} The resized image mask buffer.\n */\nfunction resizeImageMask(src, bpc, w1, h1, w2, h2) {\n  var length = w2 * h2;\n  let dest;\n  if (bpc <= 8) {\n    dest = new Uint8Array(length);\n  } else if (bpc <= 16) {\n    dest = new Uint16Array(length);\n  } else {\n    dest = new Uint32Array(length);\n  }\n  var xRatio = w1 / w2;\n  var yRatio = h1 / h2;\n  var i,\n    j,\n    py,\n    newIndex = 0,\n    oldIndex;\n  var xScaled = new Uint16Array(w2);\n  var w1Scanline = w1;\n\n  for (i = 0; i < w2; i++) {\n    xScaled[i] = Math.floor(i * xRatio);\n  }\n  for (i = 0; i < h2; i++) {\n    py = Math.floor(i * yRatio) * w1Scanline;\n    for (j = 0; j < w2; j++) {\n      oldIndex = py + xScaled[j];\n      dest[newIndex++] = src[oldIndex];\n    }\n  }\n  return dest;\n}\n\nclass PDFImage {\n  constructor({\n    xref,\n    res,\n    image,\n    isInline = false,\n    smask = null,\n    mask = null,\n    isMask = false,\n    pdfFunctionFactory,\n    localColorSpaceCache,\n  }) {\n    this.image = image;\n    var dict = image.dict;\n\n    const filter = dict.get(\"Filter\");\n    if (isName(filter)) {\n      switch (filter.name) {\n        case \"JPXDecode\":\n          var jpxImage = new JpxImage();\n          jpxImage.parseImageProperties(image.stream);\n          image.stream.reset();\n\n          image.width = jpxImage.width;\n          image.height = jpxImage.height;\n          image.bitsPerComponent = jpxImage.bitsPerComponent;\n          image.numComps = jpxImage.componentsCount;\n          break;\n        case \"JBIG2Decode\":\n          image.bitsPerComponent = 1;\n          image.numComps = 1;\n          break;\n      }\n    }\n    // TODO cache rendered images?\n\n    let width = dict.get(\"Width\", \"W\");\n    let height = dict.get(\"Height\", \"H\");\n\n    if (\n      Number.isInteger(image.width) &&\n      image.width > 0 &&\n      Number.isInteger(image.height) &&\n      image.height > 0 &&\n      (image.width !== width || image.height !== height)\n    ) {\n      warn(\n        \"PDFImage - using the Width/Height of the image data, \" +\n          \"rather than the image dictionary.\"\n      );\n      width = image.width;\n      height = image.height;\n    }\n    if (width < 1 || height < 1) {\n      throw new FormatError(\n        `Invalid image width: ${width} or height: ${height}`\n      );\n    }\n    this.width = width;\n    this.height = height;\n\n    this.interpolate = dict.get(\"Interpolate\", \"I\") || false;\n    this.imageMask = dict.get(\"ImageMask\", \"IM\") || false;\n    this.matte = dict.get(\"Matte\") || false;\n\n    var bitsPerComponent = image.bitsPerComponent;\n    if (!bitsPerComponent) {\n      bitsPerComponent = dict.get(\"BitsPerComponent\", \"BPC\");\n      if (!bitsPerComponent) {\n        if (this.imageMask) {\n          bitsPerComponent = 1;\n        } else {\n          throw new FormatError(\n            `Bits per component missing in image: ${this.imageMask}`\n          );\n        }\n      }\n    }\n    this.bpc = bitsPerComponent;\n\n    if (!this.imageMask) {\n      let colorSpace = dict.getRaw(\"ColorSpace\") || dict.getRaw(\"CS\");\n      if (!colorSpace) {\n        info(\"JPX images (which do not require color spaces)\");\n        switch (image.numComps) {\n          case 1:\n            colorSpace = Name.get(\"DeviceGray\");\n            break;\n          case 3:\n            colorSpace = Name.get(\"DeviceRGB\");\n            break;\n          case 4:\n            colorSpace = Name.get(\"DeviceCMYK\");\n            break;\n          default:\n            throw new Error(\n              `JPX images with ${image.numComps} ` +\n                \"color components not supported.\"\n            );\n        }\n      }\n      this.colorSpace = ColorSpace.parse({\n        cs: colorSpace,\n        xref,\n        resources: isInline ? res : null,\n        pdfFunctionFactory,\n        localColorSpaceCache,\n      });\n      this.numComps = this.colorSpace.numComps;\n    }\n\n    this.decode = dict.getArray(\"Decode\", \"D\");\n    this.needsDecode = false;\n    if (\n      this.decode &&\n      ((this.colorSpace &&\n        !this.colorSpace.isDefaultDecode(this.decode, bitsPerComponent)) ||\n        (isMask &&\n          !ColorSpace.isDefaultDecode(this.decode, /* numComps = */ 1)))\n    ) {\n      this.needsDecode = true;\n      // Do some preprocessing to avoid more math.\n      var max = (1 << bitsPerComponent) - 1;\n      this.decodeCoefficients = [];\n      this.decodeAddends = [];\n      const isIndexed = this.colorSpace && this.colorSpace.name === \"Indexed\";\n      for (var i = 0, j = 0; i < this.decode.length; i += 2, ++j) {\n        var dmin = this.decode[i];\n        var dmax = this.decode[i + 1];\n        this.decodeCoefficients[j] = isIndexed\n          ? (dmax - dmin) / max\n          : dmax - dmin;\n        this.decodeAddends[j] = isIndexed ? dmin : max * dmin;\n      }\n    }\n\n    if (smask) {\n      this.smask = new PDFImage({\n        xref,\n        res,\n        image: smask,\n        isInline,\n        pdfFunctionFactory,\n        localColorSpaceCache,\n      });\n    } else if (mask) {\n      if (isStream(mask)) {\n        var maskDict = mask.dict,\n          imageMask = maskDict.get(\"ImageMask\", \"IM\");\n        if (!imageMask) {\n          warn(\"Ignoring /Mask in image without /ImageMask.\");\n        } else {\n          this.mask = new PDFImage({\n            xref,\n            res,\n            image: mask,\n            isInline,\n            isMask: true,\n            pdfFunctionFactory,\n            localColorSpaceCache,\n          });\n        }\n      } else {\n        // Color key mask (just an array).\n        this.mask = mask;\n      }\n    }\n  }\n\n  /**\n   * Handles processing of image data and returns the Promise that is resolved\n   * with a PDFImage when the image is ready to be used.\n   */\n  static async buildImage({\n    xref,\n    res,\n    image,\n    isInline = false,\n    pdfFunctionFactory,\n    localColorSpaceCache,\n  }) {\n    const imageData = image;\n    let smaskData = null;\n    let maskData = null;\n\n    const smask = image.dict.get(\"SMask\");\n    const mask = image.dict.get(\"Mask\");\n\n    if (smask) {\n      smaskData = smask;\n    } else if (mask) {\n      if (isStream(mask) || Array.isArray(mask)) {\n        maskData = mask;\n      } else {\n        warn(\"Unsupported mask format.\");\n      }\n    }\n\n    return new PDFImage({\n      xref,\n      res,\n      image: imageData,\n      isInline,\n      smask: smaskData,\n      mask: maskData,\n      pdfFunctionFactory,\n      localColorSpaceCache,\n    });\n  }\n\n  static createMask({\n    imgArray,\n    width,\n    height,\n    imageIsFromDecodeStream,\n    inverseDecode,\n  }) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        imgArray instanceof Uint8ClampedArray,\n        'PDFImage.createMask: Unsupported \"imgArray\" type.'\n      );\n    }\n    // |imgArray| might not contain full data for every pixel of the mask, so\n    // we need to distinguish between |computedLength| and |actualLength|.\n    // In particular, if inverseDecode is true, then the array we return must\n    // have a length of |computedLength|.\n\n    var computedLength = ((width + 7) >> 3) * height;\n    var actualLength = imgArray.byteLength;\n    var haveFullData = computedLength === actualLength;\n    var data, i;\n\n    if (imageIsFromDecodeStream && (!inverseDecode || haveFullData)) {\n      // imgArray came from a DecodeStream and its data is in an appropriate\n      // form, so we can just transfer it.\n      data = imgArray;\n    } else if (!inverseDecode) {\n      data = new Uint8ClampedArray(actualLength);\n      data.set(imgArray);\n    } else {\n      data = new Uint8ClampedArray(computedLength);\n      data.set(imgArray);\n      for (i = actualLength; i < computedLength; i++) {\n        data[i] = 0xff;\n      }\n    }\n\n    // If necessary, invert the original mask data (but not any extra we might\n    // have added above). It's safe to modify the array -- whether it's the\n    // original or a copy, we're about to transfer it anyway, so nothing else\n    // in this thread can be relying on its contents.\n    if (inverseDecode) {\n      for (i = 0; i < actualLength; i++) {\n        data[i] ^= 0xff;\n      }\n    }\n\n    return { data, width, height };\n  }\n\n  get drawWidth() {\n    return Math.max(\n      this.width,\n      (this.smask && this.smask.width) || 0,\n      (this.mask && this.mask.width) || 0\n    );\n  }\n\n  get drawHeight() {\n    return Math.max(\n      this.height,\n      (this.smask && this.smask.height) || 0,\n      (this.mask && this.mask.height) || 0\n    );\n  }\n\n  decodeBuffer(buffer) {\n    var bpc = this.bpc;\n    var numComps = this.numComps;\n\n    var decodeAddends = this.decodeAddends;\n    var decodeCoefficients = this.decodeCoefficients;\n    var max = (1 << bpc) - 1;\n    var i, ii;\n\n    if (bpc === 1) {\n      // If the buffer needed decode that means it just needs to be inverted.\n      for (i = 0, ii = buffer.length; i < ii; i++) {\n        buffer[i] = +!buffer[i];\n      }\n      return;\n    }\n    var index = 0;\n    for (i = 0, ii = this.width * this.height; i < ii; i++) {\n      for (var j = 0; j < numComps; j++) {\n        buffer[index] = decodeAndClamp(\n          buffer[index],\n          decodeAddends[j],\n          decodeCoefficients[j],\n          max\n        );\n        index++;\n      }\n    }\n  }\n\n  getComponents(buffer) {\n    var bpc = this.bpc;\n\n    // This image doesn't require any extra work.\n    if (bpc === 8) {\n      return buffer;\n    }\n\n    var width = this.width;\n    var height = this.height;\n    var numComps = this.numComps;\n\n    var length = width * height * numComps;\n    var bufferPos = 0;\n    let output;\n    if (bpc <= 8) {\n      output = new Uint8Array(length);\n    } else if (bpc <= 16) {\n      output = new Uint16Array(length);\n    } else {\n      output = new Uint32Array(length);\n    }\n    var rowComps = width * numComps;\n\n    var max = (1 << bpc) - 1;\n    var i = 0,\n      ii,\n      buf;\n\n    if (bpc === 1) {\n      // Optimization for reading 1 bpc images.\n      var mask, loop1End, loop2End;\n      for (var j = 0; j < height; j++) {\n        loop1End = i + (rowComps & ~7);\n        loop2End = i + rowComps;\n\n        // unroll loop for all full bytes\n        while (i < loop1End) {\n          buf = buffer[bufferPos++];\n          output[i] = (buf >> 7) & 1;\n          output[i + 1] = (buf >> 6) & 1;\n          output[i + 2] = (buf >> 5) & 1;\n          output[i + 3] = (buf >> 4) & 1;\n          output[i + 4] = (buf >> 3) & 1;\n          output[i + 5] = (buf >> 2) & 1;\n          output[i + 6] = (buf >> 1) & 1;\n          output[i + 7] = buf & 1;\n          i += 8;\n        }\n\n        // handle remaining bits\n        if (i < loop2End) {\n          buf = buffer[bufferPos++];\n          mask = 128;\n          while (i < loop2End) {\n            output[i++] = +!!(buf & mask);\n            mask >>= 1;\n          }\n        }\n      }\n    } else {\n      // The general case that handles all other bpc values.\n      var bits = 0;\n      buf = 0;\n      for (i = 0, ii = length; i < ii; ++i) {\n        if (i % rowComps === 0) {\n          buf = 0;\n          bits = 0;\n        }\n\n        while (bits < bpc) {\n          buf = (buf << 8) | buffer[bufferPos++];\n          bits += 8;\n        }\n\n        var remainingBits = bits - bpc;\n        let value = buf >> remainingBits;\n        if (value < 0) {\n          value = 0;\n        } else if (value > max) {\n          value = max;\n        }\n        output[i] = value;\n        buf = buf & ((1 << remainingBits) - 1);\n        bits = remainingBits;\n      }\n    }\n    return output;\n  }\n\n  fillOpacity(rgbaBuf, width, height, actualHeight, image) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        rgbaBuf instanceof Uint8ClampedArray,\n        'PDFImage.fillOpacity: Unsupported \"rgbaBuf\" type.'\n      );\n    }\n    var smask = this.smask;\n    var mask = this.mask;\n    var alphaBuf, sw, sh, i, ii, j;\n\n    if (smask) {\n      sw = smask.width;\n      sh = smask.height;\n      alphaBuf = new Uint8ClampedArray(sw * sh);\n      smask.fillGrayBuffer(alphaBuf);\n      if (sw !== width || sh !== height) {\n        alphaBuf = resizeImageMask(alphaBuf, smask.bpc, sw, sh, width, height);\n      }\n    } else if (mask) {\n      if (mask instanceof PDFImage) {\n        sw = mask.width;\n        sh = mask.height;\n        alphaBuf = new Uint8ClampedArray(sw * sh);\n        mask.numComps = 1;\n        mask.fillGrayBuffer(alphaBuf);\n\n        // Need to invert values in rgbaBuf\n        for (i = 0, ii = sw * sh; i < ii; ++i) {\n          alphaBuf[i] = 255 - alphaBuf[i];\n        }\n\n        if (sw !== width || sh !== height) {\n          alphaBuf = resizeImageMask(alphaBuf, mask.bpc, sw, sh, width, height);\n        }\n      } else if (Array.isArray(mask)) {\n        // Color key mask: if any of the components are outside the range\n        // then they should be painted.\n        alphaBuf = new Uint8ClampedArray(width * height);\n        var numComps = this.numComps;\n        for (i = 0, ii = width * height; i < ii; ++i) {\n          var opacity = 0;\n          var imageOffset = i * numComps;\n          for (j = 0; j < numComps; ++j) {\n            var color = image[imageOffset + j];\n            var maskOffset = j * 2;\n            if (color < mask[maskOffset] || color > mask[maskOffset + 1]) {\n              opacity = 255;\n              break;\n            }\n          }\n          alphaBuf[i] = opacity;\n        }\n      } else {\n        throw new FormatError(\"Unknown mask format.\");\n      }\n    }\n\n    if (alphaBuf) {\n      for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {\n        rgbaBuf[j] = alphaBuf[i];\n      }\n    } else {\n      // No mask.\n      for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {\n        rgbaBuf[j] = 255;\n      }\n    }\n  }\n\n  undoPreblend(buffer, width, height) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        buffer instanceof Uint8ClampedArray,\n        'PDFImage.undoPreblend: Unsupported \"buffer\" type.'\n      );\n    }\n    var matte = this.smask && this.smask.matte;\n    if (!matte) {\n      return;\n    }\n    var matteRgb = this.colorSpace.getRgb(matte, 0);\n    var matteR = matteRgb[0];\n    var matteG = matteRgb[1];\n    var matteB = matteRgb[2];\n    var length = width * height * 4;\n    for (var i = 0; i < length; i += 4) {\n      var alpha = buffer[i + 3];\n      if (alpha === 0) {\n        // according formula we have to get Infinity in all components\n        // making it white (typical paper color) should be okay\n        buffer[i] = 255;\n        buffer[i + 1] = 255;\n        buffer[i + 2] = 255;\n        continue;\n      }\n      var k = 255 / alpha;\n      buffer[i] = (buffer[i] - matteR) * k + matteR;\n      buffer[i + 1] = (buffer[i + 1] - matteG) * k + matteG;\n      buffer[i + 2] = (buffer[i + 2] - matteB) * k + matteB;\n    }\n  }\n\n  createImageData(forceRGBA = false) {\n    var drawWidth = this.drawWidth;\n    var drawHeight = this.drawHeight;\n    var imgData = {\n      width: drawWidth,\n      height: drawHeight,\n      kind: 0,\n      data: null,\n      // Other fields are filled in below.\n    };\n\n    var numComps = this.numComps;\n    var originalWidth = this.width;\n    var originalHeight = this.height;\n    var bpc = this.bpc;\n\n    // Rows start at byte boundary.\n    var rowBytes = (originalWidth * numComps * bpc + 7) >> 3;\n    var imgArray;\n\n    if (!forceRGBA) {\n      // If it is a 1-bit-per-pixel grayscale (i.e. black-and-white) image\n      // without any complications, we pass a same-sized copy to the main\n      // thread rather than expanding by 32x to RGBA form. This saves *lots*\n      // of memory for many scanned documents. It's also much faster.\n      //\n      // Similarly, if it is a 24-bit-per pixel RGB image without any\n      // complications, we avoid expanding by 1.333x to RGBA form.\n      var kind;\n      if (this.colorSpace.name === \"DeviceGray\" && bpc === 1) {\n        kind = ImageKind.GRAYSCALE_1BPP;\n      } else if (\n        this.colorSpace.name === \"DeviceRGB\" &&\n        bpc === 8 &&\n        !this.needsDecode\n      ) {\n        kind = ImageKind.RGB_24BPP;\n      }\n      if (\n        kind &&\n        !this.smask &&\n        !this.mask &&\n        drawWidth === originalWidth &&\n        drawHeight === originalHeight\n      ) {\n        imgData.kind = kind;\n\n        imgArray = this.getImageBytes(originalHeight * rowBytes);\n        // If imgArray came from a DecodeStream, we're safe to transfer it\n        // (and thus detach its underlying buffer) because it will constitute\n        // the entire DecodeStream's data.  But if it came from a Stream, we\n        // need to copy it because it'll only be a portion of the Stream's\n        // data, and the rest will be read later on.\n        if (this.image instanceof DecodeStream) {\n          imgData.data = imgArray;\n        } else {\n          var newArray = new Uint8ClampedArray(imgArray.length);\n          newArray.set(imgArray);\n          imgData.data = newArray;\n        }\n        if (this.needsDecode) {\n          // Invert the buffer (which must be grayscale if we reached here).\n          assert(\n            kind === ImageKind.GRAYSCALE_1BPP,\n            \"PDFImage.createImageData: The image must be grayscale.\"\n          );\n          var buffer = imgData.data;\n          for (var i = 0, ii = buffer.length; i < ii; i++) {\n            buffer[i] ^= 0xff;\n          }\n        }\n        return imgData;\n      }\n      if (this.image instanceof JpegStream && !this.smask && !this.mask) {\n        let imageLength = originalHeight * rowBytes;\n        switch (this.colorSpace.name) {\n          case \"DeviceGray\":\n            // Avoid truncating the image, since `JpegImage.getData`\n            // will expand the image data when `forceRGB === true`.\n            imageLength *= 3;\n          /* falls through */\n          case \"DeviceRGB\":\n          case \"DeviceCMYK\":\n            imgData.kind = ImageKind.RGB_24BPP;\n            imgData.data = this.getImageBytes(\n              imageLength,\n              drawWidth,\n              drawHeight,\n              /* forceRGB = */ true\n            );\n            return imgData;\n        }\n      }\n    }\n\n    imgArray = this.getImageBytes(originalHeight * rowBytes);\n    // imgArray can be incomplete (e.g. after CCITT fax encoding).\n    var actualHeight =\n      0 | (((imgArray.length / rowBytes) * drawHeight) / originalHeight);\n\n    var comps = this.getComponents(imgArray);\n\n    // If opacity data is present, use RGBA_32BPP form. Otherwise, use the\n    // more compact RGB_24BPP form if allowable.\n    var alpha01, maybeUndoPreblend;\n    if (!forceRGBA && !this.smask && !this.mask) {\n      imgData.kind = ImageKind.RGB_24BPP;\n      imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 3);\n      alpha01 = 0;\n      maybeUndoPreblend = false;\n    } else {\n      imgData.kind = ImageKind.RGBA_32BPP;\n      imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 4);\n      alpha01 = 1;\n      maybeUndoPreblend = true;\n\n      // Color key masking (opacity) must be performed before decoding.\n      this.fillOpacity(\n        imgData.data,\n        drawWidth,\n        drawHeight,\n        actualHeight,\n        comps\n      );\n    }\n\n    if (this.needsDecode) {\n      this.decodeBuffer(comps);\n    }\n    this.colorSpace.fillRgb(\n      imgData.data,\n      originalWidth,\n      originalHeight,\n      drawWidth,\n      drawHeight,\n      actualHeight,\n      bpc,\n      comps,\n      alpha01\n    );\n    if (maybeUndoPreblend) {\n      this.undoPreblend(imgData.data, drawWidth, actualHeight);\n    }\n\n    return imgData;\n  }\n\n  fillGrayBuffer(buffer) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        buffer instanceof Uint8ClampedArray,\n        'PDFImage.fillGrayBuffer: Unsupported \"buffer\" type.'\n      );\n    }\n    var numComps = this.numComps;\n    if (numComps !== 1) {\n      throw new FormatError(\n        `Reading gray scale from a color image: ${numComps}`\n      );\n    }\n\n    var width = this.width;\n    var height = this.height;\n    var bpc = this.bpc;\n\n    // rows start at byte boundary\n    var rowBytes = (width * numComps * bpc + 7) >> 3;\n    var imgArray = this.getImageBytes(height * rowBytes);\n\n    var comps = this.getComponents(imgArray);\n    var i, length;\n\n    if (bpc === 1) {\n      // inline decoding (= inversion) for 1 bpc images\n      length = width * height;\n      if (this.needsDecode) {\n        // invert and scale to {0, 255}\n        for (i = 0; i < length; ++i) {\n          buffer[i] = (comps[i] - 1) & 255;\n        }\n      } else {\n        // scale to {0, 255}\n        for (i = 0; i < length; ++i) {\n          buffer[i] = -comps[i] & 255;\n        }\n      }\n      return;\n    }\n\n    if (this.needsDecode) {\n      this.decodeBuffer(comps);\n    }\n    length = width * height;\n    // we aren't using a colorspace so we need to scale the value\n    var scale = 255 / ((1 << bpc) - 1);\n    for (i = 0; i < length; ++i) {\n      buffer[i] = scale * comps[i];\n    }\n  }\n\n  getImageBytes(length, drawWidth, drawHeight, forceRGB = false) {\n    this.image.reset();\n    this.image.drawWidth = drawWidth || this.width;\n    this.image.drawHeight = drawHeight || this.height;\n    this.image.forceRGB = !!forceRGB;\n    return this.image.getBytes(length, /* forceClamped = */ true);\n  }\n}\n\nexport { PDFImage };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error, prefer-const: error */\n\nimport {\n  AbortException,\n  assert,\n  createPromiseCapability,\n  MissingPDFException,\n  UnexpectedResponseException,\n  UnknownErrorException,\n} from \"./util.js\";\n\nconst CallbackKind = {\n  UNKNOWN: 0,\n  DATA: 1,\n  ERROR: 2,\n};\n\nconst StreamKind = {\n  UNKNOWN: 0,\n  CANCEL: 1,\n  CANCEL_COMPLETE: 2,\n  CLOSE: 3,\n  ENQUEUE: 4,\n  ERROR: 5,\n  PULL: 6,\n  PULL_COMPLETE: 7,\n  START_COMPLETE: 8,\n};\n\nfunction wrapReason(reason) {\n  if (\n    typeof PDFJSDev === \"undefined\" ||\n    PDFJSDev.test(\"!PRODUCTION || TESTING\")\n  ) {\n    assert(\n      reason instanceof Error ||\n        (typeof reason === \"object\" && reason !== null),\n      'wrapReason: Expected \"reason\" to be a (possibly cloned) Error.'\n    );\n  } else {\n    if (typeof reason !== \"object\" || reason === null) {\n      return reason;\n    }\n  }\n  switch (reason.name) {\n    case \"AbortException\":\n      return new AbortException(reason.message);\n    case \"MissingPDFException\":\n      return new MissingPDFException(reason.message);\n    case \"UnexpectedResponseException\":\n      return new UnexpectedResponseException(reason.message, reason.status);\n    case \"UnknownErrorException\":\n      return new UnknownErrorException(reason.message, reason.details);\n    default:\n      return new UnknownErrorException(reason.message, reason.toString());\n  }\n}\n\nclass MessageHandler {\n  constructor(sourceName, targetName, comObj) {\n    this.sourceName = sourceName;\n    this.targetName = targetName;\n    this.comObj = comObj;\n    this.callbackId = 1;\n    this.streamId = 1;\n    this.postMessageTransfers = true;\n    this.streamSinks = Object.create(null);\n    this.streamControllers = Object.create(null);\n    this.callbackCapabilities = Object.create(null);\n    this.actionHandler = Object.create(null);\n\n    this._onComObjOnMessage = event => {\n      const data = event.data;\n      if (data.targetName !== this.sourceName) {\n        return;\n      }\n      if (data.stream) {\n        this._processStreamMessage(data);\n        return;\n      }\n      if (data.callback) {\n        const callbackId = data.callbackId;\n        const capability = this.callbackCapabilities[callbackId];\n        if (!capability) {\n          throw new Error(`Cannot resolve callback ${callbackId}`);\n        }\n        delete this.callbackCapabilities[callbackId];\n\n        if (data.callback === CallbackKind.DATA) {\n          capability.resolve(data.data);\n        } else if (data.callback === CallbackKind.ERROR) {\n          capability.reject(wrapReason(data.reason));\n        } else {\n          throw new Error(\"Unexpected callback case\");\n        }\n        return;\n      }\n      const action = this.actionHandler[data.action];\n      if (!action) {\n        throw new Error(`Unknown action from worker: ${data.action}`);\n      }\n      if (data.callbackId) {\n        const cbSourceName = this.sourceName;\n        const cbTargetName = data.sourceName;\n        new Promise(function (resolve) {\n          resolve(action(data.data));\n        }).then(\n          function (result) {\n            comObj.postMessage({\n              sourceName: cbSourceName,\n              targetName: cbTargetName,\n              callback: CallbackKind.DATA,\n              callbackId: data.callbackId,\n              data: result,\n            });\n          },\n          function (reason) {\n            comObj.postMessage({\n              sourceName: cbSourceName,\n              targetName: cbTargetName,\n              callback: CallbackKind.ERROR,\n              callbackId: data.callbackId,\n              reason: wrapReason(reason),\n            });\n          }\n        );\n        return;\n      }\n      if (data.streamId) {\n        this._createStreamSink(data);\n        return;\n      }\n      action(data.data);\n    };\n    comObj.addEventListener(\"message\", this._onComObjOnMessage);\n  }\n\n  on(actionName, handler) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        typeof handler === \"function\",\n        'MessageHandler.on: Expected \"handler\" to be a function.'\n      );\n    }\n    const ah = this.actionHandler;\n    if (ah[actionName]) {\n      throw new Error(`There is already an actionName called \"${actionName}\"`);\n    }\n    ah[actionName] = handler;\n  }\n\n  /**\n   * Sends a message to the comObj to invoke the action with the supplied data.\n   * @param {string} actionName - Action to call.\n   * @param {JSON} data - JSON data to send.\n   * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n   */\n  send(actionName, data, transfers) {\n    this._postMessage(\n      {\n        sourceName: this.sourceName,\n        targetName: this.targetName,\n        action: actionName,\n        data,\n      },\n      transfers\n    );\n  }\n\n  /**\n   * Sends a message to the comObj to invoke the action with the supplied data.\n   * Expects that the other side will callback with the response.\n   * @param {string} actionName - Action to call.\n   * @param {JSON} data - JSON data to send.\n   * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n   * @returns {Promise} Promise to be resolved with response data.\n   */\n  sendWithPromise(actionName, data, transfers) {\n    const callbackId = this.callbackId++;\n    const capability = createPromiseCapability();\n    this.callbackCapabilities[callbackId] = capability;\n    try {\n      this._postMessage(\n        {\n          sourceName: this.sourceName,\n          targetName: this.targetName,\n          action: actionName,\n          callbackId,\n          data,\n        },\n        transfers\n      );\n    } catch (ex) {\n      capability.reject(ex);\n    }\n    return capability.promise;\n  }\n\n  /**\n   * Sends a message to the comObj to invoke the action with the supplied data.\n   * Expect that the other side will callback to signal 'start_complete'.\n   * @param {string} actionName - Action to call.\n   * @param {JSON} data - JSON data to send.\n   * @param {Object} queueingStrategy - Strategy to signal backpressure based on\n   *                 internal queue.\n   * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n   * @returns {ReadableStream} ReadableStream to read data in chunks.\n   */\n  sendWithStream(actionName, data, queueingStrategy, transfers) {\n    const streamId = this.streamId++;\n    const sourceName = this.sourceName;\n    const targetName = this.targetName;\n    const comObj = this.comObj;\n\n    return new ReadableStream(\n      {\n        start: controller => {\n          const startCapability = createPromiseCapability();\n          this.streamControllers[streamId] = {\n            controller,\n            startCall: startCapability,\n            pullCall: null,\n            cancelCall: null,\n            isClosed: false,\n          };\n          this._postMessage(\n            {\n              sourceName,\n              targetName,\n              action: actionName,\n              streamId,\n              data,\n              desiredSize: controller.desiredSize,\n            },\n            transfers\n          );\n          // Return Promise for Async process, to signal success/failure.\n          return startCapability.promise;\n        },\n\n        pull: controller => {\n          const pullCapability = createPromiseCapability();\n          this.streamControllers[streamId].pullCall = pullCapability;\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.PULL,\n            streamId,\n            desiredSize: controller.desiredSize,\n          });\n          // Returning Promise will not call \"pull\"\n          // again until current pull is resolved.\n          return pullCapability.promise;\n        },\n\n        cancel: reason => {\n          assert(reason instanceof Error, \"cancel must have a valid reason\");\n          const cancelCapability = createPromiseCapability();\n          this.streamControllers[streamId].cancelCall = cancelCapability;\n          this.streamControllers[streamId].isClosed = true;\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.CANCEL,\n            streamId,\n            reason: wrapReason(reason),\n          });\n          // Return Promise to signal success or failure.\n          return cancelCapability.promise;\n        },\n      },\n      queueingStrategy\n    );\n  }\n\n  /**\n   * @private\n   */\n  _createStreamSink(data) {\n    const self = this;\n    const action = this.actionHandler[data.action];\n    const streamId = data.streamId;\n    const sourceName = this.sourceName;\n    const targetName = data.sourceName;\n    const comObj = this.comObj;\n\n    const streamSink = {\n      enqueue(chunk, size = 1, transfers) {\n        if (this.isCancelled) {\n          return;\n        }\n        const lastDesiredSize = this.desiredSize;\n        this.desiredSize -= size;\n        // Enqueue decreases the desiredSize property of sink,\n        // so when it changes from positive to negative,\n        // set ready as unresolved promise.\n        if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n          this.sinkCapability = createPromiseCapability();\n          this.ready = this.sinkCapability.promise;\n        }\n        self._postMessage(\n          {\n            sourceName,\n            targetName,\n            stream: StreamKind.ENQUEUE,\n            streamId,\n            chunk,\n          },\n          transfers\n        );\n      },\n\n      close() {\n        if (this.isCancelled) {\n          return;\n        }\n        this.isCancelled = true;\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.CLOSE,\n          streamId,\n        });\n        delete self.streamSinks[streamId];\n      },\n\n      error(reason) {\n        assert(reason instanceof Error, \"error must have a valid reason\");\n        if (this.isCancelled) {\n          return;\n        }\n        this.isCancelled = true;\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.ERROR,\n          streamId,\n          reason: wrapReason(reason),\n        });\n      },\n\n      sinkCapability: createPromiseCapability(),\n      onPull: null,\n      onCancel: null,\n      isCancelled: false,\n      desiredSize: data.desiredSize,\n      ready: null,\n    };\n\n    streamSink.sinkCapability.resolve();\n    streamSink.ready = streamSink.sinkCapability.promise;\n    this.streamSinks[streamId] = streamSink;\n    new Promise(function (resolve) {\n      resolve(action(data.data, streamSink));\n    }).then(\n      function () {\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.START_COMPLETE,\n          streamId,\n          success: true,\n        });\n      },\n      function (reason) {\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.START_COMPLETE,\n          streamId,\n          reason: wrapReason(reason),\n        });\n      }\n    );\n  }\n\n  /**\n   * @private\n   */\n  _processStreamMessage(data) {\n    const streamId = data.streamId;\n    const sourceName = this.sourceName;\n    const targetName = data.sourceName;\n    const comObj = this.comObj;\n\n    switch (data.stream) {\n      case StreamKind.START_COMPLETE:\n        if (data.success) {\n          this.streamControllers[streamId].startCall.resolve();\n        } else {\n          this.streamControllers[streamId].startCall.reject(\n            wrapReason(data.reason)\n          );\n        }\n        break;\n      case StreamKind.PULL_COMPLETE:\n        if (data.success) {\n          this.streamControllers[streamId].pullCall.resolve();\n        } else {\n          this.streamControllers[streamId].pullCall.reject(\n            wrapReason(data.reason)\n          );\n        }\n        break;\n      case StreamKind.PULL:\n        // Ignore any pull after close is called.\n        if (!this.streamSinks[streamId]) {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.PULL_COMPLETE,\n            streamId,\n            success: true,\n          });\n          break;\n        }\n        // Pull increases the desiredSize property of sink,\n        // so when it changes from negative to positive,\n        // set ready property as resolved promise.\n        if (\n          this.streamSinks[streamId].desiredSize <= 0 &&\n          data.desiredSize > 0\n        ) {\n          this.streamSinks[streamId].sinkCapability.resolve();\n        }\n        // Reset desiredSize property of sink on every pull.\n        this.streamSinks[streamId].desiredSize = data.desiredSize;\n        const { onPull } = this.streamSinks[data.streamId];\n        new Promise(function (resolve) {\n          resolve(onPull && onPull());\n        }).then(\n          function () {\n            comObj.postMessage({\n              sourceName,\n              targetName,\n              stream: StreamKind.PULL_COMPLETE,\n              streamId,\n              success: true,\n            });\n          },\n          function (reason) {\n            comObj.postMessage({\n              sourceName,\n              targetName,\n              stream: StreamKind.PULL_COMPLETE,\n              streamId,\n              reason: wrapReason(reason),\n            });\n          }\n        );\n        break;\n      case StreamKind.ENQUEUE:\n        assert(\n          this.streamControllers[streamId],\n          \"enqueue should have stream controller\"\n        );\n        if (this.streamControllers[streamId].isClosed) {\n          break;\n        }\n        this.streamControllers[streamId].controller.enqueue(data.chunk);\n        break;\n      case StreamKind.CLOSE:\n        assert(\n          this.streamControllers[streamId],\n          \"close should have stream controller\"\n        );\n        if (this.streamControllers[streamId].isClosed) {\n          break;\n        }\n        this.streamControllers[streamId].isClosed = true;\n        this.streamControllers[streamId].controller.close();\n        this._deleteStreamController(streamId);\n        break;\n      case StreamKind.ERROR:\n        assert(\n          this.streamControllers[streamId],\n          \"error should have stream controller\"\n        );\n        this.streamControllers[streamId].controller.error(\n          wrapReason(data.reason)\n        );\n        this._deleteStreamController(streamId);\n        break;\n      case StreamKind.CANCEL_COMPLETE:\n        if (data.success) {\n          this.streamControllers[streamId].cancelCall.resolve();\n        } else {\n          this.streamControllers[streamId].cancelCall.reject(\n            wrapReason(data.reason)\n          );\n        }\n        this._deleteStreamController(streamId);\n        break;\n      case StreamKind.CANCEL:\n        if (!this.streamSinks[streamId]) {\n          break;\n        }\n        const { onCancel } = this.streamSinks[data.streamId];\n        new Promise(function (resolve) {\n          resolve(onCancel && onCancel(wrapReason(data.reason)));\n        }).then(\n          function () {\n            comObj.postMessage({\n              sourceName,\n              targetName,\n              stream: StreamKind.CANCEL_COMPLETE,\n              streamId,\n              success: true,\n            });\n          },\n          function (reason) {\n            comObj.postMessage({\n              sourceName,\n              targetName,\n              stream: StreamKind.CANCEL_COMPLETE,\n              streamId,\n              reason: wrapReason(reason),\n            });\n          }\n        );\n        this.streamSinks[streamId].sinkCapability.reject(\n          wrapReason(data.reason)\n        );\n        this.streamSinks[streamId].isCancelled = true;\n        delete this.streamSinks[streamId];\n        break;\n      default:\n        throw new Error(\"Unexpected stream case\");\n    }\n  }\n\n  /**\n   * @private\n   */\n  async _deleteStreamController(streamId) {\n    // Delete the `streamController` only when the start, pull, and cancel\n    // capabilities have settled, to prevent `TypeError`s.\n    await Promise.allSettled(\n      [\n        this.streamControllers[streamId].startCall,\n        this.streamControllers[streamId].pullCall,\n        this.streamControllers[streamId].cancelCall,\n      ].map(function (capability) {\n        return capability && capability.promise;\n      })\n    );\n    delete this.streamControllers[streamId];\n  }\n\n  /**\n   * Sends raw message to the comObj.\n   * @param {Object} message - Raw message.\n   * @param transfers List of transfers/ArrayBuffers, or undefined.\n   * @private\n   */\n  _postMessage(message, transfers) {\n    if (transfers && this.postMessageTransfers) {\n      this.comObj.postMessage(message, transfers);\n    } else {\n      this.comObj.postMessage(message);\n    }\n  }\n\n  destroy() {\n    this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n  }\n}\n\nexport { MessageHandler };\n","/* Copyright 2019 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\nimport { assert } from \"../shared/util.js\";\n\n/** @implements {IPDFStream} */\nclass PDFWorkerStream {\n  constructor(msgHandler) {\n    this._msgHandler = msgHandler;\n    this._contentLength = null;\n    this._fullRequestReader = null;\n    this._rangeRequestReaders = [];\n  }\n\n  getFullReader() {\n    assert(\n      !this._fullRequestReader,\n      \"PDFWorkerStream.getFullReader can only be called once.\"\n    );\n    this._fullRequestReader = new PDFWorkerStreamReader(this._msgHandler);\n    return this._fullRequestReader;\n  }\n\n  getRangeReader(begin, end) {\n    const reader = new PDFWorkerStreamRangeReader(begin, end, this._msgHandler);\n    this._rangeRequestReaders.push(reader);\n    return reader;\n  }\n\n  cancelAllRequests(reason) {\n    if (this._fullRequestReader) {\n      this._fullRequestReader.cancel(reason);\n    }\n    const readers = this._rangeRequestReaders.slice(0);\n    readers.forEach(function (reader) {\n      reader.cancel(reason);\n    });\n  }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFWorkerStreamReader {\n  constructor(msgHandler) {\n    this._msgHandler = msgHandler;\n    this.onProgress = null;\n\n    this._contentLength = null;\n    this._isRangeSupported = false;\n    this._isStreamingSupported = false;\n\n    const readableStream = this._msgHandler.sendWithStream(\"GetReader\");\n    this._reader = readableStream.getReader();\n\n    this._headersReady = this._msgHandler\n      .sendWithPromise(\"ReaderHeadersReady\")\n      .then(data => {\n        this._isStreamingSupported = data.isStreamingSupported;\n        this._isRangeSupported = data.isRangeSupported;\n        this._contentLength = data.contentLength;\n      });\n  }\n\n  get headersReady() {\n    return this._headersReady;\n  }\n\n  get contentLength() {\n    return this._contentLength;\n  }\n\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n\n  get isRangeSupported() {\n    return this._isRangeSupported;\n  }\n\n  async read() {\n    const { value, done } = await this._reader.read();\n    if (done) {\n      return { value: undefined, done: true };\n    }\n    // `value` is wrapped into Uint8Array, we need to\n    // unwrap it to ArrayBuffer for further processing.\n    return { value: value.buffer, done: false };\n  }\n\n  cancel(reason) {\n    this._reader.cancel(reason);\n  }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFWorkerStreamRangeReader {\n  constructor(begin, end, msgHandler) {\n    this._msgHandler = msgHandler;\n    this.onProgress = null;\n\n    const readableStream = this._msgHandler.sendWithStream(\"GetRangeReader\", {\n      begin,\n      end,\n    });\n    this._reader = readableStream.getReader();\n  }\n\n  get isStreamingSupported() {\n    return false;\n  }\n\n  async read() {\n    const { value, done } = await this._reader.read();\n    if (done) {\n      return { value: undefined, done: true };\n    }\n    return { value: value.buffer, done: false };\n  }\n\n  cancel(reason) {\n    this._reader.cancel(reason);\n  }\n}\n\nexport { PDFWorkerStream };\n"],"sourceRoot":""}